{
  "schema_version": 1,
  "description": "Authoritative registry of tools ai-toolkit integrates with. Consumed by scripts/ecosystem_doctor.py to detect upstream doc/version drift.",
  "last_updated": "2026-07-14",
  "tools": [
    {
      "id": "claude-code",
      "display_name": "Claude Code",
      "kind": "primary",
      "urls": {
        "docs": "https://code.claude.com/docs",
        "release_notes": "https://github.com/anthropics/claude-code/releases",
        "changelog": "https://code.claude.com/docs/en/changelog"
      },
      "config_paths": [
        "~/.claude/settings.json",
        ".claude/settings.json",
        ".claude/settings.local.json",
        "CLAUDE.md",
        ".claude/rules/*.md",
        ".claude/agents/*.md",
        ".claude/skills/*/SKILL.md",
        "~/.claude/themes/*.json"
      ],
      "our_generators": [],
      "capability_markers": [
        "PreToolUse",
        "PostToolUse",
        "PostToolUseFailure",
        "PostToolBatch",
        "SessionStart",
        "SessionEnd",
        "SubagentStart",
        "SubagentStop",
        "UserPromptSubmit",
        "UserPromptExpansion",
        "Notification",
        "MessageDisplay",
        "Stop",
        "StopFailure",
        "PreCompact",
        "PostCompact",
        "PermissionRequest",
        "PermissionDenied",
        "Elicitation",
        "ElicitationResult",
        "TaskCreated",
        "TaskCompleted",
        "TeammateIdle",
        "WorktreeCreate",
        "WorktreeRemove",
        "CwdChanged",
        "FileChanged",
        "ConfigChange",
        "Setup",
        "InstructionsLoaded",
        "slash command",
        "MCP server",
        "sub-agent",
        "output style",
        "SKILL.md",
        "hook handler: command",
        "hook handler: prompt",
        "hook handler: agent",
        "hook handler: mcp_tool",
        "hook handler: http"
      ],
      "version_probe": {
        "kind": "command",
        "command": "claude --version"
      }
    },
    {
      "id": "claude-app",
      "display_name": "Claude Chat / Cowork",
      "kind": "app",
      "urls": {
        "docs": "https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork",
        "release_notes": "https://support.claude.com/en/articles/13837440-use-plugins-in-claude",
        "changelog": null
      },
      "config_paths": [
        "UI: Settings > Cowork > Global instructions",
        "UI: Cowork folder instructions",
        "UI: Customize > Skills",
        "UI: Customize > Plugins",
        ".claude-plugin/plugin.json",
        "claude-app/hooks/hooks.json",
        "claude-app/skills/*/SKILL.md"
      ],
      "our_generators": [
        "scripts/claude_app.py"
      ],
      "status_note": "Claude Chat/Desktop/Cowork does not scan ~/.claude/rules, CLAUDE.md, or Claude Code's user settings. ai-toolkit exports an uploadable plugin ZIP plus Cowork global instructions. Skills work in Chat and Cowork; plugin hooks and sub-agents run only in Cowork.",
      "capability_markers": [
        "Global instructions",
        "Folder instructions",
        "plugins",
        "skills",
        "sub-agents"
      ],
      "version_probe": null
    },
    {
      "id": "cursor",
      "display_name": "Cursor",
      "kind": "editor",
      "urls": {
        "docs": "https://cursor.com/docs",
        "release_notes": "https://cursor.com/changelog",
        "changelog": "https://cursor.com/changelog"
      },
      "config_paths": [
        ".cursorrules",
        ".cursor/rules/*.mdc",
        "AGENTS.md",
        ".cursor/mcp.json",
        "~/.cursor/mcp.json",
        ".cursor/skills/*/SKILL.md",
        "~/.cursor/skills/*/SKILL.md",
        ".agents/skills/*/SKILL.md",
        "~/.agents/skills/*/SKILL.md",
        ".claude/skills/*/SKILL.md",
        "~/.claude/skills/*/SKILL.md",
        ".codex/skills/*/SKILL.md",
        "~/.codex/skills/*/SKILL.md",
        ".cursor/agents/*.md",
        "~/.cursor/agents/*.md",
        ".claude/agents/*.md",
        "~/.claude/agents/*.md",
        ".codex/agents/*.md",
        "~/.codex/agents/*.md",
        ".cursor/hooks.json",
        ".cursor/hooks/ai-toolkit/cursor_hook.py"
      ],
      "our_generators": [
        "scripts/generate_cursor_rules.py",
        "scripts/generate_cursor_mdc.py",
        "scripts/generate_cursor_hooks.py",
        "scripts/generate_cursor_agents.py",
        "scripts/generate_cursor_skills.py"
      ],
      "status_note": "Cursor 3.11 adds cloud-agent conversation hooks. ai-toolkit emits the complete documented version-1 event set and a self-contained repository runtime under .cursor/hooks/ai-toolkit/; project hook commands do not depend on user-level ~/.cursor or ~/.softspark paths. User entries are preserved and legacy _source-tagged toolkit entries are migrated to schema-valid command ownership markers.",
      "capability_markers": [
        "cursorrules",
        ".cursor/rules",
        "AGENTS.md",
        "mcp.json",
        "Composer",
        "Agent Mode",
        "hooks.json",
        "subagents",
        "skills",
        "plugins"
      ],
      "version_probe": null
    },
    {
      "id": "windsurf",
      "display_name": "Windsurf",
      "kind": "editor",
      "urls": {
        "docs": "https://docs.devin.ai/desktop",
        "release_notes": "https://docs.devin.ai/desktop/changelog",
        "changelog": "https://docs.devin.ai/desktop/changelog"
      },
      "config_paths": [
        ".devin/rules/*.md",
        ".devin/workflows/*.md",
        ".devin/hooks.v1.json",
        ".devin/config.json",
        ".devin/config.local.json",
        "~/.config/devin/config.json",
        ".windsurfrules",
        ".windsurf/rules/*.md",
        ".windsurf/workflows/*.md",
        ".windsurf/skills/*/SKILL.md",
        "AGENTS.md",
        "~/.codeium/windsurf/memories/global_rules.md",
        "~/.codeium/windsurf/skills/*/SKILL.md",
        "~/.codeium/windsurf/mcp_config.json",
        "~/.codeium/windsurf/global_workflows/*.md"
      ],
      "our_generators": [
        "scripts/generate_windsurf.py",
        "scripts/generate_windsurf_rules.py",
        "scripts/generate_windsurf_skills.py",
        "scripts/generate_devin_hooks.py"
      ],
      "status_note": "Windsurf rebranded to Devin Desktop on 2026-06-02. .devin/ is the primary rules/workflows/hooks tree; legacy .windsurf rules remain a read fallback. Cascade and its .windsurf/hooks.json format ended on 2026-07-01, so ai-toolkit now emits only .devin/hooks.v1.json. Current Devin skill docs list eight scanned paths (.agents/skills recommended, plus .devin/skills, .github/skills, .claude/skills, .cursor/skills, .codex/skills, .cognition/skills, .windsurf/skills); ai-toolkit emits a single canonical pointer under .windsurf/skills and no longer also writes .devin/skills. Devin CLI also imports ~/.claude/settings.json hooks when read_config_from.claude is enabled.",
      "capability_markers": [
        "Cascade",
        "windsurfrules",
        "AGENTS.md",
        "always_on",
        "glob",
        "model_decision",
        "workflows",
        "skills",
        "SKILL.md",
        "MCP",
        "memories",
        "hooks"
      ],
      "version_probe": null
    },
    {
      "id": "github-copilot",
      "display_name": "GitHub Copilot",
      "kind": "editor",
      "urls": {
        "docs": "https://docs.github.com/en/copilot",
        "release_notes": "https://github.blog/changelog/label/copilot/",
        "changelog": null
      },
      "config_paths": [
        ".github/copilot-instructions.md",
        ".github/instructions/*.instructions.md",
        ".github/prompts/*.prompt.md",
        ".github/agents/*.agent.md",
        ".github/skills/*/SKILL.md",
        ".github/hooks/*.json",
        "AGENTS.md",
        "~/.copilot/copilot-instructions.md",
        "~/.copilot/instructions/*.instructions.md",
        "~/.copilot/agents/*.agent.md",
        "~/.copilot/skills/*/SKILL.md",
        "~/.copilot/hooks/*.json",
        "~/.copilot/settings.json",
        "~/.copilot/mcp-config.json"
      ],
      "our_generators": [
        "scripts/generate_copilot.py",
        "scripts/generate_copilot_hooks.py"
      ],
      "capability_markers": [
        "copilot-instructions.md",
        "Copilot Chat",
        "Copilot Workspace",
        "Copilot cloud agent",
        "applyTo",
        "custom agents",
        "prompt files",
        "instructions.md",
        "AGENTS.md",
        "MCP",
        "skills",
        "CLI hooks",
        "~/.copilot/"
      ],
      "version_probe": null
    },
    {
      "id": "gemini-cli",
      "display_name": "Gemini CLI",
      "kind": "editor",
      "urls": {
        "docs": "https://github.com/google-gemini/gemini-cli/tree/main/docs",
        "release_notes": "https://github.com/google-gemini/gemini-cli/releases",
        "changelog": null
      },
      "config_paths": [
        "GEMINI.md",
        ".gemini/settings.json",
        "~/.gemini/settings.json",
        ".gemini/commands/*.toml",
        ".gemini/skills/*/SKILL.md",
        ".agents/skills/*/SKILL.md",
        "~/.gemini/skills/*/SKILL.md",
        "~/.agents/skills/*/SKILL.md",
        ".gemini/extensions/gemini-extension.json"
      ],
      "our_generators": [
        "scripts/generate_gemini.py",
        "scripts/generate_gemini_hooks.py",
        "scripts/generate_gemini_commands.py",
        "scripts/generate_gemini_skills.py"
      ],
      "capability_markers": [
        "GEMINI.md",
        "mcpServers",
        "tools",
        "settings.json",
        "BeforeTool",
        "AfterTool",
        "BeforeToolSelection",
        "BeforeAgent",
        "AfterAgent",
        "BeforeModel",
        "AfterModel",
        "Notification",
        "PreCompress",
        "SessionStart",
        "SessionEnd",
        "SKILL.md",
        "activate_skill",
        "custom commands",
        "gemini-extension.json"
      ],
      "status_note": "Gemini CLI drops free + paid (AI Pro/Ultra) tiers on 2026-06-18 in favor of the new Antigravity CLI (we ship generate_antigravity.py); enterprise Gemini Code Assist Standard/Enterprise keeps full Gemini CLI support. The .gemini/* generators remain valid for the enterprise audience.",
      "version_probe": {
        "kind": "command",
        "command": "gemini --version"
      }
    },
    {
      "id": "cline",
      "display_name": "Cline",
      "kind": "editor",
      "urls": {
        "docs": "https://docs.cline.bot",
        "release_notes": "https://github.com/cline/cline/releases",
        "changelog": null
      },
      "config_paths": [
        ".clinerules/*.md",
        ".clinerules/workflows/*.md",
        ".clinerules/skills/*/SKILL.md",
        ".clinerules/hooks/",
        ".cline/rules/*.md",
        ".cline/hooks/",
        ".cline/plugins/",
        ".cline/skills/*/SKILL.md",
        "~/.cline/rules/",
        "~/.cline/hooks/",
        "~/.cline/plugins/",
        "~/.cline/skills/*/SKILL.md",
        "~/Documents/Cline/Rules/Hooks/",
        "~/.cline/data/settings/cline_mcp_settings.json",
        ".claude/skills/*/SKILL.md",
        "AGENTS.md",
        "~/.agents/AGENTS.md"
      ],
      "our_generators": [
        "scripts/generate_cline.py",
        "scripts/generate_cline_rules.py",
        "scripts/generate_cline_skills.py"
      ],
      "capability_markers": [
        "clinerules",
        "Plan Mode",
        "Act Mode",
        "MCP",
        "custom modes",
        "workflows",
        "hooks",
        "skills",
        "subagents",
        "conditional rules",
        "AGENTS.md",
        "plugins"
      ],
      "version_probe": null
    },
    {
      "id": "roo-code",
      "display_name": "Roo Code",
      "kind": "editor",
      "urls": {
        "docs": "https://roocodeinc.github.io/Roo-Code",
        "release_notes": "https://github.com/Zoo-Code-Org/Zoo-Code/releases",
        "changelog": null
      },
      "status": "succeeded-by-fork",
      "status_note": "Upstream RooCodeInc/Roo-Code archived/read-only 2026-05-15, frozen at v3.54.0; its releases feed is dead. Successor project by former Roo contributors: Zoo-Code-Org/Zoo-Code (marketplace ZooCodeOrganization.zoo-code, docs.zoocode.dev), active through v3.64.0 (2026-06-26) continuing Roo's version line. Config compat is total: same .roomodes (JSON 'still fully supported and won't be deprecated'), .roo/rules/, .roo/rules-{slug}/, .roo/skills/, .roo/commands/, ~/.roo/* paths — both generators remain valid. Watch Zoo GitHub releases as the authoritative feed (docs.zoocode.dev/update-notes is stale at v3.50.0). Skills (~/.roo/skills, ~/.agents/skills) shipped in v3.46.0/v3.47.2; ai-toolkit now installs them globally via ~/.agents/skills. Roo team pivoted to roomote.dev and recommended Cline.",
      "config_paths": [
        ".roomodes",
        ".roo/rules/*.md",
        ".roo/rules-{slug}/*.md",
        ".roo/skills/*/SKILL.md",
        "~/.roo/skills/*/SKILL.md",
        ".agents/skills/*/SKILL.md",
        "~/.agents/skills/*",
        ".roo/commands/*.md",
        "~/.roo/commands/*.md",
        ".roo/mcp.json",
        "~/.roo/rules/",
        "mcp_settings.json"
      ],
      "our_generators": [
        "scripts/generate_roo_modes.py",
        "scripts/generate_roo_rules.py"
      ],
      "capability_markers": [
        "roomodes",
        "custom modes",
        "Code Actions",
        "MCP",
        "Orchestrator mode",
        "whenToUse",
        "description",
        "roleDefinition",
        "groups"
      ],
      "version_probe": null
    },
    {
      "id": "aider",
      "display_name": "Aider",
      "kind": "editor",
      "urls": {
        "docs": "https://aider.chat/docs",
        "release_notes": "https://aider.chat/HISTORY.html",
        "changelog": "https://aider.chat/HISTORY.html"
      },
      "config_paths": [
        ".aider.conf.yml",
        "CONVENTIONS.md",
        "~/.aider.conf.yml"
      ],
      "our_generators": [
        "scripts/generate_aider_conf.py",
        "scripts/generate_conventions.py"
      ],
      "capability_markers": [
        ".aider.conf.yml",
        "CONVENTIONS.md",
        "architect",
        "auto-accept-architect",
        "read",
        "lint-cmd",
        "test-cmd",
        "commit-prompt",
        "attribute-co-authored-by",
        "chat-language",
        "commit-language",
        "watch-files",
        "auto-commits"
      ],
      "version_probe": {
        "kind": "command",
        "command": "aider --version"
      }
    },
    {
      "id": "augment",
      "display_name": "Augment",
      "kind": "editor",
      "urls": {
        "docs": "https://docs.augmentcode.com",
        "release_notes": "https://www.augmentcode.com/changelog",
        "changelog": null
      },
      "config_paths": [
        ".augment/rules/*.md",
        ".augment-guidelines",
        ".augment/agents/*.md",
        ".augment/commands/*.md",
        ".augment/skills/*/SKILL.md",
        ".augment/settings.json",
        ".augment/settings.local.json",
        ".claude/skills/*/SKILL.md",
        ".agents/skills/*/SKILL.md",
        "~/.augment/rules/*.md",
        "~/.augment/user-guidelines.md",
        "~/.augment/agents/*.md",
        "~/.augment/commands/*.md",
        "~/.augment/settings.json",
        "/etc/augment/settings.json"
      ],
      "our_generators": [
        "scripts/generate_augment.py",
        "scripts/generate_augment_rules.py",
        "scripts/generate_augment_agents.py",
        "scripts/generate_augment_commands.py",
        "scripts/generate_augment_skills.py",
        "scripts/generate_augment_hooks.py"
      ],
      "capability_markers": [
        ".augment",
        "Agent mode",
        "Next Edit",
        "MCP",
        "context engine",
        "Auggie CLI",
        "always_apply",
        "agent_requested",
        "subagents",
        "custom commands",
        "SKILL.md",
        "PreToolUse",
        "PostToolUse",
        "SessionStart",
        "SessionEnd",
        "Stop",
        "Notification",
        "ACP Mode"
      ],
      "version_probe": null
    },
    {
      "id": "google-antigravity",
      "display_name": "Google Antigravity",
      "kind": "editor",
      "urls": {
        "docs": "https://antigravity.google/docs",
        "release_notes": "https://antigravity.google/changelog",
        "changelog": null
      },
      "config_paths": [
        ".agents/rules/*.md",
        ".agents/workflows/*.md",
        ".agents/skills/*/SKILL.md",
        ".agents/hooks.json",
        ".agents/mcp_config.json",
        "~/.gemini/config/mcp_config.json",
        ".agent/rules/*.md",
        ".agent/workflows/*.md",
        ".agent/skills/*/SKILL.md",
        "AGENTS.md",
        "GEMINI.md"
      ],
      "our_generators": [
        "scripts/generate_antigravity.py"
      ],
      "status_note": "Antigravity CLI (GA 2026-05-19) reads workspace skills from .agents/skills/ (plural); the IDE still uses .agent/skills/ (singular) — our generator dual-emits the skill pointer to both. CLI hooks live in .agents/hooks.json with Claude-style event names (PreToolUse, not BeforeTool) and a JSON stdin/stdout decision contract. Native MCP configs are .agents/mcp_config.json (workspace) and ~/.gemini/config/mcp_config.json (global). The 2.1.4 changelog confirms that url is accepted alongside serverUrl; httpUrl remains unsupported. scripts/mcp_editors.py ships project and global Antigravity adapters with transactional JSON merge/remove.",
      "capability_markers": [
        "agent manager",
        "artifacts",
        "MCP",
        "workflows",
        "rules",
        "skills",
        "hooks",
        "AGENTS.md",
        "GEMINI.md",
        "agent permissions"
      ],
      "version_probe": null
    },
    {
      "id": "codex-cli",
      "display_name": "Codex CLI",
      "kind": "editor",
      "urls": {
        "docs": "https://learn.chatgpt.com/docs/codex/cli",
        "release_notes": "https://github.com/openai/codex/releases",
        "changelog": null
      },
      "config_paths": [
        "AGENTS.md",
        "~/.codex/AGENTS.md",
        "~/.codex/AGENTS.override.md",
        ".agents/skills/*/SKILL.md",
        ".codex/agents/*.toml",
        "~/.codex/agents/*.toml",
        ".codex/hooks.json",
        "~/.codex/hooks.json",
        ".codex/config.toml",
        "~/.codex/config.toml"
      ],
      "our_generators": [
        "scripts/generate_codex.py",
        "scripts/generate_codex_agents.py",
        "scripts/generate_codex_hooks.py",
        "scripts/generate_codex_skills.py"
      ],
      "capability_markers": [
        "AGENTS.md",
        "config.toml",
        "mcp_servers",
        "hooks",
        "sandbox",
        "hook event: PreToolUse",
        "hook event: PostToolUse",
        "hook event: SessionStart",
        "hook event: UserPromptSubmit",
        "hook event: Stop",
        "hook event: PermissionRequest",
        "hook event: PreCompact",
        "hook event: PostCompact",
        "hook event: SubagentStart",
        "hook event: SubagentStop",
        "hook handler: command",
        "hook handler: prompt",
        "hook handler: agent",
        ".agents/skills",
        ".codex/agents"
      ],
      "version_probe": {
        "kind": "command",
        "command": "codex --version"
      }
    },
    {
      "id": "opencode",
      "display_name": "opencode",
      "kind": "editor",
      "urls": {
        "docs": "https://opencode.ai/docs",
        "release_notes": "https://github.com/sst/opencode/releases",
        "changelog": null
      },
      "config_paths": [
        "opencode.json",
        ".opencode/agents/*.md",
        ".opencode/commands/*.md",
        ".opencode/plugins/*",
        ".opencode/skills/*/SKILL.md",
        "AGENTS.md",
        ".claude/skills/*/SKILL.md",
        ".agents/skills/*/SKILL.md",
        "~/.config/opencode/skills/*/SKILL.md",
        "~/.claude/skills/*/SKILL.md",
        "~/.agents/skills/*/SKILL.md"
      ],
      "status_note": "opencode v1.16.0 (2026-06-05) ships an experimental v2 skill registry with flat-file skills and a 'slash' frontmatter key; undocumented as of 2026-06-09. Watch item: re-check next sync whether the v2 format reaches the documented SKILL.md spec before touching generate_opencode*.py. Note sst/opencode redirects to anomalyco/opencode.",
      "our_generators": [
        "scripts/generate_opencode.py",
        "scripts/generate_opencode_agents.py",
        "scripts/generate_opencode_commands.py",
        "scripts/generate_opencode_json.py",
        "scripts/generate_opencode_plugin.py"
      ],
      "capability_markers": [
        "opencode.json",
        "agents",
        "commands",
        "plugins",
        "MCP",
        "rules",
        "AGENTS.md",
        "skills (native .opencode/skills)",
        "skills (via .claude/skills fallback)",
        "permission.skill",
        "subagent mode",
        "primary mode",
        "plugin event: session.created",
        "plugin event: session.compacted",
        "plugin event: session.deleted",
        "plugin event: tool.execute.before",
        "plugin event: tool.execute.after",
        "plugin event: permission.asked",
        "plugin event: command.executed",
        "plugin event: message.updated"
      ],
      "version_probe": {
        "kind": "command",
        "command": "opencode --version"
      }
    }
  ]
}
