packages/shared-skills/skills/start-work/SKILL.md
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.
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.
$start-work [plan-name] [--worktree <absolute-path>]
plan-name is optional. It may be a full or partial file stem under .omo/plans/.--worktree is optional. Use it only when the user explicitly asks to work in a separate git worktree..omo/boulder.json if it exists..omo/plans/.plan-name was provided, select the matching plan.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.
## TODOs or ## Final Verification Wave.spawn_agent; serialize only when one sub-task has a named dependency on another.Each sub-task message must include:
curl, send-keys, page.click, payload, selectors, and the binary observable that decides PASS/FAIL), not "verify it works":
curl -i against the live endpoint.tmux session driven with send-keys, dumped via capture-pane.Apply ultraqa's 9 adversarial classes where relevant to each checkbox: malformed input, prompt injection, cancel/resume, stale state, dirty worktree, hung or long commands, flaky tests, misleading success output, repeated interruptions. A checkbox whose behavior is user-visible MUST probe every class that plausibly applies; record which classes were exercised and which were ruled not-applicable with a one-line reason.
For each checkbox, complete all five gates before marking it done:
Append evidence to .omo/start-work/ledger.jsonl using one JSON object per line. Include at least event, plan, task, session_id, commands, artifact, adversarial_classes, and cleanup fields. adversarial_classes lists each probed class with its observable result and each ruled-out class with a one-line reason.
Only after verification passes:
- [ ] to - [x].task-completed ledger entry.When all top-level checkboxes in ## TODOs and ## Final Verification Wave are complete:
.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.ORCHESTRATION COMPLETE block with the plan path, verification commands, artifacts, and cleanup receipts.--dry-run as completion evidence.codex:<session_id>.