원클릭으로
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,然后重新分析哪里出了问题。