AGENTS.md is the cross-tool standard for AI coding instructions, but some tools still look for their own files — Claude Code wants CLAUDE.md and .claude/skills/, and GitHub Copilot's PR review reads .github/copilot-instructions.md. Instead of maintaining multiple copies, use symlinks so every convention resolves to the same source.
Most AI coding tools (Cursor, GitHub Copilot, OpenCode) read AGENTS.md and .agents/skills/. Claude Code reads CLAUDE.md and .claude/skills/. GitHub Copilot's pull request review feature reads .github/copilot-instructions.md. 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
GitHub Copilot's pull request review feature reads .github/copilot-instructions.md. Symlink it to AGENTS.md so PR reviews use the same instructions:
ln -s ../AGENTS.md .github/copilot-instructions.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)├── .github/│ └── copilot-instructions.md ← another copy (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├── .github/│ └── copilot-instructions.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 .github/copilot-instructions.md .claude/skillsgit commit -m "Symlink tool-specific files to AGENTS.md for cross-tool 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).