One setup, every AI CLI with agnostic-AI Agnostic-ai, an open-source tool from developer Chemaclass, generates native configuration files for 25 AI coding CLI targets from a single Markdown-and-YAML source stored in the user's repository, with a `sync --check` command that fails CI when generated files drift. The tool supports 10 portable spec kinds and translates per-target details such as model maps, tool names, and effort settings into each CLI's native format, including Claude, Codex, Cursor, and Gemini. It is installed via a curl script from the project's GitHub repository and requires no account or service. You own the source Plain Markdown and YAML in your repo. No account, no service. import brings an existing setup in. Keep agents, skills, rules, hooks, and MCP servers in one portable source . agnostic-ai writes each tool's native files and checks them for drift. Recommended installer All install options https://agnostic-ai.org/docs/installation/ curl -fsSL https://raw.githubusercontent.com/Chemaclass/agnostic-ai/main/scripts/install.sh | bash 25 targets. 10 portable spec kinds. Byte-stable output. --- name: reviewer description: Reviews a diff for bugs, style, and architectural issues. tools: Read, Grep, Glob model: claude: claude-opus-5-5 codex: gpt-6-sol effort: high --- Read the diff. Report bugs, unclear naming, and missing tests. Cite every finding with a file:line reference. Markdown with YAML frontmatter. The per-target model map resolves to model: claude-opus-5-5 , effort keeps its name, and the three tools pass through as written. --- name: reviewer description: Reviews a diff for bugs, style, and architectural issues. tools: - Read - Grep - Glob model: claude-opus-5-5 effort: high --- < -- Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run agnostic-ai sync . -- Read the diff. Report bugs, unclear naming, and missing tests. Cite every finding with a file:line reference. TOML, not Markdown. The map resolves to gpt-6-sol , effort becomes Codex's own model reasoning effort , the body becomes developer instructions , and there is no tools key at all. Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run agnostic-ai sync . name = "reviewer" description = "Reviews a diff for bugs, style, and architectural issues." model = "gpt-6-sol" model reasoning effort = "high" developer instructions = """ Read the diff. Report bugs, unclear naming, and missing tests. Cite every finding with a file:line reference. """ tools and effort are dropped. Sync says why: Cursor subagents have neither field, so use readonly: true for a coarse restriction and put effort in the model id, such as claude-opus-5 effort=high . --- name: reviewer description: Reviews a diff for bugs, style, and architectural issues. --- < -- Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run agnostic-ai sync . -- Read the diff. Report bugs, unclear naming, and missing tests. Cite every finding with a file:line reference. The tool names are translated into Gemini vocabulary. No model line, because the map has no gemini key and no default. No effort line either: Gemini agents have no effort key, and sync prints a note. --- name: reviewer description: Reviews a diff for bugs, style, and architectural issues. tools: - read file - grep search - glob --- < -- Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run agnostic-ai sync . -- Read the diff. Report bugs, unclear naming, and missing tests. Cite every finding with a file:line reference. The tools pass through untranslated, and effort keeps its name. No model line here either, for the same reason as Gemini. --- name: reviewer description: Reviews a diff for bugs, style, and architectural issues. tools: - Read - Grep - Glob effort: high --- < -- Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run agnostic-ai sync . -- Read the diff. Report bugs, unclear naming, and missing tests. Cite every finding with a file:line reference. Every AI coding tool ships its own config file. Adopt three and your instructions live in three places, drifting apart. agnostic-ai keeps one source in your repository and writes the rest. Same input, same bytes, so they diff cleanly. sync --check fails CI when they drift. Adding a target never changes what the others get. One rule routes to every native path and scope syntax. Easy to stop using. The generated files are yours, and they keep working. Why not just symlink one file? Each tool reads a different format at a different path. A symlink shares bytes. It cannot translate them. See how the formats diverge https://agnostic-ai.org/docs/alternatives-why-not-symlinks/ agnostic-ai init --from all Import existing AI tool files first. agnostic-ai sync --dry-run Preview every native file before writing it. agnostic-ai sync Write every native file for the targets you chose. The five most complete integrations, across six of the ten spec kinds. The other four: settings https://agnostic-ai.org/docs/spec-format/ settings , review https://agnostic-ai.org/docs/spec-format/ reviews , environment https://agnostic-ai.org/docs/spec-format/ environments , ignore https://agnostic-ai.org/docs/spec-format/ ignore . Native uses the target's dedicated format automatically. Opt-in links to the setting you need. | Target | Agents | Skills | Rules | Hooks | MCP | Commands | |---|---|---|---|---|---|---| | Claude https://agnostic-ai.org/docs/targets/claude/ | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | CommandsNative | | Codex https://agnostic-ai.org/docs/targets/codex/ | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | Commands Opt-in https://agnostic-ai.org/docs/targets/codex/ config-keys | | Cursor https://agnostic-ai.org/docs/targets/cursor/ | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | CommandsNative | | Gemini https://agnostic-ai.org/docs/targets/gemini/ | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | CommandsNative | | Copilot https://agnostic-ai.org/docs/targets/copilot/ | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | CommandsNo output | What shipped in agnostic-ai, and what changed upstream in the tools it targets.