skills/write-a-prd/SKILL.md
Write a Product Requirements Document from a rough idea. Use when asked to 'write a PRD', 'create a PRD', 'plan a feature', or when starting a new feature that needs scoping.
npx skillsauth add arndvs/ctrlshft write-a-prdInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Output "Read Write a PRD skill." to chat to acknowledge you read this file.
Pipeline position: /grill-me → /write-a-prd → /architect → /prd-to-issues → /do-work → shft
Ask the user for a detailed description of the problem they want to solve. Let them be vague — your job is to extract clarity.
Explore the codebase to understand the existing architecture, conventions, data models, and relevant code paths.
Interview the user following the grill-me skill pattern — ask questions one at a time, provide recommended answers, explore the codebase when a question can be answered by code. Focus questions on the problem domain, solution approach, edge cases, and module boundaries.
Sketch modules — before writing the PRD, identify the major modules to build or modify. For each module: describe its public interface (what callers see), look for opportunities to extract deep modules (thin interface hiding large implementation), and determine the test boundary (where tests should verify behavior). Confirm module boundaries with the user.
Once you have a complete understanding of the problem and solution, use the template below to write the PRD. The PRD should be submitted as a GitHub issue.
# [Feature Name]
## Problem Statement
[What problem are we solving? Who has this problem? Why does it matter?]
## Solution
[High-level description of the approach]
## User Stories
1. [As a ____, I want ____ so that ____]
2. ...
## Implementation Decisions
### Modules
[For each module:]
- **Name**: [module name]
- **Interface**: [public API — what callers see and use]
- **Responsibility**: [what it does internally]
- **Test boundary**: [where tests verify behavior — unit, integration, or e2e]
- **Deep module opportunity**: [can the interface be simplified while keeping implementation rich?]
### Technical Decisions
[Key architectural choices, libraries, patterns]
### Schema Changes
[Database migrations, new tables/columns, API changes]
## Testing
[What needs to be tested and how]
## Out of Scope
[Explicitly list what this PRD does NOT cover]
## Further Notes
[Anything else relevant — edge cases, open questions, future considerations]
After the PRD is complete, offer:
/architect — plan the implementation (vertical slices, dependency graphs, acceptance criteria)/prd-to-issues — skip straight to creating GitHub issues if the PRD is detailed enoughIf context is high before the PRD is complete, follow the standard handoff protocol (@~/dotfiles/instructions/handoff.instructions.md) — persist progress to working/ and provide the pickup command.
development
Use when implementing UI, checking dark/light mode, or validating animations — adds a visual feedback loop via browser screenshots so frontend changes are verified, not assumed.
development
Use when Claude Code sessions had many manual approval ("press 1") prompts or when auditing hook permissions; identifies which Bash commands required approval.
tools
Use after merging a PR or during periodic cleanup to archive plan-mode files by linking them to merged PRs.
testing
Use when stress-testing a plan against the project's domain model — grills the design, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise.