@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
package/llms-full.txt CHANGED
@@ -4404,9 +4404,9 @@ title: "SOP: Claude Toolkit Maintenance"
4404
4404
  category: procedures
4405
4405
  service: ai-toolkit
4406
4406
  tags: [sop, maintenance, agents, skills, install]
4407
- version: "3.0.1"
4407
+ version: "3.1.0"
4408
4408
  created: "2026-03-23"
4409
- last_updated: "2026-05-25"
4409
+ last_updated: "2026-06-10"
4410
4410
  description: "Standard operating procedures for installing, maintaining, and evolving the ai-toolkit."
4411
4411
  ---
4412
4412
 
@@ -4612,18 +4612,19 @@ Use this when Claude appears to ignore `CLAUDE.md`, `.claude/rules/*.md`, output
4612
4612
  - `https://code.claude.com/docs/en/settings`
4613
4613
  - `https://code.claude.com/docs/en/output-styles`
4614
4614
  - `https://code.claude.com/docs/en/hooks`
4615
- 2. **Verify instruction loading.** Run `/memory` in Claude Code and confirm the expected `CLAUDE.md`, `CLAUDE.local.md`, and `.claude/rules/*.md` files are listed. Remember that Claude Code reads `CLAUDE.md`, not `AGENTS.md`, unless `CLAUDE.md` imports it.
4616
- 3. **Verify the active output style.** Check `.claude/settings.local.json` or `/config`. Output style changes apply after `/clear` or a new session.
4617
- 4. **Inspect installed hooks.** Ensure `~/.claude/settings.json` contains the ai-toolkit `UserPromptSubmit` and `Stop` entries. The governance hook must run with `AI_TOOLKIT_HOOK_QUIET=1 AI_TOOLKIT_HOOK_FORMAT=json` so it injects `additionalContext` without noisy transcript output.
4618
- 5. **Reproduce the hook path directly.**
4615
+ 2. **Isolate with safe mode (v2.1.169+).** Start a session with `claude --safe-mode` (or `CLAUDE_CODE_SAFE_MODE=1`) it disables hooks, skills, agents, and CLAUDE.md. If the problem persists in safe mode, the cause is upstream, not toolkit customization; if it disappears, bisect toolkit components with `ai-toolkit update --only <component>`.
4616
+ 3. **Verify instruction loading.** Run `/memory` in Claude Code and confirm the expected `CLAUDE.md`, `CLAUDE.local.md`, and `.claude/rules/*.md` files are listed. Remember that Claude Code reads `CLAUDE.md`, not `AGENTS.md`, unless `CLAUDE.md` imports it.
4617
+ 4. **Verify the active output style.** Check `.claude/settings.local.json` or `/config`. Output style changes apply after `/clear` or a new session.
4618
+ 5. **Inspect installed hooks.** Ensure `~/.claude/settings.json` contains the ai-toolkit `UserPromptSubmit` and `Stop` entries. The governance hook must run with `AI_TOOLKIT_HOOK_QUIET=1 AI_TOOLKIT_HOOK_FORMAT=json` so it injects `additionalContext` without noisy transcript output.
4619
+ 6. **Reproduce the hook path directly.**
4619
4620
  ```bash
4620
4621
  printf '{"session_id":"debug","prompt":"debug this technical rule issue"}' \
4621
4622
  | AI_TOOLKIT_SEARCH_FIRST=strict AI_TOOLKIT_HOOK_QUIET=1 AI_TOOLKIT_HOOK_FORMAT=json \
4622
4623
  ~/.softspark/ai-toolkit/hooks/user-prompt-submit.sh
4623
4624
  ```
4624
4625
  The output must be valid JSON with `hookSpecificOutput.additionalContext`.
4625
- 6. **Check corrective enforcement.** If the assistant still skips required research, `stop-search-check.sh` should block Stop with the search-first message. If it does not, inspect `~/.softspark/ai-toolkit/state/search-required-*.flag` and the Codex/Claude transcript logs.
4626
- 7. **Repair drift.** Run:
4626
+ 7. **Check corrective enforcement.** If the assistant still skips required research, `stop-search-check.sh` should block Stop with the search-first message. If it does not, inspect `~/.softspark/ai-toolkit/state/search-required-*.flag` and the Codex/Claude transcript logs.
4627
+ 8. **Repair drift.** Run:
4627
4628
  ```bash
4628
4629
  ai-toolkit update --only hooks
4629
4630
  python3 scripts/ecosystem_doctor.py --tool claude-code --format text
@@ -4841,11 +4842,11 @@ What `uninstall` does:
4841
4842
  title: "SOP: Release Preparation"
4842
4843
  category: procedures
4843
4844
  service: ai-toolkit
4844
- tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem]
4845
- version: "1.10.1"
4845
+ tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem, shellcheck]
4846
+ version: "1.11.0"
4846
4847
  created: "2026-04-10"
4847
- last_updated: "2026-04-28"
4848
- 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."
4848
+ last_updated: "2026-06-02"
4849
+ 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)."
4849
4850
  ---
4850
4851
 
4851
4852
  # SOP: Release Preparation
@@ -4890,12 +4891,11 @@ python3 scripts/sync_version.py X.Y.Z # if script exists, else manual
4890
4891
  # 3. Write CHANGELOG.md entry
4891
4892
  # 4. Regenerate artifacts
4892
4893
  python3 scripts/generate_agents_md.py > AGENTS.md
4893
- python3 scripts/generate_codex_rules.py .
4894
4894
  python3 scripts/generate_llms_txt.py > llms.txt
4895
4895
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
4896
4896
 
4897
- # 5. Validate + audit + SARIF + test + ecosystem check
4898
- python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > /tmp/audit.sarif && npm test
4897
+ # 5. Validate + audit + SARIF + shellcheck + test + ecosystem check
4898
+ 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
4899
4899
 
4900
4900
  # 5a. Supply-chain standard (v2.8.0+) — non-negotiable
4901
4901
  grep -q -- '--provenance' .github/workflows/publish.yml || { echo "MISSING --provenance"; exit 1; }
@@ -5092,7 +5092,6 @@ Add entry at the top of `CHANGELOG.md` (after the header, before previous releas
5092
5092
 
5093
5093
  ```bash
5094
5094
  python3 scripts/generate_agents_md.py > AGENTS.md
5095
- python3 scripts/generate_codex_rules.py .
5096
5095
  python3 scripts/generate_llms_txt.py > llms.txt
5097
5096
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
5098
5097
  ```
@@ -5117,6 +5116,12 @@ python3 scripts/audit_skills.py --ci
5117
5116
  python3 scripts/audit_skills.py --sarif > audit.sarif # MANDATORY — GHAS ingest
5118
5117
  python3 scripts/audit_skills.py --permissions # review Bash/Write/Edit footprint
5119
5118
 
5119
+ # ShellCheck on hooks (added in 1.11.0). Mirrors the ci.yml "ShellCheck hooks"
5120
+ # job. NOT run by validate.py, npm test, OR publish.yml — so a hook with a
5121
+ # ShellCheck warning passes every other gate AND still publishes on tag while
5122
+ # turning main CI red. Run it here, before tagging.
5123
+ shellcheck --severity=warning app/hooks/*.sh && echo "OK: shellcheck clean"
5124
+
5120
5125
  # Registry / generator drift (added in 1.10.0). Meta-generators excluded.
5121
5126
  META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
5122
5127
  diff \
@@ -5138,12 +5143,15 @@ echo "ok: $(grep -c '^ok ' /tmp/npm-test.log) | not ok: $(grep -c '^not ok' /tmp
5138
5143
  - `audit_skills.py --ci`: `HIGH: 0 | WARN: 0` (INFO is acceptable)
5139
5144
  - `audit_skills.py --sarif`: valid JSON, non-empty `runs[0].tool.driver.rules`
5140
5145
  - `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
5146
+ - `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.
5141
5147
  - 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.
5142
5148
  - `npm test`: `1..N` with zero `not ok` (read from the cached `/tmp/npm-test.log`, do not rerun)
5143
5149
 
5150
+ > **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.
5151
+
5144
5152
  **One-liner:**
5145
5153
  ```bash
5146
- 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
5154
+ 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
5147
5155
  ```
5148
5156
 
5149
5157
  **If tests fail:** Fix the issue, do NOT skip. Common failures:
@@ -5266,17 +5274,18 @@ git push origin --delete vX.Y.Z
5266
5274
  | 5 | `package-lock.json` | `npm install --package-lock-only` | Matches target |
5267
5275
  | 6 | Count sync | Check `package.json` description, README | `validate.py` passes |
5268
5276
  | 7 | CHANGELOG.md | Add release entry (incl. `Ecosystem` subsection if any B/D/E/F drift) | Entry exists for vX.Y.Z |
5269
- | 8 | Regenerate artifacts | `generate_agents_md.py`, `generate_codex_rules.py`, `generate_llms_txt.py` | No unexpected diff |
5277
+ | 8 | Regenerate artifacts | `generate_agents_md.py`, `generate_llms_txt.py` | No unexpected diff |
5270
5278
  | 9 | Validate | `validate.py --strict` | 0 errors, 0 warnings |
5271
5279
  | 10 | Security audit (CI mode) | `audit_skills.py --ci` | 0 HIGH |
5272
5280
  | 11 | Security audit (SARIF) | `audit_skills.py --sarif` | Valid SARIF 2.1.0 JSON |
5273
5281
  | 12 | Per-skill permissions | `audit_skills.py --permissions` | New broad-access skills justified in CHANGELOG |
5274
- | 13 | Provenance flag check | `grep -- '--provenance' .github/workflows/publish.yml` | Present |
5275
- | 14 | Checksum-pin backfill | `sources.json` entries all have `sha256` | No unpinned URL sources |
5276
- | 15 | Tests | `npm test` | All pass |
5277
- | 16 | Commit | `git commit` | Clean working tree |
5278
- | 17 | Tag | `git tag vX.Y.Z` | Tag exists |
5279
- | 18 | Push | `git push origin main --tags` | CI triggered with `id-token: write` |
5282
+ | 13 | ShellCheck hooks | `shellcheck --severity=warning app/hooks/*.sh` | Exit 0, no output (mirrors ci.yml; publish.yml does NOT run it) |
5283
+ | 14 | Provenance flag check | `grep -- '--provenance' .github/workflows/publish.yml` | Present |
5284
+ | 15 | Checksum-pin backfill | `sources.json` entries all have `sha256` | No unpinned URL sources |
5285
+ | 16 | Tests | `npm test` | All pass |
5286
+ | 17 | Commit | `git commit` | Clean working tree |
5287
+ | 18 | Tag | `git tag vX.Y.Z` | Tag exists |
5288
+ | 19 | Push | `git push origin main --tags` | CI triggered with `id-token: write` |
5280
5289
 
5281
5290
  ---
5282
5291
 
@@ -5320,9 +5329,8 @@ Verifies all critical paths from the user's perspective.
5320
5329
  ```bash
5321
5330
  # Pre-commit (Phase 0)
5322
5331
  python3 scripts/generate_agents_md.py > AGENTS.md # 1. Regenerate AGENTS.md
5323
- python3 scripts/generate_codex_rules.py . # 2. Refresh standard Codex rules
5324
- python3 scripts/generate_llms_txt.py > llms.txt # 3. Regenerate llms.txt
5325
- python3 scripts/validate.py --strict # 4. Validation passed?
5332
+ python3 scripts/generate_llms_txt.py > llms.txt # 2. Regenerate llms.txt
5333
+ python3 scripts/validate.py --strict # 3. Validation passed?
5326
5334
  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)
5327
5335
 
5328
5336
  # Post-install verification (Phases 1-7)
@@ -5352,7 +5360,6 @@ counts but does NOT auto-regenerate — you must do it locally.
5352
5360
  ```bash
5353
5361
  # 1. Regenerate generated artifacts
5354
5362
  python3 scripts/generate_agents_md.py > AGENTS.md
5355
- python3 scripts/generate_codex_rules.py .
5356
5363
  python3 scripts/generate_llms_txt.py > llms.txt
5357
5364
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
5358
5365
 
@@ -5366,7 +5373,7 @@ python3 scripts/audit_skills.py --ci
5366
5373
  npm test
5367
5374
 
5368
5375
  # 5. Stage and commit
5369
- git add AGENTS.md .agents/rules/ai-toolkit-*.md llms.txt llms-full.txt
5376
+ git add AGENTS.md llms.txt llms-full.txt
5370
5377
  git add -p # stage your other changes
5371
5378
  git commit -m "feat: your change description"
5372
5379
  ```
@@ -5377,7 +5384,7 @@ by the developer as part of their PR.
5377
5384
 
5378
5385
  **One-liner (copy-paste):**
5379
5386
  ```bash
5380
- 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
5387
+ 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
5381
5388
  ```
5382
5389
 
5383
5390
  ---
@@ -6130,9 +6137,9 @@ title: "AI Toolkit - Architecture Overview"
6130
6137
  category: reference
6131
6138
  service: ai-toolkit
6132
6139
  tags: [architecture, overview, design, structure]
6133
- version: "1.4.5"
6140
+ version: "1.4.6"
6134
6141
  created: "2026-03-23"
6135
- last_updated: "2026-05-12"
6142
+ last_updated: "2026-06-10"
6136
6143
  description: "Architecture of ai-toolkit: directory layout, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
6137
6144
  ---
6138
6145
 
@@ -6236,7 +6243,7 @@ Machine (global) Project (local)
6236
6243
  - `--editors cursor,aider` — install only selected editors
6237
6244
  - (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
6238
6245
 
6239
- 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`.
6246
+ 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`.
6240
6247
 
6241
6248
  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`).
6242
6249
 
@@ -6260,7 +6267,7 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
6260
6267
  | `cursor-rules` | `./` | Generates `.cursorrules` (legacy) |
6261
6268
  | `cursor-mdc` | `./` | Generates `.cursor/rules/*.mdc` (recommended) |
6262
6269
  | `windsurf-rules` | `./` | Generates `.windsurfrules` (legacy) |
6263
- | `windsurf-dir-rules` | `./` | Generates `.windsurf/rules/*.md` |
6270
+ | `windsurf-dir-rules` | `./` | Generates `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit) |
6264
6271
  | `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
6265
6272
  | `gemini-md` | `./` | Generates `GEMINI.md` |
6266
6273
  | `cline-rules` | `./` | Generates `.clinerules` (legacy) |
@@ -6270,9 +6277,8 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
6270
6277
  | `aider-conf` | `./` | Generates `.aider.conf.yml` |
6271
6278
  | `conventions-md` | `./` | Generates `CONVENTIONS.md` (Aider auto-loaded) |
6272
6279
  | `augment-dir-rules` | `./` | Generates `.augment/rules/ai-toolkit-*.md` |
6273
- | `antigravity-rules` | `./` | Generates `.agent/rules/` + `.agent/workflows/` |
6280
+ | `antigravity-rules` | `./` | Generates `.agents/rules/` + `.agents/workflows/` |
6274
6281
  | `codex-md` | `./` | Generates Codex-facing `AGENTS.md` |
6275
- | `codex-rules` | `./` | Generates `.agents/rules/*.md` |
6276
6282
  | `codex-hooks` | `./` | Generates `.codex/hooks.json` |
6277
6283
  | `agents-md` | toolkit | Regenerates `AGENTS.md` |
6278
6284
  | `llms-txt` | `./` | Generates `llms.txt` |
@@ -6898,8 +6904,7 @@ Usage: ai-toolkit <command> [options]
6898
6904
  |---------|-------------|
6899
6905
  | `generate-all` | Generate all platform configs at once |
6900
6906
  | `agents-md` | Regenerate `AGENTS.md` from agent definitions |
6901
- | `codex-md` | Generate `AGENTS.md` with marker injection for Codex CLI |
6902
- | `codex-rules` | Generate `.agents/rules/*.md` for Codex CLI |
6907
+ | `codex-md` | Generate `AGENTS.md` (coding rules inlined) with marker injection for Codex CLI |
6903
6908
  | `codex-hooks` | Generate `.codex/hooks.json` for Codex CLI |
6904
6909
  | `cursor-rules` | Generate `.cursorrules` (legacy single file) |
6905
6910
  | `cursor-mdc` | Generate `.cursor/rules/*.mdc` (recommended) |
@@ -6915,7 +6920,7 @@ Usage: ai-toolkit <command> [options]
6915
6920
  | `conventions-md` | Generate `CONVENTIONS.md` for Aider |
6916
6921
  | `augment-rules` | Generate `.augment/rules/ai-toolkit.md` (legacy) |
6917
6922
  | `augment-dir-rules` | Generate `.augment/rules/ai-toolkit-*.md` (recommended) |
6918
- | `antigravity-rules` | Generate `.agent/rules/` and `.agent/workflows/` |
6923
+ | `antigravity-rules` | Generate `.agents/rules/` and `.agents/workflows/` |
6919
6924
  | `llms-txt` | Generate `llms.txt` and `llms-full.txt` |
6920
6925
 
6921
6926
  ## Other Commands
@@ -8592,10 +8597,10 @@ with documented, file-based config surfaces:
8592
8597
  - `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md`
8593
8598
  - `gemini`: `~/.gemini/GEMINI.md`
8594
8599
  - `augment`: `~/.augment/rules/ai-toolkit.md`
8595
- - `cline`: `~/.cline/rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
8600
+ - `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
8596
8601
  - `roo`: `~/.roo/rules/ai-toolkit-*.md`
8597
8602
  - `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
8598
- - `codex`: `~/AGENTS.md`, `~/.agents/rules/*`, `~/.agents/skills/*`, `~/.codex/hooks.json`
8603
+ - `codex`: `~/AGENTS.md` (coding rules inlined), `~/.agents/skills/*`, `~/.codex/hooks.json`
8599
8604
  - `opencode`: `~/.config/opencode/*`
8600
8605
 
8601
8606
  Cursor, GitHub Copilot, and Google Antigravity rule installs stay project-local.
@@ -8628,7 +8633,7 @@ These files still stay local to a repository as part of the core install model:
8628
8633
  - `.roomodes`
8629
8634
  - `.aider.conf.yml`
8630
8635
  - `.augment/rules/ai-toolkit-*.md`
8631
- - `.agent/rules/*.md` and `.agent/workflows/*.md` (Google Antigravity)
8636
+ - `.agents/rules/*.md` and `.agents/workflows/*.md` (Google Antigravity; singular `.agent/` still read as fallback)
8632
8637
  - `.git/hooks/pre-commit` (fallback)
8633
8638
  - project-specific documentation or safety overlays
8634
8639
 
@@ -10872,7 +10877,7 @@ opencode also reads `CLAUDE.md` as a fallback, so a user without the native inte
10872
10877
 
10873
10878
  - `AGENTS.md` (shared with Codex CLI via distinct marker sections)
10874
10879
  - `.opencode/agents/ai-toolkit-*.md` (one per ai-toolkit agent, `mode: subagent`)
10875
- - `.opencode/commands/ai-toolkit-*.md` (one per user-invocable skill, required `template: |` frontmatter field)
10880
+ - `.opencode/commands/ai-toolkit-*.md` (one per user-invocable skill; the prompt lives in the markdown body)
10876
10881
  - `.opencode/plugins/ai-toolkit-hooks.js` (JS plugin bridging Bash hooks)
10877
10882
  - `opencode.json` (MCP key merged from `.mcp.json`, user keys preserved)
10878
10883
 
@@ -10920,7 +10925,7 @@ Opencode treats these files as auto-completable with `@` and can delegate to the
10920
10925
 
10921
10926
  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.
10922
10927
 
10923
- Each command file carries opencode's required `template: |` frontmatter field, built from the SKILL.md body.
10928
+ 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.
10924
10929
 
10925
10930
  ## Hook Bridge (JS Plugin)
10926
10931
 
@@ -11765,9 +11770,9 @@ title: "Supported Tools Registry"
11765
11770
  category: reference
11766
11771
  service: ai-toolkit
11767
11772
  tags: [editors, platforms, generators, integration, ecosystem]
11768
- version: "1.3.0"
11773
+ version: "1.5.0"
11769
11774
  created: "2026-04-23"
11770
- last_updated: "2026-05-30"
11775
+ last_updated: "2026-06-09"
11771
11776
  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."
11772
11777
  ---
11773
11778
 
@@ -11788,14 +11793,16 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11788
11793
  | Field | Value |
11789
11794
  |-------|-------|
11790
11795
  | ID | `claude-code` |
11791
- | Docs | https://platform.claude.com/docs/en/claude-code |
11796
+ | Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
11792
11797
  | Release notes | https://github.com/anthropics/claude-code/releases |
11793
- | Config paths | `~/.claude/settings.json`, `.claude/settings.local.json`, `CLAUDE.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
11798
+ | Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.170) |
11799
+ | 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+) |
11794
11800
  | Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
11795
11801
  | 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` |
11796
- | Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool` |
11802
+ | Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool`, `http` (POST event JSON to allowlisted URLs via `allowedHttpHookUrls`) |
11797
11803
  | Other capabilities | slash commands, MCP server/client, sub-agent, output style, `SKILL.md` (≥500 lines warn) |
11798
11804
  | Version probe | `claude --version` |
11805
+ | 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). |
11799
11806
 
11800
11807
  ---
11801
11808
 
@@ -11809,8 +11816,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11809
11816
  | Docs | https://cursor.com/docs |
11810
11817
  | Changelog | https://cursor.com/changelog |
11811
11818
  | Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
11812
- | 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` |
11813
- | Compat read paths | `.agents/skills/`, `~/.agents/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.codex/skills/`, `~/.codex/skills/` |
11819
+ | 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` |
11820
+ | 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) |
11814
11821
  | 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) |
11815
11822
  | Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
11816
11823
 
@@ -11819,14 +11826,15 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11819
11826
  | Field | Value |
11820
11827
  |-------|-------|
11821
11828
  | ID | `windsurf` |
11822
- | Docs | https://docs.windsurf.com |
11823
- | Changelog | https://windsurf.com/changelog |
11824
- | Stable docs mirror | https://docs.windsurf.com/llms.txt + per-page .md twins |
11825
- | 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` |
11829
+ | Docs | https://docs.devin.ai/desktop (Windsurf rebranded to Devin Desktop ~2026-06-02; docs.windsurf.com resolves here) |
11830
+ | Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
11831
+ | 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/`) |
11832
+ | 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`. |
11826
11833
  | Compat read paths | `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/` |
11827
- | 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) |
11834
+ | 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) |
11828
11835
  | Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
11829
11836
  | Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
11837
+ | 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. |
11830
11838
 
11831
11839
  ### GitHub Copilot
11832
11840
 
@@ -11847,11 +11855,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11847
11855
  | ID | `gemini-cli` |
11848
11856
  | Docs | https://github.com/google-gemini/gemini-cli/tree/main/docs |
11849
11857
  | Release notes | https://github.com/google-gemini/gemini-cli/releases |
11850
- | 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` |
11858
+ | 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` |
11851
11859
  | 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) |
11852
- | 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` |
11860
+ | 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) |
11853
11861
  | Version probe | `gemini --version` |
11854
- | Latest upstream | v0.39.0 (2026-04-23) |
11862
+ | 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. |
11855
11863
 
11856
11864
  ### Cline
11857
11865
 
@@ -11860,19 +11868,20 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11860
11868
  | ID | `cline` |
11861
11869
  | Docs | https://docs.cline.bot |
11862
11870
  | Release notes | https://github.com/cline/cline/releases |
11863
- | 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` |
11871
+ | 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). |
11864
11872
  | Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.py`, `scripts/generate_cline_skills.py` |
11865
- | Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules |
11866
- | 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. |
11867
- | 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`. |
11873
+ | Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules, `AGENTS.md`, plugins |
11874
+ | 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. |
11875
+ | 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. |
11876
+ | 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`. |
11868
11877
 
11869
11878
  ### Roo Code
11870
11879
 
11871
11880
  | Field | Value |
11872
11881
  |-------|-------|
11873
11882
  | ID | `roo-code` |
11874
- | Docs | https://docs.roocode.com |
11875
- | Release notes | https://github.com/RooCodeInc/Roo-Code/releases |
11883
+ | Docs | https://roocodeinc.github.io/Roo-Code (docs.roocode.com 301-redirects here) |
11884
+ | 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) |
11876
11885
  | 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) |
11877
11886
  | Our generators | `scripts/generate_roo_modes.py`, `scripts/generate_roo_rules.py` |
11878
11887
  | Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups` |
@@ -11899,9 +11908,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11899
11908
  | ID | `augment` |
11900
11909
  | Docs | https://docs.augmentcode.com |
11901
11910
  | Changelog | https://www.augmentcode.com/changelog |
11902
- | 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` |
11911
+ | 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). |
11903
11912
  | 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) |
11904
- | 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 |
11913
+ | 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 |
11905
11914
  | SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
11906
11915
 
11907
11916
  ### Google Antigravity
@@ -11911,21 +11920,23 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11911
11920
  | ID | `google-antigravity` |
11912
11921
  | Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
11913
11922
  | Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
11914
- | Config paths | `.agent/rules/*.md`, `.agent/workflows/*.md`, `.agent/skills/*/SKILL.md`, `AGENTS.md`, `GEMINI.md` |
11915
- | Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer) |
11916
- | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, `AGENTS.md`, `GEMINI.md`, agent permissions |
11917
- | Doc access note | Docs are JS-SPA verify via `main-*.js` bundle strings or community skill repos. `WebFetch` returns an empty shell. |
11923
+ | 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` |
11924
+ | Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`) |
11925
+ | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions |
11926
+ | 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`. |
11927
+ | 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. |
11918
11928
 
11919
11929
  ### Codex CLI
11920
11930
 
11921
11931
  | Field | Value |
11922
11932
  |-------|-------|
11923
11933
  | ID | `codex-cli` |
11924
- | Docs | https://github.com/openai/codex (redirects from developers.openai.com/codex) |
11934
+ | 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) |
11925
11935
  | Release notes | https://github.com/openai/codex/releases |
11926
- | Config paths | `AGENTS.md`, `.agents/rules/*.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/config.toml` |
11927
- | 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`) |
11928
- | 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`. |
11936
+ | 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` |
11937
+ | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
11938
+ | 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/`. |
11939
+ | 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`. |
11929
11940
  | Tracked handler types | `command` (emitted by default); `prompt` and `agent` available upstream but authored by hand |
11930
11941
  | Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path) |
11931
11942
  | Version probe | `codex --version` |
@@ -11936,12 +11947,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11936
11947
  |-------|-------|
11937
11948
  | ID | `opencode` |
11938
11949
  | Docs | https://opencode.ai/docs |
11939
- | Release notes | https://github.com/sst/opencode/releases |
11940
- | 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) |
11950
+ | Release notes | https://github.com/sst/opencode/releases (redirects to anomalyco/opencode) |
11951
+ | 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/` |
11941
11952
  | 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` |
11942
11953
  | Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
11943
11954
  | 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 |
11944
11955
  | Version probe | `opencode --version` |
11956
+ | 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`. |
11945
11957
 
11946
11958
  ---
11947
11959
 
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.5.1",
2
+ "version": "4.7.0",
3
3
  "components": {
4
4
  "agents": {
5
5
  "description": "44 specialized agents (orchestrator, backend, frontend, security, devops, etc.)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softspark/ai-toolkit",
3
- "version": "4.5.1",
3
+ "version": "4.7.0",
4
4
  "description": "AI coding toolkit: 107 skills, 44 agents, 12-editor write-through (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo, Aider, Augment, Antigravity, Codex, opencode), machine-enforced safety constitution, SARIF audit, signed npm provenance.",
5
5
  "keywords": [
6
6
  "claude",
@@ -59,7 +59,6 @@
59
59
  "generate:cline": "python3 scripts/generate_cline_rules.py .",
60
60
  "generate:roo": "python3 scripts/generate_roo_modes.py > .roomodes",
61
61
  "generate:aider": "python3 scripts/generate_aider_conf.py > .aider.conf.yml",
62
- "generate:codex-rules": "python3 scripts/generate_codex_rules.py .",
63
62
  "generate:language-rules": "python3 scripts/generate_language_rules_skills.py",
64
63
  "generate:opencode-agents": "python3 scripts/generate_opencode_agents.py .",
65
64
  "generate:opencode-commands": "python3 scripts/generate_opencode_commands.py .",
@@ -67,7 +66,7 @@
67
66
  "generate:windsurf-rules": "python3 scripts/generate_windsurf_rules.py .",
68
67
  "generate:roo-rules": "python3 scripts/generate_roo_rules.py .",
69
68
  "generate:augment-rules": "python3 scripts/generate_augment_rules.py .",
70
- "generate:all": "npm run generate:language-rules && npm run generate:agents && npm run generate:codex-rules && npm run generate:opencode-agents && npm run generate:opencode-commands && npm run generate:cursor && npm run generate:cursor-mdc && npm run generate:windsurf && npm run generate:windsurf-rules && npm run generate:copilot && npm run generate:gemini && npm run generate:cline && npm run generate:roo && npm run generate:roo-rules && npm run generate:aider && npm run generate:augment-rules && npm run generate:llms"
69
+ "generate:all": "npm run generate:language-rules && npm run generate:agents && npm run generate:opencode-agents && npm run generate:opencode-commands && npm run generate:cursor && npm run generate:cursor-mdc && npm run generate:windsurf && npm run generate:windsurf-rules && npm run generate:copilot && npm run generate:gemini && npm run generate:cline && npm run generate:roo && npm run generate:roo-rules && npm run generate:aider && npm run generate:augment-rules && npm run generate:llms"
71
70
  },
72
71
  "files": [
73
72
  "bin/",