@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.
- package/CHANGELOG.md +30 -0
- package/README.md +33 -15
- package/app/.claude-plugin/plugin.json +11 -19
- package/app/ARCHITECTURE.md +6 -6
- package/app/claude-app/global-instructions.md +10 -0
- package/app/claude-app/hooks/hooks.json +284 -0
- package/app/claude-app/skills/ai-toolkit-rules/SKILL.md +359 -0
- package/app/hooks/config-desync-guard.sh +63 -23
- package/app/plugins/README.md +4 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +91 -25
- package/bin/ai-toolkit.js +21 -3
- package/kb/planning/drop-cascade-hooks-after-sunset.md +13 -8
- package/kb/procedures/ecosystem-sync-sop.md +5 -5
- package/kb/procedures/maintenance-sop.md +42 -4
- package/kb/procedures/release-preparation-sop.md +5 -1
- package/kb/procedures/release-verification-sop.md +25 -9
- package/kb/reference/architecture-overview.md +7 -2
- package/kb/reference/claude-ecosystem-expansion-foundations.md +12 -3
- package/kb/reference/cli-reference.md +4 -2
- package/kb/reference/global-install-model.md +24 -3
- package/kb/reference/hooks-catalog.md +2 -3
- package/kb/reference/plugin-pack-conventions.md +5 -5
- package/kb/reference/skills-catalog.md +2 -0
- package/kb/reference/supported-tools-registry.md +30 -13
- package/kb/reference/unique-features.md +3 -2
- package/llms-full.txt +179 -60
- package/manifest.json +8 -8
- package/package.json +4 -3
- package/scripts/claude_app.py +347 -0
- package/scripts/doctor.py +85 -4
- package/scripts/ecosystem_tools.json +33 -5
- package/scripts/generate_devin_hooks.py +3 -4
- package/scripts/generate_windsurf_skills.py +5 -6
- package/scripts/install.py +23 -21
- package/scripts/install_steps/ai_tools.py +96 -6
- package/scripts/install_steps/install_state.py +2 -0
- package/scripts/update_projects.py +12 -1
- package/scripts/validate.py +34 -2
- package/AGENTS.md +0 -655
- 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.
|
|
6
|
+
version: "1.1.0"
|
|
7
7
|
created: "2026-03-27"
|
|
8
|
-
last_updated: "2026-
|
|
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
|
|
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-
|
|
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
|
|
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.
|
|
6
|
+
version: "3.2.0"
|
|
7
7
|
created: "2026-03-26"
|
|
8
|
-
last_updated: "2026-
|
|
9
|
-
description: "Reference description of
|
|
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
|
|
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)
|
|
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`
|
|
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.
|
|
6
|
+
version: "1.8.0"
|
|
7
7
|
created: "2026-04-23"
|
|
8
|
-
last_updated: "2026-
|
|
9
|
-
description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code
|
|
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:
|
|
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 (
|
|
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/
|
|
67
|
-
| Compat read paths |
|
|
68
|
-
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`
|
|
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 | **
|
|
73
|
-
|
|
|
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
|
|
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-
|
|
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
|
|
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) |
|