Type to search the docs and updates.

Browse documentation

Why agnostic-ai

Every AI coding tool wants its own config: CLAUDE.md, AGENTS.md, .cursor/rules/*.mdc, skills, hooks, MCP servers. Each one has its own path, format, and keys. Use two tools and you keep two copies. They drift.

The same server, four formats

One MCP server, written once in .agnostic-ai/mcps/github.yaml:

name: github
type: http
url: https://api.githubcopilot.com/mcp/

agnostic-ai sync writes it where each tool reads it:

ToolFileShape
Claude Code.mcp.jsonmcpServers.github.url
Codex.codex/config.toml[mcp_servers.github] with url
Gemini CLI.gemini/settings.jsonmcpServers.github.httpUrl
Zed.zed/settings.jsoncontext_servers.github.url

Hooks differ the same way. The event before a tool call is PreToolUse in Claude Code and BeforeTool in Gemini CLI.

Why the usual fixes fall short

  • A symlink shares bytes. It cannot turn YAML into TOML or rename a key. On Windows it needs admin rights or Developer Mode, and Git for Windows checks it out as a text file by default.
  • Copy and paste works until someone edits one copy.
  • One AGENTS.md is read by many tools, and it carries plain instructions well. It cannot carry skills, hooks, MCP servers, agents, rules scoped to some files, or per-tool frontmatter such as a model name.
  • Your own script works for the formats you know today. Tools change their formats often, and the script is yours to fix each time.

What agnostic-ai does

  • One source. Plain Markdown and YAML in .agnostic-ai/, committed with your code.
  • Native output. sync writes each tool's own files for 25 targets, AGENTS.md included.
  • A CI gate. sync --check fails the build when a generated file drifts from its spec.
  • Easy to adopt. init --from all imports the config you already have and keeps its behavior.
  • Safe on shared files. Sync keeps your hand-written keys in files such as .claude/settings.json, and revert undoes a sync --backup.
  • Easy to leave. The generated files are yours and keep working without agnostic-ai.

When you do not need it

One tool: use its own files. Two tools that read the same Markdown at the same path: a symlink is enough. agnostic-ai pays off once a second tool wants a different format.

Start

Install agnostic-ai, then at your project root:

agnostic-ai init --from all
agnostic-ai sync --plan
agnostic-ai sync

New project with no config yet? Follow Getting started.