@softspark/ai-toolkit 4.11.0 → 4.13.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 (46) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +33 -15
  3. package/app/.claude-plugin/plugin.json +11 -19
  4. package/app/ARCHITECTURE.md +6 -6
  5. package/app/claude-app/global-instructions.md +10 -0
  6. package/app/claude-app/hooks/hooks.json +284 -0
  7. package/app/claude-app/skills/ai-toolkit-rules/SKILL.md +359 -0
  8. package/app/hooks/config-desync-guard.sh +63 -23
  9. package/app/plugins/README.md +4 -1
  10. package/benchmarks/ecosystem-doctor-snapshot.json +91 -25
  11. package/bin/ai-toolkit.js +21 -3
  12. package/kb/planning/drop-cascade-hooks-after-sunset.md +13 -8
  13. package/kb/procedures/ecosystem-sync-sop.md +5 -5
  14. package/kb/procedures/maintenance-sop.md +42 -4
  15. package/kb/procedures/release-preparation-sop.md +5 -1
  16. package/kb/procedures/release-verification-sop.md +25 -9
  17. package/kb/reference/architecture-overview.md +7 -2
  18. package/kb/reference/claude-ecosystem-expansion-foundations.md +12 -3
  19. package/kb/reference/cli-reference.md +4 -2
  20. package/kb/reference/codex-cli-compatibility.md +15 -10
  21. package/kb/reference/global-install-model.md +37 -11
  22. package/kb/reference/hooks-catalog.md +2 -3
  23. package/kb/reference/plugin-pack-conventions.md +5 -5
  24. package/kb/reference/skills-catalog.md +2 -0
  25. package/kb/reference/supported-tools-registry.md +59 -33
  26. package/kb/reference/unique-features.md +3 -2
  27. package/llms-full.txt +236 -98
  28. package/manifest.json +8 -8
  29. package/package.json +4 -3
  30. package/scripts/claude_app.py +347 -0
  31. package/scripts/doctor.py +85 -4
  32. package/scripts/ecosystem_tools.json +45 -9
  33. package/scripts/generate_antigravity.py +15 -0
  34. package/scripts/generate_codex_hooks.py +8 -5
  35. package/scripts/generate_copilot.py +10 -3
  36. package/scripts/generate_devin_hooks.py +3 -4
  37. package/scripts/generate_windsurf_skills.py +5 -6
  38. package/scripts/inject_hook_cli.py +16 -2
  39. package/scripts/install.py +25 -23
  40. package/scripts/install_steps/ai_tools.py +234 -14
  41. package/scripts/install_steps/install_state.py +11 -2
  42. package/scripts/plugin.py +31 -8
  43. package/scripts/update_projects.py +12 -1
  44. package/scripts/validate.py +34 -2
  45. package/AGENTS.md +0 -790
  46. package/scripts/generate_windsurf_hooks.py +0 -152
package/llms-full.txt CHANGED
@@ -3990,16 +3990,18 @@ tags:
3990
3990
  - deprecation
3991
3991
  - cleanup
3992
3992
  doc_type: plan
3993
- status: scheduled
3993
+ status: completed
3994
3994
  created: "2026-06-10"
3995
- last_updated: "2026-06-10"
3996
- completion: "0%"
3995
+ last_updated: "2026-07-10"
3996
+ completion: "100%"
3997
3997
  trigger_date: "2026-07-01"
3998
- description: "Scheduled cleanup: remove the deprecated Windsurf Cascade hooks generator (.windsurf/hooks.json) in the first ai-toolkit release after the 2026-07-01 Cascade sunset. The Devin CLI replacement (.devin/hooks.v1.json) shipped in v4.8.0; this plan removes the dead Cascade half once it can no longer run."
3998
+ description: "Completed cleanup of the deprecated Windsurf Cascade hooks generator after the 2026-07-01 sunset; Devin CLI .devin/hooks.v1.json is now the sole live hook surface."
3999
3999
  ---
4000
4000
 
4001
4001
  # Plan: Drop Cascade hooks after 2026-07-01 sunset
4002
4002
 
4003
+ **Completed in v4.13.0 (2026-07-10).** The deprecated generator and install/test wiring were removed; the Devin hook generator remains.
4004
+
4003
4005
  ## Why this exists
4004
4006
 
4005
4007
  Windsurf rebranded to Devin Desktop on 2026-06-02. The Cascade agent — and its
@@ -4052,10 +4054,13 @@ removing it before the sunset breaks Cascade users who are still on the old agen
4052
4054
  - `python3 scripts/validate.py --strict` — 0/0 (editor-hooks-honesty must still
4053
4055
  report windsurf as hook-enabled via the `devin` generator alias).
4054
4056
  - `python3 scripts/ecosystem_doctor.py --offline --check` — exit 0.
4055
- - `npm test` — 0 `not ok`; confirm no test still references
4056
- `generate_windsurf_hooks.py` or `.windsurf/hooks.json`.
4057
- - `grep -rn "generate_windsurf_hooks\|windsurf/hooks.json" scripts/ tests/ kb/ README.md`
4058
- returns nothing (Art. VI.1 orphan check).
4057
+ - `npm test` — 0 `not ok`; no test recreates the deleted
4058
+ `generate_windsurf_hooks.py` generator.
4059
+ - `grep -rn "generate_windsurf_hooks" scripts/ tests/` returns nothing
4060
+ (Art. VI.1 orphan check — the deleted generator is fully unwired).
4061
+ `.windsurf/hooks.json` intentionally remains referenced by the one-time
4062
+ migration/strip cleanup (`scripts/install_steps/ai_tools.py`) and its test,
4063
+ and in narrative docs (CHANGELOG, README, `kb/`, docstrings).
4059
4064
 
4060
4065
  ## Do NOT touch
4061
4066
 
@@ -4242,10 +4247,10 @@ title: "SOP: Ecosystem Sync"
4242
4247
  category: procedures
4243
4248
  service: ai-toolkit
4244
4249
  tags: [sop, ecosystem, editors, generators, drift-detection, sync]
4245
- version: "1.0.0"
4250
+ version: "1.1.0"
4246
4251
  created: "2026-04-23"
4247
- last_updated: "2026-04-23"
4248
- description: "Quarterly (or event-triggered) sync procedure that detects documentation and capability drift in supported tools (Claude Code + 11 editors), analyses our generators and skills for missing features, and walks through the migration + generator-update workflow."
4252
+ last_updated: "2026-07-10"
4253
+ description: "Quarterly (or event-triggered) sync procedure that detects documentation and capability drift in supported tools (Claude Code, Claude app, and 11 editors), analyses our generators and skills for missing features, and walks through the migration + generator-update workflow."
4249
4254
  ---
4250
4255
 
4251
4256
  # SOP: Ecosystem Sync
@@ -4265,7 +4270,7 @@ Keeps ai-toolkit aligned with the tools it integrates with. When an editor adds
4265
4270
  ## Quick Reference
4266
4271
 
4267
4272
  ```bash
4268
- # Full check (all 12 tools, online)
4273
+ # Full check (all 13 tools, online)
4269
4274
  python3 scripts/ecosystem_doctor.py --format text
4270
4275
 
4271
4276
  # Single tool
@@ -4287,7 +4292,7 @@ python3 scripts/ecosystem_doctor.py --offline --format text
4287
4292
 
4288
4293
  | File | Purpose |
4289
4294
  |------|---------|
4290
- | `scripts/ecosystem_tools.json` | Authoritative registry: 12 tools with doc URLs, config paths, our generators, capability markers |
4295
+ | `scripts/ecosystem_tools.json` | Authoritative registry: 13 tools with doc URLs, config paths, our generators, capability markers |
4291
4296
  | `benchmarks/ecosystem-doctor-snapshot.json` | Last-seen state (headings, content hash, markers, version) — updated via `--update` |
4292
4297
  | `scripts/ecosystem_doctor.py` | Drift detector |
4293
4298
  | `kb/reference/supported-tools-registry.md` | Human-readable view of the registry |
@@ -4502,9 +4507,9 @@ title: "SOP: Claude Toolkit Maintenance"
4502
4507
  category: procedures
4503
4508
  service: ai-toolkit
4504
4509
  tags: [sop, maintenance, agents, skills, install]
4505
- version: "3.1.0"
4510
+ version: "3.2.0"
4506
4511
  created: "2026-03-23"
4507
- last_updated: "2026-06-10"
4512
+ last_updated: "2026-07-10"
4508
4513
  description: "Standard operating procedures for installing, maintaining, and evolving the ai-toolkit."
4509
4514
  ---
4510
4515
 
@@ -4591,6 +4596,24 @@ What `install` and `update` do (merge-friendly — user content never overwritte
4591
4596
 
4592
4597
  Re-running updates only toolkit content. Old whole-directory symlinks are auto-upgraded to per-file on next run.
4593
4598
 
4599
+ ### Install in Claude Chat / Desktop / Cowork
4600
+
4601
+ The Claude app does not read Claude Code's `~/.claude/rules/`, `CLAUDE.md`,
4602
+ agents, skills, or settings. Build the separate app-native plugin:
4603
+
4604
+ ```bash
4605
+ ai-toolkit claude-app export --verify
4606
+ ```
4607
+
4608
+ 1. Open Claude and choose `Customize > Plugins > + > Upload plugin`.
4609
+ 2. Select `ai-toolkit-claude-app.zip`.
4610
+ 3. Paste `ai-toolkit-claude-app-global-instructions.md` into
4611
+ `Settings > Cowork > Global instructions`.
4612
+
4613
+ The export includes registered rules by default; use `--no-custom-rules` for a
4614
+ shareable clean bundle. Re-export and re-upload after toolkit or registered-rule
4615
+ updates. Skills work in Chat and Cowork. Hooks and sub-agents run only in Cowork.
4616
+
4594
4617
  ### Install Profiles (v3.0.0)
4595
4618
 
4596
4619
  | Profile | Claude Code core | Editor rules | Gemini hooks | Copilot dir layout | Per-editor hooks / sub-agents / commands | Git hooks |
@@ -4649,6 +4672,9 @@ ai-toolkit remove-rule my-project-rules
4649
4672
 
4650
4673
  Rule names derive from the filename (`my-project-rules.md` → marker `TOOLKIT:my-project-rules`).
4651
4674
 
4675
+ After adding or removing a registered rule, re-export the Claude app plugin if
4676
+ that runtime should receive the change.
4677
+
4652
4678
  ---
4653
4679
 
4654
4680
  ## Adding a New Agent
@@ -4730,6 +4756,21 @@ Use this when Claude appears to ignore `CLAUDE.md`, `.claude/rules/*.md`, output
4730
4756
  scripts/validate.py
4731
4757
  ```
4732
4758
 
4759
+ ## Troubleshooting Rule Enforcement in Claude Chat / Cowork
4760
+
4761
+ Do not use `/memory` or inspect `~/.claude/rules/` for the app runtime; those
4762
+ checks apply only to Claude Code.
4763
+
4764
+ 1. Run `ai-toolkit claude-app verify` and fix any manifest/component error.
4765
+ 2. Re-export the ZIP and upload it from `Customize > Plugins`.
4766
+ 3. Confirm `ai-toolkit-rules` appears in the `/` or `+` skill picker.
4767
+ 4. Confirm the generated standing instructions are saved under
4768
+ `Settings > Cowork > Global instructions`.
4769
+ 5. In regular Chat, expect skills only. Hooks and sub-agents are intentionally
4770
+ unavailable there; test those in Cowork.
4771
+ 6. Start a new chat/task after updating the plugin so the new component catalog
4772
+ is loaded.
4773
+
4733
4774
  ## Verification
4734
4775
 
4735
4776
  After changing rule-enforcement behavior, run at minimum:
@@ -4737,6 +4778,8 @@ After changing rule-enforcement behavior, run at minimum:
4737
4778
  ```bash
4738
4779
  bats tests/test_hooks.bats tests/test_search_first_flow.bats
4739
4780
  bats tests/test_install.bats tests/test_codex.bats
4781
+ bats tests/test_claude_app.bats tests/test_hooks_per_editor.bats
4782
+ python3 scripts/claude_app.py verify
4740
4783
  python3 scripts/validate.py --strict
4741
4784
  ```
4742
4785
 
@@ -4744,7 +4787,7 @@ python3 scripts/validate.py --strict
4744
4787
 
4745
4788
  ```bash
4746
4789
  ai-toolkit plugin list # show available packs
4747
- ai-toolkit plugin install --editor claude <name> # install for Claude global target
4790
+ ai-toolkit plugin install --editor claude <name> # install for Claude Code global target
4748
4791
  ai-toolkit plugin install --editor codex <name> # install for Codex global target
4749
4792
  ai-toolkit plugin install --editor all --all # install all 11 packs for both runtimes
4750
4793
  ai-toolkit plugin update --editor all --all # re-apply all installed packs after toolkit updates
@@ -4782,7 +4825,7 @@ Follow the `documentation-standards` knowledge skill (`app/skills/documentation-
4782
4825
 
4783
4826
  **Every addition — skill, hook, MCP template, agent, rule — MUST be verified against all supported editors before merge.**
4784
4827
 
4785
- This toolkit targets 10 platforms. Each has its own config format, file path conventions, and runtime capabilities. A feature that works in Claude Code may silently break in Cursor, Codex, or Copilot if the editor's official spec diverges.
4828
+ The ecosystem registry tracks 13 targets: Claude Code, the Claude Chat/Cowork app, and 11 editor integrations. Each has its own config format, file path conventions, and runtime capabilities. A feature that works in Claude Code may silently break in Cursor, Codex, or Copilot if the editor's official spec diverges.
4786
4829
 
4787
4830
  ### Verification checklist
4788
4831
 
@@ -5311,7 +5354,11 @@ Stage all release files:
5311
5354
  git add package.json manifest.json app/.claude-plugin/plugin.json
5312
5355
  git add package-lock.json
5313
5356
  git add CHANGELOG.md
5314
- git add AGENTS.md llms.txt llms-full.txt
5357
+ git add llms.txt llms-full.txt
5358
+ # NOTE: AGENTS.md, GEMINI.md, and .github/copilot-instructions.md are generated
5359
+ # editor configs and are gitignored — do NOT commit them. `prepublishOnly` runs
5360
+ # `npm run generate:all`, so the shipped package (which lists AGENTS.md in
5361
+ # package.json `files`) gets a fresh copy at publish time.
5315
5362
  git add -p # review and stage any other changes
5316
5363
  ```
5317
5364
 
@@ -5396,10 +5443,10 @@ title: "SOP: Release Verification"
5396
5443
  category: procedures
5397
5444
  service: ai-toolkit
5398
5445
  tags: [sop, verification, release, smoke-test, install, update, qa, provenance, sarif]
5399
- version: "1.4.3"
5446
+ version: "1.6.0"
5400
5447
  created: "2026-04-08"
5401
- last_updated: "2026-05-19"
5402
- description: "End-to-end smoke test after installing or updating @softspark/ai-toolkit — verifies CLI, install, doctor, validation, tests, eject, npm provenance attestation, SARIF audit, and per-skill permissions. Reflects the v2.8.0 supply-chain standard. v1.3.0 added the single-run npm test discipline; v1.4.0 adds v3.0.0 deep-coverage checks (--profile full, --codex-skills, breaking-change surfaces, idempotence, registry drift, live-JSON parse) and refreshes stale thresholds. v1.4.2 makes the Phase 9.4 idempotence check deterministic by sorting file paths before hashing. v1.4.3 tightens the Phase 8.4 URL pin check so the success-message count includes only entries with a `url:` field, not local `path:` entries, and documents the `sources.json` envelope shape."
5448
+ last_updated: "2026-07-02"
5449
+ description: "End-to-end smoke test after installing or updating @softspark/ai-toolkit — verifies CLI, installs, Claude app plugin export, doctor, validation, tests, eject, npm provenance attestation, SARIF audit, and per-skill permissions. v1.6.0 adds the Claude Chat/Cowork plugin validation and replaces the retired Cascade hook surface with Devin hooks."
5403
5450
  ---
5404
5451
 
5405
5452
  # SOP: Release Verification
@@ -5444,10 +5491,11 @@ python3 scripts/audit_skills.py --ci # 10. Security audit
5444
5491
  python3 scripts/audit_skills.py --sarif | python3 -c "import json,sys; assert json.load(sys.stdin)['version']=='2.1.0'; print('SARIF OK')" # 11. SARIF 2.1.0 well-formed?
5445
5492
  python3 scripts/audit_skills.py --permissions | head -30 # 12. Broad-access skills reviewed?
5446
5493
  npm view @softspark/ai-toolkit@X.Y.Z --json | python3 -c "import json,sys; d=json.load(sys.stdin); assert d['dist']['attestations']['provenance']['predicateType']=='https://slsa.dev/provenance/v1'; print('PROVENANCE OK')" # 13. Provenance attested on npm?
5494
+ python3 scripts/claude_app.py verify # 14. Claude Chat/Cowork plugin contract valid?
5447
5495
 
5448
5496
  # Deep-coverage verification (Phase 9, v3.0.0+)
5449
5497
  META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
5450
- diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE "$META" | sort -u) && echo "OK: registry matches" # 14. Registry <-> generators drift?
5498
+ diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE "$META" | sort -u) && echo "OK: registry matches" # 15. Registry <-> generators drift?
5451
5499
  ```
5452
5500
 
5453
5501
  ---
@@ -5473,7 +5521,10 @@ python3 scripts/audit_skills.py --ci
5473
5521
  npm test
5474
5522
 
5475
5523
  # 5. Stage and commit
5476
- git add AGENTS.md llms.txt llms-full.txt
5524
+ # AGENTS.md, GEMINI.md, and .github/copilot-instructions.md are generated and
5525
+ # gitignored — do NOT commit them (regenerated at prepublishOnly). Only the
5526
+ # doc artifacts llms.txt / llms-full.txt are committed.
5527
+ git add llms.txt llms-full.txt
5477
5528
  git add -p # stage your other changes
5478
5529
  git commit -m "feat: your change description"
5479
5530
  ```
@@ -5515,7 +5566,7 @@ ai-toolkit status
5515
5566
  - [ ] Agents >= 44
5516
5567
  - [ ] Skills >= 99
5517
5568
  - [ ] Hooks merged into settings.json
5518
- - [ ] "Other AI Tools" section lists documented global targets only: aider, augment, cline, codex, gemini, opencode, roo, windsurf (Cursor, Copilot, Antigravity via --local for rules)
5569
+ - [ ] "Other AI Tools" section lists documented global targets (with `--editors`): aider, antigravity, augment, cline, codex, copilot, cursor, gemini, opencode, roo, windsurf. Scope varies (v4.12.0+): cursor = `~/.cursor/hooks.json` only, copilot = `~/.copilot/` instructions, antigravity = `~/.gemini/*/skills` pointer; Cursor and Antigravity RULES still install only via `--local` (no mergeable global rules file)
5519
5570
 
5520
5571
  **Verify `status`:**
5521
5572
  - [ ] Version matches expected
@@ -5731,12 +5782,12 @@ These verify the native-surface generators shipped in v3.0.0 actually emit the r
5731
5782
  D=/tmp/aitk-profile-full-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
5732
5783
  ai-toolkit install --local --editors cursor,windsurf,gemini,augment,codex \
5733
5784
  --profile full --codex-skills --dry-run 2>&1 \
5734
- | grep -E "\\.cursor/(hooks\\.json|agents)|\\.windsurf/hooks\\.json|\\.gemini/(settings\\.json|commands)|\\.augment/(agents|commands)|\\.agents/skills"
5785
+ | grep -E "\\.cursor/(hooks\\.json|agents)|\\.devin/hooks\\.v1\\.json|\\.gemini/(settings\\.json|commands)|\\.augment/(agents|commands)|\\.agents/skills"
5735
5786
  ```
5736
5787
 
5737
5788
  **Verify** — at least the following lines appear:
5738
5789
  - [ ] `.cursor/hooks.json` and `.cursor/agents/`
5739
- - [ ] `.windsurf/hooks.json`
5790
+ - [ ] `.devin/hooks.v1.json`
5740
5791
  - [ ] `.gemini/settings.json` hooks AND `.gemini/commands/`
5741
5792
  - [ ] `.augment/agents/` + `.augment/commands/` + `$HOME/.augment/settings.json`
5742
5793
  - [ ] `.agents/skills/` (Codex native discovery path; refreshed by `--codex-skills`)
@@ -5794,7 +5845,7 @@ The bats suite validates JSON shape at generation time. This re-checks that what
5794
5845
  ```bash
5795
5846
  D=/tmp/aitk-json-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
5796
5847
  ai-toolkit install --local --editors cursor,windsurf,gemini,augment --profile full >/dev/null 2>&1
5797
- for f in .cursor/hooks.json .windsurf/hooks.json .gemini/settings.json $HOME/.augment/settings.json; do
5848
+ for f in .cursor/hooks.json .devin/hooks.v1.json .gemini/settings.json $HOME/.augment/settings.json; do
5798
5849
  [ -f "$f" ] && python3 -c "import json; json.load(open('$f'))" && echo "OK: $f"
5799
5850
  done
5800
5851
  ```
@@ -5814,6 +5865,18 @@ diff <(echo "$REG") <(echo "$FS") && echo "OK: registry matches filesystem" || e
5814
5865
 
5815
5866
  **Verify:** prints `OK: registry matches filesystem`. If not, add the missing rows to the registry before tagging the next release.
5816
5867
 
5868
+ ### 9.7 Claude Chat / Cowork plugin validates and exports
5869
+
5870
+ ```bash
5871
+ python3 scripts/claude_app.py verify
5872
+ D=/tmp/aitk-claude-app-${RANDOM}
5873
+ python3 scripts/claude_app.py export --output "$D.zip" --no-custom-rules
5874
+ python3 -c "import zipfile; z=zipfile.ZipFile('$D.zip'); assert '.claude-plugin/plugin.json' in z.namelist(); assert 'claude-app/skills/ai-toolkit-rules/SKILL.md' in z.namelist(); print('OK: Claude app archive')"
5875
+ ```
5876
+
5877
+ **Verify:** the official validator exits 0; the archive contains the manifest,
5878
+ app-native rules skill, bundled agents/skills, and plugin-relative Cowork hooks.
5879
+
5817
5880
  ---
5818
5881
 
5819
5882
  ## Troubleshooting
@@ -6240,14 +6303,14 @@ tags: [architecture, overview, design, structure]
6240
6303
  version: "1.4.6"
6241
6304
  created: "2026-03-23"
6242
6305
  last_updated: "2026-06-10"
6243
- description: "Architecture of ai-toolkit: directory layout, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
6306
+ description: "Architecture of ai-toolkit: directory layout, Claude app export, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
6244
6307
  ---
6245
6308
 
6246
6309
  # AI Toolkit Architecture
6247
6310
 
6248
6311
  ## Purpose
6249
6312
 
6250
- Shared, project-agnostic AI development toolkit for Claude Code (and compatible assistants like Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, and Google Antigravity). Provides specialized agents, skills (slash commands + knowledge), expanded lifecycle hooks, persona presets, and experimental opt-in plugin packs that teams can adopt separately from the default global install.
6313
+ Shared, project-agnostic AI development toolkit for Claude Code, Claude Chat/Cowork, and compatible assistants such as Cursor, Devin, Copilot, Gemini, Cline, Roo/Zoo Code, Aider, Augment, and Google Antigravity. Provides agents, skills, lifecycle hooks, persona presets, and runtime-specific plugin packaging.
6251
6314
 
6252
6315
  ## Design Principles
6253
6316
 
@@ -6267,6 +6330,7 @@ ai-toolkit/
6267
6330
  agents/ # Agent definitions (.md + YAML frontmatter)
6268
6331
  skills/ # skills: task, hybrid, knowledge
6269
6332
  rules/ # Source rules synced into Claude/editor rule files
6333
+ claude-app/ # Generated app-only rules skill, hooks, instructions
6270
6334
  hooks/ # Hook scripts (copied to ~/.softspark/ai-toolkit/hooks/)
6271
6335
  hooks.json # Hook definitions (merged into ~/.claude/settings.json)
6272
6336
  constitution.md # Immutable safety rules, 7 articles (marker-injected)
@@ -6296,6 +6360,7 @@ ai-toolkit/
6296
6360
  generate_llms_txt.py # Generates llms.txt
6297
6361
  install_git_hooks.py # Installs fallback pre-commit hook
6298
6362
  plugin.py # Plugin pack management (install, remove, list, status)
6363
+ claude_app.py # Claude Chat/Desktop/Cowork plugin export + validation
6299
6364
  benchmark_ecosystem.py # Generates ecosystem benchmark snapshot
6300
6365
  harvest_ecosystem.py # Writes machine-readable ecosystem harvest JSON
6301
6366
  compile_slm.py # Compiles toolkit into minimal SLM system prompt (2K-16K tokens)
@@ -6346,6 +6411,8 @@ Machine (global) Project (local)
6346
6411
 
6347
6412
  Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit since the Devin Desktop rebrand), `.github/instructions/*.instructions.md` + `.github/prompts/*.prompt.md` + root `AGENTS.md` for Copilot agent instructions, `.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`.
6348
6413
 
6414
+ Claude Chat/Desktop/Cowork is deliberately outside `--editors`: the app does not scan filesystem configuration under `~/.claude`. `ai-toolkit claude-app export` creates a self-contained plugin ZIP with skills, agents, Cowork hooks, app-native rules, and bundled hook dependencies. It also emits the compact text that users paste into Cowork global instructions. Updating requires re-export and re-upload because the app owns its plugin store.
6415
+
6349
6416
  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`).
6350
6417
 
6351
6418
  ## CLI Commands
@@ -6354,6 +6421,7 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
6354
6421
  |---------|--------|-------------|
6355
6422
  | `install` | `~/.claude/` | First-time: per-file symlinks + JSON merge + marker injection + rules |
6356
6423
  | `install --local` | `./` | Claude Code configs + editors via `--editors` (auto-detect or explicit) |
6424
+ | `claude-app export` | output ZIP + Markdown | Uploadable Claude Chat/Cowork plugin and global instructions |
6357
6425
  | `update` | `~/.claude/` | Re-apply after npm update or after add-rule/remove-rule |
6358
6426
  | `update --local` | `./` | Re-apply + refresh project-local configs |
6359
6427
  | `uninstall` | `~/.claude/` | Strips toolkit components (preserves user content) |
@@ -6814,9 +6882,9 @@ title: "Claude Ecosystem Expansion Foundations"
6814
6882
  category: reference
6815
6883
  service: ai-toolkit
6816
6884
  tags: [benchmark, claude-code, ecosystem, hooks, plugins, architecture]
6817
- version: "1.0.0"
6885
+ version: "1.1.0"
6818
6886
  created: "2026-03-27"
6819
- last_updated: "2026-04-13"
6887
+ last_updated: "2026-07-10"
6820
6888
  description: "Reference summary of the ecosystem signals and implementation foundations adopted in ai-toolkit, including runtime-aware plugin packaging."
6821
6889
  ---
6822
6890
 
@@ -6836,14 +6904,22 @@ The outcome is a toolkit that is now positioned as a more modular, Claude-first,
6836
6904
 
6837
6905
  ### 1. Plugin-oriented structure
6838
6906
 
6839
- `ai-toolkit` now treats plugin packaging as a first-class capability, with runtime-aware install surfaces for Claude and optional global Codex layering.
6907
+ `ai-toolkit` now treats plugin packaging as a first-class capability, with separate runtime-aware surfaces for Claude Code, the Claude Chat/Desktop/Cowork app, and optional global Codex layering.
6840
6908
 
6841
6909
  Implemented artifacts:
6842
6910
  - `app/.claude-plugin/plugin.json`
6911
+ - `app/claude-app/`
6843
6912
  - `app/plugins/`
6844
6913
  - `app/skills/plugin-creator/SKILL.md`
6914
+ - `scripts/claude_app.py`
6845
6915
  - `kb/reference/plugin-pack-conventions.md`
6846
6916
 
6917
+ Claude Code reads filesystem configuration such as `~/.claude/rules` and
6918
+ `CLAUDE.md`. The Claude app does not scan those locations. For the app,
6919
+ `ai-toolkit claude-app export --verify` creates an uploadable plugin ZIP and a
6920
+ separate Cowork global-instructions file. Plugin skills work in Chat and Cowork;
6921
+ hooks and sub-agents are Cowork-only.
6922
+
6847
6923
  ### 2. Broader lifecycle coverage
6848
6924
 
6849
6925
  The toolkit now covers prompt, edit, subagent, compaction, and session-end phases.
@@ -6896,6 +6972,7 @@ The reference benchmark set is intentionally curated:
6896
6972
  | Area | Adopted in ai-toolkit |
6897
6973
  |------|------------------------|
6898
6974
  | Plugin manifests | Yes |
6975
+ | Claude Chat/Cowork uploadable plugin export | Yes |
6899
6976
  | Domain plugin packs | Yes (experimental) |
6900
6977
  | Hook creator workflow | Yes |
6901
6978
  | Command creator workflow | Yes |
@@ -6922,7 +6999,7 @@ category: reference
6922
6999
  service: ai-toolkit
6923
7000
  tags: [cli, commands, reference, install, update, plugin, mcp, telemetry]
6924
7001
  created: "2026-04-13"
6925
- last_updated: "2026-04-24"
7002
+ last_updated: "2026-07-10"
6926
7003
  description: "Complete CLI reference for all ai-toolkit commands, options, and flags."
6927
7004
  ---
6928
7005
 
@@ -6947,6 +7024,8 @@ Usage: ai-toolkit <command> [options]
6947
7024
  | `doctor` | Diagnose install health, hooks, quick-win assets, and artifact drift |
6948
7025
  | `doctor --fix` | Auto-repair broken symlinks, missing hooks, stale artifacts |
6949
7026
  | `eject [dir]` | Export standalone config (no symlinks, no toolkit dependency) |
7027
+ | `claude-app export [--output FILE] [--no-custom-rules] [--verify]` | Build an uploadable Claude Chat/Desktop/Cowork plugin ZIP and global-instructions file |
7028
+ | `claude-app verify` | Validate a clean staged plugin with structural checks and the official Claude plugin validator |
6950
7029
 
6951
7030
  ## Rule & Hook Injection
6952
7031
 
@@ -6973,7 +7052,7 @@ Usage: ai-toolkit <command> [options]
6973
7052
  | Command | Description |
6974
7053
  |---------|-------------|
6975
7054
  | `plugin list` | Show available plugin packs with install status |
6976
- | `plugin install <name> [--editor claude\|codex\|all]` | Install a plugin pack for selected runtime(s) |
7055
+ | `plugin install <name> [--editor claude\|codex\|all]` | Install a plugin pack for Claude Code and/or Codex (`claude` means Claude Code, not the Claude app) |
6977
7056
  | `plugin install --all [--editor claude\|codex\|all]` | Install all 11 plugin packs |
6978
7057
  | `plugin update <name> [--editor claude\|codex\|all]` | Update a plugin pack (remove + reinstall, preserves data) |
6979
7058
  | `plugin update --all [--editor claude\|codex\|all]` | Update all installed plugin packs |
@@ -7097,8 +7176,7 @@ model.
7097
7176
 
7098
7177
  `ai-toolkit install --local --editors codex` generates:
7099
7178
 
7100
- - `AGENTS.md`
7101
- - `.agents/rules/*.md`
7179
+ - `AGENTS.md` (project root; universal coding rules inlined — Codex reads instructions only from AGENTS.md, not `.agents/rules/`)
7102
7180
  - `.agents/skills/*`
7103
7181
  - `.codex/hooks.json`
7104
7182
 
@@ -7106,8 +7184,7 @@ model.
7106
7184
 
7107
7185
  `ai-toolkit plugin install --editor codex <pack>` bootstraps or reuses:
7108
7186
 
7109
- - `~/AGENTS.md`
7110
- - `~/.agents/rules/*.md`
7187
+ - `~/.codex/AGENTS.md` (the documented global instruction file; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
7111
7188
  - `~/.agents/skills/*`
7112
7189
  - `~/.codex/hooks.json`
7113
7190
 
@@ -7161,20 +7238,27 @@ The adapter also covers skills that previously depended only on Claude's
7161
7238
 
7162
7239
  ## Hook Compatibility
7163
7240
 
7164
- Codex does not expose the full Claude hook event surface. The Codex hook
7165
- generator emits only the events supported by Codex runtime integration:
7241
+ Codex does not expose the full Claude hook event surface. Codex's
7242
+ `HookEventName` enum defines 10 events; the Codex hook generator wires 9 of
7243
+ them:
7166
7244
 
7167
7245
  - `SessionStart`
7168
7246
  - `PreToolUse`
7169
7247
  - `PostToolUse`
7248
+ - `PermissionRequest`
7170
7249
  - `UserPromptSubmit`
7250
+ - `SubagentStart`
7251
+ - `SubagentStop`
7252
+ - `PreCompact`
7171
7253
  - `Stop`
7172
7254
 
7173
- This means Claude-only events such as `TaskCompleted`, `TeammateIdle`,
7174
- `SubagentStart`, `SubagentStop`, `PreCompact`, `SessionEnd`, and
7175
- `Notification` are not available in `.codex/hooks.json`.
7255
+ `PostCompact` is the one enum event left unwired (its only hook was the removed
7256
+ environment-snapshot probe). Claude-only events such as `TaskCompleted`,
7257
+ `TeammateIdle`, `SessionEnd`, and `Notification` have no Codex equivalent and
7258
+ are not available in `.codex/hooks.json`. Handler types: only `command` runs;
7259
+ `prompt` and `agent` are parsed by Codex but not yet executed.
7176
7260
 
7177
- `inject-hook` automatically propagates Codex-compatible events to
7261
+ `inject-hook` automatically propagates these 9 Codex-compatible events to
7178
7262
  `~/.codex/hooks.json` (global layer). Non-Codex events are silently skipped.
7179
7263
  `remove-hook` cleans both Claude and Codex targets.
7180
7264
 
@@ -8644,10 +8728,10 @@ title: "Global Install Model"
8644
8728
  category: reference
8645
8729
  service: ai-toolkit
8646
8730
  tags: [install, global, claude, codex, plugins, local-setup]
8647
- version: "3.1.0"
8731
+ version: "3.2.0"
8648
8732
  created: "2026-03-26"
8649
- last_updated: "2026-06-30"
8650
- description: "Reference description of the global install target, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
8733
+ last_updated: "2026-07-10"
8734
+ description: "Reference description of Claude Code global install, Claude app plugin export, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
8651
8735
  ---
8652
8736
 
8653
8737
  # Global Install Model
@@ -8665,6 +8749,10 @@ the core toolkit install, but experimental plugin packs can layer a global
8665
8749
  Codex target in `HOME` when explicitly installed with
8666
8750
  `ai-toolkit plugin install --editor codex`.
8667
8751
 
8752
+ Claude Chat/Desktop/Cowork is a separate runtime. It does not read the
8753
+ filesystem surfaces under `~/.claude`; it receives ai-toolkit through an
8754
+ uploaded plugin plus app-managed global/folder instructions.
8755
+
8668
8756
  ## Command Responsibilities
8669
8757
 
8670
8758
  | Command | Target | Purpose |
@@ -8675,6 +8763,7 @@ Codex target in `HOME` when explicitly installed with
8675
8763
  | `ai-toolkit install --local --lang <lang>` | current project | explicit language selection for rules (e.g. `--lang typescript`, `--lang go,python`); auto-detected when omitted |
8676
8764
  | `ai-toolkit install --modules <list>` | `~/.claude/` | selective module install (e.g. `--modules core,agents,rules-typescript`) |
8677
8765
  | `ai-toolkit update --local` | current project | refresh project configs; auto-detects editors from existing files |
8766
+ | `ai-toolkit claude-app export` | ZIP + Markdown output | build the uploadable Claude Chat/Cowork plugin and Cowork global instructions; registered rules are included unless `--no-custom-rules` is set |
8678
8767
  | `ai-toolkit add-rule` | `~/.softspark/ai-toolkit/rules/` | register a global rule |
8679
8768
  | `ai-toolkit remove-rule` | `~/.softspark/ai-toolkit/rules/` | unregister a global rule |
8680
8769
  | `ai-toolkit mcp add <name...>` | current project | merge MCP templates into `.mcp.json` |
@@ -8711,19 +8800,41 @@ Claude Code's default global install writes these managed surfaces:
8711
8800
 
8712
8801
  The `ai-toolkit-*` prefix in `~/.claude/rules/` is reserved for installer-managed files. User-authored Claude rules should use another filename prefix, or be registered through `ai-toolkit add-rule` so they are emitted as `ai-toolkit-registered-*.md`.
8713
8802
 
8803
+ ## Claude App Target
8804
+
8805
+ `~/.claude/` is a Claude Code surface, not a Claude Chat/Cowork surface. Run:
8806
+
8807
+ ```bash
8808
+ ai-toolkit claude-app export --verify
8809
+ ```
8810
+
8811
+ Upload the ZIP from `Customize > Plugins`, then paste the sibling
8812
+ `*-global-instructions.md` file into `Settings > Cowork > Global instructions`.
8813
+ The plugin contains the normal skills and agents, app-relative Cowork hooks,
8814
+ and an `ai-toolkit-rules` skill generated from common/standalone rules.
8815
+ Registered rules are embedded in a separate skill by default. Skills work in
8816
+ Chat and Cowork; hooks and sub-agents are Cowork-only. The app owns its plugin
8817
+ store, so toolkit updates require re-export and re-upload.
8818
+
8714
8819
  `ai-toolkit install --editors <name>` can write global files only for editors
8715
8820
  with documented, file-based config surfaces:
8716
8821
 
8717
- - `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md`
8718
- - `gemini`: `~/.gemini/GEMINI.md`
8719
- - `augment`: `~/.augment/rules/ai-toolkit.md`
8822
+ - `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md` plus `~/.config/devin/AGENTS.md` (Devin CLI global rules — the Desktop `global_rules.md` path is not imported by `read_config_from.windsurf`)
8823
+ - `gemini`: `~/.gemini/GEMINI.md`; hooks at `~/.gemini/settings.json` (profile ≥ standard); `~/.gemini/commands/` and `~/.gemini/skills/` pointer (profile full)
8824
+ - `augment`: `~/.augment/rules/ai-toolkit.md`; `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` (profile full)
8720
8825
  - `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
8721
- - `roo`: `~/.roo/rules/ai-toolkit-*.md`
8826
+ - `roo`: `~/.roo/rules/ai-toolkit-*.md` plus `~/.agents/skills/*` (Roo/Zoo native skill discovery; skipped when `codex` is also selected, which fills the same dir)
8722
8827
  - `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
8723
- - `codex`: `~/AGENTS.md` (coding rules inlined), `~/.agents/skills/*`, `~/.codex/hooks.json`
8828
+ - `codex`: `~/.codex/AGENTS.md` (coding rules inlined; the documented global instruction file — NOT `~/AGENTS.md`, which Codex never loads as global instructions), `~/.agents/skills/*`, `~/.codex/hooks.json`
8724
8829
  - `opencode`: `~/.config/opencode/*`
8725
8830
 
8726
- Cursor, GitHub Copilot, and Google Antigravity rule installs stay project-local.
8831
+ Cursor, GitHub Copilot, and Google Antigravity now have partial global support,
8832
+ scoped to whatever documented HOME file surface each exposes:
8833
+
8834
+ - `cursor`: `~/.cursor/hooks.json` (safety/quality hooks; profile ≥ standard). Cursor RULES stay project-local — their only global surface is the Settings UI.
8835
+ - `copilot`: `~/.copilot/copilot-instructions.md` plus `~/.copilot/instructions/ai-toolkit-*.instructions.md` (read by Copilot CLI; VS Code and GitHub.com still use repo `.github/` files, which the local install emits).
8836
+ - `antigravity`: skill pointer at `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Antigravity RULES stay project-local.
8837
+
8727
8838
  Their global MCP support, where available, is handled by `ai-toolkit mcp
8728
8839
  install`, not by the rule installer.
8729
8840
 
@@ -8782,8 +8893,7 @@ Codex wrappers so the project still receives the full skill catalog.
8782
8893
 
8783
8894
  `ai-toolkit plugin install --editor codex <pack>` additionally targets:
8784
8895
 
8785
- - `~/AGENTS.md`
8786
- - `~/.agents/rules/*.md`
8896
+ - `~/.codex/AGENTS.md` (base instructions; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
8787
8897
  - `~/.agents/skills/*`
8788
8898
  - `~/.codex/hooks.json`
8789
8899
 
@@ -9032,7 +9142,7 @@ description: "Complete reference of all ai-toolkit hooks: events, scripts, insta
9032
9142
 
9033
9143
  ## Overview
9034
9144
 
9035
- ai-toolkit provides 29 global hook entries across 14 lifecycle events that enforce quality, safety, and workflow rules across all Claude Code sessions. Hooks are merged into `~/.claude/settings.json` on install, with logic in standalone scripts at `~/.softspark/ai-toolkit/hooks/`.
9145
+ ai-toolkit provides 28 global hook entries across 14 lifecycle events that enforce quality, safety, and workflow rules across all Claude Code sessions, plus a separate `statusLine` command. Hooks are merged into `~/.claude/settings.json` on install, with logic in standalone scripts at `~/.softspark/ai-toolkit/hooks/`.
9036
9146
 
9037
9147
  ## Supported Surface
9038
9148
 
@@ -9594,14 +9704,13 @@ Beyond the global Claude Code hooks above, full-profile project installs emit na
9594
9704
  | Editor | File | Generator | Format |
9595
9705
  |--------|------|-----------|--------|
9596
9706
  | Cursor | `.cursor/hooks.json` | `generate_cursor_hooks.py` | Cursor hooks schema |
9597
- | Windsurf (Cascade) | `.windsurf/hooks.json` | `generate_windsurf_hooks.py` | Cascade `agent_action_name`/`tool_info` — **deprecated, dies 2026-07-01** |
9598
9707
  | Devin CLI | `.devin/hooks.v1.json` | `generate_devin_hooks.py` | Claude-compatible (the replacement for Cascade) |
9599
9708
  | Gemini CLI | `.gemini/settings.json` (hooks block) | `generate_gemini_hooks.py` | Gemini `BeforeTool`/`AfterTool` events |
9600
9709
  | Augment | `.augment/settings.json` (hooks block) | `generate_augment_hooks.py` | Claude-style events |
9601
9710
 
9602
9711
  ### Devin CLI hooks (`.devin/hooks.v1.json`)
9603
9712
 
9604
- Windsurf rebranded to Devin Desktop (2026-06-02); the Cascade agent — and its `.windsurf/hooks.json` surface is available only through **2026-07-01**. Devin Local / Devin CLI do **not** read `.windsurf/hooks.json` as a fallback, so hooks must be regenerated onto the Devin CLI format.
9713
+ Windsurf rebranded to Devin Desktop (2026-06-02). The Cascade hook surface ended on 2026-07-01; ai-toolkit now emits only the live Devin CLI format.
9605
9714
 
9606
9715
  Devin CLI uses a **Claude-compatible** hook format (docs.devin.ai/cli/extensibility/hooks). Key facts driving the generator:
9607
9716
 
@@ -11190,14 +11299,14 @@ tags: [plugins, plugin-packs, conventions, manifests, hooks, policy-packs]
11190
11299
  version: "1.0.0"
11191
11300
  created: "2026-03-28"
11192
11301
  last_updated: "2026-04-13"
11193
- description: "Conventions for experimental ai-toolkit plugin packs, policy packs, hook packs, and plugin-creator scaffolding across Claude and Codex runtimes."
11302
+ description: "Conventions for experimental ai-toolkit plugin packs, policy packs, hook packs, and plugin-creator scaffolding across Claude Code and Codex runtimes."
11194
11303
  ---
11195
11304
 
11196
11305
  # Plugin Pack Conventions
11197
11306
 
11198
11307
  ## Purpose
11199
11308
 
11200
- `ai-toolkit` now includes experimental plugin packs under `app/plugins/` to formalize a runtime-aware plugin direction for Claude and optional global Codex layering without changing the default core install surface.
11309
+ `ai-toolkit` includes experimental plugin packs under `app/plugins/` for Claude Code and optional global Codex layering. These internal pack manifests are distinct from the official uploadable Claude app plugin built by `ai-toolkit claude-app export`.
11201
11310
 
11202
11311
  ## Pack Types
11203
11312
 
@@ -11257,7 +11366,7 @@ Required keys:
11257
11366
 
11258
11367
  ```bash
11259
11368
  ai-toolkit plugin list # show all 11 packs with install status
11260
- ai-toolkit plugin install --editor claude <name> # Claude global target
11369
+ ai-toolkit plugin install --editor claude <name> # Claude Code global target
11261
11370
  ai-toolkit plugin install --editor codex <name> # Codex global target
11262
11371
  ai-toolkit plugin install --editor all --all # install all 11 packs for both runtimes
11263
11372
  ai-toolkit plugin update --editor all --all # update all installed packs
@@ -11274,7 +11383,7 @@ ai-toolkit plugin status --editor all # show installed packs with r
11274
11383
  2. **Copies** plugin-specific hooks to `~/.softspark/ai-toolkit/hooks/plugin-<pack>-<hook>.sh`
11275
11384
  3. **Copies** plugin-specific scripts to `~/.softspark/ai-toolkit/plugin-scripts/<pack>/`
11276
11385
  4. **Runs** init scripts if present (e.g. `init_db.py` for memory-pack — safe to re-run, preserves data)
11277
- 5. **Claude target**: links missing agents/skills into `~/.claude/`, injects plugin-local rules into `~/.claude/CLAUDE.md`, and merges plugin hook entries into `~/.claude/settings.json`
11386
+ 5. **Claude Code target**: links missing agents/skills into `~/.claude/`, injects plugin-local rules into `~/.claude/CLAUDE.md`, and merges plugin hook entries into `~/.claude/settings.json`
11278
11387
  6. **Codex target**: bootstraps global Codex assets in `HOME` (`~/AGENTS.md`, `~/.agents/skills`, `~/.agents/rules`, `~/.codex/hooks.json`) and then layers plugin-specific rules/hooks on top
11279
11388
  7. **Records** installed state per runtime in `~/.softspark/ai-toolkit/plugins.json`
11280
11389
 
@@ -11294,7 +11403,7 @@ ai-toolkit plugin status --editor all # show installed packs with r
11294
11403
 
11295
11404
  ### What `plugin remove` Does
11296
11405
 
11297
- 1. **Claude target**: strips plugin hook entries from `~/.claude/settings.json` and removes plugin-local rule sections from `~/.claude/CLAUDE.md`
11406
+ 1. **Claude Code target**: strips plugin hook entries from `~/.claude/settings.json` and removes plugin-local rule sections from `~/.claude/CLAUDE.md`
11298
11407
  2. **Codex target**: strips plugin hook entries from `~/.codex/hooks.json` and removes `~/.agents/rules/plugin-<pack>-*.md`
11299
11408
  3. **Shared assets** (`~/.softspark/ai-toolkit/hooks/plugin-*`, `plugin-scripts/<pack>/`) are removed only when no remaining runtime still uses that pack
11300
11409
  4. **Updates** `plugins.json` state per runtime
@@ -11725,6 +11834,8 @@ Step 0 interview before setup — 5 targeted questions to capture undocumented p
11725
11834
 
11726
11835
  Codex CLI receives the full skill catalog during `ai-toolkit install --local --editors codex`.
11727
11836
 
11837
+ Claude Chat/Desktop/Cowork receives this same catalog through `ai-toolkit claude-app export`. The export also adds an app-only `ai-toolkit-rules` skill because the Claude app does not read Claude Code's `CLAUDE.md` or `.claude/rules/` surfaces.
11838
+
11728
11839
  - Native Codex-compatible skills are symlinked directly into `.agents/skills/`
11729
11840
  - Claude-oriented orchestration skills are generated as Codex wrappers
11730
11841
  - Adapted wrappers translate `Agent`, `Team*`, and `Task*` guidance to `spawn_agent`, `send_input`, `wait_agent`, `close_agent`, and `update_plan`
@@ -11935,19 +12046,19 @@ title: "Supported Tools Registry"
11935
12046
  category: reference
11936
12047
  service: ai-toolkit
11937
12048
  tags: [editors, platforms, generators, integration, ecosystem]
11938
- version: "1.7.1"
12049
+ version: "1.8.0"
11939
12050
  created: "2026-04-23"
11940
- last_updated: "2026-06-30"
11941
- 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."
12051
+ last_updated: "2026-07-10"
12052
+ description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code, Claude Chat/Cowork, and 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
11942
12053
  ---
11943
12054
 
11944
12055
  # Supported Tools Registry
11945
12056
 
11946
12057
  The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed by `scripts/ecosystem_doctor.py`. This document is a derived view — when the JSON changes, update this table too.
11947
12058
 
11948
- ## Tool Count: 12
12059
+ ## Tool Count: 13
11949
12060
 
11950
- 1 primary runtime (Claude Code) + 11 editor integrations.
12061
+ 1 primary runtime (Claude Code) + 1 Claude app target + 11 editor integrations.
11951
12062
 
11952
12063
  ---
11953
12064
 
@@ -11960,7 +12071,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11960
12071
  | ID | `claude-code` |
11961
12072
  | Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
11962
12073
  | Release notes | https://github.com/anthropics/claude-code/releases |
11963
- | Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.186) |
12074
+ | Changelog | https://code.claude.com/docs/en/changelog; GitHub release feed is authoritative when the generated page lags (current local/release: 2.1.206, 2026-07-10) |
11964
12075
  | 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+) |
11965
12076
  | Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
11966
12077
  | 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` |
@@ -11971,6 +12082,23 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11971
12082
 
11972
12083
  ---
11973
12084
 
12085
+ ## Claude App Target
12086
+
12087
+ ### Claude Chat / Cowork
12088
+
12089
+ | Field | Value |
12090
+ |-------|-------|
12091
+ | ID | `claude-app` |
12092
+ | Docs | https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork |
12093
+ | Plugin docs | https://support.claude.com/en/articles/13837440-use-plugins-in-claude |
12094
+ | Config surfaces | `Settings > Cowork > Global instructions`, Cowork folder instructions, `Customize > Skills`, and `Customize > Plugins` |
12095
+ | Plugin layout | `.claude-plugin/plugin.json`, `skills/*/SKILL.md`, `agents/*.md`, `hooks/hooks.json`; ai-toolkit uses manifest paths under `claude-app/` for its generated app-only rules and hooks |
12096
+ | Our generator | `scripts/claude_app.py` (`ai-toolkit claude-app export`) |
12097
+ | Runtime split | Skills work in Chat (web/Desktop) and Cowork. Hooks and sub-agents run only in Cowork. Claude app does **not** scan Claude Code's `~/.claude/rules/`, `CLAUDE.md`, or `~/.claude/settings.json`. |
12098
+ | Install/update | Export the ZIP, upload it from `Customize > Plugins`, then paste the generated global-instructions file into `Settings > Cowork > Global instructions`. Re-export/re-upload after toolkit updates. |
12099
+
12100
+ ---
12101
+
11974
12102
  ## Editor Integrations
11975
12103
 
11976
12104
  ### Cursor
@@ -11981,9 +12109,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11981
12109
  | Docs | https://cursor.com/docs |
11982
12110
  | Changelog | https://cursor.com/changelog |
11983
12111
  | Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
11984
- | 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` |
12112
+ | Config paths | `.cursorrules` (**legacy** — no longer in cursor.com/docs/rules; deprecated ~0.43–0.45 in favor of `.cursor/rules/*.mdc`, still read, no removal deadline; we keep emitting for back-compat), `.cursor/rules/*.mdc` (plain `.md` files in `.cursor/rules/` are **ignored** by the rules system), `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/hooks.json`, `~/.cursor/hooks.json` (user-level hooks scope; enterprise system paths + dashboard team hooks not adopted, class C), `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `~/.cursor/agents/*.md` |
11985
12113
  | 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) |
11986
- | 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) |
12114
+ | Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full local **and** global `~/.cursor/hooks.json`), `scripts/generate_cursor_agents.py` (profile=full), `scripts/generate_cursor_skills.py` (profile=full pointer) |
12115
+ | Global install | Cursor is in `GLOBAL_CAPABLE_EDITORS` for **hooks only**: `ai-toolkit install --editors cursor` writes `~/.cursor/hooks.json` (profile ≥ standard). RULES stay project-local (Cursor's only global rules surface is the Settings UI). |
11987
12116
  | Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
11988
12117
 
11989
12118
  ### Windsurf
@@ -11993,14 +12122,15 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11993
12122
  | ID | `windsurf` |
11994
12123
  | Docs | https://docs.devin.ai/desktop (Windsurf rebranded to Devin Desktop ~2026-06-02; docs.windsurf.com resolves here) |
11995
12124
  | Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
11996
- | 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/`) |
11997
- | Config paths | **Primary (Devin Desktop):** `.devin/rules/*.md`, `.devin/workflows/*.md`, `.devin/skills/*/SKILL.md`, `.devin/hooks.v1.json` (Devin CLI hooks, Claude format), `.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`. |
11998
- | Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/`. **Hooks: Devin CLI reads `.claude/settings.json` + `~/.claude/settings.json` hooks directly (`read_config_from.claude` default on), so globally-installed toolkit hooks work under Devin with no project-local file.** |
11999
- | 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, drop after 2026-07-01**), `scripts/generate_devin_hooks.py` (profile=full; `.devin/hooks.v1.json`, Claude-format Devin CLI hooks), `scripts/generate_windsurf_skills.py` (global + profile=full pointer, dual-emits) |
12125
+ | Stable docs mirror | https://docs.devin.ai/desktop/... per-page .md twins; legacy `.windsurf/`, `.windsurfrules`, `~/.codeium/windsurf/` rule paths still read as fallback (new canonical rules/hooks tree: `.devin/`) |
12126
+ | Config paths | **Primary (Devin Desktop):** `.devin/rules/*.md`, `.devin/workflows/*.md`, `.devin/hooks.v1.json` (Devin CLI hooks, Claude format), `.devin/config.json`, `.devin/config.local.json`, `~/.config/devin/config.json` (Devin Local MCP/permissions). **Skills:** eight documented paths, all scanned in every repo — `.agents/skills/*/SKILL.md` (recommended), `.devin/skills`, `.github/skills`, `.claude/skills`, `.cursor/skills`, `.codex/skills`, `.cognition/skills`, and `.windsurf/skills`. ai-toolkit emits a single canonical pointer under `.windsurf/skills` to avoid duplicate registration. **Legacy fallback:** `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/mcp_config.json`. Plus `AGENTS.md`. |
12127
+ | Compat read paths | Current skill docs explicitly scan all eight paths — `.agents/skills/`, `.devin/skills/`, `.github/skills/`, `.claude/skills/`, `.cursor/skills/`, `.codex/skills/`, `.cognition/skills/`, and `.windsurf/skills/`. **Hooks:** Devin CLI reads `.claude/settings.json` + `~/.claude/settings.json` hooks when `read_config_from.claude` is enabled, so globally-installed toolkit hooks also work under Devin. |
12128
+ | Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/` rules/workflows), `scripts/generate_devin_hooks.py` (profile=full; `.devin/hooks.v1.json`), `scripts/generate_windsurf_skills.py` (`.windsurf/skills` pointer) |
12129
+ | Global install | `ai-toolkit install --editors windsurf` writes `~/.codeium/windsurf/memories/global_rules.md` + skills pointer **and** `~/.config/devin/AGENTS.md` (Devin CLI global rules — the Desktop `global_rules.md` path is absent from `read_config_from.windsurf`, so editor-only Devin CLI installs need this). |
12000
12130
  | Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
12001
12131
  | Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
12002
- | Hooks migration | **Done.** Cascade `.windsurf/hooks.json` (`agent_action_name`/`tool_info` format) dies 2026-07-01 with no Devin fallback. `generate_devin_hooks.py` emits `.devin/hooks.v1.json` in the Claude-compatible format Devin CLI uses: Claude-style events (PreToolUse/PostToolUse/UserPromptSubmit/Stop/SessionStart), matchers on Devin tool names (`read`/`edit`/`exec`/`mcp__*`), blocking via flat `{"decision":"block","reason":...}` + exit 2 (no `AI_TOOLKIT_HOOK_FORMAT=json` — Devin does not use Claude's `hookSpecificOutput` envelope). `post_setup_worktree`→`SessionStart`; `post_cascade_response`→`Stop` (no response text on stdin). Both hook generators run at profile=full during the transition; drop `generate_windsurf_hooks.py` in the first release after 2026-07-01. |
12003
- | Sunset notes | Cascade agent is available only through **2026-07-01**; Devin Local is the default agent since 2026-06-02. Devin CLI ("Devin for Terminal") shares the Devin Local harness, reads `AGENTS.md`, the standard `SKILL.md` format, and Claude-format hooks; not yet a separate registry entry. |
12132
+ | Hooks migration | **Complete.** Cascade and `.windsurf/hooks.json` ended on 2026-07-01. `generate_devin_hooks.py` is now the only Windsurf-family hook generator and emits `.devin/hooks.v1.json` with Claude-style events, Devin tool-name matchers, and the flat Devin block contract. |
12133
+ | Latest upstream | Devin Desktop v3.4.27 (2026-07-07). v3.4.22 made skill `permissions:` frontmatter affect auto-approvals; ai-toolkit does not emit permissions because its pointer skill executes no privileged workflow. |
12004
12134
 
12005
12135
  ### GitHub Copilot
12006
12136
 
@@ -12009,9 +12139,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
12009
12139
  | ID | `github-copilot` |
12010
12140
  | Docs | https://docs.github.com/en/copilot |
12011
12141
  | Release notes | https://github.blog/changelog/label/copilot/ |
12012
- | Config paths | `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md` |
12013
- | Our generators | `scripts/generate_copilot.py` |
12014
- | Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP |
12142
+ | Config paths | **Repo (`.github/`):** `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md`, `.github/hooks/*.json`. **Copilot CLI user-level (`~/.copilot/`, `COPILOT_HOME` override):** `~/.copilot/copilot-instructions.md`, `~/.copilot/instructions/*.instructions.md`, `~/.copilot/agents/*.agent.md`, `~/.copilot/skills/<name>/SKILL.md`, `~/.copilot/hooks/`, `~/.copilot/settings.json`, `~/.copilot/mcp-config.json` |
12143
+ | Compat read paths | skills: Copilot CLI reads personal `~/.copilot/skills` and `~/.agents/skills` (the latter populated by our codex/roo global installs) and project `.github/skills`, `.claude/skills`, `.agents/skills` — so toolkit skills are already Copilot-visible. (Note: since CLI 1.0.61 a session using `COPILOT_HOME`/`--config-dir` stops reading `~/.agents/skills`.) |
12144
+ | Our generators | `scripts/generate_copilot.py` (repo `.github/` and, with `config_root=~/.copilot`, global CLI instructions) |
12145
+ | Global install | Copilot is in `GLOBAL_CAPABLE_EDITORS`: `ai-toolkit install --editors copilot` writes `~/.copilot/copilot-instructions.md` + `~/.copilot/instructions/ai-toolkit-*.instructions.md` (read by Copilot CLI). VS Code Copilot uses profile-level locations and GitHub.com uses repo files, so the project `.github/` emission stays. |
12146
+ | Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP, skills, CLI hooks, `~/.copilot/` |
12015
12147
  | Tier notes | Custom agents (`.github/agents/*.agent.md`) and repo-level MCP config are Pro/Pro+/Business/Enterprise only and intentionally not integrated (class C per ecosystem-sync SOP). Copilot code review reads the nearest `AGENTS.md` automatically since the 2026-06-18 GA (all tiers); `ai-toolkit install --local --editors copilot` injects a `TOOLKIT:copilot-agents` section generated from `generate_agents_md.py` without clobbering Codex/opencode sections in the same file. The 4000-char cap on `copilot-instructions.md` / `*.instructions.md` was also removed (2026-06-12). |
12016
12148
 
12017
12149
  ### Gemini CLI
@@ -12023,9 +12155,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
12023
12155
  | Release notes | https://github.com/google-gemini/gemini-cli/releases |
12024
12156
  | 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` |
12025
12157
  | 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) |
12026
- | 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) |
12158
+ | Global install | `ai-toolkit install --editors gemini` writes `~/.gemini/GEMINI.md` **plus** hooks at `~/.gemini/settings.json` (profile standard) and `~/.gemini/commands/` + `~/.gemini/skills/` pointer (profile=full) all documented user-tier surfaces. A global-only Gemini user previously got zero hooks. |
12159
+ | Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeToolSelection`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `AfterModel`, `Notification`, `PreCompress`, `SessionStart`, `SessionEnd`, `SKILL.md`, `activate_skill`, custom commands, `.gemini/agents/*.md` subagents, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
12027
12160
  | Version probe | `gemini --version` |
12028
- | Latest upstream | v0.47.0 (2026-06-18). NOTE: Gemini CLI dropped free/paid individual tiers on 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist and paid API keys keep Gemini CLI, so the integration stays. The 11 hook events are unchanged. v0.48 preview migrates the `coreTools` setting to `tools.core` (a tool-allowlist key we do not emit, so no generator change). |
12161
+ | Latest upstream | v0.49.0 (2026-06-25; the stable line skipped v0.48.0 — its preview content was promoted into v0.49.0). NOTE: Gemini CLI dropped free/paid individual tiers on 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist and paid API keys keep Gemini CLI, so the integration stays. The 11 hook events are unchanged. v0.49.0 completed the `coreTools` `tools.core` migration (auto-migrated; `tools.exclude` deprecated) — both are tool-allowlist keys we do not emit, so no generator change. Watch item: `.gemini/agents/*.md` / `~/.gemini/agents/*.md` native subagents are documented but we do not yet emit them (candidate `generate_gemini_agents.py`). |
12029
12162
 
12030
12163
  ### Cline
12031
12164
 
@@ -12046,12 +12179,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
12046
12179
  | Field | Value |
12047
12180
  |-------|-------|
12048
12181
  | ID | `roo-code` |
12049
- | Docs | https://roocodeinc.github.io/Roo-Code (docs.roocode.com 301-redirects here) |
12050
- | 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) |
12051
- | 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) |
12182
+ | Docs | https://roocodeinc.github.io/Roo-Code (frozen; docs.roocode.com 301-redirects here). Successor docs: https://docs.zoocode.dev |
12183
+ | Release notes | https://github.com/Zoo-Code-Org/Zoo-Code/releases (authoritative). **Original RooCodeInc/Roo-Code repo ARCHIVED/read-only since 2026-05-15, frozen at v3.54.0 its feed is dead.** Successor project by former Roo contributors: **Zoo-Code-Org/Zoo-Code** (marketplace `ZooCodeOrganization.zoo-code`), active through v3.64.0 (2026-06-26). |
12184
+ | Config paths | `.roomodes` (JSON still fully supported), `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/skills/*/SKILL.md`, `~/.roo/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `~/.agents/skills/*`, `.roo/commands/*.md`, `~/.roo/commands/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `mcp_settings.json` + global custom modes live in VS Code globalStorage (`<globalStorage>/rooveterinaryinc.roo-cline/settings/custom_modes.yaml`), NOT `~/.roo/custom_modes.yaml` |
12052
12185
  | Our generators | `scripts/generate_roo_modes.py`, `scripts/generate_roo_rules.py` |
12053
- | Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups` |
12054
- | Notes | `.roomodes` now includes `description` and `whenToUse` for every mode (since 2026-04). YAML `.roomodes` is upstream-preferred but not yet emitted JSON is still accepted by Roo. Global install writes only `~/.roo/rules/` because the exact global MCP settings path is UI-managed. |
12186
+ | Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups`, skills, slash commands |
12187
+ | Notes | Config compat with the Zoo fork is total, so both generators stay valid unchanged. `.roomodes` includes `description`/`whenToUse` for every mode (since 2026-04); JSON is still accepted (YAML is upstream-preferred but not emitted). Global install writes `~/.roo/rules/` plus `~/.agents/skills/*` (Roo/Zoo native skill discovery, shipped v3.46.0/v3.47.2; skipped when `codex` is also selected). `~/.roo/commands/` (global slash commands, since v3.25) is a documented surface not yet generated. |
12055
12188
 
12056
12189
  ### Aider
12057
12190
 
@@ -12076,7 +12209,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
12076
12209
  | Changelog | https://www.augmentcode.com/changelog |
12077
12210
  | 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). |
12078
12211
  | 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) |
12079
- | 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 |
12212
+ | Global install | `ai-toolkit install --editors augment` writes `~/.augment/rules/ai-toolkit.md` **plus** (profile=full) `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` all documented user-tier surfaces. A global-only Augment user previously got no hooks/agents/commands. Skills need no global emission: Auggie natively reads `~/.claude/skills/`. |
12213
+ | 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, plugins/marketplace |
12214
+ | Latest / notes | Auggie CLI v0.31.0. Since v0.30.0 (2026-06-25) `PreToolUse`/`PostToolUse` hooks fire during sub-agent sessions, so our wired hook groups now run concurrently from parallel sub-agents — hook payload identifier is `conversation_id` (not `session_id`), a concurrency note to track. `Notification` is enum-only (doctor flipped its marker) — no dedicated handler documented, so class C (do NOT wire). Plugins/marketplace (`auggie plugin marketplace add`, `.augment-plugin`/`.claude-plugin` layouts, `enabledPlugins`/`autoUpdateMarketplaces` in settings) documented but not yet a shipping target. |
12080
12215
  | SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
12081
12216
 
12082
12217
  ### Google Antigravity
@@ -12087,9 +12222,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
12087
12222
  | Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
12088
12223
  | Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
12089
12224
  | 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` |
12090
- | Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`) |
12091
- | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions |
12092
- | 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`. |
12225
+ | Global config paths | Skills: `~/.gemini/config/skills/*/SKILL.md` (shared across all Antigravity products) and `~/.gemini/antigravity-cli/skills/*/SKILL.md` (CLI-private) both documented in the official Skills codelab. MCP: `~/.gemini/config/mcp_config.json` (shared global, resolved by CLI v1.0.14; the `~/.gemini/antigravity-cli/mcp_config.json` path is legacy). Rules: `~/.gemini/GEMINI.md` (dual-owner with Gemini CLI — Antigravity's IDE "+ Global" writes the same file; gemini-cli#16058 closed "not planned"). Hooks: `~/.gemini/config/hooks.json` (shared, since CLI v1.0.8). |
12226
+ | Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`; `generate_global()` writes the pointer to the two HOME skill dirs) |
12227
+ | Global install | `ai-toolkit install --editors antigravity` writes the skill pointer to `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Rules stay project-local (no mergeable global rules file beyond the Gemini-CLI-shared `~/.gemini/GEMINI.md`, covered by `--editors gemini`). |
12228
+ | Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions, global skills, `~/.gemini/config/mcp_config.json` |
12229
+ | CLI notes | Antigravity CLI (GA 2026-05-19; latest CLI v1.0.14 2026-06-30, IDE 2.2.1). Hooks are IDE + CLI (`.agents/hooks.json` workspace, `~/.gemini/config/hooks.json` global; event set `PreToolUse`/`PostToolUse`/`PreInvocation`/`PostInvocation`/`Stop` — `PreInvocation`/`PostInvocation` have no Claude equivalent; shell tool is `run_command` with args at `.toolCall.args.CommandLine`). MCP: `url` is natively supported since CLI v1.0.5 (registry's old "url/httpUrl fail silently" note is stale); `serverUrl` works everywhere incl. IDE. **MCP adapter + a `generate_antigravity_hooks.py` are not yet shipped** (backlog). |
12093
12230
  | 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. |
12094
12231
 
12095
12232
  ### Codex CLI
@@ -12097,13 +12234,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
12097
12234
  | Field | Value |
12098
12235
  |-------|-------|
12099
12236
  | ID | `codex-cli` |
12100
- | 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.142.0, 2026-06) |
12237
+ | 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`, `/codex/guides/agents-md`; latest verified local/release: codex-cli 0.144.1, 2026-07-10) |
12101
12238
  | Release notes | https://github.com/openai/codex/releases |
12102
- | 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` |
12239
+ | Config paths | **Instructions:** project `AGENTS.md` (root→cwd chain, closest wins) and global `~/.codex/AGENTS.md` (`$CODEX_HOME/AGENTS.md`; `~/.codex/AGENTS.override.md` takes precedence). NOTE: `~/AGENTS.md` is NOT a global-instruction surface — Codex only reads it if a session's cwd is exactly `$HOME`. Plus `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml`. |
12103
12240
  | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
12104
- | 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/`. |
12105
- | Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 of these to shared toolkit hook scripts, mirroring the Claude Code mapping in `app/hooks.json`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
12106
- | Tracked handler types | `command` (emitted by default); `prompt` and `agent` available upstream but authored by hand |
12241
+ | Rules delivery | Universal coding rules are inlined into `AGENTS.md` (Codex reads instructions only from AGENTS.md, not `.agents/rules/`); language rules ship as `<lang>-rules` skills under `.agents/skills/`. Global install writes `~/.codex/AGENTS.md` (not `~/AGENTS.md`, which Codex never loads globally); plugin-pack rules are marker-injected into the same file. `project_doc_max_bytes` default is 32 KiB and Codex silently truncates AGENTS.md past that (see codex-cli-compatibility.md). |
12242
+ | Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 of these to shared toolkit hook scripts (via `generate_codex_hooks.py` AND `inject-hook` propagation, kept in sync), mirroring the Claude Code mapping in `app/hooks.json`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
12243
+ | Tracked handler types | `command` (emitted by default; the only handler Codex actually runs). `prompt` and `agent` are parsed by Codex but NOT yet executed, so hand-authored handlers of those types are inert. |
12107
12244
  | Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path) |
12108
12245
  | Version probe | `codex --version` |
12109
12246
 
@@ -12261,7 +12398,7 @@ category: reference
12261
12398
  service: ai-toolkit
12262
12399
  tags: [features, differentiators, constitution, hooks, security, tdd, memory]
12263
12400
  created: "2026-04-13"
12264
- last_updated: "2026-05-12"
12401
+ last_updated: "2026-07-10"
12265
12402
  description: "Detailed description of ai-toolkit's unique features: constitution enforcement, hooks system, security scanning, effort budgeting, quality gates, and more."
12266
12403
  ---
12267
12404
 
@@ -12269,7 +12406,7 @@ description: "Detailed description of ai-toolkit's unique features: constitution
12269
12406
 
12270
12407
  ## 1. Machine-Enforced Constitution
12271
12408
 
12272
- Unlike other toolkits that put safety rules in documentation only, ai-toolkit enforces a 6-article constitution via hooks. The hooks actually **block** execution of:
12409
+ Unlike other toolkits that put safety rules in documentation only, ai-toolkit enforces a 7-article constitution via hooks. The hooks actually **block** execution of:
12273
12410
  - Mass deletion (`rm -rf`, `DROP TABLE`)
12274
12411
  - Blind overwrites of uncommitted work
12275
12412
  - Any action that could cause irreversible data loss
@@ -12294,6 +12431,7 @@ Hook logic lives in `app/hooks/*.sh` — not inline JSON one-liners. Scripts are
12294
12431
  | UserPromptSubmit | `track-usage.sh` | Record skill invocations to local stats |
12295
12432
  | PostToolUse | `post-tool-use.sh` | Lightweight validation reminders + append edit to session state |
12296
12433
  | PostToolUse | `governance-capture.sh` | Log security-sensitive operations to JSONL |
12434
+ | PostToolUse | `loop-guard.sh` | Detect repeated successful actions and inject a reassessment advisory |
12297
12435
  | PostToolUse | `test-cohesion.sh` | Run cohesion-mapped tests after edits; block on failure (Art. VI.3) |
12298
12436
  | PostToolUse | `search-tracker.sh` | Clear search-first flag when smart_query/hybrid_search_kb/Web* runs |
12299
12437
  | Stop | `quality-check.sh` | Multi-language lint (ruff/tsc/phpstan/dart/go) |