跳转到正文
文章目录

使用说明:本文所有 Prompt 均可直接复制到 Claude Code 使用。< > 内为需替换的变量,[ ] 内为可选参数。


一、Skill 创建阶段

1.1 从零创建新 Skill

</> PLAINTEXT
我想创建一个新的 Skill,用于 <描述具体能力>。

触发场景:当用户 <描述何时应该触发>
输入:<输入格式/类型>
输出:<输出格式/类型>
依赖工具:<bash / python / mcp-server 等,如无则填"无">

请帮我:
1. 确认 Skill 的能力边界
2. 起草 SKILL.md(含 YAML frontmatter)
3. 给出 2-3 个测试用例
4. 评估是否需要配套脚本或参考文档

1.2 从现有工作流提取 Skill

</> PLAINTEXT
我刚才完成了一个工作流,想把它变成可复用的 Skill。

请分析本次对话记录,提取:
- 使用了哪些工具(顺序是什么)
- 我做了哪些纠正(说明哪里容易出错)
- 输入/输出的格式
- 可以泛化的步骤 vs 本次特有的细节

然后将这个工作流封装为 SKILL.md,
保存到 /tmp/<skill-name>/SKILL.md

1.3 克隆并改造已有 Skill

</> PLAINTEXT
读取 <已有 Skill 路径>/SKILL.md

基于这个 Skill,创建一个变体版本:
- 保留:<列出要保留的核心逻辑>
- 修改:<列出要修改的部分>
- 新增:<列出要新增的能力>

将新 Skill 保存到 /tmp/<new-skill-name>/,
不要修改原始 Skill。

1.4 批量创建 Skill 套件

</> PLAINTEXT
我需要为 <业务领域> 创建一套 Skill 体系,包含:

1. <Skill A 名称>:<一句话描述>
2. <Skill B 名称>:<一句话描述>
3. <Skill C 名称>:<一句话描述>

请先给出整体架构设计:
- 各 Skill 的职责边界
- 相互之间的依赖关系(哪个会调用哪个)
- 共享资源(脚本/模板)放在哪里

架构确认后,从第一个开始逐个创建。

二、SKILL.md 编写指令

2.1 生成标准 SKILL.md 模板

</> PLAINTEXT
为以下 Skill 生成完整的 SKILL.md 文件:

名称:<skill-name>
能力:<详细描述>
触发关键词:<关键词1、关键词2、关键词3...>
输出格式:<文件类型/结构>
依赖:<python库/npm包/mcp server>

要求:
- description 字段要有"推力"——明确列出触发场景,
  即使用户没有明说也应触发的情况
- 工作流用步骤编号写清楚
- 包含至少一个输入/输出示例
- 错误处理部分列出 top3 常见错误

2.2 优化触发描述(description 字段)

</> PLAINTEXT
当前 Skill 的 description 如下:

"""
<粘贴当前 description>
"""

问题:<描述触发不准确的现象,例如"经常不触发"或"误触发太多">

请重写 description,要求:
- 长度 100-200 字
- 明确列出应触发的用户措辞变体(至少 5 种说法)
- 明确排除容易混淆的相邻场景
- 语气要有"主动性",不能太被动
- 保持 kebab-case 的 name 不变

2.3 为 Skill 增加多域支持

</> PLAINTEXT
当前 Skill 只支持 <单一场景>,我需要扩展为支持多个变体:

变体 A:<场景 A,例如 AWS>
变体 B:<场景 B,例如 GCP>
变体 C:<场景 C,例如 Azure>

请:
1. 重构 SKILL.md,将通用逻辑留在主文件
2. 在 references/ 目录下为每个变体创建独立文档
3. 在 SKILL.md 中添加路由逻辑
   (根据用户描述的关键词判断读取哪个 reference 文件)
4. 更新 description 覆盖所有变体的触发场景

三、测试用例(Evals)管理

3.1 生成 evals.json

</> PLAINTEXT
为 Skill "<skill-name>" 生成 evals/evals.json。

该 Skill 的功能:<描述>

要求:
- 生成 5 个测试用例
- 覆盖:正常场景 × 2、边界情况 × 2、错误输入 × 1
- 每个用例包含:
  - 真实用户会说的 prompt(不要太正式)
  - 期望输出的描述
  - 3-5 条可客观验证的 expectations
- 测试文件放在 evals/files/ 目录(如需要请生成 mock 文件)

保存到 <skill-path>/evals/evals.json

3.2 为现有测试用例补充 Expectations

</> PLAINTEXT
读取 <skill-path>/evals/evals.json

为每个 eval 补充 expectations 字段。

好的 expectation 标准:
- 客观可验证(不含"看起来专业"这类主观描述)
- 具有区分度(有 Skill 和没有 Skill 结果不同)
- 覆盖:输出存在性、格式正确性、内容准确性

每个 eval 补充 3-5 条,更新文件。

3.3 检查测试用例质量

</> PLAINTEXT
读取 <skill-path>/evals/evals.json

评估每个测试用例的质量,检查:

1. 复杂度:是否足够复杂能触发 Skill?
   (太简单的单步任务 AI 会直接回答,不会用 Skill)

2. 断言质量:
   - 有没有主观断言("输出质量好"这类)
   - 有没有过于宽松的断言("包含文字")
   - 有没有可以用脚本自动验证的断言

3. 覆盖度:是否覆盖了边界情况?

输出:每个 eval 的质量评分(1-5)和改进建议

3.4 从真实用户反馈生成新测试用例

</> PLAINTEXT
以下是用户使用 Skill "<skill-name>" 时遇到的问题:

"""
<粘贴用户反馈或 bug 描述>
"""

请:
1. 分析这些反馈说明 Skill 在哪些场景下表现不好
2. 为每个问题场景生成对应的测试用例
3. 将新用例追加到 <skill-path>/evals/evals.json
4. 确保新用例的 id 不与现有用例冲突

四、执行测试与评估

4.1 运行单个测试用例

</> PLAINTEXT
使用 Skill 执行以下测试:

Skill 路径:<skill-path>
测试 prompt:<测试内容>
输入文件:[可选,文件路径]
输出保存到:/tmp/<skill-name>-test/outputs/

完成后告诉我:
- 执行了哪些步骤
- 使用了哪些工具(及调用次数)
- 输出文件列表
- 遇到了什么问题(如有)

4.2 对比测试:有 Skill vs 无 Skill

</> PLAINTEXT
我要对比有 Skill 和无 Skill 的效果差异。

任务:<测试任务描述>
Skill 路径:<skill-path>
输入文件:[可选]

请分别执行两次:
1. 使用 Skill 完成任务,结果保存到 /tmp/test-with-skill/
2. 不使用 Skill 完成同一任务,结果保存到 /tmp/test-without-skill/

完成后对比:
- 输出质量(从结构、完整性、格式三个维度)
- 工具调用次数
- 执行步骤数
- 哪些 expectations 分别通过/失败

4.3 批量运行所有测试用例

</> PLAINTEXT
读取 <skill-path>/evals/evals.json

对所有测试用例批量执行:
- 每个用例执行有 Skill 版本
- 结果分别保存到 /tmp/<skill-name>-workspace/iteration-1/eval-<id>/

执行过程中:
- 记录每个用例的工具调用次数
- 记录执行耗时
- 如遇到错误继续执行其他用例(不要中断)

全部完成后汇报整体通过率。

4.4 评分单个测试结果

</> PLAINTEXT
请评估以下测试结果是否通过所有断言。

测试输出目录:<输出路径>

断言列表:
1. <断言 1>
2. <断言 2>
3. <断言 3>

对每条断言:
- 判断 passed: true/false
- 给出 evidence(在输出中找到的具体证据)

以 JSON 格式输出评估结果:
{
  "expectations": [
    {"text": "...", "passed": true/false, "evidence": "..."}
  ],
  "summary": {"passed": N, "failed": N, "total": N, "pass_rate": 0.XX}
}

4.5 生成 benchmark 统计报告

</> PLAINTEXT
读取以下测试结果,生成 benchmark.json:

有 Skill 的结果:<with-skill 路径>/grading.json
无 Skill 的结果:<without-skill 路径>/grading.json

按以下格式统计:
- pass_rate(有/无 Skill 各自的通过率)
- delta(提升幅度)
- 每个断言的通过情况对比

识别以下模式:
- 哪些断言在两种情况下都通过(区分度低)
- 哪些断言 Skill 明显改善(Skill 的核心价值)
- 哪些断言 Skill 没有改善(改进方向)

保存到 /tmp/<skill-name>-workspace/benchmark.json

五、Skill 迭代改进

5.1 基于测试失败改进 Skill

</> PLAINTEXT
测试结果显示以下断言失败:

失败的断言:
- <断言 1>(在 eval-1 中失败)
- <断言 2>(在 eval-2、eval-3 中失败)

Skill 路径:<skill-path>

请:
1. 分析这些失败最可能的根因
   (是指令不清?缺少工具调用步骤?输出规范不明?)
2. 提出 2-3 种修复方案及其权衡
3. 实施最佳方案,修改 SKILL.md
4. 解释修改了哪些内容以及为什么这样修改

5.2 基于用户反馈改进 Skill

</> PLAINTEXT
用户对 Skill "<skill-name>" 的反馈:

"""
<用户反馈文字>
"""

请:
1. 理解用户反馈背后的真实需求
   (不要字面解读,要理解 why)
2. 识别 Skill 中哪些指令导致了这个问题
3. 修改 Skill,但要避免过度拟合这个特例
   (修改应能泛化到类似场景)
4. 解释你的改动逻辑

5.3 精简过于冗余的 Skill

</> PLAINTEXT
读取 <skill-path>/SKILL.md

这个 Skill 可能过于冗长,请进行精简:

精简原则:
- 删除重复表达的内容
- 将"必须/始终/绝对"等强制语气,改为解释"为什么"
- 可以通过示例传达的规则,删除重复的文字说明
- 超过 500 行的内容,考虑拆分到 references/ 子文件

目标:在不降低质量的前提下,将 SKILL.md 缩短 20-30%

给我展示:原版 token 数 vs 精简后 token 数,以及删除了哪些内容。

5.4 将重复脚本固化到 Skill

</> PLAINTEXT
我注意到在多次测试运行中,Claude 都独立写了类似的脚本。

重复出现的脚本功能:<描述脚本做了什么>

请:
1. 编写一个通用版本的脚本,保存到 <skill-path>/scripts/<script-name>.py
2. 让脚本支持命令行参数(而不是硬编码路径)
3. 在 SKILL.md 中添加指令:什么时候调用这个脚本、如何调用
4. 确保脚本有基本的错误处理和使用说明(--help)

5.5 版本对比:新旧 Skill 盲测

</> PLAINTEXT
我修改了 Skill,想知道新版是否真的更好。

旧版路径:<old-skill-path>
新版路径:<new-skill-path>
测试任务:<任务描述>
输入文件:[可选]

请:
1. 用旧版完成任务,保存到 /tmp/blind-test/version-A/
2. 用新版完成同一任务,保存到 /tmp/blind-test/version-B/
3. 不要告诉我哪个是新版
4. 从以下维度比较两个输出:
   - 完整性(是否涵盖所有要求)
   - 格式规范性
   - 内容准确性
   - 执行效率(步骤数/工具调用数)
5. 最后宣布哪个版本更好,并给出理由

六、触发描述(Description)优化

6.1 生成触发评估集

</> PLAINTEXT
为 Skill "<skill-name>" 生成触发评估集(trigger eval set)。

Skill 当前 description:
"""
<粘贴当前 description>
"""

生成 20 条评估查询:
- 应触发(should_trigger: true):10 条
  * 覆盖不同措辞方式(正式/口语/缩写)
  * 包含用户没有明说 Skill 名称但明显需要的场景
  * 包含边界触发案例
  
- 不应触发(should_trigger: false):10 条
  * 相邻场景(共享关键词但需要不同 Skill)
  * 模糊场景(可能被关键词匹配但实际无关)
  * 避免"写一段代码"这类明显不相关的简单负例

输出格式:
[
  {"query": "...", "should_trigger": true},
  ...
]

查询要真实具体,带有背景细节,不要写"帮我处理 PDF 文件"这种抽象描述。

6.2 运行描述优化循环

</> PLAINTEXT
运行触发描述优化循环:

Skill 路径:<skill-path>
触发评估集:<eval-set.json 路径>
最大迭代次数:5

执行步骤:
1. 用当前 description 测试触发率(每条查询跑 3 次取均值)
2. 分析失败案例(漏触发 + 误触发)
3. 提出改进后的 description
4. 在测试集上验证新 description
5. 重复直到:触发率 ≥ 85% 且误触发率 ≤ 15%

完成后输出:
- 各版本的触发率对比表
- 最终推荐的 description 文本
- 更新到 SKILL.md(需确认)

6.3 诊断描述触发问题

</> PLAINTEXT
Skill "<skill-name>" 存在以下触发问题:

问题类型:[欠触发 / 误触发 / 两者都有]

欠触发的例子(本应触发但没有):
- "<例子 1>"
- "<例子 2>"

误触发的例子(不应触发但触发了):
- "<例子 1>"
- "<例子 2>"

当前 description:
"""
<粘贴当前 description>
"""

请诊断问题根因,并提供 3 个改进版本的 description,
说明每个版本的策略差异和预期效果。

七、MCP 集成 Skill

7.1 为 Skill 添加 MCP Server 依赖

</> PLAINTEXT
我想让 Skill "<skill-name>" 集成以下 MCP Server:

MCP Server:<server-name>(例如 github、slack、postgres)
用途:<在 Skill 工作流中的用途>
关键工具:<需要用到的 MCP 工具名称>

请:
1. 在 SKILL.md 的 compatibility 字段声明 MCP 依赖
2. 在工作流中插入 MCP 工具调用步骤
3. 说明 MCP Server 的配置方式(~/.claude/mcp.json 示例)
4. 添加降级处理:MCP 不可用时的替代方案

7.2 创建 MCP Server Skill

</> PLAINTEXT
我需要创建一个 MCP Server,并为其配套一个 Skill。

服务描述:<要集成的外部服务>
语言偏好:[TypeScript(推荐)/ Python]
核心功能:
- <功能 1>
- <功能 2>
- <功能 3>

请按以下步骤进行:
1. 读取 mcp-builder Skill 的开发指南
2. 设计工具列表(tool naming 遵循 <service>_<action> 格式)
3. 实现 MCP Server
4. 创建配套的 Skill,描述何时/如何使用这个 MCP Server
5. 生成测试用例验证集成效果

7.3 MCP Server 工具质量审查

</> PLAINTEXT
审查以下 MCP Server 的工具设计质量:

MCP Server 代码路径:<路径>

检查维度:
1. 命名规范:是否使用 <service>_<action> 格式
2. 描述质量:工具描述是否让 AI 容易理解何时使用
3. 错误处理:错误信息是否有具体的修复建议
4. 参数设计:
   - 是否有合理的参数约束(min/max/enum)
   - 可选参数是否有合理默认值
5. 分页支持:列表类工具是否支持分页
6. 注解(Annotations):
   - readOnlyHint
   - destructiveHint
   - idempotentHint

输出:每个维度的评分(1-5)和具体改进建议

八、Skill 打包与分发

8.1 打包 Skill 为 .skill 文件

</> PLAINTEXT
将以下 Skill 打包为可分发的 .skill 文件:

Skill 路径:<skill-path>

打包前检查:
- SKILL.md 是否有完整的 frontmatter(name, description)
- 是否有不必要的临时文件(.DS_Store, __pycache__, *.pyc)
- evals/ 目录是否包含(如有,保留;如无,说明)
- assets/ 中的文件是否都被 SKILL.md 引用

运行打包脚本:
python -m scripts.package_skill <skill-path>

将生成的 .skill 文件保存到 /mnt/user-data/outputs/

8.2 Skill 发布前质量检查

</> PLAINTEXT
对 Skill "<skill-name>" 执行发布前质量门禁检查。

Skill 路径:<skill-path>
测试结果路径:<workspace-path>

检查清单:
□ SKILL.md frontmatter 完整(name, description)
□ description 触发率 ≥ 85%(来自触发评估)
□ description 误触发率 ≤ 15%
□ 测试用例 pass_rate ≥ 0.80(有 Skill 版本)
□ vs 无 Skill 的 delta ≥ 0.30
□ stddev ≤ 0.10(稳定性)
□ errors_encountered = 0(无运行错误)
□ 有至少 5 个测试用例(evals.json)
□ 包含边界情况测试
□ 所有 scripts/ 文件有 --help 说明
□ compatibility 字段声明了所有外部依赖

输出:通过/失败汇总,以及未通过项的修复建议

8.3 生成 Skill README

</> PLAINTEXT
为 Skill "<skill-name>" 生成 README.md。

读取 <skill-path>/SKILL.md 和 <skill-path>/evals/evals.json

README 包含:
1. 一句话介绍(是什么)
2. 解决的问题(为什么用它)
3. 触发方式(用哪些词触发)
4. 快速开始示例(3 个真实 prompt 示例)
5. 安装方式(.skill 文件安装步骤)
6. 依赖说明(需要安装什么、配置什么)
7. 测试用例通过率(从 benchmark 数据获取)
8. 已知限制

语言简洁,以用户为中心,避免技术术语。

九、Skill 体系治理

9.1 审计已安装的 Skill 列表

</> PLAINTEXT
扫描以下目录下所有已安装的 Skill:
- /mnt/skills/public/
- /mnt/skills/examples/
- /mnt/skills/user/(如存在)

为每个 Skill 提取:
- name(来自 frontmatter)
- description 前 50 字
- 目录大小
- 是否有 evals/

以表格形式展示,并标注:
- 哪些 Skill 的 description 看起来过于相似(可能重叠)
- 哪些 Skill 缺少测试用例
- 哪些 Skill 文件异常大(>200KB,可能有冗余资源)

9.2 检测 Skill 冲突与重叠

</> PLAINTEXT
分析以下两个 Skill 是否存在功能重叠或触发冲突:

Skill A:<skill-path-A>
Skill B:<skill-path-B>

分析维度:
1. description 中的关键词重叠度
2. 能力范围是否有交集
3. 相同输入可能触发哪个?(用 5 个测试查询验证)
4. 是否可以合并(一个调用另一个)?

给出建议:
- 保持独立(明确区分各自的触发边界)
- 合并(哪个作为主 Skill,哪个降级为函数)
- 重命名(让触发更精准)

9.3 批量更新 Skill 版本

</> PLAINTEXT
我需要将所有 Skill 更新到新的输出规范。

变更内容:<描述规范变更,例如"所有输出文档改用新的页眉模板">
影响的 Skill:[全部 / 仅 <类型> 类 Skill]
模板文件:<新模板路径>

请:
1. 列出所有受影响的 Skill
2. 对每个 Skill,定位需要修改的具体行
3. 逐一应用修改(先预览,确认后再写入)
4. 更新每个 Skill 的 lastmod 字段
5. 生成变更摘要

十、高级工作流 Prompt

10.1 Skill 链设计

</> PLAINTEXT
我有一个复杂任务需要多个 Skill 串联完成:

任务描述:<复杂任务>

可用 Skill:
- <Skill A>:<能力描述>
- <Skill B>:<能力描述>
- <Skill C>:<能力描述>

请设计 Skill 链方案:
1. 执行顺序和数据流(哪个的输出是哪个的输入)
2. 中间产物的格式(确保上下游兼容)
3. 错误发生时的回滚策略
4. 是否需要创建一个编排 Skill 来管理整个流程

如果现有 Skill 之间存在接口不兼容,指出需要如何调整。

10.2 为 Skill 添加人工确认节点

</> PLAINTEXT
修改 Skill "<skill-name>",在关键步骤前添加人工确认。

当前工作流的关键步骤:<步骤描述>

需要在以下情况暂停并请求用户确认:
- <情况 1,例如"即将删除文件时">
- <情况 2,例如"检测到输入与预期格式不符时">

确认方式:
- 展示将要执行的操作摘要
- 等待用户输入 "y" / "n"(或描述 Claude 如何询问用户)
- "n" 时的处理逻辑

修改 SKILL.md,将确认节点融入工作流步骤。

10.3 调试 Skill 异常行为

</> PLAINTEXT
Skill "<skill-name>" 出现了异常行为:

现象:<描述异常,例如"总是跳过步骤3"或"生成的文件格式不对">
复现步骤:
1. <步骤 1>
2. <步骤 2>
触发 prompt:<具体 prompt>
实际输出:<实际结果>
期望输出:<期望结果>

请:
1. 阅读 SKILL.md,找出可能导致这个行为的指令
2. 提出假设(最可能的 2-3 个根因)
3. 为每个假设设计验证实验
4. 执行最可能的验证,确认根因
5. 给出修复方案

10.4 Skill 性能分析

</> PLAINTEXT
分析 Skill "<skill-name>" 的执行效率:

读取以下测试运行数据:<workspace 路径>

分析指标:
- 平均工具调用次数(vs 无 Skill 的基准)
- 平均执行时长
- 最耗时的步骤是什么
- 是否有冗余的工具调用(同一文件被多次读取等)

识别优化机会:
- 哪些步骤可以并行(如果工具支持)
- 哪些重复操作可以通过脚本一次完成
- 是否有不必要的验证步骤可以简化

给出效率优化建议(不能以降低质量为代价)。

10.5 一键式 Skill 创建 + 测试 + 优化流水线

</> PLAINTEXT
请启动完整的 Skill 创建流水线:

目标 Skill:<描述>
目标路径:/tmp/<skill-name>/

流水线步骤:
1. 创建 SKILL.md(我确认后继续)
2. 生成 evals.json(5个测试用例)
3. 执行有/无 Skill 的对比测试
4. 生成 benchmark.json
5. 分析失败用例,提出改进
6. 更新 SKILL.md(第2轮)
7. 重新测试验证改进效果
8. 生成触发评估集,优化 description
9. 最终质量检查
10. 打包输出 .skill 文件

在每个需要我确认的节点暂停等待,
异常时说明问题并建议处理方式。

十一、Prompt 速查表

场景 推荐 Prompt 编号
第一次创建 Skill 1.1
将已有工作流转为 Skill 1.2
快速生成 SKILL.md 2.1
解决触发不准确问题 2.2 / 6.3
生成测试用例 3.1
运行对比测试 4.2
根据测试失败改进 5.1
精简过长的 Skill 5.3
优化 description 6.2
集成 MCP 7.1 / 7.2
发布前检查 8.2
全自动流水线 10.5

附录:常用变量速查

</> BASH
# 常用路径变量(根据实际情况替换)
SKILL_PATH="/mnt/skills/public/<skill-name>"
WORKSPACE="/tmp/<skill-name>-workspace"
EVALS="$SKILL_PATH/evals/evals.json"
SCRIPTS="$SKILL_PATH/scripts"
OUTPUT="/mnt/user-data/outputs"

# 常用 Claude Code CLI 命令
claude "读取 $SKILL_PATH/SKILL.md 并分析其结构"
claude -p "执行以下任务并输出 JSON" < task.txt
claude --output-format json "分析 Skill 触发率"

# 打包命令
cd /mnt/skills/examples/skill-creator
python -m scripts.package_skill $SKILL_PATH

最后更新:2026-03-18 | 基于 Claude Code Skill 体系实战经验整理

评论

搜索站内内容

输入关键词开始搜索