@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/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` | Marker injection of `app/rules/*.md` via `inject_rule_cli.py` | User content outside markers untouched |
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
- # → injects the rule into ~/.claude/CLAUDE.md and all global editor configs
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 rules + toolkit rule markers)
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/ # Rules auto-injected into ~/.claude/CLAUDE.md
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/copilot-instructions.md (sources _common.py)
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 rules
6321
- CLAUDE.md ← marker injection (rules) .claude/
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/CLAUDE.md` | Unregister rule and remove its block |
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 `UserPromptSubmit` JSON output is event-specific. When emitting context,
7185
- the hook must include the event name alongside the context:
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/CLAUDE.md` | Strip markers by block name | Yes |
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 + re-inject all rules on next `update` | Yes |
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
- Injects a Markdown rules file into `~/.claude/CLAUDE.md` between named HTML comment markers.
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
- Strips a previously injected rule block from `~/.claude/CLAUDE.md`.
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.1"
8647
+ version: "3.1.0"
8639
8648
  created: "2026-03-26"
8640
- last_updated: "2026-04-28"
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 rules to every project without committing toolkit boilerplate into each repository.
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.5"
9643
+ version: "1.1.0"
9620
9644
  created: "2026-03-26"
9621
- last_updated: "2026-03-26"
9622
- description: "How external repos inject rules into ~/.claude/CLAUDE.md via ai-toolkit"
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 injected into `~/.claude/CLAUDE.md` on every `update`.
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-inject the rule. Registry location: `~/.softspark/ai-toolkit/rules/`.
9665
+ After registration, `ai-toolkit update` will always re-sync the rule. Registry location: `~/.softspark/ai-toolkit/rules/`.
9642
9666
 
9643
- To unregister a rule (removes from `~/.softspark/ai-toolkit/rules/` and strips the block from `CLAUDE.md`):
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
- Both mechanisms use marker-based idempotent injection. Rule name = filename without `.md`.
9679
+ Claude Code uses file-based user-level rules:
9654
9680
 
9655
9681
  ```
9656
- <!-- TOOLKIT:jira-rules START -->
9657
-
9658
- ...rule content...
9659
-
9660
- <!-- TOOLKIT:jira-rules END -->
9682
+ ~/.claude/rules/ai-toolkit-registered-jira-rules.md
9661
9683
  ```
9662
9684
 
9663
- Content outside markers is never touched. Re-running updates only the marked block.
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 injected: ... <name>-rules`
9673
- 5. Add an entry below documenting the integration
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
- **Marker:** `TOOLKIT:rag-mcp`
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
- **Marker:** `TOOLKIT:jira-rules`
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.0.0"
9792
+ version: "2.1.0"
9770
9793
  created: "2026-04-07"
9771
- last_updated: "2026-04-28"
9772
- description: "Reference for the language-specific rules system: 13 per-language rule sets shipped as knowledge skills, plus a common set inlined into CLAUDE.md."
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 inlined into the project's `.claude/CLAUDE.md` under a single `<!-- TOOLKIT:language-rules START -->` marker. They cover coding-style, git-workflow, performance, security, and testing concerns that apply regardless of language, so they stay always visible.
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 inlined into CLAUDE.md.
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 injected into the project `CLAUDE.md` between a single named marker (the per-language markers from v1.x are no longer used):
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 (language-agnostic) rules apply to every change in this project.
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 | Inlined into project `CLAUDE.md` (`--local`) | Generated as `<lang>-rules` knowledge skills, loaded contextually | Loaded contextually by description match |
9973
- | Visibility | Always in context | Loaded when triggers match (file extensions, framework names) | Loaded when triggers match |
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.6.0"
11938
+ version: "1.7.1"
11895
11939
  created: "2026-04-23"
11896
- last_updated: "2026-06-10"
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.170) |
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.45.2 (2026-06-05). NOTE: Gemini CLI drops free/paid tiers 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist keeps Gemini CLI. |
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.138.0, 2026-06) |
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) ships an experimental v2 skill registry (flat-file skills, `slash` frontmatter key) undocumented as of 2026-06-09; re-check next sync before touching `generate_opencode*.py`. |
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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.10.0",
2
+ "version": "4.11.0",
3
3
  "components": {
4
4
  "agents": {
5
5
  "description": "44 specialized agents (orchestrator, backend, frontend, security, devops, etc.)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softspark/ai-toolkit",
3
- "version": "4.10.0",
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-10",
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/``) stay inlined in ``CLAUDE.md`` because
14
- they are language-agnostic and should be visible regardless of context.
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.
@@ -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
- - Rules injected into ~/.claude/CLAUDE.md
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 injected into
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. Edit ~/.claude/CLAUDE.md -- add your global rules above the toolkit sections")
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>")