Skip to main content

Multi-tool compatibility

One canonical contract, thin pointers everywhere else.

The map

ToolFileNative AGENTS.md?
Claude CodeCLAUDE.mdyes
Codex (OpenAI)AGENTS.md, CODEX.mdyes — it is the native format
Cursor.cursor/rules/*.mdcno
GitHub Copilot.github/copilot-instructions.mdno
Gemini CLIGEMINI.mdno
Windsurf.windsurfrulesno
Zed.rulesrecent versions, yes
Grok / xAIAGENTS.mdyes
Cline / Roo.clinerulesno
OpenCodeAGENTS.mdyes
AiderCONVENTIONS.md (--read)no

AGENTS.md is the anchor because it is the closest thing to a cross-vendor standard — five of these read it directly, and the rest need a two-line pointer. Putting conventions anywhere else means translating them N times and watching the copies drift.

Generating the pointers

templates/shared/agent/sync-agent-files.sh # write them all
templates/shared/agent/sync-agent-files.sh --check # CI: fail if one drifted

Every pointer is generated from the single AGENTS.md, so adding a tool is one line in the script rather than another file to keep in step. The --check mode belongs in CI: a pointer someone edited by hand is exactly the drift this is meant to prevent.

What transfers, and what does not

CapabilityPortability
MCP serversExcellent. Cursor, Codex, Copilot, Gemini, Windsurf all support it — different config file, same servers
InstructionsExcellent, via the pointer pattern above
SkillsPartial. npx skills installs to several agent directories at once; Copilot and Cursor have their own shapes
SubagentsPoor. Copilot has agents, Cursor has background agents, the shapes differ
HooksWorst. Claude Code and Cursor have them; most others have nothing

So: put anything that must hold everywhere into AGENTS.md and MCP. Reserve hooks for the machine where Claude Code is the daily driver — and accept that a teammate on Cursor gets the instruction but not the enforcement.

Practical advice

  • On a corporate machine, Copilot is often the only approved tool. Put the effort into .github/instructions/<area>.instructions.md with applyTo: globs — scoped instruction files are the highest-leverage thing available there.
  • Keep a second agent installed. When one loops twice on a bug, a different model frequently breaks it. Codex reads the same AGENTS.md, so the switch costs nothing.
  • Never let a tool-specific file carry a convention of its own. The moment it does, you have two contracts.