@softspark/ai-toolkit 3.0.0 → 3.0.2
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/CHANGELOG.md +35 -0
- package/README.md +19 -5
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/skills/hook-creator/SKILL.md +7 -3
- package/app/skills/introspect/SKILL.md +1 -1
- package/benchmarks/ecosystem-doctor-snapshot.json +13 -13
- package/bin/ai-toolkit.js +5 -1
- package/kb/procedures/release-preparation-sop.md +14 -5
- package/kb/procedures/release-verification-sop.md +112 -8
- package/kb/reference/cli-reference.md +14 -3
- package/kb/reference/competitive-features-implementation.md +9 -9
- package/kb/reference/hooks-catalog.md +8 -2
- package/kb/reference/supported-tools-registry.md +7 -7
- package/kb/reference/windows-support.md +50 -0
- package/llms-full.txt +220 -34
- package/llms.txt +1 -0
- package/manifest.json +1 -1
- package/package.json +6 -2
- package/scripts/_common.py +21 -0
- package/scripts/check_deps.py +14 -0
- package/scripts/stats.py +126 -39
- package/scripts/validate.py +160 -4
|
@@ -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
|
+
version: "1.2.0"
|
|
7
7
|
created: "2026-04-23"
|
|
8
|
-
last_updated: "2026-04-
|
|
8
|
+
last_updated: "2026-04-24"
|
|
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
|
|
|
@@ -49,7 +49,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
49
49
|
| Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
|
|
50
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
51
|
| Compat read paths | `.claude/skills/`, `.claude/agents/`, `.codex/skills/`, `.codex/agents/` (Cursor cross-reads these so ai-toolkit's Claude install works automatically) |
|
|
52
|
-
| Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py` |
|
|
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
|
|
|
55
55
|
### Windsurf
|
|
@@ -62,7 +62,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
62
62
|
| Stable docs mirror | https://docs.windsurf.com/llms.txt + per-page .md twins |
|
|
63
63
|
| Config paths | `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `AGENTS.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/mcp_config.json` |
|
|
64
64
|
| Compat read paths | `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/` |
|
|
65
|
-
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` |
|
|
65
|
+
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py`, `scripts/generate_windsurf_hooks.py` (profile=full) |
|
|
66
66
|
| Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, MCP, memories, hooks |
|
|
67
67
|
| Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
|
|
68
68
|
|
|
@@ -86,7 +86,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
86
86
|
| Docs | https://github.com/google-gemini/gemini-cli/tree/main/docs |
|
|
87
87
|
| Release notes | https://github.com/google-gemini/gemini-cli/releases |
|
|
88
88
|
| Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `.gemini/extensions/gemini-extension.json` |
|
|
89
|
-
| Our generators | `scripts/generate_gemini.py` |
|
|
89
|
+
| 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) |
|
|
90
90
|
| Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `SessionStart`, `SessionEnd`, `Stop`, `SKILL.md`, `activate_skill`, custom commands, `gemini-extension.json` |
|
|
91
91
|
| Version probe | `gemini --version` |
|
|
92
92
|
| Latest upstream | v0.39.0 (2026-04-23) |
|
|
@@ -136,7 +136,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
136
136
|
| Docs | https://docs.augmentcode.com |
|
|
137
137
|
| Changelog | https://www.augmentcode.com/changelog |
|
|
138
138
|
| Config paths | `.augment/rules/*.md`, `.augment/guidelines.md` (legacy), `.augment/agents/*.md`, `.augment/commands/*.md`, `.augment/skills/*/SKILL.md`, `~/.augment/rules/*.md`, `~/.augment/settings.json`, `/etc/augment/settings.json` |
|
|
139
|
-
| Our generators | `scripts/generate_augment.py`, `scripts/generate_augment_rules.py` |
|
|
139
|
+
| Our generators | `scripts/generate_augment.py`, `scripts/generate_augment_rules.py`, `scripts/generate_augment_agents.py` (profile=full), `scripts/generate_augment_commands.py` (profile=full), `scripts/generate_augment_hooks.py` (profile=full, HOME-scoped), `scripts/generate_augment_skills.py` (profile=full) |
|
|
140
140
|
| Tracked capabilities | `.augment`, Agent mode, Next Edit, MCP, context engine, Auggie CLI, `always_apply`, `agent_requested`, subagents, custom commands, `SKILL.md`, `PreToolUse`, `PostToolUse`, `SessionStart`, `SessionEnd`, `Stop`, ACP Mode |
|
|
141
141
|
| SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
|
|
142
142
|
|
|
@@ -160,7 +160,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
160
160
|
| Docs | https://github.com/openai/codex (redirects from developers.openai.com/codex) |
|
|
161
161
|
| Release notes | https://github.com/openai/codex/releases |
|
|
162
162
|
| Config paths | `AGENTS.md`, `.agents/rules/*.md`, `.codex/hooks.json`, `.codex/skills/*/SKILL.md`, `~/.codex/config.toml` |
|
|
163
|
-
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_rules.py`, `scripts/generate_codex_hooks.py` |
|
|
163
|
+
| 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
164
|
| Tracked hook events | `PreToolUse`, `PostToolUse`, `SessionStart`, `UserPromptSubmit`, `Stop`, `PermissionRequest` (6 events supported upstream in `config.toml`) |
|
|
165
165
|
| Tracked handler types | `command` (emitted by default); `prompt` and `agent` available upstream but authored by hand |
|
|
166
166
|
| Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.codex/skills/*/SKILL.md` (native discovery, not auto-emitted by ai-toolkit yet) |
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Windows Support"
|
|
3
|
+
category: reference
|
|
4
|
+
service: ai-toolkit
|
|
5
|
+
tags: [windows, wsl, install, dependencies, hooks]
|
|
6
|
+
created: "2026-04-24"
|
|
7
|
+
last_updated: "2026-04-24"
|
|
8
|
+
description: "Windows support model for ai-toolkit: WSL, Git Bash, dependency detection, and hook runtime constraints."
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Windows Support
|
|
12
|
+
|
|
13
|
+
ai-toolkit supports Windows through two practical modes:
|
|
14
|
+
|
|
15
|
+
1. **WSL recommended** — best compatibility for Bash hooks, POSIX paths, symlinks, and editor configs.
|
|
16
|
+
2. **Native Windows with Git Bash** — supported for CLI usage when Bash is available on `PATH`.
|
|
17
|
+
|
|
18
|
+
## Dependency Detection
|
|
19
|
+
|
|
20
|
+
`scripts/check_deps.py` now emits install hints for Windows package managers:
|
|
21
|
+
|
|
22
|
+
| Manager | Command Prefix |
|
|
23
|
+
|---------|----------------|
|
|
24
|
+
| winget | `winget install` |
|
|
25
|
+
| Chocolatey | `choco install -y` |
|
|
26
|
+
| Scoop | `scoop install` |
|
|
27
|
+
|
|
28
|
+
Required dependency package IDs:
|
|
29
|
+
|
|
30
|
+
| Dependency | winget | Chocolatey | Scoop |
|
|
31
|
+
|------------|--------|------------|-------|
|
|
32
|
+
| Python 3 | `Python.Python.3` | `python` | `python` |
|
|
33
|
+
| Git | `Git.Git` | `git` | `git` |
|
|
34
|
+
| Node.js | `OpenJS.NodeJS` | `nodejs` | `nodejs` |
|
|
35
|
+
|
|
36
|
+
## Hook Runtime
|
|
37
|
+
|
|
38
|
+
ai-toolkit hooks are Bash scripts. On Windows, use WSL or Git Bash so Claude Code can execute `~/.softspark/ai-toolkit/hooks/*.sh`.
|
|
39
|
+
|
|
40
|
+
Cross-platform hooks should keep the Bash entrypoint small and delegate complex work to Python or Node when Windows behavior diverges.
|
|
41
|
+
|
|
42
|
+
## Verification
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
ai-toolkit doctor
|
|
46
|
+
python3 scripts/check_deps.py
|
|
47
|
+
python3 scripts/validate.py
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The Windows support contract is covered by `tests/test_windows_support.bats`.
|
package/llms-full.txt
CHANGED
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
- [Supported Tools Registry](kb/reference/supported-tools-registry.md)
|
|
59
59
|
- [Config Sync](kb/reference/sync.md)
|
|
60
60
|
- [Unique Features & Differentiators](kb/reference/unique-features.md)
|
|
61
|
+
- [Windows Support](kb/reference/windows-support.md)
|
|
61
62
|
- [Troubleshooting](kb/troubleshooting/README.md)
|
|
62
63
|
|
|
63
64
|
## Skills
|
|
@@ -4242,10 +4243,10 @@ title: "SOP: Release Preparation"
|
|
|
4242
4243
|
category: procedures
|
|
4243
4244
|
service: ai-toolkit
|
|
4244
4245
|
tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem]
|
|
4245
|
-
version: "1.
|
|
4246
|
+
version: "1.10.0"
|
|
4246
4247
|
created: "2026-04-10"
|
|
4247
|
-
last_updated: "2026-04-
|
|
4248
|
-
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,
|
|
4248
|
+
last_updated: "2026-04-24"
|
|
4249
|
+
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."
|
|
4249
4250
|
---
|
|
4250
4251
|
|
|
4251
4252
|
# SOP: Release Preparation
|
|
@@ -4517,7 +4518,15 @@ python3 scripts/audit_skills.py --ci
|
|
|
4517
4518
|
python3 scripts/audit_skills.py --sarif > audit.sarif # MANDATORY — GHAS ingest
|
|
4518
4519
|
python3 scripts/audit_skills.py --permissions # review Bash/Write/Edit footprint
|
|
4519
4520
|
|
|
4520
|
-
#
|
|
4521
|
+
# Registry / generator drift (added in 1.10.0). Meta-generators excluded.
|
|
4522
|
+
META="generate_agents_md.py|generate_llms_txt.py"
|
|
4523
|
+
diff \
|
|
4524
|
+
<(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u) \
|
|
4525
|
+
<(ls scripts/generate_*.py | grep -vE "$META" | sort -u) \
|
|
4526
|
+
&& echo "OK: registry matches filesystem" \
|
|
4527
|
+
|| { echo "DRIFT: update supported-tools-registry.md before tagging"; exit 1; }
|
|
4528
|
+
|
|
4529
|
+
# Run npm test ONCE, cache output, parse from file. The suite is 900+ bats
|
|
4521
4530
|
# cases — rerunning it per check wastes minutes. Do not pipe npm test into
|
|
4522
4531
|
# tail/grep multiple times in the same session.
|
|
4523
4532
|
npm test > /tmp/npm-test.log 2>&1
|
|
@@ -4530,11 +4539,12 @@ echo "ok: $(grep -c '^ok ' /tmp/npm-test.log) | not ok: $(grep -c '^not ok' /tmp
|
|
|
4530
4539
|
- `audit_skills.py --ci`: `HIGH: 0 | WARN: 0` (INFO is acceptable)
|
|
4531
4540
|
- `audit_skills.py --sarif`: valid JSON, non-empty `runs[0].tool.driver.rules`
|
|
4532
4541
|
- `audit_skills.py --permissions`: review `Skills with Bash + Write + Edit` list — any newly-added skill with broad access MUST be justified in the CHANGELOG entry
|
|
4542
|
+
- Registry drift: `OK: registry matches filesystem`. If `DRIFT:` appears, add the missing `scripts/generate_*.py` rows to `kb/reference/supported-tools-registry.md` before tagging.
|
|
4533
4543
|
- `npm test`: `1..N` with zero `not ok` (read from the cached `/tmp/npm-test.log`, do not rerun)
|
|
4534
4544
|
|
|
4535
4545
|
**One-liner:**
|
|
4536
4546
|
```bash
|
|
4537
|
-
python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > audit.sarif && npm test
|
|
4547
|
+
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
|
|
4538
4548
|
```
|
|
4539
4549
|
|
|
4540
4550
|
**If tests fail:** Fix the issue, do NOT skip. Common failures:
|
|
@@ -4678,10 +4688,10 @@ title: "SOP: Release Verification"
|
|
|
4678
4688
|
category: procedures
|
|
4679
4689
|
service: ai-toolkit
|
|
4680
4690
|
tags: [sop, verification, release, smoke-test, install, update, qa, provenance, sarif]
|
|
4681
|
-
version: "1.
|
|
4691
|
+
version: "1.4.0"
|
|
4682
4692
|
created: "2026-04-08"
|
|
4683
|
-
last_updated: "2026-04-
|
|
4684
|
-
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
|
|
4693
|
+
last_updated: "2026-04-24"
|
|
4694
|
+
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."
|
|
4685
4695
|
---
|
|
4686
4696
|
|
|
4687
4697
|
# SOP: Release Verification
|
|
@@ -4727,6 +4737,10 @@ python3 scripts/audit_skills.py --ci # 10. Security audit
|
|
|
4727
4737
|
python3 scripts/audit_skills.py --sarif | python3 -c "import json,sys; assert json.load(sys.stdin)['version']=='2.1.0'; print('SARIF OK')" # 11. SARIF 2.1.0 well-formed?
|
|
4728
4738
|
python3 scripts/audit_skills.py --permissions | head -30 # 12. Broad-access skills reviewed?
|
|
4729
4739
|
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?
|
|
4740
|
+
|
|
4741
|
+
# Deep-coverage verification (Phase 9, v3.0.0+)
|
|
4742
|
+
META="generate_agents_md.py|generate_llms_txt.py"
|
|
4743
|
+
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?
|
|
4730
4744
|
```
|
|
4731
4745
|
|
|
4732
4746
|
---
|
|
@@ -4792,8 +4806,8 @@ ai-toolkit status
|
|
|
4792
4806
|
```
|
|
4793
4807
|
|
|
4794
4808
|
**Verify `--dry-run`:**
|
|
4795
|
-
- [ ] Agents >=
|
|
4796
|
-
- [ ] Skills >=
|
|
4809
|
+
- [ ] Agents >= 44
|
|
4810
|
+
- [ ] Skills >= 99
|
|
4797
4811
|
- [ ] Hooks merged into settings.json
|
|
4798
4812
|
- [ ] "Other AI Tools" section lists cursor, windsurf, gemini, augment (antigravity via --local)
|
|
4799
4813
|
|
|
@@ -4843,7 +4857,7 @@ cd - && rm -rf /tmp/ai-toolkit-verify
|
|
|
4843
4857
|
- [ ] Would create: CLAUDE.md
|
|
4844
4858
|
- [ ] Would create: .claude/settings.local.json
|
|
4845
4859
|
- [ ] Would inject: .claude/constitution.md
|
|
4846
|
-
- [ ] Editors: all
|
|
4860
|
+
- [ ] Editors: all 11 listed (copilot, cursor, windsurf, cline, roo, aider, augment, antigravity, codex, gemini, opencode)
|
|
4847
4861
|
- [ ] Would generate configs for each editor (legacy + directory-based)
|
|
4848
4862
|
- [ ] Would install: .git/hooks/pre-commit
|
|
4849
4863
|
- [ ] Would inject language rules (auto-detected)
|
|
@@ -4864,7 +4878,7 @@ python3 scripts/audit_skills.py --ci
|
|
|
4864
4878
|
```
|
|
4865
4879
|
|
|
4866
4880
|
**Verify validate.py:**
|
|
4867
|
-
- [ ] Agents >=
|
|
4881
|
+
- [ ] Agents >= 44, Skills >= 99, Tests >= 900
|
|
4868
4882
|
- [ ] Hook events: 12, Hook scripts: >= 20
|
|
4869
4883
|
- [ ] Plugin packs >= 10, KB documents >= 20
|
|
4870
4884
|
- [ ] `Errors: 0 | Warnings: 0` → `VALIDATION PASSED`
|
|
@@ -4892,7 +4906,7 @@ echo "exit: $exit"
|
|
|
4892
4906
|
|
|
4893
4907
|
**Verify:**
|
|
4894
4908
|
- [ ] `exit == 0`
|
|
4895
|
-
- [ ] `ok == expected test count` (e.g.,
|
|
4909
|
+
- [ ] `ok == expected test count` (e.g., 945 on v3.0.0)
|
|
4896
4910
|
- [ ] `not ok == 0`
|
|
4897
4911
|
- [ ] Bats runs tests in parallel (4 jobs)
|
|
4898
4912
|
- [ ] Groups: agents, autodetect, cli, generators, guards, hooks, inject,
|
|
@@ -4997,6 +5011,101 @@ AI_TOOLKIT_STRICT_PIN=1 ai-toolkit update --dry-run
|
|
|
4997
5011
|
|
|
4998
5012
|
---
|
|
4999
5013
|
|
|
5014
|
+
## Phase 9: Deep-Coverage Checks (v3.0.0+)
|
|
5015
|
+
|
|
5016
|
+
These verify the native-surface generators shipped in v3.0.0 actually emit the right files for the right profiles, and that the tool registry stays in sync with shipped generators.
|
|
5017
|
+
|
|
5018
|
+
> **Safety warning — HOME-scoped writes:** Running `--profile full` with `augment` in the editor list writes to `$HOME/.augment/settings.json` (Augment stores hooks under HOME, not per-project). Use `--dry-run` for verification unless you intend to carry ai-toolkit hook entries on this machine. The generator is marker-safe (only rewrites its own `_source: ai-toolkit` entries) but is still a side-effect.
|
|
5019
|
+
|
|
5020
|
+
### 9.1 `--profile full` emits every native surface
|
|
5021
|
+
|
|
5022
|
+
```bash
|
|
5023
|
+
D=/tmp/aitk-profile-full-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
|
|
5024
|
+
ai-toolkit install --local --editors cursor,windsurf,gemini,augment,codex \
|
|
5025
|
+
--profile full --codex-skills --dry-run 2>&1 \
|
|
5026
|
+
| grep -E "\\.cursor/(hooks\\.json|agents)|\\.windsurf/hooks\\.json|\\.gemini/(settings\\.json|commands)|\\.augment/(agents|commands)|\\.codex/skills"
|
|
5027
|
+
```
|
|
5028
|
+
|
|
5029
|
+
**Verify** — at least the following lines appear:
|
|
5030
|
+
- [ ] `.cursor/hooks.json` and `.cursor/agents/`
|
|
5031
|
+
- [ ] `.windsurf/hooks.json`
|
|
5032
|
+
- [ ] `.gemini/settings.json` hooks AND `.gemini/commands/`
|
|
5033
|
+
- [ ] `.augment/agents/` + `.augment/commands/` + `$HOME/.augment/settings.json`
|
|
5034
|
+
- [ ] `.codex/skills/` (opt-in via `--codex-skills`)
|
|
5035
|
+
|
|
5036
|
+
### 9.2 `--codex-skills` is orthogonal to `--profile`
|
|
5037
|
+
|
|
5038
|
+
```bash
|
|
5039
|
+
D=/tmp/aitk-codex-skills-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
|
|
5040
|
+
ai-toolkit install --local --editors codex --profile standard --codex-skills --dry-run 2>&1 \
|
|
5041
|
+
| grep -q "Would generate: .codex/skills" && echo "OK: --codex-skills works without --profile full"
|
|
5042
|
+
ai-toolkit install --local --editors codex --profile full --dry-run 2>&1 \
|
|
5043
|
+
| grep -q "Would generate: .codex/skills" && echo "FAIL: --profile full should NOT auto-emit .codex/skills" \
|
|
5044
|
+
|| echo "OK: --profile full alone does not auto-emit .codex/skills (correct — opt-in only)"
|
|
5045
|
+
```
|
|
5046
|
+
|
|
5047
|
+
**Verify:**
|
|
5048
|
+
- [ ] `--codex-skills` emits `.codex/skills/` at any profile
|
|
5049
|
+
- [ ] `--profile full` alone does NOT emit `.codex/skills/` (must be opt-in)
|
|
5050
|
+
|
|
5051
|
+
### 9.3 Breaking-change surfaces land on `--profile standard`
|
|
5052
|
+
|
|
5053
|
+
v3.0.0 moved two surfaces from opt-in to default:
|
|
5054
|
+
- Copilot directory layout (`.github/instructions/`, `.github/prompts/`)
|
|
5055
|
+
- Gemini hooks (`.gemini/settings.json`)
|
|
5056
|
+
|
|
5057
|
+
```bash
|
|
5058
|
+
D=/tmp/aitk-breaking-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
|
|
5059
|
+
ai-toolkit install --local --editors copilot,gemini --profile standard --dry-run 2>&1 \
|
|
5060
|
+
| tee /tmp/aitk-breaking.log
|
|
5061
|
+
grep -q "\\.github/instructions/" /tmp/aitk-breaking.log && echo "OK: Copilot dir layout at standard"
|
|
5062
|
+
grep -q "\\.gemini/settings\\.json hooks" /tmp/aitk-breaking.log && echo "OK: Gemini hooks at standard"
|
|
5063
|
+
```
|
|
5064
|
+
|
|
5065
|
+
**Verify both lines print `OK:`**. If either is missing, a regression has unwound the v3.0.0 breaking change.
|
|
5066
|
+
|
|
5067
|
+
### 9.4 Install is idempotent
|
|
5068
|
+
|
|
5069
|
+
```bash
|
|
5070
|
+
D=/tmp/aitk-idem-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
|
|
5071
|
+
ai-toolkit install --local --editors cursor,gemini --profile full >/dev/null 2>&1
|
|
5072
|
+
SHA1=$(find .cursor .gemini -type f -exec shasum {} + | shasum | awk '{print $1}')
|
|
5073
|
+
ai-toolkit install --local --editors cursor,gemini --profile full >/dev/null 2>&1
|
|
5074
|
+
SHA2=$(find .cursor .gemini -type f -exec shasum {} + | shasum | awk '{print $1}')
|
|
5075
|
+
[ "$SHA1" = "$SHA2" ] && echo "OK: idempotent" || echo "FAIL: install is not idempotent"
|
|
5076
|
+
```
|
|
5077
|
+
|
|
5078
|
+
**Verify:** prints `OK: idempotent`. A second run must produce byte-identical files in every managed path.
|
|
5079
|
+
|
|
5080
|
+
### 9.5 Live-install JSON outputs parse
|
|
5081
|
+
|
|
5082
|
+
The bats suite validates JSON shape at generation time. This re-checks that what actually landed on disk after a live install parses without errors.
|
|
5083
|
+
|
|
5084
|
+
```bash
|
|
5085
|
+
D=/tmp/aitk-json-${RANDOM} && mkdir -p "$D" && cd "$D" && git init -q
|
|
5086
|
+
ai-toolkit install --local --editors cursor,windsurf,gemini,augment --profile full >/dev/null 2>&1
|
|
5087
|
+
for f in .cursor/hooks.json .windsurf/hooks.json .gemini/settings.json $HOME/.augment/settings.json; do
|
|
5088
|
+
[ -f "$f" ] && python3 -c "import json; json.load(open('$f'))" && echo "OK: $f"
|
|
5089
|
+
done
|
|
5090
|
+
```
|
|
5091
|
+
|
|
5092
|
+
**Verify:** each emitted file prints `OK: <path>`. Any `json.decoder.JSONDecodeError` means the merge logic corrupted the output.
|
|
5093
|
+
|
|
5094
|
+
### 9.6 Registry / generator drift check
|
|
5095
|
+
|
|
5096
|
+
`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.
|
|
5097
|
+
|
|
5098
|
+
```bash
|
|
5099
|
+
META="generate_agents_md.py|generate_llms_txt.py"
|
|
5100
|
+
REG=$(grep -oE 'scripts/generate_[a-z_]+\.py' kb/reference/supported-tools-registry.md | sort -u)
|
|
5101
|
+
FS=$(ls scripts/generate_*.py | grep -vE "$META" | sort -u)
|
|
5102
|
+
diff <(echo "$REG") <(echo "$FS") && echo "OK: registry matches filesystem" || echo "DRIFT: update supported-tools-registry.md"
|
|
5103
|
+
```
|
|
5104
|
+
|
|
5105
|
+
**Verify:** prints `OK: registry matches filesystem`. If not, add the missing rows to the registry before tagging the next release.
|
|
5106
|
+
|
|
5107
|
+
---
|
|
5108
|
+
|
|
5000
5109
|
## Troubleshooting
|
|
5001
5110
|
|
|
5002
5111
|
### `ai-toolkit: command not found`
|
|
@@ -5051,6 +5160,11 @@ ai-toolkit eject /tmp/test # retry
|
|
|
5051
5160
|
| Tests | `npm test`: N/N passed, 0 failures |
|
|
5052
5161
|
| Eject | Standalone `.claude/` with real files AND `output-styles/` directory |
|
|
5053
5162
|
| Guards | Destructive commands blocked |
|
|
5163
|
+
| Deep coverage | `--profile full` emits all 9 v3.0.0 native surfaces; `--codex-skills` works orthogonally |
|
|
5164
|
+
| Breaking changes | Copilot directory layout + Gemini hooks emit at `--profile standard` (v3.0.0 contract) |
|
|
5165
|
+
| Idempotence | Second `install` run produces byte-identical output in every managed path |
|
|
5166
|
+
| Live JSON | Every generated `.json` file on disk parses as valid JSON |
|
|
5167
|
+
| Registry | `supported-tools-registry.md` enumerates every `scripts/generate_*.py` we ship |
|
|
5054
5168
|
|
|
5055
5169
|
---
|
|
5056
5170
|
|
|
@@ -6095,9 +6209,9 @@ The reference benchmark set is intentionally curated:
|
|
|
6095
6209
|
title: "CLI Reference"
|
|
6096
6210
|
category: reference
|
|
6097
6211
|
service: ai-toolkit
|
|
6098
|
-
tags: [cli, commands, reference, install, update, plugin, mcp]
|
|
6212
|
+
tags: [cli, commands, reference, install, update, plugin, mcp, telemetry]
|
|
6099
6213
|
created: "2026-04-13"
|
|
6100
|
-
last_updated: "2026-04-
|
|
6214
|
+
last_updated: "2026-04-24"
|
|
6101
6215
|
description: "Complete CLI reference for all ai-toolkit commands, options, and flags."
|
|
6102
6216
|
---
|
|
6103
6217
|
|
|
@@ -6204,7 +6318,7 @@ Usage: ai-toolkit <command> [options]
|
|
|
6204
6318
|
|
|
6205
6319
|
| Command | Description |
|
|
6206
6320
|
|---------|-------------|
|
|
6207
|
-
| `stats` | Show skill usage statistics (`--reset` to clear, `--json` for raw output) |
|
|
6321
|
+
| `stats` | Show skill usage statistics (`--summary` for product telemetry, `--reset` to clear, `--json` for raw output) |
|
|
6208
6322
|
| `benchmark --my-config` | Compare your config vs defaults vs ecosystem |
|
|
6209
6323
|
| `benchmark-ecosystem` | Generate ecosystem benchmark snapshot |
|
|
6210
6324
|
| `create skill <name>` | Scaffold new skill from template (`--template=linter\|reviewer\|generator\|workflow\|knowledge`) |
|
|
@@ -6212,6 +6326,17 @@ Usage: ai-toolkit <command> [options]
|
|
|
6212
6326
|
| `compile-slm` | Compile toolkit into minimal SLM system prompt (`--budget`, `--model-size`, `--dry-run`) |
|
|
6213
6327
|
| `evaluate` | Run skill evaluation suite |
|
|
6214
6328
|
|
|
6329
|
+
### `stats`
|
|
6330
|
+
|
|
6331
|
+
```bash
|
|
6332
|
+
ai-toolkit stats # table of local skill usage
|
|
6333
|
+
ai-toolkit stats --summary # product telemetry summary
|
|
6334
|
+
ai-toolkit stats --summary --json # machine-readable telemetry
|
|
6335
|
+
ai-toolkit stats --reset # clear local stats
|
|
6336
|
+
```
|
|
6337
|
+
|
|
6338
|
+
`--summary` reports total invocations, unique skills used, catalog coverage, unused catalog skills, active skills in the last 7 days, and top skills. Data stays local in `~/.softspark/ai-toolkit/stats.json`.
|
|
6339
|
+
|
|
6215
6340
|
## Install / Update Options
|
|
6216
6341
|
|
|
6217
6342
|
```bash
|
|
@@ -6425,7 +6550,7 @@ tags:
|
|
|
6425
6550
|
doc_type: plan
|
|
6426
6551
|
status: completed
|
|
6427
6552
|
created: "2026-04-07"
|
|
6428
|
-
last_updated: "2026-04-
|
|
6553
|
+
last_updated: "2026-04-24"
|
|
6429
6554
|
completion: "100%"
|
|
6430
6555
|
description: "Implementation plan for features identified from competitive analysis of everything-claude-code and claude-mem. Focus on learning system, language rules, advanced hooks, MCP templates, and rag-mcp integration. COMPLETED: 8/9 features shipped (1 skipped). See kb/reference/ for permanent documentation."
|
|
6431
6556
|
---
|
|
@@ -6554,8 +6679,8 @@ app/rules/
|
|
|
6554
6679
|
- [x] 13 languages × 5 rule files created (70 files: 13 dirs × 5 + 5 common)
|
|
6555
6680
|
- [x] `ai-toolkit install --local` auto-detects language and injects rules (two-phase: marker files + extension scan)
|
|
6556
6681
|
- [x] Manual override: `ai-toolkit install --local --lang typescript` (with aliases: go→golang, c++→cpp, cs→csharp)
|
|
6557
|
-
- [
|
|
6558
|
-
- [
|
|
6682
|
+
- [x] validate.py checks rules format
|
|
6683
|
+
- [x] Tests: dedicated `tests/test_rules.bats`
|
|
6559
6684
|
|
|
6560
6685
|
---
|
|
6561
6686
|
|
|
@@ -6909,7 +7034,7 @@ context: fork
|
|
|
6909
7034
|
- [x] `/council` invocable
|
|
6910
7035
|
- [x] 4 perspectives generated
|
|
6911
7036
|
- [x] Structured output with recommendation
|
|
6912
|
-
- [
|
|
7037
|
+
- [x] Tests: dedicated council skill contract
|
|
6913
7038
|
|
|
6914
7039
|
---
|
|
6915
7040
|
|
|
@@ -6928,7 +7053,7 @@ context: fork
|
|
|
6928
7053
|
**Success Criteria:**
|
|
6929
7054
|
- [x] Skill auto-loads when writing docs/content
|
|
6930
7055
|
- [x] Anti-trope list prevents generic LLM rhetoric
|
|
6931
|
-
- [
|
|
7056
|
+
- [x] Tests: dedicated brand-voice skill contract
|
|
6932
7057
|
|
|
6933
7058
|
---
|
|
6934
7059
|
|
|
@@ -6950,7 +7075,7 @@ context: fork
|
|
|
6950
7075
|
- [x] `/introspect` invocable when agent is stuck
|
|
6951
7076
|
- [x] Classifies failure pattern
|
|
6952
7077
|
- [x] Suggests recovery action
|
|
6953
|
-
- [
|
|
7078
|
+
- [x] Tests: dedicated introspect skill contract
|
|
6954
7079
|
|
|
6955
7080
|
---
|
|
6956
7081
|
|
|
@@ -7072,9 +7197,9 @@ npx @softspark/ai-toolkit inject-hook ./rag-mcp-hooks.json # NEW
|
|
|
7072
7197
|
|
|
7073
7198
|
All major features shipped. Outstanding items:
|
|
7074
7199
|
|
|
7075
|
-
1. [
|
|
7076
|
-
2. [
|
|
7077
|
-
3. [
|
|
7200
|
+
1. [x] `validate.py` checks rules format (1.1)
|
|
7201
|
+
2. [x] Dedicated `test_rules` test file exists (1.1)
|
|
7202
|
+
3. [x] Dedicated tests exist for council, brand-voice, introspect skills (3.1-3.3)
|
|
7078
7203
|
4. [x] `observe-session.sh` lives in rag-mcp (consumer), not ai-toolkit — by design
|
|
7079
7204
|
|
|
7080
7205
|
---
|
|
@@ -8046,9 +8171,9 @@ title: "Hooks Catalog"
|
|
|
8046
8171
|
category: reference
|
|
8047
8172
|
service: ai-toolkit
|
|
8048
8173
|
tags: [hooks, quality, safety, enforcement, settings.json]
|
|
8049
|
-
version: "1.
|
|
8174
|
+
version: "1.5.0"
|
|
8050
8175
|
created: "2026-03-27"
|
|
8051
|
-
last_updated: "2026-04-
|
|
8176
|
+
last_updated: "2026-04-24"
|
|
8052
8177
|
description: "Complete reference of all ai-toolkit hooks: events, scripts, installation, and runtime behavior."
|
|
8053
8178
|
---
|
|
8054
8179
|
|
|
@@ -8058,6 +8183,12 @@ description: "Complete reference of all ai-toolkit hooks: events, scripts, insta
|
|
|
8058
8183
|
|
|
8059
8184
|
ai-toolkit provides 21 global hook entries across 12 lifecycle events that enforce quality, safety, and workflow rules across all Claude Code sessions. Hooks are merged into `~/.claude/settings.json` on install, with logic in standalone scripts at `~/.softspark/ai-toolkit/hooks/`.
|
|
8060
8185
|
|
|
8186
|
+
## Supported Surface
|
|
8187
|
+
|
|
8188
|
+
`scripts/validate.py` validates both event names and handler shapes before release. The accepted lifecycle surface includes `PostToolUseFailure`, `PostToolBatch`, and `UserPromptExpansion` in addition to the installed ai-toolkit events below.
|
|
8189
|
+
|
|
8190
|
+
Supported handler types are `command`, `http`, `prompt`, `agent`, and `mcp_tool`. ai-toolkit ships command hooks by default; non-command handlers are validated so external consumers can safely inject richer hook definitions through `inject-hook`.
|
|
8191
|
+
|
|
8061
8192
|
## Installation
|
|
8062
8193
|
|
|
8063
8194
|
```bash
|
|
@@ -10687,9 +10818,9 @@ title: "Supported Tools Registry"
|
|
|
10687
10818
|
category: reference
|
|
10688
10819
|
service: ai-toolkit
|
|
10689
10820
|
tags: [editors, platforms, generators, integration, ecosystem]
|
|
10690
|
-
version: "1.
|
|
10821
|
+
version: "1.2.0"
|
|
10691
10822
|
created: "2026-04-23"
|
|
10692
|
-
last_updated: "2026-04-
|
|
10823
|
+
last_updated: "2026-04-24"
|
|
10693
10824
|
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."
|
|
10694
10825
|
---
|
|
10695
10826
|
|
|
@@ -10733,7 +10864,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10733
10864
|
| Stable docs mirror | https://cursor.com/llms.txt (all doc pages have .md twins) |
|
|
10734
10865
|
| 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` |
|
|
10735
10866
|
| Compat read paths | `.claude/skills/`, `.claude/agents/`, `.codex/skills/`, `.codex/agents/` (Cursor cross-reads these so ai-toolkit's Claude install works automatically) |
|
|
10736
|
-
| Our generators | `scripts/generate_cursor_rules.py`, `scripts/generate_cursor_mdc.py` |
|
|
10867
|
+
| 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) |
|
|
10737
10868
|
| Tracked capabilities | `cursorrules`, `.cursor/rules`, `AGENTS.md`, `mcp.json`, Composer, Agent Mode, hooks.json, subagents, skills, plugins |
|
|
10738
10869
|
|
|
10739
10870
|
### Windsurf
|
|
@@ -10746,7 +10877,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10746
10877
|
| Stable docs mirror | https://docs.windsurf.com/llms.txt + per-page .md twins |
|
|
10747
10878
|
| Config paths | `.windsurfrules`, `.windsurf/rules/*.md`, `.windsurf/workflows/*.md`, `AGENTS.md`, `~/.codeium/windsurf/memories/global_rules.md`, `~/.codeium/windsurf/mcp_config.json` |
|
|
10748
10879
|
| Compat read paths | `.agents/skills/`, `~/.agents/skills/`, (with Claude Code config-reading) `.claude/skills/`, `~/.claude/skills/` |
|
|
10749
|
-
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py` |
|
|
10880
|
+
| Our generators | `scripts/generate_windsurf.py`, `scripts/generate_windsurf_rules.py`, `scripts/generate_windsurf_hooks.py` (profile=full) |
|
|
10750
10881
|
| Tracked capabilities | Cascade, `windsurfrules`, `AGENTS.md`, activation triggers (`always_on`/`glob`/`model_decision`), workflows, MCP, memories, hooks |
|
|
10751
10882
|
| Activation modes emitted | always_on (agents/security/quality), glob (testing + language rules), model_decision (code-style/workflow) |
|
|
10752
10883
|
|
|
@@ -10770,7 +10901,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10770
10901
|
| Docs | https://github.com/google-gemini/gemini-cli/tree/main/docs |
|
|
10771
10902
|
| Release notes | https://github.com/google-gemini/gemini-cli/releases |
|
|
10772
10903
|
| Config paths | `GEMINI.md`, `.gemini/settings.json`, `~/.gemini/settings.json`, `.gemini/commands/*.toml`, `.gemini/skills/*/SKILL.md`, `.agents/skills/*/SKILL.md`, `.gemini/extensions/gemini-extension.json` |
|
|
10773
|
-
| Our generators | `scripts/generate_gemini.py` |
|
|
10904
|
+
| 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) |
|
|
10774
10905
|
| Tracked capabilities | `GEMINI.md`, `mcpServers`, tools, `settings.json`, `BeforeTool`, `AfterTool`, `BeforeAgent`, `AfterAgent`, `BeforeModel`, `SessionStart`, `SessionEnd`, `Stop`, `SKILL.md`, `activate_skill`, custom commands, `gemini-extension.json` |
|
|
10775
10906
|
| Version probe | `gemini --version` |
|
|
10776
10907
|
| Latest upstream | v0.39.0 (2026-04-23) |
|
|
@@ -10820,7 +10951,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10820
10951
|
| Docs | https://docs.augmentcode.com |
|
|
10821
10952
|
| Changelog | https://www.augmentcode.com/changelog |
|
|
10822
10953
|
| Config paths | `.augment/rules/*.md`, `.augment/guidelines.md` (legacy), `.augment/agents/*.md`, `.augment/commands/*.md`, `.augment/skills/*/SKILL.md`, `~/.augment/rules/*.md`, `~/.augment/settings.json`, `/etc/augment/settings.json` |
|
|
10823
|
-
| Our generators | `scripts/generate_augment.py`, `scripts/generate_augment_rules.py` |
|
|
10954
|
+
| Our generators | `scripts/generate_augment.py`, `scripts/generate_augment_rules.py`, `scripts/generate_augment_agents.py` (profile=full), `scripts/generate_augment_commands.py` (profile=full), `scripts/generate_augment_hooks.py` (profile=full, HOME-scoped), `scripts/generate_augment_skills.py` (profile=full) |
|
|
10824
10955
|
| Tracked capabilities | `.augment`, Agent mode, Next Edit, MCP, context engine, Auggie CLI, `always_apply`, `agent_requested`, subagents, custom commands, `SKILL.md`, `PreToolUse`, `PostToolUse`, `SessionStart`, `SessionEnd`, `Stop`, ACP Mode |
|
|
10825
10956
|
| SPA caveat | Mintlify Next.js SPA; use `https://docs.augmentcode.com/<path>.md` siblings (discoverable via `/llms.txt`) for machine reads |
|
|
10826
10957
|
|
|
@@ -10844,7 +10975,7 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
|
|
|
10844
10975
|
| Docs | https://github.com/openai/codex (redirects from developers.openai.com/codex) |
|
|
10845
10976
|
| Release notes | https://github.com/openai/codex/releases |
|
|
10846
10977
|
| Config paths | `AGENTS.md`, `.agents/rules/*.md`, `.codex/hooks.json`, `.codex/skills/*/SKILL.md`, `~/.codex/config.toml` |
|
|
10847
|
-
| Our generators | `scripts/generate_codex.py`, `scripts/generate_codex_rules.py`, `scripts/generate_codex_hooks.py` |
|
|
10978
|
+
| 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`) |
|
|
10848
10979
|
| Tracked hook events | `PreToolUse`, `PostToolUse`, `SessionStart`, `UserPromptSubmit`, `Stop`, `PermissionRequest` (6 events supported upstream in `config.toml`) |
|
|
10849
10980
|
| Tracked handler types | `command` (emitted by default); `prompt` and `agent` available upstream but authored by hand |
|
|
10850
10981
|
| Other capabilities | `AGENTS.md`, `config.toml`, `mcp_servers`, sandbox policies, `.codex/skills/*/SKILL.md` (native discovery, not auto-emitted by ai-toolkit yet) |
|
|
@@ -11213,6 +11344,61 @@ Agents follow a research-before-action protocol enforced via rules:
|
|
|
11213
11344
|
|
|
11214
11345
|
---
|
|
11215
11346
|
|
|
11347
|
+
## kb/reference/windows-support.md
|
|
11348
|
+
|
|
11349
|
+
---
|
|
11350
|
+
title: "Windows Support"
|
|
11351
|
+
category: reference
|
|
11352
|
+
service: ai-toolkit
|
|
11353
|
+
tags: [windows, wsl, install, dependencies, hooks]
|
|
11354
|
+
created: "2026-04-24"
|
|
11355
|
+
last_updated: "2026-04-24"
|
|
11356
|
+
description: "Windows support model for ai-toolkit: WSL, Git Bash, dependency detection, and hook runtime constraints."
|
|
11357
|
+
---
|
|
11358
|
+
|
|
11359
|
+
# Windows Support
|
|
11360
|
+
|
|
11361
|
+
ai-toolkit supports Windows through two practical modes:
|
|
11362
|
+
|
|
11363
|
+
1. **WSL recommended** — best compatibility for Bash hooks, POSIX paths, symlinks, and editor configs.
|
|
11364
|
+
2. **Native Windows with Git Bash** — supported for CLI usage when Bash is available on `PATH`.
|
|
11365
|
+
|
|
11366
|
+
## Dependency Detection
|
|
11367
|
+
|
|
11368
|
+
`scripts/check_deps.py` now emits install hints for Windows package managers:
|
|
11369
|
+
|
|
11370
|
+
| Manager | Command Prefix |
|
|
11371
|
+
|---------|----------------|
|
|
11372
|
+
| winget | `winget install` |
|
|
11373
|
+
| Chocolatey | `choco install -y` |
|
|
11374
|
+
| Scoop | `scoop install` |
|
|
11375
|
+
|
|
11376
|
+
Required dependency package IDs:
|
|
11377
|
+
|
|
11378
|
+
| Dependency | winget | Chocolatey | Scoop |
|
|
11379
|
+
|------------|--------|------------|-------|
|
|
11380
|
+
| Python 3 | `Python.Python.3` | `python` | `python` |
|
|
11381
|
+
| Git | `Git.Git` | `git` | `git` |
|
|
11382
|
+
| Node.js | `OpenJS.NodeJS` | `nodejs` | `nodejs` |
|
|
11383
|
+
|
|
11384
|
+
## Hook Runtime
|
|
11385
|
+
|
|
11386
|
+
ai-toolkit hooks are Bash scripts. On Windows, use WSL or Git Bash so Claude Code can execute `~/.softspark/ai-toolkit/hooks/*.sh`.
|
|
11387
|
+
|
|
11388
|
+
Cross-platform hooks should keep the Bash entrypoint small and delegate complex work to Python or Node when Windows behavior diverges.
|
|
11389
|
+
|
|
11390
|
+
## Verification
|
|
11391
|
+
|
|
11392
|
+
```bash
|
|
11393
|
+
ai-toolkit doctor
|
|
11394
|
+
python3 scripts/check_deps.py
|
|
11395
|
+
python3 scripts/validate.py
|
|
11396
|
+
```
|
|
11397
|
+
|
|
11398
|
+
The Windows support contract is covered by `tests/test_windows_support.bats`.
|
|
11399
|
+
|
|
11400
|
+
---
|
|
11401
|
+
|
|
11216
11402
|
## kb/troubleshooting/README.md
|
|
11217
11403
|
|
|
11218
11404
|
---
|
package/llms.txt
CHANGED
|
@@ -58,4 +58,5 @@
|
|
|
58
58
|
- [Supported Tools Registry](kb/reference/supported-tools-registry.md)
|
|
59
59
|
- [Config Sync](kb/reference/sync.md)
|
|
60
60
|
- [Unique Features & Differentiators](kb/reference/unique-features.md)
|
|
61
|
+
- [Windows Support](kb/reference/windows-support.md)
|
|
61
62
|
- [Troubleshooting](kb/troubleshooting/README.md)
|
package/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "AI coding toolkit: 99 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",
|
|
@@ -62,7 +62,11 @@
|
|
|
62
62
|
"generate:codex-rules": "python3 scripts/generate_codex_rules.py .",
|
|
63
63
|
"generate:opencode-agents": "python3 scripts/generate_opencode_agents.py .",
|
|
64
64
|
"generate:opencode-commands": "python3 scripts/generate_opencode_commands.py .",
|
|
65
|
-
"generate:
|
|
65
|
+
"generate:cursor-mdc": "python3 scripts/generate_cursor_mdc.py .",
|
|
66
|
+
"generate:windsurf-rules": "python3 scripts/generate_windsurf_rules.py .",
|
|
67
|
+
"generate:roo-rules": "python3 scripts/generate_roo_rules.py .",
|
|
68
|
+
"generate:augment-rules": "python3 scripts/generate_augment_rules.py .",
|
|
69
|
+
"generate:all": "npm run generate:agents && npm run generate:codex-rules && npm run generate:opencode-agents && npm run generate:opencode-commands && npm run generate:cursor && npm run generate:cursor-mdc && npm run generate:windsurf && npm run generate:windsurf-rules && npm run generate:copilot && npm run generate:gemini && npm run generate:cline && npm run generate:roo && npm run generate:roo-rules && npm run generate:aider && npm run generate:augment-rules && npm run generate:llms"
|
|
66
70
|
},
|
|
67
71
|
"files": [
|
|
68
72
|
"bin/",
|
package/scripts/_common.py
CHANGED
|
@@ -165,6 +165,27 @@ def detect_os() -> dict[str, str]:
|
|
|
165
165
|
"install_cmd": install_cmd,
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
+
if system == "windows":
|
|
169
|
+
managers = (
|
|
170
|
+
("winget", "winget install"),
|
|
171
|
+
("choco", "choco install -y"),
|
|
172
|
+
("scoop", "scoop install"),
|
|
173
|
+
)
|
|
174
|
+
for manager, install_cmd in managers:
|
|
175
|
+
if shutil.which(manager):
|
|
176
|
+
return {
|
|
177
|
+
"os": "Windows",
|
|
178
|
+
"distro": platform.version(),
|
|
179
|
+
"pkg_manager": manager,
|
|
180
|
+
"install_cmd": install_cmd,
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
"os": "Windows",
|
|
184
|
+
"distro": platform.version(),
|
|
185
|
+
"pkg_manager": "none",
|
|
186
|
+
"install_cmd": "",
|
|
187
|
+
}
|
|
188
|
+
|
|
168
189
|
return {
|
|
169
190
|
"os": system,
|
|
170
191
|
"distro": "",
|