refactor
Codex Harness Tool Compatibility
This skill may include examples copied from the OpenCode harness. In Codex, do not call OpenCode-only tools such as call_omo_agent(...), task(...), background_output(...), or team_*(...) literally. Translate those examples to Codex native tools:
| OpenCode example | Codex tool to use |
|---|---|
call_omo_agent(subagent_type="explore", ...) |
spawn_agent(agent_type="explorer", task_name="...", message="...", fork_turns="none") |
call_omo_agent(subagent_type="librarian", ...) |
spawn_agent(agent_type="librarian", task_name="...", message="...", fork_turns="none") |
task(subagent_type="plan", ...) |
spawn_agent(agent_type="plan", task_name="...", message="...", fork_turns="none") |
task(subagent_type="oracle", ...) for final verification |
spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...", fork_turns="none") |
task(category="...", ...) for implementation or QA |
spawn_agent(agent_type="worker", task_name="...", message="...", fork_turns="none") |
background_output(task_id="...") |
wait_agent(...) for mailbox signals; after a timeout, run one list_agents check for the named child if reassurance is needed |
team_*(...) |
Use Codex native subagents plus send_message, followup_task, wait_agent, and close_agent |
Codex full-history forks inherit the parent agent type, model, and reasoning effort, so role-specific spawns with agent_type must use a non-full-history fork mode such as fork_turns="none". Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's message. If a code block below conflicts with this section, this section wins.
For work likely to exceed one wait cycle, require the child to send WORKING: <task> - <current phase> before long passes and BLOCKED: <reason> only when progress stops. A wait_agent timeout only means no new mailbox update arrived. Treat a running child or latest WORKING: message as alive. Do not use list_agents as a polling loop. Fallback only when the child is completed without the deliverable, ack-only after followup, explicitly BLOCKED:, or no longer running.
export const REFACTOR_TEMPLATE = `# Intelligent Refactor Command