{"slug": "one-setup-every-ai-cli-with-agnostic-ai", "title": "One setup, every AI CLI with agnostic-AI", "summary": "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.", "body_md": "### You own the source\n\nPlain Markdown and YAML in your repo. No account, no service. `import` brings an existing setup in.\n\nKeep agents, skills, rules, hooks, and MCP servers in **one portable source**. agnostic-ai writes each tool's native files and checks them for drift.\n\nRecommended installer[All install options](https://agnostic-ai.org/docs/installation/)\n\n`curl -fsSL https://raw.githubusercontent.com/Chemaclass/agnostic-ai/main/scripts/install.sh | bash`\n25 targets. 10 portable spec kinds. Byte-stable output.\n\n```\n---\nname: reviewer\ndescription: Reviews a diff for bugs, style, and architectural issues.\ntools: [Read, Grep, Glob]\nmodel:\n  claude: claude-opus-5-5\n  codex: gpt-6-sol\neffort: high\n---\nRead the diff. Report bugs, unclear naming, and missing tests.\nCite every finding with a `file:line` reference.\n```\n\nMarkdown 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.\n\n```\n---\nname: reviewer\ndescription: Reviews a diff for bugs, style, and architectural issues.\ntools:\n  - Read\n  - Grep\n  - Glob\nmodel: claude-opus-5-5\neffort: high\n---\n\n<!-- Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run `agnostic-ai sync`. -->\n\nRead the diff. Report bugs, unclear naming, and missing tests.\nCite every finding with a `file:line` reference.\n```\n\nTOML, 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.\n\n```\n# Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run `agnostic-ai sync`.\nname = \"reviewer\"\ndescription = \"Reviews a diff for bugs, style, and architectural issues.\"\nmodel = \"gpt-6-sol\"\nmodel_reasoning_effort = \"high\"\ndeveloper_instructions = \"\"\"\nRead the diff. Report bugs, unclear naming, and missing tests.\nCite every finding with a `file:line` reference.\n\"\"\"\n```\n\n`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]`.\n\n```\n---\nname: reviewer\ndescription: Reviews a diff for bugs, style, and architectural issues.\n---\n\n<!-- Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run `agnostic-ai sync`. -->\n\nRead the diff. Report bugs, unclear naming, and missing tests.\nCite every finding with a `file:line` reference.\n```\n\nThe 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.\n\n```\n---\nname: reviewer\ndescription: Reviews a diff for bugs, style, and architectural issues.\ntools:\n  - read_file\n  - grep_search\n  - glob\n---\n\n<!-- Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run `agnostic-ai sync`. -->\n\nRead the diff. Report bugs, unclear naming, and missing tests.\nCite every finding with a `file:line` reference.\n```\n\nThe tools pass through untranslated, and `effort` keeps its name. No model line here either, for the same reason as Gemini.\n\n```\n---\nname: reviewer\ndescription: Reviews a diff for bugs, style, and architectural issues.\ntools:\n  - Read\n  - Grep\n  - Glob\neffort: high\n---\n\n<!-- Generated by agnostic-ai. Do not edit this file directly; edit specs under .agnostic-ai/ and run `agnostic-ai sync`. -->\n\nRead the diff. Report bugs, unclear naming, and missing tests.\nCite every finding with a `file:line` reference.\n```\n\nEvery 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.\n\nSame input, same bytes, so they diff cleanly. `sync --check` fails CI when they drift.\n\nAdding a target never changes what the others get. One rule routes to every native path and scope syntax.\n\nEasy to stop using. The generated files are yours, and they keep working.\n\n**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/)\n\n`agnostic-ai init --from all`\nImport existing AI tool files first.\n\n`agnostic-ai sync --dry-run`\nPreview every native file before writing it.\n\n`agnostic-ai sync`\nWrite every native file for the targets you chose.\n\nThe 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).\n\n**Native** uses the target's dedicated format automatically. **Opt-in** links to the setting you need.\n\n| Target | Agents | Skills | Rules | Hooks | MCP | Commands | \n|---|---|---|---|---|---|---|\n| [Claude](https://agnostic-ai.org/docs/targets/claude/) | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | CommandsNative | \n| [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) | \n| [Cursor](https://agnostic-ai.org/docs/targets/cursor/) | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | CommandsNative | \n| [Gemini](https://agnostic-ai.org/docs/targets/gemini/) | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | CommandsNative | \n| [Copilot](https://agnostic-ai.org/docs/targets/copilot/) | AgentsNative | SkillsNative | RulesNative | HooksNative | MCPNative | CommandsNo output | \n\nWhat shipped in agnostic-ai, and what changed upstream in the tools it targets.", "url": "https://wpnews.pro/news/one-setup-every-ai-cli-with-agnostic-ai", "canonical_source": "https://agnostic-ai.org/", "published_at": "2026-09-23 23:10:16+00:00", "updated_at": "2026-09-23 23:30:31.302386+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents", "agent-protocols"], "entities": ["agnostic-ai", "Chemaclass", "GitHub", "Claude", "Codex", "Cursor", "Gemini"], "alternates": {"html": "https://wpnews.pro/news/one-setup-every-ai-cli-with-agnostic-ai", "markdown": "https://wpnews.pro/news/one-setup-every-ai-cli-with-agnostic-ai.md", "text": "https://wpnews.pro/news/one-setup-every-ai-cli-with-agnostic-ai.txt", "jsonld": "https://wpnews.pro/news/one-setup-every-ai-cli-with-agnostic-ai.jsonld"}}