@softspark/ai-toolkit 4.11.0 → 4.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +33 -15
  3. package/app/.claude-plugin/plugin.json +11 -19
  4. package/app/ARCHITECTURE.md +6 -6
  5. package/app/claude-app/global-instructions.md +10 -0
  6. package/app/claude-app/hooks/hooks.json +284 -0
  7. package/app/claude-app/skills/ai-toolkit-rules/SKILL.md +359 -0
  8. package/app/hooks/config-desync-guard.sh +63 -23
  9. package/app/plugins/README.md +4 -1
  10. package/benchmarks/ecosystem-doctor-snapshot.json +91 -25
  11. package/bin/ai-toolkit.js +21 -3
  12. package/kb/planning/drop-cascade-hooks-after-sunset.md +13 -8
  13. package/kb/procedures/ecosystem-sync-sop.md +5 -5
  14. package/kb/procedures/maintenance-sop.md +42 -4
  15. package/kb/procedures/release-preparation-sop.md +5 -1
  16. package/kb/procedures/release-verification-sop.md +25 -9
  17. package/kb/reference/architecture-overview.md +7 -2
  18. package/kb/reference/claude-ecosystem-expansion-foundations.md +12 -3
  19. package/kb/reference/cli-reference.md +4 -2
  20. package/kb/reference/codex-cli-compatibility.md +15 -10
  21. package/kb/reference/global-install-model.md +37 -11
  22. package/kb/reference/hooks-catalog.md +2 -3
  23. package/kb/reference/plugin-pack-conventions.md +5 -5
  24. package/kb/reference/skills-catalog.md +2 -0
  25. package/kb/reference/supported-tools-registry.md +59 -33
  26. package/kb/reference/unique-features.md +3 -2
  27. package/llms-full.txt +236 -98
  28. package/manifest.json +8 -8
  29. package/package.json +4 -3
  30. package/scripts/claude_app.py +347 -0
  31. package/scripts/doctor.py +85 -4
  32. package/scripts/ecosystem_tools.json +45 -9
  33. package/scripts/generate_antigravity.py +15 -0
  34. package/scripts/generate_codex_hooks.py +8 -5
  35. package/scripts/generate_copilot.py +10 -3
  36. package/scripts/generate_devin_hooks.py +3 -4
  37. package/scripts/generate_windsurf_skills.py +5 -6
  38. package/scripts/inject_hook_cli.py +16 -2
  39. package/scripts/install.py +25 -23
  40. package/scripts/install_steps/ai_tools.py +234 -14
  41. package/scripts/install_steps/install_state.py +11 -2
  42. package/scripts/plugin.py +31 -8
  43. package/scripts/update_projects.py +12 -1
  44. package/scripts/validate.py +34 -2
  45. package/AGENTS.md +0 -790
  46. package/scripts/generate_windsurf_hooks.py +0 -152
@@ -3,9 +3,9 @@ title: "Claude Ecosystem Expansion Foundations"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [benchmark, claude-code, ecosystem, hooks, plugins, architecture]
6
- version: "1.0.0"
6
+ version: "1.1.0"
7
7
  created: "2026-03-27"
8
- last_updated: "2026-04-13"
8
+ last_updated: "2026-07-10"
9
9
  description: "Reference summary of the ecosystem signals and implementation foundations adopted in ai-toolkit, including runtime-aware plugin packaging."
10
10
  ---
11
11
 
@@ -25,14 +25,22 @@ The outcome is a toolkit that is now positioned as a more modular, Claude-first,
25
25
 
26
26
  ### 1. Plugin-oriented structure
27
27
 
28
- `ai-toolkit` now treats plugin packaging as a first-class capability, with runtime-aware install surfaces for Claude and optional global Codex layering.
28
+ `ai-toolkit` now treats plugin packaging as a first-class capability, with separate runtime-aware surfaces for Claude Code, the Claude Chat/Desktop/Cowork app, and optional global Codex layering.
29
29
 
30
30
  Implemented artifacts:
31
31
  - `app/.claude-plugin/plugin.json`
32
+ - `app/claude-app/`
32
33
  - `app/plugins/`
33
34
  - `app/skills/plugin-creator/SKILL.md`
35
+ - `scripts/claude_app.py`
34
36
  - `kb/reference/plugin-pack-conventions.md`
35
37
 
38
+ Claude Code reads filesystem configuration such as `~/.claude/rules` and
39
+ `CLAUDE.md`. The Claude app does not scan those locations. For the app,
40
+ `ai-toolkit claude-app export --verify` creates an uploadable plugin ZIP and a
41
+ separate Cowork global-instructions file. Plugin skills work in Chat and Cowork;
42
+ hooks and sub-agents are Cowork-only.
43
+
36
44
  ### 2. Broader lifecycle coverage
37
45
 
38
46
  The toolkit now covers prompt, edit, subagent, compaction, and session-end phases.
@@ -85,6 +93,7 @@ The reference benchmark set is intentionally curated:
85
93
  | Area | Adopted in ai-toolkit |
86
94
  |------|------------------------|
87
95
  | Plugin manifests | Yes |
96
+ | Claude Chat/Cowork uploadable plugin export | Yes |
88
97
  | Domain plugin packs | Yes (experimental) |
89
98
  | Hook creator workflow | Yes |
90
99
  | Command creator workflow | Yes |
@@ -4,7 +4,7 @@ category: reference
4
4
  service: ai-toolkit
5
5
  tags: [cli, commands, reference, install, update, plugin, mcp, telemetry]
6
6
  created: "2026-04-13"
7
- last_updated: "2026-04-24"
7
+ last_updated: "2026-07-10"
8
8
  description: "Complete CLI reference for all ai-toolkit commands, options, and flags."
9
9
  ---
10
10
 
@@ -29,6 +29,8 @@ Usage: ai-toolkit <command> [options]
29
29
  | `doctor` | Diagnose install health, hooks, quick-win assets, and artifact drift |
30
30
  | `doctor --fix` | Auto-repair broken symlinks, missing hooks, stale artifacts |
31
31
  | `eject [dir]` | Export standalone config (no symlinks, no toolkit dependency) |
32
+ | `claude-app export [--output FILE] [--no-custom-rules] [--verify]` | Build an uploadable Claude Chat/Desktop/Cowork plugin ZIP and global-instructions file |
33
+ | `claude-app verify` | Validate a clean staged plugin with structural checks and the official Claude plugin validator |
32
34
 
33
35
  ## Rule & Hook Injection
34
36
 
@@ -55,7 +57,7 @@ Usage: ai-toolkit <command> [options]
55
57
  | Command | Description |
56
58
  |---------|-------------|
57
59
  | `plugin list` | Show available plugin packs with install status |
58
- | `plugin install <name> [--editor claude\|codex\|all]` | Install a plugin pack for selected runtime(s) |
60
+ | `plugin install <name> [--editor claude\|codex\|all]` | Install a plugin pack for Claude Code and/or Codex (`claude` means Claude Code, not the Claude app) |
59
61
  | `plugin install --all [--editor claude\|codex\|all]` | Install all 11 plugin packs |
60
62
  | `plugin update <name> [--editor claude\|codex\|all]` | Update a plugin pack (remove + reinstall, preserves data) |
61
63
  | `plugin update --all [--editor claude\|codex\|all]` | Update all installed plugin packs |
@@ -29,8 +29,7 @@ model.
29
29
 
30
30
  `ai-toolkit install --local --editors codex` generates:
31
31
 
32
- - `AGENTS.md`
33
- - `.agents/rules/*.md`
32
+ - `AGENTS.md` (project root; universal coding rules inlined — Codex reads instructions only from AGENTS.md, not `.agents/rules/`)
34
33
  - `.agents/skills/*`
35
34
  - `.codex/hooks.json`
36
35
 
@@ -38,8 +37,7 @@ model.
38
37
 
39
38
  `ai-toolkit plugin install --editor codex <pack>` bootstraps or reuses:
40
39
 
41
- - `~/AGENTS.md`
42
- - `~/.agents/rules/*.md`
40
+ - `~/.codex/AGENTS.md` (the documented global instruction file; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
43
41
  - `~/.agents/skills/*`
44
42
  - `~/.codex/hooks.json`
45
43
 
@@ -93,20 +91,27 @@ The adapter also covers skills that previously depended only on Claude's
93
91
 
94
92
  ## Hook Compatibility
95
93
 
96
- Codex does not expose the full Claude hook event surface. The Codex hook
97
- generator emits only the events supported by Codex runtime integration:
94
+ Codex does not expose the full Claude hook event surface. Codex's
95
+ `HookEventName` enum defines 10 events; the Codex hook generator wires 9 of
96
+ them:
98
97
 
99
98
  - `SessionStart`
100
99
  - `PreToolUse`
101
100
  - `PostToolUse`
101
+ - `PermissionRequest`
102
102
  - `UserPromptSubmit`
103
+ - `SubagentStart`
104
+ - `SubagentStop`
105
+ - `PreCompact`
103
106
  - `Stop`
104
107
 
105
- This means Claude-only events such as `TaskCompleted`, `TeammateIdle`,
106
- `SubagentStart`, `SubagentStop`, `PreCompact`, `SessionEnd`, and
107
- `Notification` are not available in `.codex/hooks.json`.
108
+ `PostCompact` is the one enum event left unwired (its only hook was the removed
109
+ environment-snapshot probe). Claude-only events such as `TaskCompleted`,
110
+ `TeammateIdle`, `SessionEnd`, and `Notification` have no Codex equivalent and
111
+ are not available in `.codex/hooks.json`. Handler types: only `command` runs;
112
+ `prompt` and `agent` are parsed by Codex but not yet executed.
108
113
 
109
- `inject-hook` automatically propagates Codex-compatible events to
114
+ `inject-hook` automatically propagates these 9 Codex-compatible events to
110
115
  `~/.codex/hooks.json` (global layer). Non-Codex events are silently skipped.
111
116
  `remove-hook` cleans both Claude and Codex targets.
112
117
 
@@ -3,10 +3,10 @@ title: "Global Install Model"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [install, global, claude, codex, plugins, local-setup]
6
- version: "3.1.0"
6
+ version: "3.2.0"
7
7
  created: "2026-03-26"
8
- last_updated: "2026-06-30"
9
- description: "Reference description of the global install target, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
8
+ last_updated: "2026-07-10"
9
+ description: "Reference description of Claude Code global install, Claude app plugin export, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
10
10
  ---
11
11
 
12
12
  # Global Install Model
@@ -24,6 +24,10 @@ the core toolkit install, but experimental plugin packs can layer a global
24
24
  Codex target in `HOME` when explicitly installed with
25
25
  `ai-toolkit plugin install --editor codex`.
26
26
 
27
+ Claude Chat/Desktop/Cowork is a separate runtime. It does not read the
28
+ filesystem surfaces under `~/.claude`; it receives ai-toolkit through an
29
+ uploaded plugin plus app-managed global/folder instructions.
30
+
27
31
  ## Command Responsibilities
28
32
 
29
33
  | Command | Target | Purpose |
@@ -34,6 +38,7 @@ Codex target in `HOME` when explicitly installed with
34
38
  | `ai-toolkit install --local --lang <lang>` | current project | explicit language selection for rules (e.g. `--lang typescript`, `--lang go,python`); auto-detected when omitted |
35
39
  | `ai-toolkit install --modules <list>` | `~/.claude/` | selective module install (e.g. `--modules core,agents,rules-typescript`) |
36
40
  | `ai-toolkit update --local` | current project | refresh project configs; auto-detects editors from existing files |
41
+ | `ai-toolkit claude-app export` | ZIP + Markdown output | build the uploadable Claude Chat/Cowork plugin and Cowork global instructions; registered rules are included unless `--no-custom-rules` is set |
37
42
  | `ai-toolkit add-rule` | `~/.softspark/ai-toolkit/rules/` | register a global rule |
38
43
  | `ai-toolkit remove-rule` | `~/.softspark/ai-toolkit/rules/` | unregister a global rule |
39
44
  | `ai-toolkit mcp add <name...>` | current project | merge MCP templates into `.mcp.json` |
@@ -70,19 +75,41 @@ Claude Code's default global install writes these managed surfaces:
70
75
 
71
76
  The `ai-toolkit-*` prefix in `~/.claude/rules/` is reserved for installer-managed files. User-authored Claude rules should use another filename prefix, or be registered through `ai-toolkit add-rule` so they are emitted as `ai-toolkit-registered-*.md`.
72
77
 
78
+ ## Claude App Target
79
+
80
+ `~/.claude/` is a Claude Code surface, not a Claude Chat/Cowork surface. Run:
81
+
82
+ ```bash
83
+ ai-toolkit claude-app export --verify
84
+ ```
85
+
86
+ Upload the ZIP from `Customize > Plugins`, then paste the sibling
87
+ `*-global-instructions.md` file into `Settings > Cowork > Global instructions`.
88
+ The plugin contains the normal skills and agents, app-relative Cowork hooks,
89
+ and an `ai-toolkit-rules` skill generated from common/standalone rules.
90
+ Registered rules are embedded in a separate skill by default. Skills work in
91
+ Chat and Cowork; hooks and sub-agents are Cowork-only. The app owns its plugin
92
+ store, so toolkit updates require re-export and re-upload.
93
+
73
94
  `ai-toolkit install --editors <name>` can write global files only for editors
74
95
  with documented, file-based config surfaces:
75
96
 
76
- - `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md`
77
- - `gemini`: `~/.gemini/GEMINI.md`
78
- - `augment`: `~/.augment/rules/ai-toolkit.md`
97
+ - `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md` plus `~/.config/devin/AGENTS.md` (Devin CLI global rules — the Desktop `global_rules.md` path is not imported by `read_config_from.windsurf`)
98
+ - `gemini`: `~/.gemini/GEMINI.md`; hooks at `~/.gemini/settings.json` (profile ≥ standard); `~/.gemini/commands/` and `~/.gemini/skills/` pointer (profile full)
99
+ - `augment`: `~/.augment/rules/ai-toolkit.md`; `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` (profile full)
79
100
  - `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
80
- - `roo`: `~/.roo/rules/ai-toolkit-*.md`
101
+ - `roo`: `~/.roo/rules/ai-toolkit-*.md` plus `~/.agents/skills/*` (Roo/Zoo native skill discovery; skipped when `codex` is also selected, which fills the same dir)
81
102
  - `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
82
- - `codex`: `~/AGENTS.md` (coding rules inlined), `~/.agents/skills/*`, `~/.codex/hooks.json`
103
+ - `codex`: `~/.codex/AGENTS.md` (coding rules inlined; the documented global instruction file — NOT `~/AGENTS.md`, which Codex never loads as global instructions), `~/.agents/skills/*`, `~/.codex/hooks.json`
83
104
  - `opencode`: `~/.config/opencode/*`
84
105
 
85
- Cursor, GitHub Copilot, and Google Antigravity rule installs stay project-local.
106
+ Cursor, GitHub Copilot, and Google Antigravity now have partial global support,
107
+ scoped to whatever documented HOME file surface each exposes:
108
+
109
+ - `cursor`: `~/.cursor/hooks.json` (safety/quality hooks; profile ≥ standard). Cursor RULES stay project-local — their only global surface is the Settings UI.
110
+ - `copilot`: `~/.copilot/copilot-instructions.md` plus `~/.copilot/instructions/ai-toolkit-*.instructions.md` (read by Copilot CLI; VS Code and GitHub.com still use repo `.github/` files, which the local install emits).
111
+ - `antigravity`: skill pointer at `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Antigravity RULES stay project-local.
112
+
86
113
  Their global MCP support, where available, is handled by `ai-toolkit mcp
87
114
  install`, not by the rule installer.
88
115
 
@@ -141,8 +168,7 @@ Codex wrappers so the project still receives the full skill catalog.
141
168
 
142
169
  `ai-toolkit plugin install --editor codex <pack>` additionally targets:
143
170
 
144
- - `~/AGENTS.md`
145
- - `~/.agents/rules/*.md`
171
+ - `~/.codex/AGENTS.md` (base instructions; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
146
172
  - `~/.agents/skills/*`
147
173
  - `~/.codex/hooks.json`
148
174
 
@@ -13,7 +13,7 @@ description: "Complete reference of all ai-toolkit hooks: events, scripts, insta
13
13
 
14
14
  ## Overview
15
15
 
16
- ai-toolkit provides 29 global hook entries across 14 lifecycle events that enforce quality, safety, and workflow rules across all Claude Code sessions. Hooks are merged into `~/.claude/settings.json` on install, with logic in standalone scripts at `~/.softspark/ai-toolkit/hooks/`.
16
+ ai-toolkit provides 28 global hook entries across 14 lifecycle events that enforce quality, safety, and workflow rules across all Claude Code sessions, plus a separate `statusLine` command. Hooks are merged into `~/.claude/settings.json` on install, with logic in standalone scripts at `~/.softspark/ai-toolkit/hooks/`.
17
17
 
18
18
  ## Supported Surface
19
19
 
@@ -575,14 +575,13 @@ Beyond the global Claude Code hooks above, full-profile project installs emit na
575
575
  | Editor | File | Generator | Format |
576
576
  |--------|------|-----------|--------|
577
577
  | Cursor | `.cursor/hooks.json` | `generate_cursor_hooks.py` | Cursor hooks schema |
578
- | Windsurf (Cascade) | `.windsurf/hooks.json` | `generate_windsurf_hooks.py` | Cascade `agent_action_name`/`tool_info` — **deprecated, dies 2026-07-01** |
579
578
  | Devin CLI | `.devin/hooks.v1.json` | `generate_devin_hooks.py` | Claude-compatible (the replacement for Cascade) |
580
579
  | Gemini CLI | `.gemini/settings.json` (hooks block) | `generate_gemini_hooks.py` | Gemini `BeforeTool`/`AfterTool` events |
581
580
  | Augment | `.augment/settings.json` (hooks block) | `generate_augment_hooks.py` | Claude-style events |
582
581
 
583
582
  ### Devin CLI hooks (`.devin/hooks.v1.json`)
584
583
 
585
- Windsurf rebranded to Devin Desktop (2026-06-02); the Cascade agent — and its `.windsurf/hooks.json` surface is available only through **2026-07-01**. Devin Local / Devin CLI do **not** read `.windsurf/hooks.json` as a fallback, so hooks must be regenerated onto the Devin CLI format.
584
+ Windsurf rebranded to Devin Desktop (2026-06-02). The Cascade hook surface ended on 2026-07-01; ai-toolkit now emits only the live Devin CLI format.
586
585
 
587
586
  Devin CLI uses a **Claude-compatible** hook format (docs.devin.ai/cli/extensibility/hooks). Key facts driving the generator:
588
587
 
@@ -6,14 +6,14 @@ tags: [plugins, plugin-packs, conventions, manifests, hooks, policy-packs]
6
6
  version: "1.0.0"
7
7
  created: "2026-03-28"
8
8
  last_updated: "2026-04-13"
9
- description: "Conventions for experimental ai-toolkit plugin packs, policy packs, hook packs, and plugin-creator scaffolding across Claude and Codex runtimes."
9
+ description: "Conventions for experimental ai-toolkit plugin packs, policy packs, hook packs, and plugin-creator scaffolding across Claude Code and Codex runtimes."
10
10
  ---
11
11
 
12
12
  # Plugin Pack Conventions
13
13
 
14
14
  ## Purpose
15
15
 
16
- `ai-toolkit` now includes experimental plugin packs under `app/plugins/` to formalize a runtime-aware plugin direction for Claude and optional global Codex layering without changing the default core install surface.
16
+ `ai-toolkit` includes experimental plugin packs under `app/plugins/` for Claude Code and optional global Codex layering. These internal pack manifests are distinct from the official uploadable Claude app plugin built by `ai-toolkit claude-app export`.
17
17
 
18
18
  ## Pack Types
19
19
 
@@ -73,7 +73,7 @@ Required keys:
73
73
 
74
74
  ```bash
75
75
  ai-toolkit plugin list # show all 11 packs with install status
76
- ai-toolkit plugin install --editor claude <name> # Claude global target
76
+ ai-toolkit plugin install --editor claude <name> # Claude Code global target
77
77
  ai-toolkit plugin install --editor codex <name> # Codex global target
78
78
  ai-toolkit plugin install --editor all --all # install all 11 packs for both runtimes
79
79
  ai-toolkit plugin update --editor all --all # update all installed packs
@@ -90,7 +90,7 @@ ai-toolkit plugin status --editor all # show installed packs with r
90
90
  2. **Copies** plugin-specific hooks to `~/.softspark/ai-toolkit/hooks/plugin-<pack>-<hook>.sh`
91
91
  3. **Copies** plugin-specific scripts to `~/.softspark/ai-toolkit/plugin-scripts/<pack>/`
92
92
  4. **Runs** init scripts if present (e.g. `init_db.py` for memory-pack — safe to re-run, preserves data)
93
- 5. **Claude target**: links missing agents/skills into `~/.claude/`, injects plugin-local rules into `~/.claude/CLAUDE.md`, and merges plugin hook entries into `~/.claude/settings.json`
93
+ 5. **Claude Code target**: links missing agents/skills into `~/.claude/`, injects plugin-local rules into `~/.claude/CLAUDE.md`, and merges plugin hook entries into `~/.claude/settings.json`
94
94
  6. **Codex target**: bootstraps global Codex assets in `HOME` (`~/AGENTS.md`, `~/.agents/skills`, `~/.agents/rules`, `~/.codex/hooks.json`) and then layers plugin-specific rules/hooks on top
95
95
  7. **Records** installed state per runtime in `~/.softspark/ai-toolkit/plugins.json`
96
96
 
@@ -110,7 +110,7 @@ ai-toolkit plugin status --editor all # show installed packs with r
110
110
 
111
111
  ### What `plugin remove` Does
112
112
 
113
- 1. **Claude target**: strips plugin hook entries from `~/.claude/settings.json` and removes plugin-local rule sections from `~/.claude/CLAUDE.md`
113
+ 1. **Claude Code target**: strips plugin hook entries from `~/.claude/settings.json` and removes plugin-local rule sections from `~/.claude/CLAUDE.md`
114
114
  2. **Codex target**: strips plugin hook entries from `~/.codex/hooks.json` and removes `~/.agents/rules/plugin-<pack>-*.md`
115
115
  3. **Shared assets** (`~/.softspark/ai-toolkit/hooks/plugin-*`, `plugin-scripts/<pack>/`) are removed only when no remaining runtime still uses that pack
116
116
  4. **Updates** `plugins.json` state per runtime
@@ -254,6 +254,8 @@ Step 0 interview before setup — 5 targeted questions to capture undocumented p
254
254
 
255
255
  Codex CLI receives the full skill catalog during `ai-toolkit install --local --editors codex`.
256
256
 
257
+ Claude Chat/Desktop/Cowork receives this same catalog through `ai-toolkit claude-app export`. The export also adds an app-only `ai-toolkit-rules` skill because the Claude app does not read Claude Code's `CLAUDE.md` or `.claude/rules/` surfaces.
258
+
257
259
  - Native Codex-compatible skills are symlinked directly into `.agents/skills/`
258
260
  - Claude-oriented orchestration skills are generated as Codex wrappers
259
261
  - Adapted wrappers translate `Agent`, `Team*`, and `Task*` guidance to `spawn_agent`, `send_input`, `wait_agent`, `close_agent`, and `update_plan`
@@ -3,19 +3,19 @@ title: "Supported Tools Registry"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [editors, platforms, generators, integration, ecosystem]
6
- version: "1.7.1"
6
+ version: "1.8.0"
7
7
  created: "2026-04-23"
8
- last_updated: "2026-06-30"
9
- description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code + 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
8
+ last_updated: "2026-07-10"
9
+ description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code, Claude Chat/Cowork, and 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
10
10
  ---
11
11
 
12
12
  # Supported Tools Registry
13
13
 
14
14
  The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed by `scripts/ecosystem_doctor.py`. This document is a derived view — when the JSON changes, update this table too.
15
15
 
16
- ## Tool Count: 12
16
+ ## Tool Count: 13
17
17
 
18
- 1 primary runtime (Claude Code) + 11 editor integrations.
18
+ 1 primary runtime (Claude Code) + 1 Claude app target + 11 editor integrations.
19
19
 
20
20
  ---
21
21
 
@@ -28,7 +28,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
28
28
  | ID | `claude-code` |
29
29
  | Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
30
30
  | Release notes | https://github.com/anthropics/claude-code/releases |
31
- | Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.186) |
31
+ | Changelog | https://code.claude.com/docs/en/changelog; GitHub release feed is authoritative when the generated page lags (current local/release: 2.1.206, 2026-07-10) |
32
32
  | Config paths | `~/.claude/settings.json`, `.claude/settings.json` (project, committed), `.claude/settings.local.json`, `CLAUDE.md`, `.claude/rules/*.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
33
33
  | Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
34
34
  | Tracked hook events | Core: `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Notification`, `MessageDisplay`. Tool: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`. Turn: `Stop`, `StopFailure`, `UserPromptExpansion`. Subagent: `SubagentStart`, `SubagentStop`. Compaction: `PreCompact`, `PostCompact`. Permissions: `PermissionRequest`, `PermissionDenied`. Elicitation: `Elicitation`, `ElicitationResult`. Teams: `TaskCreated`, `TaskCompleted`, `TeammateIdle`. Worktrees/env: `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `FileChanged`, `ConfigChange`. Setup: `Setup`, `InstructionsLoaded` |
@@ -39,6 +39,23 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
39
39
 
40
40
  ---
41
41
 
42
+ ## Claude App Target
43
+
44
+ ### Claude Chat / Cowork
45
+
46
+ | Field | Value |
47
+ |-------|-------|
48
+ | ID | `claude-app` |
49
+ | Docs | https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork |
50
+ | Plugin docs | https://support.claude.com/en/articles/13837440-use-plugins-in-claude |
51
+ | Config surfaces | `Settings > Cowork > Global instructions`, Cowork folder instructions, `Customize > Skills`, and `Customize > Plugins` |
52
+ | Plugin layout | `.claude-plugin/plugin.json`, `skills/*/SKILL.md`, `agents/*.md`, `hooks/hooks.json`; ai-toolkit uses manifest paths under `claude-app/` for its generated app-only rules and hooks |
53
+ | Our generator | `scripts/claude_app.py` (`ai-toolkit claude-app export`) |
54
+ | Runtime split | Skills work in Chat (web/Desktop) and Cowork. Hooks and sub-agents run only in Cowork. Claude app does **not** scan Claude Code's `~/.claude/rules/`, `CLAUDE.md`, or `~/.claude/settings.json`. |
55
+ | Install/update | Export the ZIP, upload it from `Customize > Plugins`, then paste the generated global-instructions file into `Settings > Cowork > Global instructions`. Re-export/re-upload after toolkit updates. |
56
+
57
+ ---
58
+
42
59
  ## Editor Integrations
43
60
 
44
61
  ### Cursor
@@ -49,9 +66,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
49
66
  | Docs | https://cursor.com/docs |
50
67
  | Changelog | https://cursor.com/changelog |
51
68
  | Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
52
- | Config paths | `.cursorrules`, `.cursor/rules/*.mdc` (plain `.md` files in `.cursor/rules/` are **ignored** by the rules system), `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `~/.cursor/agents/*.md`, `.cursor/hooks.json` |
69
+ | Config paths | `.cursorrules` (**legacy** — no longer in cursor.com/docs/rules; deprecated ~0.43–0.45 in favor of `.cursor/rules/*.mdc`, still read, no removal deadline; we keep emitting for back-compat), `.cursor/rules/*.mdc` (plain `.md` files in `.cursor/rules/` are **ignored** by the rules system), `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/hooks.json`, `~/.cursor/hooks.json` (user-level hooks scope; enterprise system paths + dashboard team hooks not adopted, class C), `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `~/.cursor/agents/*.md` |
53
70
  | Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.codex/skills/`, `~/.codex/skills/`; subagents: `.claude/agents/`, `~/.claude/agents/`, `.codex/agents/`, `~/.codex/agents/` (`.cursor/` wins on name conflicts) |
54
- | Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full), `scripts/generate_cursor_agents.py` (profile=full), `scripts/generate_cursor_skills.py` (profile=full pointer) |
71
+ | Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full local **and** global `~/.cursor/hooks.json`), `scripts/generate_cursor_agents.py` (profile=full), `scripts/generate_cursor_skills.py` (profile=full pointer) |
72
+ | Global install | Cursor is in `GLOBAL_CAPABLE_EDITORS` for **hooks only**: `ai-toolkit install --editors cursor` writes `~/.cursor/hooks.json` (profile ≥ standard). RULES stay project-local (Cursor's only global rules surface is the Settings UI). |
55
73
  | Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
56
74
 
57
75
  ### Windsurf
@@ -61,14 +79,15 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
61
79
  | ID | `windsurf` |
62
80
  | Docs | https://docs.devin.ai/desktop (Windsurf rebranded to Devin Desktop ~2026-06-02; docs.windsurf.com resolves here) |
63
81
  | Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
64
- | Stable docs mirror | https://docs.devin.ai/desktop/... per-page .md twins; legacy `.windsurf/`, `.windsurfrules`, `~/.codeium/windsurf/` paths still read as fallback (new canonical: `.devin/`) |
65
- | Config paths | **Primary (Devin Desktop):** `.devin/rules/*.md`, `.devin/workflows/*.md`, `.devin/skills/*/SKILL.md`, `.devin/hooks.v1.json` (Devin CLI hooks, Claude format), `.devin/config.json`, `.devin/config.local.json`, `~/.config/devin/config.json` (Devin Local MCP/permissions). **Legacy fallback:** `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `.windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/mcp_config.json`. Plus `AGENTS.md`. |
66
- | Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/`. **Hooks: Devin CLI reads `.claude/settings.json` + `~/.claude/settings.json` hooks directly (`read_config_from.claude` default on), so globally-installed toolkit hooks work under Devin with no project-local file.** |
67
- | Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped, deprecated, drop after 2026-07-01**), `scripts/generate_devin_hooks.py` (profile=full; `.devin/hooks.v1.json`, Claude-format Devin CLI hooks), `scripts/generate_windsurf_skills.py` (global + profile=full pointer, dual-emits) |
82
+ | Stable docs mirror | https://docs.devin.ai/desktop/... per-page .md twins; legacy `.windsurf/`, `.windsurfrules`, `~/.codeium/windsurf/` rule paths still read as fallback (new canonical rules/hooks tree: `.devin/`) |
83
+ | Config paths | **Primary (Devin Desktop):** `.devin/rules/*.md`, `.devin/workflows/*.md`, `.devin/hooks.v1.json` (Devin CLI hooks, Claude format), `.devin/config.json`, `.devin/config.local.json`, `~/.config/devin/config.json` (Devin Local MCP/permissions). **Skills:** eight documented paths, all scanned in every repo — `.agents/skills/*/SKILL.md` (recommended), `.devin/skills`, `.github/skills`, `.claude/skills`, `.cursor/skills`, `.codex/skills`, `.cognition/skills`, and `.windsurf/skills`. ai-toolkit emits a single canonical pointer under `.windsurf/skills` to avoid duplicate registration. **Legacy fallback:** `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/mcp_config.json`. Plus `AGENTS.md`. |
84
+ | Compat read paths | Current skill docs explicitly scan all eight paths — `.agents/skills/`, `.devin/skills/`, `.github/skills/`, `.claude/skills/`, `.cursor/skills/`, `.codex/skills/`, `.cognition/skills/`, and `.windsurf/skills/`. **Hooks:** Devin CLI reads `.claude/settings.json` + `~/.claude/settings.json` hooks when `read_config_from.claude` is enabled, so globally-installed toolkit hooks also work under Devin. |
85
+ | Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/` rules/workflows), `scripts/generate_devin_hooks.py` (profile=full; `.devin/hooks.v1.json`), `scripts/generate_windsurf_skills.py` (`.windsurf/skills` pointer) |
86
+ | Global install | `ai-toolkit install --editors windsurf` writes `~/.codeium/windsurf/memories/global_rules.md` + skills pointer **and** `~/.config/devin/AGENTS.md` (Devin CLI global rules — the Desktop `global_rules.md` path is absent from `read_config_from.windsurf`, so editor-only Devin CLI installs need this). |
68
87
  | Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
69
88
  | Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
70
- | Hooks migration | **Done.** Cascade `.windsurf/hooks.json` (`agent_action_name`/`tool_info` format) dies 2026-07-01 with no Devin fallback. `generate_devin_hooks.py` emits `.devin/hooks.v1.json` in the Claude-compatible format Devin CLI uses: Claude-style events (PreToolUse/PostToolUse/UserPromptSubmit/Stop/SessionStart), matchers on Devin tool names (`read`/`edit`/`exec`/`mcp__*`), blocking via flat `{"decision":"block","reason":...}` + exit 2 (no `AI_TOOLKIT_HOOK_FORMAT=json` — Devin does not use Claude's `hookSpecificOutput` envelope). `post_setup_worktree`→`SessionStart`; `post_cascade_response`→`Stop` (no response text on stdin). Both hook generators run at profile=full during the transition; drop `generate_windsurf_hooks.py` in the first release after 2026-07-01. |
71
- | Sunset notes | Cascade agent is available only through **2026-07-01**; Devin Local is the default agent since 2026-06-02. Devin CLI ("Devin for Terminal") shares the Devin Local harness, reads `AGENTS.md`, the standard `SKILL.md` format, and Claude-format hooks; not yet a separate registry entry. |
89
+ | Hooks migration | **Complete.** Cascade and `.windsurf/hooks.json` ended on 2026-07-01. `generate_devin_hooks.py` is now the only Windsurf-family hook generator and emits `.devin/hooks.v1.json` with Claude-style events, Devin tool-name matchers, and the flat Devin block contract. |
90
+ | Latest upstream | Devin Desktop v3.4.27 (2026-07-07). v3.4.22 made skill `permissions:` frontmatter affect auto-approvals; ai-toolkit does not emit permissions because its pointer skill executes no privileged workflow. |
72
91
 
73
92
  ### GitHub Copilot
74
93
 
@@ -77,9 +96,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
77
96
  | ID | `github-copilot` |
78
97
  | Docs | https://docs.github.com/en/copilot |
79
98
  | Release notes | https://github.blog/changelog/label/copilot/ |
80
- | Config paths | `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md` |
81
- | Our generators | `scripts/generate_copilot.py` |
82
- | Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP |
99
+ | Config paths | **Repo (`.github/`):** `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md`, `.github/hooks/*.json`. **Copilot CLI user-level (`~/.copilot/`, `COPILOT_HOME` override):** `~/.copilot/copilot-instructions.md`, `~/.copilot/instructions/*.instructions.md`, `~/.copilot/agents/*.agent.md`, `~/.copilot/skills/<name>/SKILL.md`, `~/.copilot/hooks/`, `~/.copilot/settings.json`, `~/.copilot/mcp-config.json` |
100
+ | Compat read paths | skills: Copilot CLI reads personal `~/.copilot/skills` and `~/.agents/skills` (the latter populated by our codex/roo global installs) and project `.github/skills`, `.claude/skills`, `.agents/skills` — so toolkit skills are already Copilot-visible. (Note: since CLI 1.0.61 a session using `COPILOT_HOME`/`--config-dir` stops reading `~/.agents/skills`.) |
101
+ | Our generators | `scripts/generate_copilot.py` (repo `.github/` and, with `config_root=~/.copilot`, global CLI instructions) |
102
+ | Global install | Copilot is in `GLOBAL_CAPABLE_EDITORS`: `ai-toolkit install --editors copilot` writes `~/.copilot/copilot-instructions.md` + `~/.copilot/instructions/ai-toolkit-*.instructions.md` (read by Copilot CLI). VS Code Copilot uses profile-level locations and GitHub.com uses repo files, so the project `.github/` emission stays. |
103
+ | Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP, skills, CLI hooks, `~/.copilot/` |
83
104
  | Tier notes | Custom agents (`.github/agents/*.agent.md`) and repo-level MCP config are Pro/Pro+/Business/Enterprise only and intentionally not integrated (class C per ecosystem-sync SOP). Copilot code review reads the nearest `AGENTS.md` automatically since the 2026-06-18 GA (all tiers); `ai-toolkit install --local --editors copilot` injects a `TOOLKIT:copilot-agents` section generated from `generate_agents_md.py` without clobbering Codex/opencode sections in the same file. The 4000-char cap on `copilot-instructions.md` / `*.instructions.md` was also removed (2026-06-12). |
84
105
 
85
106
  ### Gemini CLI
@@ -91,9 +112,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
91
112
  | Release notes | https://github.com/google-gemini/gemini-cli/releases |
92
113
  | 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` (the `.agents/skills` alias wins over `.gemini/skills` within the same tier), `.gemini/extensions/gemini-extension.json` |
93
114
  | Our generators | `scripts/generate_gemini.py`, `scripts/generate_gemini_hooks.py` (profile>=standard), `scripts/generate_gemini_commands.py` (profile=full), `scripts/generate_gemini_skills.py` (profile=full) |
94
- | Tracked capabilities | `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` (no native `Stop` event generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
115
+ | Global install | `ai-toolkit install --editors gemini` writes `~/.gemini/GEMINI.md` **plus** hooks at `~/.gemini/settings.json` (profile standard) and `~/.gemini/commands/` + `~/.gemini/skills/` pointer (profile=full) all documented user-tier surfaces. A global-only Gemini user previously got zero hooks. |
116
+ | Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeToolSelection`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `AfterModel`, `Notification`, `PreCompress`, `SessionStart`, `SessionEnd`, `SKILL.md`, `activate_skill`, custom commands, `.gemini/agents/*.md` subagents, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
95
117
  | Version probe | `gemini --version` |
96
- | Latest upstream | v0.47.0 (2026-06-18). NOTE: Gemini CLI dropped free/paid individual tiers on 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist and paid API keys keep Gemini CLI, so the integration stays. The 11 hook events are unchanged. v0.48 preview migrates the `coreTools` setting to `tools.core` (a tool-allowlist key we do not emit, so no generator change). |
118
+ | Latest upstream | v0.49.0 (2026-06-25; the stable line skipped v0.48.0 — its preview content was promoted into v0.49.0). NOTE: Gemini CLI dropped free/paid individual tiers on 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist and paid API keys keep Gemini CLI, so the integration stays. The 11 hook events are unchanged. v0.49.0 completed the `coreTools` `tools.core` migration (auto-migrated; `tools.exclude` deprecated) — both are tool-allowlist keys we do not emit, so no generator change. Watch item: `.gemini/agents/*.md` / `~/.gemini/agents/*.md` native subagents are documented but we do not yet emit them (candidate `generate_gemini_agents.py`). |
97
119
 
98
120
  ### Cline
99
121
 
@@ -114,12 +136,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
114
136
  | Field | Value |
115
137
  |-------|-------|
116
138
  | ID | `roo-code` |
117
- | Docs | https://roocodeinc.github.io/Roo-Code (docs.roocode.com 301-redirects here) |
118
- | Release notes | https://github.com/RooCodeInc/Roo-Code/releases (**ARCHIVED** repo read-only since 2026-05-15, frozen at v3.54.0; community fork reportedly continues) |
119
- | Config paths | `.roomodes`, `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `~/.roo/custom_modes.yaml`, `mcp_settings.json` (global via Roo settings UI) |
139
+ | Docs | https://roocodeinc.github.io/Roo-Code (frozen; docs.roocode.com 301-redirects here). Successor docs: https://docs.zoocode.dev |
140
+ | Release notes | https://github.com/Zoo-Code-Org/Zoo-Code/releases (authoritative). **Original RooCodeInc/Roo-Code repo ARCHIVED/read-only since 2026-05-15, frozen at v3.54.0 its feed is dead.** Successor project by former Roo contributors: **Zoo-Code-Org/Zoo-Code** (marketplace `ZooCodeOrganization.zoo-code`), active through v3.64.0 (2026-06-26). |
141
+ | Config paths | `.roomodes` (JSON still fully supported), `.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` + global custom modes live in VS Code globalStorage (`<globalStorage>/rooveterinaryinc.roo-cline/settings/custom_modes.yaml`), NOT `~/.roo/custom_modes.yaml` |
120
142
  | Our generators | `scripts/generate_roo_modes.py`, `scripts/generate_roo_rules.py` |
121
- | Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups` |
122
- | Notes | `.roomodes` now includes `description` and `whenToUse` for every mode (since 2026-04). YAML `.roomodes` is upstream-preferred but not yet emitted JSON is still accepted by Roo. Global install writes only `~/.roo/rules/` because the exact global MCP settings path is UI-managed. |
143
+ | Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups`, skills, slash commands |
144
+ | Notes | Config compat with the Zoo fork is total, so both generators stay valid unchanged. `.roomodes` includes `description`/`whenToUse` for every mode (since 2026-04); JSON is still accepted (YAML is upstream-preferred but not emitted). Global install writes `~/.roo/rules/` plus `~/.agents/skills/*` (Roo/Zoo native skill discovery, shipped v3.46.0/v3.47.2; skipped when `codex` is also selected). `~/.roo/commands/` (global slash commands, since v3.25) is a documented surface not yet generated. |
123
145
 
124
146
  ### Aider
125
147
 
@@ -144,7 +166,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
144
166
  | Changelog | https://www.augmentcode.com/changelog |
145
167
  | Config paths | `.augment/rules/*.md`, `.augment-guidelines` (workspace root, legacy single-file), `~/.augment/user-guidelines.md`, `.augment/agents/*.md`, `.augment/commands/*.md`, `.augment/skills/*/SKILL.md`, `.augment/settings.json`, `.augment/settings.local.json`, `~/.augment/rules/*.md`, `~/.augment/settings.json`, `/etc/augment/settings.json`. Auggie CLI also discovers skills/commands from `.claude/` and `.agents/` (`.augment/` wins on precedence). |
146
168
  | Our generators | `scripts/generate_augment.py`, `scripts/generate_augment_rules.py`, `scripts/generate_augment_agents.py` (profile=full), `scripts/generate_augment_commands.py` (profile=full), `scripts/generate_augment_hooks.py` (profile=full, HOME-scoped), `scripts/generate_augment_skills.py` (profile=full) |
147
- | Tracked capabilities | `.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 |
169
+ | Global install | `ai-toolkit install --editors augment` writes `~/.augment/rules/ai-toolkit.md` **plus** (profile=full) `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` all documented user-tier surfaces. A global-only Augment user previously got no hooks/agents/commands. Skills need no global emission: Auggie natively reads `~/.claude/skills/`. |
170
+ | Tracked capabilities | `.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, plugins/marketplace |
171
+ | Latest / notes | Auggie CLI v0.31.0. Since v0.30.0 (2026-06-25) `PreToolUse`/`PostToolUse` hooks fire during sub-agent sessions, so our wired hook groups now run concurrently from parallel sub-agents — hook payload identifier is `conversation_id` (not `session_id`), a concurrency note to track. `Notification` is enum-only (doctor flipped its marker) — no dedicated handler documented, so class C (do NOT wire). Plugins/marketplace (`auggie plugin marketplace add`, `.augment-plugin`/`.claude-plugin` layouts, `enabledPlugins`/`autoUpdateMarketplaces` in settings) documented but not yet a shipping target. |
148
172
  | SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
149
173
 
150
174
  ### Google Antigravity
@@ -155,9 +179,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
155
179
  | Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
156
180
  | Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
157
181
  | Config paths | `.agents/rules/*.md`, `.agents/workflows/*.md` (plural is the Antigravity 2.0 default; singular `.agent/rules`, `.agent/workflows` still read as fallback), `.agent/skills/*/SKILL.md` (IDE), `.agents/skills/*/SKILL.md` (CLI), `.agents/hooks.json` (CLI hooks), `.agents/mcp_config.json` (CLI MCP), `AGENTS.md`, `GEMINI.md` |
158
- | Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`) |
159
- | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions |
160
- | CLI notes | Antigravity CLI (GA 2026-05-19): hooks in `.agents/hooks.json` use Claude-style event names (`PreToolUse`, not Gemini's `BeforeTool`) with a JSON stdin/stdout decision contract; MCP config `.agents/mcp_config.json` requires `serverUrl` (legacy `url`/`httpUrl` fail silently). Global MCP config path is inconsistently reported across sources (`~/.gemini/antigravity-cli/` vs `~/.gemini/config/`) only the workspace path is registered until verified via `agy inspect`. |
182
+ | Global config paths | Skills: `~/.gemini/config/skills/*/SKILL.md` (shared across all Antigravity products) and `~/.gemini/antigravity-cli/skills/*/SKILL.md` (CLI-private) both documented in the official Skills codelab. MCP: `~/.gemini/config/mcp_config.json` (shared global, resolved by CLI v1.0.14; the `~/.gemini/antigravity-cli/mcp_config.json` path is legacy). Rules: `~/.gemini/GEMINI.md` (dual-owner with Gemini CLI — Antigravity's IDE "+ Global" writes the same file; gemini-cli#16058 closed "not planned"). Hooks: `~/.gemini/config/hooks.json` (shared, since CLI v1.0.8). |
183
+ | Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`; `generate_global()` writes the pointer to the two HOME skill dirs) |
184
+ | Global install | `ai-toolkit install --editors antigravity` writes the skill pointer to `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Rules stay project-local (no mergeable global rules file beyond the Gemini-CLI-shared `~/.gemini/GEMINI.md`, covered by `--editors gemini`). |
185
+ | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions, global skills, `~/.gemini/config/mcp_config.json` |
186
+ | CLI notes | Antigravity CLI (GA 2026-05-19; latest CLI v1.0.14 2026-06-30, IDE 2.2.1). Hooks are IDE + CLI (`.agents/hooks.json` workspace, `~/.gemini/config/hooks.json` global; event set `PreToolUse`/`PostToolUse`/`PreInvocation`/`PostInvocation`/`Stop` — `PreInvocation`/`PostInvocation` have no Claude equivalent; shell tool is `run_command` with args at `.toolCall.args.CommandLine`). MCP: `url` is natively supported since CLI v1.0.5 (registry's old "url/httpUrl fail silently" note is stale); `serverUrl` works everywhere incl. IDE. **MCP adapter + a `generate_antigravity_hooks.py` are not yet shipped** (backlog). |
161
187
  | Doc access note | Docs are JS-SPA — verify via `main-*.js` bundle strings or community skill repos. `WebFetch` returns an empty shell. The sitemap.xml is stale (omits the `cli-*` doc pages), so sitemap-based monitoring misses CLI doc additions. |
162
188
 
163
189
  ### Codex CLI
@@ -165,13 +191,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
165
191
  | Field | Value |
166
192
  |-------|-------|
167
193
  | ID | `codex-cli` |
168
- | Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`; latest stable codex-cli 0.142.0, 2026-06) |
194
+ | Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`, `/codex/guides/agents-md`; latest verified local/release: codex-cli 0.144.1, 2026-07-10) |
169
195
  | Release notes | https://github.com/openai/codex/releases |
170
- | Config paths | `AGENTS.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml` |
196
+ | Config paths | **Instructions:** project `AGENTS.md` (root→cwd chain, closest wins) and global `~/.codex/AGENTS.md` (`$CODEX_HOME/AGENTS.md`; `~/.codex/AGENTS.override.md` takes precedence). NOTE: `~/AGENTS.md` is NOT a global-instruction surface — Codex only reads it if a session's cwd is exactly `$HOME`. Plus `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml`. |
171
197
  | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
172
- | Rules delivery | Universal coding rules are inlined into `AGENTS.md` (Codex reads instructions only from AGENTS.md, not `.agents/rules/`); language rules ship as `<lang>-rules` skills under `.agents/skills/`. |
173
- | Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 of these to shared toolkit hook scripts, mirroring the Claude Code mapping in `app/hooks.json`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
174
- | Tracked handler types | `command` (emitted by default); `prompt` and `agent` available upstream but authored by hand |
198
+ | Rules delivery | Universal coding rules are inlined into `AGENTS.md` (Codex reads instructions only from AGENTS.md, not `.agents/rules/`); language rules ship as `<lang>-rules` skills under `.agents/skills/`. Global install writes `~/.codex/AGENTS.md` (not `~/AGENTS.md`, which Codex never loads globally); plugin-pack rules are marker-injected into the same file. `project_doc_max_bytes` default is 32 KiB and Codex silently truncates AGENTS.md past that (see codex-cli-compatibility.md). |
199
+ | Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 of these to shared toolkit hook scripts (via `generate_codex_hooks.py` AND `inject-hook` propagation, kept in sync), mirroring the Claude Code mapping in `app/hooks.json`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
200
+ | Tracked handler types | `command` (emitted by default; the only handler Codex actually runs). `prompt` and `agent` are parsed by Codex but NOT yet executed, so hand-authored handlers of those types are inert. |
175
201
  | Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path) |
176
202
  | Version probe | `codex --version` |
177
203
 
@@ -4,7 +4,7 @@ category: reference
4
4
  service: ai-toolkit
5
5
  tags: [features, differentiators, constitution, hooks, security, tdd, memory]
6
6
  created: "2026-04-13"
7
- last_updated: "2026-05-12"
7
+ last_updated: "2026-07-10"
8
8
  description: "Detailed description of ai-toolkit's unique features: constitution enforcement, hooks system, security scanning, effort budgeting, quality gates, and more."
9
9
  ---
10
10
 
@@ -12,7 +12,7 @@ description: "Detailed description of ai-toolkit's unique features: constitution
12
12
 
13
13
  ## 1. Machine-Enforced Constitution
14
14
 
15
- Unlike other toolkits that put safety rules in documentation only, ai-toolkit enforces a 6-article constitution via hooks. The hooks actually **block** execution of:
15
+ Unlike other toolkits that put safety rules in documentation only, ai-toolkit enforces a 7-article constitution via hooks. The hooks actually **block** execution of:
16
16
  - Mass deletion (`rm -rf`, `DROP TABLE`)
17
17
  - Blind overwrites of uncommitted work
18
18
  - Any action that could cause irreversible data loss
@@ -37,6 +37,7 @@ Hook logic lives in `app/hooks/*.sh` — not inline JSON one-liners. Scripts are
37
37
  | UserPromptSubmit | `track-usage.sh` | Record skill invocations to local stats |
38
38
  | PostToolUse | `post-tool-use.sh` | Lightweight validation reminders + append edit to session state |
39
39
  | PostToolUse | `governance-capture.sh` | Log security-sensitive operations to JSONL |
40
+ | PostToolUse | `loop-guard.sh` | Detect repeated successful actions and inject a reassessment advisory |
40
41
  | PostToolUse | `test-cohesion.sh` | Run cohesion-mapped tests after edits; block on failure (Art. VI.3) |
41
42
  | PostToolUse | `search-tracker.sh` | Clear search-first flag when smart_query/hybrid_search_kb/Web* runs |
42
43
  | Stop | `quality-check.sh` | Multi-language lint (ruff/tsc/phpstan/dart/go) |