@softspark/ai-toolkit 4.10.1 → 4.12.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 +38 -0
- package/README.md +12 -13
- package/app/.claude-plugin/plugin.json +1 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +18 -12
- package/bin/ai-toolkit.js +1 -1
- package/kb/procedures/maintenance-sop.md +5 -3
- package/kb/reference/architecture-overview.md +5 -4
- package/kb/reference/codex-cli-compatibility.md +15 -10
- package/kb/reference/extension-api.md +5 -5
- package/kb/reference/global-install-model.md +31 -11
- package/kb/reference/integrations.md +16 -17
- package/kb/reference/language-rules.md +35 -14
- package/kb/reference/supported-tools-registry.md +34 -25
- package/llms-full.txt +146 -89
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/scripts/ecosystem_tools.json +17 -6
- package/scripts/generate_antigravity.py +15 -0
- package/scripts/generate_codex_hooks.py +8 -5
- package/scripts/generate_copilot.py +10 -3
- package/scripts/generate_language_rules_skills.py +4 -2
- package/scripts/inject_hook_cli.py +16 -2
- package/scripts/install.py +5 -5
- package/scripts/install_steps/ai_tools.py +205 -36
- package/scripts/install_steps/install_state.py +9 -2
- package/scripts/install_steps/markers.py +132 -14
- package/scripts/plugin.py +31 -8
- package/scripts/remove_rule.py +15 -4
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,44 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v4.12.0 — Global-first editor installs + Codex path fix (2026-07-02)
|
|
11
|
+
|
|
12
|
+
Minor release. Expands global (HOME-scoped) installs to every editor with a documented, merge-safe file surface, and fixes a Codex global-install bug where instructions landed in a file Codex never reads. Test count: 1203 → 1208.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **Codex global instructions path** — `ai-toolkit install --editors codex` and `ai-toolkit plugin install --editor codex` wrote to `~/AGENTS.md`, which Codex never loads as global instructions, so global installs delivered zero instructions. Now write `~/.codex/AGENTS.md` (the documented `$CODEX_HOME/AGENTS.md`), strip the stale `~/AGENTS.md` toolkit section on upgrade, and warn when `~/.codex/AGENTS.override.md` would mask it.
|
|
16
|
+
- **Codex plugin-pack rules** — pack rules were copied to `~/.agents/rules/`, a directory Codex never reads; now marker-injected into `~/.codex/AGENTS.md`, with legacy dead files cleaned on install/remove (`scripts/plugin.py`).
|
|
17
|
+
- **`inject-hook` Codex event parity** — `CODEX_EVENTS` propagated only 5 of the 9 events `scripts/generate_codex_hooks.py` wires; added `PermissionRequest`, `SubagentStart`, `SubagentStop`, `PreCompact`.
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
- **Global native surfaces for 7 editors** — `install_ai_tools` now threads `--profile` and installs each editor's documented HOME surfaces (gated like the local install): **Gemini** (hooks `~/.gemini/settings.json`, `~/.gemini/commands/`, skills pointer), **Augment** (`~/.augment/agents/`, `~/.augment/commands/`, hooks), **Roo/Zoo** (skills via `~/.agents/skills`), **Windsurf** (`~/.config/devin/AGENTS.md` for Devin CLI), **Cursor** (`~/.cursor/hooks.json`), **GitHub Copilot** (`~/.copilot/` instructions), **Google Antigravity** (skill pointer to `~/.gemini/config/skills` and `~/.gemini/antigravity-cli/skills`).
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- **`GLOBAL_CAPABLE_EDITORS`** — added `cursor`, `copilot`, and `antigravity` (scoped: cursor = hooks, copilot = instructions, antigravity = skills; RULES stay project-local where no mergeable global file surface exists).
|
|
24
|
+
- **`generate_copilot.py`** and **`generate_antigravity.py`** gained global layouts (`config_root=~/.copilot`; `generate_global()`).
|
|
25
|
+
|
|
26
|
+
### Ecosystem
|
|
27
|
+
- **Roo → Zoo Code** (class D) — `RooCodeInc/Roo-Code` archived (frozen v3.54.0, dead release feed); retargeted the feed to the successor `Zoo-Code-Org/Zoo-Code` and added skills/commands config paths. (class F) Global skill install via `~/.agents/skills`.
|
|
28
|
+
- **Cursor** (class F) global `~/.cursor/hooks.json`; (class D) `.cursorrules` demoted to legacy (dropped from official rules docs).
|
|
29
|
+
- **GitHub Copilot** (class F) documented `~/.copilot/` user-level surface adopted.
|
|
30
|
+
- **Google Antigravity** (class F) global skill dirs adopted; `~/.gemini/config/mcp_config.json` global MCP path resolved and recorded (adapter is backlog).
|
|
31
|
+
- **Gemini / Augment** (class F) hooks/commands/agents made global.
|
|
32
|
+
- Version refresh: Gemini v0.49.0, Codex 0.142.5, Auggie 0.31.0, Antigravity CLI 1.0.14, Claude Code 2.1.198; Devin `read_config_from` 7-key matrix. Snapshot re-baselined via `scripts/ecosystem_doctor.py --update`.
|
|
33
|
+
|
|
34
|
+
## v4.11.0 — Claude rules-space fix + editor registry parity (2026-06-30)
|
|
35
|
+
|
|
36
|
+
Minor release. Reduces Claude Code startup context pressure by moving ai-toolkit rules out of global/project `CLAUDE.md` inline blocks and into Claude Code rule files. Also finishes the editor registry sync by recording all Gemini generators in the canonical ecosystem registry. Test count: 1198 → 1203.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- **Claude Code global rules now use `~/.claude/rules/ai-toolkit-*.md`.** `ai-toolkit install/update` writes toolkit rules from `app/rules/*.md` and registered rules from `~/.softspark/ai-toolkit/rules/*.md` into Claude Code user-level rule files, keeps `~/.claude/CLAUDE.md` as a compact index, and removes legacy inline rule markers during migration. The `ai-toolkit-*` prefix is installer-managed.
|
|
40
|
+
- **Claude Code common rules now use `.claude/rules/ai-toolkit-*.md`.** `install --local` writes `ai-toolkit-coding-style.md`, `ai-toolkit-git-workflow.md`, `ai-toolkit-performance.md`, `ai-toolkit-security.md`, and `ai-toolkit-testing.md` under `.claude/rules/` with `paths: ["**/*"]` frontmatter, while `.claude/CLAUDE.md` stays a compact index. This follows Claude Code's current guidance to keep `CLAUDE.md` concise and move larger instruction sets into scoped rules.
|
|
41
|
+
- **Language rules reference updated.** `kb/reference/language-rules.md` now documents the Claude-specific split: common rules as project-local Claude rules, per-language rules as knowledge skills, and other editors still receiving native rule files from their generators.
|
|
42
|
+
- **Ecosystem registry reflects Gemini native surfaces.** `scripts/ecosystem_tools.json` now includes `generate_gemini_hooks.py`, `generate_gemini_commands.py`, and `generate_gemini_skills.py` alongside `generate_gemini.py`, matching the installer and supported-tools registry.
|
|
43
|
+
- **Ecosystem doctor baseline refreshed.** Snapshot updated after class A/C upstream documentation drift review; no additional generator contract changes were required.
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
- **Claude rules-space regression.** Global Claude installs no longer inline toolkit/registered rules into `~/.claude/CLAUDE.md`, and project-local Claude installs no longer inflate `.claude/CLAUDE.md` with the full common-rule corpus. Regression tests now assert compact CLAUDE.md indexes, generated rule files, legacy marker cleanup, and managed `.claude/rules/ai-toolkit-*.md` refresh behavior.
|
|
47
|
+
|
|
10
48
|
## v4.10.1 — Copilot AGENTS.md install + Claude KB-first rule (2026-06-23)
|
|
11
49
|
|
|
12
50
|
Patch release. Fixes two governance regressions found in the editor-update audit: Copilot installs now emit the root `AGENTS.md` surface documented in the registry, and Claude Code receives the KB-first rule in `CLAUDE.md`, which it actually reads. Test count: 1195 → 1198.
|
package/README.md
CHANGED
|
@@ -6,18 +6,17 @@
|
|
|
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.12.0
|
|
12
12
|
|
|
13
|
-
v4.
|
|
13
|
+
v4.12.0 makes global (HOME-scoped) installs first-class for every editor with a documented file surface, and fixes a Codex global-install bug.
|
|
14
14
|
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
- **
|
|
19
|
-
- **
|
|
20
|
-
- **Test count**: 1195 → 1198.
|
|
15
|
+
- **Codex global path fix**: `install --editors codex` now writes `~/.codex/AGENTS.md` (the file Codex actually reads) instead of the never-loaded `~/AGENTS.md`; upgrades strip the stale section.
|
|
16
|
+
- **Global installs for 7 editors**: Gemini (hooks/commands/skills), Augment (agents/commands/hooks), Roo/Zoo (skills), Windsurf (`~/.config/devin/AGENTS.md`), plus new global support for Cursor (`~/.cursor/hooks.json`), GitHub Copilot (`~/.copilot/`), and Antigravity (skill pointer).
|
|
17
|
+
- **Roo → Zoo Code**: retargeted the dead `RooCodeInc/Roo-Code` release feed to the active successor `Zoo-Code-Org/Zoo-Code`.
|
|
18
|
+
- **Ecosystem refresh**: Gemini v0.49.0, Codex 0.142.5, Auggie 0.31.0, Antigravity CLI 1.0.14, Claude Code 2.1.198; snapshot re-baselined.
|
|
19
|
+
- **Test count**: 1203 → 1208.
|
|
21
20
|
|
|
22
21
|
See [CHANGELOG.md](CHANGELOG.md) for full history.
|
|
23
22
|
|
|
@@ -102,7 +101,7 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
|
|
|
102
101
|
|
|
103
102
|
| Platform | Config Files | Hooks | Scope |
|
|
104
103
|
|----------|-------------|:-----:|-------|
|
|
105
|
-
| Claude Code | `~/.claude
|
|
104
|
+
| Claude Code | `~/.claude/agents`, `~/.claude/skills`, `~/.claude/rules/*.md`, `~/.claude/settings.json` | ✅ | global |
|
|
106
105
|
| Cursor | `.cursor/rules/*.mdc` + `.cursor/mcp.json` + `.cursor/skills/*` | ✅ | project (`~/.cursor/mcp.json` for MCP only) |
|
|
107
106
|
| Windsurf (Devin Desktop) | `~/.codeium/.../global_rules.md` + `~/.codeium/windsurf/skills/*` + `.devin/rules/*.md` + `.windsurf/rules/*.md` (legacy) | ✅ | global + project |
|
|
108
107
|
| Gemini CLI | `~/.gemini/GEMINI.md` | ✅ | global |
|
|
@@ -130,7 +129,7 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
|
|
|
130
129
|
| `hooks/` | 29 entries / 14 events | Quality gates, path safety, prompt governance, loop guard, session lifecycle |
|
|
131
130
|
| `plugins/` | 11 packs | Opt-in domain bundles (security, research, frontend, enterprise, 6 language packs) |
|
|
132
131
|
| `constitution.md` | 7 articles | Machine-enforced safety rules |
|
|
133
|
-
| `rules/` | auto-
|
|
132
|
+
| `rules/` | auto-synced | Global/project rule files for Claude and other editors |
|
|
134
133
|
| `kb/` | reference docs | Architecture, procedures, and best practices |
|
|
135
134
|
|
|
136
135
|
---
|
|
@@ -142,7 +141,7 @@ ai-toolkit/
|
|
|
142
141
|
├── app/
|
|
143
142
|
│ ├── agents/ # 44 agent definitions
|
|
144
143
|
│ ├── skills/ # 108 skills (task / hybrid / knowledge)
|
|
145
|
-
│ ├── rules/ #
|
|
144
|
+
│ ├── rules/ # Source rules synced into Claude/editor rule files
|
|
146
145
|
│ ├── hooks/ # Hook scripts (29 entries, 14 lifecycle events)
|
|
147
146
|
│ ├── plugins/ # 11 experimental plugin packs (opt-in)
|
|
148
147
|
│ ├── output-styles/ # System prompt output style overrides
|
|
@@ -150,7 +149,7 @@ ai-toolkit/
|
|
|
150
149
|
│ └── ARCHITECTURE.md # Full system design
|
|
151
150
|
├── kb/ # Reference docs, procedures, plans
|
|
152
151
|
├── scripts/ # Validation, install, evaluation scripts
|
|
153
|
-
├── tests/ # Bats test suite (
|
|
152
|
+
├── tests/ # Bats test suite (1208 tests)
|
|
154
153
|
└── CHANGELOG.md
|
|
155
154
|
```
|
|
156
155
|
|
|
@@ -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.12.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-
|
|
2
|
+
"last_run": "2026-07-01T22:55:24Z",
|
|
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": "04b55a2b2d496b45",
|
|
28
28
|
"headings": [
|
|
29
29
|
"Admin",
|
|
30
30
|
"Auggie CLI",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
68
|
"claude-code": {
|
|
69
|
-
"docs_hash": "
|
|
69
|
+
"docs_hash": "338d55540b385861",
|
|
70
70
|
"headings": [
|
|
71
71
|
"Core concepts",
|
|
72
72
|
"Documentation Index",
|
|
@@ -122,15 +122,18 @@
|
|
|
122
122
|
"slash command": true,
|
|
123
123
|
"sub-agent": true
|
|
124
124
|
},
|
|
125
|
-
"version": "2.1.
|
|
125
|
+
"version": "2.1.198 (Claude Code)"
|
|
126
126
|
},
|
|
127
127
|
"cline": {
|
|
128
|
-
"docs_hash": "
|
|
128
|
+
"docs_hash": "80209baf691558e2",
|
|
129
129
|
"headings": [
|
|
130
130
|
"API Reference",
|
|
131
131
|
"Best Practices",
|
|
132
|
+
"Bring Your Own Key",
|
|
132
133
|
"CLI",
|
|
134
|
+
"Cline (usage-billing)",
|
|
133
135
|
"Cline Overview",
|
|
136
|
+
"ClinePass",
|
|
134
137
|
"Configurations",
|
|
135
138
|
"Documentation Index",
|
|
136
139
|
"Features",
|
|
@@ -149,6 +152,7 @@
|
|
|
149
152
|
"\u200bAgent Core (SDK)",
|
|
150
153
|
"\u200bApplications",
|
|
151
154
|
"\u200bEnterprise Solutions",
|
|
155
|
+
"\u200bModel access",
|
|
152
156
|
"\u200bOther IDE Supports",
|
|
153
157
|
"\u200bWhat is Cline?"
|
|
154
158
|
],
|
|
@@ -168,7 +172,7 @@
|
|
|
168
172
|
}
|
|
169
173
|
},
|
|
170
174
|
"codex-cli": {
|
|
171
|
-
"docs_hash": "
|
|
175
|
+
"docs_hash": "ad6bbf5e29c7155f",
|
|
172
176
|
"headings": [
|
|
173
177
|
"API",
|
|
174
178
|
"API Reference",
|
|
@@ -208,6 +212,7 @@
|
|
|
208
212
|
"Resources",
|
|
209
213
|
"Run and scale",
|
|
210
214
|
"Search the Codex docs",
|
|
215
|
+
"Spaces",
|
|
211
216
|
"Specialized models",
|
|
212
217
|
"Suggested",
|
|
213
218
|
"Tools",
|
|
@@ -238,7 +243,7 @@
|
|
|
238
243
|
"version": "codex-cli 0.142.0"
|
|
239
244
|
},
|
|
240
245
|
"cursor": {
|
|
241
|
-
"docs_hash": "
|
|
246
|
+
"docs_hash": "080c1289cb353e6c",
|
|
242
247
|
"headings": [],
|
|
243
248
|
"markers": {
|
|
244
249
|
".cursor/rules": false,
|
|
@@ -254,7 +259,7 @@
|
|
|
254
259
|
}
|
|
255
260
|
},
|
|
256
261
|
"gemini-cli": {
|
|
257
|
-
"docs_hash": "
|
|
262
|
+
"docs_hash": "a0ff94dabdb6cd8a",
|
|
258
263
|
"headings": [
|
|
259
264
|
"Breadcrumbs",
|
|
260
265
|
"Directory actions",
|
|
@@ -269,6 +274,7 @@
|
|
|
269
274
|
"Provide feedback",
|
|
270
275
|
"Saved searches",
|
|
271
276
|
"Search code, repositories, users, issues, pull requests...",
|
|
277
|
+
"Uh oh!",
|
|
272
278
|
"Use saved searches to filter your results more quickly",
|
|
273
279
|
"docs",
|
|
274
280
|
"parent directory"
|
|
@@ -296,7 +302,7 @@
|
|
|
296
302
|
}
|
|
297
303
|
},
|
|
298
304
|
"github-copilot": {
|
|
299
|
-
"docs_hash": "
|
|
305
|
+
"docs_hash": "1f9817b3477c576b",
|
|
300
306
|
"headings": [
|
|
301
307
|
"About Copilot auto model selection",
|
|
302
308
|
"About Copilot automations",
|
|
@@ -330,7 +336,7 @@
|
|
|
330
336
|
}
|
|
331
337
|
},
|
|
332
338
|
"google-antigravity": {
|
|
333
|
-
"docs_hash": "
|
|
339
|
+
"docs_hash": "4d2e384b2c2add18",
|
|
334
340
|
"headings": [],
|
|
335
341
|
"markers": {
|
|
336
342
|
"AGENTS.md": false,
|
|
@@ -347,7 +353,7 @@
|
|
|
347
353
|
}
|
|
348
354
|
},
|
|
349
355
|
"opencode": {
|
|
350
|
-
"docs_hash": "
|
|
356
|
+
"docs_hash": "28dcd5b88aeb84e0",
|
|
351
357
|
"headings": [
|
|
352
358
|
"Add features",
|
|
353
359
|
"Ask questions",
|
|
@@ -407,7 +413,7 @@
|
|
|
407
413
|
}
|
|
408
414
|
},
|
|
409
415
|
"windsurf": {
|
|
410
|
-
"docs_hash": "
|
|
416
|
+
"docs_hash": "b457c990c531efc4",
|
|
411
417
|
"headings": [
|
|
412
418
|
"Accounts",
|
|
413
419
|
"Advanced",
|
package/bin/ai-toolkit.js
CHANGED
|
@@ -66,7 +66,7 @@ const COMMANDS = {
|
|
|
66
66
|
reset: 'Wipe and recreate project-local configs from scratch (requires --local)',
|
|
67
67
|
uninstall: 'Remove ai-toolkit from ~/.claude/',
|
|
68
68
|
'add-rule': 'Register a rule file or URL in ~/.softspark/ai-toolkit/rules/ (URL rules auto-refresh on update)',
|
|
69
|
-
'remove-rule': 'Unregister a rule
|
|
69
|
+
'remove-rule': 'Unregister a rule and remove its generated Claude rule file',
|
|
70
70
|
'inject-hook': 'Inject external hooks (file or URL) into ~/.claude/settings.json (URL hooks auto-refresh on update)',
|
|
71
71
|
'remove-hook': 'Remove injected hooks by source name from ~/.claude/settings.json (also unregisters URL source)',
|
|
72
72
|
'inject-mcp': 'Inject external MCP template (file or URL) into ~/.mcp.json + all editor MCP configs (URL templates auto-refresh on update)',
|
|
@@ -87,7 +87,8 @@ What `install` and `update` do (merge-friendly — user content never overwritte
|
|
|
87
87
|
| `settings.json` hooks | JSON merge via `merge-hooks.py` | User hooks + settings preserved, toolkit entries tagged `_source: ai-toolkit` |
|
|
88
88
|
| `constitution.md` | Marker injection via `inject_section_cli.py` | User content outside `<!-- TOOLKIT:* -->` markers untouched |
|
|
89
89
|
| `ARCHITECTURE.md` | Marker injection via `inject_section_cli.py` | Same as above |
|
|
90
|
-
| `CLAUDE.md` |
|
|
90
|
+
| `CLAUDE.md` | Compact index for managed global rules | User content outside toolkit markers untouched |
|
|
91
|
+
| `rules/ai-toolkit-*.md` | File-based Claude Code user-level rules from `app/rules/*.md` and registered rules | `ai-toolkit-*` prefix reserved for installer-managed files |
|
|
91
92
|
|
|
92
93
|
Re-running updates only toolkit content. Old whole-directory symlinks are auto-upgraded to per-file on next run.
|
|
93
94
|
|
|
@@ -135,7 +136,7 @@ ai-toolkit add-rule ./my-project-rules.md
|
|
|
135
136
|
# → copies to ~/.softspark/ai-toolkit/rules/my-project-rules.md
|
|
136
137
|
|
|
137
138
|
ai-toolkit update
|
|
138
|
-
# →
|
|
139
|
+
# → syncs the rule into ~/.claude/rules/ai-toolkit-registered-*.md and all global editor configs
|
|
139
140
|
|
|
140
141
|
ai-toolkit update --local
|
|
141
142
|
# → also propagates as ai-toolkit-custom-<name> to directory-based editors (Cursor, Windsurf, Cline, Roo, Augment, Antigravity)
|
|
@@ -430,5 +431,6 @@ What `uninstall` does:
|
|
|
430
431
|
- Removes per-directory skill symlinks (user skills preserved)
|
|
431
432
|
- Strips toolkit hook entries from `settings.json` (user hooks + settings preserved)
|
|
432
433
|
- Strips toolkit markers from `constitution.md` and `ARCHITECTURE.md` (user content preserved; empty files removed)
|
|
433
|
-
- `~/.claude/CLAUDE.md` preserved (contains your custom
|
|
434
|
+
- `~/.claude/CLAUDE.md` preserved (contains your custom content + compact toolkit index)
|
|
435
|
+
- `~/.claude/rules/` preserved unless explicitly removed
|
|
434
436
|
- Empty `agents/` and `skills/` directories cleaned up
|
|
@@ -32,7 +32,7 @@ ai-toolkit/
|
|
|
32
32
|
app/ # All toolkit components
|
|
33
33
|
agents/ # Agent definitions (.md + YAML frontmatter)
|
|
34
34
|
skills/ # skills: task, hybrid, knowledge
|
|
35
|
-
rules/ #
|
|
35
|
+
rules/ # Source rules synced into Claude/editor rule files
|
|
36
36
|
hooks/ # Hook scripts (copied to ~/.softspark/ai-toolkit/hooks/)
|
|
37
37
|
hooks.json # Hook definitions (merged into ~/.claude/settings.json)
|
|
38
38
|
constitution.md # Immutable safety rules, 7 articles (marker-injected)
|
|
@@ -85,8 +85,9 @@ Machine (global) Project (local)
|
|
|
85
85
|
skills/*/ → per-dir symlinks hooks/ ← hook scripts (copied)
|
|
86
86
|
settings.json ← hooks merged here
|
|
87
87
|
constitution.md ← marker injection my-project/
|
|
88
|
-
ARCHITECTURE.md ← marker injection CLAUDE.md ← project
|
|
89
|
-
CLAUDE.md ←
|
|
88
|
+
ARCHITECTURE.md ← marker injection CLAUDE.md ← project index
|
|
89
|
+
CLAUDE.md ← compact rule index .claude/
|
|
90
|
+
rules/*.md ← Claude user-level rules
|
|
90
91
|
settings.local.json ← MCP, perms
|
|
91
92
|
constitution.md ← marker injection
|
|
92
93
|
```
|
|
@@ -123,7 +124,7 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
|
|
|
123
124
|
| `update --local` | `./` | Re-apply + refresh project-local configs |
|
|
124
125
|
| `uninstall` | `~/.claude/` | Strips toolkit components (preserves user content) |
|
|
125
126
|
| `add-rule <file>` | `~/.softspark/ai-toolkit/rules/` | Register rule — auto-applied on every `update` |
|
|
126
|
-
| `remove-rule <name>` | `~/.softspark/ai-toolkit/rules/` + `~/.claude/
|
|
127
|
+
| `remove-rule <name>` | `~/.softspark/ai-toolkit/rules/` + `~/.claude/rules/` | Unregister rule and remove generated Claude rule file |
|
|
127
128
|
| `mcp add <name...>` | `./.mcp.json` | Merge canonical MCP template(s) into project config |
|
|
128
129
|
| `mcp install --editor <name...>` | native editor config | Render MCP template(s) into editor-native config files |
|
|
129
130
|
| `validate` | toolkit | Integrity check |
|
|
@@ -29,8 +29,7 @@ model.
|
|
|
29
29
|
|
|
30
30
|
`ai-toolkit install --local --editors codex` generates:
|
|
31
31
|
|
|
32
|
-
- `AGENTS.md`
|
|
33
|
-
- `.agents/rules/*.md`
|
|
32
|
+
- `AGENTS.md` (project root; universal coding rules inlined — Codex reads instructions only from AGENTS.md, not `.agents/rules/`)
|
|
34
33
|
- `.agents/skills/*`
|
|
35
34
|
- `.codex/hooks.json`
|
|
36
35
|
|
|
@@ -38,8 +37,7 @@ model.
|
|
|
38
37
|
|
|
39
38
|
`ai-toolkit plugin install --editor codex <pack>` bootstraps or reuses:
|
|
40
39
|
|
|
41
|
-
-
|
|
42
|
-
- `~/.agents/rules/*.md`
|
|
40
|
+
- `~/.codex/AGENTS.md` (the documented global instruction file; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
|
|
43
41
|
- `~/.agents/skills/*`
|
|
44
42
|
- `~/.codex/hooks.json`
|
|
45
43
|
|
|
@@ -93,20 +91,27 @@ The adapter also covers skills that previously depended only on Claude's
|
|
|
93
91
|
|
|
94
92
|
## Hook Compatibility
|
|
95
93
|
|
|
96
|
-
Codex does not expose the full Claude hook event surface.
|
|
97
|
-
|
|
94
|
+
Codex does not expose the full Claude hook event surface. Codex's
|
|
95
|
+
`HookEventName` enum defines 10 events; the Codex hook generator wires 9 of
|
|
96
|
+
them:
|
|
98
97
|
|
|
99
98
|
- `SessionStart`
|
|
100
99
|
- `PreToolUse`
|
|
101
100
|
- `PostToolUse`
|
|
101
|
+
- `PermissionRequest`
|
|
102
102
|
- `UserPromptSubmit`
|
|
103
|
+
- `SubagentStart`
|
|
104
|
+
- `SubagentStop`
|
|
105
|
+
- `PreCompact`
|
|
103
106
|
- `Stop`
|
|
104
107
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
`Notification`
|
|
108
|
+
`PostCompact` is the one enum event left unwired (its only hook was the removed
|
|
109
|
+
environment-snapshot probe). Claude-only events such as `TaskCompleted`,
|
|
110
|
+
`TeammateIdle`, `SessionEnd`, and `Notification` have no Codex equivalent and
|
|
111
|
+
are not available in `.codex/hooks.json`. Handler types: only `command` runs;
|
|
112
|
+
`prompt` and `agent` are parsed by Codex but not yet executed.
|
|
108
113
|
|
|
109
|
-
`inject-hook` automatically propagates Codex-compatible events to
|
|
114
|
+
`inject-hook` automatically propagates these 9 Codex-compatible events to
|
|
110
115
|
`~/.codex/hooks.json` (global layer). Non-Codex events are silently skipped.
|
|
111
116
|
`remove-hook` cleans both Claude and Codex targets.
|
|
112
117
|
|
|
@@ -21,19 +21,19 @@ This design is intentional: ai-toolkit is a generic toolkit. Consumers (MCP serv
|
|
|
21
21
|
|
|
22
22
|
| Command | Target File | Mechanism | Idempotent |
|
|
23
23
|
|---------|-------------|-----------|------------|
|
|
24
|
-
| `inject-rule <file.md>` | `~/.claude/CLAUDE.md` | HTML comment markers (`<!-- TOOLKIT:name -->`) | Yes |
|
|
25
|
-
| `remove-rule <name>` | `~/.claude/
|
|
24
|
+
| `inject-rule <file.md>` | `~/.claude/CLAUDE.md` | Legacy HTML comment markers (`<!-- TOOLKIT:name -->`) | Yes |
|
|
25
|
+
| `remove-rule <name>` | `~/.softspark/ai-toolkit/rules/` + `~/.claude/rules/` | Unregister and remove generated Claude rule file | Yes |
|
|
26
26
|
| `inject-hook <file.json\|url> [name]` | `~/.claude/settings.json` | JSON `_source` tag per entry, URL cached + registered | Yes |
|
|
27
27
|
| `remove-hook <name>` | `~/.claude/settings.json` | Strip all entries with matching `_source`, unregister URL source | Yes |
|
|
28
28
|
| `inject-mcp <file.json\|url> [name] [--force]` | `~/.mcp.json` + every editor with `global_path` | JSON `_source` tag per server, URL cached + registered, full editor propagation | Yes |
|
|
29
29
|
| `remove-mcp <name>` | `~/.mcp.json` + every editor with `global_path` | Strip all servers with matching `_source`, clean editor configs, unregister URL | Yes |
|
|
30
|
-
| `add-rule <file.md\|url>` | `~/.softspark/ai-toolkit/rules/` | File copy +
|
|
30
|
+
| `add-rule <file.md\|url>` | `~/.softspark/ai-toolkit/rules/` | File copy + sync to `~/.claude/rules/ai-toolkit-registered-*.md` on next `update` | Yes |
|
|
31
31
|
| `mcp add <name...>` | `.mcp.json` | Merge `mcpServers` block from built-in template | Yes |
|
|
32
32
|
| `mcp install --editor <name...>` | Native editor MCP config | Render canonical template into editor format | Yes |
|
|
33
33
|
|
|
34
34
|
## inject-rule
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Legacy direct injection: injects a Markdown rules file into `~/.claude/CLAUDE.md` between named HTML comment markers. Prefer `add-rule` for persistent global rules; `ai-toolkit update` syncs those into Claude Code user-level rule files under `~/.claude/rules/`.
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
39
|
npx @softspark/ai-toolkit inject-rule ./my-tool-rules.md
|
|
@@ -52,7 +52,7 @@ The block name is derived from the file stem (`my-tool-rules.md` → `my-tool-ru
|
|
|
52
52
|
|
|
53
53
|
## remove-rule
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
Unregisters a persistent rule, removes `~/.claude/rules/ai-toolkit-registered-<name>.md`, and strips any legacy injected rule block from `~/.claude/CLAUDE.md`.
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
npx @softspark/ai-toolkit remove-rule my-tool-rules
|
|
@@ -3,9 +3,9 @@ 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.0
|
|
6
|
+
version: "3.1.0"
|
|
7
7
|
created: "2026-03-26"
|
|
8
|
-
last_updated: "2026-
|
|
8
|
+
last_updated: "2026-06-30"
|
|
9
9
|
description: "Reference description of the global install target, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -15,7 +15,7 @@ description: "Reference description of the global install target, project-local
|
|
|
15
15
|
|
|
16
16
|
`ai-toolkit` installs globally into `~/.claude/` by default.
|
|
17
17
|
|
|
18
|
-
That means one machine-level install provides agents, skills, hooks, and
|
|
18
|
+
That means one machine-level install provides agents, skills, hooks, constitution, and rule files to every project without committing toolkit boilerplate into each repository.
|
|
19
19
|
|
|
20
20
|
Other editor targets are opt-in and only use documented file surfaces. Cursor
|
|
21
21
|
rules stay project-local because Cursor's global user rules are managed through
|
|
@@ -57,19 +57,38 @@ The `--profile` flag controls how much of each editor's native surface is activa
|
|
|
57
57
|
|
|
58
58
|
## Global Editor Targets
|
|
59
59
|
|
|
60
|
+
Claude Code's default global install writes these managed surfaces:
|
|
61
|
+
|
|
62
|
+
- `~/.claude/agents/*.md` — per-file symlinks to toolkit agents.
|
|
63
|
+
- `~/.claude/skills/*/` — per-directory symlinks to toolkit skills.
|
|
64
|
+
- `~/.claude/settings.json` — merged hook configuration and global settings.
|
|
65
|
+
- `~/.claude/constitution.md` — marker-injected safety constitution.
|
|
66
|
+
- `~/.claude/ARCHITECTURE.md` — marker-injected architecture reference.
|
|
67
|
+
- `~/.claude/rules/ai-toolkit-*.md` — toolkit rules from `app/rules/*.md`.
|
|
68
|
+
- `~/.claude/rules/ai-toolkit-registered-*.md` — rules registered with `ai-toolkit add-rule`.
|
|
69
|
+
- `~/.claude/CLAUDE.md` — compact index pointing at the managed rule files.
|
|
70
|
+
|
|
71
|
+
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
|
+
|
|
60
73
|
`ai-toolkit install --editors <name>` can write global files only for editors
|
|
61
74
|
with documented, file-based config surfaces:
|
|
62
75
|
|
|
63
|
-
- `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md`
|
|
64
|
-
- `gemini`: `~/.gemini/GEMINI.md`
|
|
65
|
-
- `augment`: `~/.augment/rules/ai-toolkit.md`
|
|
76
|
+
- `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md` plus `~/.config/devin/AGENTS.md` (Devin CLI global rules — the Desktop `global_rules.md` path is not imported by `read_config_from.windsurf`)
|
|
77
|
+
- `gemini`: `~/.gemini/GEMINI.md`; hooks at `~/.gemini/settings.json` (profile ≥ standard); `~/.gemini/commands/` and `~/.gemini/skills/` pointer (profile full)
|
|
78
|
+
- `augment`: `~/.augment/rules/ai-toolkit.md`; `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` (profile full)
|
|
66
79
|
- `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
|
|
67
|
-
- `roo`: `~/.roo/rules/ai-toolkit-*.md`
|
|
80
|
+
- `roo`: `~/.roo/rules/ai-toolkit-*.md` plus `~/.agents/skills/*` (Roo/Zoo native skill discovery; skipped when `codex` is also selected, which fills the same dir)
|
|
68
81
|
- `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
|
|
69
|
-
- `codex`:
|
|
82
|
+
- `codex`: `~/.codex/AGENTS.md` (coding rules inlined; the documented global instruction file — NOT `~/AGENTS.md`, which Codex never loads as global instructions), `~/.agents/skills/*`, `~/.codex/hooks.json`
|
|
70
83
|
- `opencode`: `~/.config/opencode/*`
|
|
71
84
|
|
|
72
|
-
Cursor, GitHub Copilot, and Google Antigravity
|
|
85
|
+
Cursor, GitHub Copilot, and Google Antigravity now have partial global support,
|
|
86
|
+
scoped to whatever documented HOME file surface each exposes:
|
|
87
|
+
|
|
88
|
+
- `cursor`: `~/.cursor/hooks.json` (safety/quality hooks; profile ≥ standard). Cursor RULES stay project-local — their only global surface is the Settings UI.
|
|
89
|
+
- `copilot`: `~/.copilot/copilot-instructions.md` plus `~/.copilot/instructions/ai-toolkit-*.instructions.md` (read by Copilot CLI; VS Code and GitHub.com still use repo `.github/` files, which the local install emits).
|
|
90
|
+
- `antigravity`: skill pointer at `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Antigravity RULES stay project-local.
|
|
91
|
+
|
|
73
92
|
Their global MCP support, where available, is handled by `ai-toolkit mcp
|
|
74
93
|
install`, not by the rule installer.
|
|
75
94
|
|
|
@@ -103,6 +122,8 @@ These files still stay local to a repository as part of the core install model:
|
|
|
103
122
|
- `.git/hooks/pre-commit` (fallback)
|
|
104
123
|
- project-specific documentation or safety overlays
|
|
105
124
|
|
|
125
|
+
Project-local Claude Code language rules live in `.claude/rules/ai-toolkit-*.md` with `paths` frontmatter. They are separate from the global user-level `~/.claude/rules/ai-toolkit-*.md` files above.
|
|
126
|
+
|
|
106
127
|
Hooks do **not** live in project-local settings. They are merged only into global `~/.claude/settings.json`.
|
|
107
128
|
|
|
108
129
|
Codex is the exception in terms of file location, not hook ownership: its local
|
|
@@ -126,8 +147,7 @@ Codex wrappers so the project still receives the full skill catalog.
|
|
|
126
147
|
|
|
127
148
|
`ai-toolkit plugin install --editor codex <pack>` additionally targets:
|
|
128
149
|
|
|
129
|
-
-
|
|
130
|
-
- `~/.agents/rules/*.md`
|
|
150
|
+
- `~/.codex/AGENTS.md` (base instructions; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
|
|
131
151
|
- `~/.agents/skills/*`
|
|
132
152
|
- `~/.codex/hooks.json`
|
|
133
153
|
|
|
@@ -3,15 +3,15 @@ title: "AI Toolkit - External Integrations"
|
|
|
3
3
|
category: reference
|
|
4
4
|
service: ai-toolkit
|
|
5
5
|
tags: [integrations, rules, add-rule]
|
|
6
|
-
version: "1.0
|
|
6
|
+
version: "1.1.0"
|
|
7
7
|
created: "2026-03-26"
|
|
8
|
-
last_updated: "2026-
|
|
9
|
-
description: "How external repos
|
|
8
|
+
last_updated: "2026-06-30"
|
|
9
|
+
description: "How external repos register rules that ai-toolkit syncs into Claude Code user-level rules and other editor configs."
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# External Integrations
|
|
13
13
|
|
|
14
|
-
Repos that register rules with ai-toolkit so they are automatically
|
|
14
|
+
Repos that register rules with ai-toolkit so they are automatically synced into Claude Code user-level rules and other editor configs on every `update`.
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -25,9 +25,11 @@ ai-toolkit add-rule ./jira-rules.md
|
|
|
25
25
|
ai-toolkit update # inject now
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
After registration, `ai-toolkit update` will always re-
|
|
28
|
+
After registration, `ai-toolkit update` will always re-sync the rule. Registry location: `~/.softspark/ai-toolkit/rules/`.
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
For Claude Code, registered rules are written to `~/.claude/rules/ai-toolkit-registered-<name>.md`. The `ai-toolkit-*` prefix in `~/.claude/rules/` is installer-managed; use another prefix for hand-written Claude rules.
|
|
31
|
+
|
|
32
|
+
To unregister a rule (removes from `~/.softspark/ai-toolkit/rules/`, deletes the generated Claude rule file, and strips any legacy block from `CLAUDE.md`):
|
|
31
33
|
|
|
32
34
|
```bash
|
|
33
35
|
ai-toolkit remove-rule jira-rules
|
|
@@ -37,17 +39,13 @@ ai-toolkit remove-rule jira-rules
|
|
|
37
39
|
|
|
38
40
|
## How It Works
|
|
39
41
|
|
|
40
|
-
|
|
42
|
+
Claude Code uses file-based user-level rules:
|
|
41
43
|
|
|
42
44
|
```
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
...rule content...
|
|
46
|
-
|
|
47
|
-
<!-- TOOLKIT:jira-rules END -->
|
|
45
|
+
~/.claude/rules/ai-toolkit-registered-jira-rules.md
|
|
48
46
|
```
|
|
49
47
|
|
|
50
|
-
|
|
48
|
+
Other editors receive the same registered rule through their native generated rule surfaces. Legacy `CLAUDE.md` marker sections are removed during migration, but content outside toolkit-managed markers is never touched.
|
|
51
49
|
|
|
52
50
|
---
|
|
53
51
|
|
|
@@ -56,8 +54,9 @@ Content outside markers is never touched. Re-running updates only the marked blo
|
|
|
56
54
|
1. Create `<name>-rules.md` in your repo with Claude-relevant conventions
|
|
57
55
|
2. Register it: `ai-toolkit add-rule ./<name>-rules.md`
|
|
58
56
|
3. Verify it appears in: `~/.softspark/ai-toolkit/rules/<name>-rules.md`
|
|
59
|
-
4. On next `install` it will be listed in: `Rules
|
|
60
|
-
5.
|
|
57
|
+
4. On next `install` it will be listed in: `Rules synced: ... <name>-rules`
|
|
58
|
+
5. Verify Claude receives it at: `~/.claude/rules/ai-toolkit-registered-<name>-rules.md`
|
|
59
|
+
6. Add an entry below documenting the integration
|
|
61
60
|
|
|
62
61
|
---
|
|
63
62
|
|
|
@@ -66,7 +65,7 @@ Content outside markers is never touched. Re-running updates only the marked blo
|
|
|
66
65
|
### rag-mcp
|
|
67
66
|
|
|
68
67
|
**Rule file:** `rag-mcp.md`
|
|
69
|
-
**
|
|
68
|
+
**Claude rule file:** `~/.claude/rules/ai-toolkit-registered-rag-mcp.md`
|
|
70
69
|
|
|
71
70
|
Teaches Claude Code the RAG-MCP search protocol: always call `smart_query()` before answering, `kb_id` vs `file_path` distinction, available MCP tools.
|
|
72
71
|
|
|
@@ -78,7 +77,7 @@ ai-toolkit add-rule ./rag-mcp-rules.md
|
|
|
78
77
|
### jira-mcp
|
|
79
78
|
|
|
80
79
|
**Rule file:** `jira-rules.md`
|
|
81
|
-
**
|
|
80
|
+
**Claude rule file:** `~/.claude/rules/ai-toolkit-registered-jira-rules.md`
|
|
82
81
|
|
|
83
82
|
Teaches Claude Code the Jira MCP tool set: `sync_tasks`, `read_cached_tasks`, `update_task_status`, `log_task_time`, and key rules (sync first, hours only, check transitions).
|
|
84
83
|
|