원클릭으로
product-plan
Interactive planning session - create PRD and PROGRESS files for a feature
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Interactive planning session - create PRD and PROGRESS files for a feature
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Apply a Codex-only Belmont planning handoff packet after a plan-mode product-plan or tech-plan interview; write only the explicit .belmont files named in the packet without asking new planning questions.
Technical planning session - create detailed implementation spec from PRD
Claude Code only. Drive a single feature to completion by self-pacing /belmont:implement → verify → next → status until no pending milestones remain.
Auto debug loop — investigate, fix, verify using agent-dispatched pipeline
Manual debug loop with deep Belmont context and in-place spec reconciliation — user-verified fix + correct the specs that let the bug exist
Implement the next pending milestone from the PRD using the agent pipeline
| name | product-plan |
| description | Interactive planning session - create PRD and PROGRESS files for a feature |
| alwaysApply | false |
You are running an interactive planning session. Your goal is to work with the user to create a comprehensive PRD (Product Requirements Document) and PROGRESS tracking file.
This session requires ultrathink-level reasoning — deeply consider product edge cases, user needs, and architectural implications before proposing structure.
.belmont/ (PRD.md, PROGRESS.md, and feature directories).Codex exposes keyboard-navigable structured questions through plan-mode planning turns. If you are Codex and the structured question tool is unavailable in the current turn, STOP before asking any planning questions or editing files. Tell the user to restart this skill with:
/plan $belmont:product-plan <brief>
Do NOT fake the structured question flow with Markdown lists. The user must be able to navigate the pick-list with arrow keys.
This section is Codex-only. It does not apply to Claude Code, opencode, Cursor, Windsurf, Gemini, GitHub Copilot, Pi, or other agents that can both ask structured questions and write files in the same session.
If you are Codex in plan mode and file editing is unavailable or inappropriate for the current planning turn:
.belmont/ file contents or precise section updates.BELMONT_PLAN_PACKET for $belmont:codex-plan-apply.$belmont:codex-plan-apply
The packet must include every target .belmont/ path, each operation (create, replace, or update-section), complete content for creates/replacements, exact section content for updates, the commit message, and the next recommended Belmont prompt. Do not leave decisions only in chat.
Belmont's planning workflow splits concerns across two documents. Keeping the boundary clean prevents drift — the most common failure mode is PRD and TECH_PLAN disagreeing after tech-plan refinements, which confuses the implementation agent.
src/...) and directory structure<UniversityLogo> wrapper" or "use <Image> directly")Play vs PlayCircle from lucide-react)/\blse\b/i vs /lse/i)When a decision has both a product-visible invariant AND an implementation detail, split them:
/(\blse\b|london school of economics)/i — the \b word-boundary is what enforces the invariant."If the user volunteers an implementation idiom during product-plan ("just use <Image> directly"), record it as an open question for the tech-plan step — do NOT commit to it in the PRD. Tech-plan may well decide otherwise, and baking it into the PRD creates drift.
Milestones are the unit of execution for belmont auto. Each milestone runs in a single AI session inside an isolated worktree. Small milestones are load-bearing:
When new work is discovered during planning or review:
(depends: M<n>) when the new milestone genuinely builds on another — only when there is a real file/API/data dependency, not just "related topic."belmont auto can run them in parallel worktrees.The tech-plan step is responsible for keeping the PRD and PROGRESS in sync with its own decisions. Implementation agents read the PRD — if it disagrees with TECH_PLAN, the implementation will be confused or wrong.
Rules for updating PRD/PROGRESS from the tech-plan session:
See TECH_PLAN.md §<section>.## Clarifications section.(depends: ...) annotations on milestone headings in PROGRESS.md match the TECH_PLAN's §Implementation Order. Mismatches cause auto-mode to serialize work that could run in parallel, or vice versa.When you need to ask the user a question:
AskUserQuestion, or equivalent). This is NON-NEGOTIABLE when such a tool is available.(Recommended) when a recommendation is appropriate. Include a free-form "Type something" route and a "Chat about this" route when the structured tool supports those options./plan $belmont:product-plan <brief>/plan $belmont:tech-plan <brief or feature>Your question depth must match the shape of the work, not a template. A small well-defined change may need one or two questions. A large feature with many domains and open questions needs many rounds — possibly dozens. There is no round cap. Keep asking until every relevant aspect has been considered, every ambiguity resolved, and the user has explicitly confirmed nothing is missing.
Depth is driven by two forces, not by a tier:
A domain may take zero rounds if it's clearly out of scope, one round if the brief resolves it, or three or four rounds if each answer opens a new thread. Follow the work, don't ration it.
Before the first question, silently read the brief and consider:
Use this to decide which domains are in scope and where to spend interview effort. Do not announce a "tier" or "size" to the user. Do not ask the user to pre-approve how many rounds you'll run. Just ask the right questions.
See the Domains to Cover section of this skill for the domain checklist. For each relevant domain, run one or more AskUserQuestion rounds until the domain is actually resolved — not just touched once. Tightly related sub-questions can be grouped into a single call (per the user-questions.md rules), but a single call rarely resolves a domain with real depth.
A domain may be skipped only if it is genuinely irrelevant to the work. When skipping, record it in ## Clarifications as - [domain]: skipped — not applicable because [reason]. Do not skip a domain merely because it feels tedious.
## Clarifications ("Resolved from PRD §Overview: ...") and move on.## Clarifications and move on. If the assumption is non-trivial, surface it to the user for confirmation in a batch at the end rather than one-at-a-time.Finalize the plan only when all of these are true:
## Clarifications with a reason.## Clarifications verbatim enough that an implementation agent can trace every decision back to the interview.If any of these fail, keep asking. Round count is an output of the work, not a limit on it.
You MUST proactively use web research when the plan depends on current, external knowledge. Relying solely on training data produces stale or generic plans. The user is better served by a plan informed by up-to-date sources.
Kick off research (silently, alongside questioning) whenever any signal in the Research Triggers checklist (defined in a section of this skill below) appears in the brief or surfaces during the interview.
If a trigger fires, you do not need to ask the user "should I research this?" — just launch the research. You will surface findings back to the user for a decision (Step 4).
Deep research MUST be delegated to an Explore or general-purpose sub-agent. This keeps the planner's context window clean for the interview and allows heavier multi-source investigation.
Give the sub-agent a tight brief:
Inline WebFetch is acceptable only for single URLs the user provided or that you need to fetch verbatim (e.g. a specific docs page). Do not loop inline fetches — delegate instead.
If any source the sub-agent cites is older than ~12 months, mark it (potentially stale — last updated YYYY-MM) in the plan. Prefer more recent sources when available.
After a research pass lands, summarize it back to the user via your structured question tool with concrete options. Research feeds more questions, not fewer — the user picks the direction:
"Research found three viable options for [X]: A (pros/cons), B (pros/cons), C (pros/cons). My default recommendation is B because [reason]. Which way do you want to go?"
Do not finalize the plan until the user has chosen. If the user picks "Other", incorporate their choice and continue.
Research outputs must land in the plan file itself so downstream agents can see them:
### Research Notes subsection inside ## Technical Context (or ## Clarifications) with a bulleted list of findings, each with its source URL and a one-sentence summary.Alternatives Considered column of the ## Decision Log from research, and add a ## References section at the bottom listing all cited URLs with a one-sentence summary each.## Appendix → ### Supporting Data section. Every claim in the press release backed by research should cite its source in the appendix.Never leave research findings only in the chat — the plan must stand alone.
When in doubt, ask the user whether research would be useful before kicking off a sub-agent.
For a product planning session, the relevant domains (per the Dynamic Questioning framework above) are:
Kick off a research sub-agent (per the Proactive Research framework above) when any of these appear in the brief or during the interview:
.belmont/PRD.md, .belmont/PROGRESS.md, .belmont/features/, and master .belmont/PROGRESS.md.belmont/features/Explore or general-purpose sub-agents for deep web research (see Proactive Research)Before planning, check if .belmont/PR_FAQ.md exists and has real content (not just template text). If it does, read it and use it as strategic context for planning — the PR/FAQ defines the customer, problem, and solution vision that should inform the PRD.
Read .belmont/PRD.md — the master feature catalog. If it's empty/default, you'll create it during this session.
Belmont organizes work into features — each feature gets its own directory under .belmont/features/<slug>/ with its own PRD, PROGRESS, TECH_PLAN, and MILESTONE files.
.belmont/features/PRD.md for its name and status, then Ask the user to create a new feature or select an existing one to update/belmont:product-plan to create their first feature, then stop.belmont/features/<selected-slug>/Once the base path is resolved, use {base} as shorthand:
{base}/PRD.md — the feature PRD{base}/PROGRESS.md — the feature progress tracker{base}/TECH_PLAN.md — the feature tech plan{base}/MILESTONE.md — the active milestone file{base}/MILESTONE-*.done.md — archived milestones{base}/NOTES.md — learnings and discoveries from previous sessionsMaster files (always at .belmont/ root):
.belmont/PR_FAQ.md — strategic PR/FAQ document.belmont/PRD.md — master PRD (feature catalog).belmont/PROGRESS.md — master progress tracking (feature summary table).belmont/TECH_PLAN.md — master tech plan (cross-cutting architecture)If .belmont/PRD.md is empty/default and no features exist yet, create the master PRD as a living global document:
# Product: [Product Name]
## Vision
[1-2 sentence product vision, drawn from PR_FAQ if available]
## Constraints
[Global constraints that apply across all features — performance budgets, browser support, accessibility requirements, etc.]
## Cross-Cutting Decisions
[Product decisions that span multiple features. Actively curate this section — edit/remove stale info, don't just append. Examples: navigation patterns, shared UX conventions, data model decisions.]
This is a living document. Skills and agents actively curate it — editing existing sections, removing stale info, and updating decisions as the product evolves. It is NOT a feature catalog (features are tracked in PROGRESS.md).
Also create .belmont/PROGRESS.md (the master progress file) if it doesn't exist or still contains template/placeholder text:
# Progress: [Product Name]
## Features
| Feature | Slug | Priority | Dependencies | Status | Milestones | Tasks |
|---------|------|----------|-------------|--------|------------|-------|
| [Feature Name] | [feature-slug] | P1 | None | Not Started | 0/N | 0/N |
## Recent Activity
| Date | Feature | Activity |
|------|---------|----------|
Dependencies format: Use feature slugs, comma-separated (e.g. setup, auth). Use None for features with no dependencies. Features with dependencies execute after their dependencies complete when using belmont auto --all.
Then immediately proceed to create the first feature (below).
When the user selects or creates a feature:
user-authentication).belmont/features/<slug>/.belmont/features/<slug>/PRD.md (using the PRD format below).belmont/features/<slug>/PROGRESS.md (using the PROGRESS format below).belmont/PRD.md's ## Cross-Cutting Decisions section. Edit existing entries if they changed..belmont/PROGRESS.md's ## Features table with the feature name, slug, priority, dependencies, initial status, milestone/task counts. Set Dependencies to slugs of features this one requires (data, APIs, infrastructure) — use None if independent. Add a row to ## Recent Activity noting the feature was created or updated.When updating an existing feature (its PRD.md has real content): only add/modify the specific tasks, milestones, or sections needed. NEVER replace the entire file. Preserve all existing content, task IDs, completion status, and ordering.
If the existing PRD/PROGRESS already contains standalone verification/QA/testing tasks (a legacy anti-pattern — see "Important Considerations" below), do NOT mirror that pattern for the new work you are planning. Surface the stale tasks to the user, explain that verification is automatic, and offer to migrate their criteria into the adjacent feature task's **Verification**: field. Do not remove them silently — always ask.
## Clarifications.### Research Notes subsection in ## Technical Context if research was performed. In Codex plan mode only, emit a BELMONT_PLAN_PACKET for $belmont:codex-plan-apply instead of direct writes when file editing is unavailable.## Technical Context — e.g. "Effort profile (hint): frontend-heavy, heavy Figma fidelity." This is a hint only — tech-plan is authoritative for per-agent model tier assignment (see /belmont:tech-plan Phase 4.6). Do NOT pick tiers yourself.This is a product planning session, NOT a technical planning session. Technical decisions are made in the follow-up tech-plan step (/belmont:tech-plan).
/belmont:verify; per-task criteria live in the task's **Verification**: field.If the user volunteers technical preferences unprompted, record them as open questions for the tech-plan step — do NOT commit them as decisions in the PRD. The tech-plan step may well decide otherwise, and baking a technical idiom into the PRD creates drift (the PRD ends up saying "use <Image> directly" while the tech-plan correctly introduces a wrapper component). The only exceptions are genuinely cross-cutting product constraints the tech-plan must honor (e.g. "must ship inside the existing Next.js 15 app", "must reuse the existing design-system primitives") — never file paths, wrapper-vs-direct component choices, library imports, regex syntax, or endpoint names.
See the plan-separation partial above for the full PRD ↔ TECH_PLAN boundary rules.
After completing all updates to .belmont/ planning files, commit them:
Check if .belmont/ is git-ignored — run:
git check-ignore -q .belmont/ 2>/dev/null
If exit code is 0, .belmont/ is ignored — skip this section entirely.
Check for changes — run:
git status --porcelain .belmont/
If there is no output, nothing to commit — skip the rest.
Stage and commit — stage only .belmont/ files and commit:
git add .belmont/ && git commit -m "belmont: update planning files after product planning"
Note: PROGRESS.md is the single source of truth for task state. PRD.md is a pure spec document with no status markers — do not add emoji or state indicators to PRD task headers.
Final: Prompt user to "/clear" and then "/belmont:tech-plan"
/belmont:product-plan againBELMONT_PLAN_PACKET, prompt the user to leave plan mode and run $belmont:codex-plan-apply first; the packet's post_apply.next_prompt should then point to the tech-plan prompt above.Guidance on the verification anti-pattern, per-task verification fields, milestone grouping, and dependency annotations is in references/product-plan-considerations.md. Read it before breaking the feature down into milestones and tasks.
Read references/product-plan-prd-format.md for the full PRD template, then write it to {base}/PRD.md (i.e. .belmont/features/<slug>/PRD.md). Fill every section; leave empty placeholders only for "Out of Scope" and "Open Questions" when genuinely empty.
Write the PROGRESS to {base}/PROGRESS.md (same base path as the PRD) with this structure:
# Progress: [Feature Name]
## PRD Reference
.belmont/PRD.md
## Milestones
### M1: [Milestone Name]
- [ ] P0-1: Task description
- [ ] P0-2: Task description
### M2: [Milestone Name] (depends: M1)
- [ ] P1-1: Task description
### M3: [Milestone Name] (depends: M1)
- [ ] P1-1: Task description
### M4: [Milestone Name] (depends: M2, M3)
- [ ] P1-1: Task description
> **Dependency syntax**: Add `(depends: M1)` or `(depends: M1, M3)` after the milestone name to declare dependencies. When dependencies are present, `belmont auto` will run independent milestones in parallel via git worktrees. If no milestones have `(depends: ...)`, they run sequentially (default behavior).
> **Task states**: `[ ]` todo, `[>]` in_progress, `[x]` done, `[v]` verified, `[!]` blocked. Milestone status is computed from its tasks — do not add status emoji to milestone headers.
## Session History
| Date | Action | Details |
|------|--------|---------|
## Decisions Log
(none yet)
We are in plan mode. Please await the user's input describing what they want to build. After planning is complete, write the PRD.md and PROGRESS.md files and exit. If this is Codex plan mode and file editing is unavailable, emit a BELMONT_PLAN_PACKET for $belmont:codex-plan-apply instead of writing directly. Do NOT implement the plan.