@softspark/ai-toolkit 3.0.2 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +13 -0
- package/CHANGELOG.md +35 -0
- package/README.md +25 -39
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/skills/cpp-rules/SKILL.md +275 -0
- package/app/skills/csharp-rules/SKILL.md +282 -0
- package/app/skills/dart-rules/SKILL.md +299 -0
- package/app/skills/golang-rules/SKILL.md +262 -0
- package/app/skills/java-rules/SKILL.md +273 -0
- package/app/skills/kotlin-rules/SKILL.md +271 -0
- package/app/skills/medplum-rules/SKILL.md +271 -0
- package/app/skills/php-rules/SKILL.md +292 -0
- package/app/skills/python-rules/SKILL.md +257 -0
- package/app/skills/ruby-rules/SKILL.md +286 -0
- package/app/skills/rust-rules/SKILL.md +276 -0
- package/app/skills/swift-rules/SKILL.md +293 -0
- package/app/skills/typescript-rules/SKILL.md +249 -0
- package/benchmarks/ecosystem-doctor-snapshot.json +14 -14
- package/kb/history/completed/deep-coverage-v3-20260423.md +3 -3
- package/kb/history/completed/ecosystem-deep-sweep-20260423.md +1 -1
- package/kb/procedures/release-preparation-sop.md +4 -4
- package/kb/procedures/release-verification-sop.md +11 -12
- package/kb/reference/architecture-overview.md +1 -1
- package/kb/reference/global-install-model.md +29 -6
- package/kb/reference/language-rules.md +54 -18
- package/kb/reference/mcp-editor-compatibility.md +4 -3
- package/kb/reference/mcp-templates.md +3 -2
- package/kb/reference/supported-tools-registry.md +10 -8
- package/llms-full.txt +133 -58
- package/manifest.json +3 -3
- package/package.json +10 -3
- package/scripts/codex_skill_adapter.py +19 -3
- package/scripts/ecosystem_tools.json +7 -7
- package/scripts/generate_cline_rules.py +17 -8
- package/scripts/generate_codex_skills.py +33 -96
- package/scripts/generate_language_rules_skills.py +232 -0
- package/scripts/generate_roo_rules.py +11 -3
- package/scripts/install.py +6 -1
- package/scripts/install_steps/ai_tools.py +154 -51
- package/scripts/install_steps/install_state.py +14 -2
- package/scripts/install_steps/project_registry.py +38 -5
- 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 `.
|
|
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.
|
|
6
|
+
version: "1.10.1"
|
|
7
7
|
created: "2026-04-10"
|
|
8
|
-
last_updated: "2026-04-
|
|
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.
|
|
6
|
+
version: "1.4.1"
|
|
7
7
|
created: "2026-04-08"
|
|
8
|
-
last_updated: "2026-04-
|
|
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
|
|
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)|\\.
|
|
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
|
-
- [ ] `.
|
|
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
|
|
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: .
|
|
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`
|
|
364
|
-
- [ ] `--profile full`
|
|
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 |
|
|
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.
|
|
6
|
+
version: "3.0.1"
|
|
7
7
|
created: "2026-03-26"
|
|
8
|
-
last_updated: "2026-04-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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: "
|
|
6
|
+
version: "2.0.0"
|
|
7
7
|
created: "2026-04-07"
|
|
8
|
-
last_updated: "2026-04-
|
|
9
|
-
description: "Reference for the language-specific rules system:
|
|
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
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
144
|
-
|
|
145
|
-
|
|
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
|
|
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
|
-
| |
|
|
174
|
-
|
|
175
|
-
|
|
|
176
|
-
| Delivery |
|
|
177
|
-
| Visibility | Always
|
|
178
|
-
| Scope | Per-language
|
|
179
|
-
| 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.
|
|
6
|
+
version: "1.1.0"
|
|
7
7
|
created: "2026-04-12"
|
|
8
|
-
last_updated: "2026-04-
|
|
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.
|
|
6
|
+
version: "1.2.1"
|
|
7
7
|
created: "2026-04-23"
|
|
8
|
-
last_updated: "2026-04-
|
|
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
|
|
51
|
-
| Compat read paths | `.claude/skills/`, `.claude/agents/`, `.
|
|
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/
|
|
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`, `.
|
|
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, `.
|
|
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
|