Skip to main content

adapt-skill

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

Zur Installation springen

Quellinformationen

Repository
Best6668/AMIS
Letzte Quellaktivität
2. April 2026 um 12:42
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
2
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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 时,逐行替换,不要整块替换。 - **改造不是翻译。** 不是把英文翻成中文——是把学术科研场景替换为数模竞赛场景。保持专业性。
Auf GitHub ansehen