- name
- plan-loop
- description
- Use when the user asks to plan a task before coding (e.g. "plan-loop", "/plan-loop", "plan this out first"). Draft a detailed plan, cross-review it with Claude, triage skeptically, iterate, then gate for sign-off.
- metadata
- {"short-description":"Plan → cross-review with Claude → triage → gate"}
# Plan Loop (Codex)
Settle a plan before any code, Codex-side. Same workflow as Claude's
`/plan-loop`.
**Canonical procedure:** read `~/.codex/skills/skyhook-skills-commands/plan-loop.md` and follow it
(detailed plan with `file:line` evidence + Certain/Confident/Needs-input tiers,
cross-review, triage, iterate, gate). **Codex translations:**
- **Cross-review the plan with the OTHER model — Claude, not Codex.** Hand the
plan to Claude via the **claude-review** skill, or directly. Prefer writing the
plan to a temp file and asking Claude to read it; that avoids argv quoting
issues with backticks, `$`, newlines, and very large plans:
```bash
# Plan text already written to /tmp/plan.md
claude -p "Read /tmp/plan.md and critique it as a skeptical senior engineer. Find flawed assumptions, missing steps, hidden complexity, simpler alternatives, and risks. Challenge it; don't rewrite it. Return ranked findings only." --model opus --permission-mode default --allowedTools Read Grep Glob Bash --no-session-persistence --output-format stream-json --include-partial-messages --verbose
```
(Trivial plans skip this.) **`claude -p` needs Keychain access** — run it
escalated/unsandboxed (see the **claude-review** skill's auth note), or it
falsely reports "Not logged in" from inside Codex's sandbox. Use the streamed
JSON to monitor progress; plain `claude -p` buffers until the final answer and
can look hung during a long critique. Do **not** interrupt just because no
final prose has appeared while `tool_use`, `status`, or `thinking_tokens`
events are still arriving. Triage the final `result` text, not the JSON event
noise.
- **Triage Claude's critique inline** — never auto-accept it; verify each point
against the actual code, integrate the valid ones, reject weak ones with a
stated reason. Cap at 2 cross-review cycles.
- **Gate:** default mode **stops for sign-off** before coding; `--auto` resolves
Needs-input with best judgment, logs each call to `NOTES.md`, and proceeds —
except a ceiling decision (prod/deploy/data-migrations · external-publish/money
· security/auth/secrets · breaking-API/destructive-file-ops) stops regardless.
Narrate phases with the glyph-tagged banners and close with the short summary
ledger defined in the canonical file. When invoked by the **autodev** skill, the
approved/assumed plan flows straight into implementation.
View on GitHub