用途
Skill Development 用于指导为 Claude Code 插件创建有效的技能(skills)。技能是模块化、自包含的包,通过提供专门的知识、工作流与工具来扩展 Claude 的能力,可被视为面向特定领域或任务的“入门指南”,把通用型智能体转为具备程序性知识的专用智能体。
主要能力
- 说明技能的构成:必需的 SKILL.md(含 YAML frontmatter 元数据与 Markdown 指令)以及可选的捆绑资源目录 scripts/、references/、assets/。
- 说明技能能提供:专门工作流、工具集成、领域专长(公司知识、schema、业务逻辑)、捆绑资源,以及生成 HTML/交互式可视化的可视化输出脚本。
- 解释技能优先级:企业(托管设置)最高,其次个人(~/.claude/skills/)、项目(.claude/skills/),插件技能优先级最低;并建议使用独特、最好带命名空间的名称(插件系统会自动命名为 plugin-name:skill-name)以避免与用户或项目技能冲突。
- 解释技能与命令的统一机制:二者共享同一底层机制(Skill tool)。简单提示且无捆绑资源时使用 commands/foo.md;需要脚本、引用或示例的复杂工作流使用 skills/foo/SKILL.md。两者都支持 $ARGUMENTS、[BANG] bash 执行与 frontmatter 字段,技能额外提供捆绑资源与渐进式披露。
使用方式
结构与元数据
每个技能包含必需的 SKILL.md 与可选捆绑资源。frontmatter 中 name 与 description 为必填;name 与 description 决定 Claude 何时使用该技能,应具体说明技能做什么、何时使用,并使用第三人称写法(例如 “This skill should be used when...”,而非 “Use this skill when...”)。
可选 frontmatter 字段包括:
- allowed-tools:限制技能激活时 Claude 可用的工具(如 Read, Grep, Glob);适用于只读技能、安全敏感工作流、范围受限技能;指定后 Claude 无需许可即可仅使用所列工具,省略则遵循标准权限模型。
- context:控制上下文加载方式。fork 表示在子智能体中运行(独立上下文)以保留主智能体上下文;未指定则在主智能体上下文运行(默认)。大型引用文件、可能污染主上下文、希望隔离的昂贵操作适合 fork。
- agent:当设置 context: fork 时指定处理该技能的智能体类型,可选 Explore(快速探索代码库)、Plan(实现规划的架构智能体)、general(通用,context: fork 时的默认值)。
- skills:把其他技能加载到 fork 的智能体上下文,需要 context: fork,且只能加载同一插件中的技能。
- user-invocable:控制技能是否出现在斜杠命令菜单,默认 true。该字段仅控制斜杠菜单可见性,不影响 Skill tool 访问与自动发现;Claude 仍可编程调用并基于上下文发现使用。适用于 Claude 应自动使用但用户不应直接调用的技能。
- disable-model-invocation:阻止 Claude 通过 Skill tool 以编程方式调用技能,默认 false。适用于仅应由用户手动调用的技能,例如需要人工判断的破坏性操作、需要用户输入的交互式工作流、审批流程。
- model:覆盖处理该技能的模型,可选 sonnet、opus、haiku、inherit(默认)或完整模型 ID。快速/低成本技能用 haiku,需要最大能力的复杂推理由 opus;默认 inherit 使用当前会话模型。
- hooks:定义仅在技能使用期间激活的限定作用域 hooks,结构与 hooks.json 相同但生命周期绑定到技能。支持事件:PreToolUse、PostToolUse、Stop。
- argument-hint:为 / 菜单提供该技能预期参数的自动补全提示文本,纯展示用途,不影响参数解析。
可见性对照:user-invocable: true(默认)在斜杠菜单可见、Skill tool 允许、自动发现是;user-invocable: false 隐藏、允许、是;disable-model-invocation: true 可见、阻止、是。
捆绑资源
- scripts/:需要确定性可靠性或反复重写的可执行代码(如 Python/Bash);好处是节省 token、确定性强,可不加载进上下文即执行。
- references/:按需加载进上下文的文档与参考材料(如数据库 schema、API 规范);若文件很大(>10k 词),应在 SKILL.md 中包含 grep 搜索模式;信息应只存在于 SKILL.md 或 references 之一,避免重复。
- assets/:不加载进上下文、而用于 Claude 产出输出的文件(如品牌资源 logo.png、模板 slides.pptx)。
动态内容
支持字符串替换:$ARGUMENTS(调用时传入的参数)、$ARGUMENTS[0]/$ARGUMENTS[1](从零开始的位置参数)以及 $1、$2 等 1 起始简写、${CLAUDE_SESSION_ID}(当前会话标识)、${CLAUDE_PLUGIN_ROOT}(插件目录路径)。
支持动态上下文注入:使用 [BANG]command 语法执行命令并把输出注入技能上下文,用于加载当前项目状态(git status、package.json)、包含动态配置、获取环境相关信息;命令在用户环境中执行,只应使用可信命令。
渐进式披露与上下文管理
技能采用三级加载:元数据(name + description)始终在上下文(约 100 词);SKILL.md 正文在技能触发时加载(<5k 词);捆绑资源按需加载(脚本可不读入上下文即执行,故视为不限)。Claude Code 通过 SLASH_COMMAND_TOOL_CHAR_BUDGET 为技能描述分配约 2% 上下文窗口(或约 16KB 回退);所有已安装技能描述总长超出预算时,部分技能可能被排除在自动发现之外,因此描述应简洁、把细节放入 SKILL.md 正文与 references。 技能应设计为可自动压缩后重新发现:压缩后描述仍在(作为工具定义而非对话内容),先前调用的 SKILL.md 完整内容可能被压缩掉,用户可再次调用以重新加载;插件可用 PreCompact hook 在压缩前保存关键状态。所有插件的技能描述共享同一可见性预算,应写简洁且含关键词的描述。
创建流程
六个步骤:理解技能(通过用户问题与反馈收集具体使用示例);规划可复用内容(分析示例确定有用的脚本、引用、资源);创建结构(mkdir -p skills/skill-name/{references,examples,scripts});编辑技能(写 SKILL.md 的 frontmatter 与祈使句正文,创建捆绑资源);验证与测试(检查结构、触发词、写作风格与渐进式披露);迭代(依据真实使用与反馈改进)。 写作要点:描述用第三人称并含具体触发词;正文用祈使/不定式(“To create X, do Y”),不用第二人称;目标 1,500–2,000 词,细节移至 references。
插件中的技能
插件技能位于插件 skills/ 目录下(my-plugin/skills/my-skill/ 等)。Claude Code 自动发现:扫描 skills/ 目录,找到含 SKILL.md 的子目录,始终加载技能元数据,触发时加载 SKILL.md 正文,需要时加载 references/examples。插件技能随插件分发,无需单独打包 ZIP。测试可在本地安装插件:claude --plugin-dir /path/to/plugin,然后提出应触发该技能的问题并验证加载正确。 文档还以本插件中的 hook-development、agent-development、plugin-settings 技能作为示例。
适用场景
- 为 Claude Code 插件创建新技能、把技能加入插件。
- 编写新技能、改进技能描述、组织技能内容。
- 设计技能 frontmatter(工具限制、子智能体、模型覆盖、scoped hooks 等)。
- 规划渐进式披露、控制上下文与描述可见性预算、处理压缩后的重新发现。
- 按检查清单验证与测试技能是否按预期触发。
限制
文档给出的是编写与组织规范,未提供独立定价、收费模式、平台可用性或效果保证等信息;这些内容暂未提供。技能描述的可见性受上下文预算影响,超预算可能被排除在自动发现之外;context: fork 下 skills 只能加载同一插件中的技能;hooks 支持的事件限于 PreToolUse、PostToolUse、Stop;动态注入命令在用户环境执行,存在需谨慎使用可信命令的安全注意点。