Claude Code Skills 才是未来

概述

Skills 是 Claude Code 的扩展机制,通过简单的 Markdown 文件向 Claude 添加自定义能力。本文档介绍 Skills 的核心特性、安装方法、编写规范,以及为什么 Skills 比 MCP 更适合编码工作流程的编排和知识封装。

Skills 扩展机制
Skills 核心优势

Skills 通过 Markdown 文件定义工作流程和领域知识,无需编程基础,Git 提交即可团队共享,是 Prompt 工程的最佳载体。

Skills 简介

Skills 是 Claude Code 的扩展机制,通过 SKILL.md 文件向 Claude 添加自定义能力。

核心特性:

特性说明
自动发现Claude 根据描述判断何时使用 Skill
手动调用使用 /skill-name 直接触发
开放标准遵循 Agent Skills 规范,跨工具通用

典型场景:

  • 定义团队代码规范,Claude 自动遵循
  • 封装重复任务,如组件生成、PR 审查
斜杠命令

原有的 .claude/commands/ 已合并到 Skills 系统,旧文件继续有效。

安装位置

Skill 存放位置决定其作用范围:

位置路径作用范围
个人~/.claude/skills/<name>/SKILL.md所有项目
项目.claude/skills/<name>/SKILL.md当前项目

目录结构:

my-skill/
├── SKILL.md           # 主文件(必需)
├── template.md        # 模板文件(可选)
└── scripts/
    └── helper.sh      # 辅助脚本(可选)
嵌套发现

在子目录工作时,Claude 自动发现该目录下的 .claude/skills/,适用于 monorepo 项目。

SKILL.md 格式

SKILL.md 由两部分组成:YAML frontmatter 和 Markdown 内容。

---
name: review-code
description: 审查代码变更,检查规范和潜在问题
---

审查代码时遵循以下步骤:

1. 检查代码风格是否符合项目规范
2. 识别潜在的性能问题
3. 验证错误处理是否完整
4. 给出改进建议

Frontmatter 参数:

参数说明
nameSkill 名称,成为 /name 命令
description用途描述,Claude 据此判断何时使用
disable-model-invocation设为 true 禁止自动调用,仅手动触发
user-invocable设为 false 从菜单隐藏,仅 Claude 内部使用
allowed-tools限制可用工具,如 Read, Grep, Glob
context设为 fork 在独立子代理中运行
参数说明

通过 frontmatter 参数可以精确控制 Skill 的触发方式、可用工具和执行环境,确保 Skill 按预期工作。

参数传递:

使用 $ARGUMENTS$0$1 获取调用参数:

---
name: fix-issue
description: 修复 GitHub Issue
---

修复 Issue #$0,遵循项目编码规范。

调用 /fix-issue 123 时,$0 替换为 123

参数引用

通过 $0$1$2 等变量可以在 Skill 中引用调用参数,实现灵活的参数化 Skill。

实用示例

创建 ~/.claude/skills/commit/SKILL.md

---
name: commit
description: 规范化 Git 提交
disable-model-invocation: true
---

执行 Git 提交:

1. 运行 `git status` 查看变更
2. 分析变更内容,生成符合 Conventional Commits 的提交信息
3. 格式:`<type>(<scope>): <description>`
4. type 可选:feat, fix, docs, refactor, test, chore
5. 执行提交
手动触发

disable-model-invocation: true 确保只能通过 /commit 手动触发,避免误触发。

安装与共享

安装在用户目录下,对所有项目生效:

mkdir -p ~/.claude/skills/my-skill
# 创建 SKILL.md 后立即生效

适用场景:

  • 个人常用的工作流程
  • 跨项目的通用技能
  • 个人编码习惯和偏好

验证安装:

在 Claude Code 中输入:

/my-skill

或询问 Claude:

有哪些可用的 Skills?

Skills 市场

社区提供了多个 Skills 市场,可直接安装现成的 Skill。

skills.sh 官方市场:

Vercel 推出的官方 CLI 工具和市场,支持多种 AI 代理工具。

# 安装 Skill
npx skills add <package-name>

浏览市场:https://skills.sh

支持的工具:Claude Code、Cursor、GitHub Copilot、Codex、Windsurf 等。

Skills 生态

skills.sh 市场汇集了社区贡献的大量高质量 Skills,涵盖代码审查、测试生成、部署自动化等多个领域。

使用 skill-creator 创建 Skills

Anthropic 官方提供了 skill-creator Skill,让 Claude 帮你编写高质量的 Skills。

安装:

npx skills add https://github.com/anthropics/skills --skill skill-creator

使用步骤:

1
描述需求

告诉 Claude 你想创建什么 Skill:/skill-creator 我想创建一个代码审查的 Skill

2
Claude 生成初版

Claude 会根据 skill-creator 的指导,生成符合规范的 SKILL.md 文件。

3
实际验证

使用生成的 Skill 执行真实任务,观察效果。

4
迭代优化

根据使用中发现的问题,让 Claude 帮你修改和完善。

自举能力

skill-creator 是 Skills 自举能力的体现,用 Skill 来创建 Skill,降低了编写门槛。

Skills vs MCP

Skills 和 MCP 代表了两种不同的 AI 扩展哲学。MCP 专注于连接外部系统,而 Skills 专注于编码工作流程和领域知识。

对比分析:

维度SkillsMCP
核心定位任务流程编排外部系统连接
实现方式Markdown 文件服务器程序
技术门槛几乎为零需要开发能力
可移植性跨平台通用需适配不同客户端
维护成本文本编辑即可需要开发能力

MCP 最大的痛点是上下文占用。社区反馈显示,连接 4 个 MCP 服务器可能消耗 67,000 tokens,占据 50% 以上的上下文窗口。

MCP 上下文开销

MCP 服务器启动时会将所有工具定义注入上下文,无论是否使用这些工具,都会持续占用大量 Token。

MCP 上下文占用:

MCP 服务器数量预估 Token 消耗
1-2 个10,000-20,000
3-5 个30,000-50,000
5+ 个50,000+

Skills 的优势:

  • 消除重复上下文:MCP 每次调用都是无状态的,Claude 不会"记住"你的偏好。Skills 将工作流程固化为文件,无需每次对话都重复解释项目规范、编码风格、审查标准。

  • 零基础设施依赖:MCP 需要运行服务器进程,涉及端口、认证、进程管理等运维问题。Skills 只是文件夹里的 Markdown,Git 提交即分发,团队成员自动同步。

  • Prompt 工程的最佳载体:Skills 本质是"prompt-based meta-tool",将专家经验编码为可复用的指令集。相比 MCP 的工具调用,Skills 更贴近 LLM 的原生工作方式。

  • 开放标准的胜利:Anthropic 已将 Agent Skills 发布为开放标准,VS Code、Cursor、GitHub Copilot 等主流工具均已支持。这意味着你写的 Skill 可以在任何兼容的 AI 编辑器中使用。

跨平台兼容

基于开放标准的 Skills 可以在多个 AI 编辑器中使用,一次编写,多处运行,大大提升了投资回报率。

协作模式:

两者并非互斥,而是互补:

flowchart LR
    A[Skills] --> B[定义工作流程]
    B --> C[调用 MCP 工具]
    C --> D[执行外部操作]
  • Skills 负责"怎么做":定义审查流程、部署步骤、代码规范
  • MCP 负责"做什么":连接数据库、调用 API、操作文件系统
最佳实践

用 Skills 编排工作流,用 MCP 连接外部能力。Skills 是大脑,MCP 是双手。

Skills 包装 MCP:

以 Context7 文档查询为例,创建 ~/.claude/skills/context7/SKILL.md

---
name: context7
description: 查询第三方库的最新文档和代码示例
disable-model-invocation: true
---

使用 MCPorter 调用 Context7 MCP 查询文档:

## 步骤

1. 解析库 ID:`npx mcporter call context7.resolve-library-id libraryName:$0`
2. 查询文档:`npx mcporter call context7.get-library-docs context7CompatibleLibraryID:<library-id> topic:$1`

## 示例

查询 Spring Boot 的 WebFlux 文档:

/context7 spring-boot webflux

执行命令:
npx mcporter call context7.resolve-library-id libraryName:spring-boot
npx mcporter call context7.get-library-docs context7CompatibleLibraryID:/spring-projects/spring-boot topic:webflux

效果对比:

方式上下文占用调用方式
MCP 直连~15,000 tokens自动注入工具定义
Skills + MCPorter~200 tokens按需执行 CLI 命令
大幅降低开销

通过 /context7 react hooks 调用时,Claude 只需执行 bash 命令获取结果,无需预加载 Context7 的完整工具定义,Token 消耗降低 98%。