| name | plan |
| description | Generate a plan for how an agent should accomplish a complex coding task. Use when a user asks for a plan, and optionally when they want to save, find, read, update, or delete plan files in $CODEX_HOME/plans (default ~/.codex/plans). |
| metadata | [object Object] |
Plan
Overview
Draft structured plans that clarify intent, scope, requirements, action items, testing/validation, and risks.
Optionally, save plans to disk as markdown files with YAML frontmatter and free-form content. When drafting in chat, output only the plan body without frontmatter; add frontmatter only when saving to disk. Only write to the plans folder; do not modify the repository codebase.
This skill can also be used to draft codebase or system overviews.
Core rules
- Resolve the plans directory as
$CODEX_HOME/plansor~/.codex/planswhenCODEX_HOMEis not set. - Create the plans directory if it does not exist.
- Never write to the repo; only read files to understand context.
- Require frontmatter with only
nameanddescription(single-line values) for on-disk plans. - When presenting a draft plan in chat, omit frontmatter and start at
# Plan. - Enforce naming rules: short, lower-case, hyphen-delimited; filename must equal
<name>.md. - If a plan is not found, state it clearly and offer to create one.
- Allow overview-style plans that document flows, architecture, or context without a work checklist.
Decide the task
- Find/list: discover plans by frontmatter summary; confirm if multiple matches exist.
- Read/use: validate frontmatter; present summary and full contents.
- Create: inspect repo read-only; choose plan style (implementation vs overview); draft plan; write to plans directory only.
- Update: load plan; revise content and/or description; preserve frontmatter keys; overwrite the plan file.
- Delete: confirm intent, then remove the plan file if asked.
Plan discovery
- Prefer
scripts/list_plans.pyfor quick summaries. - Use
scripts/read_plan_frontmatter.pyto validate a specific plan. - If name mismatches filename or frontmatter is missing fields, call it out and ask whether to fix.
Plan creation workflow
- Scan context quickly: read README.md and obvious docs (docs/, CONTRIBUTING.md, ARCHITECTURE.md); skim likely touched files; identify constraints (language, frameworks, CI/test commands, deployment).
- Ask follow-ups only if blocked: at most 1-2 questions, prefer multiple-choice. If unsure but not blocked, state assumptions and proceed.
- Identify scope, constraints, and data model/API implications (or capture existing behavior for an overview).
- Draft either an ordered implementation plan or a structured overview plan with diagrams/notes as needed.
- Immediately output the plan body only (no frontmatter), then ask the user if they want to 1. Make changes, 2. Implement it, 3. Save it as per plan.
- If the user wants to save it, prepend frontmatter and save the plan under the computed plans directory using
scripts/create_plan.py.
Plan update workflow
- Re-read the plan and related code/docs before updating.
- Keep the plan name stable unless the user explicitly wants a rename.
- If renaming, update both frontmatter
nameand filename together.
Scripts (low-freedom helpers)
Create a plan file (body only; frontmatter is written for you). Run from the plan skill directory:
python ./scripts/create_plan.py \
--name codex-rate-limit-overview \
--description "Scope and update plan for Codex rate limiting" \
--body-file /tmp/plan-body.md
Read frontmatter summary for a plan (run from the plan skill directory):
python ./scripts/read_plan_frontmatter.py ~/.codex/plans/codex-rate-limit-overview.md
List plan summaries (optional filter; run from the plan skill directory):
python ./scripts/list_plans.py --query "rate limit"
Plan file format
Use one of the structures below for the plan body. When drafting, output only the body (no frontmatter). When saving, prepend this frontmatter:
---
name: <plan-name>
description: <1-line summary>
---
Implementation plan body template
# Plan
<1-3 sentences: intent, scope, and approach.>
## Requirements
- <Requirement 1>
- <Requirement 2>
## Scope
- In:
- Out:
## Files and entry points
- <File/module/entry point 1>
- <File/module/entry point 2>
## Data model / API changes
- <If applicable, describe schema or contract changes>
## Action items
[ ] <Step 1>
[ ] <Step 2>
[ ] <Step 3>
[ ] <Step 4>
[ ] <Step 5>
[ ] <Step 6>
## Testing and validation
- <Tests, commands, or validation steps>
## Risks and edge cases
- <Risk 1>
- <Risk 2>
## Open questions
- <Question 1>
- <Question 2>
Overview plan body template
# Plan
<1-3 sentences: intent and scope of the overview.>
## Overview
<Describe the system, flow, or architecture at a high level.>
## Diagrams
<Include text or Mermaid diagrams if helpful.>
## Key file references
- <File/module/entry point 1>
- <File/module/entry point 2>
## Auth / routing / behavior notes
- <Capture relevant differences (e.g., auth modes, routing paths).>
## Current status
- <What is live today vs pending work, if known.>
## Action items
- None (overview only).
## Testing and validation
- None (overview only).
## Risks and edge cases
- None (overview only).
## Open questions
- None.
Writing guidance
- Start with 1 short paragraph describing intent and approach.
- Keep action items ordered and atomic (discovery -> changes -> tests -> rollout); use verb-first phrasing.
- Scale action item count to complexity (simple: 1-2; complex: up to about 10).
- Include file/entry-point hints and concrete validation steps where useful.
- Always include testing/validation and risks/edge cases in implementation plans; include safe rollout/rollback when relevant.
- Use open questions only when necessary (max 3).
- Avoid vague steps, micro-steps, and code snippets; keep the plan implementation-agnostic.
- For overview plans, keep action items minimal and set non-applicable sections to "None."