- name
- workflow
- description
- Run a Codex fan-out (review panel, adversarial verify, implement-then-verify) with the native runner, with no Claude agents in the loop. Use for "/codex-bridge:workflow <goal>".
- argument-hint
- <goal, e.g. "review my uncommitted changes from 3 angles" or "implement task.md and verify">
- disable-model-invocation
- true
- allowed-tools
- Bash(node:*), Bash(git:*), Read, Write, AskUserQuestion
Run a Codex fan-out with `scripts/codex-workflow.mjs`. Every stage is a Codex turn: nothing relays
output, a stage may run for as long as Codex needs, and finished read-only calls are cached for
`--resume`. See `${CLAUDE_PLUGIN_ROOT}/skills/using-codex/references/native-runner.md` for the API.
## Steps
1. Pick the bundled script that matches the goal, or write a short one against the same API:
- review from several angles: `workflows/review-panel.mjs` (`{lenses: [{name, taskFile}], votes?}`)
- "find bugs and make sure they are real": `workflows/adversarial.mjs` (`{scope, max?, votes?}`)
- "implement X and verify": `workflows/implement-verify.mjs` (`{taskFile, maxRounds?, cwd?}`)
2. Prepare inputs on disk first. Write one task file per lens or item under the run directory reported by `codex-bridge.mjs doctor --json` (`run_dir`) or the project's `.claude/` folder. Each file is a short brief: scope, angle, what counts as a finding. Pass the paths through `--args`.
3. Confirm with the user only if the run will make Codex write to the workspace; otherwise proceed.
4. Run it in the background:
```
node "${CLAUDE_PLUGIN_ROOT}/scripts/codex-workflow.mjs" run "${CLAUDE_PLUGIN_ROOT}/workflows/<script>.mjs" --args @args.json
```
with `run_in_background: true`. `status --last` is safe to call at any time.
5. When it returns, present `result` from the summary (or read `result_file`). A result with `ok: false` names the stage that failed; do not present it as a clean run. Read `out_file` paths only for items the user wants detail on.
When your own judgement belongs between Codex stages, run one workflow, read its `result.json`,
decide, and launch the next. That costs one Bash call per stage and no relaying agent.
View on GitHub