omniconductor 0.3.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 (118) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/LICENSE +219 -0
  3. package/NOTICE +11 -0
  4. package/README.md +526 -0
  5. package/THIRD_PARTY_NOTICES.md +31 -0
  6. package/TRADEMARKS.md +26 -0
  7. package/VISION.md +106 -0
  8. package/adapters/README.md +121 -0
  9. package/adapters/claude/README.md +102 -0
  10. package/adapters/claude/SUPPORTED-FEATURES.md +66 -0
  11. package/adapters/claude/hookify-templates/.recipe-scoped +9 -0
  12. package/adapters/claude/hookify-templates/README.md +93 -0
  13. package/adapters/claude/hookify-templates/block-completion-claim-without-push.local.md.template +56 -0
  14. package/adapters/claude/hookify-templates/block-direct-push-protected-branch.local.md.template +18 -0
  15. package/adapters/claude/hookify-templates/block-force-push-protected-branch.local.md.template +42 -0
  16. package/adapters/claude/hookify-templates/block-server-secret-in-client.local.md.template +36 -0
  17. package/adapters/claude/hookify-templates/warn-any-type-added.local.md.template +44 -0
  18. package/adapters/claude/hookify-templates/warn-commit-without-pre-commit-review.local.md.template +52 -0
  19. package/adapters/claude/hookify-templates/warn-console-direct.local.md.template +55 -0
  20. package/adapters/claude/hookify-templates/warn-create-table-without-access-control.local.md.template +35 -0
  21. package/adapters/claude/hookify-templates/warn-current-work-without-remaining-tasks.local.md.template +36 -0
  22. package/adapters/claude/hookify-templates/warn-gh-pr-create-without-pre-merge-review.local.md.template +38 -0
  23. package/adapters/claude/hookify-templates/warn-hardcoded-text-without-i18n-key.local.md.template +21 -0
  24. package/adapters/claude/hookify-templates/warn-on-gh-pr-merge.local.md.template +33 -0
  25. package/adapters/claude/hookify-templates/warn-plan-spec-without-remaining-tasks.local.md.template +44 -0
  26. package/adapters/claude/hookify-templates/warn-raw-hex-instead-of-token.local.md.template +21 -0
  27. package/adapters/claude/hookify-templates/warn-security-definer-without-search-path.local.md.template +30 -0
  28. package/adapters/claude/hookify-templates/warn-stop-commit-without-current-work.local.md.template +47 -0
  29. package/adapters/claude/hookify-templates/warn-user-manual-completion.local.md.template +40 -0
  30. package/adapters/claude/transform-spec.md +140 -0
  31. package/adapters/claude/transform.sh +1169 -0
  32. package/adapters/codex/README.md +87 -0
  33. package/adapters/codex/SUPPORTED-FEATURES.md +66 -0
  34. package/adapters/codex/transform-spec.md +90 -0
  35. package/adapters/codex/transform.sh +748 -0
  36. package/adapters/copilot/README.md +88 -0
  37. package/adapters/copilot/SUPPORTED-FEATURES.md +73 -0
  38. package/adapters/copilot/transform-spec.md +111 -0
  39. package/adapters/copilot/transform.sh +757 -0
  40. package/adapters/cursor/README.md +87 -0
  41. package/adapters/cursor/SUPPORTED-FEATURES.md +90 -0
  42. package/adapters/cursor/transform-spec.md +124 -0
  43. package/adapters/cursor/transform.sh +731 -0
  44. package/adapters/gemini/README.md +93 -0
  45. package/adapters/gemini/SUPPORTED-FEATURES.md +80 -0
  46. package/adapters/gemini/transform-spec.md +102 -0
  47. package/adapters/gemini/transform.sh +844 -0
  48. package/adapters/windsurf/README.md +93 -0
  49. package/adapters/windsurf/SUPPORTED-FEATURES.md +67 -0
  50. package/adapters/windsurf/transform-spec.md +99 -0
  51. package/adapters/windsurf/transform.sh +727 -0
  52. package/bin/omniconductor.js +130 -0
  53. package/core/README.md +64 -0
  54. package/core/anti-patterns/README.md +142 -0
  55. package/core/anti-patterns/dynamic-system-prompt.md +113 -0
  56. package/core/anti-patterns/frequent-rule-file-edit.md +83 -0
  57. package/core/anti-patterns/large-file-read-no-range.md +90 -0
  58. package/core/anti-patterns/no-sub-agent-dispatch.md +89 -0
  59. package/core/anti-patterns/single-monolithic-rule-file.md +99 -0
  60. package/core/anti-patterns/skill-eager-load.md +83 -0
  61. package/core/anti-patterns/tool-call-spam.md +93 -0
  62. package/core/docs-templates/CURRENT_WORK.md +64 -0
  63. package/core/docs-templates/INDEX.md +57 -0
  64. package/core/docs-templates/PLANS.md +44 -0
  65. package/core/docs-templates/README.md +40 -0
  66. package/core/docs-templates/REMAINING_TASKS.md +43 -0
  67. package/core/docs-templates/TASKS.md +51 -0
  68. package/core/docs-templates/specs/_example.md +121 -0
  69. package/core/hooks/README.md +62 -0
  70. package/core/hooks/pretool-agent-routing.sh.template +97 -0
  71. package/core/hooks/pretool-commit-current-work-check.sh.template +103 -0
  72. package/core/hooks/pretool-commit-test-coverage-check.sh.template +116 -0
  73. package/core/hooks/pretool-large-file-read-guard.sh.template +117 -0
  74. package/core/hooks/stop-cache-hit-baseline-check.sh.template +133 -0
  75. package/core/hooks/stop-r6-review-check.sh.template +80 -0
  76. package/core/hooks/stop-session-log-check.sh.template +101 -0
  77. package/core/hooks/stop-trajectory-log.sh.template +96 -0
  78. package/core/memory-pattern/EXAMPLES.md +114 -0
  79. package/core/memory-pattern/README.md +133 -0
  80. package/core/recipes/README.md +46 -0
  81. package/core/recipes/auto-mock-data.md +82 -0
  82. package/core/recipes/branch-strategy.md +100 -0
  83. package/core/recipes/coding-conventions.md +123 -0
  84. package/core/recipes/database-discipline.md +65 -0
  85. package/core/recipes/debugging.md +143 -0
  86. package/core/recipes/design-system.md +30 -0
  87. package/core/recipes/i18n.md +118 -0
  88. package/core/recipes/monorepo.md +101 -0
  89. package/core/recipes/self-improvement.md +61 -0
  90. package/core/recipes/tdd.md +128 -0
  91. package/core/recipes/web-mobile-parity.md +87 -0
  92. package/core/reflector/SCHEDULING.md +83 -0
  93. package/core/reflector/prune-lessons.sh +105 -0
  94. package/core/reflector/reflect-brief.md +11 -0
  95. package/core/reflector/reflect.command.md +13 -0
  96. package/core/reflector/run-weekly.sh +54 -0
  97. package/core/reflector/trajectory-log.sh +55 -0
  98. package/core/roles/README.md +61 -0
  99. package/core/roles/builder.md +75 -0
  100. package/core/roles/designer.md +93 -0
  101. package/core/roles/helper.md +70 -0
  102. package/core/roles/planner.md +123 -0
  103. package/core/roles/reflector.md +72 -0
  104. package/core/roles/reviewer.md +104 -0
  105. package/core/roles/scribe.md +89 -0
  106. package/core/universal-rules/README.md +71 -0
  107. package/core/universal-rules/meta-discipline.md +292 -0
  108. package/core/universal-rules/operations.md +162 -0
  109. package/core/universal-rules/quality-gates.md +191 -0
  110. package/core/universal-rules/spec-as-you-go.md +123 -0
  111. package/core/universal-rules/workflow.md +153 -0
  112. package/core/workflow/PHASES.md +134 -0
  113. package/core/workflow/README.md +56 -0
  114. package/docs/MANUAL-INSTALL.md +456 -0
  115. package/package.json +52 -0
  116. package/tools/check-framework-purity.sh +91 -0
  117. package/tools/measure-tokens.sh +169 -0
  118. package/tools/validate-adapter-output.sh +611 -0
@@ -0,0 +1,456 @@
1
+ # MANUAL INSTALL — CONDUCTOR
2
+
3
+ > Companion to `README.md`. Step-by-step manual install for every supported tool, on Mac and Windows.
4
+
5
+ This document is the fallback when the per-tool `transform.sh` adapter is not yet available, when you want to understand exactly what the adapter does, or when you are in a constrained environment (no bash, locked-down corporate machine, etc.) and need to copy files by hand.
6
+
7
+ For each tool there are two paths:
8
+
9
+ - **Adapter (recommended)** — a single `bash transform.sh <target>` invocation. Available now for Claude Code, Cursor, GitHub Copilot.
10
+ - **Manual file copy (fallback)** — explicit `cp` / `cat` commands and frontmatter cheat sheet. Available for every tool, including the ones whose adapters have not shipped.
11
+
12
+ > **Read first**: [`README.md`](../README.md) Quick Start. The Claude adapter has a guided wizard that handles 90% of installs. Manual install is for the remaining 10%.
13
+
14
+ ---
15
+
16
+ ## Conventions used in this document
17
+
18
+ - `~/conductor` = where you cloned the Conductor repo.
19
+ - `<target>` = your project directory (e.g. `~/Projects/my-app`).
20
+ - "Mac" = macOS native shell (zsh by default, bash also OK).
21
+ - "Windows / Git Bash" = [Git for Windows](https://git-scm.com/download/win) Bash terminal. POSIX-compatible.
22
+ - "Windows / WSL2" = Ubuntu running under WSL2. Same commands as Mac.
23
+ - "Windows / PowerShell" = native PowerShell. **Currently unsupported** (P3+ port). Use Git Bash or WSL2 for now.
24
+
25
+ > **GNU vs BSD `sed` warning**: macOS ships BSD `sed` which requires `-i ''` for inline edits, while GNU `sed` (Linux / Git Bash / WSL2) uses `-i` with no argument. Manual-install commands below avoid `sed -i` for portability — they use `cat > new-file` + `mv` instead.
26
+
27
+ ---
28
+
29
+ ## Quick Decision: which tool, which path
30
+
31
+ | Tool | Adapter ready | Recommended install |
32
+ |---|---|---|
33
+ | Claude Code | ✅ | `bash adapters/claude/transform.sh <target>` (see README) |
34
+ | Cursor | ✅ (P2 in flight) | `bash adapters/cursor/transform.sh <target>` |
35
+ | GitHub Copilot | ✅ (P2 in flight) | `bash adapters/copilot/transform.sh <target>` |
36
+ | Gemini CLI | ❌ | manual copy (this doc) |
37
+ | Codex (OpenAI) | ❌ | manual copy (this doc) |
38
+ | Windsurf | ❌ | manual copy (this doc) |
39
+
40
+ > Adapter ship status as of 2026-05-10. Cursor and Copilot adapters are in active development under separate dispatches. If `adapters/<tool>/transform.sh` exists and is executable, prefer it; otherwise follow the manual section for that tool.
41
+
42
+ ---
43
+
44
+ ## Frontmatter conversion cheat sheet
45
+
46
+ Universal rules in `core/universal-rules/*.md` use Conductor-canonical YAML frontmatter:
47
+
48
+ ```yaml
49
+ ---
50
+ applies_to: ["**/*.ts", "**/*.tsx"]
51
+ always_loaded: false
52
+ tier: T1
53
+ ---
54
+ ```
55
+
56
+ Each tool consumes a different syntax. When you copy a rule file into a tool-native location by hand, rewrite the frontmatter using the table below.
57
+
58
+ | Conductor field | Claude Code | Cursor (`.mdc`) | Copilot (`.instructions.md`) | Gemini / Codex / Windsurf |
59
+ |---|---|---|---|---|
60
+ | `applies_to: ["a", "b"]` | `paths: ["a", "b"]` | `globs: a, b` (CSV) | `applyTo: 'a, b'` (CSV string) | (drop — single bundled file) |
61
+ | `always_loaded: true` | drop `paths:` (auto-loads) | `alwaysApply: true` | `applyTo: '**'` | (drop — file always loads) |
62
+ | `always_loaded: false` | `paths: [...]` required | `alwaysApply: false` + `globs:` | `applyTo: '<csv>'` | not representable |
63
+ | `tier: T1/T2/T3` | (informational) | (informational) | (informational) | (informational) |
64
+
65
+ > Conductor's universal rules (`meta-discipline`, `operations`, `quality-gates`, `spec-as-you-go`, `workflow`) are all `always_loaded: true` — make sure the tool-specific equivalent is set. Skipping this is the most common manual-install mistake.
66
+
67
+ ---
68
+
69
+ ## Tool 1 — Cursor (manual, until P2 adapter ships)
70
+
71
+ ### Prerequisites
72
+
73
+ - Cursor installed.
74
+ - The Conductor repo cloned to `~/conductor`.
75
+
76
+ ### Mac / Linux / Windows-WSL2
77
+
78
+ ```bash
79
+ cd <target>
80
+
81
+ # 1. Create Cursor rule directory
82
+ mkdir -p .cursor/rules
83
+
84
+ # 2. Copy each universal rule with .mdc extension
85
+ for f in ~/conductor/core/universal-rules/*.md; do
86
+ base=$(basename "$f" .md)
87
+ cp "$f" ".cursor/rules/${base}.mdc"
88
+ done
89
+
90
+ # 3. Append always-loaded rules to .cursorrules baseline
91
+ # (all 5 universal rules are always-loaded; bundle them for older Cursor versions)
92
+ cat ~/conductor/core/universal-rules/meta-discipline.md \
93
+ ~/conductor/core/universal-rules/spec-as-you-go.md \
94
+ > .cursorrules
95
+
96
+ # 4. Copy doc templates (skip if you already have docs/CURRENT_WORK.md etc.)
97
+ mkdir -p docs/specs
98
+ [ -f docs/CURRENT_WORK.md ] || cp ~/conductor/core/docs-templates/CURRENT_WORK.md docs/
99
+ [ -f docs/REMAINING_TASKS.md ] || cp ~/conductor/core/docs-templates/REMAINING_TASKS.md docs/
100
+ [ -f docs/PLANS.md ] || cp ~/conductor/core/docs-templates/PLANS.md docs/
101
+ [ -f docs/TASKS.md ] || cp ~/conductor/core/docs-templates/TASKS.md docs/
102
+ [ -f docs/INDEX.md ] || cp ~/conductor/core/docs-templates/INDEX.md docs/
103
+ [ -f docs/specs/_example.md ] || cp ~/conductor/core/docs-templates/specs/_example.md docs/specs/
104
+ ```
105
+
106
+ ### Windows / Git Bash
107
+
108
+ Same commands, but adjust paths:
109
+
110
+ ```bash
111
+ # Clone repo to a Windows path
112
+ git clone https://github.com/lee77840/conductor_lfamily /c/conductor
113
+ cd /c/Users/me/Projects/my-app
114
+
115
+ # Then run the same loop
116
+ for f in /c/conductor/core/universal-rules/*.md; do
117
+ base=$(basename "$f" .md)
118
+ cp "$f" ".cursor/rules/${base}.mdc"
119
+ done
120
+ ```
121
+
122
+ > Git Bash translates `C:\Users\me\foo` to `/c/Users/me/foo`. Use forward slashes in commands.
123
+
124
+ ### Frontmatter rewrite (after copy)
125
+
126
+ For each `.cursor/rules/*.mdc` you just produced, edit the YAML at the top of the file:
127
+
128
+ ```yaml
129
+ # BEFORE (Conductor canonical)
130
+ ---
131
+ applies_to: ["**/*.ts", "**/*.tsx"]
132
+ always_loaded: false
133
+ ---
134
+
135
+ # AFTER (Cursor)
136
+ ---
137
+ globs: **/*.ts, **/*.tsx
138
+ alwaysApply: false
139
+ ---
140
+ ```
141
+
142
+ For the universal rules (`meta-discipline.mdc`, `operations.mdc`, `quality-gates.mdc`, `spec-as-you-go.mdc`, `workflow.mdc`) — all `always_loaded: true` upstream — use:
143
+
144
+ ```yaml
145
+ ---
146
+ alwaysApply: true
147
+ ---
148
+ ```
149
+
150
+ ### Verification
151
+
152
+ 1. Restart Cursor.
153
+ 2. Open the Cursor command palette → "Show Loaded Rules" (or check the chat sidebar).
154
+ 3. Confirm the 5 universal rules (`meta-discipline`, `operations`, `quality-gates`, `spec-as-you-go`, `workflow`) show up, all marked "always".
155
+ 4. If you also copied the `coding-conventions` recipe, open a `.ts` file → confirm it loads on file context.
156
+
157
+ ### Uninstall
158
+
159
+ ```bash
160
+ rm -rf .cursor/rules
161
+ rm -f .cursorrules
162
+ # docs/* are yours — keep or delete manually
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Tool 2 — GitHub Copilot (manual, until P2 adapter ships)
168
+
169
+ GitHub Copilot supports custom instructions via `.github/instructions/*.instructions.md` files, which are picked up by the Copilot extension across **VSCode, Cursor, Windsurf, JetBrains, Neovim** simultaneously (one install covers all five IDEs that have the Copilot extension).
170
+
171
+ ### Mac / Linux / Windows-WSL2
172
+
173
+ ```bash
174
+ cd <target>
175
+
176
+ # 1. Create instructions directory
177
+ mkdir -p .github/instructions
178
+
179
+ # 2. Copy + rename to .instructions.md
180
+ for f in ~/conductor/core/universal-rules/*.md; do
181
+ base=$(basename "$f" .md)
182
+ cp "$f" ".github/instructions/${base}.instructions.md"
183
+ done
184
+
185
+ # 3. Build always-loaded baseline (all 5 universal rules)
186
+ cat ~/conductor/core/universal-rules/meta-discipline.md \
187
+ ~/conductor/core/universal-rules/spec-as-you-go.md \
188
+ > .github/instructions/all.instructions.md
189
+ ```
190
+
191
+ ### Windows / Git Bash
192
+
193
+ Same commands. Substitute `~/conductor` → `/c/conductor` if your clone lives on `C:`.
194
+
195
+ ### Frontmatter rewrite
196
+
197
+ Open each `.github/instructions/*.instructions.md` and rewrite:
198
+
199
+ ```yaml
200
+ # BEFORE
201
+ ---
202
+ applies_to: ["**/*.ts", "**/*.tsx"]
203
+ ---
204
+
205
+ # AFTER
206
+ ---
207
+ applyTo: '**/*.ts, **/*.tsx'
208
+ ---
209
+ ```
210
+
211
+ For `all.instructions.md` (always-loaded baseline):
212
+
213
+ ```yaml
214
+ ---
215
+ applyTo: '**'
216
+ ---
217
+ ```
218
+
219
+ > **Copilot CSV pitfall**: the `applyTo:` value MUST be a single quoted string. Array form `applyTo: ['a', 'b']` is silently ignored.
220
+
221
+ ### Verification
222
+
223
+ 1. Restart your IDE.
224
+ 2. Open Copilot Chat.
225
+ 3. Edit a `.ts` file and ask "what are the project's TypeScript naming conventions?" — if you copied the `coding-conventions` recipe, the answer should match `coding-conventions.instructions.md`.
226
+ 4. Confirm Copilot's "Used N references" footer shows the matching `*.instructions.md` file.
227
+
228
+ ### Uninstall
229
+
230
+ ```bash
231
+ rm -rf .github/instructions
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Tool 3 — Gemini CLI (fallback manual install)
237
+
238
+ > **An adapter now exists** — prefer `bash adapters/gemini/transform.sh <target>`; the manual steps below are a fallback.
239
+
240
+ Gemini CLI uses a single `GEMINI.md` file (or `~/.gemini/instructions.md` for global). No frontmatter, no globs — everything is one bundle, always loaded.
241
+
242
+ ### Mac / Linux / Windows-WSL2
243
+
244
+ ```bash
245
+ cd <target>
246
+
247
+ # Concatenate all universal rules into GEMINI.md
248
+ cat ~/conductor/core/universal-rules/*.md > GEMINI.md
249
+
250
+ # Optional: add recipes
251
+ cat ~/conductor/core/recipes/coding-conventions.md \
252
+ ~/conductor/core/recipes/monorepo.md \
253
+ >> GEMINI.md
254
+
255
+ # Doc templates (same as Cursor section)
256
+ mkdir -p docs/specs
257
+ [ -f docs/CURRENT_WORK.md ] || cp ~/conductor/core/docs-templates/CURRENT_WORK.md docs/
258
+ # ... (repeat for REMAINING_TASKS, PLANS, TASKS, INDEX, specs/_example)
259
+ ```
260
+
261
+ ### Windows / Git Bash
262
+
263
+ Same. Or use PowerShell `Get-Content`:
264
+
265
+ ```powershell
266
+ Get-ChildItem C:\conductor\core\universal-rules\*.md |
267
+ Get-Content |
268
+ Set-Content GEMINI.md
269
+ ```
270
+
271
+ ### Frontmatter rewrite
272
+
273
+ **None needed**. Gemini ignores YAML frontmatter — it's harmless filler in the bundle. If you want a clean file, delete the `---...---` blocks at the top of each section after concatenation.
274
+
275
+ ### Verification
276
+
277
+ 1. Restart Gemini CLI.
278
+ 2. Run `gemini list-context` (or check the session preamble) — `GEMINI.md` content should appear.
279
+ 3. Ask "what is the spec-as-you-go rule?" — answer should cite the universal rule.
280
+
281
+ ### Limitations
282
+
283
+ - No lazy load — every rule is loaded every turn (token cost higher than Claude/Cursor/Copilot).
284
+ - No hooks, no sub-agents (per ADR-004 honesty principle).
285
+
286
+ ### Uninstall
287
+
288
+ ```bash
289
+ rm -f GEMINI.md
290
+ ```
291
+
292
+ ---
293
+
294
+ ## Tool 4 — Codex (OpenAI) (fallback manual install)
295
+
296
+ > **An adapter now exists** — prefer `bash adapters/codex/transform.sh <target>`; the manual steps below are a fallback.
297
+
298
+ Codex CLI reads `AGENTS.md` (and historically `.codex/codex.md` — both supported as of 2026-05).
299
+
300
+ ### Mac / Linux / Windows-WSL2
301
+
302
+ ```bash
303
+ cd <target>
304
+
305
+ # Concatenate universal rules
306
+ cat ~/conductor/core/universal-rules/*.md > AGENTS.md
307
+
308
+ # Recipes (optional)
309
+ cat ~/conductor/core/recipes/coding-conventions.md >> AGENTS.md
310
+
311
+ # Doc templates (same pattern as Gemini)
312
+ mkdir -p docs/specs
313
+ [ -f docs/CURRENT_WORK.md ] || cp ~/conductor/core/docs-templates/CURRENT_WORK.md docs/
314
+ # ... (repeat as above)
315
+ ```
316
+
317
+ ### Windows / Git Bash
318
+
319
+ Same commands. PowerShell users: see Gemini section's `Get-Content` example.
320
+
321
+ ### Frontmatter rewrite
322
+
323
+ None — Codex ignores YAML frontmatter. Optional cleanup: strip `---...---` blocks after concat.
324
+
325
+ ### Verification
326
+
327
+ 1. Restart Codex.
328
+ 2. Verify the session preamble mentions `AGENTS.md`.
329
+
330
+ ### Limitations
331
+
332
+ - Single bundled file, no per-pattern routing.
333
+ - No hooks, no sub-agents.
334
+
335
+ ### Uninstall
336
+
337
+ ```bash
338
+ rm -f AGENTS.md
339
+ ```
340
+
341
+ ---
342
+
343
+ ## Tool 5 — Windsurf (fallback manual install)
344
+
345
+ > **An adapter now exists** — prefer `bash adapters/windsurf/transform.sh <target>`; the manual steps below are a fallback.
346
+
347
+ Windsurf reads `.windsurfrules` (always-loaded) plus `.codeium/instructions/*.md` for directory-scoped rules (varies by Windsurf version — verify your version's docs).
348
+
349
+ ### Mac / Linux / Windows-WSL2
350
+
351
+ ```bash
352
+ cd <target>
353
+
354
+ # Always-loaded baseline (all 5 universal rules)
355
+ cat ~/conductor/core/universal-rules/meta-discipline.md \
356
+ ~/conductor/core/universal-rules/operations.md \
357
+ ~/conductor/core/universal-rules/quality-gates.md \
358
+ ~/conductor/core/universal-rules/spec-as-you-go.md \
359
+ ~/conductor/core/universal-rules/workflow.md \
360
+ > .windsurfrules
361
+
362
+ # Directory-scoped (best effort — verify your Windsurf version supports this)
363
+ mkdir -p .codeium/instructions
364
+ for f in ~/conductor/core/universal-rules/operations.md \
365
+ ~/conductor/core/universal-rules/quality-gates.md \
366
+ ~/conductor/core/universal-rules/meta-discipline.md; do
367
+ cp "$f" ".codeium/instructions/$(basename "$f")"
368
+ done
369
+ ```
370
+
371
+ ### Windows / Git Bash
372
+
373
+ Same. PowerShell — same pattern as Gemini.
374
+
375
+ ### Frontmatter rewrite
376
+
377
+ Windsurf rule format is **NOT VERIFIED for v0.2** — check the Windsurf docs for your installed version. As a safe default, leave Conductor frontmatter in place (it is unlikely to harm; worst case Windsurf treats it as text).
378
+
379
+ ### Verification
380
+
381
+ 1. Restart Windsurf.
382
+ 2. Open Windsurf settings → confirm `.windsurfrules` is detected.
383
+ 3. Ask the Windsurf assistant about a rule that should be loaded — answer should reflect the rule.
384
+
385
+ ### Limitations
386
+
387
+ - Per-pattern routing support is version-dependent — likely degrades to "all loaded all the time".
388
+ - No hooks, no sub-agents.
389
+
390
+ ### Uninstall
391
+
392
+ ```bash
393
+ rm -f .windsurfrules
394
+ rm -rf .codeium/instructions
395
+ ```
396
+
397
+ ---
398
+
399
+ ## Common pitfalls & FAQ
400
+
401
+ ### "I copied the files but the rules don't load"
402
+
403
+ Most likely causes (in order):
404
+
405
+ 1. **You forgot to restart the IDE.** Every tool reads rule files at session start.
406
+ 2. **Frontmatter syntax is wrong.** Cursor's `globs:` is CSV (no quotes around the list); Copilot's `applyTo:` is a single quoted string. Check the cheat sheet above.
407
+ 3. **You put rules in the wrong directory.** Cursor wants `.cursor/rules/`; Copilot wants `.github/instructions/`. A `.cursorrules` file in the project root is also valid for Cursor as a baseline.
408
+ 4. **The file extension is wrong.** Cursor needs `.mdc` (not `.md`); Copilot needs `.instructions.md` (not `.md`).
409
+
410
+ ### "I need to update Conductor — do I re-copy everything?"
411
+
412
+ Yes — that is exactly what `bash transform.sh <target>` does. Manual install means you re-do the manual steps after `git pull` in `~/conductor`. This is the main reason to use the adapter when one is available.
413
+
414
+ ### "Can I mix manual install with the adapter?"
415
+
416
+ Yes. Every tool now has an adapter, but you can still mix (e.g. run `adapters/claude/transform.sh` for Claude and do the manual `cp` steps for Gemini if you prefer). The two write to different directories (`.claude/` vs `GEMINI.md`) so there is no conflict.
417
+
418
+ ### "Windows native PowerShell support?"
419
+
420
+ Currently unsupported (tracked under ADR-023 as P3+ work). Workarounds:
421
+
422
+ - **Git Bash for Windows** — POSIX shell on top of MSYS2. Bundled with Git for Windows. Use `bash transform.sh ...` exactly like on Mac.
423
+ - **WSL2 (Ubuntu)** — full Linux environment. `bash transform.sh ...` works identically to Mac/Linux.
424
+
425
+ ### "Encoding issues on Windows (CRLF vs LF)?"
426
+
427
+ Configure git to keep files in LF on disk:
428
+
429
+ ```bash
430
+ git config --global core.autocrlf input # Mac/Linux/WSL
431
+ git config --global core.autocrlf false # Windows-Git-Bash if you commit cross-platform projects
432
+ ```
433
+
434
+ Conductor source files are LF + UTF-8. Mixed-line-endings will break the bash scripts (you'll see `\r: command not found` errors).
435
+
436
+ ### "Where do recipes go in manual install?"
437
+
438
+ Same path as universal rules, but you only copy the recipe files relevant to your project. For example, for a TypeScript monorepo with i18n, copy:
439
+
440
+ ```
441
+ core/recipes/coding-conventions.md
442
+ core/recipes/monorepo.md
443
+ core/recipes/i18n.md
444
+ ```
445
+
446
+ into the same tool-specific directory (`.cursor/rules/` for Cursor, etc.).
447
+
448
+ ---
449
+
450
+ ## See also
451
+
452
+ - [`README.md`](../README.md) — adapter-based install Quick Start (5 minutes).
453
+ - [`docs/COMPATIBILITY-MATRIX.md`](./COMPATIBILITY-MATRIX.md) — which features each tool supports natively.
454
+ - [`docs/HOW-IT-WORKS-PER-TOOL.md`](./HOW-IT-WORKS-PER-TOOL.md) — under-the-hood explanation per tool.
455
+ - [`docs/DESIGN-DECISIONS.md`](./DESIGN-DECISIONS.md) ADR-023 — marketplace + cross-platform strategy.
456
+ - [`adapters/<tool>/SUPPORTED-FEATURES.md`](../adapters/) — per-tool feature degradation summary.
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "omniconductor",
3
+ "version": "0.3.0",
4
+ "description": "Multi-coding-agent workflow framework. Write your project's rules, workflow, and discipline ONCE — install into Claude Code, Cursor, GitHub Copilot, Gemini CLI, Codex, or Windsurf. Encodes the discipline developers most often skip — spec-before-code, review gates, session continuity — so your AI agents catch what's easy to miss.",
5
+ "license": "Apache-2.0",
6
+ "author": "LFamily Labs LLC",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/lee77840/conductor_lfamily.git"
10
+ },
11
+ "homepage": "https://github.com/lee77840/conductor_lfamily#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/lee77840/conductor_lfamily/issues"
14
+ },
15
+ "engines": {
16
+ "node": ">=18"
17
+ },
18
+ "bin": {
19
+ "omniconductor": "bin/omniconductor.js"
20
+ },
21
+ "files": [
22
+ "bin/",
23
+ "adapters/",
24
+ "core/",
25
+ "tools/",
26
+ "docs/MANUAL-INSTALL.md",
27
+ "README.md",
28
+ "VISION.md",
29
+ "LICENSE",
30
+ "NOTICE",
31
+ "TRADEMARKS.md",
32
+ "THIRD_PARTY_NOTICES.md",
33
+ "CHANGELOG.md"
34
+ ],
35
+ "scripts": {
36
+ "cli": "node bin/omniconductor.js"
37
+ },
38
+ "keywords": [
39
+ "claude-code",
40
+ "cursor",
41
+ "github-copilot",
42
+ "gemini-cli",
43
+ "codex",
44
+ "windsurf",
45
+ "ai-coding",
46
+ "multi-tool",
47
+ "orchestrator",
48
+ "sub-agents",
49
+ "spec-driven",
50
+ "workflow"
51
+ ]
52
+ }
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env bash
2
+ # Conductor framework purity check — ban reference-adopter-specific tokens in framework body.
3
+ # Exit 0 = clean, 1 = leak detected.
4
+ #
5
+ # Scanned paths (framework body — adopters read these and must not see specifics):
6
+ # core/ — universal rules / recipes / templates
7
+ # adapters/<tool>/hookify-templates/ — runtime hook templates
8
+ # docs/MANUAL-INSTALL.md — install guide
9
+ # README.md — top-level intro
10
+ # phase-2/ — VSCode extension scaffolding
11
+ #
12
+ # Excluded (frozen history — intentional named references OK):
13
+ # docs/DESIGN-DECISIONS.md — ADR archive
14
+ # docs/audits/ — competitive analyses (snapshots)
15
+ # docs/CONDUCTOR-V0.2-DESIGN.md — P0.5 design history
16
+ # docs/KPI.md — P1.5 baseline measurement
17
+ # CURRENT_WORK.md / SESSION_HANDOFF.md — session continuity
18
+ # LICENSE / NOTICE — legal attribution
19
+ # adapters/*/transform.sh — adapter logic (functional defaults, with adopter-customization comments)
20
+ # archive/ — frozen v0.1
21
+ #
22
+ # See docs/DESIGN-DECISIONS.md ADR-026 for the policy rationale.
23
+
24
+ set -u
25
+
26
+ # Banned tokens — reference-adopter-specific names that must not appear in framework body.
27
+ # Vendor names in legitimate framework context (e.g., "Anthropic" in PROMPT-CACHING-GUIDE)
28
+ # are kept by excluding the prompt-caching guide from the scan paths above.
29
+ # Generic stack/path tokens (public products — safe to keep in the shipped checker).
30
+ BANNED=(
31
+ "apps/web"
32
+ "apps/mobile"
33
+ "Stripe"
34
+ "Plaid"
35
+ "Resend"
36
+ "Supabase"
37
+ "Vercel"
38
+ "Sentry"
39
+ "Postmark"
40
+ )
41
+
42
+ # The reference-product name + personal identifiers live in a PRIVATE-only file
43
+ # (.purity-banned-private) that is NOT synced to the public mirror nor shipped to npm.
44
+ # Load them at runtime when present (private working repo) so the scan still catches them.
45
+ _priv="$(dirname "$0")/../.purity-banned-private"
46
+ if [ -f "$_priv" ]; then
47
+ while IFS= read -r _t || [ -n "$_t" ]; do
48
+ case "$_t" in ''|'#'*) : ;; *) BANNED+=("$_t") ;; esac
49
+ done < "$_priv"
50
+ fi
51
+
52
+ # Scan paths — framework body only.
53
+ SCAN_PATHS=(
54
+ "core"
55
+ "adapters/claude/hookify-templates"
56
+ "adapters/copilot/hookify-templates"
57
+ "adapters/cursor/hookify-templates"
58
+ "docs/MANUAL-INSTALL.md"
59
+ "README.md"
60
+ "phase-2"
61
+ )
62
+
63
+ cd "$(dirname "$0")/.." || exit 2
64
+
65
+ LEAK_FOUND=0
66
+ TOTAL_LEAKS=0
67
+
68
+ for term in "${BANNED[@]}"; do
69
+ for path in "${SCAN_PATHS[@]}"; do
70
+ [ -e "$path" ] || continue
71
+ # -F = fixed string, -n = line numbers, -R = recursive, -I = skip binary
72
+ matches=$(grep -FRIn -- "$term" "$path" 2>/dev/null || true)
73
+ if [ -n "$matches" ]; then
74
+ count=$(printf '%s\n' "$matches" | wc -l | tr -d ' ')
75
+ echo "LEAK: '$term' in $path ($count line(s))"
76
+ printf '%s\n' "$matches" | head -5
77
+ echo
78
+ LEAK_FOUND=1
79
+ TOTAL_LEAKS=$((TOTAL_LEAKS + count))
80
+ fi
81
+ done
82
+ done
83
+
84
+ if [ "$LEAK_FOUND" -eq 0 ]; then
85
+ echo "OK — framework body is consumer-agnostic. No reference-adopter specifics detected."
86
+ exit 0
87
+ fi
88
+
89
+ echo "FAIL — $TOTAL_LEAKS total leak line(s) found."
90
+ echo "Policy: docs/DESIGN-DECISIONS.md ADR-026."
91
+ exit 1