@softspark/ai-toolkit 4.12.0 → 4.14.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 (47) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +31 -15
  3. package/app/.claude-plugin/plugin.json +11 -19
  4. package/app/ARCHITECTURE.md +6 -6
  5. package/app/agents/explorer-agent.md +1 -1
  6. package/app/agents/fact-checker.md +1 -1
  7. package/app/claude-app/global-instructions.md +10 -0
  8. package/app/claude-app/hooks/hooks.json +284 -0
  9. package/app/claude-app/skills/ai-toolkit-rules/SKILL.md +359 -0
  10. package/app/hooks/config-desync-guard.sh +63 -23
  11. package/app/plugins/README.md +4 -1
  12. package/app/skills/json-mode-patterns/SKILL.md +2 -2
  13. package/app/skills/model-routing-patterns/SKILL.md +24 -7
  14. package/app/skills/prompt-caching-patterns/SKILL.md +2 -2
  15. package/app/skills/skill-creator/SKILL.md +1 -1
  16. package/benchmarks/ecosystem-doctor-snapshot.json +91 -25
  17. package/bin/ai-toolkit.js +21 -3
  18. package/kb/planning/drop-cascade-hooks-after-sunset.md +13 -8
  19. package/kb/procedures/ecosystem-sync-sop.md +5 -5
  20. package/kb/procedures/maintenance-sop.md +42 -4
  21. package/kb/procedures/release-preparation-sop.md +5 -1
  22. package/kb/procedures/release-verification-sop.md +25 -9
  23. package/kb/reference/architecture-overview.md +7 -2
  24. package/kb/reference/claude-ecosystem-expansion-foundations.md +12 -3
  25. package/kb/reference/cli-reference.md +4 -2
  26. package/kb/reference/global-install-model.md +24 -3
  27. package/kb/reference/hooks-catalog.md +2 -3
  28. package/kb/reference/plugin-pack-conventions.md +5 -5
  29. package/kb/reference/skills-catalog.md +2 -0
  30. package/kb/reference/supported-tools-registry.md +30 -13
  31. package/kb/reference/unique-features.md +3 -2
  32. package/llms-full.txt +179 -60
  33. package/manifest.json +8 -8
  34. package/package.json +4 -3
  35. package/scripts/_common.py +2 -2
  36. package/scripts/claude_app.py +347 -0
  37. package/scripts/doctor.py +85 -4
  38. package/scripts/ecosystem_tools.json +33 -5
  39. package/scripts/generate_devin_hooks.py +3 -4
  40. package/scripts/generate_windsurf_skills.py +5 -6
  41. package/scripts/install.py +23 -21
  42. package/scripts/install_steps/ai_tools.py +96 -6
  43. package/scripts/install_steps/install_state.py +2 -0
  44. package/scripts/update_projects.py +12 -1
  45. package/scripts/validate.py +34 -2
  46. package/AGENTS.md +0 -655
  47. 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 |
@@ -8649,10 +8728,10 @@ title: "Global Install Model"
8649
8728
  category: reference
8650
8729
  service: ai-toolkit
8651
8730
  tags: [install, global, claude, codex, plugins, local-setup]
8652
- version: "3.1.0"
8731
+ version: "3.2.0"
8653
8732
  created: "2026-03-26"
8654
- last_updated: "2026-06-30"
8655
- 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."
8656
8735
  ---
8657
8736
 
8658
8737
  # Global Install Model
@@ -8670,6 +8749,10 @@ the core toolkit install, but experimental plugin packs can layer a global
8670
8749
  Codex target in `HOME` when explicitly installed with
8671
8750
  `ai-toolkit plugin install --editor codex`.
8672
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
+
8673
8756
  ## Command Responsibilities
8674
8757
 
8675
8758
  | Command | Target | Purpose |
@@ -8680,6 +8763,7 @@ Codex target in `HOME` when explicitly installed with
8680
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 |
8681
8764
  | `ai-toolkit install --modules <list>` | `~/.claude/` | selective module install (e.g. `--modules core,agents,rules-typescript`) |
8682
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 |
8683
8767
  | `ai-toolkit add-rule` | `~/.softspark/ai-toolkit/rules/` | register a global rule |
8684
8768
  | `ai-toolkit remove-rule` | `~/.softspark/ai-toolkit/rules/` | unregister a global rule |
8685
8769
  | `ai-toolkit mcp add <name...>` | current project | merge MCP templates into `.mcp.json` |
@@ -8716,6 +8800,22 @@ Claude Code's default global install writes these managed surfaces:
8716
8800
 
8717
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`.
8718
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
+
8719
8819
  `ai-toolkit install --editors <name>` can write global files only for editors
8720
8820
  with documented, file-based config surfaces:
8721
8821
 
@@ -9042,7 +9142,7 @@ description: "Complete reference of all ai-toolkit hooks: events, scripts, insta
9042
9142
 
9043
9143
  ## Overview
9044
9144
 
9045
- 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/`.
9046
9146
 
9047
9147
  ## Supported Surface
9048
9148
 
@@ -9604,14 +9704,13 @@ Beyond the global Claude Code hooks above, full-profile project installs emit na
9604
9704
  | Editor | File | Generator | Format |
9605
9705
  |--------|------|-----------|--------|
9606
9706
  | Cursor | `.cursor/hooks.json` | `generate_cursor_hooks.py` | Cursor hooks schema |
9607
- | Windsurf (Cascade) | `.windsurf/hooks.json` | `generate_windsurf_hooks.py` | Cascade `agent_action_name`/`tool_info` — **deprecated, dies 2026-07-01** |
9608
9707
  | Devin CLI | `.devin/hooks.v1.json` | `generate_devin_hooks.py` | Claude-compatible (the replacement for Cascade) |
9609
9708
  | Gemini CLI | `.gemini/settings.json` (hooks block) | `generate_gemini_hooks.py` | Gemini `BeforeTool`/`AfterTool` events |
9610
9709
  | Augment | `.augment/settings.json` (hooks block) | `generate_augment_hooks.py` | Claude-style events |
9611
9710
 
9612
9711
  ### Devin CLI hooks (`.devin/hooks.v1.json`)
9613
9712
 
9614
- 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.
9615
9714
 
9616
9715
  Devin CLI uses a **Claude-compatible** hook format (docs.devin.ai/cli/extensibility/hooks). Key facts driving the generator:
9617
9716
 
@@ -11200,14 +11299,14 @@ tags: [plugins, plugin-packs, conventions, manifests, hooks, policy-packs]
11200
11299
  version: "1.0.0"
11201
11300
  created: "2026-03-28"
11202
11301
  last_updated: "2026-04-13"
11203
- 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."
11204
11303
  ---
11205
11304
 
11206
11305
  # Plugin Pack Conventions
11207
11306
 
11208
11307
  ## Purpose
11209
11308
 
11210
- `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`.
11211
11310
 
11212
11311
  ## Pack Types
11213
11312
 
@@ -11267,7 +11366,7 @@ Required keys:
11267
11366
 
11268
11367
  ```bash
11269
11368
  ai-toolkit plugin list # show all 11 packs with install status
11270
- ai-toolkit plugin install --editor claude <name> # Claude global target
11369
+ ai-toolkit plugin install --editor claude <name> # Claude Code global target
11271
11370
  ai-toolkit plugin install --editor codex <name> # Codex global target
11272
11371
  ai-toolkit plugin install --editor all --all # install all 11 packs for both runtimes
11273
11372
  ai-toolkit plugin update --editor all --all # update all installed packs
@@ -11284,7 +11383,7 @@ ai-toolkit plugin status --editor all # show installed packs with r
11284
11383
  2. **Copies** plugin-specific hooks to `~/.softspark/ai-toolkit/hooks/plugin-<pack>-<hook>.sh`
11285
11384
  3. **Copies** plugin-specific scripts to `~/.softspark/ai-toolkit/plugin-scripts/<pack>/`
11286
11385
  4. **Runs** init scripts if present (e.g. `init_db.py` for memory-pack — safe to re-run, preserves data)
11287
- 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`
11288
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
11289
11388
  7. **Records** installed state per runtime in `~/.softspark/ai-toolkit/plugins.json`
11290
11389
 
@@ -11304,7 +11403,7 @@ ai-toolkit plugin status --editor all # show installed packs with r
11304
11403
 
11305
11404
  ### What `plugin remove` Does
11306
11405
 
11307
- 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`
11308
11407
  2. **Codex target**: strips plugin hook entries from `~/.codex/hooks.json` and removes `~/.agents/rules/plugin-<pack>-*.md`
11309
11408
  3. **Shared assets** (`~/.softspark/ai-toolkit/hooks/plugin-*`, `plugin-scripts/<pack>/`) are removed only when no remaining runtime still uses that pack
11310
11409
  4. **Updates** `plugins.json` state per runtime
@@ -11735,6 +11834,8 @@ Step 0 interview before setup — 5 targeted questions to capture undocumented p
11735
11834
 
11736
11835
  Codex CLI receives the full skill catalog during `ai-toolkit install --local --editors codex`.
11737
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
+
11738
11839
  - Native Codex-compatible skills are symlinked directly into `.agents/skills/`
11739
11840
  - Claude-oriented orchestration skills are generated as Codex wrappers
11740
11841
  - Adapted wrappers translate `Agent`, `Team*`, and `Task*` guidance to `spawn_agent`, `send_input`, `wait_agent`, `close_agent`, and `update_plan`
@@ -11945,19 +12046,19 @@ title: "Supported Tools Registry"
11945
12046
  category: reference
11946
12047
  service: ai-toolkit
11947
12048
  tags: [editors, platforms, generators, integration, ecosystem]
11948
- version: "1.7.1"
12049
+ version: "1.8.0"
11949
12050
  created: "2026-04-23"
11950
- last_updated: "2026-06-30"
11951
- 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."
11952
12053
  ---
11953
12054
 
11954
12055
  # Supported Tools Registry
11955
12056
 
11956
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.
11957
12058
 
11958
- ## Tool Count: 12
12059
+ ## Tool Count: 13
11959
12060
 
11960
- 1 primary runtime (Claude Code) + 11 editor integrations.
12061
+ 1 primary runtime (Claude Code) + 1 Claude app target + 11 editor integrations.
11961
12062
 
11962
12063
  ---
11963
12064
 
@@ -11970,7 +12071,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11970
12071
  | ID | `claude-code` |
11971
12072
  | Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
11972
12073
  | Release notes | https://github.com/anthropics/claude-code/releases |
11973
- | 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) |
11974
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+) |
11975
12076
  | Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
11976
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` |
@@ -11981,6 +12082,23 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
11981
12082
 
11982
12083
  ---
11983
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
+
11984
12102
  ## Editor Integrations
11985
12103
 
11986
12104
  ### Cursor
@@ -12004,15 +12122,15 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
12004
12122
  | ID | `windsurf` |
12005
12123
  | Docs | https://docs.devin.ai/desktop (Windsurf rebranded to Devin Desktop ~2026-06-02; docs.windsurf.com resolves here) |
12006
12124
  | Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
12007
- | 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/`) |
12008
- | 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`. |
12009
- | 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.** `read_config_from` now has **7 keys** (all default true): `agents_standard`, `cursor`, `windsurf`, `claude`, `opencode`, `vscode`, `zed` — so Devin CLI also imports MCP from `~/.config/opencode/opencode.json` (our opencode global install), `~/.config/zed/settings.json`, and `.vscode/mcp.json`. |
12010
- | Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped, drop in the first release 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) |
12011
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). |
12012
12130
  | Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
12013
12131
  | Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
12014
- | 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. |
12015
- | 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. |
12016
12134
 
12017
12135
  ### GitHub Copilot
12018
12136
 
@@ -12116,7 +12234,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
12116
12234
  | Field | Value |
12117
12235
  |-------|-------|
12118
12236
  | ID | `codex-cli` |
12119
- | 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 stable codex-cli 0.142.5, 2026-07-01; 0.143.0 alpha) |
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) |
12120
12238
  | Release notes | https://github.com/openai/codex/releases |
12121
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`. |
12122
12240
  | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
@@ -12280,7 +12398,7 @@ category: reference
12280
12398
  service: ai-toolkit
12281
12399
  tags: [features, differentiators, constitution, hooks, security, tdd, memory]
12282
12400
  created: "2026-04-13"
12283
- last_updated: "2026-05-12"
12401
+ last_updated: "2026-07-10"
12284
12402
  description: "Detailed description of ai-toolkit's unique features: constitution enforcement, hooks system, security scanning, effort budgeting, quality gates, and more."
12285
12403
  ---
12286
12404
 
@@ -12288,7 +12406,7 @@ description: "Detailed description of ai-toolkit's unique features: constitution
12288
12406
 
12289
12407
  ## 1. Machine-Enforced Constitution
12290
12408
 
12291
- 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:
12292
12410
  - Mass deletion (`rm -rf`, `DROP TABLE`)
12293
12411
  - Blind overwrites of uncommitted work
12294
12412
  - Any action that could cause irreversible data loss
@@ -12313,6 +12431,7 @@ Hook logic lives in `app/hooks/*.sh` — not inline JSON one-liners. Scripts are
12313
12431
  | UserPromptSubmit | `track-usage.sh` | Record skill invocations to local stats |
12314
12432
  | PostToolUse | `post-tool-use.sh` | Lightweight validation reminders + append edit to session state |
12315
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 |
12316
12435
  | PostToolUse | `test-cohesion.sh` | Run cohesion-mapped tests after edits; block on failure (Art. VI.3) |
12317
12436
  | PostToolUse | `search-tracker.sh` | Clear search-first flag when smart_query/hybrid_search_kb/Web* runs |
12318
12437
  | Stop | `quality-check.sh` | Multi-language lint (ruff/tsc/phpstan/dart/go) |