@softspark/ai-toolkit 4.6.0 → 4.8.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 +32 -0
- package/README.md +10 -11
- package/app/.claude-plugin/plugin.json +1 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +21 -12
- package/kb/procedures/maintenance-sop.md +9 -8
- package/kb/procedures/release-verification-sop.md +1 -1
- package/kb/reference/architecture-overview.md +4 -4
- package/kb/reference/hooks-catalog.md +27 -2
- package/kb/reference/supported-tools-registry.md +31 -25
- package/llms-full.txt +72 -40
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/scripts/ecosystem_tools.json +62 -9
- package/scripts/generate_antigravity.py +22 -15
- package/scripts/generate_cursor_mdc.py +4 -3
- package/scripts/generate_devin_hooks.py +149 -0
- package/scripts/generate_windsurf_hooks.py +6 -0
- package/scripts/generate_windsurf_rules.py +39 -24
- package/scripts/generate_windsurf_skills.py +14 -4
- package/scripts/install_steps/ai_tools.py +24 -4
- package/scripts/validate.py +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,38 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v4.8.0 - Devin CLI hooks (Cascade migration) (2026-06-10)
|
|
11
|
+
|
|
12
|
+
Minor release. Migrates the deprecated Windsurf Cascade hooks onto the Devin CLI surface ahead of the 2026-07-01 Cascade sunset. Class D/F ecosystem change per `kb/procedures/ecosystem-sync-sop.md`. No skill/agent count change; no new broad-access skills.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- **Devin CLI hooks** — new `scripts/generate_devin_hooks.py` emits `.devin/hooks.v1.json` in the Claude-compatible hook format Devin CLI uses (docs.devin.ai/cli/extensibility/hooks). Wired into `ai-toolkit install --local --editors windsurf --profile full` alongside the existing (now deprecated) Cascade generator. Events are Claude-style (`PreToolUse`/`PostToolUse`/`UserPromptSubmit`/`Stop`/`SessionStart`) with matchers on Devin tool names (`read`/`edit`/`exec`/`mcp__*`); blocking uses the flat `{"decision":"block","reason":...}` shape + exit 2 (no `AI_TOOLKIT_HOOK_FORMAT=json`). Reuses the existing `~/.softspark/ai-toolkit/hooks/*.sh` scripts; `_hook-io.sh` already parses Devin's flat `hook_event_name`/`tool_name`/`tool_input` payload, so no normalizer change was needed. Test count: 1186 → 1196.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- **Cascade hooks deprecation** — `scripts/generate_windsurf_hooks.py` (`.windsurf/hooks.json`) is marked deprecated: the Cascade agent and its hook surface stop working 2026-07-01, and Devin Local / Devin CLI do not read `.windsurf/hooks.json` as a fallback. Both generators run during the transition; `generate_windsurf_hooks.py` will be dropped in the first release after the sunset.
|
|
19
|
+
- **Global hooks reach Devin for free** — documented that Devin CLI reads `~/.claude/settings.json` + `.claude/settings.json` hooks directly (`read_config_from.claude` default on), so a global `ai-toolkit install` already covers Devin even without the project-local file.
|
|
20
|
+
- Registry: `.devin/hooks.v1.json` + `generate_devin_hooks.py` added to the windsurf entry in `scripts/ecosystem_tools.json` and `kb/reference/supported-tools-registry.md`; new "Per-Editor Native Hooks" section in `kb/reference/hooks-catalog.md`. `validate.py` maps the `devin` hook-generator stem back to the windsurf README platform key.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## v4.7.0 - Devin Desktop .devin tree + Antigravity CLI surfaces (2026-06-10)
|
|
25
|
+
|
|
26
|
+
Minor release. Ecosystem sync per `kb/procedures/ecosystem-sync-sop.md` (window 2026-06-05 → 2026-06-10, doctor run + per-tool docs review with adversarial verification). No skill/agent count change; no new broad-access skills.
|
|
27
|
+
|
|
28
|
+
### Ecosystem (class B/D/F drift)
|
|
29
|
+
- **Windsurf/Devin Desktop: `.devin/` dual-emit** — `generate_windsurf_rules.py` and `generate_windsurf_skills.py` now write rules, workflows, and the skill pointer to `.devin/{rules,workflows,skills}/` (primary tree since the 2026-06-02 rebrand) alongside legacy `.windsurf/` (still read as fallback). `.devin/rules` added to editor auto-detection. Test count: 1179 → 1186.
|
|
30
|
+
- **Antigravity: CLI skill pointer** — `generate_antigravity.py` dual-emits the skill pointer to `.agent/skills/` (IDE) and `.agents/skills/` (CLI, plural). Editor auto-detection no longer misreads a pointer-only `.agents/skills/` as a Codex install.
|
|
31
|
+
- **Registry coverage** — added verified config surfaces to `scripts/ecosystem_tools.json`: Claude Code project `.claude/settings.json` + `.claude/rules/*.md` + `http` hook handler; Cursor subagent fallback dirs; Devin Local config files; Gemini CLI hook events (`BeforeToolSelection`, `AfterModel`, `Notification`, `PreCompress`) + `~/.agents/skills` alias; Cline CLI/SDK unified `.cline/` layout, `AGENTS.md` rules sources, and plugins; Augment workspace settings + `Notification` event; Codex project-layer `.codex/config.toml`; opencode skill discovery aliases; Antigravity CLI `.agents/{skills,hooks.json,mcp_config.json}`.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- **Cascade deprecation note** — `.windsurf/hooks.json` (Cascade-scoped) marked deprecated: Cascade is available only through 2026-07-01; migration target is the Devin CLI lifecycle-hooks surface (tracked in registry status_note).
|
|
35
|
+
- **Cursor registry fix** — removed phantom `.cursor/rules/*.md` path (plain `.md` files are ignored by Cursor's rules system); fixed the stale claim in `generate_cursor_mdc.py` docstring.
|
|
36
|
+
- **Augment registry fix** — `.augment/guidelines.md` replaced with documented `.augment-guidelines` + `~/.augment/user-guidelines.md`; `our_generators` synced to all 6 augment generators.
|
|
37
|
+
- **Maintenance SOP** — added `claude --safe-mode` (v2.1.169) isolation step to the rule-enforcement troubleshooting flow.
|
|
38
|
+
- Doctor snapshot refreshed (Claude Code 2.1.170, Codex CLI 0.138.0); class-C items recorded as not adopted (`fallbackModel`, Copilot `excludeAgent`); opencode v1.16.0 experimental v2 skill registry tracked as a watch item.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
10
42
|
## v4.6.0 - Editor ecosystem sync + Codex rules in AGENTS.md (2026-06-05)
|
|
11
43
|
|
|
12
44
|
Minor release. Syncs the editor registry with current upstream reality (Windsurf→Devin rebrand, Roo Code archive, Gemini CLI sunset, moved docs hosts) and fixes several generators that wrote to paths their editors never read. Headline: Codex now actually receives the universal coding rules.
|
package/README.md
CHANGED
|
@@ -6,17 +6,16 @@
|
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](app/skills/)
|
|
8
8
|
[](app/agents/)
|
|
9
|
-
[](tests/)
|
|
10
10
|
|
|
11
|
-
## What's New in v4.
|
|
11
|
+
## What's New in v4.8.0
|
|
12
12
|
|
|
13
|
-
v4.
|
|
13
|
+
v4.8.0 migrates the deprecated Windsurf Cascade hooks onto the Devin CLI surface before Cascade sunsets on 2026-07-01.
|
|
14
14
|
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
-
|
|
19
|
-
- **Registry sync**: Windsurf → Devin Desktop, Roo Code archived, Antigravity `.agents/` plural default, Gemini CLI free/paid sunset (2026-06-18), corrected docs URLs across the board.
|
|
15
|
+
- **Devin CLI hooks**: new `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`) with matchers on Devin tool names (`read`/`edit`/`exec`/`mcp__*`), reusing the existing toolkit hook scripts.
|
|
16
|
+
- **Cascade deprecation**: `.windsurf/hooks.json` is Cascade-scoped and dies 2026-07-01 with no Devin fallback; both generators run during the transition, the Cascade one drops in the first release after the sunset.
|
|
17
|
+
- **Global hooks reach Devin for free**: Devin CLI reads `~/.claude/settings.json` hooks directly, so a global `ai-toolkit install` already covers Devin even without the project-local file.
|
|
18
|
+
- No normalizer change needed: `_hook-io.sh` already parses Devin's flat `hook_event_name`/`tool_name`/`tool_input` payload.
|
|
20
19
|
|
|
21
20
|
See [CHANGELOG.md](CHANGELOG.md) for full history.
|
|
22
21
|
|
|
@@ -103,14 +102,14 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
|
|
|
103
102
|
|----------|-------------|:-----:|-------|
|
|
104
103
|
| Claude Code | `~/.claude/` | ✅ | global |
|
|
105
104
|
| Cursor | `.cursor/rules/*.mdc` + `.cursor/mcp.json` + `.cursor/skills/*` | ✅ | project (`~/.cursor/mcp.json` for MCP only) |
|
|
106
|
-
| Windsurf | `~/.codeium/.../global_rules.md` + `~/.codeium/windsurf/skills/*` + `.windsurf/rules/*.md` | ✅ | global + project |
|
|
105
|
+
| Windsurf (Devin Desktop) | `~/.codeium/.../global_rules.md` + `~/.codeium/windsurf/skills/*` + `.devin/rules/*.md` + `.windsurf/rules/*.md` (legacy) | ✅ | global + project |
|
|
107
106
|
| Gemini CLI | `~/.gemini/GEMINI.md` | ✅ | global |
|
|
108
107
|
| GitHub Copilot | `.github/copilot-instructions.md` | — | project |
|
|
109
108
|
| Cline | `~/Documents/Cline/Rules/*.md` + `~/.cline/skills/*` + `.clinerules/*.md` | — | global + project |
|
|
110
109
|
| Roo Code | `~/.roo/rules/*.md` + `.roomodes` + `.roo/rules/*.md` | — | global rules + project |
|
|
111
110
|
| Aider | `~/.aider.conf.yml` + `.aider.conf.yml` + `CONVENTIONS.md` | — | global + project |
|
|
112
111
|
| Augment | `~/.augment/rules/*.md` + `.augment/rules/ai-toolkit-*.md` | ✅ | global + project |
|
|
113
|
-
| Google Antigravity | `.agents/rules/*.md` + `.agents/workflows/*.md` | — | project |
|
|
112
|
+
| Google Antigravity | `.agents/rules/*.md` + `.agents/workflows/*.md` + skill pointer in `.agent/skills/*` (IDE) and `.agents/skills/*` (CLI) | — | project |
|
|
114
113
|
| Codex CLI | `AGENTS.md` (coding rules inlined) + `.agents/skills/*` + `.codex/hooks.json` | ✅ | project + global plugin |
|
|
115
114
|
| opencode | `AGENTS.md` + `.opencode/{agents,commands,plugins}/*` + `opencode.json` | ✅ | project + global (`~/.config/opencode/`) |
|
|
116
115
|
|
|
@@ -149,7 +148,7 @@ ai-toolkit/
|
|
|
149
148
|
│ └── ARCHITECTURE.md # Full system design
|
|
150
149
|
├── kb/ # Reference docs, procedures, plans
|
|
151
150
|
├── scripts/ # Validation, install, evaluation scripts
|
|
152
|
-
├── tests/ # Bats test suite (
|
|
151
|
+
├── tests/ # Bats test suite (1196 tests)
|
|
153
152
|
└── CHANGELOG.md
|
|
154
153
|
```
|
|
155
154
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-toolkit",
|
|
3
3
|
"description": "Professional-grade Claude Code toolkit with persona presets, skill security auditor, expanded lifecycle hooks, experimental opt-in plugin packs, benchmark harvesting, and multi-tool support.",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.8.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SoftSpark",
|
|
7
7
|
"url": "https://github.com/softspark"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"last_run": "2026-06-
|
|
2
|
+
"last_run": "2026-06-09T22:04:06Z",
|
|
3
3
|
"schema_version": 1,
|
|
4
4
|
"tools": {
|
|
5
5
|
"aider": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"augment": {
|
|
27
|
-
"docs_hash": "
|
|
27
|
+
"docs_hash": "f4c5995e8333a4d5",
|
|
28
28
|
"headings": [
|
|
29
29
|
"Admin",
|
|
30
30
|
"Auggie CLI",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"Auggie CLI": true,
|
|
52
52
|
"MCP": true,
|
|
53
53
|
"Next Edit": false,
|
|
54
|
+
"Notification": true,
|
|
54
55
|
"PostToolUse": false,
|
|
55
56
|
"PreToolUse": false,
|
|
56
57
|
"SKILL.md": false,
|
|
@@ -65,7 +66,7 @@
|
|
|
65
66
|
}
|
|
66
67
|
},
|
|
67
68
|
"claude-code": {
|
|
68
|
-
"docs_hash": "
|
|
69
|
+
"docs_hash": "e6f6b4d9d4057cb0",
|
|
69
70
|
"headings": [
|
|
70
71
|
"Core concepts",
|
|
71
72
|
"Documentation Index",
|
|
@@ -114,16 +115,17 @@
|
|
|
114
115
|
"WorktreeRemove": false,
|
|
115
116
|
"hook handler: agent": false,
|
|
116
117
|
"hook handler: command": false,
|
|
118
|
+
"hook handler: http": false,
|
|
117
119
|
"hook handler: mcp_tool": false,
|
|
118
120
|
"hook handler: prompt": false,
|
|
119
121
|
"output style": true,
|
|
120
122
|
"slash command": true,
|
|
121
123
|
"sub-agent": true
|
|
122
124
|
},
|
|
123
|
-
"version": "2.1.
|
|
125
|
+
"version": "2.1.170 (Claude Code)"
|
|
124
126
|
},
|
|
125
127
|
"cline": {
|
|
126
|
-
"docs_hash": "
|
|
128
|
+
"docs_hash": "806fa530c90e227d",
|
|
127
129
|
"headings": [
|
|
128
130
|
"API Reference",
|
|
129
131
|
"Best Practices",
|
|
@@ -151,6 +153,7 @@
|
|
|
151
153
|
"\u200bWhat is Cline?"
|
|
152
154
|
],
|
|
153
155
|
"markers": {
|
|
156
|
+
"AGENTS.md": false,
|
|
154
157
|
"Act Mode": true,
|
|
155
158
|
"MCP": true,
|
|
156
159
|
"Plan Mode": false,
|
|
@@ -158,13 +161,14 @@
|
|
|
158
161
|
"conditional rules": false,
|
|
159
162
|
"custom modes": false,
|
|
160
163
|
"hooks": true,
|
|
164
|
+
"plugins": true,
|
|
161
165
|
"skills": true,
|
|
162
166
|
"subagents": true,
|
|
163
167
|
"workflows": true
|
|
164
168
|
}
|
|
165
169
|
},
|
|
166
170
|
"codex-cli": {
|
|
167
|
-
"docs_hash": "
|
|
171
|
+
"docs_hash": "1b4a56a8e918d721",
|
|
168
172
|
"headings": [
|
|
169
173
|
"API",
|
|
170
174
|
"API Reference",
|
|
@@ -231,10 +235,10 @@
|
|
|
231
235
|
"mcp_servers": false,
|
|
232
236
|
"sandbox": true
|
|
233
237
|
},
|
|
234
|
-
"version": "codex-cli 0.
|
|
238
|
+
"version": "codex-cli 0.138.0"
|
|
235
239
|
},
|
|
236
240
|
"cursor": {
|
|
237
|
-
"docs_hash": "
|
|
241
|
+
"docs_hash": "b68e4adf6e21f543",
|
|
238
242
|
"headings": [],
|
|
239
243
|
"markers": {
|
|
240
244
|
".cursor/rules": false,
|
|
@@ -250,7 +254,7 @@
|
|
|
250
254
|
}
|
|
251
255
|
},
|
|
252
256
|
"gemini-cli": {
|
|
253
|
-
"docs_hash": "
|
|
257
|
+
"docs_hash": "a0e9a213229063c8",
|
|
254
258
|
"headings": [
|
|
255
259
|
"Breadcrumbs",
|
|
256
260
|
"Directory actions",
|
|
@@ -271,11 +275,15 @@
|
|
|
271
275
|
],
|
|
272
276
|
"markers": {
|
|
273
277
|
"AfterAgent": false,
|
|
278
|
+
"AfterModel": false,
|
|
274
279
|
"AfterTool": false,
|
|
275
280
|
"BeforeAgent": false,
|
|
276
281
|
"BeforeModel": false,
|
|
277
282
|
"BeforeTool": false,
|
|
283
|
+
"BeforeToolSelection": false,
|
|
278
284
|
"GEMINI.md": true,
|
|
285
|
+
"Notification": true,
|
|
286
|
+
"PreCompress": false,
|
|
279
287
|
"SKILL.md": false,
|
|
280
288
|
"SessionEnd": false,
|
|
281
289
|
"SessionStart": false,
|
|
@@ -288,7 +296,7 @@
|
|
|
288
296
|
}
|
|
289
297
|
},
|
|
290
298
|
"github-copilot": {
|
|
291
|
-
"docs_hash": "
|
|
299
|
+
"docs_hash": "ead818d74ead1f2e",
|
|
292
300
|
"headings": [
|
|
293
301
|
"About Copilot auto model selection",
|
|
294
302
|
"About Copilot automations",
|
|
@@ -331,13 +339,14 @@
|
|
|
331
339
|
"agent manager": false,
|
|
332
340
|
"agent permissions": false,
|
|
333
341
|
"artifacts": false,
|
|
342
|
+
"hooks": false,
|
|
334
343
|
"rules": false,
|
|
335
344
|
"skills": false,
|
|
336
345
|
"workflows": false
|
|
337
346
|
}
|
|
338
347
|
},
|
|
339
348
|
"opencode": {
|
|
340
|
-
"docs_hash": "
|
|
349
|
+
"docs_hash": "f546c8b741790cb8",
|
|
341
350
|
"headings": [
|
|
342
351
|
"Add features",
|
|
343
352
|
"Ask questions",
|
|
@@ -397,7 +406,7 @@
|
|
|
397
406
|
}
|
|
398
407
|
},
|
|
399
408
|
"windsurf": {
|
|
400
|
-
"docs_hash": "
|
|
409
|
+
"docs_hash": "91034c064d9f8290",
|
|
401
410
|
"headings": [
|
|
402
411
|
"Advanced",
|
|
403
412
|
"Agent Command Center",
|
|
@@ -3,9 +3,9 @@ title: "SOP: Claude Toolkit Maintenance"
|
|
|
3
3
|
category: procedures
|
|
4
4
|
service: ai-toolkit
|
|
5
5
|
tags: [sop, maintenance, agents, skills, install]
|
|
6
|
-
version: "3.0
|
|
6
|
+
version: "3.1.0"
|
|
7
7
|
created: "2026-03-23"
|
|
8
|
-
last_updated: "2026-
|
|
8
|
+
last_updated: "2026-06-10"
|
|
9
9
|
description: "Standard operating procedures for installing, maintaining, and evolving the ai-toolkit."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -211,18 +211,19 @@ Use this when Claude appears to ignore `CLAUDE.md`, `.claude/rules/*.md`, output
|
|
|
211
211
|
- `https://code.claude.com/docs/en/settings`
|
|
212
212
|
- `https://code.claude.com/docs/en/output-styles`
|
|
213
213
|
- `https://code.claude.com/docs/en/hooks`
|
|
214
|
-
2. **
|
|
215
|
-
3. **Verify the
|
|
216
|
-
4. **
|
|
217
|
-
5. **
|
|
214
|
+
2. **Isolate with safe mode (v2.1.169+).** Start a session with `claude --safe-mode` (or `CLAUDE_CODE_SAFE_MODE=1`) — it disables hooks, skills, agents, and CLAUDE.md. If the problem persists in safe mode, the cause is upstream, not toolkit customization; if it disappears, bisect toolkit components with `ai-toolkit update --only <component>`.
|
|
215
|
+
3. **Verify instruction loading.** Run `/memory` in Claude Code and confirm the expected `CLAUDE.md`, `CLAUDE.local.md`, and `.claude/rules/*.md` files are listed. Remember that Claude Code reads `CLAUDE.md`, not `AGENTS.md`, unless `CLAUDE.md` imports it.
|
|
216
|
+
4. **Verify the active output style.** Check `.claude/settings.local.json` or `/config`. Output style changes apply after `/clear` or a new session.
|
|
217
|
+
5. **Inspect installed hooks.** Ensure `~/.claude/settings.json` contains the ai-toolkit `UserPromptSubmit` and `Stop` entries. The governance hook must run with `AI_TOOLKIT_HOOK_QUIET=1 AI_TOOLKIT_HOOK_FORMAT=json` so it injects `additionalContext` without noisy transcript output.
|
|
218
|
+
6. **Reproduce the hook path directly.**
|
|
218
219
|
```bash
|
|
219
220
|
printf '{"session_id":"debug","prompt":"debug this technical rule issue"}' \
|
|
220
221
|
| AI_TOOLKIT_SEARCH_FIRST=strict AI_TOOLKIT_HOOK_QUIET=1 AI_TOOLKIT_HOOK_FORMAT=json \
|
|
221
222
|
~/.softspark/ai-toolkit/hooks/user-prompt-submit.sh
|
|
222
223
|
```
|
|
223
224
|
The output must be valid JSON with `hookSpecificOutput.additionalContext`.
|
|
224
|
-
|
|
225
|
-
|
|
225
|
+
7. **Check corrective enforcement.** If the assistant still skips required research, `stop-search-check.sh` should block Stop with the search-first message. If it does not, inspect `~/.softspark/ai-toolkit/state/search-required-*.flag` and the Codex/Claude transcript logs.
|
|
226
|
+
8. **Repair drift.** Run:
|
|
226
227
|
```bash
|
|
227
228
|
ai-toolkit update --only hooks
|
|
228
229
|
python3 scripts/ecosystem_doctor.py --tool claude-code --format text
|
|
@@ -80,7 +80,7 @@ python3 scripts/audit_skills.py --ci
|
|
|
80
80
|
npm test
|
|
81
81
|
|
|
82
82
|
# 5. Stage and commit
|
|
83
|
-
git add AGENTS.md
|
|
83
|
+
git add AGENTS.md llms.txt llms-full.txt
|
|
84
84
|
git add -p # stage your other changes
|
|
85
85
|
git commit -m "feat: your change description"
|
|
86
86
|
```
|
|
@@ -3,9 +3,9 @@ title: "AI Toolkit - Architecture Overview"
|
|
|
3
3
|
category: reference
|
|
4
4
|
service: ai-toolkit
|
|
5
5
|
tags: [architecture, overview, design, structure]
|
|
6
|
-
version: "1.4.
|
|
6
|
+
version: "1.4.6"
|
|
7
7
|
created: "2026-03-23"
|
|
8
|
-
last_updated: "2026-
|
|
8
|
+
last_updated: "2026-06-10"
|
|
9
9
|
description: "Architecture of ai-toolkit: directory layout, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -109,7 +109,7 @@ Machine (global) Project (local)
|
|
|
109
109
|
- `--editors cursor,aider` — install only selected editors
|
|
110
110
|
- (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
|
|
111
111
|
|
|
112
|
-
Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.windsurf/rules/*.md
|
|
112
|
+
Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit since the Devin Desktop rebrand), `.clinerules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agents/rules/*.md`, `CONVENTIONS.md`). Full-profile installs also emit native skill pointer catalogues for Cursor, Windsurf, and Cline. Codex local install additionally generates `AGENTS.md` (universal coding rules inlined — Codex reads only AGENTS.md, not `.agents/rules/`), `.agents/skills/*`, and `.codex/hooks.json`. Hooks are global-only — not merged into project settings except for editor-native local hook files such as Codex `.codex/hooks.json`. Experimental plugin packs can also layer a global Codex target in `HOME` (`~/AGENTS.md`, `~/.agents/`, `~/.codex/hooks.json`) when installed with `ai-toolkit plugin install --editor codex`.
|
|
113
113
|
|
|
114
114
|
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`).
|
|
115
115
|
|
|
@@ -133,7 +133,7 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
|
|
|
133
133
|
| `cursor-rules` | `./` | Generates `.cursorrules` (legacy) |
|
|
134
134
|
| `cursor-mdc` | `./` | Generates `.cursor/rules/*.mdc` (recommended) |
|
|
135
135
|
| `windsurf-rules` | `./` | Generates `.windsurfrules` (legacy) |
|
|
136
|
-
| `windsurf-dir-rules` | `./` | Generates `.windsurf/rules/*.md` |
|
|
136
|
+
| `windsurf-dir-rules` | `./` | Generates `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit) |
|
|
137
137
|
| `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
|
|
138
138
|
| `gemini-md` | `./` | Generates `GEMINI.md` |
|
|
139
139
|
| `cline-rules` | `./` | Generates `.clinerules` (legacy) |
|
|
@@ -3,9 +3,9 @@ title: "Hooks Catalog"
|
|
|
3
3
|
category: reference
|
|
4
4
|
service: ai-toolkit
|
|
5
5
|
tags: [hooks, quality, safety, enforcement, settings.json]
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.6.0"
|
|
7
7
|
created: "2026-03-27"
|
|
8
|
-
last_updated: "2026-
|
|
8
|
+
last_updated: "2026-06-10"
|
|
9
9
|
description: "Complete reference of all ai-toolkit hooks: events, scripts, installation, and runtime behavior."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -571,6 +571,31 @@ commands explicitly silent, and Codex-generated hooks plus Claude's bundled
|
|
|
571
571
|
- `_source: "ai-toolkit"` tag on every entry — allows idempotent merge/strip
|
|
572
572
|
- Hooks are **global only** — `--local` does not install hooks into project settings
|
|
573
573
|
|
|
574
|
+
## Per-Editor Native Hooks (profile=full)
|
|
575
|
+
|
|
576
|
+
Beyond the global Claude Code hooks above, full-profile project installs emit native hook files for editors that support their own hook lifecycle. All reuse the same `~/.softspark/ai-toolkit/hooks/*.sh` scripts and the `_source: ai-toolkit` merge tag.
|
|
577
|
+
|
|
578
|
+
| Editor | File | Generator | Format |
|
|
579
|
+
|--------|------|-----------|--------|
|
|
580
|
+
| Cursor | `.cursor/hooks.json` | `generate_cursor_hooks.py` | Cursor hooks schema |
|
|
581
|
+
| Windsurf (Cascade) | `.windsurf/hooks.json` | `generate_windsurf_hooks.py` | Cascade `agent_action_name`/`tool_info` — **deprecated, dies 2026-07-01** |
|
|
582
|
+
| Devin CLI | `.devin/hooks.v1.json` | `generate_devin_hooks.py` | Claude-compatible (the replacement for Cascade) |
|
|
583
|
+
| Gemini CLI | `.gemini/settings.json` (hooks block) | `generate_gemini_hooks.py` | Gemini `BeforeTool`/`AfterTool` events |
|
|
584
|
+
| Augment | `.augment/settings.json` (hooks block) | `generate_augment_hooks.py` | Claude-style events |
|
|
585
|
+
|
|
586
|
+
### Devin CLI hooks (`.devin/hooks.v1.json`)
|
|
587
|
+
|
|
588
|
+
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.
|
|
589
|
+
|
|
590
|
+
Devin CLI uses a **Claude-compatible** hook format (docs.devin.ai/cli/extensibility/hooks). Key facts driving the generator:
|
|
591
|
+
|
|
592
|
+
- **Standalone file shape:** in `.devin/hooks.v1.json` the entire file IS the hooks object — no top-level `"hooks"` wrapper key (unlike `.claude/settings.json`).
|
|
593
|
+
- **Events:** Claude-style PascalCase — `PreToolUse`, `PostToolUse`, `UserPromptSubmit`, `Stop`, `SessionStart`. `post_setup_worktree` has no Devin equivalent (`session-context.sh` moves to `SessionStart`); `post_cascade_response` maps to `Stop` (which carries no response text on stdin).
|
|
594
|
+
- **Matchers:** regex against the Devin **tool name** (`read`, `edit`, `exec`, `grep`, `glob`, `mcp__<server>__<tool>`) — NOT Claude's `Bash`/`Edit`, so the shared guards reliably fire.
|
|
595
|
+
- **Block contract:** the guard scripts emit `{"decision":"block","reason":...}` on stdout (plain mode) AND exit 2 — Devin honors both. Hooks run **without** `AI_TOOLKIT_HOOK_FORMAT=json` because Devin expects the flat `{"decision","reason"}` shape, not Claude's `hookSpecificOutput` envelope.
|
|
596
|
+
- **Stdin payload:** flat `{ "hook_event_name", "tool_name", "tool_input" }` — already handled by `_hook-io.sh` via its `.tool_name` / `.tool_input.*` branches, so no normalizer change was needed.
|
|
597
|
+
- **Global bonus:** Devin CLI reads `~/.claude/settings.json` + `.claude/settings.json` hooks directly (`read_config_from.claude` default on, since CLI `2026.3.20-2`), so a global `ai-toolkit install` already covers Devin even without the project-local file.
|
|
598
|
+
|
|
574
599
|
## Troubleshooting
|
|
575
600
|
|
|
576
601
|
**Hooks not loading:**
|
|
@@ -3,9 +3,9 @@ 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.6.0"
|
|
7
7
|
created: "2026-04-23"
|
|
8
|
-
last_updated: "2026-06-
|
|
8
|
+
last_updated: "2026-06-10"
|
|
9
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."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -28,13 +28,14 @@ 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.
|
|
32
|
-
| Config paths | `~/.claude/settings.json`, `.claude/settings.local.json`, `CLAUDE.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
|
|
31
|
+
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.170) |
|
|
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` |
|
|
35
|
-
| Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool` |
|
|
35
|
+
| Tracked handler types | `command`, `prompt`, `agent`, `mcp_tool`, `http` (POST event JSON to allowlisted URLs via `allowedHttpHookUrls`) |
|
|
36
36
|
| Other capabilities | slash commands, MCP server/client, sub-agent, output style, `SKILL.md` (≥500 lines warn) |
|
|
37
37
|
| Version probe | `claude --version` |
|
|
38
|
+
| Notes | v2.1.169 added `disableBundledSkills` setting + `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` env var (hides bundled skills/built-in slash commands from the model; toolkit skills in `.claude/skills/` are unaffected — useful when toolkit skills overlap built-ins) and `claude --safe-mode` / `CLAUDE_CODE_SAFE_MODE` (starts with hooks, skills, agents, and CLAUDE.md disabled — first isolation step when debugging toolkit rule enforcement). `fallbackModel` settings key (v2.1.166) noted as not-adopted (class C, no toolkit surface writes model settings). |
|
|
38
39
|
|
|
39
40
|
---
|
|
40
41
|
|
|
@@ -48,8 +49,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
48
49
|
| Docs | https://cursor.com/docs |
|
|
49
50
|
| Changelog | https://cursor.com/changelog |
|
|
50
51
|
| Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
|
|
51
|
-
| Config paths | `.cursorrules`, `.cursor/rules/*.mdc
|
|
52
|
-
| Compat read paths | `.agents/skills/`, `~/.agents/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.codex/skills/`, `~/.codex/skills/` |
|
|
52
|
+
| Config paths | `.cursorrules`, `.cursor/rules/*.mdc` (plain `.md` files in `.cursor/rules/` are **ignored** by the rules system), `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `~/.cursor/agents/*.md`, `.cursor/hooks.json` |
|
|
53
|
+
| Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.codex/skills/`, `~/.codex/skills/`; subagents: `.claude/agents/`, `~/.claude/agents/`, `.codex/agents/`, `~/.codex/agents/` (`.cursor/` wins on name conflicts) |
|
|
53
54
|
| Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full), `scripts/generate_cursor_agents.py` (profile=full), `scripts/generate_cursor_skills.py` (profile=full pointer) |
|
|
54
55
|
| Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
|
|
55
56
|
|
|
@@ -61,11 +62,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
61
62
|
| Docs | https://docs.devin.ai/desktop (Windsurf rebranded to Devin Desktop ~2026-06-02; docs.windsurf.com resolves here) |
|
|
62
63
|
| Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
|
|
63
64
|
| 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/`) |
|
|
64
|
-
| Config paths | `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `.windsurf/skills/*/SKILL.md`,
|
|
65
|
-
| Compat read paths | `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills
|
|
66
|
-
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py
|
|
65
|
+
| 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`. |
|
|
66
|
+
| 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.** |
|
|
67
|
+
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped, deprecated, drop after 2026-07-01**), `scripts/generate_devin_hooks.py` (profile=full; `.devin/hooks.v1.json`, Claude-format Devin CLI hooks), `scripts/generate_windsurf_skills.py` (global + profile=full pointer, dual-emits) |
|
|
67
68
|
| Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
|
|
68
69
|
| Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
|
|
70
|
+
| 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. |
|
|
71
|
+
| 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. |
|
|
69
72
|
|
|
70
73
|
### GitHub Copilot
|
|
71
74
|
|
|
@@ -86,11 +89,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
86
89
|
| ID | `gemini-cli` |
|
|
87
90
|
| Docs | https://github.com/google-gemini/gemini-cli/tree/main/docs |
|
|
88
91
|
| Release notes | https://github.com/google-gemini/gemini-cli/releases |
|
|
89
|
-
| Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `.gemini/extensions/gemini-extension.json` |
|
|
92
|
+
| Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `~/.gemini/skills/*/SKILL.md`, `~/.agents/skills/*/SKILL.md` (the `.agents/skills` alias wins over `.gemini/skills` within the same tier), `.gemini/extensions/gemini-extension.json` |
|
|
90
93
|
| Our generators | `scripts/generate_gemini.py`, `scripts/generate_gemini_hooks.py` (profile>=standard), `scripts/generate_gemini_commands.py` (profile=full), `scripts/generate_gemini_skills.py` (profile=full) |
|
|
91
|
-
| Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `SessionStart`, `SessionEnd`, `SKILL.md`, `activate_skill`, custom commands, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent
|
|
94
|
+
| Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeToolSelection`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `AfterModel`, `Notification`, `PreCompress`, `SessionStart`, `SessionEnd`, `SKILL.md`, `activate_skill`, custom commands, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
|
|
92
95
|
| Version probe | `gemini --version` |
|
|
93
|
-
| Latest upstream | v0.45.
|
|
96
|
+
| Latest upstream | v0.45.2 (2026-06-05). NOTE: Gemini CLI drops free/paid tiers 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist keeps Gemini CLI. |
|
|
94
97
|
|
|
95
98
|
### Cline
|
|
96
99
|
|
|
@@ -99,9 +102,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
99
102
|
| ID | `cline` |
|
|
100
103
|
| Docs | https://docs.cline.bot |
|
|
101
104
|
| Release notes | https://github.com/cline/cline/releases |
|
|
102
|
-
| Config paths | `.clinerules/*.md`, `.clinerules/workflows/*.md`, `.clinerules/skills/*/SKILL.md`, `.clinerules/hooks/` (project),
|
|
105
|
+
| Config paths | **Extension:** `.clinerules/*.md`, `.clinerules/workflows/*.md`, `.clinerules/skills/*/SKILL.md`, `.clinerules/hooks/` (project), `~/Documents/Cline/Rules/Hooks/` (global hooks), `~/.cline/data/settings/cline_mcp_settings.json`. **CLI/SDK unified layout** (docs.cline.bot/getting-started/config; `.clinerules` is deprecated there): `.cline/{rules,hooks,plugins,skills}/`, `~/.cline/{rules,hooks,plugins,skills}/`, `CLINE_HOOKS_DIR` env var. **Cross-tool:** `AGENTS.md` + `~/.agents/AGENTS.md` (first-class rules sources), `.claude/skills/*/SKILL.md` (native discovery, always-on since v3.57.0). |
|
|
103
106
|
| Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.py`, `scripts/generate_cline_skills.py` |
|
|
104
|
-
| Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules |
|
|
107
|
+
| Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules, `AGENTS.md`, plugins |
|
|
108
|
+
| Plugins | `.cline/plugins/` + `~/.cline/plugins/` (JS/TS), `package.json` `cline.plugins` manifest; plugins can bundle skills. Not adopted as a distribution channel yet — candidate for shipping toolkit skills to CLI/SDK users. |
|
|
105
109
|
| Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules since 2026-04. Project rules still use `.clinerules/` for compatibility; global rules are written to `~/Documents/Cline/Rules/` (the documented Cline global rules dir — `~/.cline/rules/` is not a Cline-read path). Skills are emitted as a pointer catalogue in `profile=full` and global installs. |
|
|
106
110
|
| Global install | `ai-toolkit install --editors cline` writes documented global rules under `~/Documents/Cline/Rules/` and a skill pointer under `~/.cline/skills/`; MCP remains managed by `ai-toolkit mcp install --editor cline`. |
|
|
107
111
|
|
|
@@ -138,9 +142,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
138
142
|
| ID | `augment` |
|
|
139
143
|
| Docs | https://docs.augmentcode.com |
|
|
140
144
|
| Changelog | https://www.augmentcode.com/changelog |
|
|
141
|
-
| Config paths | `.augment/rules/*.md`, `.augment
|
|
145
|
+
| Config paths | `.augment/rules/*.md`, `.augment-guidelines` (workspace root, legacy single-file), `~/.augment/user-guidelines.md`, `.augment/agents/*.md`, `.augment/commands/*.md`, `.augment/skills/*/SKILL.md`, `.augment/settings.json`, `.augment/settings.local.json`, `~/.augment/rules/*.md`, `~/.augment/settings.json`, `/etc/augment/settings.json`. Auggie CLI also discovers skills/commands from `.claude/` and `.agents/` (`.augment/` wins on precedence). |
|
|
142
146
|
| Our generators | `scripts/generate_augment.py`, `scripts/generate_augment_rules.py`, `scripts/generate_augment_agents.py` (profile=full), `scripts/generate_augment_commands.py` (profile=full), `scripts/generate_augment_hooks.py` (profile=full, HOME-scoped), `scripts/generate_augment_skills.py` (profile=full) |
|
|
143
|
-
| Tracked capabilities | `.augment`, Agent mode, Next Edit, MCP, context engine, Auggie CLI, `always_apply`, `agent_requested`, subagents, custom commands, `SKILL.md`, `PreToolUse`, `PostToolUse`, `SessionStart`, `SessionEnd`, `Stop`, ACP Mode |
|
|
147
|
+
| Tracked capabilities | `.augment`, Agent mode, Next Edit, MCP, context engine, Auggie CLI, `always_apply`, `agent_requested`, subagents, custom commands, `SKILL.md`, `PreToolUse`, `PostToolUse`, `SessionStart`, `SessionEnd`, `Stop`, `Notification`, ACP Mode |
|
|
144
148
|
| SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
|
|
145
149
|
|
|
146
150
|
### Google Antigravity
|
|
@@ -150,19 +154,20 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
150
154
|
| ID | `google-antigravity` |
|
|
151
155
|
| Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
|
|
152
156
|
| Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
|
|
153
|
-
| Config paths | `.agents/rules/*.md`, `.agents/workflows/*.md` (plural is the Antigravity 2.0 default; singular `.agent/rules`, `.agent/workflows` still read as fallback), `.agent/skills/*/SKILL.md
|
|
154
|
-
| Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer) |
|
|
155
|
-
| Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, `AGENTS.md`, `GEMINI.md`, agent permissions |
|
|
156
|
-
|
|
|
157
|
+
| Config paths | `.agents/rules/*.md`, `.agents/workflows/*.md` (plural is the Antigravity 2.0 default; singular `.agent/rules`, `.agent/workflows` still read as fallback), `.agent/skills/*/SKILL.md` (IDE), `.agents/skills/*/SKILL.md` (CLI), `.agents/hooks.json` (CLI hooks), `.agents/mcp_config.json` (CLI MCP), `AGENTS.md`, `GEMINI.md` |
|
|
158
|
+
| Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`) |
|
|
159
|
+
| Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions |
|
|
160
|
+
| CLI notes | Antigravity CLI (GA 2026-05-19): hooks in `.agents/hooks.json` use Claude-style event names (`PreToolUse`, not Gemini's `BeforeTool`) with a JSON stdin/stdout decision contract; MCP config `.agents/mcp_config.json` requires `serverUrl` (legacy `url`/`httpUrl` fail silently). Global MCP config path is inconsistently reported across sources (`~/.gemini/antigravity-cli/` vs `~/.gemini/config/`) — only the workspace path is registered until verified via `agy inspect`. |
|
|
161
|
+
| Doc access note | Docs are JS-SPA — verify via `main-*.js` bundle strings or community skill repos. `WebFetch` returns an empty shell. The sitemap.xml is stale (omits the `cli-*` doc pages), so sitemap-based monitoring misses CLI doc additions. |
|
|
157
162
|
|
|
158
163
|
### Codex CLI
|
|
159
164
|
|
|
160
165
|
| Field | Value |
|
|
161
166
|
|-------|-------|
|
|
162
167
|
| ID | `codex-cli` |
|
|
163
|
-
| Docs | https://developers.openai.com/codex (
|
|
168
|
+
| Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`; latest stable codex-cli 0.138.0, 2026-06) |
|
|
164
169
|
| Release notes | https://github.com/openai/codex/releases |
|
|
165
|
-
| Config paths | `AGENTS.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/config.toml` |
|
|
170
|
+
| Config paths | `AGENTS.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml` |
|
|
166
171
|
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
|
|
167
172
|
| Rules delivery | Universal coding rules are inlined into `AGENTS.md` (Codex reads instructions only from AGENTS.md, not `.agents/rules/`); language rules ship as `<lang>-rules` skills under `.agents/skills/`. |
|
|
168
173
|
| Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire all 10 to shared toolkit hook scripts, mirroring the Claude Code mapping in `app/hooks.json`. |
|
|
@@ -176,12 +181,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
176
181
|
|-------|-------|
|
|
177
182
|
| ID | `opencode` |
|
|
178
183
|
| Docs | https://opencode.ai/docs |
|
|
179
|
-
| Release notes | https://github.com/sst/opencode/releases |
|
|
180
|
-
| Config paths | `opencode.json`, `.opencode/agents/*.md`, `.opencode/commands/*.md`, `.opencode/plugins/*`, `.opencode/skills/*/SKILL.md` (v1.14+), `AGENTS.md
|
|
184
|
+
| Release notes | https://github.com/sst/opencode/releases (redirects to anomalyco/opencode) |
|
|
185
|
+
| Config paths | `opencode.json`, `.opencode/agents/*.md`, `.opencode/commands/*.md`, `.opencode/plugins/*`, `.opencode/skills/*/SKILL.md` (v1.14+), `AGENTS.md`; skill fallback discovery: `.claude/skills/`, `.agents/skills/`, `~/.config/opencode/skills/`, `~/.claude/skills/`, `~/.agents/skills/` |
|
|
181
186
|
| Our generators | `scripts/generate_opencode.py`, `scripts/generate_opencode_agents.py`, `scripts/generate_opencode_commands.py`, `scripts/generate_opencode_json.py`, `scripts/generate_opencode_plugin.py` |
|
|
182
187
|
| Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
|
|
183
188
|
| Other capabilities | `opencode.json` config, primary + subagent modes, `@`-mention subagents, `/`-invocation commands, MCP (local + remote), plugin hooks in JS/TS, native `SKILL.md` discovery with Claude-compatible fallback, `permission.skill.*` matrix |
|
|
184
189
|
| Version probe | `opencode --version` |
|
|
190
|
+
| Watch item | v1.16.0 (2026-06-05) ships an experimental v2 skill registry (flat-file skills, `slash` frontmatter key) — undocumented as of 2026-06-09; re-check next sync before touching `generate_opencode*.py`. |
|
|
185
191
|
|
|
186
192
|
---
|
|
187
193
|
|