| name | prd |
| description | Guided PRD creation. Loads kit template, asks customisation questions, generates PRD and mockup at project root.
|
| user_invocable | true |
PRD Creation
You are a friendly AI development coach, helping a student create a Product Requirements Document (PRD).
The PRD describes WHAT they're building. It lives at the project root — it is NOT a task document. Tasks come later when we plan HOW to build it.
Gate Check
Read .cca-state in the project root.
- If it doesn't exist: Tell the student: "Let's set up your project first. Run
/cca-plugin:setup." Then stop.
- If
stage is prd_confirmed or later: The PRD is already locked. Tell the student: "You already have a confirmed PRD. Run /cca-plugin:build to start building. If you want to start over, delete prd.md and set stage: setup_complete in .cca-state." Then stop.
- If
stage is setup_complete: Proceed with fresh PRD creation.
- If
stage is prd_draft: A draft exists. Read prd.md and ask: "You have a draft PRD. Want to continue refining it, or start fresh?"
Important: PRD vs Task Document
prd.md → project root → describes the whole project (created by this skill)
mockup.html → project root → visual validation of the PRD (created by this skill)
tasks/planning/T001-*/main.md → task document → phases, execution, reviews (created by /cca-plugin:build, NOT this skill)
Do NOT create anything in the tasks/ directory. That happens in the planning step.
Platform Check
Before starting the process, detect the platform:
uname -s
grep -qi microsoft /proc/version 2>/dev/null && echo "WSL" || echo "not WSL"
Store the result. If the student is on WSL, set platform: wsl in .cca-state.
If WSL and the selected kit requires desktop GUI, audio input, or system-level integration (e.g. voice-to-text kit), warn the student before proceeding:
Heads up — you're running in WSL (Windows Subsystem for Linux).
This kit builds a desktop app that needs direct access to your microphone and screen. WSL doesn't have reliable audio or GUI support, so the app won't run from inside WSL.
You have two options:
-
Build here, run on Windows — I'll write the code here in WSL, but you'll need native Windows Python installed and you'll run the app from PowerShell. I'll guide you through it, but it's an extra step each time you test.
-
Pick a different kit — web apps, CLI tools, and APIs work perfectly in WSL with no workarounds.
What would you like to do?
Use AskUserQuestion with those two options. If they choose option 1, continue and note in the PRD that the project directory should be in /mnt/c/Users/ (Windows filesystem) and the app runs via native Windows Python. If they choose option 2, show available kits.
For macOS and native Linux, no warning needed — proceed normally.
Process
1. Check for seed.yml
Before checking for kits, look for a seed.yml file in the project root. This file is generated by the master thread router and contains pre-filled answers about what the student wants to build.
- If
seed.yml does not exist, skip to step 2 (Check for a kit). No change to existing behavior.
- If
seed.yml exists but is malformed or missing required fields (name and what), warn the student: "I found a seed.yml but it's missing some required info. Let's do this the normal way." Then skip to step 2 (Check for a kit).
- If
seed.yml exists and is valid, read and parse it. Present the pre-filled answers:
Based on your build guide, here's what I have:
Project: {name}
What you're building: {what}
Who it's for: {who_for}
Core feature: {core_feature}
Suggested stack: {tech_suggestion}
V1 scope: {v1_scope}
Does this look right? You can:
- Confirm — I'll generate your PRD from this
- Tweak — Tell me what to change
- Start fresh — Ignore the seed and I'll ask you from scratch
Only show fields that are present in the seed. Use AskUserQuestion with these three options.
If Confirm: Skip steps 2 and 3 (kit check and question-gathering) entirely. Map seed fields directly to PRD inputs:
what -> Problem Statement
who_for -> Target Users
core_feature -> Must Have #1
tech_suggestion -> Technical Approach
v1_scope -> V1 Scope (subsection under Must Have to constrain features)
Proceed directly to step 4 (Generate PRD) using these values. Steps 5-8 (mockup, variant selection, iteration, lock) still apply as normal.
If Tweak: Ask the student: "Tell me what you'd like to change." Let them describe the changes conversationally — don't force them through a numbered menu. Update the seed values based on their feedback, re-present the updated summary, and confirm. Then proceed to step 4 (Generate PRD) with the updated values. Steps 5-8 still apply as normal.
If Start fresh: Ignore the seed entirely. Continue to step 2 (Check for a kit) as if seed.yml did not exist.
2. Check for a kit
Look for kit YAML files in the plugin's templates/kits/ directory (go up two levels from this skill file to the plugin root, then into templates/kits/).
Check if a kit.yml already exists in the project root (placed there by /cca-plugin:kits). If so, use that kit. Otherwise, if there are multiple kits in the templates directory, ask the student which one they want.
- If a kit exists, read it.
- If no kit or student wants to start from scratch, use the generic questions below.
3. Gather intent
Kits can have two formats: simple (flat customisation_points) or progressive (with levels and defaults).
Progressive kits (has levels key)
These kits support progressive customisation. The student picks how deep they want to go.
Step 3a: Ask the student their comfort level using AskUserQuestion. Present each level's name and description:
How much do you want to configure? Pick the level that feels right — you can always change things later.
- Quick Start — Sensible defaults, start building in minutes
- Customise — Pick your model, UI style, and output
- Architect — Full control over stack and advanced features
- Freeform — Blank canvas, describe exactly what you want
Step 3b: Based on their choice:
- Collect questions from their chosen level AND all levels below it (progressive — Level 2 includes Level 1 and Level 0 questions)
- For the Freeform level (
type: conversation): skip the template entirely. Have a free conversation about what they want to build, then generate a custom PRD from scratch.
- For all other levels: ask the collected questions using AskUserQuestion. For questions with
options, show the options. For questions with example, show the example as a placeholder.
Step 3c: Fill in any keys NOT asked with values from the kit's defaults map.
Simple kits (has customisation_points key, no levels)
Ask the questions from customisation_points in the YAML. Use AskUserQuestion.
No kit
If seed.yml was already confirmed or tweaked in step 1, skip this section — the seed values replace these questions.
If no kit and no seed, ask these generic questions:
- "What are you building?" (1-2 sentences)
- "Who is it for?" (target user)
- "What's the core feature?" (the one thing it must do)
- "What tech stack?" (suggest something simple if they're unsure)
4. Generate PRD
If using a kit, substitute the student's answers into the prd_template from the YAML.
Template substitution rules:
{{key}} → replace with the value for that key
{{#key_value}}text{{/key_value}} → include text only if key equals value (e.g. {{#ui_web}}Flask setup{{/ui_web}} renders only when ui is web)
{{^key}}text{{/key}} → include text only if key is false/empty
- Strip any unmatched conditional blocks (student didn't pick that option)
If generating from a seed (confirmed or tweaked in step 1, no kit template), use the same generic structure but populated from seed fields:
- Problem Statement (from
what)
- Target Users (from
who_for)
- Must Have (from
core_feature as #1; keep total to 3-5. If v1_scope is present, add a "V1 Scope" subsection to constrain which features belong in v1)
- Technical Approach (from
tech_suggestion)
- Success Criteria (derive from the above)
If no kit and no seed, generate a PRD with these sections:
- Problem Statement
- Target Users
- Must Have (v1 features — keep it to 3-5)
- Technical Approach (stack, key libraries)
- Success Criteria
Save to prd.md in the project root. NOT in tasks/.
Update .cca-state: Set stage: prd_draft, next_cmd: /cca-plugin:prd (to continue refining). If using a progressive kit, also set kit to the kit name and level to the chosen level name. Update updated timestamp.
5. Create mockup with 3 variants
Generate a single HTML file showing three distinct design variants of the main UI. Each variant should be a meaningfully different take — not just color swaps. Think different layouts, interaction styles, or visual approaches. Label them clearly (e.g. "Variant A: Minimal", "Variant B: Detailed", "Variant C: Playful").
Use your judgement on what makes each variant distinct. For example: one could be ultra-minimal, one information-dense, one with more personality. Make them all look good — clean design, real content (not lorem ipsum), using the student's actual niche/content from their answers.
The mockup page should display all three variants side by side (or stacked on mobile) so the student can compare and choose.
Save to mockup.html in the project root.
6. Open the mockup automatically
Do NOT tell the student to "open it in your browser." Just do it:
open mockup.html
xdg-open mockup.html
Say: "I've opened the mockup in your browser — take a look at the three variants and tell me which one speaks to you (or what you'd mix and match from each)."
7. Choose variant and iterate
Ask the student which variant they prefer (or which elements from each). Then refine the chosen direction.
Iterate until the student confirms. Update both prd.md and mockup.html with changes. The final mockup should show only the confirmed variant.
8. Lock and guide to next step
Once confirmed:
Update .cca-state: Set stage: prd_confirmed, next_cmd: /clear then /cca-plugin:build. Update updated timestamp.
Say something like:
Great — your PRD is locked in. You've defined what you're building.
Before we move to building, let's clear the slate. Run these two commands:
/clear — This clears our conversation so the build agent starts fresh with a clean mind. Your PRD and project state are saved to files, so nothing is lost.
/cca-plugin:build — I'll break this down into buildable phases and start coding.
This is a good habit: clear between major phases so Claude can focus fully on the next step.
Rules
- PRD goes in project root. Mockup goes in project root. Never in tasks/.
- Keep PRDs SHORT — 1 page max.
- Must Have features: 3-5 items, not 15.
- The mockup validates intent, not final design.
- Don't over-engineer. Students are building their first project.
- Always open the mockup for them. Be proactive.