Codex Workflow

This document records the closest practical translation of the repository's Claude Code workflow into a Codex workflow.

It is not a parity claim. The current workflow in CLAUDE.md is still the canonical Claude Code workflow. Codex needs a different operating model because skills cannot force the same plan-mode and clear-context transitions.

Core Constraint

Claude Code workflow benefits from tool-level support for:

Codex does not currently expose that same end-to-end flow from skills alone.

In this Codex environment:

So the Codex workflow must rely on:

Design Goal

If you care about quality under low context pressure, the Codex workflow should optimize for:

  1. compressing context into files
  2. stopping after planning
  3. starting fresh threads for implementation

The key artifact is tasks/todo.md. It replaces much of the workflow glue that Claude Code provides at the tool level.

File Contract

These files are the shared workflow surface:

Do not rely on chat history as the source of truth when these files can carry the state.

tasks/todo.md is the only default execution queue. tasks/manual-todo.md is only for human action tied to automated work. Non-blocking future measurements, condition-gated records, and recurring operational checks should stay out of the execution queue unless they are explicitly promoted into concrete build work.

Project Packs

Codex base skills are intentionally domain-neutral. Business-app, game, and devtool workflows are enabled per project with:

npx skillpacks install <pack-or-skill>

The pack installer writes .agents/project.json and local .codex/skills/* managed skill roots. A pack name enables every skill in that pack; a skill name installs only that single skill and records it under enabled_skills. If local skill discovery is unavailable in a Codex session, use $init-agentic-skills or $research-roadmap as the launcher and read the enabled pack files from packs/<pack>/codex. Pack refresh recreates managed skill roots; it does not reload the active Codex process, so start a fresh CLI session after pack changes if the changed skills are not visible.

Running $init-agentic-skills with no arguments remains the Codex bootstrap path. If .agents/project.json exists, it refreshes local skill roots from that committed project designation. If the file is missing, Codex inspects the codebase, recommends a pack, and presents a text-based Pack Decision Checkpoint. The checkpoint is the Codex stand-in for Claude's AskUserQuestion flow: Codex shows numbered choices and waits for an explicit reply before installing the selected pack; use npx skillpacks install <pack...> for explicit shell installs.

Default Codex Cycle

For non-trivial work, the default Codex cycle should be:

  1. Planning thread
  2. Approval in normal chat
  3. Stop
  4. Fresh execution thread
  5. Verify and compress state
  6. Stop or start a new planning thread

That is the manual replacement for Claude Code's plan-mode-first workflow with a clear-context implementation handoff.

Skill Translation

In this document, Codex skill invocations use the native $skill form.

$spec-interview

Claude Code

Codex

Manual gap

$roadmap

Claude Code

Codex

Manual gap

$plan-phase

Claude Code

Codex

Manual gap

$exec

Claude Code

Codex

Manual gap

Recommended Codex usage

$ship

Claude Code

Codex

Manual gap

Recommended Codex usage

$ship-end

Claude Code

Codex

Manual gap

This skill ports well because it already depends on repo state more than tool state.

$migrate, $decommission, $scaffold

Claude Code

Codex

Manual gap

Recommended Codex usage

  1. planning/compression
  2. fresh-thread execution

PoketoWork Kanban Commands

PoketoWork kanban commands such as $exec-kanban, $ship-kanban, and $ship-end-kanban are hibernated while Poketo.work is being rebuilt. Use the base $exec, $ship, and $ship-end routes unless the kanban packs are later reactivated with stable service/API behavior, a known auth contract, and updated smoke tests.

Manual Gaps Summary

These are the main workflow features that Claude Code has and Codex currently does not replicate from skills alone:

The manual replacements are:

1. $exec uses implicit approval

Codex should still present the plan before implementation, then proceed by default for $exec. Ask explicitly only for separate safety decisions such as destructive commands, production deploys, paid/external account actions, credential or secret handling beyond the project contract, execution-profile downgrades, blockers, or material scope changes.

2. tasks/todo.md must be execution-ready

Each active step should include:

If a fresh thread cannot execute from the file, the plan is not finished.

Deferred task surfaces are advisory by default:

3. Fresh threads are optional, not required

Use a fresh thread when the work is intentionally being split across sessions or the context has become noisy. Otherwise, $exec can execute and ship in-thread.

4. Execution threads should read minimal context

Start with:

Avoid re-reading the whole roadmap or spec set unless blocked.

5. run should usually leave behind clean shipped state

After execution, leave behind clean repo state:

Claude Code to Codex Translation

If you are used to this Claude Code rhythm:

  1. $idea-scope-brief
  2. npx skillpacks install business-research for business/product concepts
  3. $customer-discovery
  4. $competitive-analysis
  5. $journey-map
  6. $positioning
  7. $user-flow-map
  8. $ui-interview --requirements-only
  9. $ux-variations --layout-mode
  10. $logic-wiring
  11. $uat --variant-evaluation
  12. $consolidate-prototypes
  13. $research-roadmap --post-prototype
  14. $spec-interview
  15. $research-roadmap --post-spec
  16. $roadmap
  17. $plan-phase (seeded by $roadmap; rerun only for later phases)
  18. $exec
  19. $ship
  20. $ship-end when wrapping an off-script or partial session
  21. $pmf-assessment (post-launch)

Optional detours: $value-prop-canvas when solution-customer fit is weak, disputed, or needs explicit scoring; $lean-canvas when revenue, channels, cost, defensibility, or unfair-advantage assumptions are material risks; lifecycle stage maps when onboarding, conversion, transaction, retention, expansion, or stage metrics would change UX/prototype choices. Use $hook-model after $journey-map only when consumer/PLG-style repeat use, habit formation, engagement loops, retention triggers, saved state, social rewards, or investment compounding are central to product value; route to npx skillpacks install business-growth first if needed. For B2B, enterprise, infrastructure, transactional, or naturally infrequent products, skip $hook-model and prefer $lifecycle-metrics or $metrics. Pricing/GTM detours such as $monetization and $gtm are also trigger-driven, not mandatory post-spec work.

The closest Codex translation is:

  1. $idea-scope-brief
  2. npx skillpacks install business-research for business/product concepts
  3. $customer-discovery
  4. $competitive-analysis
  5. $journey-map
  6. $positioning
  7. $user-flow-map
  8. $ui-interview --requirements-only
  9. $ux-variations --layout-mode
  10. $logic-wiring
  11. $uat --variant-evaluation
  12. $consolidate-prototypes
  13. $research-roadmap --post-prototype
  14. $spec-interview
  15. $research-roadmap --post-spec
  16. $roadmap
  17. $plan-phase (seeded by $roadmap; rerun only for later phases)
  18. $exec to present the plan, execute the work, ship it, and refresh tasks/todo.md
  19. repeat $exec for the next planned step
  20. use $ship only if finished work needs manual packaging
  21. use $ship-end to wrap an interrupted or partial session
  22. $pmf-assessment (post-launch)

The main manual additions are still plain-chat approval and the lack of a skill-controlled plan-mode boundary.

Bottom Line

Claude Code keeps part of the workflow state in the tool.

Codex should keep the workflow state in repo files and prefer in-thread execution for the normal $exec loop, using fresh threads when sessions are intentionally split or context has become noisy.

Do not aim for fake parity. The Codex workflow should be optimized for: