omniconductor 0.5.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 (52) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +59 -19
  3. package/VISION.md +2 -2
  4. package/adapters/README.md +8 -8
  5. package/adapters/claude/README.md +3 -6
  6. package/adapters/claude/SUPPORTED-FEATURES.md +4 -4
  7. package/adapters/claude/metadata.json +39 -0
  8. package/adapters/claude/transform-spec.md +1 -1
  9. package/adapters/claude/transform.sh +208 -38
  10. package/adapters/codex/README.md +23 -27
  11. package/adapters/codex/metadata.json +35 -0
  12. package/adapters/codex/transform-spec.md +5 -6
  13. package/adapters/codex/transform.sh +284 -37
  14. package/adapters/copilot/README.md +26 -29
  15. package/adapters/copilot/metadata.json +36 -0
  16. package/adapters/copilot/transform.sh +126 -35
  17. package/adapters/cursor/README.md +31 -30
  18. package/adapters/cursor/metadata.json +35 -0
  19. package/adapters/cursor/transform.sh +117 -28
  20. package/adapters/gemini/README.md +14 -15
  21. package/adapters/gemini/metadata.json +36 -0
  22. package/adapters/gemini/transform.sh +312 -36
  23. package/adapters/windsurf/README.md +20 -19
  24. package/adapters/windsurf/metadata.json +36 -0
  25. package/adapters/windsurf/transform.sh +139 -55
  26. package/bin/doctor.js +257 -0
  27. package/bin/omniconductor.js +15 -2
  28. package/core/anti-patterns/frequent-rule-file-edit.md +1 -1
  29. package/core/anti-patterns/single-monolithic-rule-file.md +1 -1
  30. package/core/hooks/README.md +1 -0
  31. package/core/hooks/pretool-loop-guard.sh.template +177 -0
  32. package/core/recipes/README.md +6 -4
  33. package/core/recipes/loop-engineering.md +73 -0
  34. package/core/universal-rules/README.md +4 -4
  35. package/core/universal-rules/meta-discipline.md +4 -4
  36. package/core/universal-rules/spec-as-you-go.md +1 -1
  37. package/docs/ADAPTER-LIVE-VERIFICATION.md +73 -0
  38. package/docs/COMPARISON.md +133 -0
  39. package/docs/COMPATIBILITY-MATRIX.md +126 -0
  40. package/docs/DESIGN-DECISIONS.md +1268 -0
  41. package/docs/MANUAL-INSTALL.md +15 -15
  42. package/docs/PUBLICATION-POLICY.md +46 -0
  43. package/docs/PUBLISH-GUIDE.md +141 -0
  44. package/package.json +7 -1
  45. package/tools/check-adapter-metadata.sh +211 -0
  46. package/tools/check-stale-tokens.sh +130 -0
  47. package/tools/generate-adapter-docs.js +123 -0
  48. package/tools/live-verify.sh +195 -0
  49. package/tools/manifest-safety.sh +118 -0
  50. package/tools/stale-tokens.txt +32 -0
  51. package/tools/test-install-modes.sh +277 -0
  52. package/tools/validate-adapter-output.sh +1 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,74 @@ Format follows [Keep a Changelog](https://keepachangelog.com/); versioning is [S
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.0.1] — 2026-07-09
9
+
10
+ ### Fixed — manifest safety follow-up
11
+ - **Checksum-protected uninstall on all six adapters** — normal manifest entries now record the emitted file's SHA-256. `--uninstall` removes or restores only an unchanged emitted file; a user-modified file (and legacy manifest entries without a checksum) is preserved with a warning instead of being deleted.
12
+ - **Lossless full-mode re-install** — an unmodified re-install retains the original pre-CONDUCTOR backup rather than replacing it with the prior generated bundle. Backup names are collision-safe within the same second. If a generated file was edited before an update, that edit is backed up before replacement.
13
+ - **Owned marked blocks only** — Gemini/Codex replace an existing `conductor:block` only when exactly one matching marker pair is present, the current manifest owns it, and its content hash is unchanged. Foreign, malformed, duplicate, or customized markers abort without changing the host file.
14
+ - **Regression coverage** — `tools/test-install-modes.sh` now asserts original-baseline restoration after two full installs, preservation of user edits during uninstall for every adapter, and non-destructive foreign-marker rejection for Gemini/Codex.
15
+ - **Private-source/public-mirror policy** — the source repository remains private; a fail-closed filtered snapshot is the only route to the public mirror and npm release. `sync-public.sh HEAD --check` is network-free and runs in CI to reject denied paths or private tokens before merge. See `docs/PUBLICATION-POLICY.md`.
16
+
17
+ ## [1.0.0] — 2026-07-09
18
+
19
+ ### Added — install modes (audit follow-up #4; the final pre-1.0 feature)
20
+ - **`--mode=full|minimal|strict|recipes-only|reflector-only` on all six adapters** (npx CLI forwards it; manifest stamps `"mode"`). `full` = unchanged default. `minimal` = discipline text + docs only (no agents/hooks/Reflector runtime). `strict` = abort (exit 3) instead of touching an existing baseline. `recipes-only` = à la carte (requires `--recipes=`). `reflector-only` = the self-improvement loop standalone — the least-conflicting install for projects already on Spec Kit / BMAD. — **ADR-044**.
21
+ - **Marked append-blocks for single-file tools (Gemini/Codex)** — à-la-carte modes APPEND `<!-- conductor:block … -->` to an existing `GEMINI.md`/`AGENTS.md` instead of overwriting; the manifest tracks `type: block` + content `sha256` + `created_file`, and `--uninstall` strips the block only when unmodified (a customized block is left in place with a warning). Windsurf needed no blocks — its rules are per-file under `.devin/rules/`.
22
+ - **Framework detection** — the installer detects Spec Kit (`.specify/`) / BMAD (`_bmad`/`.bmad-core`) and *suggests* an à-la-carte mode. Suggest only; never auto-switches.
23
+ - **`tools/test-install-modes.sh`** — per-tool mode-behavior harness (strict abort incl. secondary rules surfaces, à-la-carte emission sets, **byte-lossless block round-trips (checksum-asserted)**, cross-mode block cleanup, customized-block preservation, zero-valid-recipes failure); CI job `install-modes` runs it for all six adapters.
24
+ - **`install.ala_carte` in adapter metadata** — the block-vs-per-file à-la-carte strategy is single-sourced in `metadata.json` (new M9 consistency check + a column in the generated outputs table). npm-registry lag now surfaces as a non-fatal `WARN[A3]` in the stale-token check.
25
+
26
+ ### Changed
27
+ - ROADMAP P4 marked **Done** — v1.0.0 is the public release (beta feedback + marketplace listing move post-1.0). COMPARISON's "pre-1.0" maturity framing retired (tokenized per the ADR-039 process rule).
28
+ - Claude adapter: `INSTALLED_HOOKS` initialized before mode branches; recipes step creates `.claude/rules/` itself (à-la-carte no longer depends on step 1).
29
+
30
+ ### Milestone
31
+ - **v1.0.0** — all five features from the 2026-07-09 audit-follow-up plan are shipped (#3 stale-token CI + #2 metadata single-source in 0.7.0; #1 doctor + #5 live-verify + #2 slice 2 doc generation in 0.8.0; #4 install modes here). The anti-drift system is closed-loop: metadata is the single source, CI regenerates and verifies the docs, doctor checks installs, live-verify records reality.
32
+
33
+ ## [0.8.0] — 2026-07-09
34
+
35
+ ### Added — metadata consumers (audit follow-up #1 + #5 + #2 slice 2)
36
+ - **`omniconductor doctor <target>` (3rd CLI command)** — read-only installed-project health check anchored on `.conductor-manifest.json`. Seven groups: manifest validity · version drift (install stamp vs running CLI) · file integrity · stale legacy paths (from adapter `metadata.json`, `--legacy-cursorrules` aware) · hook validity (`.json` parses, `.sh` executable + `bash -n`) · doc-link liveness · stale-claim scan (reuses `tools/stale-tokens.txt` semantics). OK/WARN/FAIL → exit 0/1/2, `--json` for machines. CI runs a positive + negative doctor smoke per adapter. Prior-art differentiated by scope (per-project asset health), not name. — **ADR-041**.
37
+ - **Generated doc regions from metadata (`tools/generate-adapter-docs.js`)** — the live-verification status table (`docs/ADAPTER-LIVE-VERIFICATION.md`) and a new "Adapter outputs at a glance" table (`docs/COMPATIBILITY-MATRIX.md`) are now rendered from `adapters/*/metadata.json`; `--check` fails CI on drift. All remaining hand-written live-verification dates/CLI versions on living surfaces replaced with date-free pointers to the generated table (milestone history keeps "first live-verified" dates). — **ADR-042**.
38
+ - **`tools/live-verify.sh` — automated live rule-loading verification** — per tool: throwaway install → headless probe (read-only) → deterministic grade (≥3/5 universal rule names + CURRENT_WORK; no LLM judge) → writes `live_verification` into `metadata.json` and regenerates the doc tables. Honest SKIP when a CLI isn't installed; >90-day freshness WARN; local-first (CI can't hold six authenticated CLIs). **First run: Claude Code newly live-verified (5/5 rules, Claude Code 2.1.205) and Codex re-verified (4/5, codex-cli 0.144.0), both 2026-07-09.** — **ADR-043**.
39
+
40
+ ### Changed
41
+ - Claude adapter manifest now stamps `"adapter": "claude"` (the other five adapters already stamped theirs) — doctor uses it; footprint inference covers pre-0.8 installs.
42
+ - `bin/omniconductor.js` usage/comments: `doctor` added; stale "ADR-018" citation corrected to ADR-002/023/025.
43
+
44
+ ## [0.7.0] — 2026-07-09
45
+
46
+ ### Added — anti-drift guards (audit follow-up #3 + #2 slice 1)
47
+ - **CI stale-token + version-stamp check** — `tools/check-stale-tokens.sh` + data file `tools/stale-tokens.txt` (`pattern⇥reason⇥hint⇥allow_regex`, inline `stale-ok:` waivers) as a new CI job. Class A mechanizes the R7 stamps (README status line must stamp the exact `package.json` version — **now re-stamped on every release, patches included**; CHANGELOG must have the section). Class B fails CI on known-false claims (seeded ~15 tokens from the verified drift inventory: `.codex/codex.md`-as-current, unqualified `.windsurf/rules`, "no npx", "❌ No hooks/sub-agents", "Single model per session", …). Process rule: a change that flips a fact adds the now-false claim to the token list in the same PR. — **ADR-039**.
48
+ - **Adapter metadata single-source** — `adapters/<tool>/metadata.json` ×6 (outputs / reflector outputs / legacy paths / tier / two-axis capabilities per ADR-031 / live-verification / headless CLI) + `tools/check-adapter-metadata.sh` CI job asserting 8 invariants (paths exist in `transform.sh` and the validator; legacy paths handled in code; verified-status dates single-sourced in `docs/ADAPTER-LIVE-VERIFICATION.md`; headless CLIs known to `run-weekly.sh`; matrix tier rows agree). The bash transforms stay dependency-free — metadata validates them, never drives them (ADR-002/023/025). — **ADR-040**.
49
+
50
+ ### Fixed (residual doc drift the 0.6.1 point-fix missed — found by re-verification + the new checker itself)
51
+ - **5 non-Claude adapter READMEs** rewritten to the ADR-031 capability-vs-emission framing (were still "❌ No sub-agent / No hooks / single model" as tool limitations, with pre-P1 rule names in the install trees, "npx not yet available", and a **Codex tier contradiction (README said T3, matrix says T2)**); Reflector emission (`--recipes=self-improvement`) now documented per adapter.
52
+ - **`core/**` reference tables** — `.codex/codex.md` → `AGENTS.md` and `.windsurf/rules/` → `.devin/rules/` in universal-rules/recipes READMEs, spec-as-you-go, anti-pattern examples; meta-discipline cross-tool enforcement table de-staled.
53
+ - **docs/** — ARCHITECTURE (adapter output map, always-loaded row, orchestrator paragraph), INDEX (package row, adapter rows, Codex live-verified, P4 row: npm published), MANUAL-INSTALL (all-6-adapters decision table, "until adapter ships" headers, "No hooks, no sub-agents" limitations), MIGRATION (modern `.mdc` flow, guard-hook phrasing), HOW-IT-WORKS (Gemini/Windsurf lost-feature tables), VISION (`.devin/rules/` tree).
54
+ - **First machine-scan catches** (missed by two human sweeps + a 3-agent verification pass): `adapters/codex/transform-spec.md` body still specced `.codex/codex.md`, `VISION.md` tree, and two "(planned / roadmap — not yet available): npx …" blocks in adapter READMEs — including a claude README pointer to the retired v0.1 archive installer.
55
+
56
+ ### Changed
57
+ - Version-stamp policy: patch releases now re-stamp the README status line (supersedes the 0.6.1 "feature-baseline stamp" stance) — enforced by CI. — **ADR-039**.
58
+ - README's "New in" blockquote now carries only the current release (older summaries drift and were an unguarded second changelog); history lives here.
59
+
60
+ ### Notes
61
+ - **npm registry skips 0.6.1**: 0.6.1 was tagged + released on GitHub but never `npm publish`-ed; the registry goes 0.6.0 → 0.7.0 directly. Everything in 0.6.1 is contained in 0.7.0.
62
+
63
+ ## [0.6.1] — 2026-07-09
64
+
65
+ ### Fixed (documentation + adapter output truth-source; from an external audit)
66
+ - **Manifest version bug** — all 6 adapters hardcoded `"version": "v0.2.0"` in the emitted `.conductor-manifest.json`; now read dynamically from `package.json` (installs stamp the real version). Fixes bogus install-history / rollback / bug-report data.
67
+ - **Adapter capability strings** — Codex/Gemini/Windsurf/Copilot emitted output claimed the tool has "no hooks / no sub-agents / single model"; corrected to the ADR-031 *capability vs CONDUCTOR-emission* framing (the tools support these; CONDUCTOR emits rule text + the Reflector loop, full emission Phase 2).
68
+ - **Doc drift to v0.6.0 reality** — README/ROADMAP/COMPARISON/HOW-IT-WORKS/ARCHITECTURE/VISION/COMPATIBILITY-MATRIX/ADAPTER-LIVE-VERIFICATION/SUPPORTED-FEATURES: all 6 tools have working adapters (not "adapter-less"), npm package exists (no "no npx"), Codex output is `AGENTS.md` (not `.codex/codex.md`), Windsurf emits `.devin/rules/` (not "pending"), Codex is live-verified (single-sourced across docs), Claude hook count reconciled (10 hooks / 5 PreToolUse + 5 Stop).
69
+ - **npm completeness** — `package.json` `files` now ships the docs the README links to (COMPATIBILITY-MATRIX, ADAPTER-LIVE-VERIFICATION, PUBLISH-GUIDE, DESIGN-DECISIONS, COMPARISON), so npm-installed users don't hit dead links.
70
+
71
+ ## [0.6.0] — 2026-07-07
72
+
73
+ ### Added
74
+ - **`loop-engineering` recipe + `pretool-loop-guard` PreToolUse hook** — opt-in discipline for bounded, externally-verified agent loops (G1–G6): explicit done-criterion, iteration+token budget, require-progress, escalate-on-stall, **verify externally never by self-judgment**, oscillation/infinite-loop guard. Grounded in a 5-source verification pass (Huang/DeepMind "Cannot Self-Correct Yet", CRITIC, Reflexion, "When Agents Do Not Stop", Anthropic *Building Effective Agents* — verify hierarchy rules/tests > visual > LLM-judge). The Claude hook is a non-blocking `permissionDecision: ask` soft-warn that self-gates on the recipe, detects same-action-repeat / runaway tool-call budget, is fail-open, and honors `CONDUCTOR_SKIP_LOOP_GUARD` / `CONDUCTOR_LOOP_REPEAT_MAX` / `CONDUCTOR_LOOP_BUDGET` / `CONDUCTOR_LOOP_COOLDOWN_SECONDS`. Recipe count **12 → 13**, hook templates **9 → 10**. Hook is Claude-only (ADR-034); other tools use the rule text. — **ADR-038**.
75
+
8
76
  ## [0.5.0] — 2026-07-07
9
77
 
10
78
  ### Added
package/README.md CHANGED
@@ -6,11 +6,13 @@ Write your project's rules, workflow, and discipline ONCE. Install into any AI c
6
6
 
7
7
  > Born from one year of production iteration at LFamily Labs — the rules, agents, hooks, and memory patterns that survived real shipping pressure.
8
8
 
9
- > **Status (v0.5.0 — 2026-07-07)**: All 6 adapters ship a working `transform.sh` — **Claude Code** (full: rules + hooks + sub-agents + per-call model routing), **Cursor**, **GitHub Copilot** (one install covers 5 IDEs), **Gemini CLI** (`GEMINI.md` + `.gemini/styleguide.md`), **Codex** (`AGENTS.md`), **Windsurf / Devin Desktop** (`.windsurfrules` + `.devin/rules/*.md`). Published to npm as [`omniconductor`](https://www.npmjs.com/package/omniconductor) (v0.5.0). Output is emit-verified (format-validator + CI on all 6); live runtime consumption by Gemini / Codex / Windsurf is adopter-pending — see [`docs/ADAPTER-LIVE-VERIFICATION.md`](./docs/ADAPTER-LIVE-VERIFICATION.md). Manual install ([`docs/MANUAL-INSTALL.md`](./docs/MANUAL-INSTALL.md)) remains a fallback.
9
+ > **Status (v1.0.1 — 2026-07-09)**: All 6 adapters ship a working `transform.sh` — **Claude Code** (full: rules + hooks + sub-agents + per-call model routing), **Cursor**, **GitHub Copilot** (one install covers 5 IDEs), **Gemini CLI** (`GEMINI.md` + `.gemini/styleguide.md`), **Codex** (`AGENTS.md`), **Windsurf / Devin Desktop** (`.windsurfrules` + `.devin/rules/*.md`). This release is ready for npm publication as [`omniconductor`](https://www.npmjs.com/package/omniconductor). Output is emit-verified (format-validator + CI on all 6); **Claude Code + Codex are additionally live-verified** by the automated headless probe (`tools/live-verify.sh`), the rest are live-pending — current per-tool status in the generated table in [`docs/ADAPTER-LIVE-VERIFICATION.md`](./docs/ADAPTER-LIVE-VERIFICATION.md). Manual install ([`docs/MANUAL-INSTALL.md`](./docs/MANUAL-INSTALL.md)) remains a fallback.
10
10
  >
11
- > **New in 0.5.0**: an opt-in **`git-hygiene` recipe** shared-repo discipline (no orphan worktrees, push-don't-hoard, merge=delete-branch, backup≠applied) that stops merged work from *looking* lost; Claude adds a non-blocking Stop-hook reminder, other tools use the rule text (ADR-037). **In 0.4.0**: instruction-fidelity-first **token economy** (lossless context editing before lossy compaction + output-brevity discipline; ADR-035/036, [`docs/CONTEXT-EDITING-GUIDE.md`](./docs/CONTEXT-EDITING-GUIDE.md)). **In 0.3.0**: opt-in **self-improvement / Reflector loop** (propose-only; ADR-030/032/033) + a first-party-verified **compatibility-matrix correction** (all six tools ship hooks / sub-agents / model routing; ADR-031). Full history: [`CHANGELOG.md`](./CHANGELOG.md).
11
+ > **New in 1.0.1**: manifest-backed install/uninstall is now checksum-safe: user-modified emitted files are retained, original baselines survive re-installs, and Gemini/Codex only replace manifest-owned, unmodified marked blocks. 1.0 introduced install modes, anti-drift guards, `doctor`, generated doc tables, and live verification. Earlier releases: [`CHANGELOG.md`](./CHANGELOG.md).
12
12
  >
13
- > Marketplace listing (VSCode Marketplace + Open VSX) remains **Phase 2** (post-0.5) see ADR-023.
13
+ > **Publication boundary**: development is maintained in a private source repository; users receive a deliberately filtered public mirror and npm package. The private source repository must never be made public. See [`docs/PUBLICATION-POLICY.md`](./docs/PUBLICATION-POLICY.md).
14
+ >
15
+ > Marketplace listing (VSCode Marketplace + Open VSX) remains **Phase 2** (post-0.6) — see ADR-023.
14
16
 
15
17
  ---
16
18
 
@@ -21,7 +23,7 @@ Write your project's rules, workflow, and discipline ONCE. Install into any AI c
21
23
  - [Tool coverage matrix](#tool-coverage-matrix)
22
24
  - [Install paths (3 options)](#install-paths)
23
25
  - [Cross-platform: Mac and Windows](#cross-platform-mac-and-windows)
24
- - [Recipes catalog (12)](#recipes-catalog)
26
+ - [Recipes catalog (13)](#recipes-catalog)
25
27
  - [`transform.sh` options reference](#transformsh-options-reference)
26
28
  - [Update / Maintenance / Uninstall](#update--maintenance--uninstall)
27
29
  - [Token measurement & KPI baseline](#token-measurement--kpi-baseline)
@@ -74,7 +76,41 @@ bash ~/conductor/adapters/claude/transform.sh . \
74
76
  # 5. Claude Code 재시작 → /agents 로 6 에이전트 확인
75
77
  ```
76
78
 
77
- 다른 도구는 [Install paths](#install-paths) 참조. Windows 는 [Cross-platform](#cross-platform-mac-and-windows) 참조.
79
+ ### 설치 방법 (3가지)
80
+
81
+ - **Path A — `npx` (권장, 클론 불필요)**: `npx omniconductor init --target=<tool> <dir>` — `<tool>` = `claude` / `cursor` / `copilot` / `gemini` / `codex` / `windsurf`. `list` · `doctor` (설치 상태 진단, 읽기 전용) · `--dry-run` · `--recipes=A,B` · `--mode=<preset>` (v1.0: `full`/`minimal`/`strict`/`recipes-only`/`reflector-only` — Spec Kit·BMAD 와 공존용 à-la-carte 포함) · `--uninstall` 지원.
82
+ - **Path B — bash 어댑터**: CONDUCTOR 클론 후 `bash adapters/<tool>/transform.sh <dir> [--recipes=...] [--dry-run]`.
83
+ - **Path C — 수동 복사**: 스크립트 없이 `cp`/`cat` 으로. [`docs/MANUAL-INSTALL.md`](./docs/MANUAL-INSTALL.md) 참조.
84
+ - **Windows**: Git Bash 또는 WSL2 — [Cross-platform](#cross-platform-mac-and-windows) 참조.
85
+
86
+ ### Recipe 카탈로그 (13개, opt-in)
87
+
88
+ 5개 universal rule 은 항상 설치되고, recipe 는 프로젝트에 맞게 골라 담습니다 (`--recipes=`).
89
+
90
+ | Recipe | 설치 시점 |
91
+ |---|---|
92
+ | `coding-conventions` | TypeScript/TSX — 네이밍·Result 패턴·에러 처리 규약 |
93
+ | `monorepo` | npm/pnpm workspaces (apps + packages) |
94
+ | `i18n` | 2개 이상 로케일 — 새 텍스트는 모든 로케일 동시 |
95
+ | `branch-strategy` | main/develop/release 3-브랜치 모델 |
96
+ | `web-mobile-parity` | 웹+모바일 로직 공유 — 버그·기능 양쪽 반영 |
97
+ | `auto-mock-data` | DB 스키마 변경 시 mock seed 자동생성 |
98
+ | `tdd` | 테스트 프레임워크 + Red-Green-Refactor |
99
+ | `debugging` | 재현→원인→수정→회귀테스트 (증상 패치 금지) |
100
+ | `database-discipline` | 관계형 DB — 마이그레이션 우선·접근제어·dev/prod 패리티 |
101
+ | `design-system` | 디자인 토큰 시스템 — 토큰 우선·컴포넌트 재사용·접근성 |
102
+ | `self-improvement` | 세션 회고 Reflector (propose-only, 사람이 승인) |
103
+ | `git-hygiene` | git 프로젝트 (특히 멀티세션/공유 repo) — worktree·push·브랜치 위생 |
104
+ | `loop-engineering` | 에이전트 루프 (fix→verify 반복) — 종료조건·예산·**외부검증** |
105
+
106
+ ### 업데이트 / 제거
107
+
108
+ - **업데이트**: CONDUCTOR 클론을 `git pull` 후 어댑터 재실행 (또는 `npx omniconductor` 최신 버전).
109
+ - **제거**: `bash adapters/<tool>/transform.sh <dir> --uninstall` — manifest 기반으로 CONDUCTOR 가 넣은 파일만 복원/삭제 (직접 커스터마이즈한 건 보존).
110
+
111
+ ### 상세 레퍼런스 (영문)
112
+
113
+ 도구별 지원 매트릭스, `transform.sh` 전체 옵션, 토큰 측정, 트러블슈팅, FAQ 는 아래 영문 섹션을 참조하세요: [Tool coverage matrix](#tool-coverage-matrix) · [transform.sh options](#transformsh-options-reference) · [Troubleshooting](#troubleshooting) · [FAQ](#faq).
78
114
 
79
115
  ---
80
116
 
@@ -143,7 +179,7 @@ The columns below show **CONDUCTOR emission today** (⚠️ = the tool supports
143
179
 
144
180
  Full per-feature matrix + first-party footnotes: [`docs/COMPATIBILITY-MATRIX.md`](./docs/COMPATIBILITY-MATRIX.md).
145
181
 
146
- > **CLI wrapper**: `npx omniconductor init --target=<tool> <dir>` (published to npm) — or `node bin/omniconductor.js init --target=<tool> <dir>` from a local clone — dispatches to these same adapter scripts, with `list`, `--dry-run`, `--recipes=`, and `--uninstall`.
182
+ > **CLI wrapper**: `npx omniconductor init --target=<tool> <dir>` (published to npm) — or `node bin/omniconductor.js init --target=<tool> <dir>` from a local clone — dispatches to these same adapter scripts, with `list`, `--dry-run`, `--recipes=`, and `--uninstall`. **`npx omniconductor doctor <dir>`** (v0.8+) health-checks an existing install read-only — manifest validity, version drift, file integrity, stale legacy paths, hook validity, doc links, stale claims — exit 0/1/2 (`--json` for machines).
147
183
 
148
184
  > **What you keep going Claude → other tools**: all rule text, doc templates, the 4-type memory pattern, the workflow phases, and the opt-in Reflector loop (emitted on all six). **What is still Claude-only in CONDUCTOR's *emission* today**: auto-blocking hooks, per-call model routing, sub-agent dispatch — a Phase-2 emission gap, **not** a tool limitation (the tools support them; Windsurf is the one real exception, for Stop-style hooks). The discipline is portable; the enforcement is becoming portable as adapter emission catches up.
149
185
 
@@ -214,7 +250,7 @@ bash ~/conductor/adapters/claude/transform.sh . --recipes=monorepo,coding-conven
214
250
 
215
251
  ### Path C — Manual file copy (no script, fully manual)
216
252
 
217
- For tools without an adapter (Gemini / Codex / Windsurf), or for adopters in constrained environments. Step-by-step `cp` / `cat` commands per tool, with frontmatter conversion cheat sheet, are in:
253
+ All 6 tools have a working adapter (Path A/B), so this path is a fallback — for adopters in constrained environments (no bash / no Node) or those who want to see every file before it lands. Step-by-step `cp` / `cat` commands per tool, with frontmatter conversion cheat sheet, are in:
218
254
 
219
255
  → **[`docs/MANUAL-INSTALL.md`](./docs/MANUAL-INSTALL.md)**
220
256
 
@@ -248,7 +284,7 @@ For tools without an adapter (Gemini / Codex / Windsurf), or for adopters in con
248
284
 
249
285
  ## Recipes catalog
250
286
 
251
- 12 opt-in recipes layer project-specific discipline on top of the 5 universal rule bundles. Universal rules always install; recipes are pick-and-mix.
287
+ 13 opt-in recipes layer project-specific discipline on top of the 5 universal rule bundles. Universal rules always install; recipes are pick-and-mix.
252
288
 
253
289
  | Recipe | Install when | Adds |
254
290
  |---|---|---|
@@ -264,6 +300,7 @@ For tools without an adapter (Gemini / Codex / Windsurf), or for adopters in con
264
300
  | `design-system` | Design-token system in use | Tokens over raw hex, component reuse, accessibility + spacing scale adherence |
265
301
  | `self-improvement` | Want periodic, human-approved review of your sessions | A **Reflector** reads recent session trajectories + git and **proposes** lessons-learned to `docs/REFLECTION-PROPOSALS.md` (propose-only; you apply). Emits a session-end trajectory hook, a `/reflect` command, a reflector agent, a deterministic prune, and a weekly runner + scheduling guide — on all six tools. See ADR-030/032/033. |
266
302
  | `git-hygiene` | Any git project — esp. multi-session/agent repos or protected branches | Shared-repo discipline (G1–G7): no unrequested worktrees, push-don't-hoard, merge=delete-branch, backup≠applied (verify by real code), no reckless force/rebase on shared repos, bundle PRs for CI, session-end hygiene check. Claude adds a non-blocking Stop-hook reminder; other tools use the rule text. See ADR-037. |
303
+ | `loop-engineering` | Any agentic loop (generate→verify→fix→re-verify, test-fix, multi-step) | Bounded, externally-verified loops (G1–G6): explicit done-criterion, iteration+token budget, require-progress, escalate-on-stall, **verify externally never by self-judgment**, oscillation guard. Grounded in the research that self-correction without an external check is unreliable. Claude adds a non-blocking PreToolUse loop-guard (repeat/runaway detection); other tools use the rule text. See ADR-038. |
267
304
 
268
305
  #### Decision tree
269
306
 
@@ -280,6 +317,7 @@ Relational DB + migrations? YES → database-discipline
280
317
  Design-token system? YES → design-system
281
318
  Want weekly session self-review? YES → self-improvement
282
319
  Use git (esp. shared/multi-session)? YES → git-hygiene
320
+ Agent loops / iterative fix-verify? YES → loop-engineering
283
321
  ```
284
322
 
285
323
  #### Recommended combos
@@ -304,7 +342,8 @@ Usage: bash adapters/<tool>/transform.sh <target-project> [options]
304
342
  | Option | Description |
305
343
  |---|---|
306
344
  | `<target-project>` | Project directory to install into (required). `.` for current dir. |
307
- | `--recipes=A,B,C` | Comma-separated recipes from the 12 in `core/recipes/`. |
345
+ | `--recipes=A,B,C` | Comma-separated recipes from the 13 in `core/recipes/`. |
346
+ | `--mode=<m>` | Install preset (v1.0, ADR-044): `full` (default) · `minimal` (rule text + docs only — no agents/hooks/Reflector runtime) · `strict` (abort with exit 3 instead of touching an existing baseline) · `recipes-only` (à la carte: ONLY the selected recipes; single-file tools get a hash-tracked marked block appended, stripped losslessly on uninstall) · `reflector-only` (the self-improvement loop standalone — least-conflicting when coexisting with Spec Kit / BMAD, which the installer detects and suggests, never auto-switches). |
308
347
  | `--dry-run` | Preview only — no files written. |
309
348
  | `--measure-baseline` | Run `tools/measure-tokens.sh --latest` after install; save CSV; auto-show anti-patterns if cache hit < 95%. |
310
349
  | `--no-prompt` | Skip wizard, apply defaults (CI-safe). Combine with `--recipes` and `--measure-baseline` as needed. |
@@ -313,13 +352,13 @@ Usage: bash adapters/<tool>/transform.sh <target-project> [options]
313
352
  | `--force` | Bypass uninstall safety gates (active rebase/merge, missing manifest). |
314
353
  | `-h` `--help` | Print usage. |
315
354
 
316
- **Recipe names** (12): `web-mobile-parity`, `i18n`, `monorepo`, `branch-strategy`, `auto-mock-data`, `coding-conventions`, `tdd`, `debugging`, `database-discipline`, `design-system`, `self-improvement`, `git-hygiene`.
355
+ **Recipe names** (13): `web-mobile-parity`, `i18n`, `monorepo`, `branch-strategy`, `auto-mock-data`, `coding-conventions`, `tdd`, `debugging`, `database-discipline`, `design-system`, `self-improvement`, `git-hygiene`, `loop-engineering`.
317
356
 
318
357
  #### File overwrite behavior
319
358
 
320
359
  | File | Already exists |
321
360
  |---|---|
322
- | `CLAUDE.md` / `.cursorrules` / `.github/instructions/all.instructions.md` | Backed up to `.conductor-backup-YYYYMMDD-HHMMSS`, then overwritten |
361
+ | `CLAUDE.md` / `GEMINI.md` / `AGENTS.md` / `.github/copilot-instructions.md` | Backed up to `.conductor-backup-YYYYMMDD-HHMMSS`, then overwritten (`--mode=strict`: aborts instead) |
323
362
  | `.claude/rules/*.md` / `.cursor/rules/*.mdc` / `.github/instructions/*.instructions.md` | Backed up + overwritten |
324
363
  | `.claude/agents/*.md` | Backed up + overwritten |
325
364
  | `.claude/hooks/*.sh` | Overwritten |
@@ -336,7 +375,7 @@ Usage: bash adapters/<tool>/transform.sh <target-project> [options]
336
375
  cd ~/conductor && git pull
337
376
  ```
338
377
 
339
- Then re-run `transform.sh` on each target — installs are idempotent. Existing files get fresh timestamped backups before overwrite (manifest tracks every emitted file, see ADR-020).
378
+ Then re-run `transform.sh` on each target — installs are idempotent. An unchanged CONDUCTOR file retains its original pre-install backup; a user-edited emitted file is backed up before replacement. Manifest entries record the emitted SHA-256 to make uninstall non-destructive.
340
379
 
341
380
  ### Re-measure cache hit (1 week after install)
342
381
 
@@ -359,9 +398,10 @@ bash ~/conductor/adapters/claude/transform.sh ~/your-project --uninstall
359
398
  ```
360
399
 
361
400
  Behavior:
362
- - For each manifested file: restore backup if one exists, otherwise delete.
363
- - Adopter-customized files (anything not in the manifest) are preserved.
364
- - `.conductor-backup-*` siblings cleaned up.
401
+ - For each unchanged manifested file: restore its original backup if one exists, otherwise delete it.
402
+ - A manifested file whose SHA-256 differs (or a legacy manifest without a checksum) is treated as user-modified and left in place with a warning; any original backup is retained for recovery.
403
+ - Adopter-customized files outside the manifest are preserved.
404
+ - Manifest-history backup siblings are cleaned up; retained original backups are never deleted when a user-modified file needs them.
365
405
  - Best-effort `rmdir` of empty `.claude/{rules,agents,hooks}/`.
366
406
 
367
407
  ---
@@ -412,7 +452,7 @@ diff CLAUDE.md.conductor-backup-* CLAUDE.md
412
452
 
413
453
  #### "recipe not found" warning
414
454
 
415
- Check recipe name spelling. Available: `web-mobile-parity`, `i18n`, `monorepo`, `branch-strategy`, `auto-mock-data`, `coding-conventions`, `tdd`, `debugging`, `database-discipline`, `design-system`, `self-improvement`, `git-hygiene`.
455
+ Check recipe name spelling. Available: `web-mobile-parity`, `i18n`, `monorepo`, `branch-strategy`, `auto-mock-data`, `coding-conventions`, `tdd`, `debugging`, `database-discipline`, `design-system`, `self-improvement`, `git-hygiene`, `loop-engineering`.
416
456
 
417
457
  #### "Tool doesn't recognize the new rules"
418
458
 
@@ -461,7 +501,7 @@ Claude Code uses `~/.claude/projects/.../memory/`; other tools use `docs/memory/
461
501
 
462
502
  #### Architecture Decision Records (`docs/DESIGN-DECISIONS.md`)
463
503
 
464
- 36 ADRs cover the foundational decisions. Highlights:
504
+ 44 ADRs cover the foundational decisions. Highlights:
465
505
 
466
506
  | ADR | Topic | Why it matters |
467
507
  |---|---|---|
@@ -495,7 +535,7 @@ A: Open VSX. Cursor is a VSCode fork but cannot pull from Microsoft's marketplac
495
535
 
496
536
  **Q: My project uses Go / Python / Rust, not TypeScript.**
497
537
 
498
- A: Skip `coding-conventions` (TypeScript-specific). The 5 universal rule bundles and the other 11 recipes are stack-agnostic.
538
+ A: Skip `coding-conventions` (TypeScript-specific). The 5 universal rule bundles and the other 12 recipes are stack-agnostic.
499
539
 
500
540
  **Q: Windows native PowerShell?**
501
541
 
@@ -511,7 +551,7 @@ A: See `docs/COMPARISON.md` for the conflict-resolution decision tree (3 pattern
511
551
 
512
552
  **Q: Idempotent re-install? Will it clobber my edits?**
513
553
 
514
- A: Re-running `transform.sh` is safe. Every overwrite creates a timestamped backup (`.conductor-backup-YYYYMMDD-HHMMSS`); your prior state is recoverable. `docs/CURRENT_WORK.md` and other doc templates are NEVER overwritten if they already exist.
554
+ A: Re-running `transform.sh` is safe. An unchanged emitted file keeps its first pre-CONDUCTOR backup; an edited emitted file is snapshotted before replacement. `--uninstall` preserves any file whose emitted SHA-256 no longer matches, rather than deleting it. `docs/CURRENT_WORK.md` and other doc templates are NEVER overwritten if they already exist.
515
555
 
516
556
  **Q: Use Conductor before all 6 adapters ship?**
517
557
 
package/VISION.md CHANGED
@@ -32,7 +32,7 @@ This is the problem CONDUCTOR solves.
32
32
 
33
33
  ## The solution
34
34
 
35
- > **한글:** 프로젝트의 규율을 도구 독립적인 포맷으로 **단 한 번** 작성하세요. 도구별로 명령어 하나만 실행하면, CONDUCTOR 가 해당 도구에 맞는 파일을 올바른 경로·올바른 포맷으로 생성합니다 (`core/` 에 룰을 한 번 쓰면 → `.claude/` / `.cursor/rules/` / `.github/instructions/` / `GEMINI.md` / `.codex/codex.md` / `.windsurfrules` 로 변환). 같은 Plan → Architecture → Tasks 워크플로가, 그날 개발자가 어떤 도구를 쓰든 프로젝트의 모든 에이전트를 동일하게 지배하게 됩니다.
35
+ > **한글:** 프로젝트의 규율을 도구 독립적인 포맷으로 **단 한 번** 작성하세요. 도구별로 명령어 하나만 실행하면, CONDUCTOR 가 해당 도구에 맞는 파일을 올바른 경로·올바른 포맷으로 생성합니다 (`core/` 에 룰을 한 번 쓰면 → `.claude/` / `.cursor/rules/` / `.github/instructions/` / `GEMINI.md` / `AGENTS.md` / `.windsurfrules` 로 변환). 같은 Plan → Architecture → Tasks 워크플로가, 그날 개발자가 어떤 도구를 쓰든 프로젝트의 모든 에이전트를 동일하게 지배하게 됩니다.
36
36
 
37
37
  Write your project's discipline ONCE in a tool-agnostic format. Run a single command per tool, and CONDUCTOR generates the right files at the right paths in the right format for that specific tool.
38
38
 
@@ -51,7 +51,7 @@ target-project/
51
51
  ├── .github/instructions/ (if --target=copilot)
52
52
  ├── GEMINI.md (if --target=gemini)
53
53
  ├── AGENTS.md (if --target=codex)
54
- └── .windsurf/rules/ (if --target=windsurf)
54
+ └── .devin/rules/ (if --target=windsurf)
55
55
  ```
56
56
 
57
57
  The same Plan → Architecture → Tasks workflow now governs every agent in the project, regardless of which tool the developer happens to be using that day.
@@ -6,12 +6,12 @@ One adapter per supported tool. Each reads the tool-agnostic content under `core
6
6
 
7
7
  ```
8
8
  adapters/
9
- ├── claude/ # Claude Code (T1 — full support)
10
- ├── cursor/ # Cursor (T1 — partial; no sub-agents/hooks)
9
+ ├── claude/ # Claude Code (T1 — reference implementation, full emission)
10
+ ├── cursor/ # Cursor (T1)
11
11
  ├── copilot/ # GitHub Copilot (T2)
12
12
  ├── gemini/ # Gemini CLI (T2)
13
- ├── codex/ # OpenAI Codex (T3)
14
- └── windsurf/ # Windsurf (T3)
13
+ ├── codex/ # OpenAI Codex (T2)
14
+ └── windsurf/ # Windsurf / Devin Desktop (T3)
15
15
  ```
16
16
 
17
17
  Each adapter directory contains:
@@ -75,11 +75,11 @@ The Layer-1 universal-rules use `applies_to:` front-matter for routing hints. Ea
75
75
  | (Cursor) | `globs:\n - "**/*.ts"\n - "**/*.tsx"` |
76
76
  | (Copilot) | `applyTo: '**/*.ts,**/*.tsx'` |
77
77
  | (Gemini / Codex) | (bundled — no per-pattern routing) |
78
- | (Windsurf) | (bundled into `.windsurf/rules/`) |
78
+ | (Windsurf) | (bundled into `.devin/rules/`; legacy `.windsurf/rules/` still read) |
79
79
 
80
80
  | `core/` front-matter | Adapter behavior |
81
81
  |---|---|
82
- | `always_loaded: true` | Merge content into the always-loaded baseline file (`CLAUDE.md`, `.cursorrules`, `applyTo: '**'`, `GEMINI.md`, `.codex/codex.md`, `.windsurfrules`) |
82
+ | `always_loaded: true` | Merge content into the always-loaded baseline (`CLAUDE.md`, `.cursor/rules/*.mdc` `alwaysApply: true`, `.github/copilot-instructions.md`, `GEMINI.md`, `AGENTS.md`, `.windsurfrules`) |
83
83
  | `always_loaded: false` (or absent) | Emit as a separate rule file with appropriate per-pattern scoping |
84
84
 
85
85
  ## Adapter-specific extensions
@@ -105,8 +105,8 @@ bash adapters/<tool>/transform.sh <target> [--dry-run]
105
105
  # Or by absolute path:
106
106
  /path/to/conductor/adapters/<tool>/transform.sh /path/to/target [--dry-run]
107
107
 
108
- # (planned / roadmap not yet available):
109
- # npx omniconductor init --target=<tool> [target-dir]
108
+ # Or via the npm CLI (no clone needed):
109
+ npx omniconductor init --target=<tool> [target-dir]
110
110
  ```
111
111
 
112
112
  ## Status (P0 foundation)
@@ -19,11 +19,8 @@ bash adapters/claude/transform.sh <target> [--dry-run]
19
19
  # Or by absolute path:
20
20
  /path/to/conductor/adapters/claude/transform.sh /path/to/target [--dry-run]
21
21
 
22
- # (planned / roadmap not yet available):
23
- # npx omniconductor init --target=claude [target-dir]
24
-
25
- # Today (P0 foundation): use the v0.1 archive:
26
- /path/to/conductor/archive/v0.1/install.sh /path/to/target
22
+ # Or via the npm CLI (no clone needed):
23
+ npx omniconductor init --target=claude [target-dir]
27
24
  ```
28
25
 
29
26
  ## What gets installed
@@ -45,7 +42,7 @@ bash adapters/claude/transform.sh <target> [--dry-run]
45
42
  │ │ ├── quality-gates.md
46
43
  │ │ ├── operations.md
47
44
  │ │ └── meta-discipline.md
48
- │ ├── hooks/ # 9 hook scripts
45
+ │ ├── hooks/ # 10 hook scripts
49
46
  │ │ ├── pretool-agent-routing.sh
50
47
  │ │ ├── pretool-commit-current-work-check.sh
51
48
  │ │ ├── pretool-commit-test-coverage-check.sh
@@ -32,7 +32,7 @@ CONDUCTOR's universal `meta-discipline.md` rubric (token economy + model routing
32
32
 
33
33
  ## Hook execution model
34
34
 
35
- CONDUCTOR ships 9 hooks, all registered in the generated `.claude/settings.json` (written directly by `transform.sh` — there is no `settings.template.json`):
35
+ CONDUCTOR ships 10 hooks, all registered in the generated `.claude/settings.json` (written directly by `transform.sh` — there is no `settings.template.json`):
36
36
 
37
37
  | Hook | Event | Purpose |
38
38
  |---|---|---|
@@ -44,7 +44,7 @@ CONDUCTOR ships 9 hooks, all registered in the generated `.claude/settings.json`
44
44
  | `stop-r6-review-check.sh` | `Stop` (session end) | Inject reminder to run Stage B `/code-review` slash command if a feature/fix branch has open PR + cool-down. |
45
45
  | `stop-cache-hit-baseline-check.sh` | `Stop` | Flag prompt-cache baseline regressions at session end. |
46
46
 
47
- `transform.sh` registers all 7 in `.claude/settings.json` (4 `PreToolUse` + 3 `Stop`). Users customize paths and conditions in that generated file, or override per-user in `settings.local.json` (gitignored).
47
+ `transform.sh` registers all 10 in `.claude/settings.json` (5 `PreToolUse` + 5 `Stop`). Users customize paths and conditions in that generated file, or override per-user in `settings.local.json` (gitignored).
48
48
 
49
49
  ## What Claude DOES NOT support that CONDUCTOR doesn't try to compensate for
50
50
 
@@ -58,9 +58,9 @@ The Claude adapter ships a working `transform.sh`. Verified by fresh-target inst
58
58
 
59
59
  | Feature claim | Verified-by-real-install | Verification command / observation |
60
60
  |---|---|---|
61
- | `transform.sh` emits 6 roles, 5 rules, 9 hooks, settings.json, docs | ✅ | `bash adapters/claude/transform.sh <tmp>` then inspect `<tmp>/.claude/` |
61
+ | `transform.sh` emits 6 roles, 5 rules, 10 hooks, settings.json, docs | ✅ | `bash adapters/claude/transform.sh <tmp>` then inspect `<tmp>/.claude/` |
62
62
  | Sub-agent dispatch works | ✅ | `.claude/agents/{planner,builder,reviewer,helper,designer,scribe}.md` recognized by `/help` |
63
63
  | Lazy / always-loaded rules present | ✅ | `.claude/rules/{workflow,spec-as-you-go,quality-gates,operations,meta-discipline}.md` |
64
- | Hooks registered in settings.json | ✅ | `.claude/settings.json` `hooks:` block lists 4 PreToolUse + 5 Stop |
64
+ | Hooks registered in settings.json | ✅ | `.claude/settings.json` `hooks:` block lists 5 PreToolUse + 5 Stop |
65
65
  | Stop hook blocks on missing spec update | ✅ | commit code without spec → `stop-session-log-check.sh` fires |
66
66
  | Idempotent re-run | ✅ | second run reports "SKIP (exists)" for every emitted file |
@@ -0,0 +1,39 @@
1
+ {
2
+ "_comment": "Single source for enumerable adapter facts (ADR-040). CI asserts transform.sh / validator / matrix agree with this file. Update HERE first; docs follow.",
3
+ "tool": "claude",
4
+ "display_name": "Claude Code",
5
+ "tier": "T1",
6
+ "outputs": [
7
+ { "path": "CLAUDE.md", "kind": "always_loaded", "validated": false },
8
+ { "path": ".claude/rules", "kind": "rules", "validated": true },
9
+ { "path": ".claude/agents", "kind": "agents", "validated": false },
10
+ { "path": ".claude/hooks", "kind": "hooks", "validated": false },
11
+ { "path": ".claude/settings.json", "kind": "config", "validated": false },
12
+ { "path": "docs/CURRENT_WORK.md", "kind": "docs", "validated": false }
13
+ ],
14
+ "reflector_outputs": [
15
+ { "path": ".claude/commands", "note": "/reflect command (recipe-gated)" },
16
+ { "path": ".conductor/reflect", "note": "runner + brief + scheduling (recipe-gated)" }
17
+ ],
18
+ "install": { "ala_carte": "per-file" },
19
+ "legacy_paths": [],
20
+ "capabilities": {
21
+ "tool_native": {
22
+ "hooks": "yes",
23
+ "sub_agents": "yes",
24
+ "model_routing": "yes",
25
+ "commands": "yes",
26
+ "glob_scoping": "yes",
27
+ "scheduler": "local"
28
+ },
29
+ "conductor_emitted": {
30
+ "rules": "full",
31
+ "guard_hooks": "full",
32
+ "reflector_loop": "recipe",
33
+ "role_agents": "full",
34
+ "model_routing": "full"
35
+ }
36
+ },
37
+ "live_verification": { "status": "verified", "date": "2026-07-09", "cli": "2.1.205 (Claude Code)", "note": "headless probe listed 5/5 rules + read-CURRENT_WORK-first" },
38
+ "headless_cli": { "command": "claude", "invocation": "claude -p" }
39
+ }
@@ -31,7 +31,7 @@ core/docs-templates/specs/_example.md
31
31
  core/memory-pattern/README.md
32
32
  core/memory-pattern/EXAMPLES.md
33
33
  core/roles/*.md # 6 role personas → .claude/agents/ (planner/builder/reviewer/helper/designer/scribe)
34
- core/hooks/*.sh.template # 9 hook templates
34
+ core/hooks/*.sh.template # 10 hook templates
35
35
  adapters/claude/_native/CLAUDE.md.tpl # Claude-specific orchestrator manual template
36
36
  ```
37
37