@softspark/ai-toolkit 4.10.0 → 4.11.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/AGENTS.md +135 -0
- package/CHANGELOG.md +28 -0
- package/README.md +13 -12
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/hooks/loop-guard.sh +0 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +26 -19
- package/bin/ai-toolkit.js +1 -1
- package/kb/procedures/maintenance-sop.md +5 -3
- package/kb/reference/architecture-overview.md +7 -6
- package/kb/reference/codex-cli-compatibility.md +10 -4
- package/kb/reference/extension-api.md +5 -5
- package/kb/reference/global-install-model.md +18 -3
- package/kb/reference/integrations.md +16 -17
- package/kb/reference/language-rules.md +35 -14
- package/kb/reference/supported-tools-registry.md +8 -8
- package/llms-full.txt +104 -60
- package/manifest.json +1 -1
- package/package.json +3 -1
- package/scripts/ecosystem_tools.json +6 -2
- package/scripts/generate_copilot.py +6 -0
- package/scripts/generate_language_rules_skills.py +4 -2
- package/scripts/install.py +3 -3
- package/scripts/install_steps/ai_tools.py +102 -29
- package/scripts/install_steps/markers.py +132 -14
- 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)
|
|
@@ -6286,7 +6288,7 @@ ai-toolkit/
|
|
|
6286
6288
|
generate_agents_md.py # Regenerates AGENTS.md
|
|
6287
6289
|
generate_cursor_rules.py # Generates .cursorrules (sources _common.py)
|
|
6288
6290
|
generate_windsurf.py # Generates .windsurfrules (sources _common.py)
|
|
6289
|
-
generate_copilot.py # Generates .github
|
|
6291
|
+
generate_copilot.py # Generates Copilot .github/* surfaces; install also injects AGENTS.md
|
|
6290
6292
|
generate_gemini.py # Generates GEMINI.md (sources _common.py)
|
|
6291
6293
|
generate_cline.py # Generates .clinerules (sources _common.py)
|
|
6292
6294
|
generate_roo_modes.py # Generates .roomodes
|
|
@@ -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
|
```
|
|
@@ -6341,7 +6344,7 @@ Machine (global) Project (local)
|
|
|
6341
6344
|
- `--editors cursor,aider` — install only selected editors
|
|
6342
6345
|
- (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
|
|
6343
6346
|
|
|
6344
|
-
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`.
|
|
6347
|
+
Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.devin/rules/*.md` + `.windsurf/rules/*.md` (dual-emit since the Devin Desktop rebrand), `.github/instructions/*.instructions.md` + `.github/prompts/*.prompt.md` + root `AGENTS.md` for Copilot agent instructions, `.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`.
|
|
6345
6348
|
|
|
6346
6349
|
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`).
|
|
6347
6350
|
|
|
@@ -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 |
|
|
@@ -7181,16 +7184,22 @@ by default because Codex currently renders `additionalContext` as visible hook
|
|
|
7181
7184
|
context in the TUI. This keeps prompt-submit output quiet while preserving hook
|
|
7182
7185
|
side effects and blocking decisions such as search-first Stop enforcement.
|
|
7183
7186
|
|
|
7184
|
-
Codex
|
|
7185
|
-
|
|
7187
|
+
Codex hooks must not force Claude-only JSON output fields such as
|
|
7188
|
+
`suppressOutput`. In particular, advisory `PostToolUse` hooks like
|
|
7189
|
+
`loop-guard.sh` run in quiet/plain mode under Codex; they keep side effects but
|
|
7190
|
+
do not emit hidden Claude-style context unless a future Codex runtime explicitly
|
|
7191
|
+
supports that schema.
|
|
7192
|
+
|
|
7193
|
+
If a future Codex runtime enables JSON context output for `UserPromptSubmit`,
|
|
7194
|
+
the output must be event-specific and include the event name alongside the
|
|
7195
|
+
context:
|
|
7186
7196
|
|
|
7187
7197
|
```json
|
|
7188
7198
|
{
|
|
7189
7199
|
"hookSpecificOutput": {
|
|
7190
7200
|
"hookEventName": "UserPromptSubmit",
|
|
7191
7201
|
"additionalContext": "..."
|
|
7192
|
-
}
|
|
7193
|
-
"suppressOutput": true
|
|
7202
|
+
}
|
|
7194
7203
|
}
|
|
7195
7204
|
```
|
|
7196
7205
|
|
|
@@ -8379,19 +8388,19 @@ This design is intentional: ai-toolkit is a generic toolkit. Consumers (MCP serv
|
|
|
8379
8388
|
|
|
8380
8389
|
| Command | Target File | Mechanism | Idempotent |
|
|
8381
8390
|
|---------|-------------|-----------|------------|
|
|
8382
|
-
| `inject-rule <file.md>` | `~/.claude/CLAUDE.md` | HTML comment markers (`<!-- TOOLKIT:name -->`) | Yes |
|
|
8383
|
-
| `remove-rule <name>` | `~/.claude/
|
|
8391
|
+
| `inject-rule <file.md>` | `~/.claude/CLAUDE.md` | Legacy HTML comment markers (`<!-- TOOLKIT:name -->`) | Yes |
|
|
8392
|
+
| `remove-rule <name>` | `~/.softspark/ai-toolkit/rules/` + `~/.claude/rules/` | Unregister and remove generated Claude rule file | Yes |
|
|
8384
8393
|
| `inject-hook <file.json\|url> [name]` | `~/.claude/settings.json` | JSON `_source` tag per entry, URL cached + registered | Yes |
|
|
8385
8394
|
| `remove-hook <name>` | `~/.claude/settings.json` | Strip all entries with matching `_source`, unregister URL source | Yes |
|
|
8386
8395
|
| `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 |
|
|
8387
8396
|
| `remove-mcp <name>` | `~/.mcp.json` + every editor with `global_path` | Strip all servers with matching `_source`, clean editor configs, unregister URL | Yes |
|
|
8388
|
-
| `add-rule <file.md\|url>` | `~/.softspark/ai-toolkit/rules/` | File copy +
|
|
8397
|
+
| `add-rule <file.md\|url>` | `~/.softspark/ai-toolkit/rules/` | File copy + sync to `~/.claude/rules/ai-toolkit-registered-*.md` on next `update` | Yes |
|
|
8389
8398
|
| `mcp add <name...>` | `.mcp.json` | Merge `mcpServers` block from built-in template | Yes |
|
|
8390
8399
|
| `mcp install --editor <name...>` | Native editor MCP config | Render canonical template into editor format | Yes |
|
|
8391
8400
|
|
|
8392
8401
|
## inject-rule
|
|
8393
8402
|
|
|
8394
|
-
|
|
8403
|
+
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/`.
|
|
8395
8404
|
|
|
8396
8405
|
```bash
|
|
8397
8406
|
npx @softspark/ai-toolkit inject-rule ./my-tool-rules.md
|
|
@@ -8410,7 +8419,7 @@ The block name is derived from the file stem (`my-tool-rules.md` → `my-tool-ru
|
|
|
8410
8419
|
|
|
8411
8420
|
## remove-rule
|
|
8412
8421
|
|
|
8413
|
-
|
|
8422
|
+
Unregisters a persistent rule, removes `~/.claude/rules/ai-toolkit-registered-<name>.md`, and strips any legacy injected rule block from `~/.claude/CLAUDE.md`.
|
|
8414
8423
|
|
|
8415
8424
|
```bash
|
|
8416
8425
|
npx @softspark/ai-toolkit remove-rule my-tool-rules
|
|
@@ -8635,9 +8644,9 @@ title: "Global Install Model"
|
|
|
8635
8644
|
category: reference
|
|
8636
8645
|
service: ai-toolkit
|
|
8637
8646
|
tags: [install, global, claude, codex, plugins, local-setup]
|
|
8638
|
-
version: "3.0
|
|
8647
|
+
version: "3.1.0"
|
|
8639
8648
|
created: "2026-03-26"
|
|
8640
|
-
last_updated: "2026-
|
|
8649
|
+
last_updated: "2026-06-30"
|
|
8641
8650
|
description: "Reference description of the global install target, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
|
|
8642
8651
|
---
|
|
8643
8652
|
|
|
@@ -8647,7 +8656,7 @@ description: "Reference description of the global install target, project-local
|
|
|
8647
8656
|
|
|
8648
8657
|
`ai-toolkit` installs globally into `~/.claude/` by default.
|
|
8649
8658
|
|
|
8650
|
-
That means one machine-level install provides agents, skills, hooks, and
|
|
8659
|
+
That means one machine-level install provides agents, skills, hooks, constitution, and rule files to every project without committing toolkit boilerplate into each repository.
|
|
8651
8660
|
|
|
8652
8661
|
Other editor targets are opt-in and only use documented file surfaces. Cursor
|
|
8653
8662
|
rules stay project-local because Cursor's global user rules are managed through
|
|
@@ -8689,6 +8698,19 @@ The `--profile` flag controls how much of each editor's native surface is activa
|
|
|
8689
8698
|
|
|
8690
8699
|
## Global Editor Targets
|
|
8691
8700
|
|
|
8701
|
+
Claude Code's default global install writes these managed surfaces:
|
|
8702
|
+
|
|
8703
|
+
- `~/.claude/agents/*.md` — per-file symlinks to toolkit agents.
|
|
8704
|
+
- `~/.claude/skills/*/` — per-directory symlinks to toolkit skills.
|
|
8705
|
+
- `~/.claude/settings.json` — merged hook configuration and global settings.
|
|
8706
|
+
- `~/.claude/constitution.md` — marker-injected safety constitution.
|
|
8707
|
+
- `~/.claude/ARCHITECTURE.md` — marker-injected architecture reference.
|
|
8708
|
+
- `~/.claude/rules/ai-toolkit-*.md` — toolkit rules from `app/rules/*.md`.
|
|
8709
|
+
- `~/.claude/rules/ai-toolkit-registered-*.md` — rules registered with `ai-toolkit add-rule`.
|
|
8710
|
+
- `~/.claude/CLAUDE.md` — compact index pointing at the managed rule files.
|
|
8711
|
+
|
|
8712
|
+
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`.
|
|
8713
|
+
|
|
8692
8714
|
`ai-toolkit install --editors <name>` can write global files only for editors
|
|
8693
8715
|
with documented, file-based config surfaces:
|
|
8694
8716
|
|
|
@@ -8735,6 +8757,8 @@ These files still stay local to a repository as part of the core install model:
|
|
|
8735
8757
|
- `.git/hooks/pre-commit` (fallback)
|
|
8736
8758
|
- project-specific documentation or safety overlays
|
|
8737
8759
|
|
|
8760
|
+
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.
|
|
8761
|
+
|
|
8738
8762
|
Hooks do **not** live in project-local settings. They are merged only into global `~/.claude/settings.json`.
|
|
8739
8763
|
|
|
8740
8764
|
Codex is the exception in terms of file location, not hook ownership: its local
|
|
@@ -9616,15 +9640,15 @@ title: "AI Toolkit - External Integrations"
|
|
|
9616
9640
|
category: reference
|
|
9617
9641
|
service: ai-toolkit
|
|
9618
9642
|
tags: [integrations, rules, add-rule]
|
|
9619
|
-
version: "1.0
|
|
9643
|
+
version: "1.1.0"
|
|
9620
9644
|
created: "2026-03-26"
|
|
9621
|
-
last_updated: "2026-
|
|
9622
|
-
description: "How external repos
|
|
9645
|
+
last_updated: "2026-06-30"
|
|
9646
|
+
description: "How external repos register rules that ai-toolkit syncs into Claude Code user-level rules and other editor configs."
|
|
9623
9647
|
---
|
|
9624
9648
|
|
|
9625
9649
|
# External Integrations
|
|
9626
9650
|
|
|
9627
|
-
Repos that register rules with ai-toolkit so they are automatically
|
|
9651
|
+
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`.
|
|
9628
9652
|
|
|
9629
9653
|
---
|
|
9630
9654
|
|
|
@@ -9638,9 +9662,11 @@ ai-toolkit add-rule ./jira-rules.md
|
|
|
9638
9662
|
ai-toolkit update # inject now
|
|
9639
9663
|
```
|
|
9640
9664
|
|
|
9641
|
-
After registration, `ai-toolkit update` will always re-
|
|
9665
|
+
After registration, `ai-toolkit update` will always re-sync the rule. Registry location: `~/.softspark/ai-toolkit/rules/`.
|
|
9642
9666
|
|
|
9643
|
-
|
|
9667
|
+
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.
|
|
9668
|
+
|
|
9669
|
+
To unregister a rule (removes from `~/.softspark/ai-toolkit/rules/`, deletes the generated Claude rule file, and strips any legacy block from `CLAUDE.md`):
|
|
9644
9670
|
|
|
9645
9671
|
```bash
|
|
9646
9672
|
ai-toolkit remove-rule jira-rules
|
|
@@ -9650,17 +9676,13 @@ ai-toolkit remove-rule jira-rules
|
|
|
9650
9676
|
|
|
9651
9677
|
## How It Works
|
|
9652
9678
|
|
|
9653
|
-
|
|
9679
|
+
Claude Code uses file-based user-level rules:
|
|
9654
9680
|
|
|
9655
9681
|
```
|
|
9656
|
-
|
|
9657
|
-
|
|
9658
|
-
...rule content...
|
|
9659
|
-
|
|
9660
|
-
<!-- TOOLKIT:jira-rules END -->
|
|
9682
|
+
~/.claude/rules/ai-toolkit-registered-jira-rules.md
|
|
9661
9683
|
```
|
|
9662
9684
|
|
|
9663
|
-
|
|
9685
|
+
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.
|
|
9664
9686
|
|
|
9665
9687
|
---
|
|
9666
9688
|
|
|
@@ -9669,8 +9691,9 @@ Content outside markers is never touched. Re-running updates only the marked blo
|
|
|
9669
9691
|
1. Create `<name>-rules.md` in your repo with Claude-relevant conventions
|
|
9670
9692
|
2. Register it: `ai-toolkit add-rule ./<name>-rules.md`
|
|
9671
9693
|
3. Verify it appears in: `~/.softspark/ai-toolkit/rules/<name>-rules.md`
|
|
9672
|
-
4. On next `install` it will be listed in: `Rules
|
|
9673
|
-
5.
|
|
9694
|
+
4. On next `install` it will be listed in: `Rules synced: ... <name>-rules`
|
|
9695
|
+
5. Verify Claude receives it at: `~/.claude/rules/ai-toolkit-registered-<name>-rules.md`
|
|
9696
|
+
6. Add an entry below documenting the integration
|
|
9674
9697
|
|
|
9675
9698
|
---
|
|
9676
9699
|
|
|
@@ -9679,7 +9702,7 @@ Content outside markers is never touched. Re-running updates only the marked blo
|
|
|
9679
9702
|
### rag-mcp
|
|
9680
9703
|
|
|
9681
9704
|
**Rule file:** `rag-mcp.md`
|
|
9682
|
-
**
|
|
9705
|
+
**Claude rule file:** `~/.claude/rules/ai-toolkit-registered-rag-mcp.md`
|
|
9683
9706
|
|
|
9684
9707
|
Teaches Claude Code the RAG-MCP search protocol: always call `smart_query()` before answering, `kb_id` vs `file_path` distinction, available MCP tools.
|
|
9685
9708
|
|
|
@@ -9691,7 +9714,7 @@ ai-toolkit add-rule ./rag-mcp-rules.md
|
|
|
9691
9714
|
### jira-mcp
|
|
9692
9715
|
|
|
9693
9716
|
**Rule file:** `jira-rules.md`
|
|
9694
|
-
**
|
|
9717
|
+
**Claude rule file:** `~/.claude/rules/ai-toolkit-registered-jira-rules.md`
|
|
9695
9718
|
|
|
9696
9719
|
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).
|
|
9697
9720
|
|
|
@@ -9766,10 +9789,10 @@ title: "Language Rules System"
|
|
|
9766
9789
|
category: reference
|
|
9767
9790
|
service: ai-toolkit
|
|
9768
9791
|
tags: [rules, languages, coding-style, testing, patterns, security]
|
|
9769
|
-
version: "2.
|
|
9792
|
+
version: "2.1.0"
|
|
9770
9793
|
created: "2026-04-07"
|
|
9771
|
-
last_updated: "2026-
|
|
9772
|
-
description: "Reference for the language-specific rules system: 13 per-language rule sets shipped as knowledge skills, plus
|
|
9794
|
+
last_updated: "2026-06-30"
|
|
9795
|
+
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."
|
|
9773
9796
|
---
|
|
9774
9797
|
|
|
9775
9798
|
# Language Rules System
|
|
@@ -9778,7 +9801,7 @@ description: "Reference for the language-specific rules system: 13 per-language
|
|
|
9778
9801
|
|
|
9779
9802
|
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`:
|
|
9780
9803
|
|
|
9781
|
-
- **Common rules** (`app/rules/common/*.md`): full content is
|
|
9804
|
+
- **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.
|
|
9782
9805
|
- **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).
|
|
9783
9806
|
|
|
9784
9807
|
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.
|
|
@@ -9818,7 +9841,7 @@ app/rules/
|
|
|
9818
9841
|
└── medplum/
|
|
9819
9842
|
```
|
|
9820
9843
|
|
|
9821
|
-
**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
|
|
9844
|
+
**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.
|
|
9822
9845
|
|
|
9823
9846
|
## Supported Languages
|
|
9824
9847
|
|
|
@@ -9903,26 +9926,47 @@ ai-toolkit install --local --modules core,agents
|
|
|
9903
9926
|
|
|
9904
9927
|
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.
|
|
9905
9928
|
|
|
9906
|
-
Common rules are
|
|
9929
|
+
Common rules are installed as path-scoped Claude Code rule files:
|
|
9930
|
+
|
|
9931
|
+
```
|
|
9932
|
+
.claude/rules/
|
|
9933
|
+
├── ai-toolkit-coding-style.md
|
|
9934
|
+
├── ai-toolkit-git-workflow.md
|
|
9935
|
+
├── ai-toolkit-performance.md
|
|
9936
|
+
├── ai-toolkit-security.md
|
|
9937
|
+
└── ai-toolkit-testing.md
|
|
9938
|
+
```
|
|
9939
|
+
|
|
9940
|
+
Each file starts with:
|
|
9941
|
+
|
|
9942
|
+
```yaml
|
|
9943
|
+
---
|
|
9944
|
+
paths:
|
|
9945
|
+
- "**/*"
|
|
9946
|
+
---
|
|
9947
|
+
```
|
|
9948
|
+
|
|
9949
|
+
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):
|
|
9907
9950
|
|
|
9908
9951
|
```
|
|
9909
9952
|
<!-- TOOLKIT:language-rules START -->
|
|
9910
9953
|
# Language Rules
|
|
9911
9954
|
|
|
9912
|
-
Common
|
|
9955
|
+
Common ai-toolkit rules live in `.claude/rules/ai-toolkit-*.md`
|
|
9956
|
+
with Claude Code `paths` frontmatter so they load when project files
|
|
9957
|
+
are opened instead of expanding this CLAUDE.md at session startup.
|
|
9958
|
+
|
|
9959
|
+
Common rule files: `.claude/rules/ai-toolkit-coding-style.md`, ...
|
|
9960
|
+
|
|
9913
9961
|
Language-specific rules live in `<lang>-rules` knowledge skills (e.g.
|
|
9914
9962
|
`python-rules`, `typescript-rules`) and load automatically when their
|
|
9915
9963
|
triggers match.
|
|
9916
9964
|
|
|
9917
9965
|
Detected languages: `python-rules`, `typescript-rules`.
|
|
9918
|
-
|
|
9919
|
-
---
|
|
9920
|
-
|
|
9921
|
-
... full content of app/rules/common/*.md inlined here ...
|
|
9922
9966
|
<!-- TOOLKIT:language-rules END -->
|
|
9923
9967
|
```
|
|
9924
9968
|
|
|
9925
|
-
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.
|
|
9969
|
+
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.
|
|
9926
9970
|
|
|
9927
9971
|
### Generating language-rules skills
|
|
9928
9972
|
|
|
@@ -9969,8 +10013,8 @@ Language rules are tracked as modules in `manifest.json`:
|
|
|
9969
10013
|
| | Common rules | Per-language rules | Other skills |
|
|
9970
10014
|
|---|---|---|---|
|
|
9971
10015
|
| Source | `app/rules/common/` | `app/rules/<lang>/` | `app/skills/<name>/SKILL.md` |
|
|
9972
|
-
| Delivery to Claude |
|
|
9973
|
-
| Visibility |
|
|
10016
|
+
| 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 |
|
|
10017
|
+
| Visibility | Loaded when project files are opened | Loaded when triggers match (file extensions, framework names) | Loaded when triggers match |
|
|
9974
10018
|
| Scope | Language-agnostic standards (security, git, testing, perf, style) | Per-language coding-style, frameworks, patterns, security, testing | Domain skills (testing, debugging, RAG, etc.) |
|
|
9975
10019
|
| Install | `ai-toolkit install --local` | Global install (skills directory is symlinked) | Global install |
|
|
9976
10020
|
| Other editors | Inlined into editor-specific rule files | Inlined into editor-specific rule files (still full content, not skills) | N/A |
|
|
@@ -11891,9 +11935,9 @@ title: "Supported Tools Registry"
|
|
|
11891
11935
|
category: reference
|
|
11892
11936
|
service: ai-toolkit
|
|
11893
11937
|
tags: [editors, platforms, generators, integration, ecosystem]
|
|
11894
|
-
version: "1.
|
|
11938
|
+
version: "1.7.1"
|
|
11895
11939
|
created: "2026-04-23"
|
|
11896
|
-
last_updated: "2026-06-
|
|
11940
|
+
last_updated: "2026-06-30"
|
|
11897
11941
|
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."
|
|
11898
11942
|
---
|
|
11899
11943
|
|
|
@@ -11916,7 +11960,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11916
11960
|
| ID | `claude-code` |
|
|
11917
11961
|
| Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
|
|
11918
11962
|
| Release notes | https://github.com/anthropics/claude-code/releases |
|
|
11919
|
-
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.
|
|
11963
|
+
| Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.186) |
|
|
11920
11964
|
| 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+) |
|
|
11921
11965
|
| Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
|
|
11922
11966
|
| 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` |
|
|
@@ -11967,8 +12011,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11967
12011
|
| Release notes | https://github.blog/changelog/label/copilot/ |
|
|
11968
12012
|
| Config paths | `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md` |
|
|
11969
12013
|
| Our generators | `scripts/generate_copilot.py` |
|
|
11970
|
-
| Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, MCP |
|
|
11971
|
-
| 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). |
|
|
12014
|
+
| Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP |
|
|
12015
|
+
| 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). |
|
|
11972
12016
|
|
|
11973
12017
|
### Gemini CLI
|
|
11974
12018
|
|
|
@@ -11981,7 +12025,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
11981
12025
|
| 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) |
|
|
11982
12026
|
| 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) |
|
|
11983
12027
|
| Version probe | `gemini --version` |
|
|
11984
|
-
| Latest upstream | v0.
|
|
12028
|
+
| Latest upstream | v0.47.0 (2026-06-18). 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.48 preview migrates the `coreTools` setting to `tools.core` (a tool-allowlist key we do not emit, so no generator change). |
|
|
11985
12029
|
|
|
11986
12030
|
### Cline
|
|
11987
12031
|
|
|
@@ -12053,7 +12097,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12053
12097
|
| Field | Value |
|
|
12054
12098
|
|-------|-------|
|
|
12055
12099
|
| ID | `codex-cli` |
|
|
12056
|
-
| 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.
|
|
12100
|
+
| 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.0, 2026-06) |
|
|
12057
12101
|
| Release notes | https://github.com/openai/codex/releases |
|
|
12058
12102
|
| 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` |
|
|
12059
12103
|
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
|
|
@@ -12075,7 +12119,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
12075
12119
|
| Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
|
|
12076
12120
|
| 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 |
|
|
12077
12121
|
| Version probe | `opencode --version` |
|
|
12078
|
-
| Watch item | v1.16.0 (2026-06-05)
|
|
12122
|
+
| Watch item | v1.16.0 (2026-06-05) shipped an experimental v2 skill registry (flat-file skills, `slash` frontmatter key). As of the 2026-06-23 sync (upstream v1.17.9) it is still undocumented and not stabilized: the skills docs show only the nested `SKILL.md` layout with no `slash` key, so `generate_opencode*.py` is unchanged. Re-check next sync. |
|
|
12079
12123
|
|
|
12080
12124
|
---
|
|
12081
12125
|
|
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.11.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",
|
|
@@ -71,6 +71,8 @@
|
|
|
71
71
|
"files": [
|
|
72
72
|
"bin/",
|
|
73
73
|
"app/",
|
|
74
|
+
"!app/**/.claude",
|
|
75
|
+
"!app/**/.claude/**",
|
|
74
76
|
"!app/**/__pycache__",
|
|
75
77
|
"!app/**/*.pyc",
|
|
76
78
|
"scripts/",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
3
|
"description": "Authoritative registry of tools ai-toolkit integrates with. Consumed by scripts/ecosystem_doctor.py to detect upstream doc/version drift.",
|
|
4
|
-
"last_updated": "2026-06-
|
|
4
|
+
"last_updated": "2026-06-30",
|
|
5
5
|
"tools": [
|
|
6
6
|
{
|
|
7
7
|
"id": "claude-code",
|
|
@@ -200,6 +200,7 @@
|
|
|
200
200
|
"custom agents",
|
|
201
201
|
"prompt files",
|
|
202
202
|
"instructions.md",
|
|
203
|
+
"AGENTS.md",
|
|
203
204
|
"MCP"
|
|
204
205
|
],
|
|
205
206
|
"version_probe": null
|
|
@@ -225,7 +226,10 @@
|
|
|
225
226
|
".gemini/extensions/gemini-extension.json"
|
|
226
227
|
],
|
|
227
228
|
"our_generators": [
|
|
228
|
-
"scripts/generate_gemini.py"
|
|
229
|
+
"scripts/generate_gemini.py",
|
|
230
|
+
"scripts/generate_gemini_hooks.py",
|
|
231
|
+
"scripts/generate_gemini_commands.py",
|
|
232
|
+
"scripts/generate_gemini_skills.py"
|
|
229
233
|
],
|
|
230
234
|
"capability_markers": [
|
|
231
235
|
"GEMINI.md",
|
|
@@ -17,6 +17,12 @@ This generator produces three surfaces, all on the OSS/Free/Pro tier
|
|
|
17
17
|
Invoked manually in VS Code Copilot Chat via ``/name``. Written only
|
|
18
18
|
when ``generate()`` is called with a target directory.
|
|
19
19
|
|
|
20
|
+
GitHub Copilot code review (generally available 2026-06-18, all tiers) now
|
|
21
|
+
automatically reads the root-level ``AGENTS.md`` when generating review
|
|
22
|
+
feedback. We already emit that file via ``scripts/generate_agents_md.py``, so
|
|
23
|
+
no Copilot-specific emission is added here; ``AGENTS.md`` is tracked in this
|
|
24
|
+
tool's ``capability_markers`` in ``scripts/ecosystem_tools.json``.
|
|
25
|
+
|
|
20
26
|
Features that live on Pro/Pro+/Business/Enterprise tiers are intentionally
|
|
21
27
|
not generated (classified as class C in the ecosystem-sync SOP):
|
|
22
28
|
* ``.github/agents/*.agent.md`` — custom agent profiles (tier-gated)
|
|
@@ -10,8 +10,10 @@ This is the proper progressive-disclosure replacement for the v1.3.8 pointer
|
|
|
10
10
|
block in ``.claude/CLAUDE.md``: instead of nudging Claude to Read absolute
|
|
11
11
|
nvm-pinned paths on demand, the rules ride on the Agent Skills mechanism.
|
|
12
12
|
|
|
13
|
-
Common rules (``app/rules/common/``)
|
|
14
|
-
|
|
13
|
+
Common rules (``app/rules/common/``) are installed as Claude Code
|
|
14
|
+
path-scoped ``.claude/rules/ai-toolkit-*.md`` files by ``install --local``.
|
|
15
|
+
This keeps ``CLAUDE.md`` below Claude's current size guidance while still
|
|
16
|
+
loading common guidance when project files are opened.
|
|
15
17
|
|
|
16
18
|
Idempotent: rerunning overwrites generated SKILL.md but leaves any other
|
|
17
19
|
files in the skill directory alone.
|
package/scripts/install.py
CHANGED
|
@@ -9,7 +9,7 @@ Claude Code (~/.claude/):
|
|
|
9
9
|
- Per-file symlinks: agents/*.md, skills/*/ (merges with user files)
|
|
10
10
|
- Merged JSON: hooks.json (toolkit entries tagged with _source)
|
|
11
11
|
- Marker injection: constitution.md, ARCHITECTURE.md (preserves user content)
|
|
12
|
-
-
|
|
12
|
+
- User-level rules: rules/ai-toolkit-*.md plus compact CLAUDE.md index
|
|
13
13
|
|
|
14
14
|
Other tools (global config locations):
|
|
15
15
|
- Windsurf: ~/.codeium/windsurf/memories/global_rules.md + ~/.codeium/windsurf/skills/
|
|
@@ -21,7 +21,7 @@ Other tools (global config locations):
|
|
|
21
21
|
- Codex: ~/AGENTS.md, ~/.agents/, ~/.codex/hooks.json
|
|
22
22
|
- opencode: ~/.config/opencode/
|
|
23
23
|
|
|
24
|
-
Registered rules (~/.softspark/ai-toolkit/rules/*.md) are also
|
|
24
|
+
Registered rules (~/.softspark/ai-toolkit/rules/*.md) are also synced into
|
|
25
25
|
all of the above. Add rules with: ai-toolkit add-rule <rule.md>
|
|
26
26
|
|
|
27
27
|
Usage:
|
|
@@ -412,7 +412,7 @@ def print_summary(local: bool = False) -> None:
|
|
|
412
412
|
else:
|
|
413
413
|
print()
|
|
414
414
|
print("Next steps:")
|
|
415
|
-
print(" 1.
|
|
415
|
+
print(" 1. Add hand-written global rules under ~/.claude/rules/ (avoid ai-toolkit-* prefix)")
|
|
416
416
|
print(" 2. Per project: ai-toolkit install --local --editors all")
|
|
417
417
|
print(" 3. To update: npm install -g @softspark/ai-toolkit@latest && ai-toolkit update")
|
|
418
418
|
print(" 4. To register rules from other tools: ai-toolkit add-rule <rule.md>")
|