@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.
- package/CHANGELOG.md +38 -0
- package/README.md +18 -8
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/skills/hook-creator/SKILL.md +84 -8
- package/app/skills/skill-creator/SKILL.md +8 -4
- package/benchmarks/ecosystem-doctor-snapshot.json +395 -0
- package/kb/history/completed/deep-coverage-v3-20260423.md +160 -0
- package/kb/history/completed/ecosystem-deep-sweep-20260423.md +273 -0
- package/kb/procedures/ecosystem-sync-sop.md +255 -0
- package/kb/procedures/maintenance-sop.md +13 -2
- package/kb/procedures/release-preparation-sop.md +83 -10
- package/kb/reference/global-install-model.md +15 -2
- package/kb/reference/supported-tools-registry.md +229 -0
- package/llms-full.txt +1052 -14
- package/llms.txt +4 -0
- package/manifest.json +1 -1
- package/package.json +4 -1
- package/scripts/ecosystem_doctor.py +348 -0
- package/scripts/ecosystem_tools.json +500 -0
- package/scripts/generate_aider_conf.py +26 -1
- package/scripts/generate_antigravity.py +77 -8
- package/scripts/generate_augment_agents.py +161 -0
- package/scripts/generate_augment_commands.py +160 -0
- package/scripts/generate_augment_hooks.py +162 -0
- package/scripts/generate_augment_skills.py +98 -0
- package/scripts/generate_cline_rules.py +96 -9
- package/scripts/generate_codex_hooks.py +13 -2
- package/scripts/generate_codex_skills.py +195 -0
- package/scripts/generate_copilot.py +296 -18
- package/scripts/generate_cursor_agents.py +144 -0
- package/scripts/generate_cursor_hooks.py +155 -0
- package/scripts/generate_cursor_mdc.py +20 -8
- package/scripts/generate_gemini_commands.py +158 -0
- package/scripts/generate_gemini_hooks.py +159 -0
- package/scripts/generate_gemini_skills.py +98 -0
- package/scripts/generate_roo_modes.py +42 -1
- package/scripts/generate_windsurf_hooks.py +143 -0
- package/scripts/generate_windsurf_rules.py +162 -10
- package/scripts/install.py +11 -2
- package/scripts/install_steps/ai_tools.py +120 -5
- package/scripts/validate.py +20 -3
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Plan: Deep Coverage v3.0 — 100% Native Surface Utilization Across 12 Tools"
|
|
3
|
+
category: planning
|
|
4
|
+
service: ai-toolkit
|
|
5
|
+
doc_type: plan
|
|
6
|
+
status: completed
|
|
7
|
+
tags: [v3, deep-coverage, ecosystem, generators, hooks, skills, subagents, commands, profile-full]
|
|
8
|
+
created: "2026-04-23"
|
|
9
|
+
last_updated: "2026-04-23"
|
|
10
|
+
completed: "2026-04-23"
|
|
11
|
+
completion: "100%"
|
|
12
|
+
description: "Ship v3.0.0 where every supported editor exposes the full ai-toolkit surface it is capable of hosting natively: hooks, subagents, custom commands, skill pointers. Introduce --profile full. Skip the 2.13.0 interim release and fold the completed deep sweep into 3.0.0."
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Plan: Deep Coverage v3.0 — 100% Native Surface Utilization
|
|
16
|
+
|
|
17
|
+
**Status:** :yellow_circle: IN PROGRESS
|
|
18
|
+
**Invocation:** continuation of `ecosystem-deep-sweep-2026-04-23` — same orchestration model
|
|
19
|
+
**Estimated effort:** 10-15h orchestrated (~3h wall-clock across 4 parallel buckets + consolidation)
|
|
20
|
+
**Deliverable:** v3.0.0 release where every editor's native surface is fully utilized; `--profile full` available
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 1. Objective
|
|
25
|
+
|
|
26
|
+
After the 2026-04-23 deep sweep closed the doc-drift gap, **v3.0.0 closes the capability-utilization gap**: each editor now exposes the full ai-toolkit surface it can host natively.
|
|
27
|
+
|
|
28
|
+
Definition of "100% coverage" chosen: **each editor works at 100% of its native capability** (compat-read counts). No cargo-cult duplication. No writing to `~/.cursor/`, `~/.augment/rules/` etc. globally.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 2. Policy decisions (immutable constraints for all buckets)
|
|
33
|
+
|
|
34
|
+
| # | Decision | Rule |
|
|
35
|
+
|---|----------|------|
|
|
36
|
+
| 1 | Skill propagation | `.claude/skills/` canonical. Cursor/Windsurf/opencode → compat-read (nothing). Augment/Gemini/Antigravity → **pointer skill** (1 file per editor). Codex → opt-in `--codex-skills` flag emits full mirror |
|
|
37
|
+
| 2 | Global writes | Only `~/.claude/`. Cursor/Windsurf/opencode get global coverage via compat-read. Augment/Gemini/Roo require `--local` |
|
|
38
|
+
| 3 | Surface activation | **`--profile full`** turns on every native surface. `standard` stays close to today's defaults but adds niepodważalne wypełnienia (Copilot wiring + Gemini hooks). `minimal` unchanged |
|
|
39
|
+
| 4 | Default behavior | `--editors <name>` alone uses `standard`. Users who want the full stack pass `--profile full` |
|
|
40
|
+
| 5 | Version | Skip 2.13. Ship everything (completed sweep + v3 work) as **3.0.0** with migration notes |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 3. What's missing → what each bucket delivers
|
|
45
|
+
|
|
46
|
+
### Bucket 1 — Hooks generators (backend-specialist)
|
|
47
|
+
|
|
48
|
+
**Owned files**
|
|
49
|
+
- New: `scripts/generate_gemini_hooks.py` (writes `.gemini/settings.json` hooks merge)
|
|
50
|
+
- New: `scripts/generate_cursor_hooks.py` (writes `.cursor/hooks.json`)
|
|
51
|
+
- New: `scripts/generate_windsurf_hooks.py` (writes `.windsurf/hooks.json`)
|
|
52
|
+
- New: `scripts/generate_augment_hooks.py` (writes `~/.augment/settings.json` hooks merge)
|
|
53
|
+
- New: `tests/test_hooks_per_editor.bats` (≥20 tests covering all 4 generators)
|
|
54
|
+
|
|
55
|
+
**Must-haves**
|
|
56
|
+
- All generators reuse `~/.softspark/ai-toolkit/hooks/*.sh` scripts (no duplicate shell code).
|
|
57
|
+
- Preserve user-authored hook entries; mark our entries with `_source: ai-toolkit`.
|
|
58
|
+
- Idempotent on regeneration.
|
|
59
|
+
- Event mapping informed by each editor's docs (Claude Code events ↔ target editor events).
|
|
60
|
+
|
|
61
|
+
### Bucket 2 — Native agents + custom commands (ai-engineer)
|
|
62
|
+
|
|
63
|
+
**Owned files**
|
|
64
|
+
- New: `scripts/generate_augment_agents.py` (`.augment/agents/*.md` with YAML frontmatter: name, description, model, color, tools, disabled_tools)
|
|
65
|
+
- New: `scripts/generate_augment_commands.py` (`.augment/commands/*.md` from user-invocable skills)
|
|
66
|
+
- New: `scripts/generate_cursor_agents.py` (`.cursor/agents/*.md` mirroring Claude Code agents)
|
|
67
|
+
- New: `scripts/generate_gemini_commands.py` (`.gemini/commands/*.toml` custom slash commands)
|
|
68
|
+
- New: `tests/test_native_surfaces.bats` (≥25 tests)
|
|
69
|
+
|
|
70
|
+
**Must-haves**
|
|
71
|
+
- Filter: only `user-invocable: true` skills become custom commands.
|
|
72
|
+
- `ai-toolkit-*` prefix everywhere for install/uninstall sweep.
|
|
73
|
+
- Do not touch files without our prefix.
|
|
74
|
+
|
|
75
|
+
### Bucket 3 — Skill pointers + Codex mirror (ai-engineer)
|
|
76
|
+
|
|
77
|
+
**Owned files**
|
|
78
|
+
- New: `scripts/generate_gemini_skills.py` (`.gemini/skills/ai-toolkit-skill-catalogue/SKILL.md` — pointer)
|
|
79
|
+
- New: `scripts/generate_augment_skills.py` (`.augment/skills/ai-toolkit-skill-catalogue/SKILL.md` — pointer)
|
|
80
|
+
- New: `scripts/generate_codex_skills.py` (full mirror to `.codex/skills/<name>/SKILL.md` — gated by `--codex-skills` flag)
|
|
81
|
+
- New: `tests/test_skills_native.bats` (≥15 tests)
|
|
82
|
+
|
|
83
|
+
**Must-haves**
|
|
84
|
+
- Pointer pattern same as Antigravity: 1 file per editor referencing `~/.claude/skills/<name>` and listing the catalogue.
|
|
85
|
+
- Codex mirror respects `user-invocable: false` (knowledge skills stay, task skills stay — Codex reads them all).
|
|
86
|
+
- `--codex-skills` must be opt-in; default OFF.
|
|
87
|
+
|
|
88
|
+
### Bucket 4 — Install wiring + profile full + docs (devops-implementer)
|
|
89
|
+
|
|
90
|
+
**Owned files**
|
|
91
|
+
- `scripts/install_steps/ai_tools.py` — wire in all new generators from buckets 1-3
|
|
92
|
+
- `scripts/install.py` — parse `--profile full`, propagate to `_create_local_ai_tool_configs`
|
|
93
|
+
- `scripts/config_validator.py` — ensure `full` profile is accepted (already present, verify)
|
|
94
|
+
- `README.md` — "What's New in v3.0.0" + migration notes
|
|
95
|
+
- `CHANGELOG.md` — v3.0.0 entry
|
|
96
|
+
- `kb/reference/global-install-model.md` — document profile semantics
|
|
97
|
+
- `kb/reference/supported-tools-registry.md` — per-tool "generators by profile" column
|
|
98
|
+
- `kb/procedures/maintenance-sop.md` — profile table update
|
|
99
|
+
- `package.json` version bump → `3.0.0`
|
|
100
|
+
- `package-lock.json` sync
|
|
101
|
+
- `tests/test_install_profiles.bats` (≥15 tests covering minimal/standard/strict/full × 3 editors)
|
|
102
|
+
|
|
103
|
+
**Must-haves**
|
|
104
|
+
- `standard` profile: Copilot directory mode ON, Gemini hooks ON (non-breaking additions).
|
|
105
|
+
- `full` profile: everything from `standard` + all native surfaces from buckets 1-3.
|
|
106
|
+
- Migration note: users on `standard` today get Copilot instructions/prompts and Gemini hooks automatically after upgrading (acceptable breaking for major bump, documented).
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 4. Success criteria
|
|
111
|
+
|
|
112
|
+
- [ ] 13 new Python generators (6+4+3, minus wiring)
|
|
113
|
+
- [ ] ≥75 new bats tests across buckets
|
|
114
|
+
- [ ] `npm test` green
|
|
115
|
+
- [ ] `python3 scripts/validate.py --strict` 0/0
|
|
116
|
+
- [ ] `python3 scripts/ecosystem_doctor.py --check` exit 0
|
|
117
|
+
- [ ] `ai-toolkit install --local --editors all --profile full` produces every native surface per editor
|
|
118
|
+
- [ ] `ai-toolkit install --local --editors all --profile standard` is still minimal-invasive (no subagents, no hooks for non-Claude editors) **except** Copilot + Gemini hooks (both documented migration notes)
|
|
119
|
+
- [ ] README test badge bumped
|
|
120
|
+
- [ ] CHANGELOG v3.0.0 entry
|
|
121
|
+
- [ ] All docs updated (registry, install model, maintenance SOP)
|
|
122
|
+
- [ ] Single atomic commit
|
|
123
|
+
- [ ] Tag `v3.0.0` ready (push held for user confirmation)
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 5. Safety rails
|
|
128
|
+
|
|
129
|
+
- **Do not commit during bucket work.** Orchestrator consolidates.
|
|
130
|
+
- **Do not touch files outside your bucket's ownership list.**
|
|
131
|
+
- **Preserve user files** via `ai-toolkit-*` prefix on generated artifacts.
|
|
132
|
+
- **Do not write to global editor paths** (`~/.cursor/`, `~/.augment/rules/`, etc.) — policy decision 2.
|
|
133
|
+
- **Do not change `standard` profile in ways that break existing users**, beyond the two documented additions (Copilot directory mode + Gemini hooks).
|
|
134
|
+
- **Test per bucket locally before reporting.** Bucket reports must include a "tests green" line.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 6. Consolidation steps (orchestrator)
|
|
139
|
+
|
|
140
|
+
1. Merge all 4 bucket registry deltas into `scripts/ecosystem_tools.json`
|
|
141
|
+
2. Run `python3 scripts/ecosystem_doctor.py --update`
|
|
142
|
+
3. Run `npm run generate:all`
|
|
143
|
+
4. Bump `package.json` → `3.0.0`; sync `package-lock.json`
|
|
144
|
+
5. Update `README.md` badge + "What's New"
|
|
145
|
+
6. Update `CHANGELOG.md` with v3.0.0 entry (include migration notes)
|
|
146
|
+
7. Run `python3 scripts/validate.py --strict` (must pass 0/0)
|
|
147
|
+
8. Run `npm test` (all green)
|
|
148
|
+
9. Run `python3 scripts/ecosystem_doctor.py --check` (exit 0)
|
|
149
|
+
10. Move this plan doc to `kb/history/completed/deep-coverage-v3-20260423.md`
|
|
150
|
+
11. Single commit + tag `v3.0.0`
|
|
151
|
+
12. Hold push pending user confirmation
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 7. Related
|
|
156
|
+
|
|
157
|
+
- `kb/history/completed/ecosystem-deep-sweep-20260423.md` — predecessor plan (doc-drift closure)
|
|
158
|
+
- `kb/reference/global-install-model.md` — install scope semantics
|
|
159
|
+
- `kb/reference/supported-tools-registry.md` — tool registry
|
|
160
|
+
- `scripts/config_validator.py` — `VALID_PROFILES` already includes `full`
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Plan: Ecosystem Deep Sweep — All 12 Supported Tools"
|
|
3
|
+
category: planning
|
|
4
|
+
service: ai-toolkit
|
|
5
|
+
doc_type: plan
|
|
6
|
+
status: completed
|
|
7
|
+
tags: [ecosystem, editors, generators, deep-sweep, orchestrate, drift, integration]
|
|
8
|
+
created: "2026-04-23"
|
|
9
|
+
last_updated: "2026-04-23"
|
|
10
|
+
completed: "2026-04-23"
|
|
11
|
+
completion: "100%"
|
|
12
|
+
description: "Orchestrate-ready plan for a deep per-tool documentation sweep across all 12 supported tools (Claude Code + 11 editors). Each agent owns 2-3 tools: fetches docs, diffs against our generators, proposes minimal patches. Consolidation step collects results into a single changeset."
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Plan: Ecosystem Deep Sweep — All 12 Supported Tools
|
|
16
|
+
|
|
17
|
+
**Status:** :yellow_circle: PROPOSED
|
|
18
|
+
**Invocation:** `/orchestrate deep ecosystem sweep per kb/planning/ecosystem-deep-sweep-2026-04-23.md`
|
|
19
|
+
**Estimated effort:** 4-6 hours orchestrated (1-1.5 h per agent in parallel)
|
|
20
|
+
**Deliverable:** Per-tool drift report + concrete generator/skill patches + updated registry
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 1. Objective
|
|
25
|
+
|
|
26
|
+
For every supported tool in `scripts/ecosystem_tools.json`:
|
|
27
|
+
|
|
28
|
+
1. Read the current official documentation end-to-end (not just landing page)
|
|
29
|
+
2. Identify every feature that ai-toolkit could integrate with but does not currently
|
|
30
|
+
3. Classify each gap using the ecosystem-sync SOP taxonomy (class A-F)
|
|
31
|
+
4. Produce minimal, reviewable patches for class B/D/E/F gaps
|
|
32
|
+
5. Update the registry (`ecosystem_tools.json`) with new capability markers and config paths
|
|
33
|
+
6. Refresh the snapshot (`benchmarks/ecosystem-doctor-snapshot.json`)
|
|
34
|
+
|
|
35
|
+
**Explicit non-goals:** complete feature parity, deep refactor of generators, adding new editors to the roster.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 2. Parallelization Strategy
|
|
40
|
+
|
|
41
|
+
12 tools → **4 agents × 3 tools each** by affinity and complexity:
|
|
42
|
+
|
|
43
|
+
| Agent | Role | Tools | Rationale |
|
|
44
|
+
|-------|------|-------|-----------|
|
|
45
|
+
| `backend-specialist` | Deep CLI / config analysis | `claude-code`, `codex-cli`, `opencode` | CLI + config.toml + agents/commands/plugins — backend integration depth |
|
|
46
|
+
| `frontend-specialist` | Editor UI integrations | `cursor`, `windsurf`, `google-antigravity` | Editor-embedded AI, rule files, MCP-via-UI |
|
|
47
|
+
| `devops-implementer` | Pipeline + rules tools | `github-copilot`, `cline`, `roo-code` | Rules directories, MCP JSON variants, mode configs |
|
|
48
|
+
| `ai-engineer` | LLM-native tools | `gemini-cli`, `aider`, `augment` | Pure LLM workflows, minimal IDE coupling |
|
|
49
|
+
|
|
50
|
+
Each agent works **in parallel**, independent file scopes (different generators). Cross-file coordination only at the registry update (single JSON file).
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 3. Per-Tool Task Template
|
|
55
|
+
|
|
56
|
+
Every agent applies the **same 7-step protocol** per tool in their bucket:
|
|
57
|
+
|
|
58
|
+
### Step 1 — Baseline our current integration
|
|
59
|
+
|
|
60
|
+
Read these files (read-only):
|
|
61
|
+
- `scripts/generate_<tool>_*.py` — every generator targeting this tool
|
|
62
|
+
- `scripts/ecosystem_tools.json` — the tool's registry entry
|
|
63
|
+
- `kb/reference/supported-tools-registry.md` — human docs section
|
|
64
|
+
- `benchmarks/ecosystem-doctor-snapshot.json` — last-seen headings/markers/version
|
|
65
|
+
|
|
66
|
+
Produce a 3-line summary: "we currently generate X, Y, Z for this tool".
|
|
67
|
+
|
|
68
|
+
### Step 2 — Fetch official docs
|
|
69
|
+
|
|
70
|
+
Primary URL is in `ecosystem_tools.json::urls.docs`. Additionally fetch:
|
|
71
|
+
- `urls.release_notes` — recent changes (last 6 months)
|
|
72
|
+
- `urls.changelog` — if distinct from release notes
|
|
73
|
+
- Any deep-link from the docs landing page that corresponds to an integration surface (rules, hooks, MCP, agents, commands, plugins, config schema)
|
|
74
|
+
|
|
75
|
+
Use `WebFetch` (for general) or `gh api` (for GitHub-hosted docs like Codex CLI, opencode).
|
|
76
|
+
|
|
77
|
+
### Step 3 — Extract the feature surface
|
|
78
|
+
|
|
79
|
+
For the current version of the tool, enumerate:
|
|
80
|
+
- Config file paths (the tool's OWN paths, not ours)
|
|
81
|
+
- Rule / instruction / prompt formats
|
|
82
|
+
- Hook / lifecycle event names (if any)
|
|
83
|
+
- MCP config target path (if supported)
|
|
84
|
+
- Agent / custom-mode / preset concepts (if any)
|
|
85
|
+
- Slash command / CLI subcommand surface
|
|
86
|
+
- Supported model providers (note, do not integrate)
|
|
87
|
+
- Authentication / API-key mechanisms
|
|
88
|
+
|
|
89
|
+
Produce a structured markdown table: `Feature | Since version | Stable? | Our integration?`
|
|
90
|
+
|
|
91
|
+
### Step 4 — Diff against our output
|
|
92
|
+
|
|
93
|
+
For each feature in the table, compare against:
|
|
94
|
+
- What our `generate_<tool>_*.py` produces
|
|
95
|
+
- What fields are in our registry's `capability_markers`
|
|
96
|
+
|
|
97
|
+
Mark each row with one of:
|
|
98
|
+
- `✅ supported` — we already emit / track it
|
|
99
|
+
- `⚠️ partial` — we emit a subset; specific sub-feature missing
|
|
100
|
+
- `❌ missing` — we do not support at all
|
|
101
|
+
- `➖ out of scope` — tool has it, but not applicable to ai-toolkit's mission
|
|
102
|
+
|
|
103
|
+
### Step 5 — Classify each gap
|
|
104
|
+
|
|
105
|
+
For each `⚠️` / `❌` row, assign one of the SOP drift classes:
|
|
106
|
+
|
|
107
|
+
| Class | Name | Action |
|
|
108
|
+
|-------|------|--------|
|
|
109
|
+
| A | Cosmetic | No code change; update snapshot only |
|
|
110
|
+
| B | New feature — integrate | Patch generator(s), add tests |
|
|
111
|
+
| C | New feature — not adopted | Note in registry, no code |
|
|
112
|
+
| D | Deprecation | Migration warning in generator + CHANGELOG |
|
|
113
|
+
| E | Feature promoted to default | Simplify generator; keep fallback comment |
|
|
114
|
+
| F | Newly globally available | New generator / extended generator |
|
|
115
|
+
|
|
116
|
+
### Step 6 — Produce patches (class B/D/E/F only)
|
|
117
|
+
|
|
118
|
+
For every class B/D/E/F gap:
|
|
119
|
+
1. Edit the relevant generator in `scripts/generate_<tool>_*.py`
|
|
120
|
+
2. If a new capability marker emerges, add to `ecosystem_tools.json::capability_markers`
|
|
121
|
+
3. If a new config path emerges, add to `ecosystem_tools.json::config_paths`
|
|
122
|
+
4. If a hook event or skill frontmatter field emerges (for Claude Code), update:
|
|
123
|
+
- `app/skills/hook-creator/SKILL.md` (hooks table)
|
|
124
|
+
- `app/skills/skill-creator/SKILL.md` (frontmatter reference)
|
|
125
|
+
- `scripts/validate.py` (allowlist)
|
|
126
|
+
5. Add a bats test under `tests/test_<tool>.bats` covering the new output
|
|
127
|
+
6. Update the tool's section in `kb/reference/supported-tools-registry.md`
|
|
128
|
+
|
|
129
|
+
**Constraints on patches:**
|
|
130
|
+
- One generator change per logical feature (no "big bang" commits)
|
|
131
|
+
- Preserve existing output format for backward compatibility
|
|
132
|
+
- New output opt-in via flag if it would change existing user-visible state
|
|
133
|
+
- Every new capability marker must pass the doctor's probe on the live docs page
|
|
134
|
+
|
|
135
|
+
### Step 7 — Report
|
|
136
|
+
|
|
137
|
+
Each agent emits a single markdown report with:
|
|
138
|
+
- Feature matrix table (step 3+4+5 combined)
|
|
139
|
+
- List of patches applied (files changed, bats tests added)
|
|
140
|
+
- List of class B/D/E/F gaps NOT patched (with reason: "out of scope", "requires user decision", "blocker")
|
|
141
|
+
- Registry diff (before/after for the tool's JSON entry)
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 4. Consolidation (after all agents finish)
|
|
146
|
+
|
|
147
|
+
Run in order:
|
|
148
|
+
|
|
149
|
+
1. Merge registry entries — single edit to `ecosystem_tools.json` combining all 12 per-tool updates
|
|
150
|
+
2. Regenerate human registry doc: manually update `kb/reference/supported-tools-registry.md` from JSON
|
|
151
|
+
3. `python3 scripts/ecosystem_doctor.py --update` — baseline new capability markers
|
|
152
|
+
4. `python3 scripts/validate.py --strict` — must pass
|
|
153
|
+
5. `npm test` — must pass (includes the newly added bats tests per tool)
|
|
154
|
+
6. `python3 scripts/ecosystem_doctor.py --check` — exit 0
|
|
155
|
+
7. Regenerate downstream artifacts:
|
|
156
|
+
```bash
|
|
157
|
+
npm run generate:all
|
|
158
|
+
```
|
|
159
|
+
8. Collect all per-agent reports into `kb/learnings/ecosystem-sweep-2026-04-23.md`
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 5. Success Criteria
|
|
164
|
+
|
|
165
|
+
- [ ] All 12 tools covered (no "skipped for time" items)
|
|
166
|
+
- [ ] Every class B/D/E/F gap has either a patch OR a documented reason for deferral
|
|
167
|
+
- [ ] Registry `capability_markers` list grew for at least 6 of 12 tools (signals real gap coverage)
|
|
168
|
+
- [ ] `validate.py --strict`: 0 errors, 0 warnings
|
|
169
|
+
- [ ] `npm test`: all green (including new per-tool bats tests)
|
|
170
|
+
- [ ] `ecosystem_doctor.py --check`: exit 0 after snapshot refresh
|
|
171
|
+
- [ ] Single consolidated commit per agent-bucket, plus one final consolidation commit
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 6. Known Traps (from prior ecosystem work)
|
|
176
|
+
|
|
177
|
+
- **SPA docs** (Cursor, Antigravity, some Augment pages): `urllib` gets empty HTML skeleton. Agents should note this and do a **manual browser visit** or use a JS-aware fetcher. Do not treat "0 headings" as "nothing new".
|
|
178
|
+
- **GitHub docs** rate-limit aggressively on repeated reads. Space out fetches or use `gh api`.
|
|
179
|
+
- **Feature gates** vary by user plan. Copilot Business vs Individual vs Enterprise have different surface. Integrate with the OSS surface; document gated features as C (not adopted).
|
|
180
|
+
- **Version skew** on config schemas. A setting that existed in v1.x may be deprecated in v2.x. When docs reference "available since v1.5" and we don't know what version users run, default to generating the newer form with a comment.
|
|
181
|
+
- **Markdown vs MDX**: Cursor uses `.mdc`, Claude Code uses `.md`, Cline uses `.md` in `.clinerules/`, Roo uses `.md` in `.roo/rules/`. Don't assume one format fits all.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 7. Orchestrate Invocation
|
|
186
|
+
|
|
187
|
+
In a fresh Claude Code session (to avoid context rot from this session):
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
/orchestrate deep ecosystem sweep for ai-toolkit per kb/planning/ecosystem-deep-sweep-2026-04-23.md
|
|
191
|
+
|
|
192
|
+
Spawn 4 agents in parallel:
|
|
193
|
+
- backend-specialist: claude-code, codex-cli, opencode
|
|
194
|
+
- frontend-specialist: cursor, windsurf, google-antigravity
|
|
195
|
+
- devops-implementer: github-copilot, cline, roo-code
|
|
196
|
+
- ai-engineer: gemini-cli, aider, augment
|
|
197
|
+
|
|
198
|
+
Each agent follows the 7-step per-tool protocol in section 3.
|
|
199
|
+
After all 4 report, run consolidation (section 4) and produce the sweep summary.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 8. Deliverables (per agent)
|
|
205
|
+
|
|
206
|
+
Each agent's final output to orchestrator:
|
|
207
|
+
1. **Feature matrix** — one table per assigned tool (step 3+4+5)
|
|
208
|
+
2. **Patch log** — list of commits staged (not committed yet — orchestrator consolidates)
|
|
209
|
+
3. **Registry delta** — proposed JSON diff for `ecosystem_tools.json`
|
|
210
|
+
4. **Gaps not patched** — with rationale (out-of-scope, blocker, deferred)
|
|
211
|
+
5. **Test additions** — bats test file names + test count
|
|
212
|
+
|
|
213
|
+
Orchestrator's final output:
|
|
214
|
+
1. Consolidated commit with message `feat(ecosystem): deep sweep 2026-04-23 — N class B/F integrations`
|
|
215
|
+
2. Version bump decision (minor if any class B/F, patch if only class A updates)
|
|
216
|
+
3. `kb/learnings/ecosystem-sweep-2026-04-23.md` — retrospective noting which tools needed most work (informs priority for next sweep)
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 9. Safety Rails
|
|
221
|
+
|
|
222
|
+
- **Do not** silently upgrade default behavior — every user-visible change lands behind a flag OR goes through a minor version bump with CHANGELOG mention
|
|
223
|
+
- **Do not** rewrite generators wholesale — incremental additions only
|
|
224
|
+
- **Do not** commit during the sweep — orchestrator consolidates at the end
|
|
225
|
+
- **Do not** modify files outside the tool's scope (e.g., backend-specialist touching frontend-specialist's files requires a handoff)
|
|
226
|
+
- **Do** preserve existing symlinks and file-path expectations — the installer depends on them
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 10. Related
|
|
231
|
+
|
|
232
|
+
- [Ecosystem Sync SOP](../procedures/ecosystem-sync-sop.md) — the process this plan instantiates
|
|
233
|
+
- [Supported Tools Registry](../reference/supported-tools-registry.md) — source of truth for tool list
|
|
234
|
+
- `scripts/ecosystem_doctor.py` — drift detector consumed by orchestrator consolidation
|
|
235
|
+
- `scripts/ecosystem_tools.json` — registry file edited by every agent
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 11. Retrospective — 2026-04-23
|
|
240
|
+
|
|
241
|
+
### Execution summary
|
|
242
|
+
|
|
243
|
+
- 4 parallel agents, 3 tools each — full 12/12 coverage, one consolidation pass.
|
|
244
|
+
- 161 new bats tests (679 → 840); validate.py 0 errors / 0 warnings; `ecosystem_doctor --check` exit 0.
|
|
245
|
+
- 14 files modified, 12 new test files, 2 registry docs updated, 1 snapshot rebaselined.
|
|
246
|
+
|
|
247
|
+
### What worked
|
|
248
|
+
|
|
249
|
+
- **Bucket-level file ownership** eliminated merge conflicts entirely. Agents that flagged cross-bucket edits (`ecosystem_tools.json`, registry markdown) correctly left them for the orchestrator.
|
|
250
|
+
- **The 7-step protocol** caught high-impact bugs we would have shipped otherwise — Windsurf rules missing `trigger:` frontmatter (silent invisibility to Cascade), Aider's default `attribute-co-authored-by: true` violating our own git policy, Roo modes lacking `whenToUse` (invisible to Orchestrator).
|
|
251
|
+
- **SPA-wall compensation patterns** (Antigravity bundle strings, Cursor/Windsurf llms.txt mirrors, GitHub release notes as fallback) were reusable across buckets.
|
|
252
|
+
|
|
253
|
+
### What surprised us
|
|
254
|
+
|
|
255
|
+
- **Claude Code 2.1.x grew ~14 new hook events** and 3 new handler types since our last sync. Our validate.py allowlist was the bottleneck, not any generator.
|
|
256
|
+
- **Cross-editor compat reads**: Cursor, Windsurf, and opencode now natively read `.claude/skills/` and `.claude/agents/` — we get skill/agent discovery in those editors "for free" without emitting duplicates. Saved ~300 generated files.
|
|
257
|
+
- **Copilot tier-gating is heavy**: half of the upstream surface (custom agents, repo MCP, org instructions) is Business/Enterprise-only and was classified as C (documented non-integration).
|
|
258
|
+
- **Test #755 regression** from the Codex `PermissionRequest` addition: the test counted `guard-destructive.sh` occurrences with `== 1`. Fixed by updating the expected count to 2 with a comment explaining why base hooks legitimately register it twice now.
|
|
259
|
+
|
|
260
|
+
### Open items flagged for future passes
|
|
261
|
+
|
|
262
|
+
1. **Native `.codex/skills/*/SKILL.md` emission** (class B) — would write ~99 skill directories. Needs opt-in flag + minor bump.
|
|
263
|
+
2. **`.opencode/skills/` duplication** — deferred indefinitely; `.claude/skills/` fallback already works.
|
|
264
|
+
3. **New generators needed**: `generate_gemini_hooks.py`, `generate_augment_agents.py`, `generate_augment_commands.py`, `generate_augment_hooks.py`.
|
|
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.
|
|
266
|
+
5. **Roo `.roomodes` YAML variant** — upstream-preferred; deferred until a YAML multi-line helper is added.
|
|
267
|
+
6. **Copilot install wiring**: new `.github/instructions/` and `.github/prompts/` directories are emitted when `generate_copilot.py` is called with a target dir, but `install_steps/ai_tools.py` doesn't invoke that path yet. Wire behind minor bump.
|
|
268
|
+
|
|
269
|
+
### Process refinements for next sweep
|
|
270
|
+
|
|
271
|
+
- **Add a "class B/F deferred" register**: buckets produced these ad-hoc; a structured list in the plan would make prioritization for the next sweep trivial.
|
|
272
|
+
- **Cross-bucket test impact**: adding per-tool bats tests inflates the test count and trips the README badge validator. Next time, bump the badge at the start of consolidation, not at the end.
|
|
273
|
+
- **Search docs via llms.txt first** when the vendor publishes one — bypasses SPA walls with zero fallback logic.
|