@softspark/ai-toolkit 4.24.0 → 4.25.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 (42) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +35 -15
  3. package/app/.claude-plugin/plugin.json +1 -1
  4. package/app/skills/hook-creator/SKILL.md +18 -4
  5. package/app/surface.json +4 -0
  6. package/benchmarks/ecosystem-doctor-snapshot.json +67 -19
  7. package/bin/ai-toolkit.js +27 -3
  8. package/kb/reference/architecture-overview.md +13 -5
  9. package/kb/reference/claude-ecosystem-expansion-foundations.md +30 -5
  10. package/kb/reference/cli-reference.md +27 -2
  11. package/kb/reference/codex-cli-compatibility.md +101 -11
  12. package/kb/reference/global-install-model.md +10 -8
  13. package/kb/reference/hooks-catalog.md +41 -5
  14. package/kb/reference/mcp-editor-compatibility.md +3 -3
  15. package/kb/reference/mcp-templates.md +3 -3
  16. package/kb/reference/opencode-compatibility.md +53 -5
  17. package/kb/reference/supported-tools-registry.md +31 -26
  18. package/llms-full.txt +312 -73
  19. package/manifest.json +1 -1
  20. package/package.json +6 -2
  21. package/scripts/antigravity_plugin.py +570 -0
  22. package/scripts/codex_plugin.py +764 -0
  23. package/scripts/ecosystem_tools.json +92 -17
  24. package/scripts/generate_antigravity.py +16 -14
  25. package/scripts/generate_antigravity_agents.py +255 -0
  26. package/scripts/generate_antigravity_hooks.py +344 -0
  27. package/scripts/generate_cline_hooks.py +391 -0
  28. package/scripts/generate_cline_rules.py +210 -43
  29. package/scripts/generate_cline_skills.py +65 -2
  30. package/scripts/generate_codex_hooks.py +70 -8
  31. package/scripts/generate_gemini_agents.py +197 -0
  32. package/scripts/generate_gemini_hooks.py +24 -4
  33. package/scripts/generate_opencode_skills.py +544 -0
  34. package/scripts/inject_hook_cli.py +4 -26
  35. package/scripts/install.py +11 -10
  36. package/scripts/install_steps/ai_tools.py +209 -34
  37. package/scripts/mcp_editors.py +9 -1
  38. package/scripts/plugin.py +21 -0
  39. package/scripts/plugin_schema.py +8 -7
  40. package/scripts/secure_fs.py +35 -0
  41. package/scripts/uninstall.py +162 -18
  42. package/scripts/validate.py +42 -12
package/llms-full.txt CHANGED
@@ -8805,9 +8805,9 @@ title: "AI Toolkit - Architecture Overview"
8805
8805
  category: reference
8806
8806
  service: ai-toolkit
8807
8807
  tags: [architecture, overview, design, structure]
8808
- version: "1.7.0"
8808
+ version: "1.8.0"
8809
8809
  created: "2026-03-23"
8810
- last_updated: "2026-08-06"
8810
+ last_updated: "2026-08-19"
8811
8811
  description: "Architecture of ai-toolkit: directory layout, Claude app export, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
8812
8812
  ---
8813
8813
 
@@ -8863,7 +8863,10 @@ ai-toolkit/
8863
8863
  generate_copilot.py # Generates Copilot instructions, agents, and portable skills
8864
8864
  generate_copilot_hooks.py # Generates native Copilot hooks + self-contained runtime
8865
8865
  generate_gemini.py # Generates GEMINI.md (sources _common.py)
8866
- generate_cline.py # Generates .clinerules (sources _common.py)
8866
+ generate_gemini_agents.py # Generates native .gemini/agents/*.md definitions
8867
+ generate_cline.py # Generates legacy .clinerules (sources _common.py)
8868
+ generate_cline_rules.py # Dual-emits .cline/rules + .clinerules compatibility
8869
+ generate_cline_hooks.py # Dual-emits .cline/hooks + .clinerules/hooks
8867
8870
  generate_roo_modes.py # Generates .roomodes
8868
8871
  generate_aider_conf.py # Generates .aider.conf.yml
8869
8872
  generate_llms_txt.py # Generates llms.txt
@@ -8925,7 +8928,11 @@ also emits `.github/instructions`, `.github/prompts`, and native
8925
8928
  `.github/hooks`. The user target writes the supported personal surfaces below
8926
8929
  `$COPILOT_HOME` (default `~/.copilot`) and does not generate prompt files there.
8927
8930
  Full-profile installs also emit native skill pointer catalogues for Cursor,
8928
- Windsurf, and Cline. Codex local install generates `AGENTS.md`,
8931
+ Windsurf, and Cline. Cline rules dual-emit to `.cline/rules/` and `.clinerules/`;
8932
+ profiles `standard`, `strict`, and `full` add executable hooks under both
8933
+ `.cline/hooks/<Event>` and `.clinerules/hooks/<Event>`. Gemini receives
8934
+ commands, a skill pointer, and native
8935
+ `.gemini/agents/*.md` definitions. Codex local install generates `AGENTS.md`,
8929
8936
  `.agents/skills/*`, `.codex/agents/*.toml`, `.codex/hooks.json`, and
8930
8937
  self-contained `.codex/hooks/*`. Global Codex install writes its user-owned
8931
8938
  surfaces below `$CODEX_HOME` (default `~/.codex`) while user skills remain in
@@ -8964,7 +8971,8 @@ project-scoped native MCP files: `.cursor/mcp.json`, `.github/mcp.json`,
8964
8971
  | `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
8965
8972
  | `gemini-md` | `./` | Generates `GEMINI.md` |
8966
8973
  | `cline-rules` | `./` | Generates `.clinerules` (legacy) |
8967
- | `cline-dir-rules` | `./` | Generates `.clinerules/*.md` |
8974
+ | `cline-dir-rules` | `./` | Generates `.cline/rules/*.md` plus `.clinerules/*.md` compatibility |
8975
+ | `cline-hooks` | `./` | Generates eight executable files under `.cline/hooks/` and `.clinerules/hooks/` |
8968
8976
  | `roo-modes` | `./` | Generates `.roomodes` |
8969
8977
  | `roo-dir-rules` | `./` | Generates `.roo/rules/*.md` |
8970
8978
  | `aider-conf` | `./` | Generates `.aider.conf.yml` |
@@ -9406,9 +9414,9 @@ title: "Claude Ecosystem Expansion Foundations"
9406
9414
  category: reference
9407
9415
  service: ai-toolkit
9408
9416
  tags: [benchmark, claude-code, ecosystem, hooks, plugins, architecture]
9409
- version: "1.1.0"
9417
+ version: "1.2.0"
9410
9418
  created: "2026-03-27"
9411
- last_updated: "2026-07-10"
9419
+ last_updated: "2026-08-19"
9412
9420
  description: "Reference summary of the ecosystem signals and implementation foundations adopted in ai-toolkit, including runtime-aware plugin packaging."
9413
9421
  ---
9414
9422
 
@@ -9446,9 +9454,21 @@ hooks and sub-agents are Cowork-only.
9446
9454
 
9447
9455
  ### 2. Broader lifecycle coverage
9448
9456
 
9449
- The toolkit now covers prompt, edit, subagent, compaction, and session-end phases.
9450
-
9451
- Implemented events:
9457
+ The validator tracks the complete current Claude Code hook schema. Tracking an
9458
+ event means plugin manifests and hand-authored hook configuration can use it; it
9459
+ does not mean the default toolkit bundle registers a handler for that event.
9460
+
9461
+ Tracked schema events:
9462
+ - `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Notification`, `MessageDisplay`
9463
+ - `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`
9464
+ - `Stop`, `StopFailure`, `UserPromptExpansion`
9465
+ - `SubagentStart`, `SubagentStop`, `PreCompact`, `PostCompact`
9466
+ - `PermissionRequest`, `PermissionDenied`, `Elicitation`, `ElicitationResult`
9467
+ - `TaskCreated`, `TaskCompleted`, `TeammateIdle`
9468
+ - `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `DirectoryAdded`, `FileChanged`, `ConfigChange`
9469
+ - `Setup`, `InstructionsLoaded`
9470
+
9471
+ Toolkit-wired events in `app/hooks.json`:
9452
9472
  - `SessionStart`
9453
9473
  - `Notification`
9454
9474
  - `PreToolUse`
@@ -9461,6 +9481,19 @@ Implemented events:
9461
9481
  - `SubagentStop`
9462
9482
  - `PreCompact`
9463
9483
  - `SessionEnd`
9484
+ - `InstructionsLoaded`
9485
+ - `ConfigChange`
9486
+
9487
+ `MessageDisplay` and `DirectoryAdded` are tracked but intentionally have no
9488
+ default toolkit handler. `DirectoryAdded` runs asynchronously after `/add-dir`
9489
+ or SDK `register_repo_root` and cannot block the add. `MessageDisplay` can
9490
+ replace rendered text through `displayContent` without changing the transcript.
9491
+
9492
+ Claude Code also recognizes native plugin workflows, output styles, LSP
9493
+ servers, experimental themes and monitors, MCP-backed channels, and root plugin
9494
+ settings. Those are documented class C surfaces rather than generated toolkit
9495
+ output; root plugin settings currently support only `agent` and
9496
+ `subagentStatusLine`.
9464
9497
 
9465
9498
  ### 3. Creator workflows
9466
9499
 
@@ -9523,7 +9556,7 @@ category: reference
9523
9556
  service: ai-toolkit
9524
9557
  tags: [cli, commands, reference, install, update, plugin, mcp, telemetry]
9525
9558
  created: "2026-04-13"
9526
- last_updated: "2026-07-26"
9559
+ last_updated: "2026-08-19"
9527
9560
  description: "Complete CLI reference for all ai-toolkit commands, options, and flags."
9528
9561
  ---
9529
9562
 
@@ -9550,6 +9583,8 @@ Usage: ai-toolkit <command> [options]
9550
9583
  | `eject [dir]` | Export standalone config (no symlinks, no toolkit dependency) |
9551
9584
  | `claude-app export [--output FILE] [--no-custom-rules] [--verify]` | Build an uploadable Claude Chat/Desktop/Cowork plugin ZIP and global-instructions file |
9552
9585
  | `claude-app verify` | Validate a clean staged plugin with structural checks and the official Claude plugin validator |
9586
+ | `codex-plugin export [--output FILE]` | Build a deterministic native Codex plugin ZIP with skills and self-contained hooks |
9587
+ | `codex-plugin verify` | Validate a clean native Codex plugin stage without installing it or changing user configuration |
9553
9588
 
9554
9589
  ## Rule & Hook Injection
9555
9590
 
@@ -9573,6 +9608,9 @@ Usage: ai-toolkit <command> [options]
9573
9608
 
9574
9609
  ## Plugin Management
9575
9610
 
9611
+ `plugin ...` manages ai-toolkit's experimental runtime packs. Native Codex
9612
+ plugin packaging uses the separate `codex-plugin ...` command above.
9613
+
9576
9614
  | Command | Description |
9577
9615
  |---------|-------------|
9578
9616
  | `plugin list` | Show available plugin packs with install status |
@@ -9584,6 +9622,23 @@ Usage: ai-toolkit <command> [options]
9584
9622
  | `plugin remove <name> [--editor claude\|codex\|all]` | Remove a plugin pack |
9585
9623
  | `plugin status [--editor claude\|codex\|all]` | Show installed plugins with runtime-specific details |
9586
9624
 
9625
+ ### Native Codex plugin package
9626
+
9627
+ ```bash
9628
+ ai-toolkit codex-plugin export --output ai-toolkit-codex-plugin.zip
9629
+ ai-toolkit codex-plugin verify
9630
+ ```
9631
+
9632
+ Extract the ZIP to `<marketplace-root>/plugins/ai-toolkit/`, add an entry with
9633
+ `source.path: ./plugins/ai-toolkit` in
9634
+ `<marketplace-root>/.agents/plugins/marketplace.json`, then run
9635
+ `codex plugin marketplace add <marketplace-root>` for that non-default local
9636
+ marketplace. Open `/plugins` in Codex CLI, install the plugin, review/trust the
9637
+ bundled hooks, and start a new session. The ZIP includes plugin-local skill
9638
+ runtime resources, including the skill-audit helper and its Python imports.
9639
+ Export refuses symlinked output files and ancestors instead of resolving them
9640
+ to another destination. Codex IDE does not support plugins.
9641
+
9587
9642
  ## Config Inheritance
9588
9643
 
9589
9644
  | Command | Description |
@@ -9624,7 +9679,8 @@ Usage: ai-toolkit <command> [options]
9624
9679
  | `copilot-instructions` | Generate `.github/copilot-instructions.md` |
9625
9680
  | `gemini-md` | Generate `GEMINI.md` for Gemini CLI |
9626
9681
  | `cline-rules` | Generate `.clinerules` (legacy) |
9627
- | `cline-dir-rules` | Generate `.clinerules/*.md` (recommended) |
9682
+ | `cline-dir-rules` | Generate `.cline/rules/*.md` plus `.clinerules/*.md` compatibility |
9683
+ | `cline-hooks` | Generate eight executable `.cline/hooks/<Event>` files plus `.clinerules/hooks/<Event>` extension compatibility |
9628
9684
  | `roo-modes` | Generate `.roomodes` |
9629
9685
  | `roo-dir-rules` | Generate `.roo/rules/*.md` |
9630
9686
  | `aider-conf` | Generate `.aider.conf.yml` |
@@ -9632,6 +9688,8 @@ Usage: ai-toolkit <command> [options]
9632
9688
  | `augment-rules` | Generate `.augment/rules/ai-toolkit.md` (legacy) |
9633
9689
  | `augment-dir-rules` | Generate `.augment/rules/ai-toolkit-*.md` (recommended) |
9634
9690
  | `antigravity-rules` | Generate `.agents/rules/` and `.agents/workflows/` |
9691
+ | `antigravity-plugin export [output]` | Export deterministic native Antigravity plugin ZIP for `.agents/plugins/<name>/`, `~/.gemini/antigravity-cli/plugins/<name>/` (CLI), or `~/.gemini/config/plugins/<name>/` (IDE/shared product) |
9692
+ | `antigravity-plugin verify <archive-or-dir>` | Verify Antigravity plugin schema, paths, hooks, modes, and self-containment offline |
9635
9693
  | `llms-txt` | Generate `llms.txt` and `llms-full.txt` |
9636
9694
 
9637
9695
  ## Other Commands
@@ -9681,9 +9739,9 @@ title: "AI Toolkit - Codex CLI Compatibility"
9681
9739
  category: reference
9682
9740
  service: ai-toolkit
9683
9741
  tags: [codex, compatibility, install, skills, hooks]
9684
- version: "1.0.4"
9742
+ version: "1.1.0"
9685
9743
  created: "2026-04-12"
9686
- last_updated: "2026-07-14"
9744
+ last_updated: "2026-08-19"
9687
9745
  description: "Reference for how ai-toolkit maps Claude-oriented skills, hooks, and plugin packs to Codex CLI."
9688
9746
  ---
9689
9747
 
@@ -9752,6 +9810,72 @@ Codex base. Codex hooks no longer depend on executable paths under
9752
9810
  `~/.softspark/ai-toolkit/`; project assets live beside `.codex/hooks.json`, and
9753
9811
  user assets live under `$CODEX_HOME/ai-toolkit-hooks/`.
9754
9812
 
9813
+ ## Native Codex Plugin Export
9814
+
9815
+ The separate native distribution command packages the toolkit for Codex's
9816
+ plugin marketplace flow without writing user configuration:
9817
+
9818
+ ```bash
9819
+ ai-toolkit codex-plugin export --output ai-toolkit-codex-plugin.zip
9820
+ ai-toolkit codex-plugin verify
9821
+ ```
9822
+
9823
+ The deterministic archive has this root layout:
9824
+
9825
+ ```text
9826
+ .codex-plugin/plugin.json
9827
+ skills/*/SKILL.md
9828
+ skills/persona/personas/*.md
9829
+ skills/briefing/scripts/session_token_stats.py
9830
+ scripts/audit_skills.py
9831
+ scripts/{_common,frontmatter,injection,emission,instruction_core}.py
9832
+ hooks/hooks.json
9833
+ hooks/*
9834
+ constitution.md
9835
+ LICENSE
9836
+ ```
9837
+
9838
+ The manifest name is `ai-toolkit`, its version comes from `package.json`, and
9839
+ `skills` points to `./skills/`. It intentionally omits a `hooks` field because
9840
+ Codex discovers the default `hooks/hooks.json` file. Every bundled hook command
9841
+ uses `${PLUGIN_ROOT}/hooks/...`; no command depends on a git root, `CODEX_HOME`,
9842
+ or the toolkit's global-install hook directory. Executable modes, archive order,
9843
+ and timestamps are fixed so identical sources produce identical ZIP bytes.
9844
+ Skill references are adapted to plugin-local paths. Validation covers every
9845
+ intentionally bundled cross-skill/runtime dependency, including persona
9846
+ definitions, the briefing helper, the documentation standards skill, and the
9847
+ constitution referenced by the security skill. Bare `scripts/...` references
9848
+ are classified as plugin runtime, target-workspace, skill-local, or
9849
+ source-toolkit references; unclassified paths fail validation. The skill-audit
9850
+ command uses the staged helper, whose local imports are bundled at plugin root.
9851
+
9852
+ `verify` stages a clean plugin under a temporary directory and checks the
9853
+ manifest, component paths, skills, exact canonical command-only hooks,
9854
+ executable assets, `SessionEnd` timeout, and symlink safety. The check is
9855
+ self-contained: it does not execute mutable validators selected from `$HOME`
9856
+ or environment-provided paths, add a marketplace, install a plugin, or write
9857
+ under `~/.agents` or `~/.codex`.
9858
+ Archive output uses the shared pinned-directory transaction and rejects a
9859
+ symlink at the destination or in any requested ancestor, so a redirected path
9860
+ cannot write outside the lexical destination.
9861
+
9862
+ To test the exported archive through a non-default local marketplace:
9863
+
9864
+ 1. Extract it to `<marketplace-root>/plugins/ai-toolkit/`.
9865
+ 2. Add an `ai-toolkit` entry to
9866
+ `<marketplace-root>/.agents/plugins/marketplace.json` with
9867
+ `source.path: ./plugins/ai-toolkit`.
9868
+ 3. Run `codex plugin marketplace add <marketplace-root>` once for that
9869
+ non-default marketplace.
9870
+ 4. Open `/plugins` in Codex CLI, install `ai-toolkit`, review/trust its hooks,
9871
+ and start a new session.
9872
+
9873
+ Codex IDE does not support plugins. Use Codex CLI or the ChatGPT desktop app for
9874
+ plugin browsing and installation.
9875
+
9876
+ Sources: [Codex plugin packaging](https://developers.openai.com/plugins/build/plugins),
9877
+ [plugin availability](https://learn.chatgpt.com/docs/plugins).
9878
+
9755
9879
  ## Skill Translation Model
9756
9880
 
9757
9881
  Two delivery modes are used for Codex:
@@ -9801,9 +9925,8 @@ even when its tool list is otherwise portable. Examples include:
9801
9925
 
9802
9926
  ## Hook Compatibility
9803
9927
 
9804
- Codex does not expose the full Claude hook event surface. Codex's
9805
- `HookEventName` enum defines 10 events; the Codex hook generator wires 9 of
9806
- them:
9928
+ Codex does not expose the full Claude hook event surface. The current native
9929
+ contract defines 11 events; the Codex hook generator wires 10 of them:
9807
9930
 
9808
9931
  - `SessionStart`
9809
9932
  - `PreToolUse`
@@ -9813,13 +9936,34 @@ them:
9813
9936
  - `SubagentStart`
9814
9937
  - `SubagentStop`
9815
9938
  - `PreCompact`
9939
+ - `SessionEnd`
9816
9940
  - `Stop`
9817
9941
 
9818
9942
  `PostCompact` is the one enum event left unwired (its only hook was the removed
9819
9943
  environment-snapshot probe). Claude-only events such as `TaskCompleted`,
9820
- `TeammateIdle`, `SessionEnd`, and `Notification` have no Codex equivalent and
9821
- are not available in `.codex/hooks.json`. Handler types: only `command` runs;
9822
- `prompt` and `agent` are parsed by Codex but not yet executed.
9944
+ `TeammateIdle`, and `Notification` have no Codex equivalent and are not
9945
+ available in `.codex/hooks.json`.
9946
+
9947
+ The generated `SessionEnd` handler runs the self-contained `session-end.sh`
9948
+ asset with `timeout: 3`, Codex's documented maximum. It runs only for the main
9949
+ thread, always synchronously, and is advisory: its output cannot steer Codex or
9950
+ keep the thread open. The asset therefore stays silent, cleans the session's
9951
+ toolkit state when available, and writes the handoff snapshot outside the
9952
+ repository with Codex-native `AGENTS.md` restart guidance.
9953
+
9954
+ Existing native hook documents may include an optional top-level string
9955
+ `description`; merges preserve it unchanged. Command handlers may include a
9956
+ non-negative integer `additionalContextLimit`, including zero, and valid user
9957
+ values are also preserved. Booleans, negative values, and non-integers are
9958
+ rejected before any file is changed. `SessionEnd` timeouts above three seconds
9959
+ are rejected.
9960
+
9961
+ Only executable `type: "command"` handlers are accepted. The current official
9962
+ hooks page says `prompt` and `agent` handlers are parsed but skipped, and does
9963
+ not establish an executable `mcp_tool` handler schema. Codex CLI 0.148.0 release
9964
+ notes mention MCP hooks, which conflicts with that page. Toolkit support stays
9965
+ command-only until OpenAI confirms the native config schema and execution
9966
+ semantics in the canonical hooks documentation.
9823
9967
 
9824
9968
  The generator merges these Codex-compatible events into project or user
9825
9969
  `hooks.json`, preserving unrelated user handlers and replacing only commands
@@ -9837,10 +9981,12 @@ After installation or any hook change, open `/hooks` in Codex and review/trust
9837
9981
  the exact definitions. Project hooks additionally require a trusted `.codex`
9838
9982
  project layer. The installer never bypasses hook trust.
9839
9983
 
9984
+ Source: [Codex hooks](https://learn.chatgpt.com/docs/hooks).
9985
+
9840
9986
  Generated Codex hook commands include `AI_TOOLKIT_HOOK_QUIET=1`. Native
9841
- `SessionStart`, `PreCompact`, and MCP-health adapters use Codex instruction and
9842
- config terminology (`AGENTS.md`, `.codex/config.toml`) instead of Claude-only
9843
- paths. The generated
9987
+ `SessionStart`, `SessionEnd`, `PreCompact`, and MCP-health adapters use Codex
9988
+ instruction and config terminology (`AGENTS.md`, `.codex/config.toml`) instead
9989
+ of Claude-only paths. The generated
9844
9990
  `UserPromptSubmit` governance hook does not set `AI_TOOLKIT_HOOK_FORMAT=json`
9845
9991
  by default because Codex currently renders `additionalContext` as visible hook
9846
9992
  context in the TUI. This keeps prompt-submit output quiet while preserving hook
@@ -9912,6 +10058,8 @@ The Codex compatibility path is verified by:
9912
10058
  2. Local install tests for `.agents/skills/` and `.codex/hooks.json`
9913
10059
  3. Plugin install tests for global Codex rules, hooks, and cleanup paths
9914
10060
  4. CLI tests for `codex-md` and `codex-hooks`
10061
+ 5. Native plugin export tests for layout, hooks, determinism, validation, CLI
10062
+ dispatch, and no-home-mutation behavior
9915
10063
 
9916
10064
  ## Related
9917
10065
 
@@ -11547,9 +11695,9 @@ title: "Global Install Model"
11547
11695
  category: reference
11548
11696
  service: ai-toolkit
11549
11697
  tags: [install, global, claude, codex, plugins, local-setup]
11550
- version: "3.3.1"
11698
+ version: "3.4.0"
11551
11699
  created: "2026-03-26"
11552
- last_updated: "2026-07-15"
11700
+ last_updated: "2026-08-19"
11553
11701
  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."
11554
11702
  ---
11555
11703
 
@@ -11599,7 +11747,7 @@ The `--profile` flag controls how much of each editor's native surface is activa
11599
11747
  | Profile | What runs | Use when |
11600
11748
  |---------|-----------|----------|
11601
11749
  | `minimal` | Smallest editor surface. Copilot still receives its root instructions, native agents, and self-contained skills; Codex still receives instructions, agents, skills, and native safety hooks. | You want the smallest supported footprint. |
11602
- | `standard` (default) | Claude Code + editor rule files. Includes Gemini hooks and native Copilot instructions, agents, portable skills, and hooks. | Day-to-day installs. Most users. |
11750
+ | `standard` (default) | Claude Code + editor rule files. Includes Gemini and Antigravity hooks plus native Copilot instructions, agents, portable skills, and hooks. | Day-to-day installs. Most users. |
11603
11751
  | `strict` | Everything in `standard` plus git-hook wiring for commit-time safety checks. | Solo dev or tight team with zero tolerance for drift. |
11604
11752
  | `full` | Every native surface across every editor: hooks, sub-agents, custom commands, skill pointers for Cursor / Windsurf / Gemini / Augment / Antigravity. | You want maximum coverage and understand that each editor will carry generated files under its own layout. |
11605
11753
 
@@ -11642,20 +11790,20 @@ store, so toolkit updates require re-export and re-upload.
11642
11790
  with documented, file-based config surfaces:
11643
11791
 
11644
11792
  - `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`)
11645
- - `gemini`: `~/.gemini/GEMINI.md`; hooks at `~/.gemini/settings.json` (profile ≥ standard); `~/.gemini/commands/` and `~/.gemini/skills/` pointer (profile full)
11793
+ - `gemini`: `~/.gemini/GEMINI.md`; hooks at `~/.gemini/settings.json` (profile ≥ standard); `~/.gemini/commands/`, `~/.gemini/skills/` pointer, and native `~/.gemini/agents/*.md` (profile full)
11646
11794
  - `augment`: `~/.augment/rules/ai-toolkit.md`; `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` (profile full)
11647
- - `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
11795
+ - `cline`: `~/.cline/rules/ai-toolkit-*.md` plus `~/Documents/Cline/Rules/ai-toolkit-*.md` compatibility; profiles `standard`, `strict`, and `full` add the exact eight executable hooks under both `~/.cline/hooks/` and `~/Documents/Cline/Hooks/`; a `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md` pointer is used only when Cline cannot discover real Claude skills
11648
11796
  - `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)
11649
11797
  - `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
11650
11798
  - `codex`: `$CODEX_HOME/AGENTS.md`, `$CODEX_HOME/agents/*.toml`, `$CODEX_HOME/hooks.json`, `$CODEX_HOME/ai-toolkit-hooks/*`, plus `$HOME/.agents/skills/*`; `CODEX_HOME` defaults to `~/.codex`, and `~/AGENTS.md` is not Codex's user-instruction file
11651
- - `opencode`: `~/.config/opencode/*`
11799
+ - `opencode`: `~/.config/opencode/{AGENTS.md,agents/,commands/,plugins/,opencode.json}`; `profile=full` also copies complete native skills to `~/.config/opencode/skills/<name>/`
11652
11800
 
11653
11801
  Cursor, GitHub Copilot, and Google Antigravity now have partial global support,
11654
11802
  scoped to whatever documented HOME file surface each exposes:
11655
11803
 
11656
11804
  - `cursor`: `~/.cursor/hooks.json` (safety/quality hooks; profile ≥ standard). Cursor RULES stay project-local — their only global surface is the Settings UI.
11657
11805
  - `copilot`: instructions, native agents, portable skills, and native hooks under `$COPILOT_HOME` when set or `~/.copilot` otherwise. The hook config is `hooks/ai-toolkit.json`; its self-contained runtime is `hooks/ai-toolkit/copilot_hook.py`. VS Code and GitHub.com still use repo `.github/` files, which local install emits.
11658
- - `antigravity`: skill pointer at `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Antigravity RULES stay project-local.
11806
+ - `antigravity`: current canonical skill pointers at `~/.gemini/antigravity-cli/skills/` for CLI and `~/.gemini/config/skills/` for the IDE/shared product; native hooks at `~/.gemini/config/hooks.json` for standard/strict/full; native agents at `~/.gemini/config/agents/` for full. Only workspace `.agent/skills/` is legacy. Antigravity rules stay project-local. Native plugins are opt-in exports installed manually under `~/.gemini/antigravity-cli/plugins/<name>/` for CLI or `~/.gemini/config/plugins/<name>/` for the IDE/shared product.
11659
11807
 
11660
11808
  Their global MCP support, where available, is handled by `ai-toolkit mcp
11661
11809
  install`, not by the rule installer.
@@ -11690,7 +11838,9 @@ These files still stay local to a repository as part of the core install model:
11690
11838
  - `.github/agents/ai-toolkit-*.agent.md`
11691
11839
  - `.github/skills/ai-toolkit-*/SKILL.md` plus required assets and helper scripts
11692
11840
  - `.github/hooks/ai-toolkit.json` plus `.github/hooks/ai-toolkit/copilot_hook.py` (profile ≥ `standard`)
11693
- - `.clinerules`
11841
+ - `.cline/rules/ai-toolkit-*.md` plus `.clinerules/ai-toolkit-*.md` compatibility
11842
+ - `.cline/hooks/<Event>` plus `.clinerules/hooks/<Event>` compatibility for Cline profiles `standard`, `strict`, and `full`
11843
+ - `.clinerules/workflows/ai-toolkit-*.md`
11694
11844
  - `.roomodes`
11695
11845
  - `.aider.conf.yml`
11696
11846
  - `.augment/rules/ai-toolkit-*.md`
@@ -11987,9 +12137,9 @@ title: "Hooks Catalog"
11987
12137
  category: reference
11988
12138
  service: ai-toolkit
11989
12139
  tags: [hooks, quality, safety, enforcement, settings.json]
11990
- version: "1.9.0"
12140
+ version: "1.11.0"
11991
12141
  created: "2026-03-27"
11992
- last_updated: "2026-07-26"
12142
+ last_updated: "2026-08-19"
11993
12143
  description: "Complete reference of all ai-toolkit hooks: events, scripts, installation, and runtime behavior."
11994
12144
  ---
11995
12145
 
@@ -12591,12 +12741,47 @@ Beyond the global Claude Code hooks above, editor profiles emit native hook file
12591
12741
  |--------|------|-----------|--------|
12592
12742
  | Cursor | `.cursor/hooks.json` | `generate_cursor_hooks.py` | Cursor hooks schema |
12593
12743
  | Devin CLI | `.devin/hooks.v1.json` | `generate_devin_hooks.py` | Claude-compatible (the replacement for Cascade) |
12594
- | Gemini CLI | `.gemini/settings.json` (hooks block) | `generate_gemini_hooks.py` | Gemini `BeforeTool`/`AfterTool` events |
12744
+ | Gemini CLI | `.gemini/settings.json` (hooks block) | `generate_gemini_hooks.py` | Native 11-event contract: `BeforeTool`, `AfterTool`, `BeforeToolSelection`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `AfterModel`, `Notification`, `PreCompress`, `SessionStart`, `SessionEnd`; toolkit handlers use the applicable subset and never emit `Stop` |
12595
12745
  | Augment | `.augment/settings.json` (hooks block) | `generate_augment_hooks.py` | Claude-style events |
12746
+ | Cline | `.cline/hooks/<Event>` plus `.clinerules/hooks/<Event>`; user `~/.cline/hooks/<Event>`; extension compatibility `~/Documents/Cline/Hooks/<Event>` | `generate_cline_hooks.py` | Eight extensionless executable files using Cline's native stdin/stdout contract (profile ≥ `standard`) |
12596
12747
  | GitHub Copilot | `.github/hooks/ai-toolkit.json`; user `$COPILOT_HOME/hooks/ai-toolkit.json` | `generate_copilot_hooks.py` | GitHub version 1, camelCase events (profile ≥ `standard`) |
12597
12748
  | Codex CLI | `.codex/hooks.json`; user `$CODEX_HOME/hooks.json` | `generate_codex_hooks.py` | Native Codex schema, PascalCase events, command ownership markers |
12749
+ | Google Antigravity | `.agents/hooks.json`; user `~/.gemini/config/hooks.json` | `generate_antigravity_hooks.py` | Native five-event schema plus adjacent Python adapter |
12598
12750
  | OpenCode | `.opencode/plugins/ai-toolkit-hooks.js`; user `~/.config/opencode/plugins/ai-toolkit-hooks.js` | `generate_opencode_plugin.py` | Native JavaScript plugin hooks |
12599
12751
 
12752
+ ### Cline hooks (`.cline/hooks/<Event>` and `.clinerules/hooks/<Event>`)
12753
+
12754
+ Cline CLI/SDK loads `.cline/hooks`, while the VS Code and JetBrains extension
12755
+ loads project hooks from `.clinerules/hooks`; project generation emits both.
12756
+ Cline loads extensionless executable files named `TaskStart`, `TaskResume`,
12757
+ `TaskCancel`, `TaskComplete`, `PreToolUse`, `PostToolUse`, `UserPromptSubmit`,
12758
+ and `PreCompact`. The toolkit adapter is self-contained, reads bounded JSON
12759
+ from stdin, and emits only Cline's documented `cancel`, `contextModification`,
12760
+ and `errorMessage` keys. `PreToolUse` validates the documented
12761
+ `preToolUse.toolName` plus `parameters` shape and cancels recognized destructive
12762
+ shell operations, including `run_commands` arrays; start, resume, prompt, and compaction events may inject safe
12763
+ context. Input size and runtime are bounded, and regeneration replaces only
12764
+ marked toolkit files while preserving user-owned hooks.
12765
+
12766
+ ### Google Antigravity hooks (`.agents/hooks.json`)
12767
+
12768
+ The toolkit owns only the top-level `ai-toolkit` namespace and preserves
12769
+ unrelated namespaces. The exact event set is `PreToolUse`, `PostToolUse`,
12770
+ `PreInvocation`, `PostInvocation`, and `Stop`. Tool events use matcher groups;
12771
+ the other events use direct command-handler lists. Every handler has a bounded
12772
+ timeout.
12773
+
12774
+ The adjacent Python runtime maps `.toolCall.name` and
12775
+ `.toolCall.args.CommandLine` to native camelCase responses. `PreToolUse`
12776
+ returns `allow`, `deny`, or `ask`; `PostToolUse` returns `{}`; invocation events
12777
+ use object-shaped `injectSteps` and a native `terminationBehavior`; `Stop`
12778
+ reads the official `executionNum`, `terminationReason`, optional `error`, and
12779
+ `fullyIdle` inputs. It returns `decision: continue` only when the invocation is
12780
+ not fully idle and has not passed its first execution; later executions and
12781
+ fully idle invocations stop, which bounds re-entry.
12782
+ Project commands use `.agents/hooks/`; exported plugin commands resolve through
12783
+ `${extensionPath}`.
12784
+
12600
12785
  ### Cursor hooks (`.cursor/hooks.json`)
12601
12786
 
12602
12787
  Cursor hooks follow the native [version-1 hooks contract](https://cursor.com/docs/hooks):
@@ -12625,10 +12810,11 @@ Codex hooks follow the native [Codex hooks contract](https://learn.chatgpt.com/d
12625
12810
 
12626
12811
  - **Locations:** repository hooks live in `.codex/hooks.json`; user hooks live in `$CODEX_HOME/hooks.json` (default `~/.codex/hooks.json`). Project hooks load only for a trusted `.codex` layer.
12627
12812
  - **Assets:** repository commands use self-contained `.codex/hooks/*`; user commands use `$CODEX_HOME/ai-toolkit-hooks/*`. They do not call Claude's `~/.softspark/ai-toolkit/hooks/` paths.
12628
- - **Events:** Codex documents 10 events. ai-toolkit wires 9: `SessionStart`, `PreToolUse`, `PostToolUse`, `PermissionRequest`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `PreCompact`, and `Stop`. `PostCompact` is intentionally unwired.
12813
+ - **Events:** Codex documents 11 events. ai-toolkit wires 10: `SessionStart`, `SessionEnd`, `PreToolUse`, `PostToolUse`, `PermissionRequest`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `PreCompact`, and `Stop`. `PostCompact` remains a valid event for injected command hooks but is intentionally unwired in the base bundle.
12814
+ - **Session end:** `SessionEnd` runs the self-contained `session-end.sh` asset with a three-second timeout. Its result is advisory, so the adapter records the handoff without emitting steering output.
12629
12815
  - **Compaction:** `PreCompact` runs `codex-pre-compact.sh`, a Codex-native reminder that refers to the active `AGENTS.md` chain, plan, and git state. It does not run Claude's `pre-compact.sh` or `pre-compact-save.sh` payload adapters.
12630
12816
  - **Ownership:** native JSON contains no private `_source` keys. Core handlers carry `AI_TOOLKIT_HOOK_OWNER=ai-toolkit` in their command; plugin and external handlers use exact source-specific command markers.
12631
- - **Preservation:** generation replaces only toolkit-owned handlers and assets. Unrelated user handlers and plugin-owned handlers remain intact.
12817
+ - **Preservation:** generation replaces only toolkit-owned handlers and assets. Unrelated user handlers, plugin-owned handlers, an optional top-level `description`, and valid handler-level `additionalContextLimit` values remain intact.
12632
12818
  - **Trust:** installation never bypasses trust. Review the active definitions with `/hooks` after install or update.
12633
12819
 
12634
12820
  ### Devin CLI hooks (`.devin/hooks.v1.json`)
@@ -13334,9 +13520,9 @@ title: "AI Toolkit - MCP Editor Compatibility"
13334
13520
  category: reference
13335
13521
  service: ai-toolkit
13336
13522
  tags: [mcp, editors, compatibility, codex, cursor, antigravity]
13337
- version: "1.3.0"
13523
+ version: "1.3.1"
13338
13524
  created: "2026-04-12"
13339
- last_updated: "2026-07-14"
13525
+ last_updated: "2026-08-19"
13340
13526
  description: "Official MCP support matrix and native config targets for editors supported by ai-toolkit."
13341
13527
  ---
13342
13528
 
@@ -13354,7 +13540,7 @@ ai-toolkit keeps `.mcp.json` as the project-level canonical template format and
13354
13540
  | Cursor | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` | Mirrors `mcpServers` directly |
13355
13541
  | GitHub Copilot | project + global | `.github/mcp.json`, `$COPILOT_HOME/mcp-config.json` (default `~/.copilot/mcp-config.json`) | Adds Copilot-required `type` and `tools` fields |
13356
13542
  | Gemini CLI | project + global | `.gemini/settings.json`, `~/.gemini/settings.json` | Merges `mcpServers` into settings JSON |
13357
- | Google Antigravity | project + global | `.agents/mcp_config.json`, `~/.gemini/config/mcp_config.json` | Preserves documented `command`, `serverUrl`, and `url` transports plus optional authentication, disablement, and tool-filter fields |
13543
+ | Google Antigravity | project + global | `.agents/mcp_config.json`, `~/.gemini/config/mcp_config.json` | Emits current `command` or `serverUrl` transports; consumes portable `transport` metadata, normalizes legacy input `url` to `serverUrl`, rejects `httpUrl`, and preserves optional authentication, disablement, and tool-filter fields |
13358
13544
  | Roo Code | project | `.roo/mcp.json` | Mirrors `mcpServers` into the documented project-level MCP file |
13359
13545
  | Windsurf | global | `~/.codeium/windsurf/mcp_config.json` | Global-only JSON config |
13360
13546
  | Cline | global | `~/.cline/data/settings/cline_mcp_settings.json` | Global-only JSON config |
@@ -13423,9 +13609,9 @@ title: "MCP Server Templates"
13423
13609
  category: reference
13424
13610
  service: ai-toolkit
13425
13611
  tags: [mcp, templates, servers, configuration, editors, inject-mcp, external-templates]
13426
- version: "1.4.0"
13612
+ version: "1.4.1"
13427
13613
  created: "2026-04-07"
13428
- last_updated: "2026-07-14"
13614
+ last_updated: "2026-08-19"
13429
13615
  description: "Reference for 26 built-in MCP server templates, external template injection via inject-mcp, and native editor MCP installation support."
13430
13616
  ---
13431
13617
 
@@ -13471,7 +13657,7 @@ When `install` runs with `--scope project`, ai-toolkit also updates the project'
13471
13657
  | `cursor` | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` | Mirrors canonical `mcpServers` |
13472
13658
  | `copilot` | project + global | `.github/mcp.json`, `$COPILOT_HOME/mcp-config.json` (default `~/.copilot/mcp-config.json`) | Adds `type` and `tools: ["*"]` automatically |
13473
13659
  | `gemini` | project + global | `.gemini/settings.json`, `~/.gemini/settings.json` | Uses Gemini CLI `mcpServers` format |
13474
- | `antigravity` | project + global | `.agents/mcp_config.json`, `~/.gemini/config/mcp_config.json` | Preserves `url` or `serverUrl` remote transports and Antigravity authentication/tool-control fields |
13660
+ | `antigravity` | project + global | `.agents/mcp_config.json`, `~/.gemini/config/mcp_config.json` | Emits `serverUrl` for remote transports, consumes portable `transport` metadata, normalizes legacy input `url`, rejects `httpUrl`, and preserves Antigravity authentication/tool-control fields |
13475
13661
  | `roo` | project | `.roo/mcp.json` | Mirrors canonical `mcpServers` into Roo's project MCP file |
13476
13662
  | `windsurf` | global | `~/.codeium/windsurf/mcp_config.json` | Global-only official config |
13477
13663
  | `cline` | global | `~/.cline/data/settings/cline_mcp_settings.json` | Global-only official config |
@@ -14176,17 +14362,17 @@ title: "AI Toolkit - opencode Compatibility"
14176
14362
  category: reference
14177
14363
  service: ai-toolkit
14178
14364
  tags: [opencode, compatibility, install, skills, hooks, mcp, plugins]
14179
- version: "1.0.1"
14365
+ version: "1.1.0"
14180
14366
  created: "2026-04-16"
14181
- last_updated: "2026-07-14"
14182
- description: "Reference for how ai-toolkit integrates with opencode — AGENTS.md, subagents, slash commands, JS plugin hook bridge, and MCP merge into opencode.json."
14367
+ last_updated: "2026-08-19"
14368
+ description: "Reference for how ai-toolkit integrates with opencode — AGENTS.md, Agent Skills, subagents, slash commands, JS plugin hooks, and MCP config."
14183
14369
  ---
14184
14370
 
14185
14371
  # AI Toolkit - opencode Compatibility
14186
14372
 
14187
14373
  ## Summary
14188
14374
 
14189
- opencode (https://opencode.ai) is the 11th supported editor. `ai-toolkit install --editors opencode` (or `--editors all`) lays down a full native integration: shared `AGENTS.md`, per-agent `.opencode/agents/` files, per-command `.opencode/commands/` files, a JS plugin bridging toolkit Bash hooks to opencode lifecycle events, and MCP server merge into `opencode.json`.
14375
+ opencode (https://opencode.ai) is the 11th supported editor. `ai-toolkit install --editors opencode` (or `--editors all`) lays down shared `AGENTS.md`, per-agent `.opencode/agents/` files, per-command `.opencode/commands/` files, a JS plugin bridging toolkit Bash hooks to opencode lifecycle events, and MCP server merge into `opencode.json`. The `full` profile also installs complete native Agent Skills.
14190
14376
 
14191
14377
  opencode also reads `CLAUDE.md` as a fallback, so a user without the native integration still gets baseline rules. The native path adds subagents, slash commands, hooks, and MCP.
14192
14378
 
@@ -14197,6 +14383,7 @@ opencode also reads `CLAUDE.md` as a fallback, so a user without the native inte
14197
14383
  - `AGENTS.md` (shared with Codex CLI via distinct marker sections)
14198
14384
  - `.opencode/agents/ai-toolkit-*.md` (one per ai-toolkit agent, `mode: subagent`)
14199
14385
  - `.opencode/commands/ai-toolkit-*.md` (one per user-invocable skill; the prompt lives in the markdown body)
14386
+ - `.opencode/skills/<name>/SKILL.md` plus its resources (`profile=full`)
14200
14387
  - `.opencode/plugins/ai-toolkit-hooks.js` (JS plugin bridging Bash hooks)
14201
14388
  - `opencode.json` (MCP key merged from `.mcp.json`, user keys preserved)
14202
14389
 
@@ -14207,6 +14394,7 @@ opencode also reads `CLAUDE.md` as a fallback, so a user without the native inte
14207
14394
  - `~/.config/opencode/AGENTS.md`
14208
14395
  - `~/.config/opencode/agents/ai-toolkit-*.md`
14209
14396
  - `~/.config/opencode/commands/ai-toolkit-*.md`
14397
+ - `~/.config/opencode/skills/<name>/SKILL.md` plus resources (`profile=full`)
14210
14398
  - `~/.config/opencode/plugins/ai-toolkit-hooks.js`
14211
14399
  - `~/.config/opencode/opencode.json` (MCP merge, user keys preserved)
14212
14400
 
@@ -14219,6 +14407,7 @@ Files land directly under `~/.config/opencode/` (no `.opencode/` nesting) becaus
14219
14407
  | Rules file | `CLAUDE.md` | `AGENTS.md` | `AGENTS.md` + `CLAUDE.md` fallback |
14220
14408
  | Subagents | Yes | Yes (`.codex/agents/*.toml`) | Yes (`mode: subagent`) |
14221
14409
  | Slash commands | Skills | Adapted skills | Native commands with frontmatter |
14410
+ | Agent Skills | Yes | Yes | Yes (`.opencode/skills/*/SKILL.md`) |
14222
14411
  | MCP | Yes | Yes | Yes (`opencode.json`) |
14223
14412
  | Lifecycle hooks | JSON config | `.codex/hooks` | JS/TS plugins (~30+ events) |
14224
14413
  | Global config dir | `~/.claude` | `$CODEX_HOME` (default `~/.codex`) | `~/.config/opencode` |
@@ -14252,6 +14441,31 @@ OpenCode while translating Claude-only skill-directory variables and runtime
14252
14441
  APIs. Codex output uses a separate renderer and converts prompt placeholders to
14253
14442
  durable user-input prose.
14254
14443
 
14444
+ ## Native Agent Skills
14445
+
14446
+ OpenCode's stable Agent Skills surface discovers one directory per skill at
14447
+ `.opencode/skills/<name>/SKILL.md` or
14448
+ `~/.config/opencode/skills/<name>/SKILL.md`. The `full` profile copies each
14449
+ complete ai-toolkit skill directory so relative scripts, references,
14450
+ templates, and assets remain available. Lower profiles use OpenCode's
14451
+ documented `.claude/skills/` and `.agents/skills/` compatibility discovery and
14452
+ remove only toolkit-managed native copies when downgrading.
14453
+
14454
+ `generate_opencode_skills.py` preserves the stable portable fields `name`,
14455
+ `description`, `license`, `compatibility`, and `metadata`. Claude-only runtime
14456
+ fields and orchestration primitives are not emitted. The adapter maps
14457
+ `user-invocable: false` to the v2-compatible `slash: false` hint and
14458
+ `disable-model-invocation: true` to metadata
14459
+ `opencode/autoinvoke: false`. Stable OpenCode ignores unknown frontmatter and
14460
+ loads Agent Skills on demand through the `skill` tool; slash commands continue
14461
+ to come only from `.opencode/commands/`.
14462
+
14463
+ Managed manifests let profile downgrade and uninstall remove generated files
14464
+ while preserving user-owned skill directories and files added beside managed
14465
+ resources. Source and destination symlinks are rejected before writes. Pinned
14466
+ destination descriptors remain active through generation, cleanup, and
14467
+ rollback, so an ancestor swap cannot redirect mutations outside the target.
14468
+
14255
14469
  ## Hook Bridge (JS Plugin)
14256
14470
 
14257
14471
  `.opencode/plugins/ai-toolkit-hooks.js` is a single-file plugin that maps opencode events to the shared Bash hooks in `~/.softspark/ai-toolkit/hooks/`:
@@ -14299,12 +14513,31 @@ The installer detects opencode as configured when any of these markers exist:
14299
14513
 
14300
14514
  - Generated `.opencode/agents/ai-toolkit-*.md`
14301
14515
  - Generated `.opencode/commands/ai-toolkit-*.md`
14516
+ - Manifest-owned files under generated `.opencode/skills/<name>/` directories
14302
14517
  - Generated `.opencode/plugins/ai-toolkit-hooks.js`
14303
14518
  - Managed markers from `AGENTS.md`
14304
14519
  - `mcp` key entries injected by the toolkit (user keys preserved)
14305
14520
 
14306
14521
  User-authored opencode files and user-authored `opencode.json` keys are never deleted.
14307
14522
 
14523
+ Native skill cleanup removes only manifest-owned files. A user-owned skill or
14524
+ an extra file inside a formerly managed directory is preserved. The native
14525
+ skills tree participates in the uninstall transaction, so a later cleanup
14526
+ failure restores managed files without discarding those user additions.
14527
+
14528
+ ## Current Config and v2 Beta Surfaces
14529
+
14530
+ Stable OpenCode supports both `opencode.json` and `opencode.jsonc`. Its current
14531
+ config directory uses plural `agents/`, `commands/`, `plugins/`, and `skills/`
14532
+ subdirectories. The v2 plugin API is still beta and additionally recognizes
14533
+ root-package `skills/*.md`, nested `skills/**/SKILL.md`, and a `skills` config
14534
+ array containing local paths or HTTP URLs.
14535
+
14536
+ There is no migration in ai-toolkit for v2 yet. The existing stable JavaScript
14537
+ plugin generator remains the supported path until the v2 API stabilizes; the
14538
+ beta surfaces are tracked in the ecosystem registry so a later sync cannot
14539
+ silently miss their promotion.
14540
+
14308
14541
  ## Behavioral Limits
14309
14542
 
14310
14543
  - opencode does not expose the full Claude hook event surface; only the events in the mapping table above are bridged. Claude-only events (`TaskCompleted`, `TeammateIdle`, `SubagentStart`, `SubagentStop`, `PreCompact`) are silently skipped.
@@ -14314,7 +14547,7 @@ User-authored opencode files and user-authored `opencode.json` keys are never de
14314
14547
 
14315
14548
  The opencode integration is verified by:
14316
14549
 
14317
- 1. Generator contract tests for the five `generate_opencode*.py` scripts (bats)
14550
+ 1. Generator contract tests for the six `generate_opencode*.py` scripts (bats)
14318
14551
  2. MCP merge idempotency and user-key preservation tests
14319
14552
  3. Plugin export shape and event coverage tests
14320
14553
  4. Auto-detection tests for install / update flow
@@ -14327,6 +14560,7 @@ The opencode integration is verified by:
14327
14560
  | `ai-toolkit opencode-md` | Generate `AGENTS.md` body for opencode |
14328
14561
  | `ai-toolkit opencode-agents` | Generate `.opencode/agents/ai-toolkit-*.md` |
14329
14562
  | `ai-toolkit opencode-commands` | Generate `.opencode/commands/ai-toolkit-*.md` |
14563
+ | `ai-toolkit opencode-skills` | Generate complete `.opencode/skills/<name>/` directories |
14330
14564
  | `ai-toolkit opencode-plugin` | Generate `.opencode/plugins/ai-toolkit-hooks.js` |
14331
14565
  | `ai-toolkit opencode-json` | Merge MCP servers into `opencode.json` |
14332
14566
 
@@ -15199,9 +15433,9 @@ title: "Supported Tools Registry"
15199
15433
  category: reference
15200
15434
  service: ai-toolkit
15201
15435
  tags: [editors, platforms, generators, integration, ecosystem]
15202
- version: "1.11.0"
15436
+ version: "1.13.0"
15203
15437
  created: "2026-04-23"
15204
- last_updated: "2026-07-23"
15438
+ last_updated: "2026-08-19"
15205
15439
  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."
15206
15440
  ---
15207
15441
 
@@ -15225,11 +15459,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
15225
15459
  | Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
15226
15460
  | Release notes | https://github.com/anthropics/claude-code/releases |
15227
15461
  | 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) |
15228
- | 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+) |
15462
+ | Config paths | Settings and direct content: `~/.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+). Native plugin root: `.claude-plugin/plugin.json`, `skills/*/SKILL.md`, `commands/*.md`, `agents/*.md`, `workflows/`, `output-styles/`, `themes/`, `hooks/hooks.json`, `.mcp.json`, `.lsp.json`, `monitors/monitors.json`, `bin/*`, `settings.json` |
15229
15463
  | Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
15230
- | 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` |
15464
+ | 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`, `DirectoryAdded`, `FileChanged`, `ConfigChange`. Setup: `Setup`, `InstructionsLoaded` |
15231
15465
  | Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool`, `http` (POST event JSON to allowlisted URLs via `allowedHttpHookUrls`) |
15232
15466
  | Other capabilities | slash commands, MCP server/client, sub-agent, output style, `SKILL.md` (≥500 lines warn) |
15467
+ | Plugin component coverage | Existing plugin packaging uses skills and hooks. Native workflows, output styles, LSP servers, experimental themes and monitors, MCP-backed channels, and root plugin `settings.json` are recognized class C surfaces and are not generated. Claude Code accepts only `agent` and `subagentStatusLine` in root plugin settings. |
15233
15468
  | Version probe | `claude --version` |
15234
15469
  | Notes | v2.1.169 added `disableBundledSkills` setting + `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` env var (hides bundled skills/built-in slash commands from the model; toolkit skills in `.claude/skills/` are unaffected — useful when toolkit skills overlap built-ins) and `claude --safe-mode` / `CLAUDE_CODE_SAFE_MODE` (starts with hooks, skills, agents, and CLAUDE.md disabled — first isolation step when debugging toolkit rule enforcement). `fallbackModel` settings key (v2.1.166) noted as not-adopted (class C, no toolkit surface writes model settings). |
15235
15470
 
@@ -15308,12 +15543,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
15308
15543
  | ID | `gemini-cli` |
15309
15544
  | Docs | https://github.com/google-gemini/gemini-cli/tree/main/docs |
15310
15545
  | Release notes | https://github.com/google-gemini/gemini-cli/releases |
15311
- | 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` |
15312
- | 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) |
15313
- | 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. |
15546
+ | Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.gemini/agents/*.md`, `.agents/skills/*/SKILL.md`, `~/.gemini/skills/*/SKILL.md`, `~/.gemini/agents/*.md`, `~/.agents/skills/*/SKILL.md` (the `.agents/skills` alias wins over `.gemini/skills` within the same tier). Extension packages keep `gemini-extension.json` at the package root and install below `~/.gemini/extensions/<name>/`. |
15547
+ | 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), `scripts/generate_gemini_agents.py` (profile=full) |
15548
+ | Global install | `ai-toolkit install --editors gemini` writes `~/.gemini/GEMINI.md` **plus** hooks at `~/.gemini/settings.json` (profile ≥ standard) and `~/.gemini/{commands,skills,agents}/` (profile=full). Agents use native `name`, `description`, and `kind: local` metadata; incompatible Claude `model` and `tools` fields are omitted. |
15314
15549
  | 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) |
15315
15550
  | Version probe | `gemini --version` |
15316
- | 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`). |
15551
+ | Extension coverage | Current Gemini extensions can bundle root `GEMINI.md`, `commands/`, `hooks/hooks.json`, `skills/`, `agents/`, and `policies/`. ai-toolkit does not export a Gemini extension package; this distribution surface is class C / not adopted. |
15552
+ | 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. Native project and user-tier subagents are now emitted by `generate_gemini_agents.py` for profile `full`. |
15317
15553
 
15318
15554
  ### Cline
15319
15555
 
@@ -15322,12 +15558,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
15322
15558
  | ID | `cline` |
15323
15559
  | Docs | https://docs.cline.bot |
15324
15560
  | Release notes | https://github.com/cline/cline/releases |
15325
- | Config paths | **Extension:** `.clinerules/*.md`, `.clinerules/workflows/*.md`, `.clinerules/skills/*/SKILL.md`, `.clinerules/hooks/` (project), `~/Documents/Cline/Rules/Hooks/` (global hooks), `~/.cline/data/settings/cline_mcp_settings.json`. **CLI/SDK unified layout** (docs.cline.bot/getting-started/config; `.clinerules` is deprecated there): `.cline/{rules,hooks,plugins,skills}/`, `~/.cline/{rules,hooks,plugins,skills}/`, `CLINE_HOOKS_DIR` env var. **Cross-tool:** `AGENTS.md` + `~/.agents/AGENTS.md` (first-class rules sources), `.claude/skills/*/SKILL.md` (native discovery, always-on since v3.57.0). |
15326
- | Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.py`, `scripts/generate_cline_skills.py` |
15561
+ | Config paths | **Extension compatibility:** `.clinerules/*.md`, `.clinerules/workflows/*.md`, `.clinerules/skills/*/SKILL.md`, `.clinerules/hooks/` (project), `~/Documents/Cline/Rules/` (global rules), `~/Documents/Cline/Hooks/` (global hooks), `~/.cline/data/settings/cline_mcp_settings.json`. **CLI/SDK primary layout:** `.cline/{rules,hooks,agents,plugins,skills}/`, `~/.cline/{rules,hooks,agents,plugins,skills}/`; CLI `--hooks-dir` defaults to `~/.cline/hooks`. **Cross-tool:** `AGENTS.md` + `~/.agents/AGENTS.md` (rules sources), `.claude/skills/*/SKILL.md` (native skill discovery). |
15562
+ | Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.py` (native + compatibility rules), `scripts/generate_cline_skills.py`, `scripts/generate_cline_hooks.py` (exact eight extensionless events with a self-contained adapter) |
15327
15563
  | Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules, `AGENTS.md`, plugins |
15328
- | Plugins | `.cline/plugins/` + `~/.cline/plugins/` (JS/TS), `package.json` `cline.plugins` manifest; plugins can bundle skills. Not adopted as a distribution channel yet candidate for shipping toolkit skills to CLI/SDK users. |
15329
- | Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules since 2026-04. Project rules still use `.clinerules/` for compatibility; global rules are written to `~/Documents/Cline/Rules/` (the documented Cline global rules dir `~/.cline/rules/` is not a Cline-read path). Skills are emitted as a pointer catalogue in `profile=full` and global installs. |
15330
- | Global install | `ai-toolkit install --editors cline` writes documented global rules under `~/Documents/Cline/Rules/` and a skill pointer under `~/.cline/skills/`; MCP remains managed by `ai-toolkit mcp install --editor cline`. |
15564
+ | Plugins | `.cline/plugins/` + `~/.cline/plugins/` and the `package.json` `cline.plugins` manifest belong to Cline CLI/SDK and Kanban plugin flows. They are not a plugin-loading surface for the VS Code or JetBrains extension, so ai-toolkit does not auto-package or install a Cline plugin. |
15565
+ | Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules. Project installs write `.cline/rules/` as the native primary plus `.clinerules/` compatibility, and dual-emit hooks to `.cline/hooks/` plus extension-native `.clinerules/hooks/`. The documented `.cline/agents/` and `~/.cline/agents/` paths are tracked, but ai-toolkit does not emit agents until a portable file schema is verified. Hook input validates `preToolUse.toolName` and command parameters, including CLI `run_commands`; output uses only `cancel`, `contextModification`, and `errorMessage`, with bounded input and runtime. |
15566
+ | Global install | `ai-toolkit install --editors cline` writes `~/.cline/{rules,hooks}/` as the CLI primary and `~/Documents/Cline/{Rules,Hooks}/` for extension compatibility. Hooks are absent in `minimal` and present in `standard`, `strict`, and `full`. A skill pointer is emitted under `~/.cline/skills/` only when real Claude skills are not already discoverable. MCP remains managed by `ai-toolkit mcp install --editor cline`. |
15331
15567
 
15332
15568
  ### Roo Code
15333
15569
 
@@ -15376,12 +15612,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
15376
15612
  | ID | `google-antigravity` |
15377
15613
  | Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
15378
15614
  | Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
15379
- | 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` (workspace MCP), `AGENTS.md`, `GEMINI.md` |
15380
- | 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). |
15381
- | 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). Native MCP project/global merge and removal are provided by `scripts/mcp_editors.py`. |
15382
- | 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`). `ai-toolkit mcp install --editor antigravity <template>` writes the global MCP config; add `--scope project --target <repo>` for `.agents/mcp_config.json`. |
15383
- | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions, global skills, `~/.gemini/config/mcp_config.json` |
15384
- | 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: the official 2.1.4 changelog (2026-06-11) confirms that `url` is accepted alongside `serverUrl`; `httpUrl` is not documented and the adapter rejects it. The native adapter preserves documented `args`, `env`, `cwd`, `headers`, `authProviderType`, `oauth`, `disabled`, and `disabledTools` fields. A `generate_antigravity_hooks.py` remains backlog. |
15615
+ | Config paths | Rules/workflows: `.agents/rules/*.md`, `.agents/workflows/*.md`. Skills: canonical `.agents/skills/*/SKILL.md`; `.agent/skills/*/SKILL.md` is compatibility-only. Agents: `.agents/agents/ai-toolkit-*/agent.md`. Hooks: `.agents/hooks.json` plus `.agents/hooks/ai-toolkit-antigravity-hook.py`. Plugins: `.agents/plugins/<plugin>/plugin.json`. MCP: `.agents/mcp_config.json`. Cross-tool instructions: `AGENTS.md`, `GEMINI.md`. |
15616
+ | Global config paths | CLI skills `~/.gemini/antigravity-cli/skills/*/SKILL.md` and CLI plugins `~/.gemini/antigravity-cli/plugins/<plugin>/plugin.json` are current canonical CLI surfaces. IDE/shared-product skills use `~/.gemini/config/skills/*/SKILL.md`; agents use `~/.gemini/config/agents/ai-toolkit-*/agent.md`; hooks use `~/.gemini/config/hooks.json` plus adjacent runtime; IDE/shared plugins use `~/.gemini/config/plugins/<plugin>/plugin.json`; MCP uses `~/.gemini/config/mcp_config.json`. Rules stay project-local; only workspace `.agent/skills/` is legacy. `~/.gemini/GEMINI.md` remains the Gemini-CLI-shared instruction surface. |
15617
+ | Our generators | `scripts/generate_antigravity.py` (rules, workflows, canonical + compatibility skill pointer), `scripts/generate_antigravity_hooks.py` (exact five-event schema and self-contained adapter), `scripts/generate_antigravity_agents.py` (native subagents and explicit tool mapping), `scripts/antigravity_plugin.py` (deterministic opt-in export/verify), and `scripts/mcp_editors.py` (transactional project/global MCP adapter). |
15618
+ | Install profiles | `minimal`: rules/workflows/skills only. `standard` and `strict`: add native hooks. `full`: additionally adds native agents. Global install follows the same gates under `~/.gemini/config/`; it never auto-installs the plugin. |
15619
+ | Plugin flow | `ai-toolkit antigravity-plugin export [output]` creates a self-contained ZIP with exact manifest fields `$schema`, `name`, `description`, rules, skills, agents, hooks, runtime, and LICENSE. Verify offline with `ai-toolkit antigravity-plugin verify <archive-or-dir>`, then install manually under `.agents/plugins/<plugin>/` for a workspace, `~/.gemini/antigravity-cli/plugins/<plugin>/` for CLI, or `~/.gemini/config/plugins/<plugin>/` for the IDE/shared product. Hook commands resolve from `${extensionPath}`. |
15620
+ | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, five native hook events, subagents, agent permissions, plugins, global skills/hooks/agents, `AGENTS.md`, `GEMINI.md`, `serverUrl` |
15621
+ | Current versions / notes | Antigravity 2.0 v2.8.1, Antigravity CLI v1.1.14, IDE v2.5.5 (verified 2026-08-19). Hooks use `PreToolUse`, `PostToolUse`, `PreInvocation`, `PostInvocation`, and `Stop`; the shell tool is `run_command` with the command at `.toolCall.args.CommandLine`. The adapter returns native camelCase payloads, object-shaped `injectSteps`, empty default `terminationBehavior`, and a `decision` string for Stop while preventing re-entry loops. MCP consumes portable `transport` metadata, accepts input `url` only for migration and emits it as `serverUrl`; `httpUrl` is rejected. Optional `args`, `env`, `cwd`, `headers`, `authProviderType`, `oauth`, `disabled`, and `disabledTools` are preserved. |
15385
15622
  | Doc access note | Docs are a JavaScript SPA, but the official search index exposes the current MCP guide and changelog text. Verify changelog claims against the dated official entry because the MCP guide's warning can lag schema releases. |
15386
15623
 
15387
15624
  ### Codex CLI
@@ -15391,12 +15628,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
15391
15628
  | ID | `codex-cli` |
15392
15629
  | Docs | https://learn.chatgpt.com/docs/codex/cli (official Codex CLI documentation; the previous `https://developers.openai.com/codex` endpoint now redirects to the generic ChatGPT Learn overview; latest verified local/npm release: codex-cli 0.144.4, 2026-07-14) |
15393
15630
  | Release notes | https://github.com/openai/codex/releases |
15394
- | 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/agents/*.toml`, `~/.codex/agents/*.toml`, `.codex/hooks.json`, `~/.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml`. |
15395
- | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_agents.py` (native custom-agent TOML), `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
15631
+ | 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/agents/*.toml`, `~/.codex/agents/*.toml`, `.codex/hooks.json`, `~/.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml`. **Native plugins:** `.codex-plugin/plugin.json`, root `skills/*/SKILL.md`, default `hooks/hooks.json`, and `.agents/plugins/marketplace.json`. |
15632
+ | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_agents.py` (native custom-agent TOML), `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`), `scripts/codex_plugin.py` (deterministic native plugin exporter/validator) |
15396
15633
  | 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). |
15397
- | Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 through an explicit Codex map, including destructive-command and wrong-home path guards on both Bash `PreToolUse` and `PermissionRequest`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
15634
+ | Tracked hook events | Official Codex hooks contract: `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (11 events). We wire 10 through the Codex map, including the advisory `SessionEnd` handoff and destructive-command and wrong-home path guards on both Bash `PreToolUse` and `PermissionRequest`. `PostCompact` remains valid for injected command hooks but is not wired in the base bundle (its only hook was the removed environment-snapshot probe). |
15398
15635
  | 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. |
15399
15636
  | Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path), `.codex/agents/*.toml` (native custom agents) |
15637
+ | Native plugin distribution | `ai-toolkit codex-plugin export` packages `.codex-plugin/plugin.json`, plugin-adapted skills, default lifecycle hooks, executable assets, and LICENSE. Hook commands resolve through `${PLUGIN_ROOT}`. Installation uses a local marketplace and `/plugins`; Codex IDE does not support plugins. |
15400
15638
  | Version probe | `codex --version` |
15401
15639
 
15402
15640
  ### opencode
@@ -15406,13 +15644,14 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
15406
15644
  | ID | `opencode` |
15407
15645
  | Docs | https://opencode.ai/docs |
15408
15646
  | Release notes | https://github.com/sst/opencode/releases (redirects to anomalyco/opencode) |
15409
- | Config paths | `opencode.json`, `.opencode/agents/*.md`, `.opencode/commands/*.md`, `.opencode/plugins/*`, `.opencode/skills/*/SKILL.md` (v1.14+), `AGENTS.md`; skill fallback discovery: `.claude/skills/`, `.agents/skills/`, `~/.config/opencode/skills/`, `~/.claude/skills/`, `~/.agents/skills/` |
15410
- | 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` |
15647
+ | Config paths | `opencode.json`, `opencode.jsonc`, `.opencode/agents/*.md`, `.opencode/commands/*.md`, `.opencode/plugins/*`, `.opencode/skills/*/SKILL.md`, `AGENTS.md`; skill fallback discovery: `.claude/skills/`, `.agents/skills/`, `~/.config/opencode/skills/`, `~/.claude/skills/`, `~/.agents/skills/`; v2 beta package/config surfaces: `skills/*.md`, `skills/**/SKILL.md`, `skills` array with local paths or HTTP URLs |
15648
+ | 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`, `scripts/generate_opencode_skills.py` |
15649
+ | Native skills delivery | `profile=full` copies complete skill directories to the native project/global roots. Lower profiles use compatibility discovery and remove only toolkit-managed native copies. |
15411
15650
  | Hook isolation | Tool hooks preserve native `sessionID` as normalized `session_id`; exit code 2 from a blocking pre-tool guard is raised back to OpenCode instead of being ignored. |
15412
- | Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
15651
+ | Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `message.part.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
15413
15652
  | Other capabilities | `opencode.json` config, primary + subagent modes, `@`-mention subagents, `/`-invocation commands, MCP (local + remote), plugin hooks in JS/TS, native `SKILL.md` discovery with Claude-compatible fallback, `permission.skill.*` matrix |
15414
15653
  | Version probe | `opencode --version` |
15415
- | Watch item | v1.16.0 (2026-06-05) shipped an experimental v2 skill registry (flat-file skills, `slash` frontmatter key). As of the 2026-06-23 sync (upstream v1.17.9) it is still undocumented and not stabilized: the skills docs show only the nested `SKILL.md` layout with no `slash` key, so `generate_opencode*.py` is unchanged. Re-check next sync. |
15654
+ | Watch item | The v2 plugin API is beta. It adds root-package skill files and configurable local/HTTP skill sources, but there is no migration: keep the stable JavaScript plugin generator until v2 stabilizes. |
15416
15655
 
15417
15656
  ---
15418
15657