name: prd license: MIT description: >- Generates a Product Requirements Document from a natural language app description. Asks clarifying questions, researches similar apps, defines scope, stack, architecture, and produces a structured PRD that Archon can decompose into a campaign. user-invocable: true auto-trigger: false trigger_keywords: - prd - requirements - spec - plan an app - design an app effort: high
/prd — Product Requirements Document Generator
When to Use
Don't use when: architecture is already defined and you need implementation (use /architect then /archon); adding a small feature to an existing app (use /marshal directly).
- User describes an app or feature to build (greenfield or feature mode)
- Before any Archon campaign for a new project or feature
Mode Detection
Before starting, determine the mode:
Greenfield mode: No existing source files, or user explicitly says "new app" / "from scratch." Produces a full PRD as described below.
Feature mode: The project already has source files (check for src/, app/, lib/,
package.json with dependencies, or similar). The user describes a feature to add, not a
whole app ("add auth", "add a dashboard", "add payment processing").
In feature mode:
- Read the existing file tree and
package.json/equivalent before asking questions - The existing stack is a given — don't recommend alternatives
- "Architecture" section describes integration points with existing code, not standalone shape
- End conditions MUST include regression checks: "existing tests still pass", "typecheck has no new errors"
- "Out of Scope" is relative to the feature, not the whole app
- Technical Decisions only covers decisions the feature introduces (new dependencies, new patterns)
The PRD template below works for both modes. Feature mode just scopes it tighter.
Protocol
Step 1: UNDERSTAND
Determine mode (greenfield vs feature). Identify core functionality, target user, and success criteria (greenfield) or integration points and existing stack (feature). Ask up to 3 questions — only those that would change the architecture. Do not ask about tech stack in greenfield mode; in feature mode, the stack is already decided.
Step 2: RESEARCH (Optional)
If the concept has well-known implementations, run /research to identify 2-3 reference apps and common expected features. Skip for simple concepts (landing page, personal tool, CRUD).
Step 3: DEFINE
Produce a structured PRD. Write to .planning/prd-{slug}.md:
# PRD: {App Name or Feature Name}
> Description: {One sentence}
> Author: {user}
> Date: {ISO date}
> Status: draft
> Mode: {greenfield | feature}
## Problem
{What problem does this solve? Why does the user want it?}
## Users
{Who uses this? One or two user types max.}
## Core Features
{Numbered list. Maximum 5 for v1. Each feature is one sentence.}
1. {Feature}: {what it does}
2. ...
## Out of Scope (v1)
{Things the user might expect but should NOT be built yet.
Being explicit about what's out prevents scope creep.}
## Technical Decisions
- **Frontend**: {recommendation with reasoning}
- **Backend**: {recommendation with reasoning, or "none" for static apps}
- **Database**: {recommendation with reasoning, or "none"}
- **Auth**: {recommendation, or "none" if no user accounts}
- **Deployment**: {recommendation}
{In feature mode, only list decisions the feature introduces.
Existing stack decisions are inherited, not re-evaluated.}
## Architecture
{High-level description. 3-5 sentences max. How the pieces connect.
NOT a file tree. NOT implementation details. Just the shape.}
{In feature mode: describe integration points with existing code.
"The new auth middleware hooks into the existing Express router at
src/routes/index.ts. User model extends the existing Prisma schema."}
## Integration Points (feature mode only)
{Skip this section in greenfield mode.}
- **Existing files modified**: {list of files the feature will touch}
- **New files created**: {list of new files}
- **Dependencies added**: {new packages, if any}
- **Patterns followed**: {existing patterns in the codebase this feature should match}
## End Conditions (Definition of Done)
{Machine-verifiable conditions that mean the feature/app is complete.}
- [ ] {condition 1: e.g., "Landing page renders at localhost:3000"}
- [ ] {condition 2: e.g., "User can create account and log in"}
- [ ] {condition 3: e.g., "Core feature X works end-to-end"}
{In feature mode, ALWAYS include these regression conditions:}
- [ ] Existing tests pass with 0 new failures
- [ ] Typecheck passes with 0 new errors
## Open Questions
{Anything the PRD author couldn't decide. These become questions
for the user before the campaign starts.}
Step 4: REVIEW
Present: core features, tech stack decisions, out of scope, end conditions. Ask if it matches. On approval: PRD is ready for Archon. On changes: update and re-present changed sections only.
Contextual Gates
Disclosure: "Generating PRD for [description]. Creates .planning/prd-{name}.md."
Reversibility: green — creates .planning/prd-{slug}.md only; undo by deleting the file.
Trust gates:
- Any: full PRD generation, clarifying questions, review cycle.
Quality Gates
- Every Core Feature is one sentence
- Every technical decision has a reasoning ("because")
- End conditions are machine-verifiable
- Out of Scope has at least 2 items
- No more than 5 core features for v1
Fringe Cases
Vague description: Ask up to 3 clarifying questions. Never produce a PRD with placeholder end conditions.
Feature mode but no existing code: Confirm with the user — switch to greenfield if confirmed.
User says "skip the PRD": Even a minimal PRD is needed. Offer a 1-page express PRD (Tier 4 style).
If .planning/ does not exist: Create it before writing. If not possible, present inline and suggest /do setup.
Exit Protocol
---HANDOFF---
- PRD: {app name}
- Document: .planning/prd-{slug}.md
- Status: {approved | needs-revision}
- Next: Run `/do build {app name}` or `/archon` with the PRD as direction
- Reversibility: green — delete .planning/prd-{slug}.md to undo
---
Stack Selection Principles
Make opinionated recommendations with reasoning. Defaults: Next.js + Tailwind + shadcn/ui for web; Node/Express for JS backends, FastAPI for Python; SQLite for simple, PostgreSQL for multi-user; simplest auth for the stack. Always explain why.
Deployment defaults: static → Vercel/Netlify; full-stack with DB → Railway; API only → Railway or Fly.io; not deploying yet → local only. See .planning/_templates/deploy/ for platform details.