@mohitagw15856/agent-rosetta
v0.1.0
Published
One set of rules, every coding agent. Capability matrix + rules converter for AI coding agents.
Downloads
100
Maintainers
Readme
You run three coding agents. You maintain three copies of the same rules by hand.
A capability matrix for AI coding agents — what each one calls its rules file, where MCP config lives, which support skills, subagents, hooks and headless runs. Plus a converter, because the answer to "we added Cursor" should not be copy-paste.
npx github:mohitagw15856/agent-rosetta convert CLAUDE.md --to cursor,copilot,codex-cli
npx github:mohitagw15856/agent-rosetta diff claude-code cursorRuns straight from this repo — nothing published to npm yet, nothing to install.
The matrix
| Capability | Aider | Claude Code | Cline | Codex CLI | GitHub Copilot | Cursor | Gemini CLI | OpenCode | Windsurf | | --- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | | Project rules file | 🟡 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Nested / scoped rules | ❌ | ✅ | 🟡 | ✅ | ✅ | ✅ | ✅ | ✅ | 🟡 | | User-level rules | ✅ | ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | ✅ | ✅ | | AGENTS.md | ❌ | 🟡 | 🟡 | ✅ | 🟡 | 🟡 | 🟡 | ✅ | 🟡 | | MCP servers | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Skills | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | 🟡 | 🟡 | ❌ | | Subagents | ❌ | ✅ | ❌ | ❌ | ❌ | 🟡 | 🟡 | ✅ | ❌ | | Hooks | 🟡 | ✅ | 🟡 | ❌ | ❌ | 🟡 | 🟡 | ✅ | ❌ | | Custom commands | ✅ | ✅ | ✅ | 🟡 | ✅ | 🟡 | ✅ | ✅ | ✅ | | Headless / CI mode | ✅ | ✅ | 🟡 | ✅ | 🟡 | 🟡 | ✅ | ✅ | ❌ |
✅ full · 🟡 partial · ❌ none — the detail behind each cell is below, because "supports MCP" without the config path has never once helped anyone.
What each capability means
| Capability | The question it answers | | --- | --- | | Project rules file | What file holds repo-wide instructions, and where does it live? | | Nested / scoped rules | Can a subdirectory carry its own rules that apply only within it? | | User-level rules | Is there a personal, machine-wide instruction file outside the repo? | | AGENTS.md | Does it read the emerging cross-tool AGENTS.md convention? | | MCP servers | Can it connect to Model Context Protocol servers, and from which config file? | | Skills | Progressive-disclosure instruction bundles loaded on demand. | | Subagents | Can it delegate to separately-configured agents with their own context? | | Hooks | Can you run your own code on tool-call or lifecycle events? | | Custom commands | User-defined shortcuts that expand into a prompt. | | Headless / CI mode | Can it run non-interactively in a pipeline? |
Aider
Open source · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | 🟡 | CONVENTIONS.md loaded via --read, or read: in .aider.conf.yml |
| Nested / scoped rules | ❌ | Files are added to context explicitly; no automatic directory scoping |
| User-level rules | ✅ | ~/.aider.conf.yml |
| AGENTS.md | ❌ | No automatic convention file; point --read at whatever you use |
| MCP servers | ❌ | No MCP support |
| Skills | ❌ | No skills equivalent |
| Subagents | ❌ | Single-agent model |
| Hooks | 🟡 | Lint and test commands run automatically after edits |
| Custom commands | ✅ | Extensive built-in slash commands; not user-defined files |
| Headless / CI mode | ✅ | aider --message "prompt" --yes scripts cleanly |
Claude Code
Anthropic · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | ✅ | CLAUDE.md at the repo root |
| Nested / scoped rules | ✅ | CLAUDE.md in any subdirectory, loaded when working in that tree |
| User-level rules | ✅ | ~/.claude/CLAUDE.md |
| AGENTS.md | 🟡 | Reads AGENTS.md when present; CLAUDE.md is the native name |
| MCP servers | ✅ | .mcp.json in the repo, or claude mcp add |
| Skills | ✅ | .claude/skills/<name>/SKILL.md, with frontmatter description for triggering |
| Subagents | ✅ | .claude/agents/*.md, each with its own model, tools and prompt |
| Hooks | ✅ | .claude/settings.json — pre/post tool-use and lifecycle events |
| Custom commands | ✅ | .claude/commands/*.md |
| Headless / CI mode | ✅ | claude -p "prompt" for non-interactive runs |
Cline
Cline · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | ✅ | .clinerules/ directory, or a single .clinerules file |
| Nested / scoped rules | 🟡 | Rules are toggled per-file rather than scoped by directory |
| User-level rules | ✅ | ~/Documents/Cline/Rules/ |
| AGENTS.md | 🟡 | AGENTS.md support has been added alongside .clinerules/ |
| MCP servers | ✅ | cline_mcp_settings.json, plus an in-app MCP marketplace |
| Skills | ❌ | No skills equivalent |
| Subagents | ❌ | Plan and Act modes rather than separate agents |
| Hooks | 🟡 | Auto-approve policies rather than general hooks |
| Custom commands | ✅ | Workflow files invoked as slash commands |
| Headless / CI mode | 🟡 | A CLI exists; the extension is the primary surface |
Codex CLI
OpenAI · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | ✅ | AGENTS.md at the repo root — Codex is the origin of the convention |
| Nested / scoped rules | ✅ | AGENTS.md in subdirectories, merged nearest-first |
| User-level rules | ✅ | ~/.codex/AGENTS.md |
| AGENTS.md | ✅ | Native format |
| MCP servers | ✅ | ~/.codex/config.toml |
| Skills | ❌ | No skills equivalent |
| Subagents | ❌ | Single-agent model |
| Hooks | ❌ | Sandbox and approval policies rather than user-defined hooks |
| Custom commands | 🟡 | Built-in slash commands; custom prompts via ~/.codex/prompts/ |
| Headless / CI mode | ✅ | codex exec "prompt" for non-interactive runs |
GitHub Copilot
GitHub · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | ✅ | .github/copilot-instructions.md |
| Nested / scoped rules | ✅ | .github/instructions/*.instructions.md with an applyTo glob in frontmatter |
| User-level rules | 🟡 | Personal instructions configured in GitHub settings, not a repo file |
| AGENTS.md | 🟡 | AGENTS.md is honoured by the coding agent; the .github/ files are the documented path |
| MCP servers | ✅ | .vscode/mcp.json in VS Code; separate configuration for the coding agent |
| Skills | ❌ | No skills equivalent |
| Subagents | ❌ | Single-agent model |
| Hooks | ❌ | No user-defined hook surface |
| Custom commands | ✅ | .github/prompts/*.prompt.md |
| Headless / CI mode | 🟡 | The coding agent runs on GitHub against issues and PRs rather than as a local CLI |
Cursor
Anysphere · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | ✅ | .cursor/rules/*.mdc — frontmatter carries description, globs, alwaysApply |
| Nested / scoped rules | ✅ | .cursor/rules/ in a subdirectory scopes to that tree; globs scopes by path pattern |
| User-level rules | ✅ | User Rules in Settings, not a file on disk |
| AGENTS.md | 🟡 | AGENTS.md is read; .cursor/rules/ is the native mechanism |
| MCP servers | ✅ | .cursor/mcp.json per project, or global in settings |
| Skills | ❌ | No progressive-disclosure equivalent; rules are always-on or glob-scoped |
| Subagents | 🟡 | Background agents run tasks independently, but are not per-repo configured personas |
| Hooks | 🟡 | Limited event hooks; not a general pre/post tool-call interception surface |
| Custom commands | 🟡 | .cursor/commands/ exists; less central than in CLI-first tools |
| Headless / CI mode | 🟡 | Background and CLI agents exist; not a first-class scriptable pipeline mode |
Gemini CLI
Google · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | ✅ | GEMINI.md at the repo root |
| Nested / scoped rules | ✅ | GEMINI.md in subdirectories, hierarchically merged |
| User-level rules | ✅ | ~/.gemini/GEMINI.md |
| AGENTS.md | 🟡 | Configurable context filename; GEMINI.md is the default |
| MCP servers | ✅ | .gemini/settings.json or ~/.gemini/settings.json |
| Skills | 🟡 | Extensions bundle tools and context, closer to plugins than to on-demand skills |
| Subagents | 🟡 | Subagent support exists; less configurable than a per-repo agent definition |
| Hooks | 🟡 | Extension and tool-confirmation surfaces rather than general hooks |
| Custom commands | ✅ | .gemini/commands/*.toml |
| Headless / CI mode | ✅ | gemini -p "prompt" |
OpenCode
SST · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | ✅ | AGENTS.md at the repo root |
| Nested / scoped rules | ✅ | AGENTS.md in subdirectories |
| User-level rules | ✅ | ~/.config/opencode/AGENTS.md |
| AGENTS.md | ✅ | Native format |
| MCP servers | ✅ | opencode.json |
| Skills | 🟡 | Plugin system covers some of the same ground |
| Subagents | ✅ | Agent definitions with their own model and tool set |
| Hooks | ✅ | Plugin hooks on tool and session events |
| Custom commands | ✅ | Custom commands in the config directory |
| Headless / CI mode | ✅ | opencode run "prompt" |
Windsurf
Cognition · docs · ⚠️ unverified
| Capability | | Detail |
| --- | :-: | --- |
| Project rules file | ✅ | .windsurf/rules/*.md (legacy .windsurfrules still read) |
| Nested / scoped rules | 🟡 | Activation modes (always-on, glob, manual, model-decided) rather than directory nesting |
| User-level rules | ✅ | Global rules configured in the app |
| AGENTS.md | 🟡 | AGENTS.md support has been added; the native path is .windsurf/rules/ |
| MCP servers | ✅ | ~/.codeium/windsurf/mcp_config.json |
| Skills | ❌ | Workflows are closer to saved procedures than to on-demand skills |
| Subagents | ❌ | Single-agent model |
| Hooks | ❌ | No user-defined hook surface |
| Custom commands | ✅ | .windsurf/workflows/*.md, invoked as slash commands |
| Headless / CI mode | ❌ | IDE-bound |
Converting rules between tools
# one rules file to several targets
npx github:mohitagw15856/agent-rosetta convert CLAUDE.md --to cursor,copilot
# see what a conversion would write, without writing it
npx github:mohitagw15856/agent-rosetta convert CLAUDE.md --to cursor --dry-run
# what does tool A have that tool B does not?
npx github:mohitagw15856/agent-rosetta diff claude-code cursorThe converter handles the parts that are mechanical and easy to get wrong: the target path, and the frontmatter each format requires (Cursor .mdc wants description/globs/alwaysApply; Copilot .instructions.md wants applyTo). It does not rewrite your prose, and it says so in a header comment on every file it produces — a converted rules file is a starting point, not a finished one.
What does not convert
- Skills have no equivalent in most tools. Converting one flattens it into always-on rules, which is usually wrong.
- Hooks are per-tool executable config, not instructions. There is nothing to translate.
- MCP config is close to portable but the file path and schema differ per tool. Listed above; not auto-converted.
- Subagent definitions assume a delegation model most tools do not have.
A note on AGENTS.md
AGENTS.md is the closest thing to a cross-tool standard, and the column above is the honest picture: several tools read it, most still prefer their own filename, and "reads it" covers a range from full parity to a fallback when the native file is missing. If you are starting fresh, AGENTS.md is the best single bet — and this matrix is how you check whether that bet still holds for the tools your team actually uses.
Contributing
One file per tool in tools/. Every tool must answer every axis — a missing cell fails CI, because an incomplete matrix is worse than no matrix. See CONTRIBUTING.md.
Licence
Code MIT, data CC0.
Generated by scripts/build.mjs. Do not edit this file directly.
