概述
Claude Code Skills 是一种上下文感知的指令系统, 相当于带目录的说明书. AI 使用 Skills 时, 会先把目录(元数据)加载进 Prompt, 然后根据用户 Prompt 按需加载正文和附录. 比起传统的 Prompt 或 MCP, 大幅降低 token 消耗与提示词复杂度.
核心架构
Skills 由三层结构组成:
| 层级 | 加载时机 | 作用 |
|---|---|---|
| 元数据 | 必定加载 | 提供目录和概览信息 |
| 指令 | 按需加载 | 具体的操作指导 |
| 资源 | 按需加载 | 支持文件和参考资料 |
目录结构
1 | skill-name/ |
安装配置
Claude Code 安装
1 | # Homebrew 安装 |
1 | # 使用 curl (Windows 10+) |
1 | # 使用 curl |
P.S. 配置目录统一位于 ~/.claude
账号配置
快速开始
创建第一个 Skill
1 | # 1. 创建项目目录 |
编写 SKILL.md
e.g. 创建一个基础的 Skill:
1 | --- |
添加资源文件
1 | # 创建 scripts 目录 |
作用范围
项目级生效
Skills 存放在项目的 .claude/skills/ 目录下:
1 | project-root/ |
仅对当前项目生效.
全局生效
将调试好的 skill 复制到全局目录:
1 | cp -r .claude/skills/my-first-skill ~/.claude/skills/ |
P.S. 全局 skills 对所有项目可用, 建议将通用技能 (如 coding standards, git workflows) 放在全局目录.
核心功能
自动加载机制
Claude Code 按以下顺序加载 Skills:
flowchart TD
A[用户请求] --> B[加载所有 Skill 元数据]
B --> C{匹配相关 Skill}
C -->|匹配成功| D[加载完整 Skill 内容]
C -->|无匹配| E[仅使用基础能力]
D --> F[加载相关资源文件]
F --> G[执行任务]
元数据格式
SKILL.md 必需的 YAML frontmatter:
1 |
|
资源目录说明
| 目录 | 用途 | 示例 |
|---|---|---|
scripts/ |
可执行脚本 | Python, Bash, Node.js 脚本 |
references/ |
参考文档 | API 文档, 最佳实践指南 |
assets/ |
输出资源 | 模板, 图标, 配置文件 |
进阶用法
Skill 模板
e.g. 完整的 TypeScript 项目 Skill:
1 | --- |
Commit 规范
使用 Conventional Commits:
feat:- 新功能fix:- Bug 修复chore:- 构建/工具变动docs:- 文档更新refactor:- 代码重构test:- 测试相关
工作流
添加新组件
- 创建组件文件
src/components/ComponentName.tsx - 创建测试文件
src/components/__tests__/ComponentName.test.tsx - 从
src/components/index.ts导出
运行测试
1 | npm test |
1 | ### 从 Git 历史提取 Skill |
Claude 会分析 commit 历史, 生成符合项目实际的 Skill 文件.
P.S. 生成的 Skill 保存在 ~/.claude/skills/learned/ 目录.
最佳实践
Skill 设计原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 单一职责 | 每个 Skill 专注一个领域 | 分离 “git-workflow” 和 “testing” |
| 明确触发 | description 清晰说明使用场景 | “当创建 PR 时使用” |
| 渐进加载 | 核心指令在 SKILL.md, 详情在 references/ | API 参考放 references/ |
| 版本管理 | 使用 version 追踪变更 | 从 1.0.0 → 1.1.0 |
命名规范
- 使用 kebab-case:
api-integration,git-workflow - 描述性名称:
typescript-react-patterns(而非ts-patterns) - 避免过宽的名称: 不要用
helpers,utils
内容组织
1 | --- |
在其它 IDE 中使用
CodeX
步骤 1: 编辑 ~/.codex/config.toml:
1 | [features] |
步骤 2: 将 .claude 目录重命名为 .codex:
1 | mv .claude .codex |
Cursor
Cursor 原生支持 Claude Code Skills, 无需额外配置.
Windsurf
Windsurf 支持 Skills, 需要配置 .windsor/skills/ 目录.
常见问题
Q1: Skill 没有被加载?
检查清单:
- [ ] SKILL.md 是否有正确的 YAML frontmatter
- [ ] skill 目录是否在
.claude/skills/下 - [ ] description 是否清晰描述使用场景
调试方法:
1 | # 查看已加载的 skills |
Q2: 如何测试 Skill?
在项目目录下, 直接向 Claude 提出相关请求, 观察是否使用了 Skill:
1 | claude |
Q3: 资源文件如何被引用?
在 SKILL.md 中使用相对路径引用:
1 | ## 示例代码 |
Q4: 如何分享 Skills?
- 将 skill 目录发布到 GitHub
- 提交到 Awesome Claude Skills
- 其他人可以克隆到
.claude/skills/目录
Q5: Skill 与 MCP 的区别?
| 特性 | Skills | MCP |
|---|---|---|
| 用途 | 指令和最佳实践 | 扩展工具能力 |
| 加载 | 渐进式按需加载 | 服务常驻 |
| Token 消耗 | 低 (仅加载元数据) | 高 (完整工具定义) |
| 适用场景 | 编码规范, 工作流 | API 调用, 数据库操作 |
P.S. Skills 和 MCP 可以配合使用: Skills 提供指导, MCP 提供工具能力.
Skills 生态
社区资源
安全注意事项
⚠️ 风险评估
- Skills 可以执行系统命令 (通过 scripts/)
- 可能访问敏感文件 (通过 assets/)
- 建议审查社区分享的 Skills
✅ 最佳实践
- 仅从可信来源获取 Skills
- 审查 SKILL.md 和 scripts/ 内容
- 使用沙箱环境测试新 Skills
- 定期更新已安装的 Skills





