Keep AI-agent instruction files (CLAUDE.md, AGENTS.md, Cursor rules, Copilot) in sync from one source of truth, with a CI drift check.
Project description
agentsync
One source of truth for your AI-agent instructions. Stop hand-syncing CLAUDE.md, AGENTS.md, Cursor rules, and Copilot instructions — and fail CI when they drift.
Every coding agent wants its own file: CLAUDE.md, AGENTS.md, .cursor/rules/*.mdc,
.github/copilot-instructions.md. Teams keep duplicate copies that silently diverge —
the most-requested gap in the ecosystem.
agentsync generates them all from one source and gives you a CI check that fails the
build the moment they fall out of sync.
pipx install mujin-agentsync # command: agentsync
agentsync sync # AGENTS.md -> CLAUDE.md (zero config), or per .agentsync.json
agentsync check # exit 1 if any generated file has drifted (drop into CI)
Zero config
If you have an AGENTS.md (or CLAUDE.md), agentsync sync mirrors it to the other one.
That's the whole "Claude Code won't read my AGENTS.md" problem solved in one command.
Find what you already have — discover
Not sure which agent-config files are scattered around your repo? Let agentsync find them:
agentsync discover # scan the project tree
agentsync discover --global # also check ~/.claude, ~/.codex, …
found 5 agent-config file(s):
AGENTS.md AGENTS.md standard (Codex, Gemini, Cursor, Zed, …)
CLAUDE.md Claude Code
.cursor/rules/main.mdc Cursor
.github/copilot-instructions.md GitHub Copilot
packages/api/CLAUDE.md Claude Code
It recognizes CLAUDE.md, AGENTS.md, GEMINI.md, Cursor .mdc rules, Copilot
instructions, and legacy .cursorrules/.clinerules/.windsurfrules — and skips
node_modules, .git, etc. (Pattern-based on your project tree, not a full-disk crawl.)
Choose your source of truth
You decide which file is canonical. Precedence: --source flag › source in
.agentsync.json › auto (first of AGENTS.md, CLAUDE.md).
agentsync sync --source CLAUDE.md # make CLAUDE.md the source, generate the rest
More targets — .agentsync.json
{
"source": "AGENTS.md",
"targets": [
{ "path": "CLAUDE.md", "format": "markdown" },
{ "path": ".github/copilot-instructions.md", "format": "markdown" },
{ "path": ".cursor/rules/agents.mdc", "format": "cursor" }
]
}
agentsync init writes a starter config. cursor targets get the right .mdc frontmatter
(alwaysApply: true); markdown targets are mirrored with a "generated — don't edit" header.
CI drift gate
# .github/workflows/agent-config.yml
jobs:
agentsync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.11" }
- run: pipx install mujin-agentsync
- run: agentsync check # fails the build if a generated file was hand-edited
Now nobody can quietly edit CLAUDE.md and let AGENTS.md rot — the source stays canonical.
Why this design
- Deterministic. Targets are reproducible from the source, so
checkis exact — no guessing, no LLM, no network. Zero dependencies (Python ≥3.9). - Source-first. You pick the one file you actually maintain; everything else is generated.
- Local and offline — it reads and writes files, nothing else.
Next to this
Once your agent config is consistent, audit it for security & quality with
agentaudit (pipx install mujin-agentaudit) —
it flags curl|bash, secret access, prompt injection, and more in skills / MCP servers / plugins.
Built by Mujin Labs — tooling for the autonomous-agent era. MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mujin_agentsync-0.2.0.tar.gz.
File metadata
- Download URL: mujin_agentsync-0.2.0.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92b70bae10d2701e4e0b54fa27f0c5173e7e04fbb34d340ddc6d79d5d89d4dc8
|
|
| MD5 |
075e42385e2544f40166b99c694ed994
|
|
| BLAKE2b-256 |
86d0ec3be450e8a6dc85730fe3c18fc30d59a0011c845cb5e640f5be931edeb5
|
File details
Details for the file mujin_agentsync-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mujin_agentsync-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ebde98242fbf59184a01327aad1d68bd67ae70a9d70bf03156db50bcc6dfe30
|
|
| MD5 |
8b60a6566d9320d5d675f63564060c2a
|
|
| BLAKE2b-256 |
791fbac90ddb34c8aced87cb1f88edc097720edc006e1823609c3a72cc1a9390
|