
当你需要频繁在 Kilocode、OpenCode、Claude、Codex、GitHub Copilot 等多个 AI 编程助手之间切换时,Ruler[1] 是你的最佳选择:
在我写《AGENTS.md:统一编码助手指令文件的新标准[2] 这个项目。当时实际上我并没有频繁使用这个工具,因为我主要使用的是单一的编程助手。
但现在情况不同了。
随着 AI 编程助手的爆发式增长,我需要频繁在多个工具之间切换:
每个工具都有自己的:
AGENTS.md[3] 标准的出现(Google、OpenAI、Factory、Sourcegraph 和 Cursor 联合推出),统一了 instructions 文件的名称和位置。这是一个重大进步,项目根目录不再混乱。
AGENTS.md 解决的问题:
AGENTS.md 没有解决的问题:
.cursor/mcp.json.mcp.json.windsurf/mcp_config.json.codex/config.toml.claude/skills/.codex/skills/.opencode/skill/.agents/skills/.aider.conf.yml.clinerulesCRUSH.md这就是 Ruler 依然不可或缺的原因。
Ruler 是一个命令行工具,提供 单一数据源(Single Source of Truth) 来管理所有 AI 编程助手的配置。
统一由 Ruler 管理内容:
.ruler/ # 单一数据源
├── AGENTS.md # 主指令文件
├── coding_style.md # 代码风格指南
├── api_guidelines.md # API 设计规范
├── ruler.toml # Ruler 配置
└── skills/ # 集中管理的 Skills
├── my-skill/
│ └── SKILL.md
└── another-skill/
└── SKILL.md
执行 ruler apply 命令生成并分发到各工具的专属文件:
AGENTS.md # 分发给所有支持的工具
.cursor/mcp.json # Cursor 的 MCP 配置
.mcp.json # Claude 的 MCP 配置
.codex/config.toml # Codex 的 MCP 配置
.claude/skills/ # Claude/Copilot/Kilocode 的 Skills
.codex/skills/ # Codex 的 Skills
.opencode/skill/ # OpenCode 的 Skills
.gitignore # 自动更新,忽略生成的文件
.ruler/ 目录ruler.toml 中统一定义 MCP 服务器.ruler/skills/.ruler/ 目录结构.ruler/
├── AGENTS.md # 主指令文件(新标准)
├── instructions.md # 旧版支持(向后兼容)
├── ruler.toml # Ruler 配置文件
├── coding_style.md # 额外的规则文件
├── api_conventions.md # API 设计规范
└── skills/ # Skills 目录
├── skill-1/
│ └── SKILL.md # 必需
└── skill-2/
└── SKILL.md
文件加载顺序和优先级:
AGENTS.md(如果存在,最高优先级).ruler/AGENTS.md(新标准,推荐).ruler/instructions.md(旧版,向后兼容).ruler/ 下的其他 .md 文件(按字母顺序)所有文件内容会被合并,每个文件前会自动添加来源标记。
这是 Ruler 的杀手级特性,特别适合复杂项目。
使用场景:
my-monorepo/
├── .ruler/ # 全局规则
│ ├── AGENTS.md
│ └── global_standards.md
├── frontend/
│ └── .ruler/ # 前端特定规则
│ └── react_guidelines.md
├── backend/
│ └── .ruler/ # 后端特定规则
│ └── api_standards.md
└── docs/
└── .ruler/ # 文档写作规则
└── writing_style.md
启用方式:
# .ruler/ruler.toml
nested = true
或使用 CLI 参数:
ruler apply --nested
适用场景:
为什么重要?
Model Context Protocol (MCP) 为 AI 模型提供额外的上下文和能力:文件系统访问、Git 操作、远程 API 调用、数据库查询等。但每个工具的 MCP 配置格式都不同,Ruler 统一管理。
配置示例:
# .ruler/ruler.toml
[mcp]
enabled = true
merge_strategy = "merge" # 或 "overwrite"
# 本地 stdio 服务器
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
# Git 服务器
[mcp_servers.git]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-git", "--repository", "."]
# 远程服务器
[mcp_servers.api]
url = "https://mcp.example.com"
[mcp_servers.api.headers]
Authorization = "Bearer your-token"
Ruler 会自动将 MCP 配置转换为各工具的格式并分发。
什么是 Agent Skills?
Agent Skills 是 AI 代理的可复用能力包,类似于软件的插件系统。详见我的另一篇文章《Agent Skills 深度解析:为 AI 代理构建可复用的技能生态系统》。
Ruler 的 Skills 管理:
.ruler/skills/
├── obsidian-workflow/
│ ├── SKILL.md # 必需:技能说明
│ ├── templates/ # 可选:模板文件
│ └── scripts/ # 可选:辅助脚本
└── api-design/
├── SKILL.md
└── examples/
Ruler 会将 Skills 自动复制到各工具的 skills 目录(.claude/skills/、.codex/skills/、.opencode/skill/ 等)。
Ruler 支持 30+ 种 AI 编程助手,包括:
常用工具:
完整列表详见:Ruler GitHub[4]
# 全局安装(推荐)
npm install -g @intellectronica/ruler
# 或使用 npx(一次性)
npx @intellectronica/ruler apply
要求:Node.js ^20.19.0 || ^22.12.0 || >=23
# 进入项目目录
cd your-project
# 初始化 Ruler
ruler init
这会创建 .ruler/ 目录、AGENTS.md 和 ruler.toml 配置文件。
ruler init
# .ruler/AGENTS.md
## 项目概述
这是一个 TypeScript + React 项目,使用 Vite 构建。
## 代码规范
- 使用 TypeScript strict 模式
- 组件使用函数式写法,优先使用 hooks
- 使用 ESLint 和 Prettier
- 所有导出函数必须有 JSDoc 注释
## 测试要求
- 每个功能必须有单元测试
- 使用 Vitest 作为测试框架
- 测试覆盖率不低于 80%
ruler apply
# 只配置 Cursor 和 Claude
ruler apply --agents cursor,claude
# 查看详细输出
ruler apply --agents cursor,claude --verbose
编辑 .ruler/ruler.toml:
[mcp]
enabled = true
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "${PROJECT_ROOT}"]
[mcp_servers.git]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-git", "--repository", "."]
然后应用配置:
ruler apply --mcp
创建 Skills:
mkdir -p .ruler/skills/api-design
cat > .ruler/skills/api-design/SKILL.md << 'EOF'
# API Design Guidelines
## REST API 设计原则
1. **资源命名**
- 使用名词复数形式:`/users`, `/products`
- 避免动词
2. **HTTP 方法**
- GET:获取资源
- POST:创建资源
- PUT:完整更新资源
- PATCH:部分更新资源
- DELETE:删除资源
EOF
应用 Skills:
ruler apply --skills
在 .ruler/ruler.toml 中启用:
nested = true
然后从项目根目录运行:
ruler apply --nested
Ruler 会自动发现所有嵌套的 .ruler/ 目录并合并规则。
维度 | AGENTS.md | Ruler |
|---|---|---|
Instructions 统一 | 文件名和位置统一 | 单一数据源 |
MCP 配置 | 各工具自行配置 | 统一管理和分发 |
Skills 管理 | 各工具独立 | 集中管理 |
嵌套规则 | 不支持 | 原生支持 |
自动化 | 手动维护 | 一键应用 |
学习成本 | 低(只是文件) | 中(需要学习工具) |
推荐使用场景:
使用 AGENTS.md 即可:
Ruler 更适合:
最佳实践:结合使用
.ruler/ 目录提交到版本控制ruler apply# .gitignore
# 生成的文件由 Ruler 自动管理,不提交
AGENTS.md
.cursor/mcp.json
.mcp.json
.claude/skills/
# .ruler/ 目录提交到版本控制
!.ruler/
{
"scripts": {
"ruler:apply": "ruler apply",
"ruler:check": "ruler apply --dry-run",
"postinstall": "npm run ruler:apply"
}
}
创建团队配置模板:
team-configs/
├── ruler-templates/
│ ├── frontend.toml
│ ├── backend.toml
│ └── fullstack.toml
└── skills/
├── company-api-design/
└── security-guidelines/
项目初始化时复制团队配置:
cp team-configs/ruler-templates/frontend.toml .ruler/ruler.toml
cp -r team-configs/skills/* .ruler/skills/
ruler apply
AGENTS.md 标准统一了 instructions 文件的名称和位置,但 MCP 配置、Agent Skills 管理和嵌套规则等问题依然需要手动处理。Ruler 以 " 单一数据源 " 的理念填补了这个空白,支持 30+ 种 AI 编程助手的自动化配置管理,特别适合频繁切换多个工具、使用复杂项目结构或需要团队标准化的场景。通过一键 ruler apply 命令,你可以将集中管理的配置自动分发到各个工具,大幅降低维护成本,让配置管理回归简单。
参考资料
[1]
Ruler: https://github.com/intellectronica/ruler
[2]
AGENTS.md:统一编码助手指令文件的新标准: https://mp.weixin.qq.com/s/6ZEGcGzt-Nsb1h354ySscg
[3]
AGENTS.md: https://agents.md/
[4]
Ruler GitHub: https://github.com/intellectronica/ruler