@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.
@@ -3,15 +3,15 @@ title: "AI Toolkit - External Integrations"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [integrations, rules, add-rule]
6
- version: "1.0.5"
6
+ version: "1.1.0"
7
7
  created: "2026-03-26"
8
- last_updated: "2026-03-26"
9
- description: "How external repos inject rules into ~/.claude/CLAUDE.md via ai-toolkit"
8
+ last_updated: "2026-06-30"
9
+ description: "How external repos register rules that ai-toolkit syncs into Claude Code user-level rules and other editor configs."
10
10
  ---
11
11
 
12
12
  # External Integrations
13
13
 
14
- Repos that register rules with ai-toolkit so they are automatically injected into `~/.claude/CLAUDE.md` on every `update`.
14
+ Repos that register rules with ai-toolkit so they are automatically synced into Claude Code user-level rules and other editor configs on every `update`.
15
15
 
16
16
  ---
17
17
 
@@ -25,9 +25,11 @@ ai-toolkit add-rule ./jira-rules.md
25
25
  ai-toolkit update # inject now
26
26
  ```
27
27
 
28
- After registration, `ai-toolkit update` will always re-inject the rule. Registry location: `~/.softspark/ai-toolkit/rules/`.
28
+ After registration, `ai-toolkit update` will always re-sync the rule. Registry location: `~/.softspark/ai-toolkit/rules/`.
29
29
 
30
- To unregister a rule (removes from `~/.softspark/ai-toolkit/rules/` and strips the block from `CLAUDE.md`):
30
+ For Claude Code, registered rules are written to `~/.claude/rules/ai-toolkit-registered-<name>.md`. The `ai-toolkit-*` prefix in `~/.claude/rules/` is installer-managed; use another prefix for hand-written Claude rules.
31
+
32
+ To unregister a rule (removes from `~/.softspark/ai-toolkit/rules/`, deletes the generated Claude rule file, and strips any legacy block from `CLAUDE.md`):
31
33
 
32
34
  ```bash
33
35
  ai-toolkit remove-rule jira-rules
@@ -37,17 +39,13 @@ ai-toolkit remove-rule jira-rules
37
39
 
38
40
  ## How It Works
39
41
 
40
- Both mechanisms use marker-based idempotent injection. Rule name = filename without `.md`.
42
+ Claude Code uses file-based user-level rules:
41
43
 
42
44
  ```
43
- <!-- TOOLKIT:jira-rules START -->
44
-
45
- ...rule content...
46
-
47
- <!-- TOOLKIT:jira-rules END -->
45
+ ~/.claude/rules/ai-toolkit-registered-jira-rules.md
48
46
  ```
49
47
 
50
- Content outside markers is never touched. Re-running updates only the marked block.
48
+ Other editors receive the same registered rule through their native generated rule surfaces. Legacy `CLAUDE.md` marker sections are removed during migration, but content outside toolkit-managed markers is never touched.
51
49
 
52
50
  ---
53
51
 
@@ -56,8 +54,9 @@ Content outside markers is never touched. Re-running updates only the marked blo
56
54
  1. Create `<name>-rules.md` in your repo with Claude-relevant conventions
57
55
  2. Register it: `ai-toolkit add-rule ./<name>-rules.md`
58
56
  3. Verify it appears in: `~/.softspark/ai-toolkit/rules/<name>-rules.md`
59
- 4. On next `install` it will be listed in: `Rules injected: ... <name>-rules`
60
- 5. Add an entry below documenting the integration
57
+ 4. On next `install` it will be listed in: `Rules synced: ... <name>-rules`
58
+ 5. Verify Claude receives it at: `~/.claude/rules/ai-toolkit-registered-<name>-rules.md`
59
+ 6. Add an entry below documenting the integration
61
60
 
62
61
  ---
63
62
 
@@ -66,7 +65,7 @@ Content outside markers is never touched. Re-running updates only the marked blo
66
65
  ### rag-mcp
67
66
 
68
67
  **Rule file:** `rag-mcp.md`
69
- **Marker:** `TOOLKIT:rag-mcp`
68
+ **Claude rule file:** `~/.claude/rules/ai-toolkit-registered-rag-mcp.md`
70
69
 
71
70
  Teaches Claude Code the RAG-MCP search protocol: always call `smart_query()` before answering, `kb_id` vs `file_path` distinction, available MCP tools.
72
71
 
@@ -78,7 +77,7 @@ ai-toolkit add-rule ./rag-mcp-rules.md
78
77
  ### jira-mcp
79
78
 
80
79
  **Rule file:** `jira-rules.md`
81
- **Marker:** `TOOLKIT:jira-rules`
80
+ **Claude rule file:** `~/.claude/rules/ai-toolkit-registered-jira-rules.md`
82
81
 
83
82
  Teaches Claude Code the Jira MCP tool set: `sync_tasks`, `read_cached_tasks`, `update_task_status`, `log_task_time`, and key rules (sync first, hours only, check transitions).
84
83
 
@@ -3,10 +3,10 @@ title: "Language Rules System"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [rules, languages, coding-style, testing, patterns, security]
6
- version: "2.0.0"
6
+ version: "2.1.0"
7
7
  created: "2026-04-07"
8
- last_updated: "2026-04-28"
9
- 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."
8
+ last_updated: "2026-06-30"
9
+ 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."
10
10
  ---
11
11
 
12
12
  # Language Rules System
@@ -15,7 +15,7 @@ description: "Reference for the language-specific rules system: 13 per-language
15
15
 
16
16
  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`:
17
17
 
18
- - **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.
18
+ - **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.
19
19
  - **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).
20
20
 
21
21
  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.
@@ -55,7 +55,7 @@ app/rules/
55
55
  └── medplum/
56
56
  ```
57
57
 
58
- **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.
58
+ **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.
59
59
 
60
60
  ## Supported Languages
61
61
 
@@ -140,26 +140,47 @@ ai-toolkit install --local --modules core,agents
140
140
 
141
141
  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.
142
142
 
143
- 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):
143
+ Common rules are installed as path-scoped Claude Code rule files:
144
+
145
+ ```
146
+ .claude/rules/
147
+ ├── ai-toolkit-coding-style.md
148
+ ├── ai-toolkit-git-workflow.md
149
+ ├── ai-toolkit-performance.md
150
+ ├── ai-toolkit-security.md
151
+ └── ai-toolkit-testing.md
152
+ ```
153
+
154
+ Each file starts with:
155
+
156
+ ```yaml
157
+ ---
158
+ paths:
159
+ - "**/*"
160
+ ---
161
+ ```
162
+
163
+ 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):
144
164
 
145
165
  ```
146
166
  <!-- TOOLKIT:language-rules START -->
147
167
  # Language Rules
148
168
 
149
- Common (language-agnostic) rules apply to every change in this project.
169
+ Common ai-toolkit rules live in `.claude/rules/ai-toolkit-*.md`
170
+ with Claude Code `paths` frontmatter so they load when project files
171
+ are opened instead of expanding this CLAUDE.md at session startup.
172
+
173
+ Common rule files: `.claude/rules/ai-toolkit-coding-style.md`, ...
174
+
150
175
  Language-specific rules live in `<lang>-rules` knowledge skills (e.g.
151
176
  `python-rules`, `typescript-rules`) and load automatically when their
152
177
  triggers match.
153
178
 
154
179
  Detected languages: `python-rules`, `typescript-rules`.
155
-
156
- ---
157
-
158
- ... full content of app/rules/common/*.md inlined here ...
159
180
  <!-- TOOLKIT:language-rules END -->
160
181
  ```
161
182
 
162
- 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.
183
+ 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.
163
184
 
164
185
  ### Generating language-rules skills
165
186
 
@@ -206,8 +227,8 @@ Language rules are tracked as modules in `manifest.json`:
206
227
  | | Common rules | Per-language rules | Other skills |
207
228
  |---|---|---|---|
208
229
  | Source | `app/rules/common/` | `app/rules/<lang>/` | `app/skills/<name>/SKILL.md` |
209
- | Delivery to Claude | Inlined into project `CLAUDE.md` (`--local`) | Generated as `<lang>-rules` knowledge skills, loaded contextually | Loaded contextually by description match |
210
- | Visibility | Always in context | Loaded when triggers match (file extensions, framework names) | Loaded when triggers match |
230
+ | 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 |
231
+ | Visibility | Loaded when project files are opened | Loaded when triggers match (file extensions, framework names) | Loaded when triggers match |
211
232
  | Scope | Language-agnostic standards (security, git, testing, perf, style) | Per-language coding-style, frameworks, patterns, security, testing | Domain skills (testing, debugging, RAG, etc.) |
212
233
  | Install | `ai-toolkit install --local` | Global install (skills directory is symlinked) | Global install |
213
234
  | Other editors | Inlined into editor-specific rule files | Inlined into editor-specific rule files (still full content, not skills) | N/A |
@@ -3,9 +3,9 @@ title: "Supported Tools Registry"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [editors, platforms, generators, integration, ecosystem]
6
- version: "1.6.0"
6
+ version: "1.7.1"
7
7
  created: "2026-04-23"
8
- last_updated: "2026-06-10"
8
+ last_updated: "2026-06-30"
9
9
  description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code + 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
10
10
  ---
11
11
 
@@ -28,7 +28,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
28
28
  | ID | `claude-code` |
29
29
  | Docs | https://code.claude.com/docs (platform.claude.com/docs 307-redirects here) |
30
30
  | Release notes | https://github.com/anthropics/claude-code/releases |
31
- | Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.170) |
31
+ | Changelog | https://code.claude.com/docs/en/changelog (lists current 2.1.186) |
32
32
  | Config paths | `~/.claude/settings.json`, `.claude/settings.json` (project, committed), `.claude/settings.local.json`, `CLAUDE.md`, `.claude/rules/*.md`, `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`, `~/.claude/themes/*.json` (v2.1.118+) |
33
33
  | Our generators | — (Claude Code is the primary target; toolkit content ships directly as `.md` files and `settings.json` merges) |
34
34
  | Tracked hook events | Core: `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `Notification`, `MessageDisplay`. Tool: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`. Turn: `Stop`, `StopFailure`, `UserPromptExpansion`. Subagent: `SubagentStart`, `SubagentStop`. Compaction: `PreCompact`, `PostCompact`. Permissions: `PermissionRequest`, `PermissionDenied`. Elicitation: `Elicitation`, `ElicitationResult`. Teams: `TaskCreated`, `TaskCompleted`, `TeammateIdle`. Worktrees/env: `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `FileChanged`, `ConfigChange`. Setup: `Setup`, `InstructionsLoaded` |
@@ -79,8 +79,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
79
79
  | Release notes | https://github.blog/changelog/label/copilot/ |
80
80
  | Config paths | `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, `.github/prompts/*.prompt.md`, `AGENTS.md` |
81
81
  | Our generators | `scripts/generate_copilot.py` |
82
- | Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, MCP |
83
- | 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). |
82
+ | Tracked capabilities | `copilot-instructions.md`, Copilot Chat, Copilot Workspace, Copilot cloud agent, `applyTo`, custom agents, prompt files, `instructions.md`, `AGENTS.md`, MCP |
83
+ | 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). |
84
84
 
85
85
  ### Gemini CLI
86
86
 
@@ -93,7 +93,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
93
93
  | Our generators | `scripts/generate_gemini.py`, `scripts/generate_gemini_hooks.py` (profile>=standard), `scripts/generate_gemini_commands.py` (profile=full), `scripts/generate_gemini_skills.py` (profile=full) |
94
94
  | Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeToolSelection`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `AfterModel`, `Notification`, `PreCompress`, `SessionStart`, `SessionEnd`, `SKILL.md`, `activate_skill`, custom commands, `gemini-extension.json` (no native `Stop` event — generator maps Stop-equivalent to `AfterAgent`; 11 documented hook events total) |
95
95
  | Version probe | `gemini --version` |
96
- | Latest upstream | v0.45.2 (2026-06-05). NOTE: Gemini CLI drops free/paid tiers 2026-06-18 in favor of Antigravity CLI (we ship `generate_antigravity.py`); enterprise Code Assist keeps Gemini CLI. |
96
+ | 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). |
97
97
 
98
98
  ### Cline
99
99
 
@@ -165,7 +165,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
165
165
  | Field | Value |
166
166
  |-------|-------|
167
167
  | ID | `codex-cli` |
168
- | Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`; latest stable codex-cli 0.138.0, 2026-06) |
168
+ | Docs | https://developers.openai.com/codex (live docs site; config pages split into `/codex/config-basic`, `/codex/config-reference`, `/codex/config-advanced` plus `/codex/hooks`, `/codex/skills`; latest stable codex-cli 0.142.0, 2026-06) |
169
169
  | Release notes | https://github.com/openai/codex/releases |
170
170
  | Config paths | `AGENTS.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `.codex/config.toml` (project layers, root→cwd, closest wins, trusted projects only), `~/.codex/config.toml` |
171
171
  | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
@@ -187,7 +187,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
187
187
  | Tracked plugin events | `session.created`, `session.compacted`, `session.deleted`, `message.updated`, `tool.execute.before`, `tool.execute.after`, `permission.asked`, `command.executed` |
188
188
  | Other capabilities | `opencode.json` config, primary + subagent modes, `@`-mention subagents, `/`-invocation commands, MCP (local + remote), plugin hooks in JS/TS, native `SKILL.md` discovery with Claude-compatible fallback, `permission.skill.*` matrix |
189
189
  | Version probe | `opencode --version` |
190
- | Watch item | v1.16.0 (2026-06-05) ships an experimental v2 skill registry (flat-file skills, `slash` frontmatter key) undocumented as of 2026-06-09; re-check next sync before touching `generate_opencode*.py`. |
190
+ | 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. |
191
191
 
192
192
  ---
193
193