@softspark/ai-toolkit 2.12.0 → 3.0.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/CHANGELOG.md +38 -0
  2. package/README.md +18 -8
  3. package/app/.claude-plugin/plugin.json +1 -1
  4. package/app/skills/hook-creator/SKILL.md +84 -8
  5. package/app/skills/skill-creator/SKILL.md +8 -4
  6. package/benchmarks/ecosystem-doctor-snapshot.json +395 -0
  7. package/kb/history/completed/deep-coverage-v3-20260423.md +160 -0
  8. package/kb/history/completed/ecosystem-deep-sweep-20260423.md +273 -0
  9. package/kb/procedures/ecosystem-sync-sop.md +255 -0
  10. package/kb/procedures/maintenance-sop.md +13 -2
  11. package/kb/procedures/release-preparation-sop.md +83 -10
  12. package/kb/reference/global-install-model.md +15 -2
  13. package/kb/reference/supported-tools-registry.md +229 -0
  14. package/llms-full.txt +1052 -14
  15. package/llms.txt +4 -0
  16. package/manifest.json +1 -1
  17. package/package.json +4 -1
  18. package/scripts/ecosystem_doctor.py +348 -0
  19. package/scripts/ecosystem_tools.json +500 -0
  20. package/scripts/generate_aider_conf.py +26 -1
  21. package/scripts/generate_antigravity.py +77 -8
  22. package/scripts/generate_augment_agents.py +161 -0
  23. package/scripts/generate_augment_commands.py +160 -0
  24. package/scripts/generate_augment_hooks.py +162 -0
  25. package/scripts/generate_augment_skills.py +98 -0
  26. package/scripts/generate_cline_rules.py +96 -9
  27. package/scripts/generate_codex_hooks.py +13 -2
  28. package/scripts/generate_codex_skills.py +195 -0
  29. package/scripts/generate_copilot.py +296 -18
  30. package/scripts/generate_cursor_agents.py +144 -0
  31. package/scripts/generate_cursor_hooks.py +155 -0
  32. package/scripts/generate_cursor_mdc.py +20 -8
  33. package/scripts/generate_gemini_commands.py +158 -0
  34. package/scripts/generate_gemini_hooks.py +159 -0
  35. package/scripts/generate_gemini_skills.py +98 -0
  36. package/scripts/generate_roo_modes.py +42 -1
  37. package/scripts/generate_windsurf_hooks.py +143 -0
  38. package/scripts/generate_windsurf_rules.py +162 -10
  39. package/scripts/install.py +11 -2
  40. package/scripts/install_steps/ai_tools.py +120 -5
  41. package/scripts/validate.py +20 -3
@@ -0,0 +1,255 @@
1
+ ---
2
+ title: "SOP: Ecosystem Sync"
3
+ category: procedures
4
+ service: ai-toolkit
5
+ tags: [sop, ecosystem, editors, generators, drift-detection, sync]
6
+ version: "1.0.0"
7
+ created: "2026-04-23"
8
+ last_updated: "2026-04-23"
9
+ description: "Quarterly (or event-triggered) sync procedure that detects documentation and capability drift in supported tools (Claude Code + 11 editors), analyses our generators and skills for missing features, and walks through the migration + generator-update workflow."
10
+ ---
11
+
12
+ # SOP: Ecosystem Sync
13
+
14
+ Keeps ai-toolkit aligned with the tools it integrates with. When an editor adds a new hook lifecycle, makes a feature globally available, changes a config path, or deprecates a flag, this SOP surfaces it before it surprises users.
15
+
16
+ **When to run:**
17
+ - **Every quarter** as a baseline health check (calendar reminder)
18
+ - **Before every minor release** of ai-toolkit (Phase 0 of release prep)
19
+ - **Whenever an editor ships a major version** (subscribe to their changelogs)
20
+ - **On demand** if a user reports "feature X exists but toolkit doesn't support it"
21
+
22
+ **Time:** 30 minutes for drift review + variable for any generator updates
23
+
24
+ ---
25
+
26
+ ## Quick Reference
27
+
28
+ ```bash
29
+ # Full check (all 12 tools, online)
30
+ python3 scripts/ecosystem_doctor.py --format text
31
+
32
+ # Single tool
33
+ python3 scripts/ecosystem_doctor.py --tool cursor --format text
34
+
35
+ # First-ever run — baseline the snapshot
36
+ python3 scripts/ecosystem_doctor.py --update > /dev/null
37
+
38
+ # CI / gating mode
39
+ python3 scripts/ecosystem_doctor.py --check
40
+
41
+ # Offline (no network) — validates our side only
42
+ python3 scripts/ecosystem_doctor.py --offline --format text
43
+ ```
44
+
45
+ ---
46
+
47
+ ## Inputs
48
+
49
+ | File | Purpose |
50
+ |------|---------|
51
+ | `scripts/ecosystem_tools.json` | Authoritative registry: 12 tools with doc URLs, config paths, our generators, capability markers |
52
+ | `benchmarks/ecosystem-doctor-snapshot.json` | Last-seen state (headings, content hash, markers, version) — updated via `--update` |
53
+ | `scripts/ecosystem_doctor.py` | Drift detector |
54
+ | `kb/reference/supported-tools-registry.md` | Human-readable view of the registry |
55
+
56
+ ---
57
+
58
+ ## Phase 1: Run the Doctor
59
+
60
+ ```bash
61
+ python3 scripts/ecosystem_doctor.py --format text > /tmp/eco-report.txt
62
+ cat /tmp/eco-report.txt
63
+ ```
64
+
65
+ The report classifies every tool into:
66
+
67
+ - **Clean** — doc page, headings, and markers match the last snapshot; no action
68
+ - **Drift** — something changed upstream. Each drift entry has a `kind`:
69
+ - `headings_added` — the doc grew new sections (new features? reorg?)
70
+ - `headings_removed` — a section disappeared (deprecation? renaming?)
71
+ - `marker_flips` — an expected capability marker appeared (`+`) or vanished (`-`)
72
+ - `content_changed_no_heading_delta` — prose edits, reorder, minor rewrites, OR HTML churn (timestamps, ads, CSRF nonces). Reported but **not** treated as drift by `--check` — too noisy on dynamic pages.
73
+ - `version_changed` — the CLI version bumped (for tools that expose `--version`)
74
+ - **Errored** — couldn't fetch docs (timeout, 404, auth wall). Doctor does not overwrite
75
+ the snapshot for errored tools; the last-known-good state persists.
76
+
77
+ ---
78
+
79
+ ## Phase 2: Classify Each Drift
80
+
81
+ For every drifting tool, read its docs URL and classify the change into exactly one bucket:
82
+
83
+ | Drift class | What it means | Action owner |
84
+ |-------------|---------------|--------------|
85
+ | **A. Cosmetic reword** | Prose edited, same feature set | Update snapshot (`--update`), no code change |
86
+ | **B. New feature — we should integrate** | New hook event, new config key, new CLI flag, new rule surface | Update the relevant generator in `scripts/generate_<tool>_*.py`; extend `app/skills/*` or `app/agents/*` if the feature maps onto our skills; document in `kb/reference/supported-tools-registry.md` |
87
+ | **C. New feature — not our concern** | Enterprise SSO, billing, proprietary UI-only features | Note in registry `capability_markers` as "not adopted"; update snapshot |
88
+ | **D. Deprecation** | Flag or path removed / renamed | Open migration issue; coordinate with `ai-toolkit install` and generator output; add deprecation warning to CLAUDE.md rules if user-facing |
89
+ | **E. Feature promoted to default** | Was behind a flag, now global | Remove the flag from generator output; simplify our installer |
90
+ | **F. Global availability** | Was editor-only, now also available via CLI / hooks / settings.json | Map new config surface; may require a new generator or extending an existing one |
91
+
92
+ Write one line per drift in `/tmp/eco-report.txt` with its class. Example:
93
+
94
+ ```
95
+ cursor: headings_added [AGENTS.md support] -> class B (integrate: extend generate_cursor_mdc.py)
96
+ aider: version_changed 0.70 -> 0.72 -> class A (cosmetic, --update)
97
+ windsurf: marker_flips +Cascade -> class B (already supported, verify snapshot)
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Phase 3: Execute Changes
103
+
104
+ ### For class B (new feature — integrate)
105
+
106
+ 1. Read the tool's docs section that introduced the feature. Note the exact config key / hook name / file path.
107
+ 2. Open the relevant generator (`scripts/generate_<tool>_*.py`) and add output for the new surface.
108
+ 3. If the feature is a **hook event**, also update:
109
+ - `app/hooks.json` (if Claude-Code-native)
110
+ - `app/skills/hook-creator/SKILL.md` — add the event to the Supported Hook Events table
111
+ - `scripts/inject_hook_cli.py` — if the hook target path differs
112
+ 4. If the feature is a **skill/agent schema extension**:
113
+ - Update `app/skills/skill-creator/SKILL.md` and `app/skills/command-creator/SKILL.md` templates
114
+ - Update `scripts/validate.py` field allowlists
115
+ - Update `kb/reference/agent-skills-spec.md` (if the change is an upstream spec change)
116
+ 5. Add a bats test under `tests/test_<tool>.bats` covering the new output.
117
+ 6. Regenerate artifacts: `npm run generate:all`.
118
+
119
+ ### For class D (deprecation)
120
+
121
+ 1. Open a migration issue in GitHub with "class: deprecation" and a link to the upstream changelog.
122
+ 2. In the generator, mark the deprecated output path as emitting a comment: `# DEPRECATED: <link>, removed in <version>`.
123
+ 3. If deprecation affects `ai-toolkit install --local --editors <tool>`, add a doctor check that warns when a user's repo still contains the deprecated file.
124
+
125
+ ### For class E / F (feature promotion)
126
+
127
+ 1. Simplify the generator to emit the new-default form; keep a fallback comment for users on older tool versions.
128
+ 2. Update `kb/reference/supported-tools-registry.md` config-paths column.
129
+
130
+ ### For class A / C (no code change)
131
+
132
+ 1. Run `python3 scripts/ecosystem_doctor.py --update --tool <id>` to refresh that tool's snapshot.
133
+
134
+ ---
135
+
136
+ ## Phase 4: Update the Registry
137
+
138
+ If new capability markers, config paths, or doc URLs emerged during Phase 3, edit `scripts/ecosystem_tools.json`:
139
+
140
+ ```bash
141
+ ${EDITOR:-nvim} scripts/ecosystem_tools.json
142
+ ```
143
+
144
+ Fields to consider updating:
145
+ - `urls.docs` — if the vendor moved their docs
146
+ - `urls.release_notes` — if the changelog location changed
147
+ - `config_paths` — if new files now ship in our install output
148
+ - `our_generators` — if a new generator was added
149
+ - `capability_markers` — if a new feature was adopted
150
+ - `version_probe.command` — if the CLI binary was renamed
151
+
152
+ After editing, increment `last_updated` in the registry and save the snapshot:
153
+
154
+ ```bash
155
+ python3 scripts/ecosystem_doctor.py --update
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Phase 5: Validate
161
+
162
+ ```bash
163
+ python3 scripts/validate.py --strict
164
+ python3 scripts/audit_skills.py --ci
165
+ python3 scripts/ecosystem_doctor.py --check # exits 0 after --update
166
+ npm test
167
+ ```
168
+
169
+ All four must pass before committing generator / registry changes.
170
+
171
+ ---
172
+
173
+ ## Phase 6: Commit
174
+
175
+ Use a structured commit per change class:
176
+
177
+ ```bash
178
+ git add scripts/ecosystem_tools.json benchmarks/ecosystem-doctor-snapshot.json
179
+ git add scripts/generate_<tool>_*.py # if class B/D/E/F
180
+ git add app/skills/<skill>/SKILL.md # if templates touched
181
+ git add kb/reference/supported-tools-registry.md
182
+ git commit -m "chore(ecosystem): sync <tool> — <brief summary>"
183
+ ```
184
+
185
+ Recommended commit messages by class:
186
+
187
+ | Class | Template |
188
+ |-------|----------|
189
+ | A | `chore(ecosystem): refresh <tool> snapshot (cosmetic docs update)` |
190
+ | B | `feat(<tool>): add support for <feature>` |
191
+ | C | `chore(ecosystem): note <tool> <feature> as not-adopted` |
192
+ | D | `feat(<tool>): deprecation warning for <old-path>` |
193
+ | E | `refactor(<tool>): remove flag for <feature> (now default)` |
194
+ | F | `feat(<tool>): add <new-surface> generator` |
195
+
196
+ ---
197
+
198
+ ## Gotchas
199
+
200
+ - **First run has no baseline.** On a machine where `benchmarks/ecosystem-doctor-snapshot.json` does not exist, every tool shows as clean (no prior state to diff against). Run `--update` once to seed, then run again to see real drift.
201
+ - **Documentation sites use client-side rendering.** Aider, opencode, and Antigravity serve most content via JavaScript. `urllib` fetches the bare HTML skeleton — the doctor only sees a few headings. Combine the automated check with a manual visit to the docs on these tools.
202
+ - **Release notes pages change structure more often than docs.** Cursor and Windsurf refactor their changelog layouts periodically; a heading delta from a changelog page is often a presentation change, not a feature change. Classify as A when in doubt.
203
+ - **Version probes require the CLI to be installed locally.** `gemini --version`, `aider --version`, etc. are skipped silently when the binary isn't on `$PATH`. The snapshot therefore omits version drift for tools you haven't installed — that is intentional, not a bug.
204
+ - **GitHub release pages have anti-scraping.** `github.com/<org>/<repo>/releases` works via `urllib` but rate-limits aggressively. If the doctor errors on repeated runs, wait 10 minutes or manually review the release page.
205
+ - **Marker list is intentionally small.** Capability markers are a "did we adopt this?" checklist, not a feature coverage map. Adding every sub-feature bloats the JSON and produces noisy flips — keep markers at the top-level-capability tier.
206
+ - **`--check` only gates on structural drift.** Heading/marker/version changes and fetch errors exit `1`. Pure content-hash differences (`content_changed_no_heading_delta`) exit `0` — otherwise dynamic pages with timestamps or rotating ads would page you every run. If you want the strictest possible gate, grep for `Content changed` in the text report instead.
207
+
208
+ ---
209
+
210
+ ## Scheduling
211
+
212
+ Recommended cadence:
213
+
214
+ | Trigger | Action |
215
+ |---------|--------|
216
+ | Every Monday morning | `python3 scripts/ecosystem_doctor.py --format text` — scan during coffee |
217
+ | Before a minor release | Full sync + clean snapshot before tagging |
218
+ | After any drift report | Act within 1 week or record explicit "ignore, low priority" in the commit message |
219
+ | New tool added to the registry | Baseline with `--update --tool <id>` |
220
+ | Tool removed from support | Delete its entry from the registry AND from the snapshot JSON |
221
+
222
+ An optional GitHub Action can run `--check` weekly and open an issue on drift. Template:
223
+
224
+ ```yaml
225
+ # .github/workflows/ecosystem-doctor.yml (proposed, not yet committed)
226
+ on:
227
+ schedule:
228
+ - cron: '0 9 * * 1' # Mondays 09:00 UTC
229
+ workflow_dispatch: {}
230
+ jobs:
231
+ doctor:
232
+ runs-on: ubuntu-latest
233
+ steps:
234
+ - uses: actions/checkout@v4
235
+ - run: python3 scripts/ecosystem_doctor.py --format text | tee /tmp/doctor.txt
236
+ - run: python3 scripts/ecosystem_doctor.py --check
237
+ ```
238
+
239
+ ---
240
+
241
+ ## When NOT to Use
242
+
243
+ - For **runtime** user support (user hit a bug with an editor) — use `/debug` or `/triage-issue`
244
+ - For **picking** an editor to add — that is a product decision, not a sync; use `/architecture-decision`
245
+ - For **one-off** testing of a specific tool's install flow — use the release-verification SOP
246
+ - For **scaling up** the supported-tools list — add the new tool to the registry, then run the SOP to baseline it
247
+
248
+ ---
249
+
250
+ ## Related Documentation
251
+
252
+ - [Supported Tools Registry](../reference/supported-tools-registry.md) — human-readable per-tool breakdown
253
+ - [MCP Editor Compatibility](../reference/mcp-editor-compatibility.md) — MCP-specific adapter table
254
+ - [Maintenance SOP](maintenance-sop.md) — general toolkit upkeep
255
+ - [Release Preparation SOP](release-preparation-sop.md) — run the doctor before tagging
@@ -3,9 +3,9 @@ title: "SOP: Claude Toolkit Maintenance"
3
3
  category: procedures
4
4
  service: ai-toolkit
5
5
  tags: [sop, maintenance, agents, skills, install]
6
- version: "1.4.4"
6
+ version: "3.0.0"
7
7
  created: "2026-03-23"
8
- last_updated: "2026-04-13"
8
+ last_updated: "2026-04-23"
9
9
  description: "Standard operating procedures for installing, maintaining, and evolving the ai-toolkit."
10
10
  ---
11
11
 
@@ -91,6 +91,17 @@ What `install` and `update` do (merge-friendly — user content never overwritte
91
91
 
92
92
  Re-running updates only toolkit content. Old whole-directory symlinks are auto-upgraded to per-file on next run.
93
93
 
94
+ ### Install Profiles (v3.0.0)
95
+
96
+ | Profile | Claude Code core | Editor rules | Gemini hooks | Copilot dir layout | Per-editor hooks / sub-agents / commands | Git hooks |
97
+ |---------|:---------------:|:------------:|:------------:|:------------------:|:---------------------------------------:|:---------:|
98
+ | `minimal` | yes | pointer only | no | no | no | no |
99
+ | `standard` (default) | yes | yes | **yes** (new in v3) | **yes** (new in v3) | no | no |
100
+ | `strict` | yes | yes | yes | yes | no | yes |
101
+ | `full` | yes | yes | yes | yes | **yes, all editors** | optional |
102
+
103
+ `--codex-skills` is orthogonal to `--profile` and materializes the full skill catalog under `.agents/skills/` for Codex. See `kb/reference/global-install-model.md` for the full semantic breakdown.
104
+
94
105
  ---
95
106
 
96
107
  ## Update Toolkit
@@ -2,11 +2,11 @@
2
2
  title: "SOP: Release Preparation"
3
3
  category: procedures
4
4
  service: ai-toolkit
5
- tags: [sop, release, version, publish, changelog, semver, provenance, sarif]
6
- version: "1.8.0"
5
+ tags: [sop, release, version, publish, changelog, semver, provenance, sarif, ecosystem]
6
+ version: "1.9.0"
7
7
  created: "2026-04-10"
8
- last_updated: "2026-04-21"
9
- description: "Step-by-step checklist for preparing a new ai-toolkit release — 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, and the single-run npm test discipline added in v1.8.0."
8
+ last_updated: "2026-04-23"
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, and the ecosystem-sync gate added in v1.9.0."
10
10
  ---
11
11
 
12
12
  # SOP: Release Preparation
@@ -17,20 +17,33 @@ Run this **before** tagging. After tagging and publishing, run the
17
17
 
18
18
  **Pipeline:**
19
19
  ```
20
- Release Preparation (this SOP) git tag CI publish → Release Verification SOP
20
+ Ecosystem Sync SOP (drift check + generator updates)
21
+
22
+ Release Preparation (this SOP)
23
+
24
+ git tag → CI publish → Release Verification SOP
21
25
  ```
22
26
 
23
- **Time:** 5-10 minutes
27
+ **Time:** 10-20 minutes (includes ecosystem sync review)
24
28
 
25
29
  ---
26
30
 
27
31
  ## Quick Checklist (TL;DR)
28
32
 
29
33
  ```bash
34
+ # 0. Ecosystem sync (mandatory for minor/major releases; optional for patch)
35
+ # Full procedure: kb/procedures/ecosystem-sync-sop.md
36
+ python3 scripts/ecosystem_doctor.py --format text > /tmp/eco-report.txt
37
+ cat /tmp/eco-report.txt
38
+ # If drift detected: stop here, follow ecosystem-sync-sop.md Phase 2-4 to
39
+ # classify each drift (A-F), update generators as needed, refresh snapshot,
40
+ # THEN resume this SOP.
41
+ python3 scripts/ecosystem_doctor.py --update # after all drift resolved
42
+
30
43
  # 1. Decide version bump
31
44
  # patch (1.4.2 → 1.4.3): bugfix, typo, doc fix
32
- # minor (1.4.2 → 1.5.0): new feature, new skill, new flag
33
- # major (1.4.2 → 2.0.0): breaking change
45
+ # minor (1.4.2 → 1.5.0): new feature, new skill, new flag, any ecosystem-class-B/F change
46
+ # major (1.4.2 → 2.0.0): breaking change, any ecosystem-class-D removed path
34
47
 
35
48
  # 2. Sync version across all files
36
49
  python3 scripts/sync_version.py X.Y.Z # if script exists, else manual
@@ -42,7 +55,7 @@ python3 scripts/generate_codex_rules.py .
42
55
  python3 scripts/generate_llms_txt.py > llms.txt
43
56
  python3 scripts/generate_llms_txt.py --full > llms-full.txt
44
57
 
45
- # 5. Validate + audit + SARIF + test
58
+ # 5. Validate + audit + SARIF + test + ecosystem check
46
59
  python3 scripts/validate.py --strict && python3 scripts/audit_skills.py --ci && python3 scripts/audit_skills.py --sarif > /tmp/audit.sarif && npm test
47
60
 
48
61
  # 5a. Supply-chain standard (v2.8.0+) — non-negotiable
@@ -50,6 +63,9 @@ grep -q -- '--provenance' .github/workflows/publish.yml || { echo "MISSING --pro
50
63
  grep -q 'id-token: write' .github/workflows/publish.yml || { echo "MISSING id-token: write"; exit 1; }
51
64
  python3 scripts/audit_skills.py --permissions # review Bash/Write/Edit footprint
52
65
 
66
+ # 5b. Ecosystem gate — snapshot must be current before tag
67
+ python3 scripts/ecosystem_doctor.py --offline --check || { echo "STALE ecosystem snapshot — re-run doctor"; exit 1; }
68
+
53
69
  # 6. Commit + tag + push
54
70
  git add -A && git commit -m "chore: release vX.Y.Z"
55
71
  git tag vX.Y.Z
@@ -58,6 +74,60 @@ git push origin main --tags
58
74
 
59
75
  ---
60
76
 
77
+ ## Phase 0: Ecosystem Sync (MANDATORY for minor/major)
78
+
79
+ Before touching version numbers, confirm the toolkit is aligned with the current state of every editor / platform it integrates with. Skipping this phase ships a release whose generators may lag a month-old CLI refactor, a rename of `.cursorrules` to `.cursor/rules/`, or a new hook event we do not yet emit.
80
+
81
+ **When this phase is mandatory:**
82
+ - Minor release (X.Y.0) — always
83
+ - Major release (X.0.0) — always
84
+ - Patch release (X.Y.Z) — only if the patch touches a generator or install flow
85
+
86
+ **When to skip:** pure doc-only patches, SOP edits, internal refactors that do not touch `scripts/generate_*` or `app/skills/*/SKILL.md`.
87
+
88
+ ### 0.1 Run the doctor
89
+
90
+ ```bash
91
+ python3 scripts/ecosystem_doctor.py --format text | tee /tmp/eco-report.txt
92
+ ```
93
+
94
+ Output classifies every registered tool as **Clean**, **Drift**, or **Errored**.
95
+
96
+ ### 0.2 Act on drift
97
+
98
+ For each drifting tool, follow [ecosystem-sync-sop.md](ecosystem-sync-sop.md) Phase 2-4:
99
+
100
+ | Drift class | Release impact |
101
+ |-------------|----------------|
102
+ | A (cosmetic reword) | No version impact — refresh snapshot, continue |
103
+ | B (new feature — integrate) | **Minor** version bump at minimum; new generator or extended generator |
104
+ | C (new feature — not adopted) | No impact — note in registry |
105
+ | D (deprecation) | **Minor** or **major** depending on user impact; add migration warning |
106
+ | E (feature promoted to default) | **Minor**; simplify generator, keep fallback comment |
107
+ | F (feature newly globally available) | **Minor**; may require new generator or new config path |
108
+
109
+ If any B/D/E/F changes land in this preparation pass, mention them explicitly in the CHANGELOG entry (Phase 3) under a `Ecosystem` subsection.
110
+
111
+ ### 0.3 Refresh snapshot
112
+
113
+ Once every drift is resolved (either by code change or by re-classifying as acceptable):
114
+
115
+ ```bash
116
+ python3 scripts/ecosystem_doctor.py --update
117
+ ```
118
+
119
+ This writes the new baseline to `benchmarks/ecosystem-doctor-snapshot.json`. Commit it as part of the release commit.
120
+
121
+ ### 0.4 Gate
122
+
123
+ ```bash
124
+ python3 scripts/ecosystem_doctor.py --offline --check
125
+ ```
126
+
127
+ Must exit `0`. If it exits `1`, the snapshot is stale — rerun Phase 0.3 or review the remaining drift.
128
+
129
+ ---
130
+
61
131
  ## Phase 1: Determine Version Bump
62
132
 
63
133
  Follow [Semantic Versioning](https://semver.org/):
@@ -338,13 +408,16 @@ git push origin --delete vX.Y.Z
338
408
 
339
409
  | # | Step | Command / Action | Pass Criteria |
340
410
  |---|------|-----------------|---------------|
411
+ | 0a | Ecosystem drift check | `ecosystem_doctor.py --format text` | All tools Clean, or drift classified and resolved |
412
+ | 0b | Ecosystem snapshot refresh | `ecosystem_doctor.py --update` | `benchmarks/ecosystem-doctor-snapshot.json` updated |
413
+ | 0c | Ecosystem gate | `ecosystem_doctor.py --offline --check` | Exit 0 |
341
414
  | 1 | Version bump type | Decide patch/minor/major | — |
342
415
  | 2 | `package.json` version | Edit `"version"` | Matches target |
343
416
  | 3 | `manifest.json` version | Edit `"version"` | Matches target |
344
417
  | 4 | `plugin.json` version | Edit `"version"` | Matches target |
345
418
  | 5 | `package-lock.json` | `npm install --package-lock-only` | Matches target |
346
419
  | 6 | Count sync | Check `package.json` description, README | `validate.py` passes |
347
- | 7 | CHANGELOG.md | Add release entry | Entry exists for vX.Y.Z |
420
+ | 7 | CHANGELOG.md | Add release entry (incl. `Ecosystem` subsection if any B/D/E/F drift) | Entry exists for vX.Y.Z |
348
421
  | 8 | Regenerate artifacts | `generate_agents_md.py`, `generate_codex_rules.py`, `generate_llms_txt.py` | No unexpected diff |
349
422
  | 9 | Validate | `validate.py --strict` | 0 errors, 0 warnings |
350
423
  | 10 | Security audit (CI mode) | `audit_skills.py --ci` | 0 HIGH |
@@ -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: "1.4.4"
6
+ version: "3.0.0"
7
7
  created: "2026-03-26"
8
- last_updated: "2026-04-13"
8
+ last_updated: "2026-04-23"
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
 
@@ -39,6 +39,19 @@ installed with `ai-toolkit plugin install --editor codex`.
39
39
  | `ai-toolkit plugin update --editor claude|codex|all <name>` | runtime-native config | re-apply plugin pack after toolkit updates |
40
40
  | `ai-toolkit plugin remove --editor claude|codex|all <name>` | runtime-native config | remove plugin pack from selected runtime(s) |
41
41
 
42
+ ## Install Profiles (v3.0.0)
43
+
44
+ The `--profile` flag controls how much of each editor's native surface is activated.
45
+
46
+ | Profile | What runs | Use when |
47
+ |---------|-----------|----------|
48
+ | `minimal` | Agents and skills only. No editor generators beyond pointer skills for editors that require them. | You want the smallest possible footprint, or you manage editor configs by hand. |
49
+ | `standard` (default) | Claude Code + editor rule files. Includes **Gemini hooks** and the **Copilot directory layout** (v3.0.0 change from prior `standard`). | Day-to-day installs. Most users. |
50
+ | `strict` | Everything in `standard` plus git-hook wiring for commit-time safety checks. | Solo dev or tight team with zero tolerance for drift. |
51
+ | `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
+
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.
54
+
42
55
  ## Why global install is the default
43
56
 
44
57
  - less setup friction,