@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/llms-full.txt
CHANGED
|
@@ -4586,7 +4586,8 @@ What `install` and `update` do (merge-friendly — user content never overwritte
|
|
|
4586
4586
|
| `settings.json` hooks | JSON merge via `merge-hooks.py` | User hooks + settings preserved, toolkit entries tagged `_source: ai-toolkit` |
|
|
4587
4587
|
| `constitution.md` | Marker injection via `inject_section_cli.py` | User content outside `<!-- TOOLKIT:* -->` markers untouched |
|
|
4588
4588
|
| `ARCHITECTURE.md` | Marker injection via `inject_section_cli.py` | Same as above |
|
|
4589
|
-
| `CLAUDE.md` |
|
|
4589
|
+
| `CLAUDE.md` | Compact index for managed global rules | User content outside toolkit markers untouched |
|
|
4590
|
+
| `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 |
|
|
4590
4591
|
|
|
4591
4592
|
Re-running updates only toolkit content. Old whole-directory symlinks are auto-upgraded to per-file on next run.
|
|
4592
4593
|
|
|
@@ -4634,7 +4635,7 @@ ai-toolkit add-rule ./my-project-rules.md
|
|
|
4634
4635
|
# → copies to ~/.softspark/ai-toolkit/rules/my-project-rules.md
|
|
4635
4636
|
|
|
4636
4637
|
ai-toolkit update
|
|
4637
|
-
# →
|
|
4638
|
+
# → syncs the rule into ~/.claude/rules/ai-toolkit-registered-*.md and all global editor configs
|
|
4638
4639
|
|
|
4639
4640
|
ai-toolkit update --local
|
|
4640
4641
|
# → also propagates as ai-toolkit-custom-<name> to directory-based editors (Cursor, Windsurf, Cline, Roo, Augment, Antigravity)
|
|
@@ -4929,7 +4930,8 @@ What `uninstall` does:
|
|
|
4929
4930
|
- Removes per-directory skill symlinks (user skills preserved)
|
|
4930
4931
|
- Strips toolkit hook entries from `settings.json` (user hooks + settings preserved)
|
|
4931
4932
|
- Strips toolkit markers from `constitution.md` and `ARCHITECTURE.md` (user content preserved; empty files removed)
|
|
4932
|
-
- `~/.claude/CLAUDE.md` preserved (contains your custom
|
|
4933
|
+
- `~/.claude/CLAUDE.md` preserved (contains your custom content + compact toolkit index)
|
|
4934
|
+
- `~/.claude/rules/` preserved unless explicitly removed
|
|
4933
4935
|
- Empty `agents/` and `skills/` directories cleaned up
|
|
4934
4936
|
|
|
4935
4937
|
---
|
|
@@ -6264,7 +6266,7 @@ ai-toolkit/
|
|
|
6264
6266
|
app/ # All toolkit components
|
|
6265
6267
|
agents/ # Agent definitions (.md + YAML frontmatter)
|
|
6266
6268
|
skills/ # skills: task, hybrid, knowledge
|
|
6267
|
-
rules/ #
|
|
6269
|
+
rules/ # Source rules synced into Claude/editor rule files
|
|
6268
6270
|
hooks/ # Hook scripts (copied to ~/.softspark/ai-toolkit/hooks/)
|
|
6269
6271
|
hooks.json # Hook definitions (merged into ~/.claude/settings.json)
|
|
6270
6272
|
constitution.md # Immutable safety rules, 7 articles (marker-injected)
|
|
@@ -6317,8 +6319,9 @@ Machine (global) Project (local)
|
|
|
6317
6319
|
skills/*/ → per-dir symlinks hooks/ ← hook scripts (copied)
|
|
6318
6320
|
settings.json ← hooks merged here
|
|
6319
6321
|
constitution.md ← marker injection my-project/
|
|
6320
|
-
ARCHITECTURE.md ← marker injection CLAUDE.md ← project
|
|
6321
|
-
CLAUDE.md ←
|
|
6322
|
+
ARCHITECTURE.md ← marker injection CLAUDE.md ← project index
|
|
6323
|
+
CLAUDE.md ← compact rule index .claude/
|
|
6324
|
+
rules/*.md ← Claude user-level rules
|
|
6322
6325
|
settings.local.json ← MCP, perms
|
|
6323
6326
|
constitution.md ← marker injection
|
|
6324
6327
|
```
|
|
@@ -6355,7 +6358,7 @@ If a project already has `.mcp.json`, local install mirrors its `mcpServers` ent
|
|
|
6355
6358
|
| `update --local` | `./` | Re-apply + refresh project-local configs |
|
|
6356
6359
|
| `uninstall` | `~/.claude/` | Strips toolkit components (preserves user content) |
|
|
6357
6360
|
| `add-rule <file>` | `~/.softspark/ai-toolkit/rules/` | Register rule — auto-applied on every `update` |
|
|
6358
|
-
| `remove-rule <name>` | `~/.softspark/ai-toolkit/rules/` + `~/.claude/
|
|
6361
|
+
| `remove-rule <name>` | `~/.softspark/ai-toolkit/rules/` + `~/.claude/rules/` | Unregister rule and remove generated Claude rule file |
|
|
6359
6362
|
| `mcp add <name...>` | `./.mcp.json` | Merge canonical MCP template(s) into project config |
|
|
6360
6363
|
| `mcp install --editor <name...>` | native editor config | Render MCP template(s) into editor-native config files |
|
|
6361
6364
|
| `validate` | toolkit | Integrity check |
|
|
@@ -7094,8 +7097,7 @@ model.
|
|
|
7094
7097
|
|
|
7095
7098
|
`ai-toolkit install --local --editors codex` generates:
|
|
7096
7099
|
|
|
7097
|
-
- `AGENTS.md`
|
|
7098
|
-
- `.agents/rules/*.md`
|
|
7100
|
+
- `AGENTS.md` (project root; universal coding rules inlined — Codex reads instructions only from AGENTS.md, not `.agents/rules/`)
|
|
7099
7101
|
- `.agents/skills/*`
|
|
7100
7102
|
- `.codex/hooks.json`
|
|
7101
7103
|
|
|
@@ -7103,8 +7105,7 @@ model.
|
|
|
7103
7105
|
|
|
7104
7106
|
`ai-toolkit plugin install --editor codex <pack>` bootstraps or reuses:
|
|
7105
7107
|
|
|
7106
|
-
-
|
|
7107
|
-
- `~/.agents/rules/*.md`
|
|
7108
|
+
- `~/.codex/AGENTS.md` (the documented global instruction file; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
|
|
7108
7109
|
- `~/.agents/skills/*`
|
|
7109
7110
|
- `~/.codex/hooks.json`
|
|
7110
7111
|
|
|
@@ -7158,20 +7159,27 @@ The adapter also covers skills that previously depended only on Claude's
|
|
|
7158
7159
|
|
|
7159
7160
|
## Hook Compatibility
|
|
7160
7161
|
|
|
7161
|
-
Codex does not expose the full Claude hook event surface.
|
|
7162
|
-
|
|
7162
|
+
Codex does not expose the full Claude hook event surface. Codex's
|
|
7163
|
+
`HookEventName` enum defines 10 events; the Codex hook generator wires 9 of
|
|
7164
|
+
them:
|
|
7163
7165
|
|
|
7164
7166
|
- `SessionStart`
|
|
7165
7167
|
- `PreToolUse`
|
|
7166
7168
|
- `PostToolUse`
|
|
7169
|
+
- `PermissionRequest`
|
|
7167
7170
|
- `UserPromptSubmit`
|
|
7171
|
+
- `SubagentStart`
|
|
7172
|
+
- `SubagentStop`
|
|
7173
|
+
- `PreCompact`
|
|
7168
7174
|
- `Stop`
|
|
7169
7175
|
|
|
7170
|
-
|
|
7171
|
-
|
|
7172
|
-
`Notification`
|
|
7176
|
+
`PostCompact` is the one enum event left unwired (its only hook was the removed
|
|
7177
|
+
environment-snapshot probe). Claude-only events such as `TaskCompleted`,
|
|
7178
|
+
`TeammateIdle`, `SessionEnd`, and `Notification` have no Codex equivalent and
|
|
7179
|
+
are not available in `.codex/hooks.json`. Handler types: only `command` runs;
|
|
7180
|
+
`prompt` and `agent` are parsed by Codex but not yet executed.
|
|
7173
7181
|
|
|
7174
|
-
`inject-hook` automatically propagates Codex-compatible events to
|
|
7182
|
+
`inject-hook` automatically propagates these 9 Codex-compatible events to
|
|
7175
7183
|
`~/.codex/hooks.json` (global layer). Non-Codex events are silently skipped.
|
|
7176
7184
|
`remove-hook` cleans both Claude and Codex targets.
|
|
7177
7185
|
|
|
@@ -8385,19 +8393,19 @@ This design is intentional: ai-toolkit is a generic toolkit. Consumers (MCP serv
|
|
|
8385
8393
|
|
|
8386
8394
|
| Command | Target File | Mechanism | Idempotent |
|
|
8387
8395
|
|---------|-------------|-----------|------------|
|
|
8388
|
-
| `inject-rule <file.md>` | `~/.claude/CLAUDE.md` | HTML comment markers (`<!-- TOOLKIT:name -->`) | Yes |
|
|
8389
|
-
| `remove-rule <name>` | `~/.claude/
|
|
8396
|
+
| `inject-rule <file.md>` | `~/.claude/CLAUDE.md` | Legacy HTML comment markers (`<!-- TOOLKIT:name -->`) | Yes |
|
|
8397
|
+
| `remove-rule <name>` | `~/.softspark/ai-toolkit/rules/` + `~/.claude/rules/` | Unregister and remove generated Claude rule file | Yes |
|
|
8390
8398
|
| `inject-hook <file.json\|url> [name]` | `~/.claude/settings.json` | JSON `_source` tag per entry, URL cached + registered | Yes |
|
|
8391
8399
|
| `remove-hook <name>` | `~/.claude/settings.json` | Strip all entries with matching `_source`, unregister URL source | Yes |
|
|
8392
8400
|
| `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 |
|
|
8393
8401
|
| `remove-mcp <name>` | `~/.mcp.json` + every editor with `global_path` | Strip all servers with matching `_source`, clean editor configs, unregister URL | Yes |
|
|
8394
|
-
| `add-rule <file.md\|url>` | `~/.softspark/ai-toolkit/rules/` | File copy +
|
|
8402
|
+
| `add-rule <file.md\|url>` | `~/.softspark/ai-toolkit/rules/` | File copy + sync to `~/.claude/rules/ai-toolkit-registered-*.md` on next `update` | Yes |
|
|
8395
8403
|
| `mcp add <name...>` | `.mcp.json` | Merge `mcpServers` block from built-in template | Yes |
|
|
8396
8404
|
| `mcp install --editor <name...>` | Native editor MCP config | Render canonical template into editor format | Yes |
|
|
8397
8405
|
|
|
8398
8406
|
## inject-rule
|
|
8399
8407
|
|
|
8400
|
-
|
|
8408
|
+
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/`.
|
|
8401
8409
|
|
|
8402
8410
|
```bash
|
|
8403
8411
|
npx @softspark/ai-toolkit inject-rule ./my-tool-rules.md
|
|
@@ -8416,7 +8424,7 @@ The block name is derived from the file stem (`my-tool-rules.md` → `my-tool-ru
|
|
|
8416
8424
|
|
|
8417
8425
|
## remove-rule
|
|
8418
8426
|
|
|
8419
|
-
|
|
8427
|
+
Unregisters a persistent rule, removes `~/.claude/rules/ai-toolkit-registered-<name>.md`, and strips any legacy injected rule block from `~/.claude/CLAUDE.md`.
|
|
8420
8428
|
|
|
8421
8429
|
```bash
|
|
8422
8430
|
npx @softspark/ai-toolkit remove-rule my-tool-rules
|
|
@@ -8641,9 +8649,9 @@ title: "Global Install Model"
|
|
|
8641
8649
|
category: reference
|
|
8642
8650
|
service: ai-toolkit
|
|
8643
8651
|
tags: [install, global, claude, codex, plugins, local-setup]
|
|
8644
|
-
version: "3.0
|
|
8652
|
+
version: "3.1.0"
|
|
8645
8653
|
created: "2026-03-26"
|
|
8646
|
-
last_updated: "2026-
|
|
8654
|
+
last_updated: "2026-06-30"
|
|
8647
8655
|
description: "Reference description of the global install target, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
|
|
8648
8656
|
---
|
|
8649
8657
|
|
|
@@ -8653,7 +8661,7 @@ description: "Reference description of the global install target, project-local
|
|
|
8653
8661
|
|
|
8654
8662
|
`ai-toolkit` installs globally into `~/.claude/` by default.
|
|
8655
8663
|
|
|
8656
|
-
That means one machine-level install provides agents, skills, hooks, and
|
|
8664
|
+
That means one machine-level install provides agents, skills, hooks, constitution, and rule files to every project without committing toolkit boilerplate into each repository.
|
|
8657
8665
|
|
|
8658
8666
|
Other editor targets are opt-in and only use documented file surfaces. Cursor
|
|
8659
8667
|
rules stay project-local because Cursor's global user rules are managed through
|
|
@@ -8695,19 +8703,38 @@ The `--profile` flag controls how much of each editor's native surface is activa
|
|
|
8695
8703
|
|
|
8696
8704
|
## Global Editor Targets
|
|
8697
8705
|
|
|
8706
|
+
Claude Code's default global install writes these managed surfaces:
|
|
8707
|
+
|
|
8708
|
+
- `~/.claude/agents/*.md` — per-file symlinks to toolkit agents.
|
|
8709
|
+
- `~/.claude/skills/*/` — per-directory symlinks to toolkit skills.
|
|
8710
|
+
- `~/.claude/settings.json` — merged hook configuration and global settings.
|
|
8711
|
+
- `~/.claude/constitution.md` — marker-injected safety constitution.
|
|
8712
|
+
- `~/.claude/ARCHITECTURE.md` — marker-injected architecture reference.
|
|
8713
|
+
- `~/.claude/rules/ai-toolkit-*.md` — toolkit rules from `app/rules/*.md`.
|
|
8714
|
+
- `~/.claude/rules/ai-toolkit-registered-*.md` — rules registered with `ai-toolkit add-rule`.
|
|
8715
|
+
- `~/.claude/CLAUDE.md` — compact index pointing at the managed rule files.
|
|
8716
|
+
|
|
8717
|
+
The `ai-toolkit-*` prefix in `~/.claude/rules/` is reserved for installer-managed files. User-authored Claude rules should use another filename prefix, or be registered through `ai-toolkit add-rule` so they are emitted as `ai-toolkit-registered-*.md`.
|
|
8718
|
+
|
|
8698
8719
|
`ai-toolkit install --editors <name>` can write global files only for editors
|
|
8699
8720
|
with documented, file-based config surfaces:
|
|
8700
8721
|
|
|
8701
|
-
- `windsurf`: `~/.codeium/windsurf/memories/global_rules.md` plus `~/.codeium/windsurf/skills/ai-toolkit-skill-catalogue/SKILL.md`
|
|
8702
|
-
- `gemini`: `~/.gemini/GEMINI.md`
|
|
8703
|
-
- `augment`: `~/.augment/rules/ai-toolkit.md`
|
|
8722
|
+
- `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`)
|
|
8723
|
+
- `gemini`: `~/.gemini/GEMINI.md`; hooks at `~/.gemini/settings.json` (profile ≥ standard); `~/.gemini/commands/` and `~/.gemini/skills/` pointer (profile full)
|
|
8724
|
+
- `augment`: `~/.augment/rules/ai-toolkit.md`; `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` (profile full)
|
|
8704
8725
|
- `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md` plus `~/.cline/skills/ai-toolkit-skill-catalogue/SKILL.md`
|
|
8705
|
-
- `roo`: `~/.roo/rules/ai-toolkit-*.md`
|
|
8726
|
+
- `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)
|
|
8706
8727
|
- `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
|
|
8707
|
-
- `codex`:
|
|
8728
|
+
- `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`
|
|
8708
8729
|
- `opencode`: `~/.config/opencode/*`
|
|
8709
8730
|
|
|
8710
|
-
Cursor, GitHub Copilot, and Google Antigravity
|
|
8731
|
+
Cursor, GitHub Copilot, and Google Antigravity now have partial global support,
|
|
8732
|
+
scoped to whatever documented HOME file surface each exposes:
|
|
8733
|
+
|
|
8734
|
+
- `cursor`: `~/.cursor/hooks.json` (safety/quality hooks; profile ≥ standard). Cursor RULES stay project-local — their only global surface is the Settings UI.
|
|
8735
|
+
- `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).
|
|
8736
|
+
- `antigravity`: skill pointer at `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Antigravity RULES stay project-local.
|
|
8737
|
+
|
|
8711
8738
|
Their global MCP support, where available, is handled by `ai-toolkit mcp
|
|
8712
8739
|
install`, not by the rule installer.
|
|
8713
8740
|
|
|
@@ -8741,6 +8768,8 @@ These files still stay local to a repository as part of the core install model:
|
|
|
8741
8768
|
- `.git/hooks/pre-commit` (fallback)
|
|
8742
8769
|
- project-specific documentation or safety overlays
|
|
8743
8770
|
|
|
8771
|
+
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.
|
|
8772
|
+
|
|
8744
8773
|
Hooks do **not** live in project-local settings. They are merged only into global `~/.claude/settings.json`.
|
|
8745
8774
|
|
|
8746
8775
|
Codex is the exception in terms of file location, not hook ownership: its local
|
|
@@ -8764,8 +8793,7 @@ Codex wrappers so the project still receives the full skill catalog.
|
|
|
8764
8793
|
|
|
8765
8794
|
`ai-toolkit plugin install --editor codex <pack>` additionally targets:
|
|
8766
8795
|
|
|
8767
|
-
-
|
|
8768
|
-
- `~/.agents/rules/*.md`
|
|
8796
|
+
- `~/.codex/AGENTS.md` (base instructions; pack rules are marker-injected here, not written as unread `~/.agents/rules/` files)
|
|
8769
8797
|
- `~/.agents/skills/*`
|
|
8770
8798
|
- `~/.codex/hooks.json`
|
|
8771
8799
|
|
|
@@ -9622,15 +9650,15 @@ title: "AI Toolkit - External Integrations"
|
|
|
9622
9650
|
category: reference
|
|
9623
9651
|
service: ai-toolkit
|
|
9624
9652
|
tags: [integrations, rules, add-rule]
|
|
9625
|
-
version: "1.0
|
|
9653
|
+
version: "1.1.0"
|
|
9626
9654
|
created: "2026-03-26"
|
|
9627
|
-
last_updated: "2026-
|
|
9628
|
-
description: "How external repos
|
|
9655
|
+
last_updated: "2026-06-30"
|
|
9656
|
+
description: "How external repos register rules that ai-toolkit syncs into Claude Code user-level rules and other editor configs."
|
|
9629
9657
|
---
|
|
9630
9658
|
|
|
9631
9659
|
# External Integrations
|
|
9632
9660
|
|
|
9633
|
-
Repos that register rules with ai-toolkit so they are automatically
|
|
9661
|
+
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`.
|
|
9634
9662
|
|
|
9635
9663
|
---
|
|
9636
9664
|
|
|
@@ -9644,9 +9672,11 @@ ai-toolkit add-rule ./jira-rules.md
|
|
|
9644
9672
|
ai-toolkit update # inject now
|
|
9645
9673
|
```
|
|
9646
9674
|
|
|
9647
|
-
After registration, `ai-toolkit update` will always re-
|
|
9675
|
+
After registration, `ai-toolkit update` will always re-sync the rule. Registry location: `~/.softspark/ai-toolkit/rules/`.
|
|
9676
|
+
|
|
9677
|
+
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.
|
|
9648
9678
|
|
|
9649
|
-
To unregister a rule (removes from `~/.softspark/ai-toolkit/rules
|
|
9679
|
+
To unregister a rule (removes from `~/.softspark/ai-toolkit/rules/`, deletes the generated Claude rule file, and strips any legacy block from `CLAUDE.md`):
|
|
9650
9680
|
|
|
9651
9681
|
```bash
|
|
9652
9682
|
ai-toolkit remove-rule jira-rules
|
|
@@ -9656,17 +9686,13 @@ ai-toolkit remove-rule jira-rules
|
|
|
9656
9686
|
|
|
9657
9687
|
## How It Works
|
|
9658
9688
|
|
|
9659
|
-
|
|
9689
|
+
Claude Code uses file-based user-level rules:
|
|
9660
9690
|
|
|
9661
9691
|
```
|
|
9662
|
-
|
|
9663
|
-
|
|
9664
|
-
...rule content...
|
|
9665
|
-
|
|
9666
|
-
<!-- TOOLKIT:jira-rules END -->
|
|
9692
|
+
~/.claude/rules/ai-toolkit-registered-jira-rules.md
|
|
9667
9693
|
```
|
|
9668
9694
|
|
|
9669
|
-
|
|
9695
|
+
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.
|
|
9670
9696
|
|
|
9671
9697
|
---
|
|
9672
9698
|
|
|
@@ -9675,8 +9701,9 @@ Content outside markers is never touched. Re-running updates only the marked blo
|
|
|
9675
9701
|
1. Create `<name>-rules.md` in your repo with Claude-relevant conventions
|
|
9676
9702
|
2. Register it: `ai-toolkit add-rule ./<name>-rules.md`
|
|
9677
9703
|
3. Verify it appears in: `~/.softspark/ai-toolkit/rules/<name>-rules.md`
|
|
9678
|
-
4. On next `install` it will be listed in: `Rules
|
|
9679
|
-
5.
|
|
9704
|
+
4. On next `install` it will be listed in: `Rules synced: ... <name>-rules`
|
|
9705
|
+
5. Verify Claude receives it at: `~/.claude/rules/ai-toolkit-registered-<name>-rules.md`
|
|
9706
|
+
6. Add an entry below documenting the integration
|
|
9680
9707
|
|
|
9681
9708
|
---
|
|
9682
9709
|
|
|
@@ -9685,7 +9712,7 @@ Content outside markers is never touched. Re-running updates only the marked blo
|
|
|
9685
9712
|
### rag-mcp
|
|
9686
9713
|
|
|
9687
9714
|
**Rule file:** `rag-mcp.md`
|
|
9688
|
-
**
|
|
9715
|
+
**Claude rule file:** `~/.claude/rules/ai-toolkit-registered-rag-mcp.md`
|
|
9689
9716
|
|
|
9690
9717
|
Teaches Claude Code the RAG-MCP search protocol: always call `smart_query()` before answering, `kb_id` vs `file_path` distinction, available MCP tools.
|
|
9691
9718
|
|
|
@@ -9697,7 +9724,7 @@ ai-toolkit add-rule ./rag-mcp-rules.md
|
|
|
9697
9724
|
### jira-mcp
|
|
9698
9725
|
|
|
9699
9726
|
**Rule file:** `jira-rules.md`
|
|
9700
|
-
**
|
|
9727
|
+
**Claude rule file:** `~/.claude/rules/ai-toolkit-registered-jira-rules.md`
|
|
9701
9728
|
|
|
9702
9729
|
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).
|
|
9703
9730
|
|
|
@@ -9772,10 +9799,10 @@ title: "Language Rules System"
|
|
|
9772
9799
|
category: reference
|
|
9773
9800
|
service: ai-toolkit
|
|
9774
9801
|
tags: [rules, languages, coding-style, testing, patterns, security]
|
|
9775
|
-
version: "2.
|
|
9802
|
+
version: "2.1.0"
|
|
9776
9803
|
created: "2026-04-07"
|
|
9777
|
-
last_updated: "2026-
|
|
9778
|
-
description: "Reference for the language-specific rules system: 13 per-language rule sets shipped as knowledge skills, plus
|
|
9804
|
+
last_updated: "2026-06-30"
|
|
9805
|
+
description: "Reference for the language-specific rules system: 13 per-language rule sets shipped as knowledge skills, plus common rules installed as Claude Code path-scoped project rules."
|
|
9779
9806
|
---
|
|
9780
9807
|
|
|
9781
9808
|
# Language Rules System
|
|
@@ -9784,7 +9811,7 @@ description: "Reference for the language-specific rules system: 13 per-language
|
|
|
9784
9811
|
|
|
9785
9812
|
ai-toolkit ships rule content for 13 languages/platforms plus a language-agnostic common set. Source files live under `app/rules/` and are split into two delivery channels by `ai-toolkit install --local`:
|
|
9786
9813
|
|
|
9787
|
-
- **Common rules** (`app/rules/common/*.md`): full content is
|
|
9814
|
+
- **Common rules** (`app/rules/common/*.md`): full content is written to `.claude/rules/ai-toolkit-*.md` with Claude Code `paths` frontmatter. The project's `.claude/CLAUDE.md` keeps only a compact `<!-- TOOLKIT:language-rules START -->` index. This follows Claude Code's current guidance to keep `CLAUDE.md` concise and move larger instruction sets into scoped rules.
|
|
9788
9815
|
- **Per-language rules** (`app/rules/<lang>/*.md`): emitted at build time as `<lang>-rules` knowledge skills under `app/skills/`. Each skill is `user-invocable: false`, so Claude loads it via the Agent Skills progressive-disclosure mechanism only when its description triggers match (file extensions, framework names, or matching keywords in the prompt).
|
|
9789
9816
|
|
|
9790
9817
|
The skills are generated from the rule files via `python3 scripts/generate_language_rules_skills.py`, which is idempotent and rerun-safe. Other editors (Cursor, Windsurf, Cline, Roo, Augment, Codex, Copilot, Antigravity, Gemini, opencode) still receive the full per-language rule content via their own generators in `scripts/dir_rules_shared.py::build_language_rules()` — Claude is the only target where the per-language content is now skill-delivered rather than inlined.
|
|
@@ -9824,7 +9851,7 @@ app/rules/
|
|
|
9824
9851
|
└── medplum/
|
|
9825
9852
|
```
|
|
9826
9853
|
|
|
9827
|
-
**Total: 13 per-language directories × 5 files + 1 common directory × 5 files + 3 standalone files** (see README.md for canonical count). Per-language directories ship as `<lang>-rules` knowledge skills; the common directory is
|
|
9854
|
+
**Total: 13 per-language directories × 5 files + 1 common directory × 5 files + 3 standalone files** (see README.md for canonical count). Per-language directories ship as `<lang>-rules` knowledge skills; the common directory is installed as Claude Code `.claude/rules/ai-toolkit-*.md` files.
|
|
9828
9855
|
|
|
9829
9856
|
## Supported Languages
|
|
9830
9857
|
|
|
@@ -9909,26 +9936,47 @@ ai-toolkit install --local --modules core,agents
|
|
|
9909
9936
|
|
|
9910
9937
|
The `--lang` flag accepts comma-separated language names and converts them to `rules-<lang>` modules. Common aliases are supported: `go` → `golang`, `c++` → `cpp`, `c#`/`cs` → `csharp`. Using `--lang` implies `--local` and disables auto-detection.
|
|
9911
9938
|
|
|
9912
|
-
Common rules are
|
|
9939
|
+
Common rules are installed as path-scoped Claude Code rule files:
|
|
9940
|
+
|
|
9941
|
+
```
|
|
9942
|
+
.claude/rules/
|
|
9943
|
+
├── ai-toolkit-coding-style.md
|
|
9944
|
+
├── ai-toolkit-git-workflow.md
|
|
9945
|
+
├── ai-toolkit-performance.md
|
|
9946
|
+
├── ai-toolkit-security.md
|
|
9947
|
+
└── ai-toolkit-testing.md
|
|
9948
|
+
```
|
|
9949
|
+
|
|
9950
|
+
Each file starts with:
|
|
9951
|
+
|
|
9952
|
+
```yaml
|
|
9953
|
+
---
|
|
9954
|
+
paths:
|
|
9955
|
+
- "**/*"
|
|
9956
|
+
---
|
|
9957
|
+
```
|
|
9958
|
+
|
|
9959
|
+
The project `CLAUDE.md` receives only a compact index between a single named marker (the per-language markers from v1.x are no longer used):
|
|
9913
9960
|
|
|
9914
9961
|
```
|
|
9915
9962
|
<!-- TOOLKIT:language-rules START -->
|
|
9916
9963
|
# Language Rules
|
|
9917
9964
|
|
|
9918
|
-
Common
|
|
9965
|
+
Common ai-toolkit rules live in `.claude/rules/ai-toolkit-*.md`
|
|
9966
|
+
with Claude Code `paths` frontmatter so they load when project files
|
|
9967
|
+
are opened instead of expanding this CLAUDE.md at session startup.
|
|
9968
|
+
|
|
9969
|
+
Common rule files: `.claude/rules/ai-toolkit-coding-style.md`, ...
|
|
9970
|
+
|
|
9919
9971
|
Language-specific rules live in `<lang>-rules` knowledge skills (e.g.
|
|
9920
9972
|
`python-rules`, `typescript-rules`) and load automatically when their
|
|
9921
9973
|
triggers match.
|
|
9922
9974
|
|
|
9923
9975
|
Detected languages: `python-rules`, `typescript-rules`.
|
|
9924
|
-
|
|
9925
|
-
---
|
|
9926
|
-
|
|
9927
|
-
... full content of app/rules/common/*.md inlined here ...
|
|
9928
9976
|
<!-- TOOLKIT:language-rules END -->
|
|
9929
9977
|
```
|
|
9930
9978
|
|
|
9931
|
-
Re-running `install --local` is idempotent — the existing block is replaced, not duplicated. Per-language rules are not injected into `CLAUDE.md` for Claude — they are loaded contextually via their respective `<lang>-rules` knowledge skills.
|
|
9979
|
+
Re-running `install --local` is idempotent — the existing block is replaced, not duplicated, and only managed `.claude/rules/ai-toolkit-*.md` files are refreshed. User-authored `.claude/rules/*.md` files are preserved. Per-language rules are not injected into `CLAUDE.md` for Claude — they are loaded contextually via their respective `<lang>-rules` knowledge skills.
|
|
9932
9980
|
|
|
9933
9981
|
### Generating language-rules skills
|
|
9934
9982
|
|
|
@@ -9975,8 +10023,8 @@ Language rules are tracked as modules in `manifest.json`:
|
|
|
9975
10023
|
| | Common rules | Per-language rules | Other skills |
|
|
9976
10024
|
|---|---|---|---|
|
|
9977
10025
|
| Source | `app/rules/common/` | `app/rules/<lang>/` | `app/skills/<name>/SKILL.md` |
|
|
9978
|
-
| Delivery to Claude |
|
|
9979
|
-
| Visibility |
|
|
10026
|
+
| Delivery to Claude | Path-scoped `.claude/rules/ai-toolkit-*.md` files (`--local`) + compact `CLAUDE.md` index | Generated as `<lang>-rules` knowledge skills, loaded contextually | Loaded contextually by description match |
|
|
10027
|
+
| Visibility | Loaded when project files are opened | Loaded when triggers match (file extensions, framework names) | Loaded when triggers match |
|
|
9980
10028
|
| Scope | Language-agnostic standards (security, git, testing, perf, style) | Per-language coding-style, frameworks, patterns, security, testing | Domain skills (testing, debugging, RAG, etc.) |
|
|
9981
10029
|
| Install | `ai-toolkit install --local` | Global install (skills directory is symlinked) | Global install |
|
|
9982
10030
|
| Other editors | Inlined into editor-specific rule files | Inlined into editor-specific rule files (still full content, not skills) | N/A |
|
|
@@ -11897,9 +11945,9 @@ title: "Supported Tools Registry"
|
|
|
11897
11945
|
category: reference
|
|
11898
11946
|
service: ai-toolkit
|
|
11899
11947
|
tags: [editors, platforms, generators, integration, ecosystem]
|
|
11900
|
-
version: "1.7.
|
|
11948
|
+
version: "1.7.1"
|
|
11901
11949
|
created: "2026-04-23"
|
|
11902
|
-
last_updated: "2026-06-
|
|
11950
|
+
last_updated: "2026-06-30"
|
|
11903
11951
|
description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code + 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
|
|
11904
11952
|
---
|
|
11905
11953
|
|
|
@@ -11943,9 +11991,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11943
11991
|
| Docs | https://cursor.com/docs |
|
|
11944
11992
|
| Changelog | https://cursor.com/changelog |
|
|
11945
11993
|
| Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
|
|
11946
|
-
| 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
|
|
11994
|
+
| Config paths | `.cursorrules` (**legacy** — no longer in cursor.com/docs/rules; deprecated ~0.43–0.45 in favor of `.cursor/rules/*.mdc`, still read, no removal deadline; we keep emitting for back-compat), `.cursor/rules/*.mdc` (plain `.md` files in `.cursor/rules/` are **ignored** by the rules system), `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/hooks.json`, `~/.cursor/hooks.json` (user-level hooks scope; enterprise system paths + dashboard team hooks not adopted, class C), `.cursor/skills/*/SKILL.md`, `~/.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `~/.cursor/agents/*.md` |
|
|
11947
11995
|
| 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) |
|
|
11948
|
-
| 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) |
|
|
11996
|
+
| Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full local **and** global `~/.cursor/hooks.json`), `scripts/generate_cursor_agents.py` (profile=full), `scripts/generate_cursor_skills.py` (profile=full pointer) |
|
|
11997
|
+
| Global install | Cursor is in `GLOBAL_CAPABLE_EDITORS` for **hooks only**: `ai-toolkit install --editors cursor` writes `~/.cursor/hooks.json` (profile ≥ standard). RULES stay project-local (Cursor's only global rules surface is the Settings UI). |
|
|
11949
11998
|
| Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
|
|
11950
11999
|
|
|
11951
12000
|
### Windsurf
|
|
@@ -11957,8 +12006,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11957
12006
|
| Changelog | https://docs.devin.ai/desktop/changelog (windsurf.com/changelog 308-permanent-redirects here) |
|
|
11958
12007
|
| Stable docs mirror | https://docs.devin.ai/desktop/... per-page .md twins; legacy `.windsurf/`, `.windsurfrules`, `~/.codeium/windsurf/` paths still read as fallback (new canonical: `.devin/`) |
|
|
11959
12008
|
| Config paths | **Primary (Devin Desktop):** `.devin/rules/*.md`, `.devin/workflows/*.md`, `.devin/skills/*/SKILL.md`, `.devin/hooks.v1.json` (Devin CLI hooks, Claude format), `.devin/config.json`, `.devin/config.local.json`, `~/.config/devin/config.json` (Devin Local MCP/permissions). **Legacy fallback:** `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `.windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/skills/*/SKILL.md`, `~/.codeium/windsurf/mcp_config.json`. Plus `AGENTS.md`. |
|
|
11960
|
-
| 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.** |
|
|
11961
|
-
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped,
|
|
12009
|
+
| Compat read paths | skills: `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/`. **Hooks: Devin CLI reads `.claude/settings.json` + `~/.claude/settings.json` hooks directly (`read_config_from.claude` default on), so globally-installed toolkit hooks work under Devin with no project-local file.** `read_config_from` now has **7 keys** (all default true): `agents_standard`, `cursor`, `windsurf`, `claude`, `opencode`, `vscode`, `zed` — so Devin CLI also imports MCP from `~/.config/opencode/opencode.json` (our opencode global install), `~/.config/zed/settings.json`, and `.vscode/mcp.json`. |
|
|
12010
|
+
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` (dual-emits `.devin/` + `.windsurf/`), `scripts/generate_windsurf_hooks.py` (profile=full; **Cascade-scoped, drop in the first release after 2026-07-01**), `scripts/generate_devin_hooks.py` (profile=full; `.devin/hooks.v1.json`, Claude-format Devin CLI hooks), `scripts/generate_windsurf_skills.py` (global + profile=full pointer, dual-emits) |
|
|
12011
|
+
| 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). |
|
|
11962
12012
|
| Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, skills, MCP, memories, hooks |
|
|
11963
12013
|
| Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
|
|
11964
12014
|
| Hooks migration | **Done.** Cascade `.windsurf/hooks.json` (`agent_action_name`/`tool_info` format) dies 2026-07-01 with no Devin fallback. `generate_devin_hooks.py` emits `.devin/hooks.v1.json` in the Claude-compatible format Devin CLI uses: Claude-style events (PreToolUse/PostToolUse/UserPromptSubmit/Stop/SessionStart), matchers on Devin tool names (`read`/`edit`/`exec`/`mcp__*`), blocking via flat `{"decision":"block","reason":...}` + exit 2 (no `AI_TOOLKIT_HOOK_FORMAT=json` — Devin does not use Claude's `hookSpecificOutput` envelope). `post_setup_worktree`→`SessionStart`; `post_cascade_response`→`Stop` (no response text on stdin). Both hook generators run at profile=full during the transition; drop `generate_windsurf_hooks.py` in the first release after 2026-07-01. |
|
|
@@ -11971,9 +12021,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11971
12021
|
| ID | `github-copilot` |
|
|
11972
12022
|
| Docs | https://docs.github.com/en/copilot |
|
|
11973
12023
|
| Release notes | https://github.blog/changelog/label/copilot/ |
|
|
11974
|
-
| Config paths | `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md` |
|
|
11975
|
-
|
|
|
11976
|
-
|
|
|
12024
|
+
| Config paths | **Repo (`.github/`):** `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md`, `.github/hooks/*.json`. **Copilot CLI user-level (`~/.copilot/`, `COPILOT_HOME` override):** `~/.copilot/copilot-instructions.md`, `~/.copilot/instructions/*.instructions.md`, `~/.copilot/agents/*.agent.md`, `~/.copilot/skills/<name>/SKILL.md`, `~/.copilot/hooks/`, `~/.copilot/settings.json`, `~/.copilot/mcp-config.json` |
|
|
12025
|
+
| Compat read paths | skills: Copilot CLI reads personal `~/.copilot/skills` and `~/.agents/skills` (the latter populated by our codex/roo global installs) and project `.github/skills`, `.claude/skills`, `.agents/skills` — so toolkit skills are already Copilot-visible. (Note: since CLI 1.0.61 a session using `COPILOT_HOME`/`--config-dir` stops reading `~/.agents/skills`.) |
|
|
12026
|
+
| Our generators | `scripts/generate_copilot.py` (repo `.github/` and, with `config_root=~/.copilot`, global CLI instructions) |
|
|
12027
|
+
| Global install | Copilot is in `GLOBAL_CAPABLE_EDITORS`: `ai-toolkit install --editors copilot` writes `~/.copilot/copilot-instructions.md` + `~/.copilot/instructions/ai-toolkit-*.instructions.md` (read by Copilot CLI). VS Code Copilot uses profile-level locations and GitHub.com uses repo files, so the project `.github/` emission stays. |
|
|
12028
|
+
| Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP, skills, CLI hooks, `~/.copilot/` |
|
|
11977
12029
|
| Tier notes | Custom agents (`.github/agents/*.agent.md`) and repo-level MCP config are Pro/Pro+/Business/Enterprise only and intentionally not integrated (class C per ecosystem-sync SOP). Copilot code review reads the nearest `AGENTS.md` automatically since the 2026-06-18 GA (all tiers); `ai-toolkit install --local --editors copilot` injects a `TOOLKIT:copilot-agents` section generated from `generate_agents_md.py` without clobbering Codex/opencode sections in the same file. The 4000-char cap on `copilot-instructions.md` / `*.instructions.md` was also removed (2026-06-12). |
|
|
11978
12030
|
|
|
11979
12031
|
### Gemini CLI
|
|
@@ -11985,9 +12037,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11985
12037
|
| Release notes | https://github.com/google-gemini/gemini-cli/releases |
|
|
11986
12038
|
| 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` |
|
|
11987
12039
|
| 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) |
|
|
11988
|
-
|
|
|
12040
|
+
| Global install | `ai-toolkit install --editors gemini` writes `~/.gemini/GEMINI.md` **plus** hooks at `~/.gemini/settings.json` (profile ≥ standard) and `~/.gemini/commands/` + `~/.gemini/skills/` pointer (profile=full) — all documented user-tier surfaces. A global-only Gemini user previously got zero hooks. |
|
|
12041
|
+
| 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/agents/*.md` subagents, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
|
|
11989
12042
|
| Version probe | `gemini --version` |
|
|
11990
|
-
| Latest upstream | v0.
|
|
12043
|
+
| Latest upstream | v0.49.0 (2026-06-25; the stable line skipped v0.48.0 — its preview content was promoted into v0.49.0). NOTE: Gemini CLI dropped free/paid individual tiers on 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist and paid API keys keep Gemini CLI, so the integration stays. The 11 hook events are unchanged. v0.49.0 completed the `coreTools` → `tools.core` migration (auto-migrated; `tools.exclude` deprecated) — both are tool-allowlist keys we do not emit, so no generator change. Watch item: `.gemini/agents/*.md` / `~/.gemini/agents/*.md` native subagents are documented but we do not yet emit them (candidate `generate_gemini_agents.py`). |
|
|
11991
12044
|
|
|
11992
12045
|
### Cline
|
|
11993
12046
|
|
|
@@ -12008,12 +12061,12 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12008
12061
|
| Field | Value |
|
|
12009
12062
|
|-------|-------|
|
|
12010
12063
|
| ID | `roo-code` |
|
|
12011
|
-
| Docs | https://roocodeinc.github.io/Roo-Code (docs.roocode.com 301-redirects here) |
|
|
12012
|
-
| Release notes | https://github.com/
|
|
12013
|
-
| Config paths | `.roomodes
|
|
12064
|
+
| Docs | https://roocodeinc.github.io/Roo-Code (frozen; docs.roocode.com 301-redirects here). Successor docs: https://docs.zoocode.dev |
|
|
12065
|
+
| Release notes | https://github.com/Zoo-Code-Org/Zoo-Code/releases (authoritative). **Original RooCodeInc/Roo-Code repo ARCHIVED/read-only since 2026-05-15, frozen at v3.54.0 — its feed is dead.** Successor project by former Roo contributors: **Zoo-Code-Org/Zoo-Code** (marketplace `ZooCodeOrganization.zoo-code`), active through v3.64.0 (2026-06-26). |
|
|
12066
|
+
| Config paths | `.roomodes` (JSON still fully supported), `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/skills/*/SKILL.md`, `~/.roo/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `~/.agents/skills/*`, `.roo/commands/*.md`, `~/.roo/commands/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `mcp_settings.json` + global custom modes live in VS Code globalStorage (`<globalStorage>/rooveterinaryinc.roo-cline/settings/custom_modes.yaml`), NOT `~/.roo/custom_modes.yaml` |
|
|
12014
12067
|
| Our generators | `scripts/generate_roo_modes.py`, `scripts/generate_roo_rules.py` |
|
|
12015
|
-
| Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups
|
|
12016
|
-
| Notes | `.roomodes`
|
|
12068
|
+
| Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups`, skills, slash commands |
|
|
12069
|
+
| Notes | Config compat with the Zoo fork is total, so both generators stay valid unchanged. `.roomodes` includes `description`/`whenToUse` for every mode (since 2026-04); JSON is still accepted (YAML is upstream-preferred but not emitted). Global install writes `~/.roo/rules/` plus `~/.agents/skills/*` (Roo/Zoo native skill discovery, shipped v3.46.0/v3.47.2; skipped when `codex` is also selected). `~/.roo/commands/` (global slash commands, since v3.25) is a documented surface not yet generated. |
|
|
12017
12070
|
|
|
12018
12071
|
### Aider
|
|
12019
12072
|
|
|
@@ -12038,7 +12091,9 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12038
12091
|
| Changelog | https://www.augmentcode.com/changelog |
|
|
12039
12092
|
| 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). |
|
|
12040
12093
|
| 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) |
|
|
12041
|
-
|
|
|
12094
|
+
| Global install | `ai-toolkit install --editors augment` writes `~/.augment/rules/ai-toolkit.md` **plus** (profile=full) `~/.augment/agents/`, `~/.augment/commands/`, and hooks in `~/.augment/settings.json` — all documented user-tier surfaces. A global-only Augment user previously got no hooks/agents/commands. Skills need no global emission: Auggie natively reads `~/.claude/skills/`. |
|
|
12095
|
+
| 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, plugins/marketplace |
|
|
12096
|
+
| Latest / notes | Auggie CLI v0.31.0. Since v0.30.0 (2026-06-25) `PreToolUse`/`PostToolUse` hooks fire during sub-agent sessions, so our wired hook groups now run concurrently from parallel sub-agents — hook payload identifier is `conversation_id` (not `session_id`), a concurrency note to track. `Notification` is enum-only (doctor flipped its marker) — no dedicated handler documented, so class C (do NOT wire). Plugins/marketplace (`auggie plugin marketplace add`, `.augment-plugin`/`.claude-plugin` layouts, `enabledPlugins`/`autoUpdateMarketplaces` in settings) documented but not yet a shipping target. |
|
|
12042
12097
|
| SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
|
|
12043
12098
|
|
|
12044
12099
|
### Google Antigravity
|
|
@@ -12049,9 +12104,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12049
12104
|
| Docs | https://antigravity.google/docs (JavaScript SPA — use bundle strings / sitemap to verify) |
|
|
12050
12105
|
| Changelog | https://antigravity.google/changelog (SPA; changelog entries embedded in main-*.js) |
|
|
12051
12106
|
| 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` |
|
|
12052
|
-
|
|
|
12053
|
-
|
|
|
12054
|
-
|
|
|
12107
|
+
| Global config paths | Skills: `~/.gemini/config/skills/*/SKILL.md` (shared across all Antigravity products) and `~/.gemini/antigravity-cli/skills/*/SKILL.md` (CLI-private) — both documented in the official Skills codelab. MCP: `~/.gemini/config/mcp_config.json` (shared global, resolved by CLI v1.0.14; the `~/.gemini/antigravity-cli/mcp_config.json` path is legacy). Rules: `~/.gemini/GEMINI.md` (dual-owner with Gemini CLI — Antigravity's IDE "+ Global" writes the same file; gemini-cli#16058 closed "not planned"). Hooks: `~/.gemini/config/hooks.json` (shared, since CLI v1.0.8). |
|
|
12108
|
+
| Our generators | `scripts/generate_antigravity.py` (rules + workflows + skill pointer dual-emitted to `.agent/skills/` and `.agents/skills/`; `generate_global()` writes the pointer to the two HOME skill dirs) |
|
|
12109
|
+
| Global install | `ai-toolkit install --editors antigravity` writes the skill pointer to `~/.gemini/config/skills/` and `~/.gemini/antigravity-cli/skills/`. Rules stay project-local (no mergeable global rules file beyond the Gemini-CLI-shared `~/.gemini/GEMINI.md`, covered by `--editors gemini`). |
|
|
12110
|
+
| Tracked capabilities | Antigravity, agent manager, artifacts, MCP, workflows, rules, skills, hooks, `AGENTS.md`, `GEMINI.md`, agent permissions, global skills, `~/.gemini/config/mcp_config.json` |
|
|
12111
|
+
| CLI notes | Antigravity CLI (GA 2026-05-19; latest CLI v1.0.14 2026-06-30, IDE 2.2.1). Hooks are IDE + CLI (`.agents/hooks.json` workspace, `~/.gemini/config/hooks.json` global; event set `PreToolUse`/`PostToolUse`/`PreInvocation`/`PostInvocation`/`Stop` — `PreInvocation`/`PostInvocation` have no Claude equivalent; shell tool is `run_command` with args at `.toolCall.args.CommandLine`). MCP: `url` is natively supported since CLI v1.0.5 (registry's old "url/httpUrl fail silently" note is stale); `serverUrl` works everywhere incl. IDE. **MCP adapter + a `generate_antigravity_hooks.py` are not yet shipped** (backlog). |
|
|
12055
12112
|
| 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. |
|
|
12056
12113
|
|
|
12057
12114
|
### Codex CLI
|
|
@@ -12059,13 +12116,13 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12059
12116
|
| Field | Value |
|
|
12060
12117
|
|-------|-------|
|
|
12061
12118
|
| ID | `codex-cli` |
|
|
12062
|
-
| 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.142.
|
|
12119
|
+
| Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`, `/codex/guides/agents-md`; latest stable codex-cli 0.142.5, 2026-07-01; 0.143.0 alpha) |
|
|
12063
12120
|
| Release notes | https://github.com/openai/codex/releases |
|
|
12064
|
-
| Config paths | `AGENTS.md
|
|
12121
|
+
| 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`. |
|
|
12065
12122
|
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
|
|
12066
|
-
| 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/`. |
|
|
12067
|
-
| Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 of these to shared toolkit hook scripts, mirroring the Claude Code mapping in `app/hooks.json`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
|
|
12068
|
-
| Tracked handler types | `command` (emitted by default
|
|
12123
|
+
| 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/`. Global install writes `~/.codex/AGENTS.md` (not `~/AGENTS.md`, which Codex never loads globally); plugin-pack rules are marker-injected into the same file. `project_doc_max_bytes` default is 32 KiB and Codex silently truncates AGENTS.md past that (see codex-cli-compatibility.md). |
|
|
12124
|
+
| Tracked hook events | Upstream canonical (codex-rs `HookEventName` enum): `PreToolUse`, `PostToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SessionStart`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop` (10 events). We wire 9 of these to shared toolkit hook scripts (via `generate_codex_hooks.py` AND `inject-hook` propagation, kept in sync), mirroring the Claude Code mapping in `app/hooks.json`. `PostCompact` is not wired (its only hook was the removed environment-snapshot probe). |
|
|
12125
|
+
| Tracked handler types | `command` (emitted by default; the only handler Codex actually runs). `prompt` and `agent` are parsed by Codex but NOT yet executed, so hand-authored handlers of those types are inert. |
|
|
12069
12126
|
| Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path) |
|
|
12070
12127
|
| Version probe | `codex --version` |
|
|
12071
12128
|
|
package/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.12.0",
|
|
4
4
|
"description": "AI coding toolkit: 108 skills, 44 agents, 12-editor write-through (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo, Aider, Augment, Antigravity, Codex, opencode), machine-enforced safety constitution, SARIF audit, signed npm provenance.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|