ワンクリックで
adapt-skill
安全地将一个 ARIS SKILL.md 改造为 AMIS 版本。通过定点替换保证不截断内容。当用户说'改造 skill'、'adapt skill'、'执行 Task X.Y'时使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
安全地将一个 ARIS SKILL.md 改造为 AMIS 版本。通过定点替换保证不截断内容。当用户说'改造 skill'、'adapt skill'、'执行 Task X.Y'时使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
数据清洗、EDA、缺失值处理、异常值检测、相关性分析。触发词: 数据预处理、数据清洗、EDA、缺失值、异常值、data preprocessing、数据探索。
模型验证:交叉验证、留出法、残差分析、与已知解对比、假设检验。触发词: 模型验证、交叉验证、残差分析、model validation、留出法、误差分析、假设检验。
多子问题拆解与依赖分析。触发词: 子问题拆解、拆题、problem decomposition、依赖关系、求解顺序、时间分配、并行安排。
灵敏度分析:参数扰动、单因素/多因素分析、Monte Carlo 模拟、龙卷风图/蛛网图。触发词: 灵敏度分析、参数敏感性、sensitivity analysis、Monte Carlo、鲁棒性测试、参数扰动。
自动多轮评审优化循环。通过 Codex MCP 反复评审→修改→重新评审,直到达标或达到最大轮数。当用户说'自动优化循环'、'auto optimize'、'评审到通过'时使用。
Autonomously improve a generated paper via GPT-5.4 xhigh review → implement fixes → recompile, for 2 rounds. Use when user says "改论文", "improve paper", "论文润色循环", "auto improve", or wants to iteratively polish a generated paper.
| 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 |
将 ARIS skill 安全改造为 AMIS 版本: $ARGUMENTS
本 skill 是 AMIS 项目的开发工具,不是最终产品的一部分。它的职责是:读取一个 ARIS 原始 SKILL.md,按照 CLAUDE.md 中的映射表和术语表,通过定点替换生成 AMIS 版本,并严格验证不丢失内容。
gpt-5.4 — 改造完成后可选调用 GPT-5.4 对比审查新旧文件。读取项目配置:
cat CLAUDE.md # 获取映射表和术语速查表
确认原始文件存在:
ls -la skills/$ORIGINAL_SKILL/SKILL.md.original
wc -l skills/$ORIGINAL_SKILL/SKILL.md.original
如果 .original 不存在,检查是否有不带后缀的 SKILL.md,若有则先复制为 .original。
创建工作副本 + 备份:
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
记录原始行数:
ORIGINAL_LINES=$(wc -l < skills/$NEW_SKILL/SKILL.md.bak)
echo "原始行数: $ORIGINAL_LINES"
通读原始文件全文:
用 Read 工具完整阅读 skills/$NEW_SKILL/SKILL.md,理解每个 Phase 的结构和内容。
特别注意:记住文件中有多少个 Phase、每个 Phase 有几个步骤、MCP prompt 有多少行、output 模板有几个 table。这些数字是后续验证的基准。
基于 CLAUDE.md 中的映射表和术语速查表,为当前 skill 生成一份完整的替换清单。
替换分三层,按顺序执行:
这些是必改的骨架级替换:
| 位置 | 查找内容 | 替换为 |
|---|---|---|
| YAML name | name: $ORIGINAL_SKILL | name: $NEW_SKILL |
| YAML description | 原英文/中文描述 | 新的数模场景描述 |
| YAML argument-hint | 原 hint | 新 hint |
主标题 # | 原标题 | 新标题 |
$ARGUMENTS 说明行 | 原说明 | 新说明 |
查找文件中所有出现的其他 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 确认哪些条目存在:
grep -n "research-lit\|idea-creator\|novelty-check\|research-review\|IDEA_REPORT\|EXPERIMENT_PLAN" skills/$NEW_SKILL/SKILL.md
这是最需要细心的部分。逐段检查每个 Phase 中的:
MCP prompt 内容(mcp__codex__codex: 块内的 prompt: 字段)
senior ML researcher → 数模竞赛资深评委novelty, significance → 数学严谨性, 方法创新性, 结果可靠性NeurIPS/ICML → 数模竞赛Constants 部分
GPU-hours → 计算分钟8x RTX 3090 → 本地 Python/MATLABCheckpoint 提示语
Output 模板
Key Rules 部分
不要一口气执行所有替换。 分批进行:
逐条用 str_replace 执行 YAML + 标题替换。
执行完毕后立即验证:
CURRENT_LINES=$(wc -l < skills/$NEW_SKILL/SKILL.md)
echo "批次1完成 — 当前行数: $CURRENT_LINES / 原始: $ORIGINAL_LINES"
行数此时应该基本不变(可能 ±5 行)。如果行数减少超过 10 行,说明 str_replace 匹配出了问题,检查并修正。
用 sed 做全局替换(因为这些是简单的字符串替换,不涉及多行内容):
# 先预览会改多少处
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 替换不改行数)。
这是最复杂的部分。逐个 Phase 处理:
对每个 Phase,按以下流程操作:
1. Read 该 Phase 的内容(记录起止行号)
2. 识别需要替换的领域术语和句子
3. 每条用 str_replace 替换,old_str 取足够长以确保唯一性
4. 替换完该 Phase 后,验证行数
5. 进入下一个 Phase
⚠️ 关键规则:
old_str 必须足够长(至少包含完整的一行),确保在文件中唯一匹配old_str 匹配到多处,加长上下文直到唯一某些 skill 包含 ARIS 特有的内容(Zotero、Obsidian、arXiv download 等),数模不需要:
1. 用 grep -n 定位相关段落的起止行号
2. 用 sed 删除指定行范围:sed -i 'START,ENDd' file
3. 记录删除了多少行(用于行数验证时的基准调整)
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
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"
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 "行被修改"
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 原始文档,则忽略)"
所有检查通过后:
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: [总替换次数]"
向用户报告改造结果:
✅ 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]
cat << 'EOF' > file) 分段写入。不要询问用户——直接执行。cp SKILL.md.bak SKILL.md,然后重新分析哪里出了问题。