如果你是一名正在深度使用 AI 编程工具的开发者,你大概率经历过这个场景:

.cursor/rules/,AI 表现得很好CLAUDE.md,你重新写了一遍.codex/ 目录然后,你的 AI 队友们开始吵架——不同工具写出来的代码风格各异,同一个函数名,两个 AI 给出了两种实现方案。
这听起来像笑话?在 2026 年的今天,这已经是真实痛点。
半年前,大家还在争论「什么是 Skill」。今天,答案已经很清晰了:
Skill = 你给 AI 的工作说明书。
它不再是几行提示词的代称。在 Claude Code 里它叫 CLAUDE.md,在 Cursor 里它叫 .mdc 文件,在 Codex 里它藏在 .codex/ 下。本质上,它们在做同一件事:告诉 AI 你的项目怎么工作。
但问题也出在这里——每个工具都有自己的路径、格式和加载机制。
| 工具 | 配置路径 | 文件格式 | 加载方式 |
|---|---|---|---|
| Cursor | .cursor/rules/ | .mdc (Markdown + Frontmatter) | 按 globs 按需匹配 |
| Claude Code | CLAUDE.md + .claude/ | Markdown | 全局注入 + 目录引用 |
| Codex CLI | .codex/rules/ .codex/agents/ | Markdown | 专属目录加载 |
| GitHub Copilot | .github/copilot-instructions.md | Markdown | 全局引用 |
| Windsurf | .windsurfrules | 单文件 | 全局注入 |
| Antigravity | .agents/ | agents.md + skills/ | 角色 + 技能文件 |
这种碎片化短期内不会消失——因为每个工具背后的团队有不同的产品哲学和实现路径。
让我们回到工程本质。如果一个项目里有多个 AI 工具,每个工具读到的上下文不同,后果是什么?
// Cursor 下的代码风格
function fetchUser(id: number): Promise<User> {
// Camel case, TypeScript, explicit returns
}// Claude Code 下的代码风格
function fetch_user($id) {
// Snake case, untyped PHP
return db.query("SELECT * FROM users WHERE id = $id")->fetch();
}
这是夸张版本,但方向没错。不同的 Skills 配置 → 不同的输出风格 → 团队内的代码熵增。
而且还有另一个隐形成本:上下文轰炸。 把几十条规则一股脑丢给 AI,比没有规则更糟糕——AI 会在庞杂的上下文里迷失重点。
如果 Skills 是一种技术资产,那么它就应该走软件工程的治理流程。
建立一个 _skills/ 目录(或者 .ai-skills/),它是唯一的规则仓库。
your-project/
┣ _skills/
┃ ┣ coding-standards.md # 编码规范
┃ ┣ architecture.md # 架构约定
┃ ┣ api-design.md # API 设计原则
┃ ┗ git-workflow.md # Git 提交规范
核心原则:Git 仓库里只保留 _skills/,其他工具目录由脚本生成,加入 .gitignore。
给每个 Skill 文件加 Frontmatter:
---
description: Vue 3 组件开发规范
globs: "**/*.vue,**/components/**/*.ts"
tags: [frontend, vue]
---
不同的工具消费不同的信息:
globs 字段,按文件类型自动激活对应的 .mdc用 Node.js 写一个 scripts/sync-skills.js,做三件事:
_skills/ 目录所有 .md 文件// 核心逻辑(简化版)
files.forEach(file => {
const { frontmatter, body } = parseFrontmatter(file); // Cursor:按 globs 生成 .mdc
writeFile(`.cursor/rules/${name}.mdc`,
`---ndescription: ${desc}nglobs: ${globs}n---n${body}`); // Agent 工具:生成索引,AI 按需读取
agentIndex += `- **${desc}**: 参阅 skills/${name}.mdn`;
});writeFile('CLAUDE.md', agentIndex);
writeFile('.agents/agents.md', agentIndex);
核心思想: AI 工具只是载体,真正的资产在 _skills/ 里。脚本是分发层,任何新工具加入生态,只需要在脚本里加一行。
既然 Skills 是代码,那它就要走代码的生命周期:
在单人场景下,上述方案已经足够。但到了团队/企业级,还需要两个维度的能力:
MCP 的 Prompts 能力正在成为 Skills 的标准化层。当一个 AI 工具支持 MCP Prompts,它可以从远程服务器动态拉取 Skill,而不需要本地文件同步。
这意味着:
企业级场景下,Skills 不只是「编码规范」,还涉及:
这些不该由同一个 Agent 承担。更好的模式是多 Agent + 角色模型:
agents.md
├── 架构师 Agent: 负责系统设计评审
├── 安全 Agent: 负责代码安全审查
├── 测试 Agent: 负责测试覆盖率和边界检查
└── 开发 Agent: 负责日常编码
每个 Agent 持有自己的 Skills 集,互不干扰。这也正是 Antigravity 和 Codex Agents 在做的事情——把 Skills 从一条提示词,升级为一套角色化的工作流引擎。
最有意思的变化不在技术层面,而在商业层面。
Skill 不再是开发者的个人笔记,它正在变成一种可分发、可交易的产品。
这意味着什么?Skills 正在从「配置项」变成「插件市场」。一个生态一旦形成,它的演化速度会远超想象。
Skills 工程化听起来很重,但核心原则只有三条:
_skills/ 目录,童叟无欺2025 年我们学会了「提示词工程」,2026 年我们要学会的是 「Skills 工程」。从一个人写提示词,到一支团队治理 AI 工作说明书——这跨度,就是过去一年 AI 编程工具演化的缩影。
标签:AI编程 Skills 工程化 Cursor Claude Code MCP Agent