先说结论

四个工具认的文件不一样,但底层思路趋同:都有一个“全局指令文件”+“技能/规则”两层。Claude Code 用 CLAUDE.md + SKILL.md;OpenAI Codex CLI 用 AGENTS.md 也能吃 skills;Google Gemini CLI 用分层的 GEMINI.md 同样支持 Agent Skills;Cursor 则走 .cursor/rules/*.mdc 规则文件,没有原生 SKILL.md 那种“按描述触发”的渐进披露。迁移时,Codex 和 Gemini 基本能直接复用 Agent Skills 格式,Cursor 得转成 .mdc 并丢掉触发门控。

以下数据为 2026-09-26 从 GitHub API 拉取。

三家各自认什么

工具指令文件技能/规则仓库 star(2026-09-26)
Claude CodeCLAUDE.mdSKILL.md(渐进披露)anthropics/skills 178,480
OpenAI Codex CLIAGENTS.mdskills(文档指向 developers.openai.com/codex/skills)openai/codex 126,540
Gemini CLIGEMINI.md(分层)skills / using-agent-skillsgoogle-gemini/gemini-cli 107,163
Cursor(无统一单文件,靠规则).cursor/rules/*.mdcawesome-cursorrules 40,838

把表读厚一点能看出共性:四家都在“一份全局指令文件”之外,另有一层“可复用的工作流/规则”。Claude Code 和 Gemini 明确能吃 Anthropic 的 Agent Skills 格式,Codex 文档也指向同一套 skills,只有 Cursor 用自己的 .mdc 闭环。所以“写一份合规 SKILL.md”是性价比最高的起点——它天然能被前三家复用。

Codex:AGENTS.md + skills

openai/codex(126,540 star,Apache-2.0)的 docs/ 里同时有 agents_md.md 和 skills.md 两份文档。AGENTS.md 那份原文很短,就一句:

“For information about AGENTS.md, see this documentation (https://developers.openai.com/codex/guides/agents-md).”

skills 那份同理指向 developers.openai.com/codex/skills。也就是说,Codex 既吃 AGENTS.md 这种常驻指令,也认 Anthropic 那套 Agent Skills 格式——迁移成本最低。

AGENTS.md 的写法和 CLAUDE.md 一脉相承:放项目约定、禁止事项、常用命令,Codex 每次会话启动时读一遍,当作常驻系统提示。区别是它没有 SKILL.md 那套“按需才读”的机制——AGENTS.md 是常驻的,所以更要克制篇幅,别把整本内部 wiki 塞进去,否则每一轮都要为这份长提示付输入钱。

Gemini CLI:分层的 GEMINI.md + skills

google-gemini/gemini-cli(107,163 star,Apache-2.0)的 docs/cli/ 下有一份 gemini-md.md,把上下文文件讲得很清楚:

“Context files, which use the default name GEMINI.md, are a powerful feature for providing instructional context to the Gemini model.”

它最特别的是分层加载:全局 ~/.gemini/GEMINI.md、工作区及父目录里的 GEMINI.md、以及“按需(JIT)”在工具访问某目录时向上扫描到的 GEMINI.md,全部拼接后随每次请求发往模型。同时它还有 creating-skills.md、skills.md、using-agent-skills.md——意味着它能直接消费 Anthropic 的 Agent Skills。

这种“分层 + 按需”的设计有个甜头:你可以把通用约定放全局 ~/.gemini/GEMINI.md,把某子模块专属的规矩写在该目录下的 GEMINI.md,模型访问那个目录时才把它拼进来。代价是每层都会进输入,所以同样要控制单文件体积,别在根目录 GEMINI.md 里堆几页纸。

Cursor:.mdc 规则文件

Cursor 的玩法在 PatrickJS/awesome-cursorrules(40,838 star,“Configuration files that enhance Cursor AI editor experience with custom rules and behaviors”)和 sanjeed5/awesome-cursor-rules-mdc(3,574 star,“Curated list of awesome Cursor Rules .mdc files”)里能看到:规则就是 .cursor/rules/ 下的 .mdc 文件。它走的是“按 glob 匹配或常驻生效”的模型,不是“按 description 触发、激活才读全文”的渐进披露。这是迁移时最容易丢能力的地方。

和前三家的“全局指令文件 + 按需技能”不同,Cursor 没有 SKILL.md 那种按 description 触发、激活才读全文的渐进披露。.mdc 文件要么 alwaysApply: true 常驻、要么靠 globs 按文件路径匹配才生效。好处是简单直接,坏处是你失去了“按语义触发”的精细控制——同一个技能要同时覆盖“用户说导出”和“用户打开表格文件”两种场景,在 Cursor 里得靠 glob 硬匹配,写起来比 description 啰嗦。

# Cursor 的 .mdc 大致结构(字段以 Cursor 官方文档为准)
---
description: 处理本项目 TypeScript 代码时生效
globs: "**/*.ts"
alwaysApply: false
---
禁止引入未列入依赖清单的包;提交信息用中文动词开头。

同一个 skill 怎么迁移

目录映射与能力取舍:

# 指令文件:一份内容,四处改名
~/.claude/CLAUDE.md          # Claude Code
~/.config/codex/AGENTS.md    # Codex(路径以你本地版本为准)
~/.gemini/GEMINI.md          # Gemini CLI
.cursor/rules/project.mdc    # Cursor

# 技能:SKILL.md 直接给 Codex / Gemini 复用;
# 给 Cursor 时把正文搬进 .mdc,触发门控退化为 glob / alwaysApply
从到 Codex / Gemini到 Cursor
SKILL.md基本原样复用(它们吃 Agent Skills)转 .mdc,丢失“按描述触发”
CLAUDE.md改名 AGENTS.md / GEMINI.md放 .cursor/rules/ 下作常驻规则
渐进披露保留(技能触发才读正文)丢失(规则常驻或按 glob)

落到具体动作:你那份 SKILL.md,连目录原样丢给 Codex(放它认的 skills 位置)和 Gemini(放它认的 skills 位置)基本就能用,因为两者都吃 Agent Skills 格式;丢给 Cursor 时,把 frontmatter 的 description 拆成 .mdc 的 description + globs,正文原样搬进 .mdc 正文,触发逻辑从“语义”退化成“路径/常驻”。能力损失主要在触发精度,不在指令本身。

跨工具最小公约数写法

  • 指令文件写纯 Markdown:四家居然都认一个“全局指令文件”,内容用纯 MD,别塞 Claude 私有语法,这样复制改名就能用。
  • 技能按 Agent Skills 规范写:SKILL.md(name/description 合规)在 Codex、Gemini 上能直接吃;Cursor 用工具转。
  • 触发器写进 description:规范字段,Codex/Gemini 的 skills 能读;Cursor 这边退化成 glob/alwaysApply,所以关键的“何时用”也要在正文里再写一遍。
  • 用同步工具:intellectronica/ruler(2,935 star,“apply the same rules to all coding agents”)这类项目就是干“一份规则多处同步”的。

工具同步这块再多说一句:intellectronica/ruler(2,935 star)的定位就是“把同一套规则同时应用到所有编码代理”,它帮你维护一份源规则、再分发到各工具的约定位置。如果你团队跨工具混用,与其四份各写各的、迟早漂移,不如搞一份纯 Markdown 源,用它或简单的脚本同步。注意这只能同步“常驻指令”那一层,技能级的渐进披露在 Cursor 上仍会退化。

一份可复用的纯 Markdown 指令骨架:

# 项目指令(纯 Markdown,四工具通吃)
## 技术栈
- 前端:TypeScript + React
## 约定
- 提交信息用中文,动词开头
- 不引入未列入依赖清单的包
## 禁止
- 不要改写测试目录以外的历史文件

坑 / 反模式

  • 以为装了 SKILL.md 在 Cursor 里就能自动触发——Cursor 没有这套门控,得转 .mdc。
  • 把整本手册塞进 GEMINI.md,分层加载会把它拼进每次请求,输入暴涨。
  • 指令文件用了某工具私有语法(如 Claude 专属标签),换工具直接失效。
  • 只在 description 写触发词,没在正文复述“何时用”,到 Cursor 那边直接丢触发信息。
  • 没验证就声称“全工具通用”——Codex/Gemini 吃 Agent Skills,Cursor 不吃,这是实打实的差异。

下一步怎么做

先把一份纯 Markdown 项目指令写顺,分别在 CLAUDE.md / AGENTS.md / GEMINI.md / .cursor/rules/ 各放一份,看各自反应;技能则严格按 本系列收录榜 里列的 Agent Skills 规范写,Codex 和 Gemini 基本能直接复用。以上迁移方式按各仓库文档与目录结构推断,我没逐工具跑通验证,动手前以你本地版本为准。

声明:1.本站所有文章,如无特殊说明或标注,均为本站原创发布。本网站中【文本生成/文生图】使用了DeeSseek人工智能生成内容技术, 算法来源说明:本网站未自行开发、训练或部署深度合成算法,所使用的人工智能算法来自:DeepSeek、Chatgpt、Google Gemini。 2.为了网站加载速度优化,本站预览图片进行压缩处理,所以有些不是太清晰,并不影响AI提示词生图、AI设计等内容。3.任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。--GUUNN.COM