AGENTS.md is the cross-tool standard for AI coding instructions, but Claude Code still looks for CLAUDE.md and .claude/skills/. Instead of maintaining two copies, use symlinks so both conventions resolve to the same files.
Most AI coding tools (Cursor, GitHub Copilot, OpenCode) read AGENTS.md and .agents/skills/. Claude Code reads CLAUDE.md and .claude/skills/. If you maintain separate files, they drift apart and your team gets inconsistent AI behavior depending on which tool they use.
Symlinks let you keep one source of truth while satisfying both conventions.
Keep your instructions in AGENTS.md (the cross-tool standard) and symlink CLAUDE.md to it:
ln -s AGENTS.md CLAUDE.md
Keep your skills in .agents/skills/ and symlink from .claude/skills/:
# Ensure the source and target directories existmkdir -p .agents/skillsmkdir -p .claude# Create the symlink so Claude sees the same skillsln -s ../.agents/skills .claude/skills
├── AGENTS.md├── CLAUDE.md ← copy of AGENTS.md (manually maintained)├── .agents/│ └── skills/│ └── commit/│ └── SKILL.md└── .claude/└── skills/└── commit/└── SKILL.md ← copy of .agents/skills/commit/SKILL.md (manually maintained)
❌ Figure: Bad example - Duplicated files will drift apart and cause inconsistent AI behavior
├── AGENTS.md ← single source of truth├── CLAUDE.md → AGENTS.md ← symlink├── .agents/│ └── skills/ ← single source of truth│ └── commit/│ └── SKILL.md└── .claude/└── skills → ../.agents/skills ← symlink
✅ Figure: Good example - Symlinks keep one source of truth — edit once, both tools pick it up
Git tracks symlinks natively. When you commit and push, your teammates get the same symlinks when they clone or pull — no extra setup needed.
git add CLAUDE.md .claude/skillsgit commit -m "Add symlinks from .claude to .agents for Claude Code compatibility"
Note: On Windows, git may need core.symlinks=true to properly handle symlinks. Most modern Git for Windows installations handle this by default, but if symlinks appear as plain text files, run:
git config core.symlinks true
and re-checkout the files.
The .claude/ directory may also contain Claude Code-specific configuration files like settings.json and settings.local.json. These are unique to Claude Code and don't belong in .agents/, so don't symlink the entire .claude/ directory — only symlink the shared items (skills).