One spec.
Every AI CLI.

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.

25 supported targets. 20 enabled by default. One source of truth.

Set up agnostic-ai with a coding agentGive a coding agent one safe workflow to install, import, configure, sync, and verify agnostic-ai in any repository.

one specnative output
.agnostic-ai/rules/commits.md
---
name: conventional-commits
globs: "**/*"
---
Use Conventional Commits.
CLAUDE.md
.cursor/rules/commits.mdc
GEMINI.md · AGENTS.md
.junie/AGENTS.md · .kiro/steering · +13

Same content, N formats, endless drift.

Every AI coding tool invented its own config file. The instructions are identical. Only the wrapper differs. Copy and paste keeps them in sync until it doesn't, and a stale GEMINI.md is a silent bug.

Without agnostic-ai

  • Write the same rule into CLAUDE.md, .cursor/rules, GEMINI.md, and AGENTS.md.
  • Edit one, forget the others. They drift apart.
  • Onboard a new tool and hand-port everything again.
  • No review check tells you which files fell behind.

With agnostic-ai

  • Write it once in plain Markdown and YAML frontmatter.
  • Run sync. Every tool gets its native format.
  • Add a tool with one line in targets.
  • sync --check fails CI when output drifts.

One source of truth, 25 tools, each native.

Compare ten of the broadest integrations across the configuration surfaces teams use most. Yes means one portable agnostic-ai spec reaches a native target surface.

Coverage counts all 10 portable spec kinds. Permissions means portable allow, deny, and ask settings.
ToolCoverageRulesAgentsSkillsMCPHooksCommandsPermissions
Cursor9/10YesYesYesYesYesYesNo
Claude Code7/10YesYesYesYesYesYesYes
Codex CLI7/10YesYesYesYesYesYesNo
Gemini CLI7/10YesYesYesYesYesYesNo
Qoder7/10YesYesYesYesYesYesYes
Trae7/10YesYesYesYesYesYesNo
Junie7/10YesYesYesYesNoYesNo
Kilo Code7/10YesYesYesYesNoYesNo
Augment Code7/10YesYesYesYesYesYesNo
GitHub Copilot6/10YesYesYesYesYesNoNo

See paths and all 25 targets

Two layers, one command.

Drop a file in .agnostic-ai/, then run agnostic-ai sync. Each target gets a slim shared entry point and the real spec rendered into that tool's native location.

Write once

Add one Markdown file with YAML frontmatter under .agnostic-ai/rules/, agents/, skills/, hooks/, or mcps/.

Emit native

Stateless adapters write each target's format at the path it loads. Same input, same bytes. Run targets in parallel with --jobs.

Never drift

sync --check re-emits in memory and fails CI on any difference. import pulls existing configuration back into specs.

brew install --cask Chemaclass/tap/agnostic-ai

macOS. Upgrade with brew update && brew upgrade --cask Chemaclass/tap/agnostic-ai.

irm https://raw.githubusercontent.com/Chemaclass/agnostic-ai/main/scripts/install.ps1 | iex

Windows 10 and 11, in PowerShell. The script selects your CPU archive, checks it, and adds the binary to PATH.

curl -fsSL https://raw.githubusercontent.com/Chemaclass/agnostic-ai/main/scripts/install.sh | bash

No package manager or Go required. The script selects the archive for your OS and CPU, verifies it, and installs the binary.

go install github.com/chemaclass/agnostic-ai/cmd/agnostic-ai@latest

Any platform with Go 1.24+. Make sure $(go env GOPATH)/bin is on your PATH.

curl -sSL https://github.com/Chemaclass/agnostic-ai/releases/latest/download/agnostic-ai_darwin_arm64.tar.gz | tar xz

Swap darwin_arm64 for your release archive. Windows builds and checksums.txt are on the releases page.

.agnostic-ai/rules/conventional-commits.md
---
name: conventional-commits
description: Always use Conventional Commits.
globs: "**/*"
alwaysApply: true
---

Use Conventional Commits. Subject under
72 chars. Body explains why, not what.
agnostic-ai sync
.cursor/rules/conventional-commits.mdc
---
description: Always use Conventional Commits.
globs: "**/*"
---
<!-- Generated by agnostic-ai -->
Use Conventional Commits. Subject under 72 chars.

Byte-stable, reviewable

Stateless adapters mean the same input produces the same output. Generated files diff cleanly.

Round-trip safe

A provenance marker and style preservation keep import then sync byte-stable.

Scoped rules

rules/backend/auth.md routes to each target's native directory and scope syntax.

CI gate in one line

The check action fails a pull request when generated configuration drifts from source.

Write the rule once.
Every AI tool obeys it.

go install github.com/chemaclass/agnostic-ai/cmd/agnostic-ai@latest