new-skill
按本仓约定创建新 skill 的引导式工作流。输入:$ARGUMENTS(skill 名,可附一句话定位)。与通用的 skill-creator 互补:本 skill 负责落实本仓库的结构约定;需要深度打磨内容或跑 evals 时再用 skill-creator。
流程
1. 收集输入
从 $ARGUMENTS 解析 skill 名(kebab-case)和定位描述。以下信息缺失时用 AskUserQuestion 一次性问齐:
- 定位/性质:行为准则、规范索引、结构性操作、审计、修复流程……一句话说清它做什么。
- 触发方式:agent 自动按场景触发,还是仅手动
/name调用? - 与现有 skill 的关系:先自己查重再问——
grep -n "^description:" skills/*/SKILL.md .claude/skills/*/SKILL.md(description 用折叠标量>的取其后续行),按关键词列出近似项给用户,再走「复用现有 / 扩展现有 / 新建」三选一。(重合且强耦合应考虑并入而非新建——先对照 CLAUDE.md「正交不合并」原则,向用户说明再继续。)拿不出查重结果就直接问用户,等于把「先找已有实现」的活推给了对方。
2. 生成 SKILL.md
创建 skills/<name>/SKILL.md,frontmatter 按触发方式二选一:
- 自动触发:
description必须用「Use when …」句式描述触发场景——措辞决定 agent 能否在正确时机命中。 - 仅手动:加
disable-model-invocation: true,description改为客观描述「这个 skill 做什么」。
硬性规则:
name与目录名一致(kebab-case)。- 正文开头一句话点明定位,再给可执行的步骤/索引,保持精简。
- 不引用其它 skill 的内部文件路径——需要关联时只提对方 skill 名。
- 绝不静默覆盖:写盘前先看
skills/<name>/是否已存在;存在就展示将被覆盖的内容并要求用户明确确认,不要直接写。 - 写完立即自检,不要等 Step 4:frontmatter 是合法 YAML、
name等于目录名、description非空且符合上面二选一的句式。任一不通过,报出具体是哪一项,停下。
3. 同步 README
- 在「Skills 一览」表中按现有行格式新增一行(Skill / 性质 / 触发时机 / 作用)。
- 检查「使用 → 方式一」的
npx skills add命令块示例是否需要提及新 skill 名。 - 若新 skill 与现有 skill 有上下游关系,更新「Skill 之间的关系」图(仍然只提 skill 名)。
4. 验收
跑 /skill-check 确认全部通过,向用户汇报创建结果与文件清单。不自动提交——提交时机由用户掌控。