You write CLAUDE.md, then .cursor/rules, then GEMINI.md, then AGENTS.md. The same content in four formats. Switch tools and you rewrite everything. agnostic-ai keeps one source of truth and emits each tool's native config, byte-stable across runs.
Every AI coding tool invented its own config file. The instructions are identical; only the wrapper differs. Copy-paste keeps them in sync until it doesn't, and a stale GEMINI.md is a silent bug.
CLAUDE.md, .cursor/rules, GEMINI.md, AGENTS.md…sync; every tool gets its native format.targets.sync --check fails CI the moment output drifts.Author agents, skills, rules, hooks, commands, and MCP servers under .agnostic-ai/. Stateless adapters translate them into every target's documented location and shape, aligned with the AGENTS.md open standard. 16 targets emit by default; Amp and Warp are opt-in.
Drop a file in .agnostic-ai/, run agnostic-ai sync. Each target gets two things: a slim shared entry-point that points at the canonical body, and the real spec rendered into that tool's native per-file location.
One Markdown file with YAML frontmatter under .agnostic-ai/rules/, agents/, skills/, hooks/, or mcps/. Plain, reviewable, tool-agnostic.
Stateless adapters write each target's format at the path it auto-loads. Same input, same bytes. Diffable and reviewable. Run targets in parallel with --jobs.
sync --check re-emits in memory and fails CI on any difference, printing a per-file diff of what drifted. import pulls existing configs back into specs; the round-trip stays byte-stable.
brew install --cask Chemaclass/tap/agnostic-aimacOS. Upgrades with brew update && brew upgrade --cask Chemaclass/tap/agnostic-ai.
irm https://raw.githubusercontent.com/Chemaclass/agnostic-ai/main/scripts/install.ps1 | iexWindows 10 and 11, in PowerShell. Picks the archive for your CPU, checks it against checksums.txt, and puts the binary on PATH. Prefer a zip? Use the Binary tab.
curl -fsSL https://raw.githubusercontent.com/Chemaclass/agnostic-ai/main/scripts/install.sh | bashirm https://raw.githubusercontent.com/Chemaclass/agnostic-ai/main/scripts/install.ps1 | iexNo package manager, no Go. Each script picks the archive for your OS and CPU, checks it against checksums.txt, and puts the binary on PATH.
go install github.com/chemaclass/agnostic-ai/cmd/agnostic-ai@latestAny platform with Go 1.24+. Installs into $(go env GOPATH)/bin, so make sure that is on your PATH.
curl -sSL https://github.com/Chemaclass/agnostic-ai/releases/latest/download/agnostic-ai_darwin_arm64.tar.gz | tar xzSwap darwin_arm64 for darwin_amd64, linux_amd64, or linux_arm64. Windows builds ship as .zip on the releases page, alongside checksums.txt.
agnostic-ai upgrade detects which of these you used and prints the matching command; --check also flags another agnostic-ai shadowing it on PATH.
--- name: conventional-commits description: Always use Conventional Commits. globs: "**/*" alwaysApply: true --- Use Conventional Commits. Subject under 72 chars. Body explains why, not what.
# AI Project Conventions Every supported AI tool reads this body from its native entry-point.
--- description: Always use Conventional… globs: "**/*" --- <!-- Generated by agnostic-ai --> Use Conventional Commits. Subject…
Stateless adapters mean same input, same output. Generated files diff cleanly and are safe to commit or ignore.
A provenance marker plus style preservation keeps import then sync byte-stable. Adopt gradually from what you already have.
rules/backend/auth.md routes to .cursor/rules/backend/auth.mdc and Copilot's applyTo: backend/** automatically.
Drop the check action into your workflow and PRs fail the moment generated config drifts from source.