@softspark/ai-toolkit 3.0.2 → 3.1.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.
Files changed (41) hide show
  1. package/AGENTS.md +13 -0
  2. package/CHANGELOG.md +23 -0
  3. package/README.md +30 -23
  4. package/app/.claude-plugin/plugin.json +1 -1
  5. package/app/skills/cpp-rules/SKILL.md +275 -0
  6. package/app/skills/csharp-rules/SKILL.md +282 -0
  7. package/app/skills/dart-rules/SKILL.md +299 -0
  8. package/app/skills/golang-rules/SKILL.md +262 -0
  9. package/app/skills/java-rules/SKILL.md +273 -0
  10. package/app/skills/kotlin-rules/SKILL.md +271 -0
  11. package/app/skills/medplum-rules/SKILL.md +271 -0
  12. package/app/skills/php-rules/SKILL.md +292 -0
  13. package/app/skills/python-rules/SKILL.md +257 -0
  14. package/app/skills/ruby-rules/SKILL.md +286 -0
  15. package/app/skills/rust-rules/SKILL.md +276 -0
  16. package/app/skills/swift-rules/SKILL.md +293 -0
  17. package/app/skills/typescript-rules/SKILL.md +249 -0
  18. package/benchmarks/ecosystem-doctor-snapshot.json +14 -14
  19. package/kb/history/completed/deep-coverage-v3-20260423.md +3 -3
  20. package/kb/history/completed/ecosystem-deep-sweep-20260423.md +1 -1
  21. package/kb/procedures/release-preparation-sop.md +4 -4
  22. package/kb/procedures/release-verification-sop.md +11 -12
  23. package/kb/reference/architecture-overview.md +1 -1
  24. package/kb/reference/global-install-model.md +29 -6
  25. package/kb/reference/language-rules.md +54 -18
  26. package/kb/reference/mcp-editor-compatibility.md +4 -3
  27. package/kb/reference/mcp-templates.md +3 -2
  28. package/kb/reference/supported-tools-registry.md +10 -8
  29. package/llms-full.txt +133 -58
  30. package/manifest.json +3 -3
  31. package/package.json +10 -3
  32. package/scripts/codex_skill_adapter.py +19 -3
  33. package/scripts/ecosystem_tools.json +7 -7
  34. package/scripts/generate_cline_rules.py +17 -8
  35. package/scripts/generate_codex_skills.py +33 -96
  36. package/scripts/generate_language_rules_skills.py +232 -0
  37. package/scripts/generate_roo_rules.py +11 -3
  38. package/scripts/install.py +6 -1
  39. package/scripts/install_steps/ai_tools.py +154 -51
  40. package/scripts/install_steps/install_state.py +14 -2
  41. package/scripts/mcp_editors.py +7 -0
@@ -259,7 +259,7 @@ Orchestrator's final output:
259
259
 
260
260
  ### Open items flagged for future passes
261
261
 
262
- 1. **Native `.codex/skills/*/SKILL.md` emission** (class B) — would write ~99 skill directories. Needs opt-in flag + minor bump.
262
+ 1. **Native `.agents/skills/*/SKILL.md` emission** (class B) — writes the Codex skill catalog to the upstream discovery path.
263
263
  2. **`.opencode/skills/` duplication** — deferred indefinitely; `.claude/skills/` fallback already works.
264
264
  3. **New generators needed**: `generate_gemini_hooks.py`, `generate_augment_agents.py`, `generate_augment_commands.py`, `generate_augment_hooks.py`.
265
265
  4. **Cross-editor hooks unification**: Cursor and Windsurf both shipped `.cursor/hooks.json` and `.windsurf/hooks.json` — worth a dedicated shared-schema pass rather than per-editor copies.
@@ -3,9 +3,9 @@ title: "SOP: Release Preparation"
3
3
  category: procedures
4
4
  service: ai-toolkit
5
5
  tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem]
6
- version: "1.10.0"
6
+ version: "1.10.1"
7
7
  created: "2026-04-10"
8
- last_updated: "2026-04-24"
8
+ last_updated: "2026-04-28"
9
9
  description: "Step-by-step checklist for preparing a new ai-toolkit release — ecosystem-sync drift check, version sync, changelog, artifact regeneration, validation, and tagging. Run BEFORE every git tag. Includes mandatory Provenance, SARIF, and checksum-pin checks added in v2.8.0, the single-run npm test discipline added in v1.8.0, the ecosystem-sync gate added in v1.9.0, and the registry-vs-generators drift gate added in v1.10.0."
10
10
  ---
11
11
 
@@ -279,7 +279,7 @@ python3 scripts/audit_skills.py --sarif > audit.sarif # MANDATORY — GHAS
279
279
  python3 scripts/audit_skills.py --permissions # review Bash/Write/Edit footprint
280
280
 
281
281
  # Registry / generator drift (added in 1.10.0). Meta-generators excluded.
282
- META="generate_agents_md.py|generate_llms_txt.py"
282
+ META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
283
283
  diff \
284
284
  <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) \
285
285
  <(ls scripts/generate_*.py | grep -vE "$META" | sort -u) \
@@ -304,7 +304,7 @@ echo "ok: $(grep -c '^ok ' /tmp/npm-test.log) | not ok: $(grep -c '^not ok' /tmp
304
304
 
305
305
  **One-liner:**
306
306
  ```bash
307
- python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > audit.sarif && diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE 'generate_agents_md\.py|generate_llms_txt\.py' | sort -u) && npm test
307
+ python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > audit.sarif && diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE 'generate_agents_md\.py|generate_llms_txt\.py|generate_language_rules_skills\.py' | sort -u) && npm test
308
308
  ```
309
309
 
310
310
  **If tests fail:** Fix the issue, do NOT skip. Common failures:
@@ -3,9 +3,9 @@ title: "SOP: Release Verification"
3
3
  category: procedures
4
4
  service: ai-toolkit
5
5
  tags: [sop, verification, release, smoke-test, install, update, qa, provenance, sarif]
6
- version: "1.4.0"
6
+ version: "1.4.1"
7
7
  created: "2026-04-08"
8
- last_updated: "2026-04-24"
8
+ last_updated: "2026-04-28"
9
9
  description: "End-to-end smoke test after installing or updating @softspark/ai-toolkit — verifies CLI, install, doctor, validation, tests, eject, npm provenance attestation, SARIF audit, and per-skill permissions. Reflects the v2.8.0 supply-chain standard. v1.3.0 added the single-run npm test discipline; v1.4.0 adds v3.0.0 deep-coverage checks (--profile full, --codex-skills, breaking-change surfaces, idempotence, registry drift, live-JSON parse) and refreshes stale thresholds."
10
10
  ---
11
11
 
@@ -54,7 +54,7 @@ python3 scripts/audit_skills.py --permissions | head -30 # 12. Broad-access s
54
54
  npm view @softspark/ai-toolkit@X.Y.Z --json | python3 -c "import json,sys; d=json.load(sys.stdin); assert d['dist']['attestations']['provenance']['predicateType']=='https://slsa.dev/provenance/v1'; print('PROVENANCE OK')" # 13. Provenance attested on npm?
55
55
 
56
56
  # Deep-coverage verification (Phase 9, v3.0.0+)
57
- META="generate_agents_md.py|generate_llms_txt.py"
57
+ META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
58
58
  diff <(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) <(ls scripts/generate_*.py | grep -vE "$META" | sort -u) && echo "OK: registry matches" # 14. Registry <-> generators drift?
59
59
  ```
60
60
 
@@ -124,7 +124,7 @@ ai-toolkit status
124
124
  - [ ] Agents >= 44
125
125
  - [ ] Skills >= 99
126
126
  - [ ] Hooks merged into settings.json
127
- - [ ] "Other AI Tools" section lists cursor, windsurf, gemini, augment (antigravity via --local)
127
+ - [ ] "Other AI Tools" section lists documented global targets only: aider, augment, cline, codex, gemini, opencode, roo, windsurf (Cursor, Copilot, Antigravity via --local for rules)
128
128
 
129
129
  **Verify `status`:**
130
130
  - [ ] Version matches expected
@@ -338,7 +338,7 @@ These verify the native-surface generators shipped in v3.0.0 actually emit the r
338
338
  D=/tmp/aitk-profile-full-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
339
339
  ai-toolkit install --local --editors cursor,windsurf,gemini,augment,codex \
340
340
  --profile full --codex-skills --dry-run 2>&1 \
341
- | grep -E "\\.cursor/(hooks\\.json|agents)|\\.windsurf/hooks\\.json|\\.gemini/(settings\\.json|commands)|\\.augment/(agents|commands)|\\.codex/skills"
341
+ | grep -E "\\.cursor/(hooks\\.json|agents)|\\.windsurf/hooks\\.json|\\.gemini/(settings\\.json|commands)|\\.augment/(agents|commands)|\\.agents/skills"
342
342
  ```
343
343
 
344
344
  **Verify** — at least the following lines appear:
@@ -346,22 +346,21 @@ ai-toolkit install --local --editors cursor,windsurf,gemini,augment,codex \
346
346
  - [ ] `.windsurf/hooks.json`
347
347
  - [ ] `.gemini/settings.json` hooks AND `.gemini/commands/`
348
348
  - [ ] `.augment/agents/` + `.augment/commands/` + `$HOME/.augment/settings.json`
349
- - [ ] `.codex/skills/` (opt-in via `--codex-skills`)
349
+ - [ ] `.agents/skills/` (Codex native discovery path; refreshed by `--codex-skills`)
350
350
 
351
351
  ### 9.2 `--codex-skills` is orthogonal to `--profile`
352
352
 
353
353
  ```bash
354
354
  D=/tmp/aitk-codex-skills-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
355
355
  ai-toolkit install --local --editors codex --profile standard --codex-skills --dry-run 2>&1 \
356
- | grep -q "Would generate: .codex/skills" && echo "OK: --codex-skills works without --profile full"
356
+ | grep -q "Would refresh: .agents/skills" && echo "OK: --codex-skills refreshes .agents/skills without --profile full"
357
357
  ai-toolkit install --local --editors codex --profile full --dry-run 2>&1 \
358
- | grep -q "Would generate: .codex/skills" && echo "FAIL: --profile full should NOT auto-emit .codex/skills" \
359
- || echo "OK: --profile full alone does not auto-emit .codex/skills (correct — opt-in only)"
358
+ | grep -q "Would generate: .agents/skills" && echo "OK: Codex skills use .agents/skills at profile full"
360
359
  ```
361
360
 
362
361
  **Verify:**
363
- - [ ] `--codex-skills` emits `.codex/skills/` at any profile
364
- - [ ] `--profile full` alone does NOT emit `.codex/skills/` (must be opt-in)
362
+ - [ ] `--codex-skills` refreshes `.agents/skills/` at any profile
363
+ - [ ] `--profile full` never emits `.codex/skills/`; Codex skills use `.agents/skills/`
365
364
 
366
365
  ### 9.3 Breaking-change surfaces land on `--profile standard`
367
366
 
@@ -411,7 +410,7 @@ done
411
410
  `kb/reference/supported-tools-registry.md` should enumerate every per-editor `scripts/generate_*.py` we ship. Meta-generators (`generate_agents_md.py`, `generate_llms_txt.py`) are excluded — they produce docs/artifacts, not editor configs.
412
411
 
413
412
  ```bash
414
- META="generate_agents_md.py|generate_llms_txt.py"
413
+ META="generate_agents_md.py|generate_llms_txt.py|generate_language_rules_skills.py"
415
414
  REG=$(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u)
416
415
  FS=$(ls scripts/generate_*.py | grep -vE "$META" | sort -u)
417
416
  diff <(echo "$REG") <(echo "$FS") && echo "OK: registry matches filesystem" || echo "DRIFT: update supported-tools-registry.md"
@@ -187,7 +187,7 @@ Three tiers determine how to approach a task:
187
187
  |------|-------|-----------|-------|
188
188
  | Task | `disable-model-invocation: true` | User via `/skill` only | 32 |
189
189
  | Hybrid | (neither) | User via `/skill` + agent knowledge | 31 |
190
- | Knowledge | `user-invocable: false` | Claude auto-loads | 36 |
190
+ | Knowledge | `user-invocable: false` | Claude auto-loads | 49 |
191
191
 
192
192
  ## Multi-Agent Execution
193
193
 
@@ -3,9 +3,9 @@ title: "Global Install Model"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [install, global, claude, codex, plugins, local-setup]
6
- version: "3.0.0"
6
+ version: "3.0.1"
7
7
  created: "2026-03-26"
8
- last_updated: "2026-04-23"
8
+ last_updated: "2026-04-28"
9
9
  description: "Reference description of the global install target, project-local editor setup, global Codex plugin layering, and command responsibilities in ai-toolkit."
10
10
  ---
11
11
 
@@ -17,9 +17,12 @@ description: "Reference description of the global install target, project-local
17
17
 
18
18
  That means one machine-level install provides agents, skills, hooks, and rules to every project without committing toolkit boilerplate into each repository.
19
19
 
20
- Codex remains project-local for the core toolkit install, but experimental
21
- plugin packs can now layer a global Codex target in `HOME` when explicitly
22
- installed with `ai-toolkit plugin install --editor codex`.
20
+ Other editor targets are opt-in and only use documented file surfaces. Cursor
21
+ rules stay project-local because Cursor's global user rules are managed through
22
+ the settings UI, not a stable merge-safe file. Codex remains project-local for
23
+ the core toolkit install, but experimental plugin packs can layer a global
24
+ Codex target in `HOME` when explicitly installed with
25
+ `ai-toolkit plugin install --editor codex`.
23
26
 
24
27
  ## Command Responsibilities
25
28
 
@@ -50,7 +53,25 @@ The `--profile` flag controls how much of each editor's native surface is activa
50
53
  | `strict` | Everything in `standard` plus git-hook wiring for commit-time safety checks. | Solo dev or tight team with zero tolerance for drift. |
51
54
  | `full` | Every native surface across every editor: hooks, sub-agents, custom commands, skill pointers for Cursor / Windsurf / Gemini / Augment / Antigravity. | You want maximum coverage and understand that each editor will carry generated files under its own layout. |
52
55
 
53
- `--codex-skills` is an independent opt-in flag (not part of profile) that materializes the full `.claude/skills/` catalog under `.agents/skills/` for Codex. Other editors stay on compat-read or the per-editor pointer skill.
56
+ `--codex-skills` is an independent opt-in flag (not part of profile) that materializes the full skill catalog under `.agents/skills/` for Codex. Other editors stay on compat-read or the per-editor pointer skill.
57
+
58
+ ## Global Editor Targets
59
+
60
+ `ai-toolkit install --editors <name>` can write global files only for editors
61
+ with documented, file-based config surfaces:
62
+
63
+ - `windsurf`: `~/.codeium/windsurf/memories/global_rules.md`
64
+ - `gemini`: `~/.gemini/GEMINI.md`
65
+ - `augment`: `~/.augment/rules/ai-toolkit.md`
66
+ - `cline`: `~/Documents/Cline/Rules/ai-toolkit-*.md`
67
+ - `roo`: `~/.roo/rules/ai-toolkit-*.md`
68
+ - `aider`: `~/.aider.conf.yml` plus `~/.aider-ai-toolkit-CONVENTIONS.md` when the YAML file does not already exist
69
+ - `codex`: `~/AGENTS.md`, `~/.agents/rules/*`, `~/.agents/skills/*`, `~/.codex/hooks.json`
70
+ - `opencode`: `~/.config/opencode/*`
71
+
72
+ Cursor, GitHub Copilot, and Google Antigravity rule installs stay project-local.
73
+ Their global MCP support, where available, is handled by `ai-toolkit mcp
74
+ install`, not by the rule installer.
54
75
 
55
76
  ## Why global install is the default
56
77
 
@@ -66,6 +87,7 @@ These files still stay local to a repository as part of the core install model:
66
87
  - `.claude/settings.local.json`
67
88
  - `.mcp.json`
68
89
  - `.cursor/mcp.json`
90
+ - `.roo/mcp.json`
69
91
  - `.github/mcp.json`
70
92
  - `.claude/constitution.md`
71
93
  - project `AGENTS.md`
@@ -119,6 +141,7 @@ If `.mcp.json` exists in the current project, `ai-toolkit install --local` mirro
119
141
  - `.claude/settings.local.json`
120
142
  - `.cursor/mcp.json` when `--editors cursor` is selected
121
143
  - `.github/mcp.json` when `--editors copilot` is selected
144
+ - `.roo/mcp.json` when `--editors roo` is selected
122
145
 
123
146
  Global-only editor MCP configs are not written during `install --local`. Use `ai-toolkit mcp install --editor <name...>` for those targets.
124
147
 
@@ -3,19 +3,22 @@ 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: "1.0.0"
6
+ version: "2.0.0"
7
7
  created: "2026-04-07"
8
- last_updated: "2026-04-07"
9
- description: "Reference for the language-specific rules system: 14 languages, 5 categories per language, auto-detection."
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."
10
10
  ---
11
11
 
12
12
  # Language Rules System
13
13
 
14
14
  ## Overview
15
15
 
16
- ai-toolkit ships language-specific rule files covering 14 languages/platforms plus a common set (see README.md for current count). Rules are plain Markdown files injected into `CLAUDE.md` via `ai-toolkit install --local`. They provide coding-style, testing, patterns, frameworks, and security guidance specific to each language.
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
- Rules are distinct from skills: rules are injected as static text into `CLAUDE.md` and are always visible to Claude, whereas skills are loaded contextually by agents.
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.
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
+
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.
19
22
 
20
23
  ## File Structure
21
24
 
@@ -52,7 +55,7 @@ app/rules/
52
55
  └── medplum/
53
56
  ```
54
57
 
55
- **Total: 14 directories × 5 files each + 3 standalone = 73 rule files** (see README.md for canonical count)
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.
56
59
 
57
60
  ## Supported Languages
58
61
 
@@ -137,15 +140,45 @@ ai-toolkit install --local --modules core,agents
137
140
 
138
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.
139
142
 
140
- Language rules are injected into the project `CLAUDE.md` between named markers:
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):
141
144
 
142
145
  ```
143
- <!-- TOOLKIT:rules-typescript START -->
144
- ... TypeScript rules content ...
145
- <!-- TOOLKIT:rules-typescript END -->
146
+ <!-- TOOLKIT:language-rules START -->
147
+ # Language Rules
148
+
149
+ Common (language-agnostic) rules apply to every change in this project.
150
+ Language-specific rules live in `<lang>-rules` knowledge skills (e.g.
151
+ `python-rules`, `typescript-rules`) and load automatically when their
152
+ triggers match.
153
+
154
+ Detected languages: `python-rules`, `typescript-rules`.
155
+
156
+ ---
157
+
158
+ ... full content of app/rules/common/*.md inlined here ...
159
+ <!-- TOOLKIT:language-rules END -->
146
160
  ```
147
161
 
148
- Re-running `install --local` is idempotent — existing blocks are replaced, not duplicated.
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.
163
+
164
+ ### Generating language-rules skills
165
+
166
+ The `<lang>-rules` skills under `app/skills/` are produced by:
167
+
168
+ ```bash
169
+ python3 scripts/generate_language_rules_skills.py # write all
170
+ python3 scripts/generate_language_rules_skills.py --check # dry-run, exit 1 on diff
171
+ python3 scripts/generate_language_rules_skills.py --langs python,rust # subset
172
+ ```
173
+
174
+ The generator reads `app/rules/<lang>/*.md`, strips YAML frontmatter, concatenates the categories, and writes `app/skills/<lang>-rules/SKILL.md` with frontmatter:
175
+
176
+ - `name: <lang>-rules`
177
+ - `description: ...` — language label, rule categories, and concrete trigger keywords (file extensions, framework names) so the skill activates reliably when Claude is working on that language.
178
+ - `user-invocable: false` — knowledge skill, no slash command.
179
+ - `allowed-tools: Read` — the skill body is reference content, not an action.
180
+
181
+ Rerunning the generator is idempotent. Editing rule files under `app/rules/<lang>/` and rerunning the generator is the canonical way to update a language skill.
149
182
 
150
183
  ## Manifest Module Names
151
184
 
@@ -170,13 +203,16 @@ Language rules are tracked as modules in `manifest.json`:
170
203
 
171
204
  ## Rules vs Skills
172
205
 
173
- | | Rules | Skills |
174
- |---|-------|--------|
175
- | Location | `app/rules/` | `app/skills/` |
176
- | Delivery | Injected into `CLAUDE.md` text | Loaded from `~/.claude/skills/` |
177
- | Visibility | Always visible in context | Loaded contextually by agents |
178
- | Scope | Per-language static guidance | Domain-specific agent behavior |
179
- | Install | `--local` only | Global install |
206
+ | | Common rules | Per-language rules | Other skills |
207
+ |---|---|---|---|
208
+ | 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 |
211
+ | Scope | Language-agnostic standards (security, git, testing, perf, style) | Per-language coding-style, frameworks, patterns, security, testing | Domain skills (testing, debugging, RAG, etc.) |
212
+ | Install | `ai-toolkit install --local` | Global install (skills directory is symlinked) | Global install |
213
+ | Other editors | Inlined into editor-specific rule files | Inlined into editor-specific rule files (still full content, not skills) | N/A |
214
+
215
+ Per-language content delivered as a knowledge skill is the same Markdown that other editors receive inlined. The split exists only for Claude, where the Agent Skills progressive-disclosure mechanism keeps the system prompt small.
180
216
 
181
217
  ## Related Documentation
182
218
 
@@ -3,9 +3,9 @@ title: "AI Toolkit - MCP Editor Compatibility"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [mcp, editors, compatibility, codex, cursor]
6
- version: "1.0.0"
6
+ version: "1.1.0"
7
7
  created: "2026-04-12"
8
- last_updated: "2026-04-12"
8
+ last_updated: "2026-04-28"
9
9
  description: "Official MCP support matrix and native config targets for editors supported by ai-toolkit."
10
10
  ---
11
11
 
@@ -23,6 +23,7 @@ ai-toolkit keeps `.mcp.json` as the project-level canonical template format and
23
23
  | Cursor | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` | Mirrors `mcpServers` directly |
24
24
  | GitHub Copilot | project + global | `.github/mcp.json`, `~/.copilot/mcp-config.json` | Adds Copilot-required `type` and `tools` fields |
25
25
  | Gemini CLI | project + global | `.gemini/settings.json`, `~/.gemini/settings.json` | Merges `mcpServers` into settings JSON |
26
+ | Roo Code | project | `.roo/mcp.json` | Mirrors `mcpServers` into the documented project-level MCP file |
26
27
  | Windsurf | global | `~/.codeium/windsurf/mcp_config.json` | Global-only JSON config |
27
28
  | Cline | global | `~/.cline/data/settings/cline_mcp_settings.json` | Global-only JSON config |
28
29
  | Augment | global | `~/.augment/settings.json` | Global-only JSON settings file |
@@ -34,7 +35,6 @@ These editors are still supported by ai-toolkit for rules and instructions, but
34
35
 
35
36
  | Editor | Reason |
36
37
  |--------|--------|
37
- | Roo Code | MCP support exists, but no verified official file path was adopted in ai-toolkit |
38
38
  | Aider | No verified native MCP config surface was adopted in ai-toolkit |
39
39
  | Google Antigravity | MCP can be configured via UI/import flows, but no stable file target was adopted in ai-toolkit |
40
40
 
@@ -53,6 +53,7 @@ When `.mcp.json` exists in a project, `ai-toolkit install --local` mirrors its s
53
53
  - `.claude/settings.local.json`
54
54
  - `.cursor/mcp.json` when `--editors cursor` is selected
55
55
  - `.github/mcp.json` when `--editors copilot` is selected
56
+ - `.roo/mcp.json` when `--editors roo` is selected
56
57
 
57
58
  Global-only clients are configured explicitly via `ai-toolkit mcp install --editor ...`.
58
59
 
@@ -33,7 +33,7 @@ ai-toolkit mcp remove <name> # Remove from .mcp.json or native editor confi
33
33
  The `add` command merges the `mcpServers` block from the template into `.mcp.json`. If `.mcp.json` does not exist it is created. If the server name already exists in `.mcp.json`, the entry is overwritten with the template version.
34
34
 
35
35
  The `install` command renders the same canonical template into an editor-native config format:
36
- - JSON clients with `mcpServers` blocks: Claude Code, Cursor, Gemini CLI, Windsurf, Cline, Augment
36
+ - JSON clients with `mcpServers` blocks: Claude Code, Cursor, Gemini CLI, Roo Code, Windsurf, Cline, Augment
37
37
  - JSON clients with additional transport metadata: GitHub Copilot
38
38
  - TOML clients: Codex CLI (`[mcp_servers.<name>]`)
39
39
 
@@ -47,12 +47,13 @@ When `install` runs with `--scope project`, ai-toolkit also updates the project'
47
47
  | `cursor` | project + global | `.cursor/mcp.json`, `~/.cursor/mcp.json` | Mirrors canonical `mcpServers` |
48
48
  | `copilot` | project + global | `.github/mcp.json`, `~/.copilot/mcp-config.json` | Adds `type` and `tools: ["*"]` automatically |
49
49
  | `gemini` | project + global | `.gemini/settings.json`, `~/.gemini/settings.json` | Uses Gemini CLI `mcpServers` format |
50
+ | `roo` | project | `.roo/mcp.json` | Mirrors canonical `mcpServers` into Roo's project MCP file |
50
51
  | `windsurf` | global | `~/.codeium/windsurf/mcp_config.json` | Global-only official config |
51
52
  | `cline` | global | `~/.cline/data/settings/cline_mcp_settings.json` | Global-only official config |
52
53
  | `augment` | global | `~/.augment/settings.json` | Global-only settings file |
53
54
  | `codex` | global | `~/.codex/config.toml` | Rendered as TOML `mcp_servers` tables |
54
55
 
55
- Project-local `ai-toolkit install --local` also mirrors `.mcp.json` into Claude project settings plus selected project editors that have official repository/workspace MCP files (`cursor`, `copilot`).
56
+ Project-local `ai-toolkit install --local` also mirrors `.mcp.json` into Claude project settings plus selected project editors that have official repository/workspace MCP files (`cursor`, `copilot`, `roo`).
56
57
 
57
58
  ## Template List
58
59
 
@@ -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.2.0"
6
+ version: "1.2.1"
7
7
  created: "2026-04-23"
8
- last_updated: "2026-04-24"
8
+ last_updated: "2026-04-28"
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
 
@@ -47,8 +47,8 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
47
47
  | Docs | https://cursor.com/docs |
48
48
  | Changelog | https://cursor.com/changelog |
49
49
  | Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
50
- | Config paths | `.cursorrules`, `.cursor/rules/*.mdc`, `.cursor/rules/*.md`, `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `.cursor/hooks.json`, `~/.cursor/hooks.json` |
51
- | Compat read paths | `.claude/skills/`, `.claude/agents/`, `.codex/skills/`, `.codex/agents/` (Cursor cross-reads these so ai-toolkit's Claude install works automatically) |
50
+ | Config paths | `.cursorrules`, `.cursor/rules/*.mdc`, `.cursor/rules/*.md`, `AGENTS.md`, `.cursor/mcp.json`, `~/.cursor/mcp.json`, `.cursor/skills/*/SKILL.md`, `.cursor/agents/*.md`, `.cursor/hooks.json` |
51
+ | Compat read paths | `.claude/skills/`, `.claude/agents/`, `.agents/skills/` (Cursor cross-reads these so ai-toolkit's Claude/Codex installs work automatically) |
52
52
  | Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py`, `scripts/generate_cursor_hooks.py` (profile=full), `scripts/generate_cursor_agents.py` (profile=full) |
53
53
  | Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
54
54
 
@@ -102,6 +102,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
102
102
  | Our generators | `scripts/generate_cline.py`, `scripts/generate_cline_rules.py` |
103
103
  | Tracked capabilities | `clinerules`, Plan Mode, Act Mode, MCP, custom modes, workflows, hooks, skills, subagents, conditional rules |
104
104
  | Notes | Conditional rules (`paths:` YAML frontmatter) are emitted for testing and language-specific rules since 2026-04. Skills (`.cline/skills/`) and hooks (`.clinerules/hooks/`) remain experimental upstream and are not yet generated. |
105
+ | Global install | `ai-toolkit install --editors cline` writes only documented global rules under `~/Documents/Cline/Rules/`; MCP remains managed by `ai-toolkit mcp install --editor cline`. |
105
106
 
106
107
  ### Roo Code
107
108
 
@@ -110,10 +111,10 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
110
111
  | ID | `roo-code` |
111
112
  | Docs | https://docs.roocode.com |
112
113
  | Release notes | https://github.com/RooCodeInc/Roo-Code/releases |
113
- | Config paths | `.roomodes`, `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `~/.roo/settings/custom_modes.yaml`, `~/.roo/settings/mcp_settings.json` |
114
+ | Config paths | `.roomodes`, `.roo/rules/*.md`, `.roo/rules-{slug}/*.md`, `.roo/mcp.json`, `~/.roo/rules/`, `~/.roo/custom_modes.yaml`, `mcp_settings.json` (global via Roo settings UI) |
114
115
  | Our generators | `scripts/generate_roo_modes.py`, `scripts/generate_roo_rules.py` |
115
116
  | Tracked capabilities | `roomodes`, custom modes, Code Actions, MCP, Orchestrator mode, `whenToUse`, `description`, `roleDefinition`, `groups` |
116
- | Notes | `.roomodes` now includes `description` and `whenToUse` for every mode (since 2026-04). YAML `.roomodes` is upstream-preferred but not yet emitted — JSON is still accepted by Roo. |
117
+ | Notes | `.roomodes` now includes `description` and `whenToUse` for every mode (since 2026-04). YAML `.roomodes` is upstream-preferred but not yet emitted — JSON is still accepted by Roo. Global install writes only `~/.roo/rules/` because the exact global MCP settings path is UI-managed. |
117
118
 
118
119
  ### Aider
119
120
 
@@ -125,6 +126,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
125
126
  | Config paths | `.aider.conf.yml`, `CONVENTIONS.md`, `~/.aider.conf.yml` |
126
127
  | Our generators | `scripts/generate_aider_conf.py`, `scripts/generate_conventions.py` |
127
128
  | Tracked capabilities | `.aider.conf.yml`, `CONVENTIONS.md`, `architect`, `auto-accept-architect`, `read`, `lint-cmd`, `test-cmd`, `commit-prompt`, `attribute-co-authored-by`, `chat-language`, `commit-language`, `watch-files`, `auto-commits` |
129
+ | Global install | `ai-toolkit install --editors aider` creates `~/.aider.conf.yml` only when absent and always refreshes `~/.aider-ai-toolkit-CONVENTIONS.md`; existing YAML is preserved. |
128
130
  | Version probe | `aider --version` |
129
131
  | Latest upstream | v0.86.1 (Aug 2025) |
130
132
 
@@ -159,11 +161,11 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
159
161
  | ID | `codex-cli` |
160
162
  | Docs | https://github.com/openai/codex (redirects from developers.openai.com/codex) |
161
163
  | Release notes | https://github.com/openai/codex/releases |
162
- | Config paths | `AGENTS.md`, `.agents/rules/*.md`, `.codex/hooks.json`, `.codex/skills/*/SKILL.md`, `~/.codex/config.toml` |
164
+ | Config paths | `AGENTS.md`, `.agents/rules/*.md`, `.agents/skills/*/SKILL.md`, `.codex/hooks.json`, `~/.codex/config.toml` |
163
165
  | Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_rules.py`, `scripts/generate_codex_hooks.py`, `scripts/generate_codex_skills.py` (opt-in via `--codex-skills`) |
164
166
  | Tracked hook events | `PreToolUse`, `PostToolUse`, `SessionStart`, `UserPromptSubmit`, `Stop`, `PermissionRequest` (6 events supported upstream in `config.toml`) |
165
167
  | Tracked handler types | `command` (emitted by default); `prompt` and `agent` available upstream but authored by hand |
166
- | Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.codex/skills/*/SKILL.md` (native discovery, not auto-emitted by ai-toolkit yet) |
168
+ | Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.agents/skills/*/SKILL.md` (native Codex skill discovery path) |
167
169
  | Version probe | `codex --version` |
168
170
 
169
171
  ### opencode