Ports the OpenCode /start-work flow onto Codex as a discoverable skill. The skill drives plan selection, Boulder state with codex:<session_id> prefixed ids, worktree binding, parallel spawn_agent sub-tasks with 6-section prompts, 4-channel Manual-QA evidence (HTTP / tmux / browser / computer use), ledger append at .omo/start-work/ledger.jsonl, and a 4-phase verification gate. Pairs with the start-work-continuation Codex Stop / SubagentStop hook component that re-injects continuation while boulder.json shows incomplete work for the active codex: session. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
5.9 KiB
name, description
| name | description |
|---|---|
| start-work | Execute a Prometheus work plan in Codex with Boulder state, evidence ledger updates, worktree discipline, parallel subagents, and Stop-hook continuation. Use after planning when the user says start work, execute plan, continue plan, resume plan, or asks to run a .omo/plans plan. |
Codex Harness Tool Compatibility
This skill ports the OpenCode /start-work flow onto Codex. Any OpenCode-only tool name in an inherited example must be translated to its Codex equivalent:
| OpenCode example | Codex tool to use |
|---|---|
task(subagent_type="explore", ...) |
spawn_agent(agent_type="explorer", task_name="...", message="...") |
task(subagent_type="librarian", ...) |
spawn_agent(agent_type="librarian", task_name="...", message="...") |
task(subagent_type="plan", ...) |
spawn_agent(agent_type="plan", task_name="...", message="...") |
task(subagent_type="oracle", ...) for final verification |
spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...") |
task(category="...", ...) for implementation or QA |
spawn_agent(agent_type="worker", task_name="...", message="...") |
background_output(task_id="...") |
wait_agent(...) |
dispatchInternalPrompt(...) |
the Stop hook emits {"decision":"block","reason":"<prompt>"} automatically; see Continuation |
team_*(...) |
spawn_agent + send_message + followup_task + wait_agent + close_agent |
When translating load_skills=[...], name the skills inside the spawned agent's message. If a code block below conflicts with this section, this section wins.
start-work
Execute a Prometheus work plan until every top-level checkbox is complete. This skill pairs with the Codex Stop / SubagentStop continuation hook in components/start-work-continuation, which re-injects the next turn while .omo/boulder.json says the current codex:<session_id> still has unchecked plan work.
Usage
$start-work [plan-name] [--worktree <absolute-path>]
plan-nameis optional. It may be a full or partial file stem under.omo/plans/.--worktreeis optional. Use it only when the user explicitly asks to work in a separate git worktree.
Phase 1: Select the plan
- Read
.omo/boulder.jsonif it exists. - List Prometheus plan files under
.omo/plans/. - If
plan-namewas provided, select the matching plan. - If exactly one active or paused Boulder work exists for this session, resume it.
- If no active work exists and exactly one plan exists, select it.
- If multiple plans remain possible, ask one focused selection question.
Phase 2: Create or update Boulder state
Write .omo/boulder.json before implementation starts. Session ids must be prefixed with codex: so the continuation hook can identify its own session.
{
"schema_version": 2,
"active_work_id": "<work-id>",
"works": {
"<work-id>": {
"work_id": "<work-id>",
"active_plan": ".omo/plans/<plan-name>.md",
"plan_name": "<plan-name>",
"session_ids": ["codex:<session_id>"],
"status": "active",
"worktree_path": null
}
}
}
If --worktree is set, verify the path with git worktree list --porcelain or create it with git worktree add <path> <branch-or-HEAD>, then store the absolute path as worktree_path. All edits, commands, tests, and evidence capture must run inside that worktree.
Phase 3: Execute the next checkbox
- Read the full selected plan.
- Find the first unchecked column-0 checkbox in
## TODOsor## Final Verification Wave. - Ignore nested checkboxes under acceptance criteria, evidence, and definition-of-done sections.
- Decompose that checkbox into atomic sub-tasks.
- Dispatch independent sub-tasks in parallel with
spawn_agent; serialize only when one sub-task has a named dependency on another.
Each sub-task message must include:
- Goal and exact files or directories in scope.
- Required red test or failing reproduction before production changes.
- Implementation constraints from the plan and project rules.
- Automated verification commands to run.
- One Manual-QA channel: HTTP call, tmux session, browser use, or computer use.
- Required artifact path and cleanup receipt.
Phase 4: Verify and record evidence
For each checkbox, complete all four gates before marking it done:
- Plan reread: confirm the checkbox and acceptance criteria.
- Automated verification: run tests, typecheck, lint, build, or the plan-specific equivalent.
- Manual-QA channel: capture a real artifact, not a dry-run claim.
- Cleanup: close temporary processes, tmux sessions, browser contexts, ports, containers, and temp directories.
Append evidence to .omo/start-work/ledger.jsonl using one JSON object per line. Include at least event, plan, task, session_id, commands, artifact, and cleanup fields.
Phase 5: Mark progress
Only after verification passes:
- Edit the plan checkbox from
- [ ]to- [x]. - Re-read the plan and confirm the remaining count decreased.
- Append a
task-completedledger entry. - Continue with the next checkbox. Do not ask whether to continue.
Completion
When all top-level checkboxes in ## TODOs and ## Final Verification Wave are complete:
- Run the plan's final verification commands.
- If worktree mode was used, sync
.omo/state back to the main repo, merge or hand off exactly as requested, and remove the worktree only after successful merge or explicit handoff. - Remove or mark the Boulder work as completed.
- Print an
ORCHESTRATION COMPLETEblock with the plan path, verification commands, artifacts, and cleanup receipts.
Hard rules
- No production change before a failing test or reproduction exists.
- No
--dry-runas completion evidence. - No tests-only completion claim. A Manual-QA artifact is required.
- No unprefixed session ids in Boulder state. Codex sessions are always
codex:<session_id>. - No stale-memory execution. The plan and ledger are the durable source of truth.