用了一段时间 Claude Code 之后,很多人都会遇到同一个困惑:
- Skills 和插件到底什么关系?
- 为什么安装了
frontend-design插件,却是通过/frontend-design这个 Skill 调用- 平时直接和 Claude 对话就能完成开发,那这些扩展机制到底是给谁用的?
如果你也有类似疑问,其实不是你没学会,而是 Claude Code 的扩展体系是分层设计的。这篇文章会帮你建立一个完整认知框架:CLAUDE.md、Skills、插件和MCP Server 四层扩展机制分别解决什么问题,以及什么时候该用哪一层。
引言、建立 Claude Code 的认知框架
Claude Code 的扩展体系并不是一组独立功能,而是一种逐层扩展能力的结构。

从上到下可以这样理解:
- 越靠上,越接近日常使用方式(对话驱动)
- 越靠下,能力越强,但复杂度也越高
大多数开发者的日常工作,其实只停留在前两层:因为对话 + CLAUDE.md 就已经覆盖了 80%–90% 的开发场景。
后面的 Skills、Plugin 和 MCP,并不是必须学习的功能,而是在出现特定需求时自然引入的扩展能力。
接下来,我们从最基础的一层开始逐步拆解。
一、第一层:CLAUDE.md —始终在线的"项目记忆"
1.1 什么是CLAUDE.md
CLAUDE.md 是一个放在项目根目录的 Markdown 文件,Claude Code 每次启动都会自动读取
你可以把它理解为"给 Claude 的长期记忆"。
1.2 它解决什么问题
项目通常存在大量隐性约定:
- 代码风格用 ESLint + Prettier
- API 命名用 camelCase
- Commmit遵循Conventional Commits 格式
- 测试框架是 Vitest 而不是 Jest
如果没有 CLAUDE.md,你需要不断重复这些背景信息。而 CLAUDE.md 的作用是:让项目规则变成默认前提,而不是对话内容。
1.3 作用域
| 位置 | 作用 |
|---|---|
项目/CLAUDE.md | 当前项目 |
~/.claude/CLAUDE.md | 全局默认,所有项目通用 |
1.4 核心特点
- 始终加载:不需要手动触发,打开 Claude Code 就生效
- 零学习成本:就是个 Markdown 文件,写什么 Claude 就记什么
- 最常用:大多数开发者只用了这一层,就已经能大幅提升效率
二、第二层:Skills — 按需加载的能力模块
如果说 CLAUDE.md 是“常驻记忆”,那么 Skill 就是需要时才拿出来的工具。
2.1 Skill是什么
本质上来说,Skill = 一个文件夹 + 一个 SKILL.md 文件。
SKILL.md 里写的是一组结构化指令,它定义了一套结构化流程,可以通过斜杠命令 /skill-name 调用。
例如,我们定义code-review的skill,然后可以通过/code-review触发。
~/.claude/skills/
└── code-review/
└── SKILL.md
2.2 和 CLAUDE.md 的关键区别
这是最容易混淆的地方,用一个类比说清楚:
| 类比 | |
|---|---|
| CLAUDE.md | 贴在墙上的规则 |
| Skill | 工具箱里的工具 |
更技术一点来说:
| CLAUDE.md | Skill | |
|---|---|---|
| 加载方式 | 自动 | 按需 |
| Token 占用 | 始终存在 | 使用时才加载 |
| 适合内容 | 长期规则 | 工作流程 |
| 使用频率 | 高频 | 特定场景 |
-
为什么不能全写进 CLAUDE.md?
-
因为 上下文窗口是有限资源。
如果你把前端设计规范(2000字)、Code Review 清单(1500字)、部署流程(800字)全部写进去。那么每一次对话都会白白消耗 4300 tokens , 即使你只是在改一个函数名。
-
Skill 的价值就是把重型知识变成“按需加载”。
-
2.3 SKILL.md 的内容
---
name: code-review
description: 执行代码审查,检查安全性、性能和可维护性
---
## 审查清单
### 安全性
- 检查是否有 SQL 注入风险
- 检查用户输入是否做了校验
- 检查敏感信息是否暴露在日志中
### 性能
- 检查是否有 N+1 查询
- 检查大列表是否做了分页
- 检查是否有不必要的重复计算
### 可维护性
- 函数是否过长(超过 50 行考虑拆分)
- 命名是否清晰
- 是否有未处理的边界情况
调用方式就是在 Claude Code 中输入 /code-review。
2.4 两种调用模式
(1) 手动调用
/frontend-design 帮我优化这个登录页
(2) Claude 自动识别
当你说"帮我做个漂亮的登陆页",如果你装了 frontend-design 这个 Skill,Claude 会读取它的 description 字段,判断跟你的请求匹配,自动加载,你甚至不知道它被激活了。
这就是为什么有时候你没有输入 /xxx,Claude 也会显示 Skill(frontend-design) Successfully loaded。
(3) Skill 放在哪里
| 位置 | 作用域 | 适用场景 |
|---|---|---|
~/.claude/skills/<name>/SKILL.md | 你个人所有项目 | 通用技能(代码审查、Git 规范等) |
.claude/skills/<name>/SKILL.md | 当前项目 | 项目特定技能(随代码版本管理) |
三、第三层:插件 Plugin —Skills 的分发系统
这里是最容易误解的一层,插件不是新的能力类型,它只是:把 Skills(以及其他能力)打包成可安装单元。
3.1 什么是Skills
插件 = Skills + MCP Server + Hooks 的打包容器。 它不是一种新机制,而是把前面说的东西打包成一个可安装、可分发的单元。
可以和我们使用python进行简单的类比:
| 概念 | 类比 |
|---|---|
| Skill | Python 文件 |
| Plugin | pip 包 |
回到我们之前用的 frontend-design,它本质上就是一个插件,里面包含了一个同名的 Skill。我们通过 /plugin install frontend-design 安装它,实际上就是把里面的 SKILL.md 下载到了你的环境中。
3.2 手写skill v.s. 安装插件
我们也可以手写skill,但是使用插件让你可以:一键安装、自动更新、团队共享、Marketplace 分发。
| 直接写 Skill | 安装插件 | |
|---|---|---|
| 获取方式 | 手动创建文件 | npx skills add 或 /plugin install |
| 分享方式 | 发文件 | 发仓库地址 |
| 命名空间 | /skill-name | /plugin-name:skill-name |
| 版本管理 | 手动 | 语义化版本 |
| 组合能力 | 只有 Skill | 可包含 Skills + MCP + Hooks |
- 插件的目录结构
my-plugin/
├── .claude-plugin/
│ └── plugin.json # 元数据(名称、版本、描述)
├── skills/
│ └── design/
│ └── SKILL.md # 具体技能
├── hooks/
│ └── hooks.json # 钩子(如提交前自动审查)
└── .mcp.json # MCP Server 配置
可以看到,安装插件 ≈ 下载一组 Skills + 能力配置。这就是为什么我们安装 frontend-design 插件,却通过 /frontend-design Skill 调用。
3.3 什么时候需要插件
| 场景 | 是否需要 |
|---|---|
| 个人使用 | ❌ 不需要,直接在 ~/.claude/skills/ 里写 SKILL.md 就行 |
| 团队统一规范 | ✅ 推荐。大家装同一个插件,就能获得一致的技能集 |
| 社区发布 | ✅ 必须。通过 Marketplace 让其他人一键安装 |
四、第四层:MCP Server —Claude 的外部接口
前三层都还在 Claude 内部,MCP 是第一次真正“走出 Claude”。
4.1 什么是MCP
MCP(Model Context Protocol)是一个让 Claude Code 连接外部工具的协议。通过 MCP Server,Claude 可以操作 GitHub、查数据库、发邮件、读 Notion 文档,即任何有 API 的东西都能接入。
-
它和 Skills 的区别
Skill 决定行为,MCP 提供现实世界的接口。
- Skill 告诉 Claude “怎么做”——提供指令和流程。
- MCP 告诉 Claude “能做什么”——提供工具和数据源。
-
Skill 与 MCP 如何协作
你写了一个 Skill,指令是"部署前检查所有 Sentry 告警"。但 Claude 本身不能访问 Sentry。也就是说,它知道流程,却拿不到数据。
这时候你就需要一个 Sentry 的 MCP Server,给 Claude 提供查询 Sentry 的能力,让它能够真正执行检查。
于是,一个完整可执行的系统通常由两部分组成:
- Skill = 流程(怎么做)
- MCP = 能力与数据来源(能访问什么)
只有当两者结合时,任务才真正从“描述流程”变成“可以执行”。
4.2 常见的 MCP Server
# 连接 GitHub
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
# 连接数据库
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
--dsn "postgresql://user:pass@host:5432/dbname"
# 连接 Sentry(错误监控)
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
4.3 什么时候需要 MCP
- 你需要 Claude 访问外部系统(GitHub、Jira、数据库、邮件等)
- 你想在对话中直接查询生产数据而不是手动复制粘贴
- 你的 Skill 流程中有一步需要调用外部 API
如果你的工作不涉及外部系统集成,大概率用不上 MCP。
五、总结
四层扩展机制,按使用频率排列:
| 层级 | 本质 | 一句话概括 | 你现在用了吗 |
|---|---|---|---|
| CLAUDE.md | 始终加载的项目上下文 | “Claude,记住这些规矩” | ✅ 已在用 |
| Skills | 按需调用的指令包 | “Claude,执行这套流程” | 按需即可 |
| 插件 | Skills 的打包分发容器 | “装这个插件获得一组技能” | 团队协作时考虑 |
| MCP | 外部工具接入协议 | “Claude,你现在可以访问 GitHub 了” | 需要外部集成时用 |
最后,可以用一句话理解整个设计哲学:Claude Code 并不是让你学习更多功能,而是让能力随着需求自然外扩。

这套设计,其实非常 Unix:每一层只解决一个问题,但可以自由组合。你不需要一次学完全部,只需要在真正产生痛点时,向下一层迈一步即可。

1万+

被折叠的 条评论
为什么被折叠?



