Interview the user and produce issues/prd.md from a client brief, feature idea, or rough request. Step 1 of the build pipeline (write-a-prd → prd-to-issues → work-issues). Use when no PRD exists yet and one is needed. NOT for breaking an existing PRD into tasks (use prd-to-issues), and NOT for tracker-coupled output (this writes local markdown only). Triggers: /write-a-prd, "write a PRD", "draft a spec", "turn this brief into a PRD".
71
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Invoked when the user wants to create a PRD. Skip steps you judge unnecessary.
Check for an existing PRD. If issues/prd.md already exists, do NOT overwrite. Show the user its current contents and ask: append a new section, replace it, or write to a different filename. Never silently clobber.
Ask the user for a long, detailed description of the problem and any solution ideas.
Explore the repo to verify their assertions and understand current state.
Interview the user relentlessly about every aspect of the plan until you reach shared understanding. Walk each branch of the design tree, resolving dependencies one-by-one.
Sketch the major modules to build or modify. Look for opportunities to extract deep modules — modules that hide a lot of functionality behind a simple, testable interface that rarely changes. Confirm the module breakdown matches the user's expectations and which modules they want tests for.
Write the PRD to issues/prd.md using the template below. Create issues/ if missing. Do NOT submit a GitHub issue or call any external service.
AFK fallback (no user available — /feature running headlessly, claude -p invocation, prior PRD passed in as a file, etc.): steps 1, 3, and 4 are interactive by default but collapse cleanly to a best-guess pass when there's no user. Don't stall waiting for input. Instead:
## Assumptions section to the PRD (place it adjacent to ## Further Notes — either just before or just after is fine, as long as it's present and labeled exactly ## Assumptions) listing each non-trivial decision you made without user input. One bullet per assumption, written as a falsifiable claim (e.g. "Cache directory defaults to .crap-cache/" rather than "made some assumptions about caching"). Log decisions where the brief is silent, not decisions the brief already pins — if the brief says "sha256", you don't log "we use sha256" as an assumption. A reviewer or downstream agent reads these to challenge them at the next checkpoint, and prd-to-issues reads them to inform slice rationale.plugins/agentic-engineering/skills/crap/crap.py, not crap.py) — downstream write-a-spec consumes them into a lane allowlist that the orchestrator's parser matches literally.The problem from the user's perspective.
The solution from the user's perspective.
A LONG, numbered list. Format:
Cover all aspects of the feature extensively.
Do NOT include specific file paths or code snippets — they go stale fast.
What's out of scope for this PRD.
Anything else.
Run prd-to-issues to break the PRD into vertical-slice issue files at issues/NNN-*.md.
77a9e6b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.