@softspark/ai-toolkit 4.12.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 (40) hide show
  1. package/CHANGELOG.md +30 -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/global-install-model.md +24 -3
  21. package/kb/reference/hooks-catalog.md +2 -3
  22. package/kb/reference/plugin-pack-conventions.md +5 -5
  23. package/kb/reference/skills-catalog.md +2 -0
  24. package/kb/reference/supported-tools-registry.md +30 -13
  25. package/kb/reference/unique-features.md +3 -2
  26. package/llms-full.txt +179 -60
  27. package/manifest.json +8 -8
  28. package/package.json +4 -3
  29. package/scripts/claude_app.py +347 -0
  30. package/scripts/doctor.py +85 -4
  31. package/scripts/ecosystem_tools.json +33 -5
  32. package/scripts/generate_devin_hooks.py +3 -4
  33. package/scripts/generate_windsurf_skills.py +5 -6
  34. package/scripts/install.py +23 -21
  35. package/scripts/install_steps/ai_tools.py +96 -6
  36. package/scripts/install_steps/install_state.py +2 -0
  37. package/scripts/update_projects.py +12 -1
  38. package/scripts/validate.py +34 -2
  39. package/AGENTS.md +0 -655
  40. package/scripts/generate_windsurf_hooks.py +0 -152
@@ -3,9 +3,9 @@ title: "Claude Ecosystem Expansion Foundations"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [benchmark, claude-code, ecosystem, hooks, plugins, architecture]
6
- version: "1.0.0"
6
+ version: "1.1.0"
7
7
  created: "2026-03-27"
8
- last_updated: "2026-04-13"
8
+ last_updated: "2026-07-10"
9
9
  description: "Reference summary of the ecosystem signals and implementation foundations adopted in ai-toolkit, including runtime-aware plugin packaging."
10
10
  ---
11
11
 
@@ -25,14 +25,22 @@ The outcome is a toolkit that is now positioned as a more modular, Claude-first,
25
25
 
26
26
  ### 1. Plugin-oriented structure
27
27
 
28
- `ai-toolkit` now treats plugin packaging as a first-class capability, with runtime-aware install surfaces for Claude and optional global Codex layering.
28
+ `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.
29
29
 
30
30
  Implemented artifacts:
31
31
  - `app/.claude-plugin/plugin.json`
32
+ - `app/claude-app/`
32
33
  - `app/plugins/`
33
34
  - `app/skills/plugin-creator/SKILL.md`
35
+ - `scripts/claude_app.py`
34
36
  - `kb/reference/plugin-pack-conventions.md`
35
37
 
38
+ Claude Code reads filesystem configuration such as `~/.claude/rules` and
39
+ `CLAUDE.md`. The Claude app does not scan those locations. For the app,
40
+ `ai-toolkit claude-app export --verify` creates an uploadable plugin ZIP and a
41
+ separate Cowork global-instructions file. Plugin skills work in Chat and Cowork;
42
+ hooks and sub-agents are Cowork-only.
43
+
36
44
  ### 2. Broader lifecycle coverage
37
45
 
38
46
  The toolkit now covers prompt, edit, subagent, compaction, and session-end phases.
@@ -85,6 +93,7 @@ The reference benchmark set is intentionally curated:
85
93
  | Area | Adopted in ai-toolkit |
86
94
  |------|------------------------|
87
95
  | Plugin manifests | Yes |
96
+ | Claude Chat/Cowork uploadable plugin export | Yes |
88
97
  | Domain plugin packs | Yes (experimental) |
89
98
  | Hook creator workflow | Yes |
90
99
  | Command creator workflow | Yes |
@@ -4,7 +4,7 @@ category: reference
4
4
  service: ai-toolkit
5
5
  tags: [cli, commands, reference, install, update, plugin, mcp, telemetry]
6
6
  created: "2026-04-13"
7
- last_updated: "2026-04-24"
7
+ last_updated: "2026-07-10"
8
8
  description: "Complete CLI reference for all ai-toolkit commands, options, and flags."
9
9
  ---
10
10
 
@@ -29,6 +29,8 @@ Usage: ai-toolkit <command> [options]
29
29
  | `doctor` | Diagnose install health, hooks, quick-win assets, and artifact drift |
30
30
  | `doctor --fix` | Auto-repair broken symlinks, missing hooks, stale artifacts |
31
31
  | `eject [dir]` | Export standalone config (no symlinks, no toolkit dependency) |
32
+ | `claude-app export [--output FILE] [--no-custom-rules] [--verify]` | Build an uploadable Claude Chat/Desktop/Cowork plugin ZIP and global-instructions file |
33
+ | `claude-app verify` | Validate a clean staged plugin with structural checks and the official Claude plugin validator |
32
34
 
33
35
  ## Rule & Hook Injection
34
36
 
@@ -55,7 +57,7 @@ Usage: ai-toolkit <command> [options]
55
57
  | Command | Description |
56
58
  |---------|-------------|
57
59
  | `plugin list` | Show available plugin packs with install status |
58
- | `plugin install <name> [--editor claude\|codex\|all]` | Install a plugin pack for selected runtime(s) |
60
+ | `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) |
59
61
  | `plugin install --all [--editor claude\|codex\|all]` | Install all 11 plugin packs |
60
62
  | `plugin update <name> [--editor claude\|codex\|all]` | Update a plugin pack (remove + reinstall, preserves data) |
61
63
  | `plugin update --all [--editor claude\|codex\|all]` | Update all installed plugin packs |
@@ -3,10 +3,10 @@ title: "Global Install Model"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [install, global, claude, codex, plugins, local-setup]
6
- version: "3.1.0"
6
+ version: "3.2.0"
7
7
  created: "2026-03-26"
8
- last_updated: "2026-06-30"
9
- description: "Reference description of the global install target, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
8
+ last_updated: "2026-07-10"
9
+ 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."
10
10
  ---
11
11
 
12
12
  # Global Install Model
@@ -24,6 +24,10 @@ the core toolkit install, but experimental plugin packs can layer a global
24
24
  Codex target in `HOME` when explicitly installed with
25
25
  `ai-toolkit plugin install --editor codex`.
26
26
 
27
+ Claude Chat/Desktop/Cowork is a separate runtime. It does not read the
28
+ filesystem surfaces under `~/.claude`; it receives ai-toolkit through an
29
+ uploaded plugin plus app-managed global/folder instructions.
30
+
27
31
  ## Command Responsibilities
28
32
 
29
33
  | Command | Target | Purpose |
@@ -34,6 +38,7 @@ Codex target in `HOME` when explicitly installed with
34
38
  | `ai-toolkit install --local --lang <lang>` | current project | explicit language selection for rules (e.g. `--lang typescript`, `--lang go,python`); auto-detected when omitted |
35
39
  | `ai-toolkit install --modules <list>` | `~/.claude/` | selective module install (e.g. `--modules core,agents,rules-typescript`) |
36
40
  | `ai-toolkit update --local` | current project | refresh project configs; auto-detects editors from existing files |
41
+ | `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 |
37
42
  | `ai-toolkit add-rule` | `~/.softspark/ai-toolkit/rules/` | register a global rule |
38
43
  | `ai-toolkit remove-rule` | `~/.softspark/ai-toolkit/rules/` | unregister a global rule |
39
44
  | `ai-toolkit mcp add <name...>` | current project | merge MCP templates into `.mcp.json` |
@@ -70,6 +75,22 @@ Claude Code's default global install writes these managed surfaces:
70
75
 
71
76
  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`.
72
77
 
78
+ ## Claude App Target
79
+
80
+ `~/.claude/` is a Claude Code surface, not a Claude Chat/Cowork surface. Run:
81
+
82
+ ```bash
83
+ ai-toolkit claude-app export --verify
84
+ ```
85
+
86
+ Upload the ZIP from `Customize > Plugins`, then paste the sibling
87
+ `*-global-instructions.md` file into `Settings > Cowork > Global instructions`.
88
+ The plugin contains the normal skills and agents, app-relative Cowork hooks,
89
+ and an `ai-toolkit-rules` skill generated from common/standalone rules.
90
+ Registered rules are embedded in a separate skill by default. Skills work in
91
+ Chat and Cowork; hooks and sub-agents are Cowork-only. The app owns its plugin
92
+ store, so toolkit updates require re-export and re-upload.
93
+
73
94
  `ai-toolkit install --editors <name>` can write global files only for editors
74
95
  with documented, file-based config surfaces:
75
96
 
@@ -13,7 +13,7 @@ description: "Complete reference of all ai-toolkit hooks: events, scripts, insta
13
13
 
14
14
  ## Overview
15
15
 
16
- 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/`.
16
+ 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/`.
17
17
 
18
18
  ## Supported Surface
19
19
 
@@ -575,14 +575,13 @@ Beyond the global Claude Code hooks above, full-profile project installs emit na
575
575
  | Editor | File | Generator | Format |
576
576
  |--------|------|-----------|--------|
577
577
  | Cursor | `.cursor/hooks.json` | `generate_cursor_hooks.py` | Cursor hooks schema |
578
- | Windsurf (Cascade) | `.windsurf/hooks.json` | `generate_windsurf_hooks.py` | Cascade `agent_action_name`/`tool_info` — **deprecated, dies 2026-07-01** |
579
578
  | Devin CLI | `.devin/hooks.v1.json` | `generate_devin_hooks.py` | Claude-compatible (the replacement for Cascade) |
580
579
  | Gemini CLI | `.gemini/settings.json` (hooks block) | `generate_gemini_hooks.py` | Gemini `BeforeTool`/`AfterTool` events |
581
580
  | Augment | `.augment/settings.json` (hooks block) | `generate_augment_hooks.py` | Claude-style events |
582
581
 
583
582
  ### Devin CLI hooks (`.devin/hooks.v1.json`)
584
583
 
585
- 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.
584
+ 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.
586
585
 
587
586
  Devin CLI uses a **Claude-compatible** hook format (docs.devin.ai/cli/extensibility/hooks). Key facts driving the generator:
588
587
 
@@ -6,14 +6,14 @@ tags: [plugins, plugin-packs, conventions, manifests, hooks, policy-packs]
6
6
  version: "1.0.0"
7
7
  created: "2026-03-28"
8
8
  last_updated: "2026-04-13"
9
- description: "Conventions for experimental ai-toolkit plugin packs, policy packs, hook packs, and plugin-creator scaffolding across Claude and Codex runtimes."
9
+ description: "Conventions for experimental ai-toolkit plugin packs, policy packs, hook packs, and plugin-creator scaffolding across Claude Code and Codex runtimes."
10
10
  ---
11
11
 
12
12
  # Plugin Pack Conventions
13
13
 
14
14
  ## Purpose
15
15
 
16
- `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.
16
+ `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`.
17
17
 
18
18
  ## Pack Types
19
19
 
@@ -73,7 +73,7 @@ Required keys:
73
73
 
74
74
  ```bash
75
75
  ai-toolkit plugin list # show all 11 packs with install status
76
- ai-toolkit plugin install --editor claude <name> # Claude global target
76
+ ai-toolkit plugin install --editor claude <name> # Claude Code global target
77
77
  ai-toolkit plugin install --editor codex <name> # Codex global target
78
78
  ai-toolkit plugin install --editor all --all # install all 11 packs for both runtimes
79
79
  ai-toolkit plugin update --editor all --all # update all installed packs
@@ -90,7 +90,7 @@ ai-toolkit plugin status --editor all # show installed packs with r
90
90
  2. **Copies** plugin-specific hooks to `~/.softspark/ai-toolkit/hooks/plugin-<pack>-<hook>.sh`
91
91
  3. **Copies** plugin-specific scripts to `~/.softspark/ai-toolkit/plugin-scripts/<pack>/`
92
92
  4. **Runs** init scripts if present (e.g. `init_db.py` for memory-pack — safe to re-run, preserves data)
93
- 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`
93
+ 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`
94
94
  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
95
95
  7. **Records** installed state per runtime in `~/.softspark/ai-toolkit/plugins.json`
96
96
 
@@ -110,7 +110,7 @@ ai-toolkit plugin status --editor all # show installed packs with r
110
110
 
111
111
  ### What `plugin remove` Does
112
112
 
113
- 1. **Claude target**: strips plugin hook entries from `~/.claude/settings.json` and removes plugin-local rule sections from `~/.claude/CLAUDE.md`
113
+ 1. **Claude Code target**: strips plugin hook entries from `~/.claude/settings.json` and removes plugin-local rule sections from `~/.claude/CLAUDE.md`
114
114
  2. **Codex target**: strips plugin hook entries from `~/.codex/hooks.json` and removes `~/.agents/rules/plugin-<pack>-*.md`
115
115
  3. **Shared assets** (`~/.softspark/ai-toolkit/hooks/plugin-*`, `plugin-scripts/<pack>/`) are removed only when no remaining runtime still uses that pack
116
116
  4. **Updates** `plugins.json` state per runtime
@@ -254,6 +254,8 @@ Step 0 interview before setup — 5 targeted questions to capture undocumented p
254
254
 
255
255
  Codex CLI receives the full skill catalog during `ai-toolkit install --local --editors codex`.
256
256
 
257
+ 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.
258
+
257
259
  - Native Codex-compatible skills are symlinked directly into `.agents/skills/`
258
260
  - Claude-oriented orchestration skills are generated as Codex wrappers
259
261
  - Adapted wrappers translate `Agent`, `Team*`, and `Task*` guidance to `spawn_agent`, `send_input`, `wait_agent`, `close_agent`, and `update_plan`
@@ -3,19 +3,19 @@ title: "Supported Tools Registry"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [editors, platforms, generators, integration, ecosystem]
6
- version: "1.7.1"
6
+ version: "1.8.0"
7
7
  created: "2026-04-23"
8
- last_updated: "2026-06-30"
9
- description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code + 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
8
+ last_updated: "2026-07-10"
9
+ 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."
10
10
  ---
11
11
 
12
12
  # Supported Tools Registry
13
13
 
14
14
  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.
15
15
 
16
- ## Tool Count: 12
16
+ ## Tool Count: 13
17
17
 
18
- 1 primary runtime (Claude Code) + 11 editor integrations.
18
+ 1 primary runtime (Claude Code) + 1 Claude app target + 11 editor integrations.
19
19
 
20
20
  ---
21
21
 
@@ -28,7 +28,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
28
28
  | ID | `claude-code` |
29
29
  | Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
30
30
  | Release notes | https://github.com/anthropics/claude-code/releases |
31
- | Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.186) |
31
+ | 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) |
32
32
  | Config paths | `~/.claude/settings.json`, `.claude/settings.json` (project, committed), `.claude/settings.local.json`, `CLAUDE.md`, `.claude/rules/*.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
33
33
  | Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
34
34
  | Tracked hook events | Core: `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Notification`, `MessageDisplay`. Tool: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`. Turn: `Stop`, `StopFailure`, `UserPromptExpansion`. Subagent: `SubagentStart`, `SubagentStop`. Compaction: `PreCompact`, `PostCompact`. Permissions: `PermissionRequest`, `PermissionDenied`. Elicitation: `Elicitation`, `ElicitationResult`. Teams: `TaskCreated`, `TaskCompleted`, `TeammateIdle`. Worktrees/env: `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `FileChanged`, `ConfigChange`. Setup: `Setup`, `InstructionsLoaded` |
@@ -39,6 +39,23 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
39
39
 
40
40
  ---
41
41
 
42
+ ## Claude App Target
43
+
44
+ ### Claude Chat / Cowork
45
+
46
+ | Field | Value |
47
+ |-------|-------|
48
+ | ID | `claude-app` |
49
+ | Docs | https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork |
50
+ | Plugin docs | https://support.claude.com/en/articles/13837440-use-plugins-in-claude |
51
+ | Config surfaces | `Settings > Cowork > Global instructions`, Cowork folder instructions, `Customize > Skills`, and `Customize > Plugins` |
52
+ | 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 |
53
+ | Our generator | `scripts/claude_app.py` (`ai-toolkit claude-app export`) |
54
+ | 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`. |
55
+ | 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. |
56
+
57
+ ---
58
+
42
59
  ## Editor Integrations
43
60
 
44
61
  ### Cursor
@@ -62,15 +79,15 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
62
79
  | ID | `windsurf` |
63
80
  | Docs | https://docs.devin.ai/desktop (Windsurf rebranded to Devin Desktop ~2026-06-02; docs.windsurf.com resolves here) |
64
81
  | Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
65
- | 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/`) |
66
- | 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`. |
67
- | 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`. |
68
- | 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) |
82
+ | 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/`) |
83
+ | 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`. |
84
+ | 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. |
85
+ | 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) |
69
86
  | 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). |
70
87
  | Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
71
88
  | Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
72
- | 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. |
73
- | 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. |
89
+ | 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. |
90
+ | 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. |
74
91
 
75
92
  ### GitHub Copilot
76
93
 
@@ -174,7 +191,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
174
191
  | Field | Value |
175
192
  |-------|-------|
176
193
  | ID | `codex-cli` |
177
- | 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) |
194
+ | 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) |
178
195
  | Release notes | https://github.com/openai/codex/releases |
179
196
  | 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`. |
180
197
  | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
@@ -4,7 +4,7 @@ category: reference
4
4
  service: ai-toolkit
5
5
  tags: [features, differentiators, constitution, hooks, security, tdd, memory]
6
6
  created: "2026-04-13"
7
- last_updated: "2026-05-12"
7
+ last_updated: "2026-07-10"
8
8
  description: "Detailed description of ai-toolkit's unique features: constitution enforcement, hooks system, security scanning, effort budgeting, quality gates, and more."
9
9
  ---
10
10
 
@@ -12,7 +12,7 @@ description: "Detailed description of ai-toolkit's unique features: constitution
12
12
 
13
13
  ## 1. Machine-Enforced Constitution
14
14
 
15
- 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:
15
+ 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:
16
16
  - Mass deletion (`rm -rf`, `DROP TABLE`)
17
17
  - Blind overwrites of uncommitted work
18
18
  - Any action that could cause irreversible data loss
@@ -37,6 +37,7 @@ Hook logic lives in `app/hooks/*.sh` — not inline JSON one-liners. Scripts are
37
37
  | UserPromptSubmit | `track-usage.sh` | Record skill invocations to local stats |
38
38
  | PostToolUse | `post-tool-use.sh` | Lightweight validation reminders + append edit to session state |
39
39
  | PostToolUse | `governance-capture.sh` | Log security-sensitive operations to JSONL |
40
+ | PostToolUse | `loop-guard.sh` | Detect repeated successful actions and inject a reassessment advisory |
40
41
  | PostToolUse | `test-cohesion.sh` | Run cohesion-mapped tests after edits; block on failure (Art. VI.3) |
41
42
  | PostToolUse | `search-tracker.sh` | Clear search-first flag when smart_query/hybrid_search_kb/Web* runs |
42
43
  | Stop | `quality-check.sh` | Multi-language lint (ruff/tsc/phpstan/dart/go) |