Skip to content

Skills 怎么写:粘贴三次就该沉下来

同一段发布清单、评审口径、迁移步骤,你已经往对话框里贴了三次,就该做成 Skill。和常驻的 CLAUDE.md 不同:技能正文默认用到才加载,适合长流程。分工见 MCP、Skills、Hooks 怎么选CLAUDE.md 别写成第二份 README

旧式 .claude/commands/deploy.md 和新式 .claude/skills/deploy/SKILL.md 都会生成 /deploy。旧文件继续可用;新写建议用 skills,能带辅助文件,也能控制谁来触发。

放哪、怎么试

位置路径范围
个人~/.claude/skills/<名>/SKILL.md本机所有项目
项目.claude/skills/<名>/SKILL.md这个仓库,可提交
插件插件内 skills/插件启用处

目录名就是命令名。最小例子:

bash
mkdir -p ~/.claude/skills/summarize-changes
yaml
---
description: 总结未提交改动并标风险。用户问改了什么、要写提交说明或看 diff 时用。
---

## Current changes

!`git diff HEAD`

## Instructions

用两三条概括上面的改动,再列出缺错误处理、硬编码、测试缺口等风险。diff 为空就说没有未提交改动。

!command`` 会在送进模型前跑命令,把输出嵌进正文。问「我改了什么」或敲 /summarize-changes 都能试。

description 决定会不会被自动叫起来。写具体场景,别写「处理文案」。单条描述加 when_to_use 在列表里大约截到 1536 字符,关键句放前面。

谁可以调用

默认你和模型都能调用。

  • disable-model-invocation: true:只有你敲 /名。适合部署、发消息、带副作用的流程。
  • user-invocable: false:只给模型当背景知识,不进 / 菜单。
yaml
---
name: deploy
description: 部署到生产环境
disable-model-invocation: true
---

按顺序部署 $ARGUMENTS:跑测试、构建、推目标、验证成功。

不想改文件时,用设置里的 skillOverrideson / name-only / user-invocable-only / off/skills 菜单里空格可切换。

常用 frontmatter

字段作用
allowed-tools本轮调用期间预批这些工具,下一条消息清空
disallowed-tools本轮临时拿掉工具
context: fork在子代理里跑;技能正文当任务提示
agentfork 时用哪种子代理
model / effort本轮模型或努力程度
paths只在匹配文件时自动激活
arguments命名位置参数,正文里 $name

项目技能的 allowed-tools 在信任工作区后才按项目规则生效;审查仓库里的技能时注意它能给自己开多大权限。$ARGUMENTS$0${CLAUDE_SKILL_DIR}${CLAUDE_PROJECT_DIR} 可做替换。

辅助材料放同目录别的 md 或 scripts/,在 SKILL.md 里链过去,主文件尽量短。技能内容进对话后会跨轮保留;权限授予不会跨你的下一条消息。

和 CLAUDE.md、Hooks 别混

短事实、每次都要知道的约定 → CLAUDE.md。多步流程、偶尔才用 → Skill。一次都不能漏 → Hooks 或 permissions.deny

发现技能太多占列表预算,跑 /skill-doctor/doctor 看成本,低频的改成 name-only 或关掉。改个人 / 项目技能目录一般当前会话就能热更新;插件侧改 hooks / MCP 可能要 /reload-plugins

Claude-cn.org,专注于 Claude Code 中文教程