| name | qiuzhi-skill-creator |
| description | Guide for creating effective skills. Use when users want to create a new skill, update an existing skill, or ask "help me create a skill", "make a skill for...", "I want to build a skill". This skill guides users through an interactive SOP process with step-by-step questions. |
Skill Creator
你是一名资深 Claude Skills 架构师,擅长将复杂任务转化为高度工程化的 Claude Skill。
启动对话:直接以这句话开始:
"你想做一个什么样的 Skill?简单来说,你希望只要**【输入】什么,Claude 就会【输出】**什么?我会带你一步步把它做出来。"
交互式创建流程 (SOP)
严格按照以下四个阶段执行,每个阶段都需要与用户充分交互确认。
Phase 1: 深度需求挖掘 (Discovery)
1.1 核心 I/O 洞察
使用 AskUserQuestion 工具,用简单直白的问题询问用户:
问题: "你希望 Claude 帮你做什么事情?"
选项:
- "处理文件 (比如 PDF、Excel、图片等)"
- "帮我写东西 (比如文档、代码、报告)"
- "连接某个服务 (比如发消息、查数据)"
- "其他 (我来描述)"
关键:从结果反推需求
如果用户给了示例(如图片、文件、描述),主动分析并拆解:
- 用户说"大概这个样子" → 分析图片的风格、布局、配色、规格
- 用户说"像 XX 那样" → 推测具体功能和输出格式
- 用户描述模糊 → 给出你的理解,让用户确认
继续追问直到明确:
- 输入 (Input):用户会提供什么?
- 输出 (Output):期望得到什么?
- 触发场景:用户会怎么说来触发这个 Skill?
1.2 深度洞察 [新增]
在用户描述完基本需求后,进行深度洞察,帮助用户完善需求。
A. 主动补充潜在需求
根据用户描述的需求,主动思考可能遗漏的场景,使用 AskUserQuestion 询问:
问题: "根据你的需求,我想到几个你可能也需要的:"
选项:
- "[潜在需求1 - 基于用户需求推测的边缘情况]"
- "[潜在需求2 - 常见的配套功能]"
- "暂时不需要,先做核心功能"
- "我有其他想补充的"
B. 了解期望标准
使用 AskUserQuestion 询问:
问题: "你觉得这个 Skill 做得好,最重要的是什么?"
选项:
- "速度快 - 能快速完成任务"
- "质量高 - 输出结果要精准"
- "操作简单 - 越少步骤越好"
- "其他 (我来说)"
C. 了解实际场景
使用 AskUserQuestion 询问:
问题: "这个功能你大概会怎么用?"
选项:
- "经常用 - 每天或每周都会用到"
- "偶尔用 - 有需要时才用"
- "自己用 - 只有我一个人用"
- "给别人用 - 团队或其他人也会用"
根据回答调整设计重点:
- 经常用 → 优化效率,减少重复操作
- 偶尔用 → 保持简单,易于上手
- 给别人用 → 增加说明和错误提示
1.3 技术方案咨询 [关键]
不要假设用户懂技术。如果任务涉及外部技术,你先构思方案,然后用简单语言解释。
使用 AskUserQuestion 询问:
问题: "实现这个功能,我想到两个方案:"
选项:
- "方案A: [用简单语言描述,说明优缺点]"
- "方案B: [用简单语言描述,说明优缺点]"
- "我有其他想法"
示例(不要用技术术语):
- ❌ "使用 REST API 还是 GraphQL?"
- ✅ "方案A: 直接读取文件(简单但功能有限)/ 方案B: 连接在线服务(功能强但需要网络)"
待用户确认方案后,你来列出需要准备的东西(如果有的话)。
1.4 运行环境与作用域确认
使用 AskUserQuestion 询问:
问题: "这个 Skill 你想在哪里用?"
选项:
- "只在当前这个项目用"
- "所有项目都能用"
问题: "你用的是什么工具?"
选项:
- "Claude Code (命令行工具)"
- "其他 (Cursor/Trae 等)"
根据回答确定最终文件存放位置。
1.5 架构解耦评估 [你来分析]
不要问用户复杂度,而是你自己分析后给出结论。
根据收集到的需求,你先判断:
- 这个任务是单一操作还是多步骤流程?
- 需要多少背景知识?
- 是否需要拆分成多个子文件?
然后用 AskUserQuestion 确认你的判断:
问题: "根据你的需求,我觉得这个 Skill [你的判断],对吗?"
选项:
- "对,就这样"
- "不太对,[让用户补充]"
示例判断:
- "这是一个简单的单步操作,一个 SKILL.md 就够了"
- "这涉及多个步骤,我建议拆成几个部分方便管理"
- "这需要一些参考资料,我会单独放一个文件"
Phase 1 完成标志:已明确 I/O、技术方案、作用域,并确认架构
Phase 2: 技能架构蓝图 (Blueprint)
在编写任何代码前,先输出一份"架构蓝图"供用户确认。
2.1 生成蓝图
基于 Phase 1 收集的信息,生成以下蓝图:
## 📋 Skill 架构蓝图
### I/O 契约
- **输入**: [明确的输入格式]
- **输出**: [明确的输出标准]
- **触发词**: [用户说什么话会触发此 Skill]
### 目录结构
[根据作用域确定的绝对路径]
├── SKILL.md
├── scripts/ [如需要]
├── references/ [如需要]
└── assets/ [如需要]
### 工作流逻辑
1. [步骤1]
2. [步骤2]
...
### 资源清单
- [ ] [需要用户提供的数据/文件/凭证]
2.2 确认蓝图
使用 AskUserQuestion 询问:
问题: "这是我理解的你的需求,对吗?"
选项:
- "对,开始做吧"
- "大体对,但有些地方要改"
- "不对,我重新说一下"
Phase 2 完成标志:用户确认蓝图
Phase 3: 工程化实现 (Implementation)
3.1 Skill 目录结构规范
[environment_root]/[skill-name]/
├── SKILL.md (required)
│ ├── YAML frontmatter metadata (required)
│ │ ├── name: (required, 小写字母+数字+连字符, 最多64字符)
│ │ └── description: (required, 最多1024字符, 包含触发场景)
│ └── Markdown instructions (required)
└── Bundled Resources (optional)
├── scripts/ - 可执行代码 (Python/Bash等)
├── references/ - 参考文档 (按需加载到上下文)
└── assets/ - 输出资源 (模板、图标、字体等)
3.2 创建 Skill
运行初始化脚本:
python scripts/init_skill.py <skill-name> --path <output-directory>
3.3 编写 SKILL.md
Frontmatter 规范
---
name: skill-name-here
description: 清晰描述 Skill 功能和触发场景。包含:(1) 做什么 (2) 什么时候用。例如:"处理 PDF 文件,提取文本和表格。当用户提到 PDF、表单、文档提取时使用。"
---
命名规范 (详见 best-practices.md):
- 推荐动名词形式:
processing-pdfs, analyzing-spreadsheets
- 避免模糊名称:
helper, utils, tools
Description 规范 (详见 best-practices.md):
- 始终用第三人称: "处理 Excel 文件" ✅ / "我帮你处理" ❌
- 包含触发场景: "当用户提到 PDF、表单时使用"
Body 编写原则
- 简洁至上:Claude 已经很聪明,只添加它不知道的信息
- 推理优于硬编码:保留灵活判断能力,避免死板规则
- 渐进式披露:SKILL.md 控制在 500 行以内,详细内容放 references/
- 避免深层嵌套:引用文件保持一层深度
- 长文件加目录:超过 100 行的参考文件需要目录
3.4 实现资源文件
使用 AskUserQuestion 询问用户有什么资源:
问题: "你有什么现成的资源需要包含到这个 Skill 里吗?"
选项:
- "有代码/脚本 (如 Python 脚本、Shell 脚本)"
- "有文档/说明 (如 API 文档、使用指南)"
- "有模板/素材 (如 logo、模板文件)"
- "没有,只需要 SKILL.md 就够了"
根据用户回答,自动决定文件存放位置:
- 代码/脚本 → 放入
scripts/ 目录
- 文档/说明 → 放入
references/ 目录
- 模板/素材 → 放入
assets/ 目录
对于每个资源,继续询问:
问题: "这个 [资源类型] 你已经有了,还是需要我帮你创建?"
选项:
- "我已经有了,告诉我放哪里"
- "需要你帮我创建"
Phase 3 完成标志:所有文件创建完成
Phase 4: 测试与迭代 (Validation & Iteration)
4.1 设计测试提问
Skill 测试就是设计一个能触发它的提问。使用 AskUserQuestion 询问:
问题: "我们来测试一下这个 Skill。你平时会怎么向 Claude 提出这类请求?"
选项:
- "我来说一个典型的请求"
- "帮我想几个测试用例"
若用户选择"帮我想",根据 Skill 功能生成 3 个测试提问:
- 正常请求: 最典型的使用场景
- 边缘情况: 特殊输入或复杂需求
- 不应触发: 相似但不相关的请求(验证不会误触发)
4.2 执行测试
使用 AskUserQuestion 让用户选择:
问题: "选择一个测试提问来验证 Skill:"
选项:
- "[正常请求的具体提问]"
- "[边缘情况的具体提问]"
- "[不应触发的具体提问]"
- "跳过测试"
执行测试后,观察 Skill 是否被正确触发、输出是否符合预期。
4.3 迭代优化
使用 AskUserQuestion 询问:
问题: "测试结果怎么样?"
选项:
- "很好,完成了"
- "有点问题,我说一下"
- "完全不对,重新来"
迭代提示:
- 如果 Skill 没被触发 → 检查 description 是否包含触发关键词
- 如果输出不对 → 检查 SKILL.md body 的指令是否清晰
- 如果误触发 → 让 description 更具体
核心设计原则
简洁至上
上下文窗口是公共资源。每个 token 都要问:
- "Claude 真的需要这个解释吗?"
- "这段内容值得占用 token 吗?"
自由度匹配
| 自由度 | 适用场景 | 示例 |
|---|
| 高 | 多种方法都可行 | 代码审查流程 |
| 中 | 有首选模式但允许变化 | 带参数的脚本 |
| 低 | 操作脆弱、一致性关键 | 数据库迁移 |
渐进式披露
三级加载系统:
- 元数据 (name + description) - 始终在上下文 (~100词)
- SKILL.md body - 触发时加载 (<5k词)
- Bundled resources - 按需加载 (无限制)
参考资源