"CLAUDE.md 是什么?跟 .github/prompts 有什么区别?Skills 又是什么?"
当我第一次尝试配置 GitHub Copilot 和 Claude Code 时,面对这些散落在不同目录的配置文件,一度非常困惑。官方文档各讲各的,很少有人把它们放在一起对比。
直到我把自己的博客项目完整配置了一遍,才终于理清了这四个概念的关系。今天把这个梳理过程记录下来,希望能帮到同样困惑的你。
先看全景:四层架构
在动手配置之前,先建立一个整体认知。我把 AI Agent 的"知识体系"分为四层:
┌─────────────────────────────────────────────────────────────────────────┐
│ 用户请求 │
│ "帮我写一篇关于 MCP 的博客" │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 📋 INSTRUCTIONS (项目上下文) │
│ • 每次请求自动加载 • 告诉 AI:项目结构、命令、约定 │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 📝 PROMPTS (任务模板) │
│ • 手动调用 • 告诉 AI:这个任务怎么做、输出格式 │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 🎯 SKILLS (能力模块) │
│ • AI 自动识别 • 包含:知识 + 流程 + 工具使用指南 │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 🔧 TOOLS (执行能力) │
│ • AI 按需调用 • 实际执行:读写文件、运行命令、调用 API │
└─────────────────────────────────────────────────────────────────────────┘
用一个类比来理解:
| 层级 | 类比 | 作用 |
|---|---|---|
| Instructions | 员工入职手册 | 了解公司基本情况 |
| Prompts | 工作 SOP 流程 | 具体任务怎么做 |
| Skills | 专业技能认证 | 我擅长什么领域 |
| Tools | 工具箱 | 锤子、螺丝刀等执行工具 |
第一层:Instructions — 项目的"入职手册"
是什么?
Instructions 是项目级的上下文信息,告诉 AI:
- 这是什么项目?
- 用什么技术栈?
- 有哪些常用命令?
- 代码/文件组织有什么约定?
在哪里配置?
| 工具 | 配置文件 | 加载方式 |
|---|---|---|
| Claude Code | CLAUDE.md(项目根目录) | 自动加载 |
| GitHub Copilot | .github/copilot-instructions.md 或 settings.json | 自动加载 |
| Cursor | .cursorrules | 自动加载 |
我的配置示例
我的博客项目 CLAUDE.md 长这样:
# CLAUDE.md
## Project Overview
Personal website/portfolio built with **Zola** (Rust-based static site generator).
## Commands
- `zola serve` — 本地开发服务器
- `zola build` — 构建静态站点
## Content Conventions
- Blog posts: `content/blog/YYYYMMDD-{slug}/index.md`
- Images for posts go in the same directory as `index.md`
关键特点
- 每次请求都会加载:无论你问什么,这些内容都会被注入到 System Prompt
- Token 消耗:内容越多,每次请求消耗的 token 越多
- 建议精简:只放真正全局需要的信息
小技巧:让 Copilot 复用 CLAUDE.md
如果你同时用 Claude Code 和 GitHub Copilot,不想维护两份文件,可以在 .vscode/settings.json 中配置:
{
"github.copilot.chat.codeGeneration.instructions": [
{ "file": "CLAUDE.md" }
]
}
这样 Copilot 也会读取 CLAUDE.md,一处维护,两边生效。
第二层:Prompts — 任务的"SOP 流程"
是什么?
Prompts 是任务级的模板,当你需要执行特定任务时调用。比如:
- 写博客有固定格式要求
- 写专利有特定结构
- 代码审查有标准流程
在哪里配置?
| 工具 | 配置位置 | 调用方式 |
|---|---|---|
| GitHub Copilot | .github/prompts/*.prompt.md | #文件名 |
| Claude Code | 不直接支持,用 Skills 替代 | — |
我的配置示例
.github/prompts/
├── BlogWriter.prompt.md # 写博客
├── PatentWriter.prompt.md # 写专利
├── PaperWriter.prompt.md # 写论文
└── BlogToWechat.prompt.md # 博客转微信格式
BlogWriter.prompt.md 片段:
---
agent: 'agent'
---
你是 Polly 的博文写作助手...
<CONTENT_STRUCTURE>
* 开篇吸引:以引人入胜的问题、案例或现象开始
* 明确主题:在开头部分清晰表达核心议题
* 内容层次:使用清晰的标题组织内容
...
</CONTENT_STRUCTURE>
调用方式
在 Copilot Chat 中输入 #BlogWriter,就会加载这个模板:
你:#BlogWriter 帮我写一篇关于 MCP Server 的博客
Copilot 收到:
├── Instructions(CLAUDE.md) ← 自动加载
├── BlogWriter.prompt.md 全文 ← #触发加载
└── 你的问题
关键特点
- 手动触发:只在需要时加载,不浪费 token
- 任务专用:每个 prompt 针对一种任务类型
- 平台限定:目前主要是 GitHub Copilot 支持这种语法
第三层:Skills — 专业的"技能认证"
是什么?
Skills 是 Claude Code 特有的概念,比 Prompts 更进一步:
- 不只是文字模板,还可以包含参考资料、脚本、工具使用指南
- AI 会根据用户意图自动识别并调用合适的 skill
- 类似于"专家模块"——写博客找博客专家,写代码找代码专家
在哪里配置?
.claude/skills/
├── blog-writer/
│ ├── SKILL.md # 技能定义
│ ├── references/ # 参考资料
│ │ └── common-tags.md # 常用标签
│ └── scripts/ # 辅助脚本
│ └── generate_cover.py # 封面图生成
├── blog-dev/
│ └── SKILL.md # 博客开发技能
└── brainstorming/
└── SKILL.md # 头脑风暴技能
我的配置示例
blog-writer/SKILL.md 片段:
---
name: blog-writer
description: Polly 个人博客写作助手。Triggers on keywords
like "写博文", "blog post", "写一篇", "发布文章".
---
# Blog Writer
## 核心原则
1. **第一人称叙述**: 始终使用"我"进行叙述
2. **语言匹配**: 根据用户输入语言选择中文或英文
3. **技术准确**: 代码、工具名称必须准确
## 写作工作流
### Phase 1: 理解需求
### Phase 2: 生成大纲
### Phase 3: 撰写正文
### Phase 4: 生成完整文件
### Phase 5: 生成封面图(可选)
触发方式
当我说"帮我写一篇博客"时,Claude Code 会:
- 扫描
.claude/skills/目录 - 匹配到
blog-writer的触发词 - 自动读取
SKILL.md及相关资源 - 按 skill 定义的流程执行
Skills vs Prompts 对比
| 维度 | Prompts | Skills |
|---|---|---|
| 平台 | GitHub Copilot | Claude Code |
| 触发 | 手动 #名称 | AI 自动识别 |
| 内容 | 单个 .md 文件 | 目录结构(可含脚本、资料) |
| 智能度 | 被动模板 | 主动能力模块 |
它们是不同平台的类似概念,不是一起使用的关系。
第四层:Tools — 实际的"工具箱"
是什么?
前三层都是"告诉 AI 怎么想",而 Tools 是"让 AI 能做事":
- 读写文件
- 执行终端命令
- 调用外部 API
- 操作数据库
常见的 Tools
| 类型 | 示例 | 来源 |
|---|---|---|
| 内置工具 | 文件读写、终端执行、代码搜索 | AI 工具自带 |
| MCP Tools | 翻译服务、数据库操作、自定义 API | MCP Server 提供 |
| VS Code API | 编辑器操作、调试控制 | 扩展提供 |
MCP Tools 示例
我开发的翻译 MCP Server 提供了这些 Tools:
@mcp.tool()
async def translate_document(file_path: str, target_lang: str):
"""翻译整篇文档"""
...
@mcp.tool()
async def extract_terminology(file_path: str):
"""提取术语表"""
...
当 AI 需要翻译文档时,会自动调用这些 tools。
Tools 与其他层的关系
Instructions → 告诉 AI 项目背景
Prompts/Skills → 告诉 AI 任务流程
Tools → 让 AI 实际执行操作
Tools 是执行层,前三层是知识层。
平台差异:Claude Code vs GitHub Copilot
理解完四层架构后,再看两个主流工具的差异就清晰了:
| 特性 | Claude Code | GitHub Copilot |
|---|---|---|
| Instructions | CLAUDE.md | settings.json 配置 |
| Prompts | ❌ 不支持 | ✅ .github/prompts/ |
| Skills | ✅ .claude/skills/ | ❌ 不支持 |
| Tools | MCP Tools | VS Code 内置 + MCP |
| 自动识别能力 | ✅ 强(会自动选 skill) | ⚠️ 弱(需手动 #调用) |
我的配置策略
同时使用两个工具时,我的策略是:
- Instructions 共用:
CLAUDE.md通过 settings.json 给 Copilot 用 - 任务模板分开:Copilot 用 prompts,Claude 用 skills
- Tools 共用:MCP Server 两边都能调用
文件结构:
/
├── CLAUDE.md # 共用
├── .vscode/settings.json # 让 Copilot 读 CLAUDE.md
├── .github/prompts/ # Copilot 专用
│ ├── BlogWriter.prompt.md
│ └── ...
├── .claude/skills/ # Claude Code 专用
│ ├── blog-writer/
│ └── ...
└── Master-Translator-MCP-Server/ # MCP Tools,两边共用
实际工作流示例
场景:写一篇博客
用 GitHub Copilot:
我:#BlogWriter 帮我写一篇关于 MCP 的博客
System Prompt 包含:
├── CLAUDE.md (Instructions) ← 自动
├── BlogWriter.prompt.md ← #触发
└── 我的问题
用 Claude Code:
我:帮我写一篇关于 MCP 的博客
System Prompt 包含:
├── CLAUDE.md (Instructions) ← 自动
├── blog-writer/SKILL.md ← 自动识别
└── 我的问题
效果类似,但 Claude Code 不需要手动指定 #BlogWriter。
一张表格总结
| Instructions | Prompts | Skills | Tools | |
|---|---|---|---|---|
| 是什么 | 项目上下文 | 任务模板 | 能力模块 | 执行工具 |
| 类比 | 入职手册 | SOP 流程 | 技能认证 | 工具箱 |
| 位置 | CLAUDE.md | .github/prompts/ | .claude/skills/ | MCP Server |
| 加载方式 | 自动 | 手动 # | 自动识别 | 按需调用 |
| Token 消耗 | 每次都消耗 | 调用时消耗 | 调用时消耗 | 不消耗 |
| Copilot | ✅ | ✅ | ❌ | ✅ |
| Claude Code | ✅ | ❌ | ✅ | ✅ |
写在最后
理清这四层架构后,配置 AI 助手就不再是"试错",而是有章可循:
- 全局信息放 Instructions——项目结构、命令、约定
- 任务流程放 Prompts/Skills——写博客、写专利的具体步骤
- 复杂能力做成 Tools——翻译服务、图像生成等
配置的核心原则是:让 AI 在需要的时候获取需要的信息,而不是一股脑全塞给它。
如果你也在配置自己的 AI 工作流,希望这篇梳理能帮到你。有问题欢迎在评论区讨论!

