Skip to main content

adapt-skill

安全地将一个 ARIS SKILL.md 改造为 AMIS 版本。通过定点替换保证不截断内容。当用户说'改造 skill'、'adapt skill'、'执行 Task X.Y'时使用。

설치로 이동

소스 정보

저장소
Best6668/AMIS
최근 소스 활동
2026년 4월 2일 12:42
감지된 SKILL.md 언어
중국어
스타
2
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
adapt-skill
description
安全地将一个 ARIS SKILL.md 改造为 AMIS 版本。通过定点替换保证不截断内容。当用户说'改造 skill'、'adapt skill'、'执行 Task X.Y'时使用。
argument-hint
["原skill名 → 新skill名"]
allowed-tools
Bash(*), Read, Write, Edit, Grep, Glob, WebSearch, WebFetch, Agent, mcp__codex__codex, mcp__codex__codex-reply
# AMIS Skill 安全改造器 将 ARIS skill 安全改造为 AMIS 版本: **$ARGUMENTS** ## Overview 本 skill 是 AMIS 项目的**开发工具**,不是最终产品的一部分。它的职责是:读取一个 ARIS 原始 SKILL.md,按照 CLAUDE.md 中的映射表和术语表,通过定点替换生成 AMIS 版本,并严格验证不丢失内容。 ## Constants - **MIN_LINE_RATIO = 0.85** — 改造后文件行数必须 >= 原文件的 85%。低于此比例则判定为截断,必须回退重做。 - **CRITICAL_LINE_RATIO = 0.70** — 低于 70% 为严重截断,立即终止并报错。 - **MAX_REPLACEMENTS_PER_BATCH = 15** — 每批最多 15 条 str_replace。超过则分多批执行,每批之间 re-read 文件确认状态。 - **REVIEWER_MODEL = `gpt-5.4`** — 改造完成后可选调用 GPT-5.4 对比审查新旧文件。 ## Workflow ### Phase 1: 准备工作(绝不跳过) 1. **读取项目配置**: ```bash cat CLAUDE.md # 获取映射表和术语速查表 ``` 2. **确认原始文件存在**: ```bash ls -la skills/$ORIGINAL_SKILL/SKILL.md.original wc -l skills/$ORIGINAL_SKILL/SKILL.md.original ``` 如果 `.original` 不存在,检查是否有不带后缀的 `SKILL.md`,若有则先复制为 `.original`。 3. **创建工作副本 + 备份**: ```bash mkdir -p skills/$NEW_SKILL cp skills/$ORIGINAL_SKILL/SKILL.md.original skills/$NEW_SKILL/SKILL.md cp skills/$NEW_SKILL/SKILL.md skills/$NEW_SKILL/SKILL.md.bak ``` 4. **记录原始行数**: ```bash ORIGINAL_LINES=$(wc -l < skills/$NEW_SKILL/SKILL.md.bak) echo "原始行数: $ORIGINAL_LINES" ``` 5. **通读原始文件全文**: 用 Read 工具完整阅读 `skills/$NEW_SKILL/SKILL.md`,理解每个 Phase 的结构和内容。 **特别注意**:记住文件中有多少个 Phase、每个 Phase 有几个步骤、MCP prompt 有多少行、output 模板有几个 table。这些数字是后续验证的基准。 ### Phase 2: 生成替换清单 基于 CLAUDE.md 中的映射表和术语速查表,为当前 skill 生成一份完整的替换清单。 **替换分三层,按顺序执行**: #### 第一层:结构性替换(YAML + 标题 + 文件名) 这些是必改的骨架级替换: | 位置 | 查找内容 | 替换为 | |------|---------|-------| | YAML name | `name: $ORIGINAL_SKILL` | `name: $NEW_SKILL` | | YAML description | 原英文/中文描述 | 新的数模场景描述 | | YAML argument-hint | 原 hint | 新 hint | | 主标题 `#` | 原标题 | 新标题 | | `$ARGUMENTS` 说明行 | 原说明 | 新说明 | #### 第二层:调用链替换(skill 名和文件名) 查找文件中所有出现的其他 skill 名称和输出文件名,按 CLAUDE.md 映射表替换: ``` /research-lit → /problem-analysis /idea-creator → /model-creator /novelty-check → /feasibility-check /research-review → /model-review /research-refine → /model-refine /experiment-plan → /solve-plan /run-experiment → /run-solver /monitor-experiment → /monitor-solver /auto-review-loop → /auto-optimize-loop /idea-discovery → /modeling-discovery /research-pipeline → /mathmodel-pipeline /experiment-bridge → /solve-bridge /research-refine-pipeline → /model-refine-pipeline IDEA_REPORT.md → MODEL_REPORT.md LIT_SURVEY.md → PROBLEM_ANALYSIS.md NARRATIVE_REPORT.md → MODELING_NARRATIVE.md RESEARCH_BRIEF.md → PROBLEM_BRIEF.md IDEA_CANDIDATES.md → MODEL_CANDIDATES.md EXPERIMENT_PLAN.md → SOLVE_PLAN.md EXPERIMENT_TRACKER.md → SOLVE_TRACKER.md REVIEW_STATE.json → OPTIMIZE_STATE.json ``` **注意**:只替换文件中实际出现的条目。不要盲目替换——先用 grep 确认哪些条目存在: ```bash grep -n "research-lit\|idea-creator\|novelty-check\|research-review\|IDEA_REPORT\|EXPERIMENT_PLAN" skills/$NEW_SKILL/SKILL.md ``` #### 第三层:领域内容替换(prompt + 评审标准 + 术语) 这是最需要细心的部分。**逐段检查**每个 Phase 中的: 1. **MCP prompt 内容**(`mcp__codex__codex:` 块内的 `prompt:` 字段) - 角色设定替换:`senior ML researcher` → `数模竞赛资深评委` - 评审维度替换:`novelty, significance` → `数学严谨性, 方法创新性, 结果可靠性` - 场景替换:`NeurIPS/ICML` → `数模竞赛` - **保持 prompt 的行数和结构不变**,只替换领域相关的词和句 2. **Constants 部分** - 时间单位:`GPU-hours` → `计算分钟` - 资源描述:`8x RTX 3090` → `本地 Python/MATLAB` - 保留 Constants 的条目数量,只改名字和默认值 3. **Checkpoint 提示语** - 保持 🚦 格式和分支逻辑不变 - 替换提示文本内容 4. **Output 模板** - 保持 markdown table 的列数和结构不变 - 替换列名和示例内容 5. **Key Rules 部分** - 第一条(大文件处理规则)原封不动保留 - 其余规则替换领域内容,但保持条目数量不变 ### Phase 3: 执行替换(分批,每批验证) **不要一口气执行所有替换。** 分批进行: #### 批次 1:结构性替换(第一层) 逐条用 str_replace 执行 YAML + 标题替换。 执行完毕后立即验证: ```bash CURRENT_LINES=$(wc -l < skills/$NEW_SKILL/SKILL.md) echo "批次1完成 — 当前行数: $CURRENT_LINES / 原始: $ORIGINAL_LINES" ``` 行数此时应该基本不变(可能 ±5 行)。如果行数减少超过 10 行,说明 str_replace 匹配出了问题,检查并修正。 #### 批次 2:调用链替换(第二层) 用 sed 做全局替换(因为这些是简单的字符串替换,不涉及多行内容): ```bash # 先预览会改多少处 grep -c "research-lit\|idea-creator\|novelty-check" skills/$NEW_SKILL/SKILL.md # 逐条 sed sed -i 's|/research-lit|/problem-analysis|g' skills/$NEW_SKILL/SKILL.md sed -i 's|/idea-creator|/model-creator|g' skills/$NEW_SKILL/SKILL.md # ... 其余同理 # 文件名替换 sed -i 's|IDEA_REPORT\.md|MODEL_REPORT.md|g' skills/$NEW_SKILL/SKILL.md # ... 其余同理 ``` 执行完验证行数(应该完全不变,sed 替换不改行数)。 #### 批次 3:领域内容替换(第三层) 这是最复杂的部分。逐个 Phase 处理: **对每个 Phase,按以下流程操作**: ``` 1. Read 该 Phase 的内容(记录起止行号) 2. 识别需要替换的领域术语和句子 3. 每条用 str_replace 替换,old_str 取足够长以确保唯一性 4. 替换完该 Phase 后,验证行数 5. 进入下一个 Phase ``` **⚠️ 关键规则**: - str_replace 的 `old_str` 必须足够长(至少包含完整的一行),确保在文件中唯一匹配 - 如果 `old_str` 匹配到多处,加长上下文直到唯一 - **绝不要**用 str_replace 替换整个 Phase 的内容。只替换 Phase 内需要改的行/段 - MCP prompt 块:逐行或逐段替换,不要整块替换 #### 批次 4:删除不适用内容(如有) 某些 skill 包含 ARIS 特有的内容(Zotero、Obsidian、arXiv download 等),数模不需要: ``` 1. 用 grep -n 定位相关段落的起止行号 2. 用 sed 删除指定行范围:sed -i 'START,ENDd' file 3. 记录删除了多少行(用于行数验证时的基准调整) ``` ### Phase 4: 质量验证(绝不跳过) #### 检查 1:行数验证 ```bash FINAL_LINES=$(wc -l < skills/$NEW_SKILL/SKILL.md) ORIGINAL_LINES=$(wc -l < skills/$NEW_SKILL/SKILL.md.bak) RATIO=$(echo "scale=2; $FINAL_LINES / $ORIGINAL_LINES" | bc) echo "================================" echo "行数验证" echo "原始: $ORIGINAL_LINES 行" echo "现在: $FINAL_LINES 行" echo "比例: $RATIO" echo "================================" # 判定 if (( $(echo "$RATIO < 0.70" | bc -l) )); then echo "❌ 严重截断!比例低于 70%。必须回退重做。" cp skills/$NEW_SKILL/SKILL.md.bak skills/$NEW_SKILL/SKILL.md exit 1 elif (( $(echo "$RATIO < 0.85" | bc -l) )); then echo "⚠️ 轻微截断。比例低于 85%。检查是否有意删除(Zotero等不适用内容)。" echo "如果删除是有意的,继续。否则回退重做。" else echo "✅ 行数正常。" fi ``` #### 检查 2:结构完整性验证 ```bash echo "=== 结构检查 ===" # 检查 YAML 头部 echo -n "YAML 头部: " head -5 skills/$NEW_SKILL/SKILL.md | grep -q "^---" && echo "✅" || echo "❌ 缺失" # 检查 Phase 数量 PHASE_COUNT=$(grep -c "^### Phase" skills/$NEW_SKILL/SKILL.md) ORIGINAL_PHASE_COUNT=$(grep -c "^### Phase" skills/$NEW_SKILL/SKILL.md.bak) echo "Phase 数量: 原始 $ORIGINAL_PHASE_COUNT → 现在 $PHASE_COUNT" [ "$PHASE_COUNT" -ge "$ORIGINAL_PHASE_COUNT" ] && echo "✅" || echo "⚠️ Phase 数量减少了!" # 检查 MCP prompt 块是否存在(如果原文件有的话) ORIGINAL_MCP=$(grep -c "mcp__codex__codex" skills/$NEW_SKILL/SKILL.md.bak) CURRENT_MCP=$(grep -c "mcp__codex__codex" skills/$NEW_SKILL/SKILL.md) echo "MCP 调用: 原始 $ORIGINAL_MCP → 现在 $CURRENT_MCP" [ "$CURRENT_MCP" -ge "$ORIGINAL_MCP" ] && echo "✅" || echo "⚠️ MCP 调用减少了!" # 检查 Key Rules ORIGINAL_RULES=$(grep -c "^- \*\*" skills/$NEW_SKILL/SKILL.md.bak | tail -20) CURRENT_RULES=$(grep -c "^- \*\*" skills/$NEW_SKILL/SKILL.md | tail -20) echo "Key Rules 条目: 原始 $ORIGINAL_RULES → 现在 $CURRENT_RULES" # 检查 Composing 部分 grep -q "## Composing\|## Composing with" skills/$NEW_SKILL/SKILL.md && echo "Composing 部分: ✅" || echo "Composing 部分: ❌ 缺失" # 检查 output 模板中的 table ORIGINAL_TABLES=$(grep -c "^|" skills/$NEW_SKILL/SKILL.md.bak) CURRENT_TABLES=$(grep -c "^|" skills/$NEW_SKILL/SKILL.md) echo "表格行数: 原始 $ORIGINAL_TABLES → 现在 $CURRENT_TABLES" ``` #### 检查 3:Diff 审查 ```bash echo "=== Diff 摘要 ===" diff skills/$NEW_SKILL/SKILL.md.bak skills/$NEW_SKILL/SKILL.md | head -100 echo "" echo "=== 修改统计 ===" diff skills/$NEW_SKILL/SKILL.md.bak skills/$NEW_SKILL/SKILL.md | grep -c "^[<>]" echo "行被修改" ``` #### 检查 4:旧术语残留扫描 ```bash echo "=== 残留术语检查 ===" # 检查是否有忘记替换的 ARIS 术语 for term in "research-lit" "idea-creator" "novelty-check" "research-review" \ "run-experiment" "monitor-experiment" "experiment-bridge" \ "auto-review-loop" "research-pipeline" "idea-discovery" \ "IDEA_REPORT" "EXPERIMENT_PLAN" "NARRATIVE_REPORT" \ "NeurIPS" "ICML" "ICLR" "GPU server" "GPU-hours" \ "arXiv" "Zotero" "Obsidian"; do COUNT=$(grep -ci "$term" skills/$NEW_SKILL/SKILL.md 2>/dev/null || echo 0) if [ "$COUNT" -gt 0 ]; then echo "⚠️ 残留: '$term' 出现 $COUNT 次" fi done echo "(如果某些残留是有意保留的,如引用 ARIS 原始文档,则忽略)" ``` ### Phase 5: 提交 所有检查通过后: ```bash git add skills/$NEW_SKILL/ git commit -m "adapt $ORIGINAL_SKILL → $NEW_SKILL for math modeling Lines: $ORIGINAL_LINES → $FINAL_LINES (ratio: $RATIO) Phases: $ORIGINAL_PHASE_COUNT → $PHASE_COUNT MCP calls: $ORIGINAL_MCP → $CURRENT_MCP Replacements: [总替换次数]" ``` ### Phase 6: 输出报告 向用户报告改造结果: ``` ✅ Skill 改造完成: $ORIGINAL_SKILL → $NEW_SKILL 📊 质量报告: - 行数: $ORIGINAL_LINES → $FINAL_LINES (比例: $RATIO) - Phase 数量: $ORIGINAL_PHASE_COUNT → $PHASE_COUNT - MCP 调用: $ORIGINAL_MCP → $CURRENT_MCP - 表格行数: $ORIGINAL_TABLES → $CURRENT_TABLES - 残留术语: [有/无] 📝 主要改动: - [列出关键改动点] 🔜 下一个 Task: [根据 AMIS_DEVELOPMENT_PLAN.md 提示下一个 Task] ``` ## Key Rules - **大文件处理**:如果 Write 工具因文件过大失败,立即用 Bash (`cat << 'EOF' > file`) 分段写入。不要询问用户——直接执行。 - **永远不要跳过 Phase 4 的验证。** 哪怕你"确信"改对了,也必须跑验证脚本。 - **str_replace 的 old_str 必须在文件中唯一出现。** 如果不唯一,加长上下文。 - **一次只改一个 skill。** 不要并行修改多个文件。 - **如果验证失败,立即回退。** `cp SKILL.md.bak SKILL.md`,然后重新分析哪里出了问题。 - **MCP prompt 是最容易被截断的部分。** 特别注意保持 prompt 的完整性。替换 prompt 时,逐行替换,不要整块替换。 - **改造不是翻译。** 不是把英文翻成中文——是把学术科研场景替换为数模竞赛场景。保持专业性。
GitHub에서 보기