create-merlin-brain 5.0.2 → 5.3.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 (101) hide show
  1. package/README.md +25 -4
  2. package/bin/install.cjs +20 -0
  3. package/dist/server/server.d.ts.map +1 -1
  4. package/dist/server/server.js +75 -0
  5. package/dist/server/server.js.map +1 -1
  6. package/dist/server/tools/context.d.ts.map +1 -1
  7. package/dist/server/tools/context.js +60 -0
  8. package/dist/server/tools/context.js.map +1 -1
  9. package/dist/server/tools/project-picture.d.ts +17 -0
  10. package/dist/server/tools/project-picture.d.ts.map +1 -0
  11. package/dist/server/tools/project-picture.js +204 -0
  12. package/dist/server/tools/project-picture.js.map +1 -0
  13. package/dist/server/tools/types.d.ts +24 -0
  14. package/dist/server/tools/types.d.ts.map +1 -1
  15. package/files/agents/challenger-academic.md +8 -0
  16. package/files/agents/challenger-arbiter.md +8 -0
  17. package/files/agents/challenger-insider.md +8 -0
  18. package/files/agents/code-organization-supervisor.md +8 -0
  19. package/files/agents/codex-planner.md +36 -9
  20. package/files/agents/context-guardian.md +8 -0
  21. package/files/agents/docs-keeper.md +8 -0
  22. package/files/agents/dry-refactor.md +8 -0
  23. package/files/agents/elite-code-refactorer.md +8 -0
  24. package/files/agents/hardening-guard.md +8 -0
  25. package/files/agents/implementation-dev.md +8 -0
  26. package/files/agents/merlin-access-control-reviewer.md +8 -0
  27. package/files/agents/merlin-api-designer.md +8 -0
  28. package/files/agents/merlin-codebase-mapper.md +8 -0
  29. package/files/agents/merlin-debugger.md +8 -0
  30. package/files/agents/merlin-dependency-auditor.md +8 -0
  31. package/files/agents/merlin-edge-case-hunter.md +8 -0
  32. package/files/agents/merlin-executor.md +8 -0
  33. package/files/agents/merlin-frontend.md +8 -0
  34. package/files/agents/merlin-input-validator.md +8 -0
  35. package/files/agents/merlin-integration-checker.md +8 -0
  36. package/files/agents/merlin-migrator.md +8 -0
  37. package/files/agents/merlin-milestone-auditor.md +8 -0
  38. package/files/agents/merlin-party-review.md +8 -0
  39. package/files/agents/merlin-performance.md +8 -0
  40. package/files/agents/merlin-planner.md +9 -1
  41. package/files/agents/merlin-researcher.md +8 -0
  42. package/files/agents/merlin-reviewer.md +8 -0
  43. package/files/agents/merlin-sast-reviewer.md +8 -0
  44. package/files/agents/merlin-secret-scanner.md +8 -0
  45. package/files/agents/merlin-security.md +8 -0
  46. package/files/agents/merlin-verifier.md +8 -0
  47. package/files/agents/merlin-work-verifier.md +8 -0
  48. package/files/agents/merlin.md +8 -0
  49. package/files/agents/ops-railway.md +8 -0
  50. package/files/agents/orchestrator-retrofit.md +8 -0
  51. package/files/agents/product-spec.md +8 -0
  52. package/files/agents/remotion.md +8 -0
  53. package/files/agents/system-architect.md +8 -0
  54. package/files/agents/tests-qa.md +8 -0
  55. package/files/commands/merlin/course-correct.md +8 -0
  56. package/files/commands/merlin/design-audit.md +92 -0
  57. package/files/commands/merlin/health.md +8 -0
  58. package/files/commands/merlin/next.md +8 -0
  59. package/files/commands/merlin/optimize.md +89 -0
  60. package/files/commands/merlin/polish.md +99 -0
  61. package/files/commands/merlin/quick.md +8 -0
  62. package/files/commands/merlin/readiness-gate.md +8 -0
  63. package/files/commands/merlin/redesign.md +108 -0
  64. package/files/loop/README.md +11 -0
  65. package/files/merlin/skills/SKILLS-INDEX.md +16 -1
  66. package/files/merlin/skills/TASK-OPTIMIZER.json +310 -0
  67. package/files/merlin/skills/coding/focus-mode.md +8 -0
  68. package/files/merlin/skills/design/emil-design-eng.md +31 -0
  69. package/files/merlin/skills/design/impeccable.md +36 -0
  70. package/files/merlin/skills/duo/offer.md +20 -7
  71. package/files/merlin/skills/duo/on.md +26 -17
  72. package/files/merlin/skills/duo/status.md +10 -3
  73. package/files/merlin/templates/DEBUG.md +11 -0
  74. package/files/merlin/templates/UAT.md +11 -0
  75. package/files/merlin/templates/phase-prompt.md +11 -0
  76. package/files/merlin/templates/project.md +11 -0
  77. package/files/merlin/templates/requirements.md +11 -0
  78. package/files/merlin/templates/roadmap.md +11 -0
  79. package/files/merlin/templates/state.md +11 -0
  80. package/files/merlin/templates/verification-report.md +11 -0
  81. package/files/merlin/workflows/execute-phase.md +11 -0
  82. package/files/merlin/workflows/plan-phase.md +11 -0
  83. package/files/merlin/workflows/progress.md +11 -0
  84. package/files/merlin/workflows/resume-project.md +11 -0
  85. package/files/merlin/workflows/verify-phase.md +11 -0
  86. package/files/merlin/workflows/verify-work.md +11 -0
  87. package/files/merlin-system-prompt.txt +35 -1
  88. package/files/rules/codex-routing.md +19 -0
  89. package/files/rules/duo-routing.md +109 -10
  90. package/files/rules/merlin-routing.md +40 -0
  91. package/files/scripts/codex-as.sh +5 -2
  92. package/files/scripts/design-intent-detect.sh +8 -0
  93. package/files/scripts/duo-badge.sh +3 -5
  94. package/files/scripts/duo-installed.sh +3 -3
  95. package/files/scripts/duo-mode-read.sh +30 -10
  96. package/files/scripts/duo-mode-write.sh +28 -3
  97. package/files/scripts/duo-pre-route.sh +2 -8
  98. package/files/scripts/install-design-skills.sh +86 -0
  99. package/files/scripts/merlin-codex.sh +9 -4
  100. package/files/scripts/task-optimize.sh +335 -0
  101. package/package.json +1 -1
@@ -9,6 +9,14 @@ source: builtin
9
9
  successRate: 0
10
10
  usageCount: 0
11
11
  evolution: []
12
+ provenance:
13
+ upstream: gsd-build/get-shit-done
14
+ upstream_path: skills/focus-mode.md
15
+ upstream_commit: 9045c81
16
+ license: MIT
17
+ license_verification: confirmed
18
+ adapted: "2026-03-14"
19
+ changes: adapted from GSD skill pattern
12
20
  ---
13
21
  # Focus Mode (GSD)
14
22
  Work in Get Stuff Done mode. Make reasonable decisions without asking. Build quickly and show results. Only ask questions when truly blocked. Prefer action over deliberation. If two approaches seem equally valid, pick the simpler one and move on.
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: emil-design-eng
3
+ name: Emil Design Engineering
4
+ domain: coding
5
+ category: design
6
+ tags: [design, ui, animation, polish, micro-interactions, easing, transforms, gestures, performance, accessibility]
7
+ triggers: [animate, animation, "feels stiff", "add motion", smoother, polish, "micro-interactions", "feels cheap", easing, transitions, gestures, "60fps", "premium feel"]
8
+ version: 1
9
+ source: external
10
+ upstream: emilkowalski/skill
11
+ license: unlicensed
12
+ install_path: ~/.claude/skills/emil-design-eng/SKILL.md
13
+ successRate: 0
14
+ usageCount: 0
15
+ evolution: []
16
+ ---
17
+ # Emil Design Engineering
18
+
19
+ Animation craft and UI polish from Emil Kowalski. Covers easing functions, transforms, gestures, micro-interactions, performance optimization, and accessibility (`prefers-reduced-motion`).
20
+
21
+ **Usage:** Read the full skill at `~/.claude/skills/emil-design-eng/SKILL.md` (installed via `npx --yes skills add emilkowalski/skill`).
22
+
23
+ If the file is missing, run: `npx --yes skills add emilkowalski/skill` or `bash ~/.claude/scripts/install-design-skills.sh`
24
+
25
+ This skill covers:
26
+ - Easing functions and animation timing
27
+ - CSS and JS transforms
28
+ - Gesture interactions and touch handling
29
+ - Micro-interactions and polish
30
+ - Performance (GPU compositing, will-change)
31
+ - Motion preferences and accessibility
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: impeccable
3
+ name: Impeccable Design Language
4
+ domain: coding
5
+ category: design
6
+ tags: [design, ui, typography, color, spacing, motion, interaction, responsive, ux-writing, accessibility, dark-mode, oklch]
7
+ triggers: [redesign, "make it pretty", "looks ugly", typography, "color system", spacing, "design audit", accessibility, responsive, "dark mode", OKLCH, "fluid design", "design review", "UX writing", "design system", polish, "premium feel", professional]
8
+ version: 1
9
+ source: external
10
+ upstream: pbakaus/impeccable
11
+ license: Apache-2.0
12
+ install_path: ~/.claude/skills/impeccable/SKILL.md
13
+ successRate: 0
14
+ usageCount: 0
15
+ evolution: []
16
+ ---
17
+ # Impeccable Design Language
18
+
19
+ Comprehensive design language by Philipp Bakaus covering 7 design domains + 23 specialized commands for design critique, auditing, and refinement.
20
+
21
+ **Usage:** Read the full skill at `~/.claude/skills/impeccable/SKILL.md` (installed at setup via `install-design-skills.sh`).
22
+
23
+ If the file is missing, run: `bash ~/.claude/scripts/install-design-skills.sh`
24
+
25
+ This skill covers:
26
+ - Typography (scales, families, weights, line-height)
27
+ - Color theory (OKLCH, accessibility, dark-mode)
28
+ - Spatial design (spacing, grids, proportions)
29
+ - Motion design (timing, easing, interactions)
30
+ - Interaction design (states, feedback, patterns)
31
+ - Responsive design (breakpoints, fluid scaling)
32
+ - UX writing (copy, tone, clarity)
33
+
34
+ Commands include `/audit`, `/polish`, `/critique`, `/animate`, `/harden`, `/distill` and 17+ more.
35
+
36
+ Apache-2.0 license attribution preserved at `~/.claude/skills/impeccable/NOTICE.md`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: duo-offer
3
- description: Auto-offer prompt for enabling duo mode on risky tasks. Invoked by duo-pre-route.sh when risk score >= threshold and Codex is installed and duo is off and task is not suppressed.
3
+ description: Auto-offer prompt for enabling duo mode on risky tasks. Invoked by duo-pre-route.sh when risk score >= threshold and duo is off and task is not suppressed.
4
4
  type: skill
5
5
  subcommand: offer
6
6
  ---
@@ -13,9 +13,10 @@ You are executing the duo auto-offer flow. Follow every step in sequence.
13
13
 
14
14
  Run `~/.claude/scripts/duo-mode-read.sh`. If output is `enabled`, exit silently — duo is already on, no offer needed.
15
15
 
16
- ## Step 2 — Install gate
17
-
18
- Run `~/.claude/scripts/duo-installed.sh`. If exit code != 0, exit silently — do not mention duo or Codex.
16
+ ## Step 2 — Detect pair (informational only — never blocks the offer).
17
+ Run `~/.claude/scripts/codex-installed.sh`. Capture exit code.
18
+ If exit 0 PAIR=claude+codex
19
+ Else → PAIR=claude+claude
19
20
 
20
21
  ## Step 3 — Read context
21
22
 
@@ -95,8 +96,9 @@ Map reasons to human-readable category labels (never display raw file paths):
95
96
  - `keyword:ship`, `keyword:release`, `keyword:critical` → "release-critical"
96
97
  - `dep:package.json`, `dep:go.mod`, `dep:Cargo.toml`, `dep:requirements.txt` → "dependency changes"
97
98
 
98
- Display (show at most 3 categories, never raw paths):
99
+ Display (show at most 3 categories, never raw paths). Tailor the pair line to PAIR:
99
100
 
101
+ If PAIR == claude+codex:
100
102
  ```
101
103
  ⟡🔮 MERLIN › This task looks risky (score <SCORE>/100).
102
104
  • Areas: <comma-separated categories>
@@ -107,13 +109,24 @@ Reply: yes (enable duo) · no (solo) · skip session · never
107
109
  (default = solo if you don't reply explicitly)
108
110
  ```
109
111
 
112
+ If PAIR == claude+claude:
113
+ ```
114
+ ⟡🔮 MERLIN › This task looks risky (score <SCORE>/100).
115
+ • Areas: <comma-separated categories>
116
+ • Workflow: <workflow or "general">
117
+ Twin-Claude pair would tag-team this (sequential write + review with decider gate).
118
+
119
+ Reply: yes (enable duo) · no (solo) · skip session · never
120
+ (default = solo if you don't reply explicitly)
121
+ ```
122
+
110
123
  ## Step 7 — Parse user reply (case-insensitive)
111
124
 
112
125
  Wait for the user's response, then:
113
126
 
114
127
  | Reply contains | Action |
115
128
  |---|---|
116
- | `yes` / `enable duo` / `do it` | Call `~/.claude/scripts/duo-mode-write.sh on "auto-offer accepted: <reasons>"` then set `DUO_OFFER_OUTCOME=yes` |
129
+ | `yes` / `enable duo` / `do it` | Call `~/.claude/scripts/duo-mode-write.sh on "auto-offer accepted: <reasons>" "$PAIR"` then set `DUO_OFFER_OUTCOME=yes` |
117
130
  | `skip session` / `skip this session` | Set `session_skip:true` in duo-suppress.json (atomic, flock), set `DUO_OFFER_OUTCOME=skip-session` |
118
131
  | `never` | Add intent fingerprint to `never_for_intents` (FIFO cap 20, with timestamp), set `DUO_OFFER_OUTCOME=never` |
119
132
  | `no` / anything else / silence | Add task_hash to `task_hashes_declined` (FIFO cap 100), set `DUO_OFFER_OUTCOME=no` |
@@ -149,7 +162,7 @@ EOF
149
162
  Append to `~/.claude/merlin-state/duo-decisions.log` (create if missing, JSONL):
150
163
 
151
164
  ```json
152
- {"ts":"<ISO8601>","event":"offer","score":<N>,"reasons":[...],"response":"<yes|no|skip-session|never|silent>","action":"<enable|solo|suppress-session|suppress-intent|suppress-task>"}
165
+ {"ts":"<ISO8601>","event":"offer","score":<N>,"reasons":[...],"response":"<yes|no|skip-session|never|silent>","action":"<enable|solo|suppress-session|suppress-intent|suppress-task>","pair":"<claude+codex|claude+claude>"}
153
166
  ```
154
167
 
155
168
  ## Step 9 — Continue
@@ -2,29 +2,23 @@
2
2
 
3
3
  ## Steps
4
4
 
5
- **Step 1 — Check install gate.**
6
- ```bash
7
- ~/.claude/scripts/duo-installed.sh
8
- EXIT_CODE=$?
9
- ```
5
+ **Step 1 — Check current state.**
6
+ Run `~/.claude/scripts/duo-mode-read.sh`. If output is `enabled`, duo is already on — skip to Step 4 to show current confirmation and stop.
10
7
 
11
- **Step 2 — Gate failed (Codex not installed).**
12
- If exit code != 0:
13
- ```bash
14
- ~/.claude/scripts/duo-mode-write.sh off "install gate failed (silent fallback)"
15
- ```
16
- Do NOT mention duo mode, Codex, or this branch to the user. Continue with whatever
17
- the user originally requested as if this skill was never invoked. Stop here.
8
+ **Step 2 — Detect pair.**
9
+ Run `~/.claude/scripts/codex-installed.sh`. If exit 0 PAIR=claude+codex. Else → PAIR=claude+claude.
18
10
 
19
- **Step 3 — Gate passed. Enable duo.**
11
+ **Step 3 — Enable duo with pair.**
20
12
  ```bash
21
- ~/.claude/scripts/duo-mode-write.sh on "<user's phrase that triggered enable>"
13
+ ~/.claude/scripts/duo-mode-write.sh on "<user's phrase that triggered enable>" "$PAIR"
22
14
  BADGE=$(~/.claude/scripts/duo-badge.sh)
23
15
  ```
24
16
 
25
- **Step 4 — Emit confirmation.**
17
+ **Step 4 — Emit confirmation tailored to pair.**
18
+
19
+ If PAIR == claude+codex:
26
20
  ```
27
- ⟡🔮↔🔮 MERLIN·DUO › Duo mode enabled.
21
+ ⟡🔮↔🔮 MERLIN·DUO › Duo mode enabled (Claude + Codex).
28
22
  • Parallel: planning, docs, code review, tests
29
23
  • Sequential: code write/modify (codex writes → claude reviews → decider gates)
30
24
  • Verification stays with Claude
@@ -33,7 +27,22 @@ BADGE=$(~/.claude/scripts/duo-badge.sh)
33
27
  Try: "plan the next phase" to see dual-planning.
34
28
  ```
35
29
 
36
- **Step 5 Codex-mode coexistence check.**
30
+ If PAIR == claude+claude:
31
+ ```
32
+ ⟡🔮↔🔮 MERLIN·DUO › Duo mode enabled (twin-Claude — Codex not installed).
33
+ Two Claude specialists tag-team your work:
34
+ • Parallel planning: merlin-planner + challenger-academic → arbiter
35
+ • Parallel review: code-review + merlin-reviewer → arbiter
36
+ • Parallel testing: tests-qa + merlin-edge-case-hunter → arbiter
37
+ • Sequential code: implementation-dev writes → code-review reviews → decider gates
38
+ • Verification stays with Claude
39
+ • Auto-expires in 24h
40
+ (Install Codex if you want claude+codex pairing instead.)
41
+ ```
42
+
43
+ **Step 5 — Codex-mode coexistence check (claude+codex pair only).**
44
+ Skip this step if PAIR == claude+claude.
45
+
37
46
  ```bash
38
47
  python3 -c "
39
48
  import json, os, sys
@@ -12,11 +12,13 @@ state_path = os.path.expanduser("~/.claude/merlin-state/duo-mode.json")
12
12
  try:
13
13
  data = json.load(open(state_path))
14
14
  except:
15
- data = {"enabled": False, "sinceISO": None, "lastToggleReason": None}
15
+ data = {"enabled": False, "sinceISO": None, "lastToggleReason": None, "pair": None}
16
16
 
17
17
  enabled = data.get("enabled", False)
18
18
  since_iso = data.get("sinceISO")
19
19
  reason = data.get("lastToggleReason") or "never enabled"
20
+ # Legacy state: if enabled but no pair field, default to claude+codex
21
+ pair = data.get("pair") or ("claude+codex" if enabled else None)
20
22
 
21
23
  age_str = ""
22
24
  status_label = "OFF"
@@ -30,6 +32,7 @@ if enabled and since_iso:
30
32
  if delta > timedelta(hours=24):
31
33
  expired = True
32
34
  status_label = "AUTO-EXPIRED"
35
+ pair = None
33
36
  else:
34
37
  status_label = "ON"
35
38
  total_s = int(delta.total_seconds())
@@ -37,18 +40,20 @@ if enabled and since_iso:
37
40
  except:
38
41
  expired = True
39
42
  status_label = "AUTO-EXPIRED"
43
+ pair = None
40
44
 
41
45
  print(f"status={status_label}")
42
46
  print(f"since={since_iso or 'n/a'}")
43
47
  print(f"age={age_str or 'n/a'}")
44
48
  print(f"reason={reason}")
45
49
  print(f"expired={expired}")
50
+ print(f"pair={pair or 'none'}")
46
51
  PYEOF
47
52
  ```
48
53
 
49
54
  **Step 2 — Check Codex install gate.**
50
55
  ```bash
51
- ~/.claude/scripts/duo-installed.sh 2>/dev/null && echo "gate=pass" || echo "gate=fail"
56
+ ~/.claude/scripts/codex-installed.sh 2>/dev/null && echo "gate=pass" || echo "gate=fail"
52
57
  ```
53
58
 
54
59
  **Step 3 — Parse duo-suppress.json.**
@@ -74,6 +79,7 @@ Use the values above to emit ONE of these formats:
74
79
  If status=ON:
75
80
  ```
76
81
  ⟡🔮↔🔮 MERLIN·DUO › Duo: ON · since {sinceISO} · age {hh:mm} · reason: {lastToggleReason}
82
+ Pair: {claude+codex|claude+claude}
77
83
  ```
78
84
 
79
85
  If status=OFF:
@@ -88,7 +94,8 @@ If status=AUTO-EXPIRED:
88
94
 
89
95
  Then append install gate and suppression lines:
90
96
  ```
91
- Codex install gate: ✓ pass (or fail — duo would silent-fallback to solo)
97
+ Codex install gate: ✓ pass (claude+codex pair available) [when gate=pass]
98
+ Codex install gate: ✗ fail (duo runs as twin-Claude pair) [when gate=fail]
92
99
  Session skip: {true|false}
93
100
  Suppressed intents: {N} (if N > 0, add: — run Skill("merlin:duo", args="unsuppress") to clear)
94
101
  Recently declined task hashes: {N}
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: templates/DEBUG.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD planning template
10
+ ---
11
+
1
12
  # Debug Template
2
13
 
3
14
  Template for `.planning/debug/[slug].md` — active debug session tracking.
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: templates/UAT.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD planning template
10
+ ---
11
+
1
12
  # UAT Template
2
13
 
3
14
  Template for `.planning/phases/XX-name/{phase}-UAT.md` — persistent UAT session tracking.
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: templates/phase-prompt.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD planning template
10
+ ---
11
+
1
12
  # Phase Prompt Template
2
13
 
3
14
  Template for `.planning/phases/XX-name/{phase}-{plan}-PLAN.md` - executable phase plans optimized for parallel execution.
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: templates/project.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD planning template
10
+ ---
11
+
1
12
  # PROJECT.md Template
2
13
 
3
14
  Template for `.planning/PROJECT.md` — the living project context document.
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: templates/requirements.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD planning template
10
+ ---
11
+
1
12
  # Requirements Template
2
13
 
3
14
  Template for `.planning/REQUIREMENTS.md` — checkable requirements that define "done."
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: templates/roadmap.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD planning template
10
+ ---
11
+
1
12
  # Roadmap Template
2
13
 
3
14
  Template for `.planning/ROADMAP.md`.
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: templates/state.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD planning template
10
+ ---
11
+
1
12
  # State Template
2
13
 
3
14
  Template for `.planning/STATE.md` — the project's living memory.
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: templates/verification-report.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD planning template
10
+ ---
11
+
1
12
  # Verification Report Template
2
13
 
3
14
  Template for `.planning/phases/XX-name/{phase}-VERIFICATION.md` — phase goal verification results.
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: workflows/execute-phase.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD workflow pattern
10
+ ---
11
+
1
12
  <purpose>
2
13
  Execute all plans in a phase using wave-based parallel execution. Orchestrator stays lean by delegating plan execution to subagents.
3
14
  </purpose>
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: workflows/plan-phase.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD workflow pattern
10
+ ---
11
+
1
12
  <decimal_phase_numbering>
2
13
  Decimal phases enable urgent work insertion without renumbering:
3
14
 
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: workflows/progress.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD workflow pattern
10
+ ---
11
+
1
12
  <purpose>
2
13
  Check project progress, ensure backlog health, and route to next action.
3
14
 
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: workflows/resume-project.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD workflow pattern
10
+ ---
11
+
1
12
  <trigger>
2
13
  Use this workflow when:
3
14
  - Starting a new session on an existing project
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: workflows/verify-phase.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD workflow pattern
10
+ ---
11
+
1
12
  <purpose>
2
13
  Verify phase goal achievement through goal-backward analysis. Check that the codebase actually delivers what the phase promised, not just that tasks were completed.
3
14
 
@@ -1,3 +1,14 @@
1
+ ---
2
+ provenance:
3
+ upstream: gsd-build/get-shit-done
4
+ upstream_path: workflows/verify-work.md
5
+ upstream_commit: 9045c81
6
+ license: MIT
7
+ license_verification: confirmed
8
+ adapted: "2026-03-14"
9
+ changes: adapted from GSD workflow pattern
10
+ ---
11
+
1
12
  <purpose>
2
13
  Validate built features through conversational testing with persistent state. Creates UAT.md that tracks test progress, survives /clear, and feeds gaps into /merlin:plan-phase --gaps.
3
14
 
@@ -1 +1,35 @@
1
- MANDATORY: You are Merlin, an orchestrator. Before processing any user request, call merlin_get_selected_repo, merlin_get_project_status, merlin_get_rules and merlin_get_brief. Route ALL implementation work to specialist agents via Skill("merlin:workflow") or merlin_route(). NEVER write, edit, or debug code yourself. Prefix every action with the badge from ~/.claude/scripts/duo-badge.sh (solo: ⟡🔮 MERLIN ›, duo: ⟡🔮↔🔮 MERLIN·DUO ›). Run independent agents in PARALLEL. Before editing code, call merlin_get_context first.
1
+ MANDATORY: You are Merlin, an orchestrator. Before processing any user request, call merlin_get_selected_repo, merlin_get_project_status, merlin_get_rules and merlin_get_brief. Route ALL implementation work to specialist agents via Skill("merlin:workflow") or merlin_route(). NEVER write, edit, or debug code yourself. Prefix every action with the badge from ~/.claude/scripts/duo-badge.sh (solo: ⟡🔮 MERLIN ›, duo: ⟡🔮↔🔮 MERLIN·DUO ›). Run independent agents in PARALLEL. Before editing code, call merlin_get_context first.
2
+
3
+ ## Duo mode (codex+codex)
4
+
5
+ When `~/.claude/scripts/duo-mode-read.sh` outputs `enabled` AND `~/.claude/scripts/duo-mode-read.sh --pair` outputs `codex+codex`, you orchestrate two Codex instances per task instead of one.
6
+
7
+ **Toggle from chat:**
8
+ - "duo on" → run `~/.claude/scripts/duo-mode-write.sh on "<user phrase>"` (auto-detects codex+codex via MERLIN_RUNTIME), then announce: "⟡🔮↔🔮 MERLIN·DUO › Duo enabled (codex+codex). Two Codex specialists tag-team your work."
9
+ - "duo off" → run `~/.claude/scripts/duo-mode-write.sh off "<reason>"`, announce: "⟡🔮 MERLIN › Duo off."
10
+ - "duo status" → run `duo-mode-read.sh` and `--pair`, report state and pair.
11
+
12
+ **Parallel tasks (planning, code review, tests, docs)** — spawn two `codex exec` subprocesses concurrently, then merge:
13
+ - Planning: `codex exec ... codex-planner persona` and `~/.claude/scripts/codex-as.sh challenger-academic ...` in parallel. Each writes to its own file (`<phase-dir>/PLAN-CODEX-A.md` and `PLAN-CODEX-B.md`). Then `~/.claude/scripts/codex-as.sh challenger-arbiter` synthesizes to `PLAN-FINAL.md`.
14
+ - Code review: `codex-code-review` and `codex-as.sh merlin-reviewer` in parallel; you merge their findings inline.
15
+ - Testing: `codex-as.sh tests-qa` and `codex-as.sh merlin-edge-case-hunter` in parallel; merge inline.
16
+ - Documentation: `codex-as.sh docs-keeper` solo — only one doc specialist exists.
17
+
18
+ **Sequential tasks (code write/modify)** — strict author → reviewer → gate, but the gate is YOU (the orchestrator), not a separate agent:
19
+ 1. Author writes diff: `~/.claude/scripts/codex-as.sh implementation-dev "<task>"`
20
+ 2. Reviewer reviews: `~/.claude/scripts/codex-as.sh code-review "<diff or path>"`
21
+ 3. YOU consume the reviewer's findings and decide approve/revise/reject inline — do not delegate this gate to another spawn. (The dedicated `reviewer-decider` is Claude-only by safety design and isn't available to you.)
22
+ 4. On revise: re-run author once with required_changes, then re-review. Max 2 iterations. On second revise or reject, stop and report.
23
+
24
+ **Run-parallel pattern (bash):**
25
+ ```
26
+ ( codex exec "..." > a.out 2>&1 ) &
27
+ ( codex exec "..." > b.out 2>&1 ) &
28
+ wait
29
+ ```
30
+
31
+ **Verification stays your job.** Codex specialists may execute, but you certify by running tests/builds yourself before declaring done.
32
+
33
+ **Badge:** Always prefix every action with `⟡🔮↔🔮 MERLIN·DUO ›` when duo is on, `⟡🔮 MERLIN ›` when off.
34
+
35
+ TASK OPTIMIZATION: Before EVERY routing decision (workflows, agents, specialists), run ~/.claude/scripts/task-optimize.sh --task "<user text>". It returns {intent, skills[], agent, score, matched_phrases}. If score>=25, ALWAYS announce "⟡🔮 MERLIN › Intent: <X>. Loading <skills> + routing to <agent>." then route with skills prepended to context. Registry: ~/.claude/merlin/skills/TASK-OPTIMIZER.json. Slash commands /merlin:optimize, /merlin:design-audit, /merlin:polish, /merlin:redesign wrap common flows.
@@ -93,6 +93,25 @@ Codex can embody these roles via `codex-as.sh`:
93
93
 
94
94
  Any other specialist stays with Claude.
95
95
 
96
+ ## Universal Task Optimization (Codex)
97
+
98
+ When dispatching to `codex-implementer` or any `codex-as.sh <specialist>`, ALSO run the universal optimizer first:
99
+
100
+ ```
101
+ bash ~/.claude/scripts/task-optimize.sh --task "<text>"
102
+ ```
103
+
104
+ If `score >= 25`:
105
+ 1. Read each matched skill file (`~/.claude/merlin/skills/<id>.md` or external path)
106
+ 2. PREPEND the skill bodies to the codex-as.sh prompt body (BEFORE the specialist's own system prompt)
107
+ 3. Optionally use the optimizer's recommended agent as the specialist (override caller's choice if not user-specified)
108
+
109
+ This is the Codex-side mirror of the Claude-side `merlin-routing.md` § Universal Task Optimization.
110
+
111
+ If skill files are missing locally, run `bash ~/.claude/scripts/install-design-skills.sh` first.
112
+
113
+ The registry of all skill→agent pairings lives at `~/.claude/merlin/skills/TASK-OPTIMIZER.json`. When the optimizer returns skills for a task, `codex-as.sh` automatically prepends them to the specialist's system prompt.
114
+
96
115
  ## Code Review Routing
97
116
 
98
117
  Natural language intent: "code review" / "production readiness review" / "review the codebase" / "check for AI smells" / "review this folder" / "do a full review"