Claude Code 开箱即用已经很强,但真正让它变成「你的」工具的方法是自定义 Skill。我在日常工作中积累了 30+ 个 Skill,覆盖编码工作流、内容创作、context 管理等场景。这篇教程把我踩过的坑和验证过的模式全部摊开,带你从零搭出第一个可用的 Skill。
什么是 Skill?
Skill 是 Claude Code 的模块化能力扩展。每个 Skill 本质上是一个 Markdown 文件,里面写着 Claude 在特定场景下应该遵循的指令、流程和约束。
跟直接在对话里贴一大段 prompt 不同,Skill 的优势在于:
- 按需加载 — 只在触发时才占用 context window,不浪费 token
- 可复用 — 写一次,所有项目都能用
- 可分享 — 团队成员或社区可以直接复制你的 Skill 文件
- 可迭代 — 每次使用后根据输出质量调优,Skill 会越来越好
1. Skill 文件结构
一个 Skill 由一个目录和一个 SKILL.md 文件组成:
目录结构.claude/
skills/
my-first-skill/
SKILL.md # Skill 主文件
coding-workflow/
SKILL.md
xiaohongshu-copy/
SKILL.md
Claude Code 会在两个位置查找 Skills:
- 项目级:
<project-root>/.claude/skills/— 只在当前项目生效 - 用户级:
~/.claude/skills/— 所有项目都能用
SKILL.md 的核心结构是 YAML frontmatter + Markdown 指令:
SKILL.md 基本结构---
name: my-skill-name
description: 一句话说清这个 Skill 干什么、什么时候触发
---
# Skill 标题
## 触发条件
当用户要求 XXX 时使用本 Skill。
## 执行流程
1. 第一步做什么
2. 第二步做什么
3. 第三步做什么
## 输出格式
- 格式要求 A
- 格式要求 B
## 示例
(给 Claude 看的输入输出示例)
两个字段最关键:
name— Skill 的唯一标识,用户通过/skill-name手动调用description— Claude 用来自动判断是否触发的依据,后面会详细讲
2. 创建你的第一个 Skill
动手比看文档有用。我们来做一个「Git 提交规范化」Skill — 让 Claude 每次帮你写 commit message 时遵循固定格式。
Step 1: 创建目录
mkdir -p .claude/skills/git-commit-style
Step 2: 编写 SKILL.md
.claude/skills/git-commit-style/SKILL.md---
name: git-commit-style
description: 规范化 Git commit message 格式。当用户要求提交代码、
创建 commit、写 commit message 时使用。触发词:提交、commit、
git commit。
---
# Git Commit Style Guide
## 格式规范
所有 commit message 必须遵循以下格式:
```
<type>(<scope>): <subject>
<body>
```
### type 可选值
- feat: 新功能
- fix: 修复 bug
- refactor: 重构(不改功能、不修 bug)
- docs: 文档变更
- style: 代码格式(不影响逻辑)
- test: 增加测试
- chore: 构建/工具链变更
### scope
用模块名或文件名,例如:auth、api、ui
### subject
- 中文或英文均可,保持项目一致性
- 不超过 50 字符
- 不加句号
## 执行要求
1. 先运行 `git diff --staged` 查看变更
2. 根据变更内容选择 type
3. 写出 commit message 并展示给用户确认
4. 用户确认后执行 `git commit`
## 示例
输入:用户说"帮我提交一下"
输出:
```
feat(auth): 添加 OAuth2 登录支持
- 集成 Google OAuth2 provider
- 新增 /api/auth/callback 端点
- 添加 session token 生成逻辑
```
Step 3: 测试
在 Claude Code 中修改一些代码,然后说「帮我提交」。观察 Claude 是否自动使用了你的 commit 格式。如果没有触发,检查 description 是否包含了你说的关键词。
/git-commit-style 手动调用,确认 Skill 内容被正确加载后,再测试自动触发。
3. 实战案例 — 从 30+ Skills 中精选
光看模板学不到设计思路。下面三个是我实际使用的 Skill,每个代表一种典型模式。
统一编码工作流 — 强制分支开发 + 测试 + 提交标准
设计动机:Claude Code 默认会直接在当前分支改代码,没有分支隔离。当你同时做多个任务时很容易搞乱。这个 Skill 强制 Claude 走「分支 → 开发 → 测试 → 提交」的标准流程。
frontmatter 片段---
name: coding-workflow-default
description: Unified default skill for all programming tasks.
Use by default for any coding, debugging, refactor, release,
or project setup task.
---
指令核心要点:
- 任何代码变更必须在新分支上进行
- 提交前必须运行测试
- commit message 遵循 Conventional Commits
- 完成后提示用户创建 PR 或合并
关键设计决策:description 写了 Use by default for any coding task,这意味着几乎所有编码相关的对话都会触发。这是有意为之 — 编码工作流应该是全局默认行为,不需要用户记得去调用。
生成小红书爆款文案(标题 + 正文 + 标签)
设计动机:小红书文案有一套独特的语感和结构 — 标题要有数字和情绪词,正文要口语化但不低质,标签要覆盖搜索词。每次跟 Claude 解释这些规则太烦了,写成 Skill 一劳永逸。
frontmatter 片段---
name: xiaohongshu-copywriting
description: 为商品生成爆款小红书风格文案(标题+正文+标签)
---
指令核心要点:
- 标题公式:数字 + 痛点/好奇 + 品类词,控制在 20 字以内
- 正文结构:hook → 痛点 → 解决方案 → 使用感受 → CTA
- 语气约束:像朋友聊天,禁止「首先其次最后」结构
- 标签要求:5-8 个,包含大词 + 长尾词 + 场景词
关键设计决策:在 Skill 内容里放了 3 个完整的「好文案 vs 坏文案」对比示例。这比写 10 条规则都有效 — Claude 从示例中学到的模式比从抽象规则中学到的更精确。
Context 快满时自动导出进度,防止信息丢失
设计动机:Claude Code 的 context window 有上限,长对话会触发 auto-compaction(自动压缩),可能丢失关键信息。这个 Skill 在 context 接近上限时,自动把当前任务状态、决策和待办导出到文件,然后 /clear 重新加载。
frontmatter 片段---
name: context-checkpoint
description: Context 管理技能。当 context 接近上限时,自动将
当前任务状态、决策和待办导出到 checkpoint 文件,然后 /clear
重新加载。防止 auto-compaction 造成关键信息丢失。
触发词:/checkpoint、context 快满了、保存进度
---
指令核心要点:
- 导出内容:当前任务描述、已完成步骤、进行中步骤、待办、关键决策
- 文件位置:
.claude/checkpoints/YYYY-MM-DD-HHMMSS.md - 恢复机制:配套的
resume-cpSkill 读取最新 checkpoint 继续工作
关键设计决策:description 中同时写了自动触发条件(「context 接近上限」)和手动触发词(「/checkpoint」)。这样 Claude 在感知到 context 压力时会主动提议保存,用户也能随时手动触发。
4. Skill 设计最佳实践
写了 30+ 个 Skill 之后,以下是我验证过的设计原则:
单一职责
一个 Skill 只做一件事。如果你发现自己在一个 Skill 里塞了「代码审查 + 提交 + 部署」三个流程,拆成三个 Skill。原因:Claude 对焦点清晰的指令执行力远好于大杂烩。
description 是灵魂
description 决定了 Claude 什么时候自动触发这个 Skill。写法要覆盖三个维度:
- 功能描述 — 这个 Skill 做什么
- 触发场景 — 用户说了什么话时应该触发
- 反例(可选) — 什么情况下不应该触发
好的 description 示例description: 生成小红书风格文案。当用户提到"小红书"、"文案"、
"标题"、"爆款"、"种草"时触发。当用户只是讨论小红书平台趋势
或运营策略时不触发 —— 只在需要实际生成文案时激活。
放示例,不堆规则
Claude 从具体示例中学到的模式比抽象规则精确得多。与其写 10 条排版规则,不如给 2 个好示例 + 1 个坏示例(标注为什么不好)。
控制长度
每个 Skill 控制在 500-2000 字。超过 2000 字说明你在一个 Skill 里塞了太多东西,考虑拆分。低于 500 字可能指令不够明确,Claude 会自由发挥。
迭代调优
Skill 不是写完就定稿的。每次使用后看 Claude 的输出:
- 输出符合预期 → 不动
- 某个环节总是偏 → 加一条针对性约束
- 整体方向不对 → 回到 description,可能触发条件写歪了
5. 踩坑记录
以下是我(和社区里的用户)实际踩过的坑:
目录叫
my-skill,但 frontmatter 里 name: mySkill。用户输入 /my-skill 时匹配不上。保持一致:目录名 = name 字段,用短横线分隔。
description: 帮助用户完成各种任务 — 这等于没写。Claude 不知道「各种任务」是什么,结果是永远不触发。description 要具体到使用场景和触发关键词。
有人把整本风格指南塞进一个 Skill(5000+ 字)。每次触发都消耗大量 context window,导致后续对话很快达到上限。解法:只放「Claude 做决策时必须知道的信息」,参考文档用链接指向外部文件。
description 全英文,但用户说中文。Claude 的跨语言匹配不是 100% 可靠的。如果你的用户群说中文,description 里必须包含中文关键词。比如
触发词:"小红书""文案""种草""爆款"。
两个 Skill 的 description 覆盖了同样的场景,Claude 不知道用哪个。解法:给 Skill 划清边界,在 description 里写明「本 Skill 处理 X,不处理 Y(Y 由另一个 Skill 负责)」。
总结
- Skill = Markdown 文件,放在
.claude/skills/目录下 description写得好不好直接决定 Skill 触发率- 给示例比堆规则有效;控制长度在 500-2000 字
- 先手动调用确认生效,再测试自动触发
- 从一个简单 Skill 开始,迭代出适合你工作流的 Skill 库