name: yy-create-skill description: > 创建或更新 Skill(技能)。用于创建新技能、更新现有技能或标准化工作流程,不用于创建规则文件或普通文件。
yy-create-skill
描述
帮助用户创建或更新符合规范的 Skill 技能文件,包含完整的目录结构、YAML 元数据和可执行的指令步骤。
Skill 本质上是"可按需加载的任务说明书",用于复用复杂流程。关键特点:
- 自动发现:会被自动发现,只在相关时加载,避免上下文膨胀
- 精确触发:description 要精确,避免误触发
- 明确边界:必须有使用场景(触发条件和不应触发场景)
- 指令清晰:步骤明确,最后一步描述输出格式
- 决策显式:隐含的分支选择转化为明确规则
使用场景
- 用户想要创建新技能
- 用户想要更新现有技能
- 用户需要把某个工作流程标准化为技能
- 用户想把某个功能打包成可复用的技能
不应触发:
- 用户只是询问技能是什么
- 用户要求创建普通文件
- 用户要求创建规则文件
指令
步骤 1. 捕获意图
理解用户的需求,分三个阶段完成意图捕获:识别意图类型、判定适用范围、补齐必要信息。
意图识别
确定是创建新技能还是更新现有技能:
决策分支:
- 用户明确指定(如"创建一个 XX 技能"、"更新 YY 技能"):按用户指定执行
- 用户未明确指定:根据以下信号推断:
- 提及"创建"、"新建"、"帮我搞个"等 → 创建新技能
- 提及现有技能名称或"更新"、"修改"、"优化"等 → 更新现有技能
- 推断结果不确定时:向用户确认
范围判定
确定技能的适用范围是通用还是专有,此判定结果作为步骤 5 的输入约束。
决策分支:
- 用户明确指定:按用户指定的范围执行
- 用户未明确指定:根据以下信号推断并确认:
- 技能名称包含通用动词(如"注释"、"格式化"、"审查")且未限定技术栈 → 倾向通用
- 技能名称包含特定技术栈限定(如"Vue"、"React"、"Python")→ 倾向专有
- 用户描述中提及多种语言/工具 → 倾向通用
- 用户描述中只提及单一技术栈 → 倾向专有
- 推断结果不确定时:向用户确认"此技能是通用技能(适用于多种语言/工具)还是专有技能(限定于特定技术栈)?"
信息补齐
根据意图类型补齐必要信息:
创建新技能:
- 需求明确:用户同时指定了技能名称和至少一个触发场景(如"创建一个格式化代码的技能,在提交前格式化"),记录技能名称和触发场景
- 需求模糊:用户只指定了技能名称或只指定了用途(如"帮我搞个技能"、"创建一个 lint 技能"),使用以下引导问题补充信息:
- 这个技能应该让 AI 助手能做什么?
- 何时应触发这个技能?
更新现有技能:
- 读取现有 SKILL.md 内容
- 根据用户输入确定更新范围:
- 明确指定:用户明确说明要更新的部分(如"更新 description"、"修改步骤 3"),按用户指定范围更新
- 未明确指定,但目标技能明确:默认按"补充+优化"策略处理,进入步骤 2 等待用户确认
- 目标技能或任务目标仍不明确:使用最少必要的问题补齐缺失信息,再进入步骤 2
步骤 2. 确认方案与计划
强制规则:无论用户的请求是什么形式,必须先展示方案与计划,并等待用户明确确认后才能进入步骤 3。任何情况下都不得跳过此确认步骤,也不得在同一轮中展示计划后直接继续执行。
决策分支:
- 当前环境可用
yy-mode-plan:优先使用该技能创建方案方向和计划,并等待用户确认 - 当前环境不可用
yy-mode-plan:使用以下本地最小确认流程- 方向不明确时:先展示方案方向,等用户确认方向正确后,再展示计划
- 方向明确时:直接展示计划
- 展示计划后必须等待用户确认,才能进入步骤 3
- 展示方案方向时,至少包含以下内容:
- 目标:一句话说明将要完成的内容
- 方法:高层策略(1-3 句)
- 涉及范围:将要创建或修改的技能文件、辅助目录或模板资源
- 待确认点:仍需用户决策的关键选择(如有)
- 方案方向结尾必须明确提示用户确认方向是否正确,或提出调整意见
- 计划中至少说明操作类型、目标技能目录、目标文件路径、是否涉及辅助目录、内容生成或更新策略和影响范围
步骤 3. 确定技能目录
- 创建新技能:使用小写、短横线分隔的命名方式,遵循以下原则:
- 名词使用单数形式:如
create-skill而非create-skills - 优先动宾结构:如
create-skill、read-pdf、lint-code而非skills-creator、pdf-reader
- 名词使用单数形式:如
- 更新现有技能:直接使用现有技能目录
命名规范详见 resources/skill-guide.md。
步骤 4. 确定输出目录
- 如果用户指定了目录,则在用户指定目录下生成技能
- 如果用户未指定目录,按以下优先级检测已有的技能目录:
.agents/skills/.claude/skills/.opencode/skills/.trae/skills/skills/
- 无已有目录时,在项目根目录创建
skills/目录
步骤 5. 编写 SKILL.md
生成 SKILL.md 的文本内容,并判断是否需要创建辅助目录(templates/、resources/、examples/、prompts/)。此步骤不执行文件写入操作,文件写入在步骤 6 执行。
编写原则和模板请参考 templates/skill-template.md。
默认策略
- description 默认使用
>折叠式语法(禁止行内写法) ## 指令章节默认使用### 步骤 N. 标题的分步结构,最后一步描述输出格式- 默认只生成 SKILL.md,不自动创建 examples/、templates/、resources/、scripts/ 目录;
prompts/按本步骤中的派生产物规则处理 - 仅在以下条件满足时才创建辅助目录:
- scripts/:技能需要可执行脚本,用户明确要求或技能功能必须通过脚本实现
- templates/:需要生成特定格式文件,或模板实际内容超过 20 行(计数规则:只统计实际内容行,不含空行、代码块围栏标记行
```、YAML frontmatter 行) - resources/:需要独立的参考文档,且内容不适合放在 SKILL.md 正文
- examples/:用户明确要求提供示例
- prompts/:可选派生产物目录,仅用于存放由 SKILL.md 派生出的系统提示词文件;创建新技能时默认不生成,除非用户明确要求;更新现有技能时,仅当
prompts/目录已存在且yy-skill-to-prompt可用时才更新,不存在则不新增;默认不手写,优先由yy-skill-to-prompt生成
- 当技能指令中存在"生成特定格式的输出文件"步骤时,必须在对应步骤中提供格式模板(章节结构、字段名称、占位符说明),确保不同 AI 生成的文件结构一致;模板内容不超过 20 行时内嵌在步骤中,超过 20 行时移至
templates/目录并引用
通用技能结构指导
当步骤 1 的范围判定结果为通用时,按以下分层结构组织内容:
- 通用层:跨目标共用的规则、判断标准、质量原则等,放在 SKILL.md 正文或
resources/下的独立文件中(文件名根据内容性质自行命名,如common-rule.md、common-spec.md、common-convention.md等) - 特定层:各目标独有的语法、格式、惯例等,按目标维度拆分为
resources/下的独立文件(如按语言、框架、工具分别建文件) - 路由层:SKILL.md 负责根据目标类型路由到对应的特定层文件,并声明优先级规则
- fallback 机制:必须有兜底规则覆盖未列出的目标,确保技能不因缺少特定层文件而失效
优先级规则:当特定层的规则与通用层冲突时,以特定层的规则优先。此规则必须在 SKILL.md 中显式声明。
反面案例:将所有目标的规则平铺写在 SKILL.md 正文中,既无通用/特定分层,也无 fallback,导致技能只能覆盖已列出的目标。
专有技能边界检查
当步骤 1 的范围判定结果为专有时,检查以下边界:
- description 和使用场景应明确限定技术栈范围,不使用"支持多种语言"等泛化表述
- 不应出现覆盖多个目标的通用性描述(如"适用于所有编程语言")
- 如专有技能后续需要扩展为通用技能,应通过更新流程重新评估范围,而非在专有技能上直接叠加通用内容
编写约束
编写 SKILL.md 时需遵循以下约束,详细规范和示例见 resources/skill-guide.md:
- description:遵循结构化公式
<动词引导的动作>. <何时用 / 何时不用>.,控制在 2-3 句话,排除条件写在 description 中,不得出现其他技能名 - 使用场景:触发与排除条目必须贴近技能本质,排除场景必须是 AI 真实可能误触发的相邻场景
- 能力一致性:适用场景必须能在指令中找到执行路径,不适用场景必须与指令无交集
- YAML frontmatter:只允许
name和description两个字段 - 步骤分层:判断步骤只编排,执行步骤包含具体命令;前置动作写在代码块最前面;条件限定需有清晰论据
- 决策点显式化:明确条件与对应行为,避免模糊表述;避免隐性技能依赖
- 项目级规则边界:不重复项目级规则文档已有的通用约定,识别可回流内容
- 受众意识:只写 AI 需要知道的,不罗列底层实现细节
- 派生技能:采用薄覆盖层写法,只声明覆盖规则,不重复源技能内容
更新技能策略
更新现有技能时,遵循以下原则:
- 先读取再修改:读取现有 SKILL.md 和辅助文件内容,理解当前结构后再修改
- 默认补充+优化:保留现有内容,补充缺失部分,优化表达和结构;若用户明确要求"完全重写",则覆盖生成
- 同步检查辅助文件:修改 SKILL.md 后,检查 examples/、templates/、resources/、prompts/ 中的文件是否需要同步更新。默认只修改
SKILL.md和必要的派生产物;若本次变更导致辅助文件中的步骤编号、章节名称、字段名或提示词内容与新的 SKILL.md 失配,则同步更新相关辅助文件 - description 独立评估:更新其他章节时,单独评估 description 是否需要同步调整,避免 description 混入实现细节
- 必须按步骤 2 处理方案与计划确认,在用户明确确认前不得执行后续步骤
步骤 6. 创建目录结构
根据步骤 5 的判断结果,执行以下操作:
创建新技能
- 创建技能目录(如
skills/技能名称/) - 写入 SKILL.md 文件
- 如步骤 5 判断需要辅助目录,同时创建相应目录和文件
目录结构规范详见 resources/skill-guide.md。
更新现有技能
- 读取现有目录结构
- 默认只修改
SKILL.md、必要的派生产物或用户指定的部分 - 若本次变更导致辅助文件失配,则同步更新相关辅助文件
- 不删除已有辅助文件
生成提示词派生产物
创建或更新 SKILL.md 后,按以下决策分支处理 prompts/skill-prompts.md:
创建新技能时:
- 用户未明确要求:默认跳过
prompts/目录生成,不创建该目录 - 用户明确要求且
yy-skill-to-prompt可用:使用yy-skill-to-prompt生成prompts/skill-prompts.md - 用户明确要求但
yy-skill-to-prompt不可用:提示用户安装yy-skill-to-prompt,或确认是否使用本技能内的最小回退流程手动生成
更新现有技能时:
prompts/目录已存在且yy-skill-to-prompt可用:使用yy-skill-to-prompt更新prompts/skill-prompts.mdprompts/目录已存在但yy-skill-to-prompt不可用:跳过更新,不阻塞技能更新流程prompts/目录不存在:不新增该目录,即使yy-skill-to-prompt可用也不生成
步骤 7. 验收
创建或更新技能后,按 resources/skill-guide.md 中的验收清单逐项检查,重点关注:
- description 遵循结构化公式,包含排除条件
- 使用场景贴近技能本质,排除场景是真实可能误触发的相邻场景
- 指令步骤完整可执行,决策点显式化
- 文件间一致性(SKILL.md 与辅助文件描述一致)
- YAML 格式正确(仅
name和description两个字段) - 能力一致性(适用场景有执行路径,不适用场景与指令无交集)
创建技能后还需检查:文件命名规范(kebab-case)、目录名称合规、代码示例包含语言标签。
更新技能后还需检查:description 未混入执行细节、辅助文件是否需要同步更新。
步骤 8. 输出结果
输出以下内容:
- 创建/更新结果:技能名称和操作类型(创建/更新)
- 目录结构:生成的文件树(使用
tree或text代码块) - 提示词派生产物状态:说明是否生成或更新
prompts/skill-prompts.md,以及使用的是yy-skill-to-prompt还是本地回退流程;如未生成,说明跳过原因 - SKILL.md 内容摘要:
- description 文本(完整复制)
- 指令步骤概要(格式:
步骤编号. 步骤名称,如步骤 1. 捕获意图、步骤 2. 确认方案与计划、步骤 3. 确定技能目录)
- 不输出完整 SKILL.md 正文,除非用户明确要求查看完整内容
- 可回流规则建议(如有):列出本次识别出的可回流规则、用户决策结果(回流/写入技能);如用户选择回流,附上可直接粘贴的话术,以及建议的写入位置(由用户最终决定)
安全边界
- 仅在目标技能目录及用户明确授权的文件范围内创建或修改文件;若需要扩展到其他目录,先说明原因并等待确认
- 更新现有技能时,默认不删除已有辅助文件;只有用户明确要求删除,或文件已被本次统一方案替代且删除范围已确认时,才可执行删除
- 当前环境未安装
yy-skill-to-prompt时,不得仅为补齐目录结构而手写prompts/skill-prompts.md;只有用户明确要求必须生成提示词文件,并确认使用本地最小回退流程时,才可手动生成 - 未在步骤 2 获得用户对方案与计划的明确确认前,不得创建、覆盖或改写任何文件;目标、范围或策略不明确时应先回到步骤 1 补齐信息,再进入步骤 2 等待确认
相关资源
本技能包含以下辅助资源:
examples/input.md:输入示例,展示用户如何请求创建技能examples/output.md:输出示例,展示创建技能后的预期结果templates/skill-template.md:基础技能模板resources/skill-guide.md:技能编写完整指南(命名规范、YAML 语法、章节编写原则、交互设计、验收清单)
目录结构规范
技能支持的目录结构和命名规范详见 resources/skill-guide.md。