@softspark/ai-toolkit 4.24.1 → 4.25.1
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 +63 -0
- package/README.md +33 -14
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/skills/cve-scan/scripts/cve_scan.py +16 -2
- 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/procedures/post-release-testing-sop.md +20 -11
- 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/enterprise-config-guide.md +1 -1
- 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 +333 -85
- 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_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
|
@@ -7041,9 +7041,9 @@ title: "SOP: Post-Release Testing"
|
|
|
7041
7041
|
category: procedures
|
|
7042
7042
|
service: ai-toolkit
|
|
7043
7043
|
tags: [sop, post-release, smoke-test, npm, sandbox, plugin-pack, provenance, isolation]
|
|
7044
|
-
version: "1.
|
|
7044
|
+
version: "1.2.0"
|
|
7045
7045
|
created: "2026-07-26"
|
|
7046
|
-
last_updated: "2026-08-
|
|
7046
|
+
last_updated: "2026-08-19"
|
|
7047
7047
|
description: "Smoke-test a published @softspark/ai-toolkit release from npm in an isolated HOME and npm prefix, without touching the maintainer's real install. Covers provenance, CLI, doctor, per-skill script resolution, scanner wiring, and the full plugin-pack lifecycle including the degraded-install path. Written for v4.18.0 and not run; v4.18.0 shipped a pack that broke every command it touched. First actually run on v4.22.0, which added Phases 4b and 4c after that release fixed four skills whose documented script path had never resolved and two that shipped a scanner nothing invoked."
|
|
7048
7048
|
---
|
|
7049
7049
|
|
|
@@ -7197,21 +7197,30 @@ cat > "$FX/index.html" <<'EOF'
|
|
|
7197
7197
|
<!DOCTYPE html><html><head><title>t</title></head>
|
|
7198
7198
|
<body><h1>A</h1><h3>skipped h2</h3><img src="x.png"><input type="text"><div onclick="go()">click</div></body></html>
|
|
7199
7199
|
EOF
|
|
7200
|
-
|
|
7201
|
-
|
|
7202
|
-
|
|
7203
|
-
|
|
7204
|
-
|
|
7205
|
-
|
|
7206
|
-
|
|
7207
|
-
|
|
7208
|
-
|
|
7200
|
+
cat > "$FX/patient.py" <<'EOF'
|
|
7201
|
+
patient = {"ssn": "123-45-6789", "diagnosis": "fixture"}
|
|
7202
|
+
endpoint = "http://example.com/patient"
|
|
7203
|
+
encrypt = False
|
|
7204
|
+
EOF
|
|
7205
|
+
printf '{"name":"fx","dependencies":{"lodash":"4.17.20","react":"18"}}\n' > "$FX/package.json"
|
|
7206
|
+
npm install --package-lock-only --ignore-scripts --prefix "$FX"
|
|
7207
|
+
|
|
7208
|
+
D="$HOME/.claude/skills/a11y-validate"
|
|
7209
|
+
CLAUDE_SKILL_DIR="$D" timeout 60 python3 "$D/scripts/a11y-scanner.py" "$FX" --output json </dev/null
|
|
7210
|
+
D="$HOME/.claude/skills/seo-validate"
|
|
7211
|
+
CLAUDE_SKILL_DIR="$D" timeout 60 python3 "$D/scripts/seo-scanner.py" "$FX" --output json </dev/null
|
|
7212
|
+
D="$HOME/.claude/skills/hipaa-validate"
|
|
7213
|
+
CLAUDE_SKILL_DIR="$D" timeout 60 python3 "$D/scripts/hipaa_scan.py" "$FX" --output json </dev/null
|
|
7214
|
+
D="$HOME/.claude/skills/cve-scan"
|
|
7215
|
+
CLAUDE_SKILL_DIR="$D" timeout 60 python3 "$D/scripts/cve_scan.py" "$FX" --json </dev/null
|
|
7209
7216
|
```
|
|
7210
7217
|
|
|
7211
7218
|
**Verify:**
|
|
7212
7219
|
- [ ] The scanner returns findings, not an empty set — the fixture has real defects
|
|
7213
7220
|
- [ ] Findings span more than one category, proving the whole check set ran
|
|
7214
7221
|
- [ ] A scanner that exits non-zero on findings is doing its job, not failing
|
|
7222
|
+
- [ ] CVE output has `total_findings > 0`; raw npm advisories with an empty
|
|
7223
|
+
normalized `findings` array are a parser failure, not a clean scan
|
|
7215
7224
|
|
|
7216
7225
|
`a11y-validate` and `seo-validate` shipped working scanners that **no step in
|
|
7217
7226
|
either skill invoked** for their entire life before v4.22.0. The model was told to
|
|
@@ -8805,9 +8814,9 @@ title: "AI Toolkit - Architecture Overview"
|
|
|
8805
8814
|
category: reference
|
|
8806
8815
|
service: ai-toolkit
|
|
8807
8816
|
tags: [architecture, overview, design, structure]
|
|
8808
|
-
version: "1.
|
|
8817
|
+
version: "1.8.0"
|
|
8809
8818
|
created: "2026-03-23"
|
|
8810
|
-
last_updated: "2026-08-
|
|
8819
|
+
last_updated: "2026-08-19"
|
|
8811
8820
|
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
8821
|
---
|
|
8813
8822
|
|
|
@@ -8863,7 +8872,10 @@ ai-toolkit/
|
|
|
8863
8872
|
generate_copilot.py # Generates Copilot instructions, agents, and portable skills
|
|
8864
8873
|
generate_copilot_hooks.py # Generates native Copilot hooks + self-contained runtime
|
|
8865
8874
|
generate_gemini.py # Generates GEMINI.md (sources _common.py)
|
|
8866
|
-
|
|
8875
|
+
generate_gemini_agents.py # Generates native .gemini/agents/*.md definitions
|
|
8876
|
+
generate_cline.py # Generates legacy .clinerules (sources _common.py)
|
|
8877
|
+
generate_cline_rules.py # Dual-emits .cline/rules + .clinerules compatibility
|
|
8878
|
+
generate_cline_hooks.py # Dual-emits .cline/hooks + .clinerules/hooks
|
|
8867
8879
|
generate_roo_modes.py # Generates .roomodes
|
|
8868
8880
|
generate_aider_conf.py # Generates .aider.conf.yml
|
|
8869
8881
|
generate_llms_txt.py # Generates llms.txt
|
|
@@ -8925,7 +8937,11 @@ also emits `.github/instructions`, `.github/prompts`, and native
|
|
|
8925
8937
|
`.github/hooks`. The user target writes the supported personal surfaces below
|
|
8926
8938
|
`$COPILOT_HOME` (default `~/.copilot`) and does not generate prompt files there.
|
|
8927
8939
|
Full-profile installs also emit native skill pointer catalogues for Cursor,
|
|
8928
|
-
Windsurf, and Cline.
|
|
8940
|
+
Windsurf, and Cline. Cline rules dual-emit to `.cline/rules/` and `.clinerules/`;
|
|
8941
|
+
profiles `standard`, `strict`, and `full` add executable hooks under both
|
|
8942
|
+
`.cline/hooks/<Event>` and `.clinerules/hooks/<Event>`. Gemini receives
|
|
8943
|
+
commands, a skill pointer, and native
|
|
8944
|
+
`.gemini/agents/*.md` definitions. Codex local install generates `AGENTS.md`,
|
|
8929
8945
|
`.agents/skills/*`, `.codex/agents/*.toml`, `.codex/hooks.json`, and
|
|
8930
8946
|
self-contained `.codex/hooks/*`. Global Codex install writes its user-owned
|
|
8931
8947
|
surfaces below `$CODEX_HOME` (default `~/.codex`) while user skills remain in
|
|
@@ -8964,7 +8980,8 @@ project-scoped native MCP files: `.cursor/mcp.json`, `.github/mcp.json`,
|
|
|
8964
8980
|
| `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
|
|
8965
8981
|
| `gemini-md` | `./` | Generates `GEMINI.md` |
|
|
8966
8982
|
| `cline-rules` | `./` | Generates `.clinerules` (legacy) |
|
|
8967
|
-
| `cline-dir-rules` | `./` | Generates `.clinerules/*.md` |
|
|
8983
|
+
| `cline-dir-rules` | `./` | Generates `.cline/rules/*.md` plus `.clinerules/*.md` compatibility |
|
|
8984
|
+
| `cline-hooks` | `./` | Generates eight executable files under `.cline/hooks/` and `.clinerules/hooks/` |
|
|
8968
8985
|
| `roo-modes` | `./` | Generates `.roomodes` |
|
|
8969
8986
|
| `roo-dir-rules` | `./` | Generates `.roo/rules/*.md` |
|
|
8970
8987
|
| `aider-conf` | `./` | Generates `.aider.conf.yml` |
|
|
@@ -9406,9 +9423,9 @@ title: "Claude Ecosystem Expansion Foundations"
|
|
|
9406
9423
|
category: reference
|
|
9407
9424
|
service: ai-toolkit
|
|
9408
9425
|
tags: [benchmark, claude-code, ecosystem, hooks, plugins, architecture]
|
|
9409
|
-
version: "1.
|
|
9426
|
+
version: "1.2.0"
|
|
9410
9427
|
created: "2026-03-27"
|
|
9411
|
-
last_updated: "2026-
|
|
9428
|
+
last_updated: "2026-08-19"
|
|
9412
9429
|
description: "Reference summary of the ecosystem signals and implementation foundations adopted in ai-toolkit, including runtime-aware plugin packaging."
|
|
9413
9430
|
---
|
|
9414
9431
|
|
|
@@ -9446,9 +9463,21 @@ hooks and sub-agents are Cowork-only.
|
|
|
9446
9463
|
|
|
9447
9464
|
### 2. Broader lifecycle coverage
|
|
9448
9465
|
|
|
9449
|
-
The
|
|
9450
|
-
|
|
9451
|
-
|
|
9466
|
+
The validator tracks the complete current Claude Code hook schema. Tracking an
|
|
9467
|
+
event means plugin manifests and hand-authored hook configuration can use it; it
|
|
9468
|
+
does not mean the default toolkit bundle registers a handler for that event.
|
|
9469
|
+
|
|
9470
|
+
Tracked schema events:
|
|
9471
|
+
- `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Notification`, `MessageDisplay`
|
|
9472
|
+
- `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`
|
|
9473
|
+
- `Stop`, `StopFailure`, `UserPromptExpansion`
|
|
9474
|
+
- `SubagentStart`, `SubagentStop`, `PreCompact`, `PostCompact`
|
|
9475
|
+
- `PermissionRequest`, `PermissionDenied`, `Elicitation`, `ElicitationResult`
|
|
9476
|
+
- `TaskCreated`, `TaskCompleted`, `TeammateIdle`
|
|
9477
|
+
- `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `DirectoryAdded`, `FileChanged`, `ConfigChange`
|
|
9478
|
+
- `Setup`, `InstructionsLoaded`
|
|
9479
|
+
|
|
9480
|
+
Toolkit-wired events in `app/hooks.json`:
|
|
9452
9481
|
- `SessionStart`
|
|
9453
9482
|
- `Notification`
|
|
9454
9483
|
- `PreToolUse`
|
|
@@ -9461,6 +9490,19 @@ Implemented events:
|
|
|
9461
9490
|
- `SubagentStop`
|
|
9462
9491
|
- `PreCompact`
|
|
9463
9492
|
- `SessionEnd`
|
|
9493
|
+
- `InstructionsLoaded`
|
|
9494
|
+
- `ConfigChange`
|
|
9495
|
+
|
|
9496
|
+
`MessageDisplay` and `DirectoryAdded` are tracked but intentionally have no
|
|
9497
|
+
default toolkit handler. `DirectoryAdded` runs asynchronously after `/add-dir`
|
|
9498
|
+
or SDK `register_repo_root` and cannot block the add. `MessageDisplay` can
|
|
9499
|
+
replace rendered text through `displayContent` without changing the transcript.
|
|
9500
|
+
|
|
9501
|
+
Claude Code also recognizes native plugin workflows, output styles, LSP
|
|
9502
|
+
servers, experimental themes and monitors, MCP-backed channels, and root plugin
|
|
9503
|
+
settings. Those are documented class C surfaces rather than generated toolkit
|
|
9504
|
+
output; root plugin settings currently support only `agent` and
|
|
9505
|
+
`subagentStatusLine`.
|
|
9464
9506
|
|
|
9465
9507
|
### 3. Creator workflows
|
|
9466
9508
|
|
|
@@ -9523,7 +9565,7 @@ category: reference
|
|
|
9523
9565
|
service: ai-toolkit
|
|
9524
9566
|
tags: [cli, commands, reference, install, update, plugin, mcp, telemetry]
|
|
9525
9567
|
created: "2026-04-13"
|
|
9526
|
-
last_updated: "2026-
|
|
9568
|
+
last_updated: "2026-08-19"
|
|
9527
9569
|
description: "Complete CLI reference for all ai-toolkit commands, options, and flags."
|
|
9528
9570
|
---
|
|
9529
9571
|
|
|
@@ -9550,6 +9592,8 @@ Usage: ai-toolkit <command> [options]
|
|
|
9550
9592
|
| `eject [dir]` | Export standalone config (no symlinks, no toolkit dependency) |
|
|
9551
9593
|
| `claude-app export [--output FILE] [--no-custom-rules] [--verify]` | Build an uploadable Claude Chat/Desktop/Cowork plugin ZIP and global-instructions file |
|
|
9552
9594
|
| `claude-app verify` | Validate a clean staged plugin with structural checks and the official Claude plugin validator |
|
|
9595
|
+
| `codex-plugin export [--output FILE]` | Build a deterministic native Codex plugin ZIP with skills and self-contained hooks |
|
|
9596
|
+
| `codex-plugin verify` | Validate a clean native Codex plugin stage without installing it or changing user configuration |
|
|
9553
9597
|
|
|
9554
9598
|
## Rule & Hook Injection
|
|
9555
9599
|
|
|
@@ -9573,6 +9617,9 @@ Usage: ai-toolkit <command> [options]
|
|
|
9573
9617
|
|
|
9574
9618
|
## Plugin Management
|
|
9575
9619
|
|
|
9620
|
+
`plugin ...` manages ai-toolkit's experimental runtime packs. Native Codex
|
|
9621
|
+
plugin packaging uses the separate `codex-plugin ...` command above.
|
|
9622
|
+
|
|
9576
9623
|
| Command | Description |
|
|
9577
9624
|
|---------|-------------|
|
|
9578
9625
|
| `plugin list` | Show available plugin packs with install status |
|
|
@@ -9584,6 +9631,23 @@ Usage: ai-toolkit <command> [options]
|
|
|
9584
9631
|
| `plugin remove <name> [--editor claude\|codex\|all]` | Remove a plugin pack |
|
|
9585
9632
|
| `plugin status [--editor claude\|codex\|all]` | Show installed plugins with runtime-specific details |
|
|
9586
9633
|
|
|
9634
|
+
### Native Codex plugin package
|
|
9635
|
+
|
|
9636
|
+
```bash
|
|
9637
|
+
ai-toolkit codex-plugin export --output ai-toolkit-codex-plugin.zip
|
|
9638
|
+
ai-toolkit codex-plugin verify
|
|
9639
|
+
```
|
|
9640
|
+
|
|
9641
|
+
Extract the ZIP to `<marketplace-root>/plugins/ai-toolkit/`, add an entry with
|
|
9642
|
+
`source.path: ./plugins/ai-toolkit` in
|
|
9643
|
+
`<marketplace-root>/.agents/plugins/marketplace.json`, then run
|
|
9644
|
+
`codex plugin marketplace add <marketplace-root>` for that non-default local
|
|
9645
|
+
marketplace. Open `/plugins` in Codex CLI, install the plugin, review/trust the
|
|
9646
|
+
bundled hooks, and start a new session. The ZIP includes plugin-local skill
|
|
9647
|
+
runtime resources, including the skill-audit helper and its Python imports.
|
|
9648
|
+
Export refuses symlinked output files and ancestors instead of resolving them
|
|
9649
|
+
to another destination. Codex IDE does not support plugins.
|
|
9650
|
+
|
|
9587
9651
|
## Config Inheritance
|
|
9588
9652
|
|
|
9589
9653
|
| Command | Description |
|
|
@@ -9624,7 +9688,8 @@ Usage: ai-toolkit <command> [options]
|
|
|
9624
9688
|
| `copilot-instructions` | Generate `.github/copilot-instructions.md` |
|
|
9625
9689
|
| `gemini-md` | Generate `GEMINI.md` for Gemini CLI |
|
|
9626
9690
|
| `cline-rules` | Generate `.clinerules` (legacy) |
|
|
9627
|
-
| `cline-dir-rules` | Generate `.clinerules/*.md`
|
|
9691
|
+
| `cline-dir-rules` | Generate `.cline/rules/*.md` plus `.clinerules/*.md` compatibility |
|
|
9692
|
+
| `cline-hooks` | Generate eight executable `.cline/hooks/<Event>` files plus `.clinerules/hooks/<Event>` extension compatibility |
|
|
9628
9693
|
| `roo-modes` | Generate `.roomodes` |
|
|
9629
9694
|
| `roo-dir-rules` | Generate `.roo/rules/*.md` |
|
|
9630
9695
|
| `aider-conf` | Generate `.aider.conf.yml` |
|
|
@@ -9632,6 +9697,8 @@ Usage: ai-toolkit <command> [options]
|
|
|
9632
9697
|
| `augment-rules` | Generate `.augment/rules/ai-toolkit.md` (legacy) |
|
|
9633
9698
|
| `augment-dir-rules` | Generate `.augment/rules/ai-toolkit-*.md` (recommended) |
|
|
9634
9699
|
| `antigravity-rules` | Generate `.agents/rules/` and `.agents/workflows/` |
|
|
9700
|
+
| `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) |
|
|
9701
|
+
| `antigravity-plugin verify <archive-or-dir>` | Verify Antigravity plugin schema, paths, hooks, modes, and self-containment offline |
|
|
9635
9702
|
| `llms-txt` | Generate `llms.txt` and `llms-full.txt` |
|
|
9636
9703
|
|
|
9637
9704
|
## Other Commands
|
|
@@ -9681,9 +9748,9 @@ title: "AI Toolkit - Codex CLI Compatibility"
|
|
|
9681
9748
|
category: reference
|
|
9682
9749
|
service: ai-toolkit
|
|
9683
9750
|
tags: [codex, compatibility, install, skills, hooks]
|
|
9684
|
-
version: "1.0
|
|
9751
|
+
version: "1.1.0"
|
|
9685
9752
|
created: "2026-04-12"
|
|
9686
|
-
last_updated: "2026-
|
|
9753
|
+
last_updated: "2026-08-19"
|
|
9687
9754
|
description: "Reference for how ai-toolkit maps Claude-oriented skills, hooks, and plugin packs to Codex CLI."
|
|
9688
9755
|
---
|
|
9689
9756
|
|
|
@@ -9752,6 +9819,72 @@ Codex base. Codex hooks no longer depend on executable paths under
|
|
|
9752
9819
|
`~/.softspark/ai-toolkit/`; project assets live beside `.codex/hooks.json`, and
|
|
9753
9820
|
user assets live under `$CODEX_HOME/ai-toolkit-hooks/`.
|
|
9754
9821
|
|
|
9822
|
+
## Native Codex Plugin Export
|
|
9823
|
+
|
|
9824
|
+
The separate native distribution command packages the toolkit for Codex's
|
|
9825
|
+
plugin marketplace flow without writing user configuration:
|
|
9826
|
+
|
|
9827
|
+
```bash
|
|
9828
|
+
ai-toolkit codex-plugin export --output ai-toolkit-codex-plugin.zip
|
|
9829
|
+
ai-toolkit codex-plugin verify
|
|
9830
|
+
```
|
|
9831
|
+
|
|
9832
|
+
The deterministic archive has this root layout:
|
|
9833
|
+
|
|
9834
|
+
```text
|
|
9835
|
+
.codex-plugin/plugin.json
|
|
9836
|
+
skills/*/SKILL.md
|
|
9837
|
+
skills/persona/personas/*.md
|
|
9838
|
+
skills/briefing/scripts/session_token_stats.py
|
|
9839
|
+
scripts/audit_skills.py
|
|
9840
|
+
scripts/{_common,frontmatter,injection,emission,instruction_core}.py
|
|
9841
|
+
hooks/hooks.json
|
|
9842
|
+
hooks/*
|
|
9843
|
+
constitution.md
|
|
9844
|
+
LICENSE
|
|
9845
|
+
```
|
|
9846
|
+
|
|
9847
|
+
The manifest name is `ai-toolkit`, its version comes from `package.json`, and
|
|
9848
|
+
`skills` points to `./skills/`. It intentionally omits a `hooks` field because
|
|
9849
|
+
Codex discovers the default `hooks/hooks.json` file. Every bundled hook command
|
|
9850
|
+
uses `${PLUGIN_ROOT}/hooks/...`; no command depends on a git root, `CODEX_HOME`,
|
|
9851
|
+
or the toolkit's global-install hook directory. Executable modes, archive order,
|
|
9852
|
+
and timestamps are fixed so identical sources produce identical ZIP bytes.
|
|
9853
|
+
Skill references are adapted to plugin-local paths. Validation covers every
|
|
9854
|
+
intentionally bundled cross-skill/runtime dependency, including persona
|
|
9855
|
+
definitions, the briefing helper, the documentation standards skill, and the
|
|
9856
|
+
constitution referenced by the security skill. Bare `scripts/...` references
|
|
9857
|
+
are classified as plugin runtime, target-workspace, skill-local, or
|
|
9858
|
+
source-toolkit references; unclassified paths fail validation. The skill-audit
|
|
9859
|
+
command uses the staged helper, whose local imports are bundled at plugin root.
|
|
9860
|
+
|
|
9861
|
+
`verify` stages a clean plugin under a temporary directory and checks the
|
|
9862
|
+
manifest, component paths, skills, exact canonical command-only hooks,
|
|
9863
|
+
executable assets, `SessionEnd` timeout, and symlink safety. The check is
|
|
9864
|
+
self-contained: it does not execute mutable validators selected from `$HOME`
|
|
9865
|
+
or environment-provided paths, add a marketplace, install a plugin, or write
|
|
9866
|
+
under `~/.agents` or `~/.codex`.
|
|
9867
|
+
Archive output uses the shared pinned-directory transaction and rejects a
|
|
9868
|
+
symlink at the destination or in any requested ancestor, so a redirected path
|
|
9869
|
+
cannot write outside the lexical destination.
|
|
9870
|
+
|
|
9871
|
+
To test the exported archive through a non-default local marketplace:
|
|
9872
|
+
|
|
9873
|
+
1. Extract it to `<marketplace-root>/plugins/ai-toolkit/`.
|
|
9874
|
+
2. Add an `ai-toolkit` entry to
|
|
9875
|
+
`<marketplace-root>/.agents/plugins/marketplace.json` with
|
|
9876
|
+
`source.path: ./plugins/ai-toolkit`.
|
|
9877
|
+
3. Run `codex plugin marketplace add <marketplace-root>` once for that
|
|
9878
|
+
non-default marketplace.
|
|
9879
|
+
4. Open `/plugins` in Codex CLI, install `ai-toolkit`, review/trust its hooks,
|
|
9880
|
+
and start a new session.
|
|
9881
|
+
|
|
9882
|
+
Codex IDE does not support plugins. Use Codex CLI or the ChatGPT desktop app for
|
|
9883
|
+
plugin browsing and installation.
|
|
9884
|
+
|
|
9885
|
+
Sources: [Codex plugin packaging](https://developers.openai.com/plugins/build/plugins),
|
|
9886
|
+
[plugin availability](https://learn.chatgpt.com/docs/plugins).
|
|
9887
|
+
|
|
9755
9888
|
## Skill Translation Model
|
|
9756
9889
|
|
|
9757
9890
|
Two delivery modes are used for Codex:
|
|
@@ -9801,9 +9934,8 @@ even when its tool list is otherwise portable. Examples include:
|
|
|
9801
9934
|
|
|
9802
9935
|
## Hook Compatibility
|
|
9803
9936
|
|
|
9804
|
-
Codex does not expose the full Claude hook event surface.
|
|
9805
|
-
|
|
9806
|
-
them:
|
|
9937
|
+
Codex does not expose the full Claude hook event surface. The current native
|
|
9938
|
+
contract defines 11 events; the Codex hook generator wires 10 of them:
|
|
9807
9939
|
|
|
9808
9940
|
- `SessionStart`
|
|
9809
9941
|
- `PreToolUse`
|
|
@@ -9813,13 +9945,34 @@ them:
|
|
|
9813
9945
|
- `SubagentStart`
|
|
9814
9946
|
- `SubagentStop`
|
|
9815
9947
|
- `PreCompact`
|
|
9948
|
+
- `SessionEnd`
|
|
9816
9949
|
- `Stop`
|
|
9817
9950
|
|
|
9818
9951
|
`PostCompact` is the one enum event left unwired (its only hook was the removed
|
|
9819
9952
|
environment-snapshot probe). Claude-only events such as `TaskCompleted`,
|
|
9820
|
-
`TeammateIdle`,
|
|
9821
|
-
|
|
9822
|
-
|
|
9953
|
+
`TeammateIdle`, and `Notification` have no Codex equivalent and are not
|
|
9954
|
+
available in `.codex/hooks.json`.
|
|
9955
|
+
|
|
9956
|
+
The generated `SessionEnd` handler runs the self-contained `session-end.sh`
|
|
9957
|
+
asset with `timeout: 3`, Codex's documented maximum. It runs only for the main
|
|
9958
|
+
thread, always synchronously, and is advisory: its output cannot steer Codex or
|
|
9959
|
+
keep the thread open. The asset therefore stays silent, cleans the session's
|
|
9960
|
+
toolkit state when available, and writes the handoff snapshot outside the
|
|
9961
|
+
repository with Codex-native `AGENTS.md` restart guidance.
|
|
9962
|
+
|
|
9963
|
+
Existing native hook documents may include an optional top-level string
|
|
9964
|
+
`description`; merges preserve it unchanged. Command handlers may include a
|
|
9965
|
+
non-negative integer `additionalContextLimit`, including zero, and valid user
|
|
9966
|
+
values are also preserved. Booleans, negative values, and non-integers are
|
|
9967
|
+
rejected before any file is changed. `SessionEnd` timeouts above three seconds
|
|
9968
|
+
are rejected.
|
|
9969
|
+
|
|
9970
|
+
Only executable `type: "command"` handlers are accepted. The current official
|
|
9971
|
+
hooks page says `prompt` and `agent` handlers are parsed but skipped, and does
|
|
9972
|
+
not establish an executable `mcp_tool` handler schema. Codex CLI 0.148.0 release
|
|
9973
|
+
notes mention MCP hooks, which conflicts with that page. Toolkit support stays
|
|
9974
|
+
command-only until OpenAI confirms the native config schema and execution
|
|
9975
|
+
semantics in the canonical hooks documentation.
|
|
9823
9976
|
|
|
9824
9977
|
The generator merges these Codex-compatible events into project or user
|
|
9825
9978
|
`hooks.json`, preserving unrelated user handlers and replacing only commands
|
|
@@ -9837,10 +9990,12 @@ After installation or any hook change, open `/hooks` in Codex and review/trust
|
|
|
9837
9990
|
the exact definitions. Project hooks additionally require a trusted `.codex`
|
|
9838
9991
|
project layer. The installer never bypasses hook trust.
|
|
9839
9992
|
|
|
9993
|
+
Source: [Codex hooks](https://learn.chatgpt.com/docs/hooks).
|
|
9994
|
+
|
|
9840
9995
|
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
|
|
9996
|
+
`SessionStart`, `SessionEnd`, `PreCompact`, and MCP-health adapters use Codex
|
|
9997
|
+
instruction and config terminology (`AGENTS.md`, `.codex/config.toml`) instead
|
|
9998
|
+
of Claude-only paths. The generated
|
|
9844
9999
|
`UserPromptSubmit` governance hook does not set `AI_TOOLKIT_HOOK_FORMAT=json`
|
|
9845
10000
|
by default because Codex currently renders `additionalContext` as visible hook
|
|
9846
10001
|
context in the TUI. This keeps prompt-submit output quiet while preserving hook
|
|
@@ -9912,6 +10067,8 @@ The Codex compatibility path is verified by:
|
|
|
9912
10067
|
2. Local install tests for `.agents/skills/` and `.codex/hooks.json`
|
|
9913
10068
|
3. Plugin install tests for global Codex rules, hooks, and cleanup paths
|
|
9914
10069
|
4. CLI tests for `codex-md` and `codex-hooks`
|
|
10070
|
+
5. Native plugin export tests for layout, hooks, determinism, validation, CLI
|
|
10071
|
+
dispatch, and no-home-mutation behavior
|
|
9915
10072
|
|
|
9916
10073
|
## Related
|
|
9917
10074
|
|
|
@@ -10898,7 +11055,7 @@ tags:
|
|
|
10898
11055
|
doc_type: reference
|
|
10899
11056
|
created: "2026-04-11"
|
|
10900
11057
|
last_updated: "2026-07-26"
|
|
10901
|
-
description: "
|
|
11058
|
+
description: "Configuration inheritance for ai-toolkit projects extends base settings from npm packages, Git URLs, or local paths. Defines merge semantics, enforcement rules, and CLI commands for validating and diffing configurations."
|
|
10902
11059
|
---
|
|
10903
11060
|
|
|
10904
11061
|
# Enterprise Config Inheritance Guide
|
|
@@ -11547,9 +11704,9 @@ title: "Global Install Model"
|
|
|
11547
11704
|
category: reference
|
|
11548
11705
|
service: ai-toolkit
|
|
11549
11706
|
tags: [install, global, claude, codex, plugins, local-setup]
|
|
11550
|
-
version: "3.
|
|
11707
|
+
version: "3.4.0"
|
|
11551
11708
|
created: "2026-03-26"
|
|
11552
|
-
last_updated: "2026-
|
|
11709
|
+
last_updated: "2026-08-19"
|
|
11553
11710
|
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
11711
|
---
|
|
11555
11712
|
|
|
@@ -11599,7 +11756,7 @@ The `--profile` flag controls how much of each editor's native surface is activa
|
|
|
11599
11756
|
| Profile | What runs | Use when |
|
|
11600
11757
|
|---------|-----------|----------|
|
|
11601
11758
|
| `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
|
|
11759
|
+
| `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
11760
|
| `strict` | Everything in `standard` plus git-hook wiring for commit-time safety checks. | Solo dev or tight team with zero tolerance for drift. |
|
|
11604
11761
|
| `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
11762
|
|
|
@@ -11642,20 +11799,20 @@ store, so toolkit updates require re-export and re-upload.
|
|
|
11642
11799
|
with documented, file-based config surfaces:
|
|
11643
11800
|
|
|
11644
11801
|
- `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
|
|
11802
|
+
- `gemini`: `~/.gemini/GEMINI.md`; hooks at `~/.gemini/settings.json` (profile ≥ standard); `~/.gemini/commands/`, `~/.gemini/skills/` pointer, and native `~/.gemini/agents/*.md` (profile full)
|
|
11646
11803
|
- `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`
|
|
11804
|
+
- `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
11805
|
- `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
11806
|
- `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
|
|
11650
11807
|
- `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
|
|
11808
|
+
- `opencode`: `~/.config/opencode/{AGENTS.md,agents/,commands/,plugins/,opencode.json}`; `profile=full` also copies complete native skills to `~/.config/opencode/skills/<name>/`
|
|
11652
11809
|
|
|
11653
11810
|
Cursor, GitHub Copilot, and Google Antigravity now have partial global support,
|
|
11654
11811
|
scoped to whatever documented HOME file surface each exposes:
|
|
11655
11812
|
|
|
11656
11813
|
- `cursor`: `~/.cursor/hooks.json` (safety/quality hooks; profile ≥ standard). Cursor RULES stay project-local — their only global surface is the Settings UI.
|
|
11657
11814
|
- `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
|
|
11815
|
+
- `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
11816
|
|
|
11660
11817
|
Their global MCP support, where available, is handled by `ai-toolkit mcp
|
|
11661
11818
|
install`, not by the rule installer.
|
|
@@ -11690,7 +11847,9 @@ These files still stay local to a repository as part of the core install model:
|
|
|
11690
11847
|
- `.github/agents/ai-toolkit-*.agent.md`
|
|
11691
11848
|
- `.github/skills/ai-toolkit-*/SKILL.md` plus required assets and helper scripts
|
|
11692
11849
|
- `.github/hooks/ai-toolkit.json` plus `.github/hooks/ai-toolkit/copilot_hook.py` (profile ≥ `standard`)
|
|
11693
|
-
- `.clinerules`
|
|
11850
|
+
- `.cline/rules/ai-toolkit-*.md` plus `.clinerules/ai-toolkit-*.md` compatibility
|
|
11851
|
+
- `.cline/hooks/<Event>` plus `.clinerules/hooks/<Event>` compatibility for Cline profiles `standard`, `strict`, and `full`
|
|
11852
|
+
- `.clinerules/workflows/ai-toolkit-*.md`
|
|
11694
11853
|
- `.roomodes`
|
|
11695
11854
|
- `.aider.conf.yml`
|
|
11696
11855
|
- `.augment/rules/ai-toolkit-*.md`
|
|
@@ -11987,9 +12146,9 @@ title: "Hooks Catalog"
|
|
|
11987
12146
|
category: reference
|
|
11988
12147
|
service: ai-toolkit
|
|
11989
12148
|
tags: [hooks, quality, safety, enforcement, settings.json]
|
|
11990
|
-
version: "1.
|
|
12149
|
+
version: "1.11.0"
|
|
11991
12150
|
created: "2026-03-27"
|
|
11992
|
-
last_updated: "2026-
|
|
12151
|
+
last_updated: "2026-08-19"
|
|
11993
12152
|
description: "Complete reference of all ai-toolkit hooks: events, scripts, installation, and runtime behavior."
|
|
11994
12153
|
---
|
|
11995
12154
|
|
|
@@ -12591,12 +12750,47 @@ Beyond the global Claude Code hooks above, editor profiles emit native hook file
|
|
|
12591
12750
|
|--------|------|-----------|--------|
|
|
12592
12751
|
| Cursor | `.cursor/hooks.json` | `generate_cursor_hooks.py` | Cursor hooks schema |
|
|
12593
12752
|
| 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` |
|
|
12753
|
+
| 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
12754
|
| Augment | `.augment/settings.json` (hooks block) | `generate_augment_hooks.py` | Claude-style events |
|
|
12755
|
+
| 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
12756
|
| 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
12757
|
| Codex CLI | `.codex/hooks.json`; user `$CODEX_HOME/hooks.json` | `generate_codex_hooks.py` | Native Codex schema, PascalCase events, command ownership markers |
|
|
12758
|
+
| Google Antigravity | `.agents/hooks.json`; user `~/.gemini/config/hooks.json` | `generate_antigravity_hooks.py` | Native five-event schema plus adjacent Python adapter |
|
|
12598
12759
|
| OpenCode | `.opencode/plugins/ai-toolkit-hooks.js`; user `~/.config/opencode/plugins/ai-toolkit-hooks.js` | `generate_opencode_plugin.py` | Native JavaScript plugin hooks |
|
|
12599
12760
|
|
|
12761
|
+
### Cline hooks (`.cline/hooks/<Event>` and `.clinerules/hooks/<Event>`)
|
|
12762
|
+
|
|
12763
|
+
Cline CLI/SDK loads `.cline/hooks`, while the VS Code and JetBrains extension
|
|
12764
|
+
loads project hooks from `.clinerules/hooks`; project generation emits both.
|
|
12765
|
+
Cline loads extensionless executable files named `TaskStart`, `TaskResume`,
|
|
12766
|
+
`TaskCancel`, `TaskComplete`, `PreToolUse`, `PostToolUse`, `UserPromptSubmit`,
|
|
12767
|
+
and `PreCompact`. The toolkit adapter is self-contained, reads bounded JSON
|
|
12768
|
+
from stdin, and emits only Cline's documented `cancel`, `contextModification`,
|
|
12769
|
+
and `errorMessage` keys. `PreToolUse` validates the documented
|
|
12770
|
+
`preToolUse.toolName` plus `parameters` shape and cancels recognized destructive
|
|
12771
|
+
shell operations, including `run_commands` arrays; start, resume, prompt, and compaction events may inject safe
|
|
12772
|
+
context. Input size and runtime are bounded, and regeneration replaces only
|
|
12773
|
+
marked toolkit files while preserving user-owned hooks.
|
|
12774
|
+
|
|
12775
|
+
### Google Antigravity hooks (`.agents/hooks.json`)
|
|
12776
|
+
|
|
12777
|
+
The toolkit owns only the top-level `ai-toolkit` namespace and preserves
|
|
12778
|
+
unrelated namespaces. The exact event set is `PreToolUse`, `PostToolUse`,
|
|
12779
|
+
`PreInvocation`, `PostInvocation`, and `Stop`. Tool events use matcher groups;
|
|
12780
|
+
the other events use direct command-handler lists. Every handler has a bounded
|
|
12781
|
+
timeout.
|
|
12782
|
+
|
|
12783
|
+
The adjacent Python runtime maps `.toolCall.name` and
|
|
12784
|
+
`.toolCall.args.CommandLine` to native camelCase responses. `PreToolUse`
|
|
12785
|
+
returns `allow`, `deny`, or `ask`; `PostToolUse` returns `{}`; invocation events
|
|
12786
|
+
use object-shaped `injectSteps` and a native `terminationBehavior`; `Stop`
|
|
12787
|
+
reads the official `executionNum`, `terminationReason`, optional `error`, and
|
|
12788
|
+
`fullyIdle` inputs. It returns `decision: continue` only when the invocation is
|
|
12789
|
+
not fully idle and has not passed its first execution; later executions and
|
|
12790
|
+
fully idle invocations stop, which bounds re-entry.
|
|
12791
|
+
Project commands use `.agents/hooks/`; exported plugin commands resolve through
|
|
12792
|
+
`${extensionPath}`.
|
|
12793
|
+
|
|
12600
12794
|
### Cursor hooks (`.cursor/hooks.json`)
|
|
12601
12795
|
|
|
12602
12796
|
Cursor hooks follow the native [version-1 hooks contract](https://cursor.com/docs/hooks):
|
|
@@ -12625,10 +12819,11 @@ Codex hooks follow the native [Codex hooks contract](https://learn.chatgpt.com/d
|
|
|
12625
12819
|
|
|
12626
12820
|
- **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
12821
|
- **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
|
|
12822
|
+
- **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.
|
|
12823
|
+
- **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
12824
|
- **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
12825
|
- **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
|
|
12826
|
+
- **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
12827
|
- **Trust:** installation never bypasses trust. Review the active definitions with `/hooks` after install or update.
|
|
12633
12828
|
|
|
12634
12829
|
### Devin CLI hooks (`.devin/hooks.v1.json`)
|
|
@@ -13334,9 +13529,9 @@ title: "AI Toolkit - MCP Editor Compatibility"
|
|
|
13334
13529
|
category: reference
|
|
13335
13530
|
service: ai-toolkit
|
|
13336
13531
|
tags: [mcp, editors, compatibility, codex, cursor, antigravity]
|
|
13337
|
-
version: "1.3.
|
|
13532
|
+
version: "1.3.1"
|
|
13338
13533
|
created: "2026-04-12"
|
|
13339
|
-
last_updated: "2026-
|
|
13534
|
+
last_updated: "2026-08-19"
|
|
13340
13535
|
description: "Official MCP support matrix and native config targets for editors supported by ai-toolkit."
|
|
13341
13536
|
---
|
|
13342
13537
|
|
|
@@ -13354,7 +13549,7 @@ ai-toolkit keeps `.mcp.json` as the project-level canonical template format and
|
|
|
13354
13549
|
| Cursor | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` | Mirrors `mcpServers` directly |
|
|
13355
13550
|
| 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
13551
|
| 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` |
|
|
13552
|
+
| 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
13553
|
| Roo Code | project | `.roo/mcp.json` | Mirrors `mcpServers` into the documented project-level MCP file |
|
|
13359
13554
|
| Windsurf | global | `~/.codeium/windsurf/mcp_config.json` | Global-only JSON config |
|
|
13360
13555
|
| Cline | global | `~/.cline/data/settings/cline_mcp_settings.json` | Global-only JSON config |
|
|
@@ -13423,9 +13618,9 @@ title: "MCP Server Templates"
|
|
|
13423
13618
|
category: reference
|
|
13424
13619
|
service: ai-toolkit
|
|
13425
13620
|
tags: [mcp, templates, servers, configuration, editors, inject-mcp, external-templates]
|
|
13426
|
-
version: "1.4.
|
|
13621
|
+
version: "1.4.1"
|
|
13427
13622
|
created: "2026-04-07"
|
|
13428
|
-
last_updated: "2026-
|
|
13623
|
+
last_updated: "2026-08-19"
|
|
13429
13624
|
description: "Reference for 26 built-in MCP server templates, external template injection via inject-mcp, and native editor MCP installation support."
|
|
13430
13625
|
---
|
|
13431
13626
|
|
|
@@ -13471,7 +13666,7 @@ When `install` runs with `--scope project`, ai-toolkit also updates the project'
|
|
|
13471
13666
|
| `cursor` | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` | Mirrors canonical `mcpServers` |
|
|
13472
13667
|
| `copilot` | project + global | `.github/mcp.json`, `$COPILOT_HOME/mcp-config.json` (default `~/.copilot/mcp-config.json`) | Adds `type` and `tools: ["*"]` automatically |
|
|
13473
13668
|
| `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` |
|
|
13669
|
+
| `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
13670
|
| `roo` | project | `.roo/mcp.json` | Mirrors canonical `mcpServers` into Roo's project MCP file |
|
|
13476
13671
|
| `windsurf` | global | `~/.codeium/windsurf/mcp_config.json` | Global-only official config |
|
|
13477
13672
|
| `cline` | global | `~/.cline/data/settings/cline_mcp_settings.json` | Global-only official config |
|
|
@@ -14176,17 +14371,17 @@ title: "AI Toolkit - opencode Compatibility"
|
|
|
14176
14371
|
category: reference
|
|
14177
14372
|
service: ai-toolkit
|
|
14178
14373
|
tags: [opencode, compatibility, install, skills, hooks, mcp, plugins]
|
|
14179
|
-
version: "1.0
|
|
14374
|
+
version: "1.1.0"
|
|
14180
14375
|
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
|
|
14376
|
+
last_updated: "2026-08-19"
|
|
14377
|
+
description: "Reference for how ai-toolkit integrates with opencode — AGENTS.md, Agent Skills, subagents, slash commands, JS plugin hooks, and MCP config."
|
|
14183
14378
|
---
|
|
14184
14379
|
|
|
14185
14380
|
# AI Toolkit - opencode Compatibility
|
|
14186
14381
|
|
|
14187
14382
|
## Summary
|
|
14188
14383
|
|
|
14189
|
-
opencode (https://opencode.ai) is the 11th supported editor. `ai-toolkit install --editors opencode` (or `--editors all`) lays down
|
|
14384
|
+
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
14385
|
|
|
14191
14386
|
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
14387
|
|
|
@@ -14197,6 +14392,7 @@ opencode also reads `CLAUDE.md` as a fallback, so a user without the native inte
|
|
|
14197
14392
|
- `AGENTS.md` (shared with Codex CLI via distinct marker sections)
|
|
14198
14393
|
- `.opencode/agents/ai-toolkit-*.md` (one per ai-toolkit agent, `mode: subagent`)
|
|
14199
14394
|
- `.opencode/commands/ai-toolkit-*.md` (one per user-invocable skill; the prompt lives in the markdown body)
|
|
14395
|
+
- `.opencode/skills/<name>/SKILL.md` plus its resources (`profile=full`)
|
|
14200
14396
|
- `.opencode/plugins/ai-toolkit-hooks.js` (JS plugin bridging Bash hooks)
|
|
14201
14397
|
- `opencode.json` (MCP key merged from `.mcp.json`, user keys preserved)
|
|
14202
14398
|
|
|
@@ -14207,6 +14403,7 @@ opencode also reads `CLAUDE.md` as a fallback, so a user without the native inte
|
|
|
14207
14403
|
- `~/.config/opencode/AGENTS.md`
|
|
14208
14404
|
- `~/.config/opencode/agents/ai-toolkit-*.md`
|
|
14209
14405
|
- `~/.config/opencode/commands/ai-toolkit-*.md`
|
|
14406
|
+
- `~/.config/opencode/skills/<name>/SKILL.md` plus resources (`profile=full`)
|
|
14210
14407
|
- `~/.config/opencode/plugins/ai-toolkit-hooks.js`
|
|
14211
14408
|
- `~/.config/opencode/opencode.json` (MCP merge, user keys preserved)
|
|
14212
14409
|
|
|
@@ -14219,6 +14416,7 @@ Files land directly under `~/.config/opencode/` (no `.opencode/` nesting) becaus
|
|
|
14219
14416
|
| Rules file | `CLAUDE.md` | `AGENTS.md` | `AGENTS.md` + `CLAUDE.md` fallback |
|
|
14220
14417
|
| Subagents | Yes | Yes (`.codex/agents/*.toml`) | Yes (`mode: subagent`) |
|
|
14221
14418
|
| Slash commands | Skills | Adapted skills | Native commands with frontmatter |
|
|
14419
|
+
| Agent Skills | Yes | Yes | Yes (`.opencode/skills/*/SKILL.md`) |
|
|
14222
14420
|
| MCP | Yes | Yes | Yes (`opencode.json`) |
|
|
14223
14421
|
| Lifecycle hooks | JSON config | `.codex/hooks` | JS/TS plugins (~30+ events) |
|
|
14224
14422
|
| Global config dir | `~/.claude` | `$CODEX_HOME` (default `~/.codex`) | `~/.config/opencode` |
|
|
@@ -14252,6 +14450,31 @@ OpenCode while translating Claude-only skill-directory variables and runtime
|
|
|
14252
14450
|
APIs. Codex output uses a separate renderer and converts prompt placeholders to
|
|
14253
14451
|
durable user-input prose.
|
|
14254
14452
|
|
|
14453
|
+
## Native Agent Skills
|
|
14454
|
+
|
|
14455
|
+
OpenCode's stable Agent Skills surface discovers one directory per skill at
|
|
14456
|
+
`.opencode/skills/<name>/SKILL.md` or
|
|
14457
|
+
`~/.config/opencode/skills/<name>/SKILL.md`. The `full` profile copies each
|
|
14458
|
+
complete ai-toolkit skill directory so relative scripts, references,
|
|
14459
|
+
templates, and assets remain available. Lower profiles use OpenCode's
|
|
14460
|
+
documented `.claude/skills/` and `.agents/skills/` compatibility discovery and
|
|
14461
|
+
remove only toolkit-managed native copies when downgrading.
|
|
14462
|
+
|
|
14463
|
+
`generate_opencode_skills.py` preserves the stable portable fields `name`,
|
|
14464
|
+
`description`, `license`, `compatibility`, and `metadata`. Claude-only runtime
|
|
14465
|
+
fields and orchestration primitives are not emitted. The adapter maps
|
|
14466
|
+
`user-invocable: false` to the v2-compatible `slash: false` hint and
|
|
14467
|
+
`disable-model-invocation: true` to metadata
|
|
14468
|
+
`opencode/autoinvoke: false`. Stable OpenCode ignores unknown frontmatter and
|
|
14469
|
+
loads Agent Skills on demand through the `skill` tool; slash commands continue
|
|
14470
|
+
to come only from `.opencode/commands/`.
|
|
14471
|
+
|
|
14472
|
+
Managed manifests let profile downgrade and uninstall remove generated files
|
|
14473
|
+
while preserving user-owned skill directories and files added beside managed
|
|
14474
|
+
resources. Source and destination symlinks are rejected before writes. Pinned
|
|
14475
|
+
destination descriptors remain active through generation, cleanup, and
|
|
14476
|
+
rollback, so an ancestor swap cannot redirect mutations outside the target.
|
|
14477
|
+
|
|
14255
14478
|
## Hook Bridge (JS Plugin)
|
|
14256
14479
|
|
|
14257
14480
|
`.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 +14522,31 @@ The installer detects opencode as configured when any of these markers exist:
|
|
|
14299
14522
|
|
|
14300
14523
|
- Generated `.opencode/agents/ai-toolkit-*.md`
|
|
14301
14524
|
- Generated `.opencode/commands/ai-toolkit-*.md`
|
|
14525
|
+
- Manifest-owned files under generated `.opencode/skills/<name>/` directories
|
|
14302
14526
|
- Generated `.opencode/plugins/ai-toolkit-hooks.js`
|
|
14303
14527
|
- Managed markers from `AGENTS.md`
|
|
14304
14528
|
- `mcp` key entries injected by the toolkit (user keys preserved)
|
|
14305
14529
|
|
|
14306
14530
|
User-authored opencode files and user-authored `opencode.json` keys are never deleted.
|
|
14307
14531
|
|
|
14532
|
+
Native skill cleanup removes only manifest-owned files. A user-owned skill or
|
|
14533
|
+
an extra file inside a formerly managed directory is preserved. The native
|
|
14534
|
+
skills tree participates in the uninstall transaction, so a later cleanup
|
|
14535
|
+
failure restores managed files without discarding those user additions.
|
|
14536
|
+
|
|
14537
|
+
## Current Config and v2 Beta Surfaces
|
|
14538
|
+
|
|
14539
|
+
Stable OpenCode supports both `opencode.json` and `opencode.jsonc`. Its current
|
|
14540
|
+
config directory uses plural `agents/`, `commands/`, `plugins/`, and `skills/`
|
|
14541
|
+
subdirectories. The v2 plugin API is still beta and additionally recognizes
|
|
14542
|
+
root-package `skills/*.md`, nested `skills/**/SKILL.md`, and a `skills` config
|
|
14543
|
+
array containing local paths or HTTP URLs.
|
|
14544
|
+
|
|
14545
|
+
There is no migration in ai-toolkit for v2 yet. The existing stable JavaScript
|
|
14546
|
+
plugin generator remains the supported path until the v2 API stabilizes; the
|
|
14547
|
+
beta surfaces are tracked in the ecosystem registry so a later sync cannot
|
|
14548
|
+
silently miss their promotion.
|
|
14549
|
+
|
|
14308
14550
|
## Behavioral Limits
|
|
14309
14551
|
|
|
14310
14552
|
- 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 +14556,7 @@ User-authored opencode files and user-authored `opencode.json` keys are never de
|
|
|
14314
14556
|
|
|
14315
14557
|
The opencode integration is verified by:
|
|
14316
14558
|
|
|
14317
|
-
1. Generator contract tests for the
|
|
14559
|
+
1. Generator contract tests for the six `generate_opencode*.py` scripts (bats)
|
|
14318
14560
|
2. MCP merge idempotency and user-key preservation tests
|
|
14319
14561
|
3. Plugin export shape and event coverage tests
|
|
14320
14562
|
4. Auto-detection tests for install / update flow
|
|
@@ -14327,6 +14569,7 @@ The opencode integration is verified by:
|
|
|
14327
14569
|
| `ai-toolkit opencode-md` | Generate `AGENTS.md` body for opencode |
|
|
14328
14570
|
| `ai-toolkit opencode-agents` | Generate `.opencode/agents/ai-toolkit-*.md` |
|
|
14329
14571
|
| `ai-toolkit opencode-commands` | Generate `.opencode/commands/ai-toolkit-*.md` |
|
|
14572
|
+
| `ai-toolkit opencode-skills` | Generate complete `.opencode/skills/<name>/` directories |
|
|
14330
14573
|
| `ai-toolkit opencode-plugin` | Generate `.opencode/plugins/ai-toolkit-hooks.js` |
|
|
14331
14574
|
| `ai-toolkit opencode-json` | Merge MCP servers into `opencode.json` |
|
|
14332
14575
|
|
|
@@ -15199,9 +15442,9 @@ title: "Supported Tools Registry"
|
|
|
15199
15442
|
category: reference
|
|
15200
15443
|
service: ai-toolkit
|
|
15201
15444
|
tags: [editors, platforms, generators, integration, ecosystem]
|
|
15202
|
-
version: "1.
|
|
15445
|
+
version: "1.13.0"
|
|
15203
15446
|
created: "2026-04-23"
|
|
15204
|
-
last_updated: "2026-
|
|
15447
|
+
last_updated: "2026-08-19"
|
|
15205
15448
|
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
15449
|
---
|
|
15207
15450
|
|
|
@@ -15225,11 +15468,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
15225
15468
|
| Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
|
|
15226
15469
|
| Release notes | https://github.com/anthropics/claude-code/releases |
|
|
15227
15470
|
| 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+) |
|
|
15471
|
+
| 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
15472
|
| 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` |
|
|
15473
|
+
| 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
15474
|
| Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool`, `http` (POST event JSON to allowlisted URLs via `allowedHttpHookUrls`) |
|
|
15232
15475
|
| Other capabilities | slash commands, MCP server/client, sub-agent, output style, `SKILL.md` (≥500 lines warn) |
|
|
15476
|
+
| 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
15477
|
| Version probe | `claude --version` |
|
|
15234
15478
|
| 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
15479
|
|
|
@@ -15308,12 +15552,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
15308
15552
|
| ID | `gemini-cli` |
|
|
15309
15553
|
| Docs | https://github.com/google-gemini/gemini-cli/tree/main/docs |
|
|
15310
15554
|
| 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
|
|
15555
|
+
| 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>/`. |
|
|
15556
|
+
| 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) |
|
|
15557
|
+
| 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
15558
|
| 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
15559
|
| Version probe | `gemini --version` |
|
|
15316
|
-
|
|
|
15560
|
+
| 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. |
|
|
15561
|
+
| 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
15562
|
|
|
15318
15563
|
### Cline
|
|
15319
15564
|
|
|
@@ -15322,12 +15567,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
15322
15567
|
| ID | `cline` |
|
|
15323
15568
|
| Docs | https://docs.cline.bot |
|
|
15324
15569
|
| 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
|
|
15570
|
+
| 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). |
|
|
15571
|
+
| 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
15572
|
| 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
|
|
15573
|
+
| 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. |
|
|
15574
|
+
| 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. |
|
|
15575
|
+
| 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
15576
|
|
|
15332
15577
|
### Roo Code
|
|
15333
15578
|
|
|
@@ -15376,12 +15621,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
15376
15621
|
| ID | `google-antigravity` |
|
|
15377
15622
|
| Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
|
|
15378
15623
|
| 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
|
-
|
|
|
15624
|
+
| 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`. |
|
|
15625
|
+
| 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. |
|
|
15626
|
+
| 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). |
|
|
15627
|
+
| 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. |
|
|
15628
|
+
| 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}`. |
|
|
15629
|
+
| 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` |
|
|
15630
|
+
| 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
15631
|
| 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
15632
|
|
|
15387
15633
|
### Codex CLI
|
|
@@ -15391,12 +15637,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
15391
15637
|
| ID | `codex-cli` |
|
|
15392
15638
|
| 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
15639
|
| 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`) |
|
|
15640
|
+
| 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`. |
|
|
15641
|
+
| 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
15642
|
| 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 |
|
|
15643
|
+
| 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
15644
|
| 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
15645
|
| 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) |
|
|
15646
|
+
| 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
15647
|
| Version probe | `codex --version` |
|
|
15401
15648
|
|
|
15402
15649
|
### opencode
|
|
@@ -15406,13 +15653,14 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
15406
15653
|
| ID | `opencode` |
|
|
15407
15654
|
| Docs | https://opencode.ai/docs |
|
|
15408
15655
|
| 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` |
|
|
15656
|
+
| 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 |
|
|
15657
|
+
| 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` |
|
|
15658
|
+
| 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
15659
|
| 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` |
|
|
15660
|
+
| 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
15661
|
| 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
15662
|
| Version probe | `opencode --version` |
|
|
15415
|
-
| Watch item |
|
|
15663
|
+
| 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
15664
|
|
|
15417
15665
|
---
|
|
15418
15666
|
|