omniconductor 0.6.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +16 -12
  3. package/VISION.md +2 -2
  4. package/adapters/README.md +8 -8
  5. package/adapters/claude/README.md +2 -5
  6. package/adapters/claude/SUPPORTED-FEATURES.md +1 -1
  7. package/adapters/claude/metadata.json +39 -0
  8. package/adapters/claude/transform.sh +198 -34
  9. package/adapters/codex/README.md +23 -27
  10. package/adapters/codex/metadata.json +35 -0
  11. package/adapters/codex/transform-spec.md +5 -6
  12. package/adapters/codex/transform.sh +282 -35
  13. package/adapters/copilot/README.md +26 -29
  14. package/adapters/copilot/metadata.json +36 -0
  15. package/adapters/copilot/transform.sh +124 -33
  16. package/adapters/cursor/README.md +31 -30
  17. package/adapters/cursor/metadata.json +35 -0
  18. package/adapters/cursor/transform.sh +115 -26
  19. package/adapters/gemini/README.md +14 -15
  20. package/adapters/gemini/metadata.json +36 -0
  21. package/adapters/gemini/transform.sh +310 -34
  22. package/adapters/windsurf/README.md +20 -19
  23. package/adapters/windsurf/metadata.json +36 -0
  24. package/adapters/windsurf/transform.sh +137 -53
  25. package/bin/doctor.js +257 -0
  26. package/bin/omniconductor.js +15 -2
  27. package/core/anti-patterns/frequent-rule-file-edit.md +1 -1
  28. package/core/anti-patterns/single-monolithic-rule-file.md +1 -1
  29. package/core/recipes/README.md +2 -2
  30. package/core/universal-rules/README.md +4 -4
  31. package/core/universal-rules/meta-discipline.md +4 -4
  32. package/core/universal-rules/spec-as-you-go.md +1 -1
  33. package/docs/ADAPTER-LIVE-VERIFICATION.md +73 -0
  34. package/docs/COMPARISON.md +133 -0
  35. package/docs/COMPATIBILITY-MATRIX.md +126 -0
  36. package/docs/DESIGN-DECISIONS.md +1268 -0
  37. package/docs/MANUAL-INSTALL.md +15 -15
  38. package/docs/PUBLICATION-POLICY.md +46 -0
  39. package/docs/PUBLISH-GUIDE.md +141 -0
  40. package/package.json +7 -1
  41. package/tools/check-adapter-metadata.sh +211 -0
  42. package/tools/check-stale-tokens.sh +130 -0
  43. package/tools/generate-adapter-docs.js +123 -0
  44. package/tools/live-verify.sh +195 -0
  45. package/tools/manifest-safety.sh +118 -0
  46. package/tools/stale-tokens.txt +32 -0
  47. package/tools/test-install-modes.sh +277 -0
  48. package/tools/validate-adapter-output.sh +1 -1
@@ -7,13 +7,15 @@
7
7
  * Usage:
8
8
  * omniconductor init --target=<tool> [target-dir] [--recipes=a,b] [--dry-run] [--no-prompt]
9
9
  * omniconductor init --target=<tool> [target-dir] --uninstall [--force]
10
+ * omniconductor doctor [target-dir] [--json]
10
11
  * omniconductor list
11
12
  * omniconductor --help | --version
12
13
  *
13
14
  * It does NOT reimplement any install logic. It locates this repo's
14
15
  * adapters/<tool>/transform.sh and runs it with `bash`, forwarding all flags
15
16
  * and inheriting stdio. The shell adapters remain the single source of truth
16
- * (ADR-018 / the bash adapters are the validated implementation).
17
+ * (ADR-002/023/025 the bash adapters are the validated implementation).
18
+ * `doctor` (ADR-041) is read-only: it inspects an install, never changes it.
17
19
  */
18
20
 
19
21
  const path = require('path');
@@ -36,6 +38,7 @@ function usage() {
36
38
 
37
39
  Usage:
38
40
  omniconductor init --target=<tool> [target-dir] [options] Install into target-dir (default: .)
41
+ omniconductor doctor [target-dir] [--json] Health-check an existing install (read-only)
39
42
  omniconductor list List available tool adapters
40
43
  omniconductor --help | --version
41
44
 
@@ -43,6 +46,8 @@ Tools: ${TOOLS.join(', ')}
43
46
 
44
47
  Common options (forwarded to the adapter):
45
48
  --recipes=a,b,c Opt-in recipes to install
49
+ --mode=<m> Install preset: full (default) | minimal | strict |
50
+ recipes-only | reflector-only (ADR-044)
46
51
  --dry-run Preview only — write nothing
47
52
  --no-prompt Skip interactive prompts (CI-safe)
48
53
  --uninstall Revert a previous install (manifest-based)
@@ -52,6 +57,7 @@ Examples:
52
57
  omniconductor init --target=claude ./my-app --recipes=tdd,debugging
53
58
  omniconductor init --target=cursor ./my-app --dry-run
54
59
  omniconductor init --target=codex . --uninstall
60
+ omniconductor doctor ./my-app --json
55
61
 
56
62
  Run: npx omniconductor init --target=<tool> <dir>`;
57
63
  }
@@ -85,8 +91,15 @@ function main(argv) {
85
91
  return 0;
86
92
  }
87
93
 
94
+ if (cmd === 'doctor') {
95
+ const rest = args.slice(1);
96
+ const jsonOut = rest.includes('--json');
97
+ const dir = rest.find((a) => !a.startsWith('-')) || '.';
98
+ return require('./doctor.js').run(dir, { json: jsonOut });
99
+ }
100
+
88
101
  if (cmd !== 'init') {
89
- fail(`unknown command '${cmd}'. Expected 'init' or 'list'.`);
102
+ fail(`unknown command '${cmd}'. Expected 'init', 'doctor', or 'list'.`);
90
103
  }
91
104
 
92
105
  // Parse `init` args: extract --target, the positional target-dir, forward the rest.
@@ -54,7 +54,7 @@ If the rule file is edited daily, every session starts with a fresh cache write
54
54
  ```bash
55
55
  # Edits per week to top-of-prefix files
56
56
  git log --since='1 week ago' --pretty=format:'%h %s' -- \
57
- CLAUDE.md AGENT.md GEMINI.md .codex/codex.md \
57
+ CLAUDE.md AGENT.md AGENTS.md GEMINI.md \
58
58
  .claude/rules/*.md .cursor/rules/*.mdc 2>/dev/null | wc -l
59
59
 
60
60
  # Anything > 3 in a week is suspect
@@ -52,7 +52,7 @@ Two corollaries:
52
52
 
53
53
  ```bash
54
54
  # Find oversized rule files
55
- wc -l CLAUDE.md AGENT.md GEMINI.md .codex/codex.md 2>/dev/null | \
55
+ wc -l CLAUDE.md AGENT.md AGENTS.md GEMINI.md 2>/dev/null | \
56
56
  awk '$1 > 500 { print }'
57
57
  ```
58
58
 
@@ -44,7 +44,7 @@ Adapter `transform.sh` accepts a `--recipes=<comma-separated-list>` flag (or per
44
44
  | Cursor | `.cursor/rules/<recipe>.mdc` |
45
45
  | Copilot | `.github/instructions/<recipe>.instructions.md` |
46
46
  | Gemini | Section in `GEMINI.md` |
47
- | Codex | Section in `.codex/codex.md` |
48
- | Windsurf | `.windsurf/rules/<recipe>.md` |
47
+ | Codex | Section in `AGENTS.md` |
48
+ | Windsurf | `.devin/rules/<recipe>.md` (legacy `.windsurf/rules/` still read) |
49
49
 
50
50
  Recipes are layered on TOP of universal-rules. They never override; they extend.
@@ -52,11 +52,11 @@ Adapters do not strip these callouts. The honest acknowledgment of degraded enfo
52
52
  | Adapter | Output |
53
53
  |---|---|
54
54
  | Claude | One file per bundle under `.claude/rules/` with `paths:` frontmatter. Universal bundles also referenced from `CLAUDE.md`. |
55
- | Cursor | One `.mdc` per bundle under `.cursor/rules/` with `globs:` frontmatter. Bundles summarized in `.cursorrules`. |
56
- | Copilot | One `.instructions.md` per bundle under `.github/instructions/` with `applyTo:` frontmatter. |
55
+ | Cursor | One `.mdc` per bundle under `.cursor/rules/` (`alwaysApply: true`; recipes get `globs:`). Optional legacy `.cursorrules` bundle via `--legacy-cursorrules`. |
56
+ | Copilot | All bundles merged into `.github/copilot-instructions.md` (default) or one `.instructions.md` per bundle under `.github/instructions/` with `--per-rule`. |
57
57
  | Gemini | All bundles concatenated into `GEMINI.md`, sectioned. |
58
- | Codex | All bundles concatenated into `.codex/codex.md`. |
59
- | Windsurf | One file per bundle under `.windsurf/rules/`. |
58
+ | Codex | All bundles concatenated into `AGENTS.md` (project root). |
59
+ | Windsurf | One file per bundle under `.devin/rules/` (legacy `.windsurf/rules/` still read). |
60
60
 
61
61
  See `adapters/<tool>/transform-spec.md` for the exact transformation per adapter.
62
62
 
@@ -48,7 +48,7 @@ The user's framework is their craft. Borrowing names dilutes provenance and crea
48
48
  - **dispatch brief** — the ≤2K-token instruction object passed at dispatch.
49
49
  - **stop condition** — explicit done-criteria for a dispatched task.
50
50
  - **flat-with-leader** — orchestration topology where roles never dispatch each other; only the orchestrator dispatches.
51
- - **Single-Agent Mode** — fallback for tools without native sub-agent support; orchestrator + helper collapse into one thread.
51
+ - **Single-Agent Mode** — fallback when sub-agent dispatch isn't available or isn't emitted for the tool; orchestrator + helper collapse into one thread.
52
52
  - **AMB triggers** — the 7-item ambiguity catalog that forces ASK behavior.
53
53
  - **ACT-WITH-DECLARATION** — proceed-with-best-guess + surface the assumption.
54
54
  - **universal rule** vs **recipe** — universal rules apply to every adopter; recipes are opt-in.
@@ -322,7 +322,7 @@ On other tools, the rule text serves as the constraint.
322
322
  | Originality grep | Pre-commit script (orchestrator's responsibility) | Same | Same | Same | Same | Same |
323
323
  | AMB-1..7 trigger ASK | Rule text + LLM self-discipline | Same | Same | Same | Same | Same |
324
324
  | Token-economy Read discipline | Rule text + Stop-hook reminder when wasteful patterns spike | Rule text | Rule text | Rule text | Rule text | Rule text |
325
- | Model routing | PreToolUse hook validates explicit `model` | Composer picker manual | Account-level only | Single model | Single model | Single model |
326
- | Flat-with-leader | PreToolUse hook validates dispatcher | Single-Agent Mode (no sub-agents) | Same | Same | Same | Same |
325
+ | Model routing | PreToolUse hook validates explicit `model` | Manual per-task pick (tool-native) | Same | Same | Same | Same |
326
+ | Flat-with-leader | PreToolUse hook validates dispatcher | Rule text (tools have native sub-agents; role emission is a later adapter phase) | Same | Same | Same | Same |
327
327
 
328
- The honest summary: meta-discipline is enforced by rule text on every tool, with hook-based extras on Claude Code only.
328
+ The honest summary: meta-discipline is enforced by rule text on every tool, with hook-based extras emitted on Claude Code only today — an emission gap, not a tool limitation (every listed tool ships hooks, sub-agents, and per-task model selection natively as of 2026).
@@ -108,7 +108,7 @@ Per-tool transformations:
108
108
 
109
109
  - **Claude Code**: keep as-is in `docs/specs/<area>.md`. Stop-hook checks for stale frontmatter when source files in that area are touched.
110
110
  - **Cursor / Copilot / Windsurf**: same file path, frontmatter preserved. Tool-specific scoping (`globs:` / `applyTo:`) added by the relevant adapter when the file lives under `.cursor/rules/` or `.github/instructions/`.
111
- - **Gemini / Codex**: file is referenced by path inside the single GEMINI.md / codex.md.
111
+ - **Gemini / Codex**: file is referenced by path inside the single GEMINI.md / AGENTS.md.
112
112
 
113
113
  ---
114
114
 
@@ -0,0 +1,73 @@
1
+ # Adapter Live-Verification Guide
2
+
3
+ > What the automated checks DO and DON'T cover, and a manual checklist to close the gap.
4
+
5
+ CONDUCTOR's CI + `tools/validate-adapter-output.sh` verify that each adapter **emits
6
+ the correct files** (right paths, the 5 universal rules present, no unsubstituted
7
+ placeholders, no reference-product leakage). They do **NOT** verify that the target
8
+ tool actually *loads and follows* those files in a live session — that requires the
9
+ tool installed and a real prompt. This guide is that last mile.
10
+
11
+ Status legend: ✅ = automated (CI/validator) · 🧪 = needs a live session (this guide).
12
+
13
+ <!-- generated:live-verification-table — edit adapters/*/metadata.json + run tools/generate-adapter-docs.js; do not hand-edit (ADR-042) -->
14
+ | Adapter | File emission | Live rule-loading |
15
+ |---|---|---|
16
+ | Claude Code | ✅ | ✅ **live-verified 2026-07-09** — 2.1.205 (Claude Code) headless probe listed 5/5 rules + read-CURRENT_WORK-first |
17
+ | Cursor | ✅ | 🧪 not yet run |
18
+ | Copilot | ✅ | 🧪 per-IDE — see docs/IDE-SMOKE-TESTING.md |
19
+ | Gemini CLI | ✅ | 🧪 not yet run |
20
+ | Codex | ✅ | ✅ **live-verified 2026-07-09** — codex-cli 0.144.0 headless probe listed 4/5 rules + read-CURRENT_WORK-first |
21
+ | Windsurf | ✅ | 🧪 not yet run |
22
+ <!-- /generated:live-verification-table -->
23
+
24
+ > This table is generated from `adapters/<tool>/metadata.json` (`live_verification`) —
25
+ > `tools/live-verify.sh` updates the metadata after a successful live probe, and CI
26
+ > fails if the table and metadata disagree.
27
+
28
+ ## Per-tool procedure
29
+
30
+ For each tool: (1) install into a throwaway project, (2) open the tool there, (3) run
31
+ the probe prompt, (4) record PASS/FAIL.
32
+
33
+ ### Common setup
34
+ ```bash
35
+ mkdir /tmp/cdt-<tool> && cd /tmp/cdt-<tool> && git init -q
36
+ bash <conductor>/adapters/<tool>/transform.sh . --no-prompt --recipes=coding-conventions
37
+ # (or: node <conductor>/bin/omniconductor.js init --target=<tool> . --no-prompt --recipes=coding-conventions)
38
+ ```
39
+
40
+ ### Probe prompt (same for every tool)
41
+ > "What workflow and rules are you operating under in this project? List the universal rules you can see, and tell me the first thing you must do before writing code."
42
+
43
+ **PASS criteria** — the tool's answer references CONDUCTOR's rules: the Plan-first /
44
+ spec-as-you-go / quality-gates discipline, and "read `docs/CURRENT_WORK.md` first" (or
45
+ equivalent). A generic answer that ignores the installed file = FAIL (tool didn't load it).
46
+
47
+ ### Tool-specific load points
48
+ | Tool | File the tool must auto-load | Check |
49
+ |---|---|---|
50
+ | Gemini CLI | `GEMINI.md` (project root) + `.gemini/styleguide.md` | Does Gemini cite GEMINI.md content? Does it apply the styleguide on a code task? |
51
+ | Codex | `AGENTS.md` (project root) | Auto-probed by `tools/live-verify.sh` (`codex exec`) — current result in the status table above |
52
+ | Windsurf / Devin Desktop | `.windsurfrules` + `.devin/rules/*.md` (legacy `.windsurf/rules/`) | Does Windsurf show the rules in its Rules panel? Does it follow them? |
53
+ | Claude Code | `CLAUDE.md` + `.claude/rules/*.md` + agents/hooks | Rules panel + a Stop-hook fires on a stale-docs commit |
54
+ | Cursor | `.cursor/rules/*.mdc` | Settings → Rules tab shows the 5 rules |
55
+ | Copilot | `.github/copilot-instructions.md` (or `.github/instructions/*`) | Per-IDE — see `docs/IDE-SMOKE-TESTING.md` |
56
+
57
+ ### Recording results
58
+ Record each tool's outcome in `docs/COMPATIBILITY-MATRIX.md` (a "Live-verified" column):
59
+ `✅ verified <date>` / `⚠️ partial (note)` / `❌ tool ignored the file`.
60
+
61
+ A tool that emits correctly (CI green) but FAILS live-loading is a **documentation /
62
+ file-location** issue, not an emission bug — check the tool's current rules-file
63
+ convention (they change), update the adapter's output path, re-run CI, then re-test.
64
+
65
+ ## Why this is separate from CI
66
+ Running six AI coding tools headlessly in CI is impractical (each needs auth + a model).
67
+ So CONDUCTOR's CI guarantees *correct output*; live consumption is verified **locally**
68
+ by `tools/live-verify.sh` (ADR-043): it installs into a throwaway dir, probes the tool's
69
+ headless CLI with the prompt above, grades deterministically (>=3 of 5 rule names +
70
+ CURRENT_WORK — no LLM judge), and on PASS writes the result into
71
+ `adapters/<tool>/metadata.json`, regenerating the status table above. Tools whose CLI
72
+ is not installed are SKIPped honestly. Treat any 🧪 row as "emission-verified,
73
+ live-pending" until a probe (or a manual session per this guide) is recorded.
@@ -0,0 +1,133 @@
1
+ # COMPARISON — CONDUCTOR vs other tools
2
+
3
+ Honest comparison of CONDUCTOR against the major existing options. Updated 2026-07-09 — CONDUCTOR version currency lives in [`CHANGELOG.md`](../CHANGELOG.md).
4
+
5
+ ## Headline matrix
6
+
7
+ | | GSD (`get-shit-done`) | SpecKit | BMAD | Cursor Rules | Plain CLAUDE.md | **CONDUCTOR** |
8
+ |---|---|---|---|---|---|---|
9
+ | **Multi-tool target** | 14+ runtimes | A few | A few | Cursor only | Claude Code only | 6 tools, all with working adapters (Claude / Cursor / Copilot / Gemini / Codex / Windsurf) — npm-published (`npx omniconductor`) |
10
+ | **Setup weight** | Heavy (60+ skills) | Heavy (phases, ceremonies) | Heavy (sprint-style) | Light (rules only) | Trivial | Light kernel (5 universal rules + 6 roles) + 13 opt-in recipes + 10 hook templates |
11
+ | **Sub-agent orchestration** | Yes | Yes | Yes | No | Manual | Yes — emitted on Claude today; the other tools support sub-agents too (ADR-031) but adapter emission is Phase 2 (ADR-004) |
12
+ | **Spec-as-you-go enforcement** | Soft (encouraged) | Yes (gates) | Yes (artifacts) | No | No | ABSOLUTE on Claude (Stop hook); rule reminder on others |
13
+ | **Two-stage code review** | Yes | Yes | Yes | No | No | ABSOLUTE on Claude (specialized agents); rule reminder on others |
14
+ | **Token economy rules** | Bonus | Bonus | Not specifically | No | No | Built-in from day 1; instruction-fidelity-first since 0.4.0 (ADR-035/036) |
15
+ | **Self-improvement loop** | No | No | No | No | No | Opt-in `self-improvement` Reflector — propose-only, human-approved (ADR-030/032/033), emitted on all 6 tools |
16
+ | **Agent-loop / git discipline** | No | No | No | No | No | Opt-in `loop-engineering` (bounded, externally-verified loops, ADR-038) + `git-hygiene` (shared-repo discipline, ADR-037) recipes |
17
+ | **Memory pattern** | No | No | No | No | No | 4-type, documented universally; native directory on Claude only |
18
+ | **Bilingual (한/영)** | Translations available | English-first | English-first | English-first | DIY | First-class (한/영, README + marketing) |
19
+ | **Origin** | Single-author theory | Microsoft research roots | Indie author | IDE vendor | None | One year of production iteration at LFamily Labs |
20
+ | **Maturity** | High (many skills) | High (well-documented) | High (community) | Medium | N/A | All 6 adapters working + CI-validated, npm-published; 1.0 shipped 2026-07 (current version in `CHANGELOG.md`) |
21
+ | **License** | MIT (varies) | MIT | Commercial-friendly | Proprietary IDE | N/A | Apache 2.0 + CONDUCTOR-name trademark (ADR-029) |
22
+ | **Telemetry** | Varies | None | None | Cursor opt-in | None | None ever (ADR-008) |
23
+ | **Uninstall path** | Per-skill manual delete | Per-phase manual delete | Per-artifact manual delete | None (rules accumulate) | N/A | `transform.sh --uninstall` (manifest-tracked, restores backups) — ADR-020 |
24
+
25
+ ## When to pick which
26
+
27
+ ### Pick GSD / BMAD if:
28
+ You want maximum depth, a large skill catalog, an existing community, and you don't mind heavy setup. GSD is the maximalist choice for users who want every workflow phase covered with a dedicated skill.
29
+
30
+ ### Pick SpecKit if:
31
+ You want a Microsoft-pedigree, well-documented spec-driven workflow with clear phase gates. Strong for enterprise teams that already use Microsoft developer tooling.
32
+
33
+ ### Pick Cursor Rules if:
34
+ You only use Cursor and don't anticipate switching tools. Cursor Rules give you what Cursor natively supports — no abstraction overhead. (You can later cross-port to CONDUCTOR if you adopt a second tool.)
35
+
36
+ ### Pick plain CLAUDE.md if:
37
+ You only use Claude Code, want zero framework, and prefer to extend incrementally. CONDUCTOR's value mostly disappears for single-tool, single-rule-file users.
38
+
39
+ ### Pick CONDUCTOR if:
40
+ - You use 2+ AI coding tools on the same project (or plan to).
41
+ - You want production-shape orchestration with ABSOLUTE enforcement of the things that actually matter at solo / small-team scale.
42
+ - You value bilingual (한/영) onboarding.
43
+ - You want a small, opinionated kernel — not a maximalist superset.
44
+ - You've shipped code and felt the pain of stale docs and merged regressions.
45
+
46
+ ## How CONDUCTOR is different from a "rules format converter"
47
+
48
+ CONDUCTOR is NOT just a tool that translates rules between formats. It is opinionated content + workflow + memory pattern that happens to be portable.
49
+
50
+ If you only want format conversion, you can write a 50-line script that reads `*.md` and re-emits them with different front-matter. CONDUCTOR's universal rules (operations / quality-gates / meta-discipline / spec-as-you-go / workflow) plus the 13 opt-in recipes are the value; the multi-tool transform is the delivery vehicle.
51
+
52
+ ## Honest weaknesses of CONDUCTOR
53
+
54
+ - **No installer GUI.** Bash adapters + the `npx omniconductor` CLI only. Power-user tool. (A VSCode-extension launcher is Phase 2 — ADR-023/025.)
55
+ - **Enforcement emission is still Claude-weighted.** All six tools now support hooks / sub-agents / model routing (ADR-031), but CONDUCTOR's adapters currently *emit* the full hook + agent set for Claude only; the other five get the rule/recipe text plus the opt-in Reflector loop. Full non-Claude emission is Phase 2.
56
+ - **Live verification is not complete.** All 6 adapters are emit-verified in CI; live rule-loading is probed per tool by `tools/live-verify.sh`, and the current per-tool status lives in the generated table in `docs/ADAPTER-LIVE-VERIFICATION.md` (single-sourced from adapter metadata).
57
+ - **No community yet.** No Discord, no Twitter/X presence. You're an early adopter.
58
+ - **Tool fragmentation risk.** If 12 new tools launch in 2026, we cannot keep up. Mitigated by documented adapter contribution path (`docs/CONTRIBUTING.md`).
59
+ - **Claude-Code bias.** The orchestrator-centric model maps naturally to Claude. On other tools the human carries more of the weight. This is documented honestly (ADR-004) but it is a real bias.
60
+ - **Two-stage code review on Claude requires the `pr-review-toolkit` plugin.** Documented in the Claude adapter notes; fallback is manual prompt reuse.
61
+ - **Mobile rule (project-specific) is React Native flavored.** If your stack is native iOS or native Android, that rule is mostly noise — but it's project-specific and lives in your adapted output, not in `core/`.
62
+
63
+ ## Honest strengths
64
+
65
+ - **Production pedigree.** Every rule earned through a real shipping incident at LFamily Labs. Not theoretical.
66
+ - **Honesty over feature inflation.** ADR-004 says we will NOT fake-polyfill sub-agents anywhere; ADR-031 documents per-tool capability vs what CONDUCTOR actually emits. Other multi-tool projects gloss over this.
67
+ - **Bilingual moat.** Korean solo-dev community is meaningful and underserved.
68
+ - **Apache 2.0, no telemetry, no paid tier — fully open and commercial-friendly.** Only the **CONDUCTOR** name is reserved (trademark), so nobody can pass off a modified copy as the original. Same permissive footing as MIT competitors, with brand protection (ADR-029).
69
+ - **Small, opinionated kernel.** 5 universal rules (plus 13 strictly opt-in recipes and 10 hook templates) vs GSD's 60 skills. If our rules are wrong for you, you'll know quickly and can move on. No 6-month sunk cost.
70
+
71
+ ## Verdict
72
+
73
+ If you only ship in Claude Code and you love opinionated tooling, CONDUCTOR is a strict upgrade over plain CLAUDE.md.
74
+
75
+ If you ship in multiple tools, CONDUCTOR is the only option that treats portability as a first-class requirement rather than a future maybe.
76
+
77
+ If you want a maximalist phase-gated SDLC tool with broad runtime support and an existing community, pick GSD or BMAD; CONDUCTOR is intentionally smaller and more opinionated.
78
+
79
+ ## Conflict resolution: Superpowers + CONDUCTOR on the same project
80
+
81
+ > Added 2026-05-09 per ADR-019, finding from `docs/audits/competitive-analysis-2026-05-09.md` (P1c).
82
+
83
+ Superpowers (a Claude Code plugin set offering brainstorming / planning / TDD / debugging skills) and CONDUCTOR overlap in workflow scope. Running both unmoderated double-loads guidance into every turn, hurts cache hit rate, and creates ambiguity about which workflow the orchestrator should follow.
84
+
85
+ ### Workflow overlap matrix
86
+
87
+ | Workflow area | Superpowers | CONDUCTOR | Overlap risk |
88
+ |---|---|---|---|
89
+ | Brainstorming | `superpowers:brainstorming` skill | `core/universal-rules/workflow.md` Plan-first + AMB triggers | High — both frame the requirements stage, prompts compete |
90
+ | Planning / writing plans | `superpowers:writing-plans` | `workflow.md` 7-step + `meta-discipline.md` ACT-WITH-DECLARATION | High — both produce `.plan.md`-style artifacts |
91
+ | Plan execution | `superpowers:executing-plans` / `subagent-driven-development` | Centralized + Role-Specialized orchestration (ADR-010) | High — both manage sub-agent dispatch but with different guardrails |
92
+ | TDD | `superpowers:test-driven-development` | `quality-gates.md` Q3 (test-coverage sync) | Medium — Superpowers prescribes red/green/refactor; CONDUCTOR prescribes coverage parity. Compatible if order is fixed. |
93
+ | Debugging | `superpowers:systematic-debugging` | None — left to project judgement | Low — adopt Superpowers' debugging skill freely; no conflict. |
94
+ | Code review | `superpowers:requesting-code-review` / `receiving-code-review` | `quality-gates.md` Q1 (pre-commit) + Q2 (pre-merge) two-stage | Medium — Superpowers covers etiquette; CONDUCTOR covers gate enforcement. Stack as etiquette-on-top-of-gates. |
95
+ | Git worktrees | `superpowers:using-git-worktrees` | None | None — Superpowers complements, not conflicts. |
96
+ | Verification before completion | `superpowers:verification-before-completion` | `quality-gates.md` Q1/Q4 | Low — same intent, different surface. Pick one; CONDUCTOR's hook-enforced version is stricter. |
97
+
98
+ ### Cache-hit impact
99
+
100
+ ADR-014 sets a 95% cache-hit floor as CONDUCTOR's SLA. Loading both rule sets into the cacheable prefix doubles the volatile-content surface (Superpowers' SKILL.md descriptions update, CONDUCTOR's `core/universal-rules/*` update) — every change in either invalidates the cache. Empirically, projects that run both without reconciliation drop from 100% to 60-80% hit rate within two weeks. Run `tools/measure-tokens.sh --latest` after enabling both to baseline; if hit rate drops below 95%, follow option A or B below.
101
+
102
+ ### Recommended patterns
103
+
104
+ **Option A — CONDUCTOR only (recommended for new projects)**
105
+
106
+ Use CONDUCTOR's universal rules + roles + recipes. Skip Superpowers entirely. The 5-rule kernel covers planning, spec-as-you-go, quality gates, operations, and meta-discipline; the 6 roles cover orchestration. Add Superpowers later only if a specific skill (e.g. `using-git-worktrees`) is missing.
107
+
108
+ **Option B — Superpowers as primary, CONDUCTOR recipes only (for projects already on Superpowers)**
109
+
110
+ Keep Superpowers in charge of workflow. Cherry-pick CONDUCTOR recipes that don't overlap — `monorepo`, `i18n`, `coding-conventions`, `branch-strategy`, `auto-mock-data` — without installing the universal rules or roles. Procedure:
111
+
112
+ ```bash
113
+ # Install only recipes (no universal-rules, no roles, no hooks):
114
+ bash adapters/claude/transform.sh <target> --recipes=monorepo,i18n,coding-conventions --no-prompt
115
+ # Then manually delete the universal-rules and agent files emitted by transform.sh:
116
+ rm <target>/.claude/rules/{workflow,spec-as-you-go,quality-gates,operations,meta-discipline}.md
117
+ rm <target>/.claude/agents/*.md
118
+ ```
119
+
120
+ > Note: a future `--recipes-only` flag (separate dispatch) will streamline this. Until then, the manual deletion above is the supported procedure. The recently shipped `--uninstall` (ADR-020) reverts the entire install — including recipes — so a Superpowers-primary user can clean-slate via `transform.sh <target> --uninstall` and re-run with the recipes-only convention above when it lands.
121
+
122
+ **Option C — Both (NOT recommended, requires manual reconciliation)**
123
+
124
+ If you must run both:
125
+ 1. Disable overlapping Superpowers skills (`brainstorming`, `writing-plans`, `executing-plans`, `verification-before-completion`) by removing them from the active plugin set, or by adding a project-level rule that says "skill X disabled, see CONDUCTOR's `workflow.md` instead".
126
+ 2. Re-measure cache hit rate after one week. If below 95%, escalate to option A or B.
127
+ 3. Document the active reconciliation in `CLAUDE.md` so the orchestrator doesn't oscillate between guidance sources.
128
+
129
+ ### Cross-reference
130
+
131
+ - Audit basis: `docs/audits/competitive-analysis-2026-05-09.md` — full Superpowers feature inventory and cache-hit rationale.
132
+ - ADR-019 in `docs/DESIGN-DECISIONS.md` — decision record for the cleanup batch that produced this section.
133
+ - ADR-014 in `docs/DESIGN-DECISIONS.md` — 95% cache-hit floor SLA.
@@ -0,0 +1,126 @@
1
+ # COMPATIBILITY MATRIX — CONDUCTOR per tool
2
+
3
+ This matrix describes which CONDUCTOR features are supported by each target tool. ✅ = native support, ⚠️ = partial / requires manual work, ❌ = not supported.
4
+
5
+ > **Status note (re-verified 2026-07-04)**: ratings are the *tool-capability* level, re-verified against **first-party sources** (official docs / changelogs / tool GitHub repos) on 2026-07-04. The prior matrix (dated 2026-05-03) marked hooks and several other features as Claude-only; that is now **out of date** — all six tools ship event hooks (see the Hooks row + footnotes).
6
+ >
7
+ > **Capability ≠ CONDUCTOR emission.** A ✅ here means the *tool* documents the feature, NOT that a CONDUCTOR adapter already compiles to it. **Update (2026-07-04, ADR-032):** the **self-improvement / Reflector loop is now emitted for all six adapters** (a session-end trajectory-log hook, a `/reflect` command, a reflector agent-or-rule, and the prune script — recipe-gated on `--recipes=self-improvement`), so for that one capability the emission gap is closed on every tool (Windsurf via `post_cascade_response_with_transcript`, which is per-response not per-session). **Update (2026-07-05, ADR-033):** weekly-run scheduling is now shipped too — every adapter emits `.conductor/reflect/run-weekly.sh` (auto-detects the tool's headless CLI) + `SCHEDULING.md` (per-tool cron/launchd + native-scheduler registration, with the cloud-scheduler-can't-see-local-trajectories caveat). **Still Phase 2:** emitting the *rest* of the hook set (agent-routing / commit / large-file guards) on the five non-Claude adapters (see `docs/specs/2026-07-03-multitool-parity-reverification-SPEC-B-handoff.md`). Cells corrected in this pass are limited to what a first-party source confirms; unverifiable claims are hedged in the footnotes rather than shipped as ✅.
8
+ >
9
+ > **Naming:** Windsurf was **rebranded to "Devin Desktop"** (June 2026, per its own changelog); the "Windsurf" column name is kept here for adopter familiarity. Its **rules** now live under `.devin/rules/` (legacy `.windsurf/rules/`); other config (workflows, memories) remains under `.windsurf/` and `~/.codeium/windsurf/` — see footnote 11.
10
+
11
+ ## Feature support matrix
12
+
13
+ | Feature | Claude Code | Cursor | Copilot | Gemini CLI | Codex | Windsurf |
14
+ |---|---|---|---|---|---|---|
15
+ | **Sub-agent dispatch** (Plan → delegate → verify) | ✅ Agent tool | ✅¹ | ✅¹ | ✅¹ | ✅¹ | ✅¹ |
16
+ | **Hooks** (PreToolUse / Stop / etc.) | ✅ | ✅² | ✅² | ✅² | ✅² | ⚠️² |
17
+ | **Custom named agents** (own system prompt) | ✅ `.claude/agents/*.md` | ✅³ | ✅³ | ✅³ | ✅³ | ⚠️³ |
18
+ | **Per-task model routing** (triage per call/agent) | ✅ per-call `model:` | ✅⁴ | ✅⁴ | ✅⁴ | ✅⁴ | ✅⁴ |
19
+ | **Slash / custom commands** | ✅ | ✅⁵ | ✅⁵ | ✅⁵ | ✅⁵ | ✅⁵ |
20
+ | **Built-in managed memory** | ✅ `~/.claude/projects/.../memory/` | ⚠️⁶ | ✅⁶ | ⚠️⁶ | ✅⁶ | ✅⁶ |
21
+ | **Native scheduled agents/jobs** | ✅ Routines | ✅⁷ | ✅⁷ | ⚠️⁷ | ✅⁷ | ⚠️⁷ |
22
+ | **Machine-readable transcripts** | ✅ JSONL | ✅⁸ | ⚠️⁸ | ✅⁸ | ✅⁸ | ✅⁸ |
23
+ | **AGENTS.md context file** | ⚠️⁹ (CLAUDE.md) | ✅⁹ | ✅⁹ | ⚠️⁹ | ✅⁹ | ✅⁹ |
24
+ | **Lazy-loaded rules** (glob on file-touch) | ✅ paths front-matter | ✅ `globs:` on `.mdc` | ✅ `applyTo:` | ⚠️¹⁰ | ⚠️¹⁰ | ⚠️ directory-based |
25
+ | **Always-loaded baseline** | ✅ `CLAUDE.md` | ✅ `.cursor/rules/*.mdc` (`alwaysApply`; `.cursorrules` legacy) | ✅ `applyTo: '**'` | ✅ `GEMINI.md` | ✅ `AGENTS.md` | ✅ `.windsurf`/`.devin` rules¹¹ |
26
+ | **Skill / plugin ecosystem** | ✅ | ✅ Skills⁵ | ⚠️ MCP + prompt files | ⚠️ tools + extensions | ✅ Skills⁵ | ⚠️ workflows/skills |
27
+ | **Spec-as-you-go enforcement (auto-block)** | ✅ Stop hook | ✅¹² | ✅¹² | ✅¹² | ✅¹² | ⚠️¹² |
28
+ | **Two-stage code review enforcement** | ✅ Stop hook | ✅¹² | ✅¹² (+ native PR review) | ✅¹² | ✅¹² | ⚠️¹² |
29
+ | **In-repo doc templates work as-is** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
30
+ | **Bilingual rule support (한/영)** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
31
+
32
+ **Footnotes (first-party sources, verified 2026-07-04).** ✅ = tool capability confirmed; it does NOT mean a CONDUCTOR adapter emits it yet (non-Claude emission is Phase 2 — see the status note).
33
+
34
+ 1. **Sub-agent dispatch** — Cursor 2.4+ (`cursor.com/docs/subagents`), Copilot VS Code (`code.visualstudio.com/docs/copilot/agents/subagents`), Gemini CLI (`enableAgents`, on by default), Codex (on by default, `max_depth` 1), Windsurf via **Devin Local**. All single-level nesting. CONDUCTOR keeps sub-agent *compilation* Claude-only by design (ADR-004); the ✅s mark native tool capability, a candidate to revisit — not current emission.
35
+ 2. **Hooks** — Cursor v1.7 (2025-09-29 beta), Gemini v0.26.0 (2026-01-28, default-on), Copilot CLI + cloud-agent + VS Code (Preview; Claude-Code hook *format*, with different tool names), Codex (default-on; intro date not pinnable first-party). Windsurf ⚠️: 12 hook events but **no session-start/end**, so Stop-style enforcement is unavailable.
36
+ 3. **Custom named agents** — Cursor `.cursor/agents/` (also reads `.claude/agents/`), Copilot `.github/agents/*.agent.md`, Gemini `.gemini/agents/*.md`, Codex `~/.codex/agents/*.toml` (`developer_instructions` + optional per-agent model). Windsurf ⚠️: documented for **Devin CLI** (`.devin/agents/{name}/AGENT.md`); Desktop confirmation implicit only.
37
+ 4. **Per-task model routing** — corrects the old "single model per session" claim. Cursor per-chat + per-subagent `model:`; Copilot per-request + per-agent `model:`; Gemini `--model`/`/model`/per-subagent; Codex per-invocation `-m` / `/model` / per-profile; Windsurf per-conversation dropdown + per-subagent defaults.
38
+ 5. **Slash / custom commands** — Cursor `.cursor/commands/*.md` (→ Skills in 2.4+), Copilot prompt files `.github/prompts/*.prompt.md`, Gemini `.gemini/commands/*.toml`, Codex Skills `.agents/skills` (`~/.codex/prompts/*.md` still work but deprecated), Windsurf workflows `.windsurf/workflows/*.md` (manual-only).
39
+ 6. **Built-in managed memory** — Copilot "Copilot Memory" (preview; on-by-default for Pro since 2026-03; 28-day expiry), Codex `~/.codex/memories/` (opt-in), Windsurf `~/.codeium/windsurf/memories/`. ⚠️ Cursor: Memories GA'd in 1.2 but the docs page now redirects to Rules — current 2.x/3.x status unverified. ⚠️ Gemini: managed memory exists (hierarchical `GEMINI.md` + experimental Auto Memory) but the old `save_memory`/`/memory add` mechanism is gone from current docs.
40
+ 7. **Native scheduled jobs** — Claude Routines, Cursor Automations (cloud-only, 2026-03), Copilot cloud-agent automations (2026-06-02) + CLI prompt scheduling, Codex Automations (cron; intro date not first-party). ⚠️ Gemini: no built-in scheduler — first-party path is the official GitHub Action on `schedule:`. ⚠️ Windsurf / Devin Desktop: no native desktop scheduler documented — external cron/launchd + Devin CLI is the only path.
41
+ 8. **Transcripts** — Claude JSONL `~/.claude/projects/`, Cursor hook `transcript_path` (local on-disk path is unofficial → omitted), Gemini `~/.gemini/tmp/<hash>/chats/`, Codex `~/.codex/sessions/`, Windsurf transcript hook `~/.windsurf/transcripts/`. ⚠️ Copilot: hook `transcriptPath` only; the coding agent has **no transcript API** (UI / VS Code-viewable only).
42
+ 9. **AGENTS.md** — Cursor/Copilot/Codex/Windsurf read it natively. ⚠️ Gemini: only via `context.fileName` config (default is `GEMINI.md`). Claude ⚠️: uses `CLAUDE.md` natively (Copilot/Codex also read `CLAUDE.md`).
43
+ 10. **Lazy rules** — Gemini/Codex offer nested `GEMINI.md`/`AGENTS.md` directory-hierarchy scoping, not glob-on-file-touch loading.
44
+ 11. **Windsurf paths** — rules are now `.devin/rules/` (legacy `.windsurf/rules/`). The CONDUCTOR Windsurf adapter **emits `.devin/rules/*.md`** (preferred) plus the always-loaded `.windsurfrules` baseline — target path already updated (as of v0.6).
45
+ 12. **Auto-block enforcement** — every non-Claude tool now has hooks that can block (exit-code-2 / deny), so spec-as-you-go and review enforcement are *capable* on Cursor/Copilot/Gemini/Codex. ⚠️ Windsurf: no Stop/session event → pre-tool blocking only. CONDUCTOR emits these hooks for Claude only today; non-Claude hook emission is Phase 2. Copilot review = native GitHub PR review (a different mechanism).
46
+
47
+ ## Tier assignment
48
+
49
+ Tiers are re-defined for the 2026 reality. The old T3 definition ("sub-agents/hooks not available") is obsolete — every tool now has hooks + sub-agents + custom agents + per-task model routing + commands. Tiers now reflect **how completely CONDUCTOR can map the full workflow** (glob rule-scoping, Stop-style enforcement events, a native scheduler for the Reflector), and adapter-emission readiness.
50
+
51
+ | Tier | Tools | Definition |
52
+ |---|---|---|
53
+ | **T1 — Full** | Claude Code, Cursor | Glob rule-scoping + hooks (incl. session/stop events) + sub-agents + per-task model + native scheduler (Cursor's is cloud-only) all present. Claude emits all of it today; Cursor is the richest non-Claude target for Phase 2 emission. |
54
+ | **T2 — Good** | Copilot, Codex, Gemini CLI | Hooks + sub-agents + custom agents + per-task model + commands all present. Caveats: Copilot rule-scoping is glob (`applyTo:`) but the coding agent has no transcript API; Codex/Gemini scope by nested-file hierarchy, not glob; Gemini has no native scheduler (external Action). |
55
+ | **T3 — Basic** | Windsurf / Devin Desktop | Has hooks (but **no session/stop events** → no Stop-style enforcement), sub-agents (Devin Local), commands, memory. No desktop scheduler; rules path moved to `.devin/rules/` (adapter emits it). |
56
+
57
+ ## Adapter outputs at a glance (generated)
58
+
59
+ <!-- generated:adapter-outputs-table — edit adapters/*/metadata.json + run tools/generate-adapter-docs.js; do not hand-edit (ADR-042) -->
60
+ | Tool | Tier | Emitted outputs | Legacy paths (still read) | Live-verified | Headless CLI | À la carte (`--mode`) |
61
+ |---|---|---|---|---|---|---|
62
+ | Claude Code | T1 | `CLAUDE.md` + `.claude/rules` + `.claude/agents` + `.claude/hooks` + `.claude/settings.json` + `docs/CURRENT_WORK.md` | — | ✅ 2026-07-09 | `claude -p` | per-file |
63
+ | Cursor | T1 | `.cursor/rules` + `docs/CURRENT_WORK.md` | `.cursorrules` (legacy) | 🧪 pending | `cursor-agent -p` | per-file |
64
+ | Copilot | T2 | `.github/copilot-instructions.md` + `.github/instructions` + `docs/CURRENT_WORK.md` | — | 🧪 pending | `copilot -p` | per-file |
65
+ | Gemini CLI | T2 | `GEMINI.md` + `.gemini/styleguide.md` + `docs/CURRENT_WORK.md` | — | 🧪 pending | `gemini -p` | marked block |
66
+ | Codex | T2 | `AGENTS.md` + `docs/CURRENT_WORK.md` | `.codex/codex.md` (legacy) | ✅ 2026-07-09 | `codex exec` | marked block |
67
+ | Windsurf | T3 | `.windsurfrules` + `.devin/rules` + `docs/CURRENT_WORK.md` | `.windsurf/rules` (legacy) | 🧪 pending | `devin -p` | per-file |
68
+ <!-- /generated:adapter-outputs-table -->
69
+
70
+ Source of truth: `adapters/<tool>/metadata.json` (ADR-040) — CI regenerates and fails on drift.
71
+
72
+ ## Verdict — "If you need X, use Y"
73
+
74
+ | Need | Recommended tool |
75
+ |---|---|
76
+ | Multi-file refactor with delegated sub-agents + auto-blocking on missing spec updates | **Claude Code** |
77
+ | Fast in-IDE chat + completion + decent rule scoping | **Cursor** |
78
+ | In-line completion + PR review automation tied to GitHub | **GitHub Copilot** |
79
+ | Cheap large-context exploration over long files | **Gemini CLI** |
80
+ | Shell-driven scripting tasks | **Codex** |
81
+ | Cursor-like flow in a different IDE | **Windsurf** |
82
+
83
+ CONDUCTOR's job is to make sure **whichever tool you pick, you get the same Plan → Architecture → Tasks → Implementation → Review → Spec workflow** — even if the enforcement mechanism degrades from "auto-blocked by hook" (Claude) to "rule reminder text" (everywhere else).
84
+
85
+ ## What you LOSE going from Claude → other tools
86
+
87
+ This list used to be long. As of the 2026-07-04 re-verification it is **much shorter** — sub-agents, hooks, custom named agents, per-task model routing, and commands are now native across the ecosystem. Two real gaps remain:
88
+
89
+ - **CONDUCTOR adapter emission** — the framework's non-Claude adapters do not *yet* compile to those native hooks / agents / scheduled jobs. Until Phase 2 lands (see the Spec B handoff), the enforcement on Cursor/Copilot/Gemini/Codex/Windsurf is still rule-reminder text even though the *tool* could enforce it. This is a CONDUCTOR gap, not a tool gap.
90
+ - **Windsurf / Devin Desktop** — genuinely lacks session-start/stop hook events, so Stop-style "auto-block on missing spec update" cannot be built there regardless of adapter work; and it has no desktop scheduler for a Reflector job.
91
+
92
+ Smaller residuals: Gemini/Codex scope rules by nested-file hierarchy rather than glob-on-file-touch; Gemini has no built-in scheduler (use the official GitHub Action); Copilot's coding agent exposes no transcript API.
93
+
94
+ What you KEEP everywhere (unchanged):
95
+
96
+ - All rule text (operations, coding-conventions, token-economy, spec-as-you-go, model-routing).
97
+ - All doc templates (CURRENT_WORK, REMAINING_TASKS, PLANS, TASKS, INDEX, specs/_example).
98
+ - The 4-type memory pattern (built-in managed memory now also exists on Copilot/Codex/Windsurf).
99
+ - The Plan → Architecture → Tasks → Impl → Review → Spec phase definitions.
100
+
101
+ The discipline is portable. The *enforcement* is now portable in principle too — CONDUCTOR just has to emit it (Phase 2).
102
+
103
+ ## Verification status
104
+
105
+ | Adapter | Adapter spec written | Transform script written | Format validator | Per-IDE smoke (manual) | Real install verified | Quirks documented |
106
+ |---|---|---|---|---|---|---|
107
+ | Claude Code | ✅ (P0) | ✅ (SHIPPED v0.2 P1) | ✅ `validate-adapter-output.sh claude` PASS (2026-05-10) | n/a (Claude Code CLI itself is the runtime; covered by orchestrator harness) | ✅ (7 uninstall verification cases 2026-05-10, ADR-020) | ✅ (ADR-019, ADR-020, IDE-COMPATIBILITY-NOTES § Claude) |
108
+ | Cursor | ✅ (P0) | ✅ (SHIPPED v0.2, ADR-021) | ✅ `validate-adapter-output.sh cursor` PASS (2026-05-10) | ⏳ pending (Cursor smoke — see IDE-SMOKE-TESTING § 1) | ⚠️ Synthetic-target smoke + format-validator PASS (4 cases 2026-05-10); real-IDE empirical verification deferred to adopter feedback | ✅ (ADR-021, IDE-COMPATIBILITY-NOTES § Cursor) |
109
+ | Copilot | ✅ (P0) | ✅ (SHIPPED v0.2, ADR-022) | ✅ `validate-adapter-output.sh copilot` PASS (2026-05-10) | ⏳ pending per IDE: VS Code (§ 2), Cursor+Copilot (§ 3), Windsurf (§ 4), JetBrains (§ 5), Neovim (§ 6) | ⚠️ Synthetic-target smoke + format-validator PASS (3 cases 2026-05-10 — fresh / adopter / per-rule); per-IDE real smoke deferred to adopter feedback | ✅ (ADR-022, IDE-COMPATIBILITY-NOTES § Copilot) |
110
+ | Gemini CLI | ✅ (P0) | ✅ (SHIPPED v0.2 — `adapters/gemini/transform.sh` → `GEMINI.md` + `.gemini/styleguide.md`) | ✅ `validate-adapter-output.sh gemini` PASS | n/a (CLI runtime) | ⚠️ Emit-verified (format-validator + synthetic-target smoke PASS); live runtime consumption by Gemini CLI still pending — see `docs/ADAPTER-LIVE-VERIFICATION.md` | ✅ (IDE-COMPATIBILITY-NOTES § Gemini) |
111
+ | Codex | ✅ (P0) | ✅ (SHIPPED v0.2 — `adapters/codex/transform.sh` → `AGENTS.md`) | ✅ `validate-adapter-output.sh codex` PASS | n/a (CLI runtime) | ✅ **Live-verified** — auto-probed by `tools/live-verify.sh` (`codex exec` loaded `AGENTS.md` and listed the universal rules + read-CURRENT_WORK-first); current date/CLI in the generated "Adapter outputs at a glance" table above. Also emit-verified (format-validator PASS). | ✅ (IDE-COMPATIBILITY-NOTES § Codex) |
112
+ | Windsurf | ✅ (P0) | ✅ (SHIPPED v0.2 — own `adapters/windsurf/transform.sh` → `.windsurfrules` + `.devin/rules/*.md` (legacy `.windsurf/rules/` still read) — see footnote 11) | ✅ `validate-adapter-output.sh windsurf` PASS | ⏳ adopter follow-up / live-pending (IDE-SMOKE-TESTING § 4) | ⚠️ Emit-verified (format-validator + synthetic-target smoke PASS); live runtime consumption still pending — see `docs/ADAPTER-LIVE-VERIFICATION.md` | ✅ (IDE-COMPATIBILITY-NOTES § Windsurf) |
113
+
114
+ ## Copilot adapter — IDE coverage
115
+
116
+ The Copilot adapter is the strategic ROI win in P3: a single transform.sh produces files (`.github/copilot-instructions.md` + `.github/instructions/*.instructions.md`) that every IDE with a Copilot client reads natively. Adopters do not run the adapter once per IDE.
117
+
118
+ | IDE | Copilot client | Reads `.github/copilot-instructions.md` | Reads `.github/instructions/*.instructions.md` | Empirical verification | Smoke checklist |
119
+ |---|---|---|---|---|---|
120
+ | VS Code | Built-in (Copilot extension) | ✅ documented | ✅ documented | ⏳ adopter follow-up | `IDE-SMOKE-TESTING.md` § 2 |
121
+ | Cursor | Copilot extension (in addition to native `.cursor/rules/`) | ✅ documented | ⚠️ depends on extension version | ⏳ adopter follow-up | `IDE-SMOKE-TESTING.md` § 3 |
122
+ | Windsurf | Copilot adapter | ✅ documented | ⚠️ depends on adapter version | ⏳ adopter follow-up | `IDE-SMOKE-TESTING.md` § 4 |
123
+ | JetBrains family (IntelliJ, WebStorm, PyCharm, etc.) | Copilot plugin | ✅ documented | ✅ documented (2024.3+) | ⏳ adopter follow-up | `IDE-SMOKE-TESTING.md` § 5 |
124
+ | Neovim | `copilot.vim` (or `copilot.lua`) | ⚠️ chat-only feature; completion side ignores | ⚠️ chat-only feature | ⏳ adopter follow-up | `IDE-SMOKE-TESTING.md` § 6 |
125
+
126
+ The "documented" column reflects GitHub's official Copilot custom-instructions spec. Per-IDE empirical verification (open the IDE, confirm the rule shows in Copilot Chat references, edit a matching file, verify the per-file instruction loads) is now covered by the manual smoke checklists in `IDE-SMOKE-TESTING.md` (one section per IDE) — adopter-driven, results recorded back into the "Per-IDE smoke (manual)" column above. `transform.sh` is auto-validated by `tools/validate-adapter-output.sh` (format-level conformance) plus the original three temp-target install smoke runs against a synthetic Conductor source tree. Per-IDE quirks are inventoried in `docs/IDE-COMPATIBILITY-NOTES.md`.