创建或更新技能文档(SKILL.md 及配套文件),使其符合平台结构和最佳实践。用于用户要求创建、编写或更新技能时。
文档技能 : 写入或更新一种技能, 以适应主机的预期结构
功能概述
文档技能 : 写入或更新一种技能, 以适应主机的预期结构是一项面向实际任务的技能,主要用于使用下面的结构和清单;输入 : 目标技能 – 技能文件夹路径( 如项目技能 prac)。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
文档技能规范
编写或更新一项技能,使其符合宿主(host)所期望的结构。请使用下方提供的结构与核对清单。
输入
- 目标技能 —— 技能文件夹路径(例如项目中的技能目录
skills/example/),或技能名称。 - 源内容 —— 待转化为技能或合并进技能的草稿、用户指令或笔记。
若未提供任一输入: 使用当前上下文或已明确讨论的上下文(例如正在讨论的技能本身或其路径)。
输出
SKILL.md 文件被更新(如需,同步更新配套文件)。
流程
1. 技能目录结构
- 每个技能独占一个文件夹;主文件必须为
SKILL.md(严格大小写敏感,名称不可变更)。 - 文件夹名: 必须采用 kebab-case 格式(全小写、仅含字母、数字与短横线
-;禁止空格、下划线_或大写字母)。Frontmatter 中的name字段值必须与该文件夹名完全一致。 - 技能存放位置: 在项目中,通常位于专用的 skills 目录下(例如
skills/)。宿主会从该路径自动发现技能,即使该路径嵌套在子包内(如 package 内部)。/ - 仅允许以下可选子目录: scripts/(存放可执行代码)、references/(按需加载的文档材料)、assets/(模板、图标等资源)。禁止在技能文件夹内放置
README.md;所有说明性内容应统一置于SKILL.md或references/中。长篇参考材料应放入references/并在SKILL.md中链接(渐进式披露)。 - 长度限制:
SKILL.md应控制在约 5000 字以内。长篇参考资料请移入references/并通过链接引用。 - 渐进式披露(Progressive disclosure): 技能采用三级加载机制:(1) YAML frontmatter 始终加载,使助手能判断何时启用该技能;(2)
SKILL.md正文仅在技能相关时加载;(3)references/或assets/中的文件仅在实际需要时打开。此举可在保障专业能力可用的前提下,最小化 token 消耗。 - 可组合性(Composability): 多项技能可同时加载并协同工作。请确保所写技能能与其他技能共存,切勿假设其为唯一激活的技能。
2. SKILL.md 格式规范
Frontmatter(首尾以 --- 包裹的 YAML 区块)
Frontmatter 定义技能的触发时机与运行方式。下表遵循官方技能参考文档。
name 与 description 为必填字段。name 必须与文件夹名(kebab-case)完全一致。description 应严格遵循格式:[功能描述] + [适用场景] + [核心能力],总长度不超过 1024 字符;禁止使用 XML 尖括号(< >)。避免模糊表述(如“辅助项目工作”);需包含具体触发短语,并在必要时注明文件类型(例如“.fig 文件”、“PDF 合同审查”)。
| 字段 | 是否必需 | 说明 |
|---|---|---|
name |
是 | 仅允许 kebab-case;必须与技能文件夹名一致。仅允许小写字母、数字与短横线(最大长度 64 字符)。 |
description |
是 | [功能描述] + [适用场景] + [核心能力]。需包含触发短语(例如“当用户说 save 或 /save 时使用”)。如涉及特定文件类型,请明确指出。总长度不超过 1024 字符;禁止出现 < 或 >。 |
argument-hint |
否 | 自动补全时显示的参数提示。示例:[issue-number] 或 [filename] [format]。 |
disable-model-invocation |
否 | 设为 true 可禁用自动加载;适用于需手动通过 /name 触发的工作流。默认值:false。 |
user-invocable |
否 | 设为 false 可将其从 / 菜单中隐藏。适用于仅供后台知识调用、不应由用户直接触发的技能。默认值:true。 |
allowed-tools |
否 | 当该技能处于激活状态时,助手可无需请求权限即可使用的工具列表。 |
model |
否 | 该技能激活时指定使用的模型。 |
context |
否 | 设为 fork 可在 forked 子代理(subagent)上下文中运行。 |
agent |
否 | 当设置 context: fork 时,指定使用的子代理类型。 |
hooks |
否 | 限定于本技能生命周期的钩子(hook)。配置格式详见《技能与代理中的 Hooks》。 |
可选字段: license(例如开源项目使用 MIT)、compatibility(1–500 字符:产品依赖、系统依赖、网络要求等)、metadata(例如作者、版本号、mcp-server 等)。详见完整技能指南。
安全要求: Frontmatter 中禁止出现 XML 尖括号(< >)。技能名称中避免使用保留字(如宿主或厂商名称)。
YAML 注意事项: 避免在字段值中使用冒号(:),否则可能被误解析为新字段键。建议改用类似 “Scope is” 的表达,而非 “Scope:”。
内容类型
- 参考型内容(Reference content) —— 约定、模式、风格规范等。助手会在你当前工作中内联应用这些规则,无需显式调用控制。
- 任务型内容(Task content) —— 针对某项具体操作(部署、提交、代码生成等)的分步指令。常通过
/skill-name直接调用。建议设置disable-model-invocation: true以禁用自动加载。
正文结构(每项技能均须保持相同顺序)
为便于快速扫描,所有技能正文须严格遵循以下节标题顺序:
- # 标题 —— H1 级标题即技能名,后接一句简短介绍(说明其作用)。
- ## 输入 —— 技能所需内容(用户输入、路径、选项等)。各项编号列出;若无要求,标注为 “None” 或 “Optional”。
- ## 输出 —— 技能执行结果(如生成一个文件、触发某种行为、移交至其他模块等)。用一段简短文字概括。
- ## 流程 —— 实现方法。使用编号步骤或子章节(如 “### 1. 步骤名称”)。所有操作指南与规则均放在此处。务必具体、可执行(例如:“运行
python scripts/validate.py --input {filename}”,而非“验证数据”)。需涵盖常见错误的处理方式;必要时引用配套文件(例如:“查询前请先查阅references/api-patterns.md”)。 - ## 示例 —— 可选但强烈推荐。列举典型场景:“用户说 X → 执行动作 → 结果”。
- ## 故障排查 —— 可选但强烈推荐。格式为:错误现象或症状 → 原因 → 解决方案。
- ## 参考 —— 可选。链接至相关技能或外部文档。
仅当某节内容确实完全不适用时才可跳过。不确定时,请至少包含 输入、输出、流程 和 参考 四节;并在有助于理解时补充 示例 与 故障排查。整体布局须与仓库中其他技能保持一致。
正文中的变量替换(Substitutions)
依据官方文档定义:
$ARGUMENTS—— 调用技能时传入的所有参数。若正文中未显式使用该变量,则参数将自动追加为ARGUMENTS:形式。$ARGUMENTS[N]或$N—— 第 N 个参数(索引从 0 开始)。${CLAUDE_SESSION_ID}—— 当前会话 ID(由宿主定义)。${CLAUDE_SKILL_DIR}—— 包含该技能SKILL.md文件的目录路径(由宿主定义)。
关于如何在技能运行前注入 Shell 命令输出,请参阅《注入动态上下文》。
3. 编写或更新技能时的核对清单
- Frontmatter:
description须严格遵循[功能描述] + [适用场景] + [核心能力]格式,且内容具体(包含用户可能说出的短语,例如“当用户说 save 或 /save 时使用”)。name须与技能文件夹名一致。对于任务型或具副作用的技能,请按官方文档要求设置disable-model-invocation: true。 - 节标题顺序: 必须为:输入 → 输出 → 流程 → (可选)示例 → (可选)故障排查 → (可选)参考。顺序须与其他技能完全一致。
- 长度控制:
SKILL.md总行数应少于 500 行;长篇参考资料请移至其他文件,并在SKILL.md中链接(渐进式披露)。 - 配套文件: 若使用了
scripts/、references/或assets/,须在SKILL.md中明确说明,并指出加载时机。保持SKILL.md聚焦核心说明;长篇或细节类文档请放入references/并建立链接。 - 参数引用: 如技能接受输入,请使用
$ARGUMENTS或$N,并视情况添加argument-hint。 - 调用控制: 合理使用
disable-model-invocation和/或user-invocable,确保技能在预期场景下运行(参见《控制谁可调用技能》)。
4. 执行步骤
- 读取目标技能路径及任何源内容。
- 应用上述核对清单与结构规范。除非用户明确要求,否则不得更改技能原有行为。
- 编写或更新
SKILL.md(如需,同步更新配套文件)。仅记录技能实际具备的能力;禁止添加尚未实现的功能。
示例
用户说: “创建一个用于验证 CSV 上传的技能。”
操作: 创建文件夹 skills/validate-csv/(或项目指定的技能路径;注意 kebab-case)。添加 SKILL.md 并填写必需的 frontmatter(name: validate-csv;description 须符合 [功能描述] + [适用场景] + [核心能力] 格式,例如:“验证 CSV 上传。当用户说 validate CSV、check upload 或 /validate-csv 时使用。核心能力:Schema 校验、编码自动识别。”)。依次添加 输入、输出、流程、可选的 参考。若技能需运行脚本,请添加 scripts/validate.sh 并在 流程 中引用。
结果: 新建技能可响应所述触发短语;若该技能属于某个流程,协调器(coordinator)与相关流程也将自动更新。
用户说: “更新 save 技能,使其提及 update-gitignore。”
操作: 打开 save 技能的 SKILL.md(例如 skills/save/SKILL.md)。在 流程 中添加新步骤或引用。若触发短语发生变更,请同步更新 description。若 Save 流程有改动,还需同步更新协调器(coordinator)与 references/coordinator-flows.md。
故障排查
Frontmatter 无效 / 上传失败。
原因:YAML 格式错误(缺少 --- 分隔符、引号未闭合、或字段值中冒号被误识别为新字段键)。
解决方案:确保 frontmatter 完全位于两个 --- 行之间;描述文本中避免使用冒号,改用 “Use when” 而非 “When:”;frontmatter 中禁止出现 < 或 >。
技能未触发。
原因:description 过于模糊,或未完整包含三要素公式(功能描述、适用场景、核心能力),或缺失明确触发短语。
解决方案:严格使用 [功能描述] + [适用场景] + [核心能力] 格式,并加入具体触发短语(例如“当用户说 X、Y 或 /skill-name 时使用”)。若该技能属于某个流程,这些短语也应出现在协调器流程表中。调试建议: 向助手提问:“你会在什么情况下使用 [技能名] 技能?”,根据其回答中缺失的部分调整 description。
技能触发过于频繁。
原因:description 描述范围过宽,或与其他技能存在重叠。
解决方案:添加否定性触发条件(例如“切勿用于简单数据探索;请改用 data-viz 技能”)。收窄适用范围(例如“专用于 PDF 法律合同审查”,而非“处理文档”)。明确说明不适用场景(例如“仅限在线支付工作流,不适用于通用金融查询”)。
文件夹名错误。
原因:文件夹名含空格、下划线或大写字母。
解决方案:重命名为 kebab-case 格式;同步更新 SKILL.md 中的 name 字段;更新所有引用位置(协调器、代理、README、package.json、检查清单脚本、agents/references/ 等)。
编写完成后
- 协调器同步: 若修改了 description(例如“适用场景”或“核心能力”部分,使其更贴合用户请求),且该技能属于某个流程,请同步更新协调器代理(coordinator agent)及
references/coordinator-flows.md中的流程步骤,确保流程表与代理描述保持一致。 - 重命名/移动: 若技能被重命名或移动(例如
generate-figma→designer-figma),请更新所有引用位置:协调器、代理、README、package.json、其他技能中对该技能的链接、verify-task 检查清单脚本、agents/references/(例如若该技能出现在某个流程中,则需更新coordinator-flows.md)、以及.gitignore。
参考
官方技能参考文档 —— 包含 frontmatter 字段说明、调用权限控制、子代理运行方式、变量替换语法等。协调器(Coordinator)— 流程表与代理描述须遵循 [功能描述] + [适用场景] + [核心能力] 公式,并与用户实际说出的短语保持一致。
完整技能构建指南 —— 渐进式披露机制、description 公式详解、优秀/反面示例、可选 frontmatter 字段、触发逻辑与故障排查、最佳实践等。
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
最新文章