@softspark/ai-toolkit 4.5.1 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/AGENTS.md +50 -0
  2. package/CHANGELOG.md +46 -0
  3. package/README.md +13 -13
  4. package/app/.claude-plugin/plugin.json +1 -1
  5. package/benchmarks/ecosystem-doctor-snapshot.json +76 -54
  6. package/bin/ai-toolkit.js +2 -5
  7. package/kb/procedures/maintenance-sop.md +9 -8
  8. package/kb/procedures/release-preparation-sop.md +24 -16
  9. package/kb/procedures/release-verification-sop.md +4 -6
  10. package/kb/reference/architecture-overview.md +5 -6
  11. package/kb/reference/cli-reference.md +2 -3
  12. package/kb/reference/global-install-model.md +3 -3
  13. package/kb/reference/opencode-compatibility.md +2 -2
  14. package/kb/reference/supported-tools-registry.md +40 -33
  15. package/llms-full.txt +89 -77
  16. package/manifest.json +1 -1
  17. package/package.json +2 -3
  18. package/scripts/ecosystem_tools.json +74 -20
  19. package/scripts/generate_antigravity.py +32 -21
  20. package/scripts/generate_augment_agents.py +9 -10
  21. package/scripts/generate_augment_commands.py +4 -17
  22. package/scripts/generate_augment_hooks.py +7 -5
  23. package/scripts/generate_codex.py +28 -0
  24. package/scripts/generate_codex_hooks.py +23 -1
  25. package/scripts/generate_cursor_agents.py +13 -29
  26. package/scripts/generate_cursor_mdc.py +4 -3
  27. package/scripts/generate_opencode_commands.py +9 -9
  28. package/scripts/generate_windsurf_hooks.py +6 -0
  29. package/scripts/generate_windsurf_rules.py +39 -24
  30. package/scripts/generate_windsurf_skills.py +14 -4
  31. package/scripts/install.py +1 -1
  32. package/scripts/install_steps/ai_tools.py +68 -30
  33. package/scripts/plugin.py +2 -2
  34. package/scripts/validate.py +1 -0
  35. package/scripts/generate_codex_rules.py +0 -52
@@ -2,11 +2,11 @@
2
2
  title: "SOP: Release Preparation"
3
3
  category: procedures
4
4
  service: ai-toolkit
5
- tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem]
6
- version: "1.10.1"
5
+ tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem, shellcheck]
6
+ version: "1.11.0"
7
7
  created: "2026-04-10"
8
- last_updated: "2026-04-28"
9
- description: "Step-by-step checklist for preparing a new ai-toolkit release — ecosystem-sync drift check, version sync, changelog, artifact regeneration, validation, and tagging. Run BEFORE every git tag. Includes mandatory Provenance, SARIF, and checksum-pin checks added in v2.8.0, the single-run npm test discipline added in v1.8.0, the ecosystem-sync gate added in v1.9.0, and the registry-vs-generators drift gate added in v1.10.0."
8
+ last_updated: "2026-06-02"
9
+ description: "Step-by-step checklist for preparing a new ai-toolkit release — ecosystem-sync drift check, version sync, changelog, artifact regeneration, validation, and tagging. Run BEFORE every git tag. Includes mandatory Provenance, SARIF, and checksum-pin checks added in v2.8.0, the single-run npm test discipline added in v1.8.0, the ecosystem-sync gate added in v1.9.0, the registry-vs-generators drift gate added in v1.10.0, and the mandatory pre-tag ShellCheck gate added in v1.11.0 (publish.yml does not run ShellCheck, so a hook lint failure can publish while reddening main CI — see the v4.5.1 postmortem in Phase 5)."
10
10
  ---
11
11
 
12
12
  # SOP: Release Preparation
@@ -51,12 +51,11 @@ python3 scripts/sync_version.py X.Y.Z # if script exists, else manual
51
51
  # 3. Write CHANGELOG.md entry
52
52
  # 4. Regenerate artifacts
53
53
  python3 scripts/generate_agents_md.py > AGENTS.md
54
- python3 scripts/generate_codex_rules.py .
55
54
  python3 scripts/generate_llms_txt.py > llms.txt
56
55
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
57
56
 
58
- # 5. Validate + audit + SARIF + test + ecosystem check
59
- python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > /tmp/audit.sarif && npm test
57
+ # 5. Validate + audit + SARIF + shellcheck + test + ecosystem check
58
+ python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > /tmp/audit.sarif && shellcheck --severity=warning app/hooks/*.sh && npm test
60
59
 
61
60
  # 5a. Supply-chain standard (v2.8.0+) — non-negotiable
62
61
  grep -q -- '--provenance' .github/workflows/publish.yml || { echo "MISSING --provenance"; exit 1; }
@@ -253,7 +252,6 @@ Add entry at the top of `CHANGELOG.md` (after the header, before previous releas
253
252
 
254
253
  ```bash
255
254
  python3 scripts/generate_agents_md.py > AGENTS.md
256
- python3 scripts/generate_codex_rules.py .
257
255
  python3 scripts/generate_llms_txt.py > llms.txt
258
256
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
259
257
  ```
@@ -278,6 +276,12 @@ python3 scripts/audit_skills.py --ci
278
276
  python3 scripts/audit_skills.py --sarif > audit.sarif # MANDATORY — GHAS ingest
279
277
  python3 scripts/audit_skills.py --permissions # review Bash/Write/Edit footprint
280
278
 
279
+ # ShellCheck on hooks (added in 1.11.0). Mirrors the ci.yml "ShellCheck hooks"
280
+ # job. NOT run by validate.py, npm test, OR publish.yml — so a hook with a
281
+ # ShellCheck warning passes every other gate AND still publishes on tag while
282
+ # turning main CI red. Run it here, before tagging.
283
+ shellcheck --severity=warning app/hooks/*.sh && echo "OK: shellcheck clean"
284
+
281
285
  # Registry / generator drift (added in 1.10.0). Meta-generators excluded.
282
286
  META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
283
287
  diff \
@@ -299,12 +303,15 @@ echo "ok: $(grep -c '^ok ' /tmp/npm-test.log) | not ok: $(grep -c '^not ok' /tmp
299
303
  - `audit_skills.py --ci`: `HIGH: 0 | WARN: 0` (INFO is acceptable)
300
304
  - `audit_skills.py --sarif`: valid JSON, non-empty `runs[0].tool.driver.rules`
301
305
  - `audit_skills.py --permissions`: review `Skills with Bash + Write + Edit` list — any newly-added skill with broad access MUST be justified in the CHANGELOG entry
306
+ - `shellcheck --severity=warning app/hooks/*.sh`: no output, exit 0. A common false positive is `SC2034` on `INPUT` or env vars (e.g. `AI_TOOLKIT_HOOK_FORMAT`) that a *sourced* helper (`_hook-io.sh`) consumes — ShellCheck cannot see cross-file use. Fix with a `# shellcheck disable=SC2034` directive or `export`, matching `guard-destructive.sh`. Never tag with a red ShellCheck.
302
307
  - Registry drift: `OK: registry matches filesystem`. If `DRIFT:` appears, add the missing `scripts/generate_*.py` rows to `kb/reference/supported-tools-registry.md` before tagging.
303
308
  - `npm test`: `1..N` with zero `not ok` (read from the cached `/tmp/npm-test.log`, do not rerun)
304
309
 
310
+ > **Why this matters (v4.5.1 postmortem):** `publish.yml` runs only `validate.py` + `npm test`, so it published v4.5.0 even though the `main` CI `ShellCheck hooks` job was red on two `SC2034` warnings in a new hook. The publish workflow does **not** depend on the CI workflow. Until that is fixed, ShellCheck is a manual pre-tag gate — run it here every time.
311
+
305
312
  **One-liner:**
306
313
  ```bash
307
- python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > audit.sarif && diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE 'generate_agents_md\.py|generate_llms_txt\.py|generate_language_rules_skills\.py' | sort -u) && npm test
314
+ python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > audit.sarif && shellcheck --severity=warning app/hooks/*.sh && diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE 'generate_agents_md\.py|generate_llms_txt\.py|generate_language_rules_skills\.py' | sort -u) && npm test
308
315
  ```
309
316
 
310
317
  **If tests fail:** Fix the issue, do NOT skip. Common failures:
@@ -427,14 +434,15 @@ git push origin --delete vX.Y.Z
427
434
  | 5 | `package-lock.json` | `npm install --package-lock-only` | Matches target |
428
435
  | 6 | Count sync | Check `package.json` description, README | `validate.py` passes |
429
436
  | 7 | CHANGELOG.md | Add release entry (incl. `Ecosystem` subsection if any B/D/E/F drift) | Entry exists for vX.Y.Z |
430
- | 8 | Regenerate artifacts | `generate_agents_md.py`, `generate_codex_rules.py`, `generate_llms_txt.py` | No unexpected diff |
437
+ | 8 | Regenerate artifacts | `generate_agents_md.py`, `generate_llms_txt.py` | No unexpected diff |
431
438
  | 9 | Validate | `validate.py --strict` | 0 errors, 0 warnings |
432
439
  | 10 | Security audit (CI mode) | `audit_skills.py --ci` | 0 HIGH |
433
440
  | 11 | Security audit (SARIF) | `audit_skills.py --sarif` | Valid SARIF 2.1.0 JSON |
434
441
  | 12 | Per-skill permissions | `audit_skills.py --permissions` | New broad-access skills justified in CHANGELOG |
435
- | 13 | Provenance flag check | `grep -- '--provenance' .github/workflows/publish.yml` | Present |
436
- | 14 | Checksum-pin backfill | `sources.json` entries all have `sha256` | No unpinned URL sources |
437
- | 15 | Tests | `npm test` | All pass |
438
- | 16 | Commit | `git commit` | Clean working tree |
439
- | 17 | Tag | `git tag vX.Y.Z` | Tag exists |
440
- | 18 | Push | `git push origin main --tags` | CI triggered with `id-token: write` |
442
+ | 13 | ShellCheck hooks | `shellcheck --severity=warning app/hooks/*.sh` | Exit 0, no output (mirrors ci.yml; publish.yml does NOT run it) |
443
+ | 14 | Provenance flag check | `grep -- '--provenance' .github/workflows/publish.yml` | Present |
444
+ | 15 | Checksum-pin backfill | `sources.json` entries all have `sha256` | No unpinned URL sources |
445
+ | 16 | Tests | `npm test` | All pass |
446
+ | 17 | Commit | `git commit` | Clean working tree |
447
+ | 18 | Tag | `git tag vX.Y.Z` | Tag exists |
448
+ | 19 | Push | `git push origin main --tags` | CI triggered with `id-token: write` |
@@ -36,9 +36,8 @@ Verifies all critical paths from the user's perspective.
36
36
  ```bash
37
37
  # Pre-commit (Phase 0)
38
38
  python3 scripts/generate_agents_md.py > AGENTS.md # 1. Regenerate AGENTS.md
39
- python3 scripts/generate_codex_rules.py . # 2. Refresh standard Codex rules
40
- python3 scripts/generate_llms_txt.py > llms.txt # 3. Regenerate llms.txt
41
- python3 scripts/validate.py --strict # 4. Validation passed?
39
+ python3 scripts/generate_llms_txt.py > llms.txt # 2. Regenerate llms.txt
40
+ python3 scripts/validate.py --strict # 3. Validation passed?
42
41
  npm test > /tmp/npm-test.log 2>&1 && grep -c '^ok ' /tmp/npm-test.log && ! grep -q '^not ok' /tmp/npm-test.log # 5. All tests passed? (single run, cached)
43
42
 
44
43
  # Post-install verification (Phases 1-7)
@@ -68,7 +67,6 @@ counts but does NOT auto-regenerate — you must do it locally.
68
67
  ```bash
69
68
  # 1. Regenerate generated artifacts
70
69
  python3 scripts/generate_agents_md.py > AGENTS.md
71
- python3 scripts/generate_codex_rules.py .
72
70
  python3 scripts/generate_llms_txt.py > llms.txt
73
71
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
74
72
 
@@ -82,7 +80,7 @@ python3 scripts/audit_skills.py --ci
82
80
  npm test
83
81
 
84
82
  # 5. Stage and commit
85
- git add AGENTS.md .agents/rules/ai-toolkit-*.md llms.txt llms-full.txt
83
+ git add AGENTS.md llms.txt llms-full.txt
86
84
  git add -p # stage your other changes
87
85
  git commit -m "feat: your change description"
88
86
  ```
@@ -93,7 +91,7 @@ by the developer as part of their PR.
93
91
 
94
92
  **One-liner (copy-paste):**
95
93
  ```bash
96
- python3 scripts/generate_agents_md.py > AGENTS.md && python3 scripts/generate_codex_rules.py . && python3 scripts/generate_llms_txt.py > llms.txt && python3 scripts/generate_llms_txt.py --full > llms-full.txt && python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && npm test
94
+ python3 scripts/generate_agents_md.py > AGENTS.md && python3 scripts/generate_llms_txt.py > llms.txt && python3 scripts/generate_llms_txt.py --full > llms-full.txt && python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && npm test
97
95
  ```
98
96
 
99
97
  ---
@@ -3,9 +3,9 @@ title: "AI Toolkit - Architecture Overview"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [architecture, overview, design, structure]
6
- version: "1.4.5"
6
+ version: "1.4.6"
7
7
  created: "2026-03-23"
8
- last_updated: "2026-05-12"
8
+ last_updated: "2026-06-10"
9
9
  description: "Architecture of ai-toolkit: directory layout, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
10
10
  ---
11
11
 
@@ -109,7 +109,7 @@ Machine (global) Project (local)
109
109
  - `--editors cursor,aider` — install only selected editors
110
110
  - (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
111
111
 
112
- Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.windsurf/rules/*.md`, `.clinerules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agent/rules/*.md`, `CONVENTIONS.md`). Full-profile installs also emit native skill pointer catalogues for Cursor, Windsurf, and Cline. Codex local install additionally generates `AGENTS.md`, `.agents/rules/*.md`, `.agents/skills/*`, and `.codex/hooks.json`. Hooks are global-only — not merged into project settings except for editor-native local hook files such as Codex `.codex/hooks.json`. Experimental plugin packs can also layer a global Codex target in `HOME` (`~/AGENTS.md`, `~/.agents/`, `~/.codex/hooks.json`) when installed with `ai-toolkit plugin install --editor codex`.
112
+ Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit since the Devin Desktop rebrand), `.clinerules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agents/rules/*.md`, `CONVENTIONS.md`). Full-profile installs also emit native skill pointer catalogues for Cursor, Windsurf, and Cline. Codex local install additionally generates `AGENTS.md` (universal coding rules inlined — Codex reads only AGENTS.md, not `.agents/rules/`), `.agents/skills/*`, and `.codex/hooks.json`. Hooks are global-only — not merged into project settings except for editor-native local hook files such as Codex `.codex/hooks.json`. Experimental plugin packs can also layer a global Codex target in `HOME` (`~/AGENTS.md`, `~/.agents/`, `~/.codex/hooks.json`) when installed with `ai-toolkit plugin install --editor codex`.
113
113
 
114
114
  If a project already has `.mcp.json`, local install mirrors its `mcpServers` entries into `.claude/settings.local.json` plus any selected editors with project-scoped native MCP files (`.cursor/mcp.json`, `.github/mcp.json`).
115
115
 
@@ -133,7 +133,7 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
133
133
  | `cursor-rules` | `./` | Generates `.cursorrules` (legacy) |
134
134
  | `cursor-mdc` | `./` | Generates `.cursor/rules/*.mdc` (recommended) |
135
135
  | `windsurf-rules` | `./` | Generates `.windsurfrules` (legacy) |
136
- | `windsurf-dir-rules` | `./` | Generates `.windsurf/rules/*.md` |
136
+ | `windsurf-dir-rules` | `./` | Generates `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit) |
137
137
  | `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
138
138
  | `gemini-md` | `./` | Generates `GEMINI.md` |
139
139
  | `cline-rules` | `./` | Generates `.clinerules` (legacy) |
@@ -143,9 +143,8 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
143
143
  | `aider-conf` | `./` | Generates `.aider.conf.yml` |
144
144
  | `conventions-md` | `./` | Generates `CONVENTIONS.md` (Aider auto-loaded) |
145
145
  | `augment-dir-rules` | `./` | Generates `.augment/rules/ai-toolkit-*.md` |
146
- | `antigravity-rules` | `./` | Generates `.agent/rules/` + `.agent/workflows/` |
146
+ | `antigravity-rules` | `./` | Generates `.agents/rules/` + `.agents/workflows/` |
147
147
  | `codex-md` | `./` | Generates Codex-facing `AGENTS.md` |
148
- | `codex-rules` | `./` | Generates `.agents/rules/*.md` |
149
148
  | `codex-hooks` | `./` | Generates `.codex/hooks.json` |
150
149
  | `agents-md` | toolkit | Regenerates `AGENTS.md` |
151
150
  | `llms-txt` | `./` | Generates `llms.txt` |
@@ -87,8 +87,7 @@ Usage: ai-toolkit <command> [options]
87
87
  |---------|-------------|
88
88
  | `generate-all` | Generate all platform configs at once |
89
89
  | `agents-md` | Regenerate `AGENTS.md` from agent definitions |
90
- | `codex-md` | Generate `AGENTS.md` with marker injection for Codex CLI |
91
- | `codex-rules` | Generate `.agents/rules/*.md` for Codex CLI |
90
+ | `codex-md` | Generate `AGENTS.md` (coding rules inlined) with marker injection for Codex CLI |
92
91
  | `codex-hooks` | Generate `.codex/hooks.json` for Codex CLI |
93
92
  | `cursor-rules` | Generate `.cursorrules` (legacy single file) |
94
93
  | `cursor-mdc` | Generate `.cursor/rules/*.mdc` (recommended) |
@@ -104,7 +103,7 @@ Usage: ai-toolkit <command> [options]
104
103
  | `conventions-md` | Generate `CONVENTIONS.md` for Aider |
105
104
  | `augment-rules` | Generate `.augment/rules/ai-toolkit.md` (legacy) |
106
105
  | `augment-dir-rules` | Generate `.augment/rules/ai-toolkit-*.md` (recommended) |
107
- | `antigravity-rules` | Generate `.agent/rules/` and `.agent/workflows/` |
106
+ | `antigravity-rules` | Generate `.agents/rules/` and `.agents/workflows/` |
108
107
  | `llms-txt` | Generate `llms.txt` and `llms-full.txt` |
109
108
 
110
109
  ## Other Commands
@@ -63,10 +63,10 @@ with documented, file-based config surfaces:
63
63
  - `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md`
64
64
  - `gemini`: `~/.gemini/GEMINI.md`
65
65
  - `augment`: `~/.augment/rules/ai-toolkit.md`
66
- - `cline`: `~/.cline/rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
66
+ - `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
67
67
  - `roo`: `~/.roo/rules/ai-toolkit-*.md`
68
68
  - `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
69
- - `codex`: `~/AGENTS.md`, `~/.agents/rules/*`, `~/.agents/skills/*`, `~/.codex/hooks.json`
69
+ - `codex`: `~/AGENTS.md` (coding rules inlined), `~/.agents/skills/*`, `~/.codex/hooks.json`
70
70
  - `opencode`: `~/.config/opencode/*`
71
71
 
72
72
  Cursor, GitHub Copilot, and Google Antigravity rule installs stay project-local.
@@ -99,7 +99,7 @@ These files still stay local to a repository as part of the core install model:
99
99
  - `.roomodes`
100
100
  - `.aider.conf.yml`
101
101
  - `.augment/rules/ai-toolkit-*.md`
102
- - `.agent/rules/*.md` and `.agent/workflows/*.md` (Google Antigravity)
102
+ - `.agents/rules/*.md` and `.agents/workflows/*.md` (Google Antigravity; singular `.agent/` still read as fallback)
103
103
  - `.git/hooks/pre-commit` (fallback)
104
104
  - project-specific documentation or safety overlays
105
105
 
@@ -23,7 +23,7 @@ opencode also reads `CLAUDE.md` as a fallback, so a user without the native inte
23
23
 
24
24
  - `AGENTS.md` (shared with Codex CLI via distinct marker sections)
25
25
  - `.opencode/agents/ai-toolkit-*.md` (one per ai-toolkit agent, `mode: subagent`)
26
- - `.opencode/commands/ai-toolkit-*.md` (one per user-invocable skill, required `template: |` frontmatter field)
26
+ - `.opencode/commands/ai-toolkit-*.md` (one per user-invocable skill; the prompt lives in the markdown body)
27
27
  - `.opencode/plugins/ai-toolkit-hooks.js` (JS plugin bridging Bash hooks)
28
28
  - `opencode.json` (MCP key merged from `.mcp.json`, user keys preserved)
29
29
 
@@ -71,7 +71,7 @@ Opencode treats these files as auto-completable with `@` and can delegate to the
71
71
 
72
72
  Only user-invocable skills (`user-invocable: true` or no `disable-model-invocation`) emit to `.opencode/commands/`. Knowledge skills (`user-invocable: false`) are intentionally skipped — they are not intended as commands.
73
73
 
74
- Each command file carries opencode's required `template: |` frontmatter field, built from the SKILL.md body.
74
+ Each command file carries the prompt in its markdown body (built from the SKILL.md body). opencode reads the body as the prompt; the `template` field is JSON-config-only and is ignored in `.md` command files.
75
75
 
76
76
  ## Hook Bridge (JS Plugin)
77
77
 
@@ -3,9 +3,9 @@ title: "Supported Tools Registry"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [editors, platforms, generators, integration, ecosystem]
6
- version: "1.3.0"
6
+ version: "1.5.0"
7
7
  created: "2026-04-23"
8
- last_updated: "2026-05-30"
8
+ last_updated: "2026-06-09"
9
9
  description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code + 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
10
10
  ---
11
11
 
@@ -26,14 +26,16 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
26
26
  | Field | Value |
27
27
  |-------|-------|
28
28
  | ID | `claude-code` |
29
- | Docs | https://platform.claude.com/docs/en/claude-code |
29
+ | Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
30
30
  | Release notes | https://github.com/anthropics/claude-code/releases |
31
- | Config paths | `~/.claude/settings.json`, `.claude/settings.local.json`, `CLAUDE.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
31
+ | Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.170) |
32
+ | Config paths | `~/.claude/settings.json`, `.claude/settings.json` (project, committed), `.claude/settings.local.json`, `CLAUDE.md`, `.claude/rules/*.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
32
33
  | Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
33
34
  | Tracked hook events | Core: `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Notification`, `MessageDisplay`. Tool: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`. Turn: `Stop`, `StopFailure`, `UserPromptExpansion`. Subagent: `SubagentStart`, `SubagentStop`. Compaction: `PreCompact`, `PostCompact`. Permissions: `PermissionRequest`, `PermissionDenied`. Elicitation: `Elicitation`, `ElicitationResult`. Teams: `TaskCreated`, `TaskCompleted`, `TeammateIdle`. Worktrees/env: `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `FileChanged`, `ConfigChange`. Setup: `Setup`, `InstructionsLoaded` |
34
- | Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool` |
35
+ | Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool`, `http` (POST event JSON to allowlisted URLs via `allowedHttpHookUrls`) |
35
36
  | Other capabilities | slash commands, MCP server/client, sub-agent, output style, `SKILL.md` (≥500 lines warn) |
36
37
  | Version probe | `claude --version` |
38
+ | 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). |
37
39
 
38
40
  ---
39
41
 
@@ -47,8 +49,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
47
49
  | Docs | https://cursor.com/docs |
48
50
  | Changelog | https://cursor.com/changelog |
49
51
  | Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
50
- | Config paths | `.cursorrules`, `.cursor/rules/*.mdc`, `.cursor/rules/*.md`, `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `.cursor/hooks.json` |
51
- | Compat read paths | `.agents/skills/`, `~/.agents/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.codex/skills/`, `~/.codex/skills/` |
52
+ | Config paths | `.cursorrules`, `.cursor/rules/*.mdc` (plain `.md` files in `.cursor/rules/` are **ignored** by the rules system), `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `~/.cursor/agents/*.md`, `.cursor/hooks.json` |
53
+ | Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.codex/skills/`, `~/.codex/skills/`; subagents: `.claude/agents/`, `~/.claude/agents/`, `.codex/agents/`, `~/.codex/agents/` (`.cursor/` wins on name conflicts) |
52
54
  | Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full), `scripts/generate_cursor_agents.py` (profile=full), `scripts/generate_cursor_skills.py` (profile=full pointer) |
53
55
  | Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
54
56
 
@@ -57,14 +59,15 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
57
59
  | Field | Value |
58
60
  |-------|-------|
59
61
  | ID | `windsurf` |
60
- | Docs | https://docs.windsurf.com |
61
- | Changelog | https://windsurf.com/changelog |
62
- | Stable docs mirror | https://docs.windsurf.com/llms.txt + per-page .md twins |
63
- | Config paths | `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `.windsurf/skills/*/SKILL.md`, `AGENTS.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/mcp_config.json` |
62
+ | Docs | https://docs.devin.ai/desktop (Windsurf rebranded to Devin Desktop ~2026-06-02; docs.windsurf.com resolves here) |
63
+ | Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
64
+ | Stable docs mirror | https://docs.devin.ai/desktop/... per-page .md twins; legacy `.windsurf/`, `.windsurfrules`, `~/.codeium/windsurf/` paths still read as fallback (new canonical: `.devin/`) |
65
+ | Config paths | **Primary (Devin Desktop):** `.devin/rules/*.md`, `.devin/workflows/*.md`, `.devin/skills/*/SKILL.md`, `.devin/config.json`, `.devin/config.local.json`, `~/.config/devin/config.json` (Devin Local MCP/permissions). **Legacy fallback:** `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `.windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/mcp_config.json`. Plus `AGENTS.md`. |
64
66
  | Compat read paths | `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/` |
65
- | Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py`, `scripts/generate_windsurf_hooks.py` (profile=full), `scripts/generate_windsurf_skills.py` (global + profile=full pointer) |
67
+ | Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped, deprecated**), `scripts/generate_windsurf_skills.py` (global + profile=full pointer, dual-emits) |
66
68
  | Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
67
69
  | Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
70
+ | Sunset notes | Cascade agent is available only through **2026-07-01**; Devin Local is the default agent since 2026-06-02. The `.windsurf/hooks.json` surface dies with Cascade — migrate to Devin CLI lifecycle hooks (docs.devin.ai/cli/extensibility/hooks/\*) before that date. Devin CLI ("Devin for Terminal") shares the Devin Local harness, reads `AGENTS.md` and the standard `SKILL.md` format; not yet a separate registry entry. |
68
71
 
69
72
  ### GitHub Copilot
70
73
 
@@ -85,11 +88,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
85
88
  | ID | `gemini-cli` |
86
89
  | Docs | https://github.com/google-gemini/gemini-cli/tree/main/docs |
87
90
  | Release notes | https://github.com/google-gemini/gemini-cli/releases |
88
- | Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `.gemini/extensions/gemini-extension.json` |
91
+ | Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `~/.gemini/skills/*/SKILL.md`, `~/.agents/skills/*/SKILL.md` (the `.agents/skills` alias wins over `.gemini/skills` within the same tier), `.gemini/extensions/gemini-extension.json` |
89
92
  | 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) |
90
- | Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `SessionStart`, `SessionEnd`, `Stop`, `SKILL.md`, `activate_skill`, custom commands, `gemini-extension.json` |
93
+ | Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeToolSelection`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `AfterModel`, `Notification`, `PreCompress`, `SessionStart`, `SessionEnd`, `SKILL.md`, `activate_skill`, custom commands, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
91
94
  | Version probe | `gemini --version` |
92
- | Latest upstream | v0.39.0 (2026-04-23) |
95
+ | Latest upstream | v0.45.2 (2026-06-05). NOTE: Gemini CLI drops free/paid tiers 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist keeps Gemini CLI. |
93
96
 
94
97
  ### Cline
95
98
 
@@ -98,19 +101,20 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
98
101
  | ID | `cline` |
99
102
  | Docs | https://docs.cline.bot |
100
103
  | Release notes | https://github.com/cline/cline/releases |
101
- | Config paths | `.clinerules/*.md` (compat), `.clinerules/workflows/*.md` (compat workflows), `.cline/rules/*.md`, `.cline/hooks/`, `.cline/skills/*/SKILL.md`, `~/.cline/rules/*.md`, `~/.cline/hooks/`, `~/.cline/skills/*/SKILL.md`, `~/.cline/data/settings/cline_mcp_settings.json` |
104
+ | Config paths | **Extension:** `.clinerules/*.md`, `.clinerules/workflows/*.md`, `.clinerules/skills/*/SKILL.md`, `.clinerules/hooks/` (project), `~/Documents/Cline/Rules/Hooks/` (global hooks), `~/.cline/data/settings/cline_mcp_settings.json`. **CLI/SDK unified layout** (docs.cline.bot/getting-started/config; `.clinerules` is deprecated there): `.cline/{rules,hooks,plugins,skills}/`, `~/.cline/{rules,hooks,plugins,skills}/`, `CLINE_HOOKS_DIR` env var. **Cross-tool:** `AGENTS.md` + `~/.agents/AGENTS.md` (first-class rules sources), `.claude/skills/*/SKILL.md` (native discovery, always-on since v3.57.0). |
102
105
  | Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.py`, `scripts/generate_cline_skills.py` |
103
- | Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules |
104
- | Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules since 2026-04. Project rules still use `.clinerules/` for compatibility; the documented `~/.cline/rules/` path is used for global install. Skills are emitted as a pointer catalogue in `profile=full` and global installs. |
105
- | Global install | `ai-toolkit install --editors cline` writes documented global rules under `~/.cline/rules/` and a skill pointer under `~/.cline/skills/`; MCP remains managed by `ai-toolkit mcp install --editor cline`. |
106
+ | Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules, `AGENTS.md`, plugins |
107
+ | Plugins | `.cline/plugins/` + `~/.cline/plugins/` (JS/TS), `package.json` `cline.plugins` manifest; plugins can bundle skills. Not adopted as a distribution channel yet candidate for shipping toolkit skills to CLI/SDK users. |
108
+ | Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules since 2026-04. Project rules still use `.clinerules/` for compatibility; global rules are written to `~/Documents/Cline/Rules/` (the documented Cline global rules dir `~/.cline/rules/` is not a Cline-read path). Skills are emitted as a pointer catalogue in `profile=full` and global installs. |
109
+ | Global install | `ai-toolkit install --editors cline` writes documented global rules under `~/Documents/Cline/Rules/` and a skill pointer under `~/.cline/skills/`; MCP remains managed by `ai-toolkit mcp install --editor cline`. |
106
110
 
107
111
  ### Roo Code
108
112
 
109
113
  | Field | Value |
110
114
  |-------|-------|
111
115
  | ID | `roo-code` |
112
- | Docs | https://docs.roocode.com |
113
- | Release notes | https://github.com/RooCodeInc/Roo-Code/releases |
116
+ | Docs | https://roocodeinc.github.io/Roo-Code (docs.roocode.com 301-redirects here) |
117
+ | Release notes | https://github.com/RooCodeInc/Roo-Code/releases (**ARCHIVED** — repo read-only since 2026-05-15, frozen at v3.54.0; community fork reportedly continues) |
114
118
  | Config paths | `.roomodes`, `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `~/.roo/custom_modes.yaml`, `mcp_settings.json` (global via Roo settings UI) |
115
119
  | Our generators | `scripts/generate_roo_modes.py`, `scripts/generate_roo_rules.py` |
116
120
  | Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups` |
@@ -137,9 +141,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
137
141
  | ID | `augment` |
138
142
  | Docs | https://docs.augmentcode.com |
139
143
  | Changelog | https://www.augmentcode.com/changelog |
140
- | Config paths | `.augment/rules/*.md`, `.augment/guidelines.md` (legacy), `.augment/agents/*.md`, `.augment/commands/*.md`, `.augment/skills/*/SKILL.md`, `~/.augment/rules/*.md`, `~/.augment/settings.json`, `/etc/augment/settings.json` |
144
+ | Config paths | `.augment/rules/*.md`, `.augment-guidelines` (workspace root, legacy single-file), `~/.augment/user-guidelines.md`, `.augment/agents/*.md`, `.augment/commands/*.md`, `.augment/skills/*/SKILL.md`, `.augment/settings.json`, `.augment/settings.local.json`, `~/.augment/rules/*.md`, `~/.augment/settings.json`, `/etc/augment/settings.json`. Auggie CLI also discovers skills/commands from `.claude/` and `.agents/` (`.augment/` wins on precedence). |
141
145
  | Our generators | `scripts/generate_augment.py`, `scripts/generate_augment_rules.py`, `scripts/generate_augment_agents.py` (profile=full), `scripts/generate_augment_commands.py` (profile=full), `scripts/generate_augment_hooks.py` (profile=full, HOME-scoped), `scripts/generate_augment_skills.py` (profile=full) |
142
- | Tracked capabilities | `.augment`, Agent mode, Next Edit, MCP, context engine, Auggie CLI, `always_apply`, `agent_requested`, subagents, custom commands, `SKILL.md`, `PreToolUse`, `PostToolUse`, `SessionStart`, `SessionEnd`, `Stop`, ACP Mode |
146
+ | Tracked capabilities | `.augment`, Agent mode, Next Edit, MCP, context engine, Auggie CLI, `always_apply`, `agent_requested`, subagents, custom commands, `SKILL.md`, `PreToolUse`, `PostToolUse`, `SessionStart`, `SessionEnd`, `Stop`, `Notification`, ACP Mode |
143
147
  | SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
144
148
 
145
149
  ### Google Antigravity
@@ -149,21 +153,23 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
149
153
  | ID | `google-antigravity` |
150
154
  | Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
151
155
  | Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
152
- | Config paths | `.agent/rules/*.md`, `.agent/workflows/*.md`, `.agent/skills/*/SKILL.md`, `AGENTS.md`, `GEMINI.md` |
153
- | Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer) |
154
- | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, `AGENTS.md`, `GEMINI.md`, agent permissions |
155
- | Doc access note | Docs are JS-SPA verify via `main-*.js` bundle strings or community skill repos. `WebFetch` returns an empty shell. |
156
+ | Config paths | `.agents/rules/*.md`, `.agents/workflows/*.md` (plural is the Antigravity 2.0 default; singular `.agent/rules`, `.agent/workflows` still read as fallback), `.agent/skills/*/SKILL.md` (IDE), `.agents/skills/*/SKILL.md` (CLI), `.agents/hooks.json` (CLI hooks), `.agents/mcp_config.json` (CLI MCP), `AGENTS.md`, `GEMINI.md` |
157
+ | Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`) |
158
+ | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions |
159
+ | CLI notes | Antigravity CLI (GA 2026-05-19): hooks in `.agents/hooks.json` use Claude-style event names (`PreToolUse`, not Gemini's `BeforeTool`) with a JSON stdin/stdout decision contract; MCP config `.agents/mcp_config.json` requires `serverUrl` (legacy `url`/`httpUrl` fail silently). Global MCP config path is inconsistently reported across sources (`~/.gemini/antigravity-cli/` vs `~/.gemini/config/`) — only the workspace path is registered until verified via `agy inspect`. |
160
+ | Doc access note | Docs are JS-SPA — verify via `main-*.js` bundle strings or community skill repos. `WebFetch` returns an empty shell. The sitemap.xml is stale (omits the `cli-*` doc pages), so sitemap-based monitoring misses CLI doc additions. |
156
161
 
157
162
  ### Codex CLI
158
163
 
159
164
  | Field | Value |
160
165
  |-------|-------|
161
166
  | ID | `codex-cli` |
162
- | Docs | https://github.com/openai/codex (redirects from developers.openai.com/codex) |
167
+ | Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`; latest stable codex-cli 0.138.0, 2026-06) |
163
168
  | Release notes | https://github.com/openai/codex/releases |
164
- | Config paths | `AGENTS.md`, `.agents/rules/*.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/config.toml` |
165
- | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_rules.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
166
- | Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We currently wire a subset: `SessionStart`, `PreToolUse`, `PermissionRequest`, `UserPromptSubmit`, `Stop`. |
169
+ | Config paths | `AGENTS.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml` |
170
+ | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
171
+ | 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/`. |
172
+ | Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire all 10 to shared toolkit hook scripts, mirroring the Claude Code mapping in `app/hooks.json`. |
167
173
  | Tracked handler types | `command` (emitted by default); `prompt` and `agent` available upstream but authored by hand |
168
174
  | Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path) |
169
175
  | Version probe | `codex --version` |
@@ -174,12 +180,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
174
180
  |-------|-------|
175
181
  | ID | `opencode` |
176
182
  | Docs | https://opencode.ai/docs |
177
- | Release notes | https://github.com/sst/opencode/releases |
178
- | Config paths | `opencode.json`, `.opencode/agents/*.md`, `.opencode/commands/*.md`, `.opencode/plugins/*`, `.opencode/skills/*/SKILL.md` (v1.14+), `AGENTS.md`, `.claude/skills/*/SKILL.md` (fallback discovery) |
183
+ | Release notes | https://github.com/sst/opencode/releases (redirects to anomalyco/opencode) |
184
+ | Config paths | `opencode.json`, `.opencode/agents/*.md`, `.opencode/commands/*.md`, `.opencode/plugins/*`, `.opencode/skills/*/SKILL.md` (v1.14+), `AGENTS.md`; skill fallback discovery: `.claude/skills/`, `.agents/skills/`, `~/.config/opencode/skills/`, `~/.claude/skills/`, `~/.agents/skills/` |
179
185
  | 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` |
180
186
  | Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
181
187
  | 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 |
182
188
  | Version probe | `opencode --version` |
189
+ | Watch item | v1.16.0 (2026-06-05) ships an experimental v2 skill registry (flat-file skills, `slash` frontmatter key) — undocumented as of 2026-06-09; re-check next sync before touching `generate_opencode*.py`. |
183
190
 
184
191
  ---
185
192