@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.
- package/CHANGELOG.md +66 -0
- package/README.md +35 -15
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/skills/hook-creator/SKILL.md +18 -4
- package/app/surface.json +4 -0
- package/benchmarks/ecosystem-doctor-snapshot.json +67 -19
- package/bin/ai-toolkit.js +27 -3
- package/kb/reference/architecture-overview.md +13 -5
- package/kb/reference/claude-ecosystem-expansion-foundations.md +30 -5
- package/kb/reference/cli-reference.md +27 -2
- package/kb/reference/codex-cli-compatibility.md +101 -11
- package/kb/reference/global-install-model.md +10 -8
- package/kb/reference/hooks-catalog.md +41 -5
- package/kb/reference/mcp-editor-compatibility.md +3 -3
- package/kb/reference/mcp-templates.md +3 -3
- package/kb/reference/opencode-compatibility.md +53 -5
- package/kb/reference/supported-tools-registry.md +31 -26
- package/llms-full.txt +312 -73
- package/manifest.json +1 -1
- package/package.json +6 -2
- package/scripts/antigravity_plugin.py +570 -0
- package/scripts/codex_plugin.py +764 -0
- package/scripts/ecosystem_tools.json +92 -17
- package/scripts/generate_antigravity.py +16 -14
- package/scripts/generate_antigravity_agents.py +255 -0
- package/scripts/generate_antigravity_hooks.py +344 -0
- package/scripts/generate_cline_hooks.py +391 -0
- package/scripts/generate_cline_rules.py +210 -43
- package/scripts/generate_cline_skills.py +65 -2
- package/scripts/generate_codex_hooks.py +70 -8
- package/scripts/generate_gemini_agents.py +197 -0
- package/scripts/generate_gemini_hooks.py +24 -4
- package/scripts/generate_opencode_skills.py +544 -0
- package/scripts/inject_hook_cli.py +4 -26
- package/scripts/install.py +11 -10
- package/scripts/install_steps/ai_tools.py +209 -34
- package/scripts/mcp_editors.py +9 -1
- package/scripts/plugin.py +21 -0
- package/scripts/plugin_schema.py +8 -7
- package/scripts/secure_fs.py +35 -0
- package/scripts/uninstall.py +162 -18
- 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.
|
|
8808
|
+
version: "1.8.0"
|
|
8809
8809
|
created: "2026-03-23"
|
|
8810
|
-
last_updated: "2026-08-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
9417
|
+
version: "1.2.0"
|
|
9410
9418
|
created: "2026-03-27"
|
|
9411
|
-
last_updated: "2026-
|
|
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
|
|
9450
|
-
|
|
9451
|
-
|
|
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-
|
|
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`
|
|
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
|
|
9742
|
+
version: "1.1.0"
|
|
9685
9743
|
created: "2026-04-12"
|
|
9686
|
-
last_updated: "2026-
|
|
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.
|
|
9805
|
-
|
|
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`,
|
|
9821
|
-
|
|
9822
|
-
|
|
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
|
|
9842
|
-
config terminology (`AGENTS.md`, `.codex/config.toml`) instead
|
|
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.
|
|
11698
|
+
version: "3.4.0"
|
|
11551
11699
|
created: "2026-03-26"
|
|
11552
|
-
last_updated: "2026-
|
|
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
|
|
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
|
|
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`
|
|
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
|
|
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.
|
|
12140
|
+
version: "1.11.0"
|
|
11991
12141
|
created: "2026-03-27"
|
|
11992
|
-
last_updated: "2026-
|
|
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` |
|
|
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
|
|
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
|
|
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.
|
|
13523
|
+
version: "1.3.1"
|
|
13338
13524
|
created: "2026-04-12"
|
|
13339
|
-
last_updated: "2026-
|
|
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` |
|
|
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.
|
|
13612
|
+
version: "1.4.1"
|
|
13427
13613
|
created: "2026-04-07"
|
|
13428
|
-
last_updated: "2026-
|
|
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` |
|
|
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
|
|
14365
|
+
version: "1.1.0"
|
|
14180
14366
|
created: "2026-04-16"
|
|
14181
|
-
last_updated: "2026-
|
|
14182
|
-
description: "Reference for how ai-toolkit integrates with opencode — AGENTS.md, subagents, slash commands, JS plugin
|
|
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
|
|
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
|
|
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.
|
|
15436
|
+
version: "1.13.0"
|
|
15203
15437
|
created: "2026-04-23"
|
|
15204
|
-
last_updated: "2026-
|
|
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)
|
|
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
|
|
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
|
-
|
|
|
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
|
|
15326
|
-
| Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.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/`
|
|
15329
|
-
| Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules
|
|
15330
|
-
| Global install | `ai-toolkit install --editors cline` writes
|
|
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
|
|
15380
|
-
| Global config paths |
|
|
15381
|
-
| Our generators | `scripts/generate_antigravity.py` (rules
|
|
15382
|
-
|
|
|
15383
|
-
|
|
|
15384
|
-
|
|
|
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 |
|
|
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
|
|
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 |
|
|
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
|
|