with one click
omh-autopilot
pipeline: interview→plan→execute→QA→verify (idea→code)
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
pipeline: interview→plan→execute→QA→verify (idea→code)
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Drive an omh-ralph run: dispatch, evidence, commit hygiene.
Execute one omh-ralph task: file-scope, commit, report.
Drive omh-ralplan: context package, rounds, distillation.
Drive omh-triage: when to invoke, how to run rounds.
Multi-role consensus triage of an issue backlog.
Socratic reqs interview; clarify vague/ambiguous goals
| name | omh-autopilot |
| description | pipeline: interview→plan→execute→QA→verify (idea→code) |
| version | 2.0.0 |
| metadata | {"hermes":{"requires_toolsets":["terminal","omh"],"tags":["autopilot","pipeline","autonomous","end-to-end","composition"],"category":"omh"}} |
omh plugin must be installed (~/.hermes/plugins/omh/)Each autopilot invocation reads state, does ONE unit of work, exits. The caller re-invokes. This preserves fresh context at every level — including during the ralph loop.
Invocation 1: Phase 0 — requirements (or skip)
Invocation 2: Phase 1 — planning (or skip)
Invocations 3-N: Phase 2 — ralph iterations (one per call)
Invocation N+1: Phase 3 — QA cycle [FRESH SESSION]
Invocation M: Phase 4 — validation round [FRESH SESSION]
Final: Phase 5 — cleanup → complete
See references/caller-examples.md for how to drive the loop.
Autopilot drives a goal through spec → plan → ralph → QA → validation.
Two autopilot sessions on the same goal would race on autopilot,
ralph, and ralph-tasks state simultaneously. Use per-instance state
instance_id in this order:
.omh/specs/{name}-spec.md, use
instance_id = "{name}"..omh/plans/ralplan-{slug}.md, use
instance_id = "{slug}".instance_id = kebab(goal)[:60].lock = omh_state(action="lock", mode="autopilot",
lock_key="{instance_id}",
session_id="{HERMES_SESSION_ID or uuid}",
holder_note="autopilot driving {goal_or_plan}")
On acquired=false, report held_by, offer wait/cancel/different
goal. Stale-pid auto-release applies.instance_id to every omh_state call in this invocation
(autopilot, ralph, ralph-tasks).instance_id in the delegation context so the ralph subagent
acquires mode="ralph" lock on the same slug.omh_state(action="unlock", mode="autopilot",
lock_key="{instance_id}",
session_id="{HERMES_SESSION_ID or uuid}")
Singleton fallback (legacy). Omitting
instance_idwrites.omh/state/autopilot-state.jsonand skips locking. Acceptable only when running one autopilot at a time.
state = omh_state(action="read", mode="autopilot", instance_id="{instance_id}")
context_checkpoint flag → if true, clear it and exit (phase boundary)state.stale = true → warn, offer fresh startpause_after_phase matches current completed phase → set phase="paused", exitWhen no autopilot state exists, detect artifacts:
.omh/specs/*-spec.md → create state at Phase 1.omh/plans/ralplan-*.md → create state at Phase 2omh_state(action="check", mode="ralph", instance_id="{instance_id}") → phase="complete") → create state at Phase 3Check for active ralph: omh_state(action="check", mode="ralph", instance_id="{instance_id}") → if active, warn about existing session.
omh_state(action="write", mode="autopilot", instance_id="{instance_id}", data={
"phase": "requirements", "goal": "...", "ralph_iteration": 0,
"qa_cycle": 0, "max_qa_cycles": 5, "validation_round": 0,
"max_validation_rounds": 3, "validation_verdicts": {},
"skip_qa": false, "skip_validation": false, "pause_after_phase": null
})
Goal: Ensure a confirmed spec exists.
.omh/specs/*-spec.md with status: confirmed → found? Set spec_file, advance to Phase 1, exitomh-deep-interview and follow it. This phase is interactive.phase: "planning", spec_file: "<path>". Exit.For fully autonomous runs: run omh-deep-interview separately first.
Goal: Ensure a consensus plan exists.
.omh/plans/ralplan-*.md → found? Set plan_file, advance to Phase 2, exitomh-ralplan, follow its procedure with the spec as inputphase: "execution", plan_file, ralph_iteration: 0, context_checkpoint: true. Exit.Each invocation performs exactly ONE ralph iteration:
delegate_task with the omh-ralph skill context:
delegate_task(goal="[omh-role:executor] Follow the omh-ralph skill procedure:
read state, pick the next incomplete task, execute it, verify, update state, exit.",
context="<current ralph state + plan file contents>")
ralph = omh_state(action="check", mode="ralph", instance_id="{instance_id}")
active=true → increment ralph_iteration, exit (caller re-invokes)phase="complete" → advance: phase: "qa", context_checkpoint: true, exitphase="blocked" → set autopilot phase: "blocked", report, exitEach invocation performs ONE QA cycle. Starts in fresh session (context_checkpoint).
If skip_qa: true → advance to Phase 4, exit.
evidence = omh_gather_evidence(commands=["<build>", "<test>", "<lint>"])
evidence.all_pass → advance: phase: "validation", context_checkpoint: true, exitqa_cycle. Check 3-strike on qa_error_history. If triggered → phase="blocked", exitqa_cycle > max_qa_cycles (default 5) → phase="blocked", exitEach invocation performs ONE validation round. Starts in fresh session.
If skip_validation: true → advance to Phase 5, exit.
evidence = omh_gather_evidence(commands=["<build>", "<test>"])
delegate_task(tasks=[
{goal: "[omh-role:architect] Architectural review:\n{spec + plan}", context: "{evidence}"},
{goal: "[omh-role:security-reviewer] Security review:\n{changed files list}", context: "{evidence}"},
{goal: "[omh-role:code-reviewer] Code quality review:\n{changed files list}", context: "{evidence}"}
])
validation_verdictsvalidation_round, exitvalidation_round > max_validation_rounds (default 3) → phase="blocked", exitphase: "complete" (safety — if interrupted, re-invocation retries cleanup)omh_state(action="clear", mode="autopilot", instance_id="{instance_id}")
omh_state(action="clear", mode="ralph", instance_id="{instance_id}")
omh_state(action="clear", mode="ralph-tasks", instance_id="{instance_id}")
.omh/logs/, .omh/plans/, .omh/specs/All state via omh_state tool. Atomic writes and staleness handled automatically.
omh_state(action="check", mode="autopilot", instance_id="{instance_id}")
→ {exists, active, phase, stale}
context_checkpoint.