One AGENTS.md, every tool.
Sync your AI coding instructions across every tool on your machine — with zero magic, just symlinks.
Different tools want different files at project root: AGENTS.md, CLAUDE.md, GEMINI.md, .cursorrules. There’s no standard, and waiting for one is expensive. Agentlink keeps them in sync through symlinks. Edit one, every tool sees the change.
Why Agentlink?
Creating AI instruction files is cheap — keeping them in sync is the hard part. Good instruction files matter, and they’re often generated by expensive models. Agentlink fixes the sync problem the boring way: one real file, many aliases.
One real file, many aliases
Pick a source (AGENTS.md, CLAUDE.md, whatever). Every other tool file is a symlink to it. No duplicates, no drift.
Zero codegen
No templates, no transforms, no surprise diffs. Symlinks are a 50-year-old OS feature. Edit the source, every tool sees it instantly.
Future-proof
Tomorrow’s AI tool wants workspace/ai/newthing.md? Add it to the config. Agentlink creates the directories and wires the link.
Project and global
Works in repos and under ~/.config/. One agentlink sync keeps both scopes in shape.
Idempotent
Re-run safely. Broken or misdirected links get repaired. Nothing is ever overwritten; real files are backed up before anything changes.
Automatic triggers
Built-in git hooks, shell hooks, and launchd integration keep things synced without you remembering to run it.
Tools covered out of the box
| Tool | File it expects |
|---|---|
| Aider | AGENTS.md |
| Amp | AGENTS.md |
| Antigravity | AGENTS.md |
| Autohand | AGENTS.md |
| Claude Code | CLAUDE.md |
| Codex CLI | AGENTS.md |
| Cursor | AGENTS.md |
| Factory (Droid) | AGENTS.md |
| Gemini CLI | GEMINI.md |
| GitHub Copilot | .github/copilot-instructions.md |
| Goose | .goosehints |
| Junie | .junie/AGENTS.md |
| Kilo Code | AGENTS.md |
| OpenCode | AGENTS.md |
| RooCode | .roo/rules/rules.md |
| Windsurf | AGENTS.md |
| Zed | AGENTS.md |
| Anything else | (add to config) |
Full registry in internal/registry/tools.go. Tools without a project-root instruction file (e.g. Cline, Continue) still work in global scope via their own config paths.
Scope is deliberately narrow: instruction files only. No MCP config, no chain configs. Simple on purpose.
Install
Requires Go 1.23+. Binary releases and Homebrew formula are on the roadmap; for now, install from source.
From source
git clone https://github.com/snapsynapse/agentlink.git cd agentlink go install ./cmd/agentlink/ # Verify agentlink --help
One-liner
go install github.com/snapsynapse/agentlink/cmd/agentlink@latest # Make sure $GOPATH/bin is on PATH export PATH="$HOME/go/bin:$PATH"
Installs the latest tagged release into your Go bin directory.
Usage
Declare your source file and the aliases you want. Agentlink creates and repairs the symlinks.
Project config
# .agentlink.yaml (in project root) source: AGENTS.md links: - CLAUDE.md - GEMINI.md - .cursorrules - .github/copilot-instructions.md # Then: agentlink sync
Global config
# ~/.config/agentlink/config.yaml source: ~/AGENTS.md links: - ~/.claude/CLAUDE.md - ~/.codex/AGENTS.md - ~/.gemini/GEMINI.md - ~/.config/opencode/AGENTS.md # Then: agentlink sync --global
Detect installed tools
# Scan the system for AI tool installs # and report what's found. agentlink detect # Walk a directory tree and wire up # symlinks in every repo with AGENTS.md. agentlink scan ~/Git
Automatic triggers
# Install git/shell/launchd hooks so # sync runs without you thinking about it. agentlink hooks install # Uninstall cleanly. agentlink hooks uninstall