$npx -y skills add witt3rd/oh-my-hermes --skill omh-ralplanPlanner+Architect+Critic→consensus impl plan (≤3 rounds)
| 1 | # OMH Ralplan — Consensus Planning |
| 2 | |
| 3 | ## When to Use |
| 4 | |
| 5 | - Before implementing any feature that touches multiple files or components |
| 6 | - When architectural decisions need validation from multiple perspectives |
| 7 | - When you need a plan that's been stress-tested against adversarial critique |
| 8 | - When the user says: "plan this", "consensus plan", "ralplan", "let's think this through" |
| 9 | |
| 10 | ## When NOT to Use |
| 11 | |
| 12 | - Trivial single-file changes (just do them) |
| 13 | - Tasks where the approach is obvious and low-risk |
| 14 | - When the user explicitly wants to skip planning |
| 15 | |
| 16 | ## Prerequisites |
| 17 | |
| 18 | - A clear goal or specification (if ambiguous, use `omh-deep-interview` first) |
| 19 | - The `delegate_task` tool must be available |
| 20 | |
| 21 | ## Procedure |
| 22 | |
| 23 | ### Phase 0: Context Gathering |
| 24 | |
| 25 | Before planning, gather project context: |
| 26 | 1. Read relevant files to understand the codebase structure |
| 27 | 2. Identify existing patterns, conventions, and constraints |
| 28 | 3. Summarize context into a brief (~500 words) that all agents will receive |
| 29 | |
| 30 | ### Phase 1: Planning Loop (max 3 rounds) |
| 31 | |
| 32 | **Round 1 — All Sequential** (Planner → Architect → Critic): |
| 33 | |
| 34 | **Step 1 — Planner** (single delegate_task) |
| 35 | ``` |
| 36 | delegate_task( |
| 37 | goal="[omh-role:planner] Create an implementation plan for: {goal}\n\n{detailed_requirements}", |
| 38 | context="# Project Context\n\n{project_context}" |
| 39 | ) |
| 40 | ``` |
| 41 | The goal should include the full specification — don't assume the subagent knows anything. |
| 42 | |
| 43 | **Step 2 — Architect Review** (single delegate_task) |
| 44 | ``` |
| 45 | delegate_task( |
| 46 | goal="[omh-role:architect] Review this implementation plan for architectural soundness:\n\nPLAN:\n{planner_output}", |
| 47 | context="# Project Context\n\n{project_context}" |
| 48 | ) |
| 49 | ``` |
| 50 | |
| 51 | **Step 3 — Critic Challenge** (single delegate_task) |
| 52 | ``` |
| 53 | delegate_task( |
| 54 | goal="[omh-role:critic] Critically challenge this plan and architect review:\n\nPLAN SUMMARY:\n{plan_summary}\n\nARCHITECT REVIEW:\n{architect_verdict_and_concerns}", |
| 55 | context="# Project Context\n\n{project_context}" |
| 56 | ) |
| 57 | ``` |
| 58 | |
| 59 | **Step 4 — Consensus Check** |
| 60 | Check all three verdicts: |
| 61 | - If ALL three are APPROVE → consensus reached, proceed to output |
| 62 | - If any is REQUEST_CHANGES → collect all feedback, proceed to Round 2 |
| 63 | - If any is REJECT → output concerns and ask user whether to continue |
| 64 | |
| 65 | **Round 2+ — Planner Revises, Architect + Critic Re-review in Parallel**: |
| 66 | |
| 67 | When looping, the Planner must receive ALL feedback (Architect concerns + Critic critical issues + warnings). Be explicit about what needs to change — include the specific concern IDs (A1, C1, W1, etc.). |
| 68 | |
| 69 | For Round 2 re-reviews, Architect and Critic are independent — run them in parallel via batch delegate_task: |
| 70 | ``` |
| 71 | delegate_task(tasks=[ |
| 72 | {goal: "[omh-role:architect] Re-review revised plan:\n{revised_plan}\n\nPrior concerns: {architect_concerns}", context: "{project_context}"}, |
| 73 | {goal: "[omh-role:critic] Re-review revised plan:\n{revised_plan}\n\nPrior concerns: {critic_concerns}", context: "{project_context}"} |
| 74 | ]) |
| 75 | ``` |
| 76 | This saves significant time (Round 2 re-reviews ran 14 seconds parallel vs ~120 seconds sequential). |
| 77 | |
| 78 | ### Phase 2: Output |
| 79 | |
| 80 | Write the consensus plan to `.omh/plans/ralplan-{slug}.md` containing: |
| 81 | 1. Consensus status (rounds, verdicts per round) |
| 82 | 2. Revision summary (what changed from feedback) |
| 83 | 3. The final plan (tasks with dependencies, complexity, acceptance criteria) |
| 84 | 4. Risks and open questions |
| 85 | 5. Round count and consensus status |
| 86 | |
| 87 | Use a descriptive slug, not a timestamp: `ralplan-deep-interview-consensus.md` not `ralplan-20260407.md`. |
| 88 | |
| 89 | Also write a summary to the user with the key design decisions that emerged from the debate. |
| 90 | |
| 91 | ## State Management |
| 92 | |
| 93 | State is per-instance, keyed on the plan slug (`instance_id="{slug}"`). |
| 94 | Multiple ralplan sessions on different goals can run concurrently. |
| 95 | |
| 96 | If the `omh` plugin is available, use it for state: |
| 97 | ``` |
| 98 | omh_state(action="write", mode="ralplan", instance_id="{slug}", data={ |
| 99 | "goal": "...", "round": 1, |
| 100 | "phase": "planner|architect|critic|complete", |
| 101 | "consensus": false, "plan_file": ".omh/plans/ralplan-{slug}.md" |
| 102 | }) |
| 103 | ``` |
| 104 | |
| 105 | If the plugin is not available, write `.omh/state/ralplan--{slug}.json` manually. |
| 106 | |
| 107 | If a ralplan session is interrupted, list active instances and resume from the |
| 108 | last completed phase: |
| 109 | ``` |
| 110 | listed = omh_state(action="list_instances", mode="ralplan") |
| 111 | state = omh_state(action="read", mode="ralplan", instance_id="{slug}") |
| 112 | ``` |
| 113 | |
| 114 | > **Singleton fallback (legacy).** Omitting `instance_id` writes |
| 115 | > `.omh/state/ralplan-state.json`. Acceptable only when running one |
| 116 | > ralplan at a time. |
| 117 | |
| 118 | ## Deliberate Mode (--deliberate) |
| 119 | |
| 120 | When the user requests deliberate mode or uses "deliberate", "ADR", or "decision record", the Architect's output should follow Architecture Decision Record (ADR) format. Load `references/adr-template.md` for the template. |
| 121 | |
| 122 | ## Pitfalls |
| 123 | |
| 124 | - **Use |