Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create a Product Requirements Document (PRD) from recent discussions, conversations, or accumulated context. Use when the user wants to formalize requirements, document what was discussed, or create a spec to guide implementation. Do NOT use for technical implementation specs (use SPEC.md from project-files) or for already-implemented features (use CHANGELOG.md).
.claude/skills/marco-souza-create-prd/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 443% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 105% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 127% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 101% | 0% |
Create a formal Product Requirements Document that captures what was discussed and what needs to be built. A PRD bridges conversation and implementation — it's the single source of truth for what the product or feature should do.
prd-to-tasks for task breakdowngrill-me sessionsproject-files)grill-me sessionUse this exact template. Fill in all sections that apply. Delete sections that don't.
markdown# PRD: [Feature/Product Name] **Status:** Draft | Review | Approved **Created:** YYYY-MM-DD **Author:** AI Agent (from discussion with [user]) **Version:** 1.0 --- ## Executive Summary 2-3 sentences. What are we building and why? Anyone should understand this. --- ## Problem Statement What problem does this solve? Who has this problem? How do they solve it today (if at all)? Include specific pain points. --- ## Goals - **Goal 1:** What we WILL achieve - **Goal 2:** ... --- ## Non-Goals - **Non-Goal 1:** What we explicitly will NOT do (scope boundaries) - **Non-Goal 2:** ... --- ## User Stories Format: "As a [user type], I want to [action] so that [benefit]." ### Must Have (P0) - As a [user], I want to [action] so that [benefit]. - As a [user], I want to [action] so that [benefit]. ### Should Have (P1) - As a [user], I want to [action] so that [benefit]. ### Nice to Have (P2) - As a [user], I want to [action] so that [benefit]. --- ## Functional Requirements ### FR-1: [Feature Area] - System must [behavior] - System must [behavior] - Edge case: [what happens when...] ### FR-2: [Feature Area] - ... --- ## Non-Functional Requirements | Category | Requirement | Target | |----------------|------------------------------------------|-----------------| | Performance | [e.g., API response time] | < 200ms p95 | | Security | [e.g., auth mechanism] | JWT + HTTPS | | Accessibility | [e.g., WCAG level] | AA | | Reliability | [e.g., uptime] | 99.9% | | Scalability | [e.g., concurrent users] | 1000 CCU | --- ## Constraints - **Technical:** Must use [stack/technology]. Must integrate with [system]. - **Timeline:** Needs to ship by [date] or fits into [release]. - **Budget:** [If applicable] - **Team:** [If known] --- ## Dependencies - **External:** [Third-party API, service, library] - **Internal:** [Other team, module, or feature that must be ready first] --- ## Open Questions - [ ] Question 1 — who can answer this? - [ ] Question 2 — must resolve before implementation starts - [ ] Question 3 — can defer to later phase --- ## Success Metrics How will we know this is successful? - **Metric 1:** [e.g., 80% of users complete onboarding] - **Metric 2:** [e.g., support tickets for auth drop by 50%] - **Metric 3:** [e.g., page load time under 1.5s] --- ## Risks & Mitigations | Risk | Impact | Likelihood | Mitigation | |-----------------------------------------|--------|------------|------------------------------------| | [What could go wrong] | High | Medium | [How we'll prevent or handle it] | | [What could go wrong] | Medium | Low | [How we'll prevent or handle it] | --- ## Appendix ### References - [Link to design mockup] - [Link to technical spec] - [Link to relevant discussion/issue] ### Glossary - **Term:** Definition
Review the recent conversation. Identify:
If context is thin, use grill-me to fill gaps before creating the PRD.
Write the PRD following the template above. Prioritize:
For sections the user hasn't addressed, apply reasonable defaults and mark them clearly:
markdown## Non-Functional Requirements _Not discussed. Assuming standard web app defaults:_ | Category | Requirement | Target | |-------------|----------------------|------------| | Performance | API response time | < 500ms | | Security | Authentication | JWT |
Any assumption that might be wrong goes in Open Questions:
markdown## Open Questions - [ ] Should this support offline mode? (assumed NO) - [ ] Preferred auth provider? (assumed custom JWT)
Present the PRD and ask the user to review:
Here's the PRD for [feature]. Key decisions:
- [Decision 1]
- [Decision 2]
- [Decision 3]
Open questions I still have:
- [Question 1]
- [Question 2]
Does this look right? Anything to add or change?Update the PRD based on feedback. Increment version on each significant revision.
Write the PRD to a file named after the feature:
bash# In the project root or docs/ directory: PRD-<feature-name>.md # Examples: PRD-user-authentication.md PRD-search-functionality.md PRD-admin-dashboard.md
If using project-files, the PRD can live alongside PLAN.md, SPEC.md, etc.
grill-me → PRDgrill-me session clarifies requirements →
create-prd codifies them into a formal document →
prd-to-tasks breaks them into implementation tasks →
implement-tasks executesprd-to-tasksThe PRD is the input to prd-to-tasks. Every user story and functional requirement in the PRD maps to one or more tasks.
mixture-of-expertsShare the PRD with MoE experts for architecture, security, and performance review:
bashPRD_CONTENT=$(cat PRD-feature.md) pi -p "Review this PRD for completeness, risks, and missing requirements:\n\n$PRD_CONTENT" \ --system-prompt "You are a senior product manager..."
markdown# PRD: Add Dark Mode **Status:** Draft | **Created:** 2026-04-27 | **Version:** 1.0 ## Executive Summary Add a dark mode toggle to the application. Users have requested this for reduced eye strain during night use. ## Problem Statement The app currently only supports light mode. Users working in low-light environments report eye strain. Competitor apps all support dark mode. ## Goals - Add dark mode toggle in user settings - Respect OS-level color scheme preference - Cover all existing screens and components ## Non-Goals - Custom theme builder (just light/dark) - Per-component color overrides - Scheduled theme switching ## User Stories ### Must Have (P0) - As a user, I want to toggle between light and dark mode so that I can reduce eye strain in low-light environments. - As a user, I want the app to follow my OS color scheme by default so that I don't need to configure it manually. ### Nice to Have (P2) - As a user, I want my preference to persist across sessions so that I don't need to re-set it. ## Functional Requirements ### FR-1: Theme Toggle - System must provide a toggle in the settings menu - System must apply the selected theme immediately across all screens - System must persist the user's choice to localStorage ### FR-2: OS Preference Detection - System must detect `prefers-color-scheme` on first visit - If user hasn't set a preference, default to OS preference ## Open Questions - [ ] Should we animate the theme transition? (leaning: yes, 300ms ease)
See the template above — fill all sections for features with significant scope.
If asked to create a PRD with no context:
I don't have enough context to create a meaningful PRD.
Let me ask a few questions first (using grill-me):
1. What's the problem we're solving?
2. Who is the target user?
3. What's the scope — MVP or full feature?
Then I'll draft the PRD.If the user mentions conflicting requirements, flag them:
markdown## Open Questions - [ ] **CONFLICT:** User wants both "instant load" and "real-time data from slow external API." These conflict — which takes priority? Options: A) Show cached data instantly, refresh in background B) Show loading state, always show fresh data
Keep non-goals tight:
markdown## Non-Goals - ❌ User suggested "also add X while we're at it" — deferred to v2. - ❌ Integration with Y service — separate PRD if needed later.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 18,614 | 3,501 | -81% | 1 | 1 | 0% | 3,778 | 2,983 | -21% | 0 | 0 | — |
case-02 | fail→fail | 26,198 | 3,608 | -86% | 1 | 1 | 0% | 4,833 | 2,981 | -38% | 0 | 0 | — |
case-09 | fail→fail | 13,789 | 13,017 | -6% | 1 | 1 | 0% | 2,758 | 5,167 | +87% | 0 | 0 | — |
case-03 | fail→fail | 20,912 | 3,265 | -84% | 1 | 1 | 0% | 4,417 | 2,950 | -33% | 0 | 0 | — |
case-04 | pass→pass | 23,433 | 27,578 | +18% | 1 | 1 | 0% | 5,361 | 8,782 | +64% | 0 | 0 | — |
case-05 | pass→pass | 6,981 | 6,719 | -4% | 1 | 1 | 0% | 1,382 | 4,000 | +189% | 0 | 0 | — |
case-06 | fail→pass | 5,853 | 21,781 | +272% | 1 | 1 | 0% | 1,099 | 5,965 | +443% | 0 | 0 | — |
case-07 | pass→pass | 18,381 | 13,488 | -27% | 1 | 1 | 0% | 3,971 | 5,344 | +35% | 0 | 0 | — |
case-08 | fail→pass | 13,138 | 14,112 | +7% | 1 | 1 | 0% | 2,682 | 5,486 | +105% | 0 | 0 | — |
case-10 | fail→fail | 13,405 | 11,843 | -12% | 1 | 1 | 0% | 2,516 | 4,955 | +97% | 0 | 0 | — |
case-11 | fail→pass | 12,156 | 12,558 | +3% | 1 | 1 | 0% | 2,254 | 5,106 | +127% | 0 | 0 | — |
case-12 | pass→pass | 11,603 | 12,862 | +11% | 1 | 1 | 0% | 2,202 | 5,093 | +131% | 0 | 0 | — |
case-13 | fail→fail | 13,813 | 11,303 | -18% | 1 | 1 | 0% | 3,056 | 4,800 | +57% | 0 | 0 | — |
case-14 | fail→fail | 14,940 | 2,625 | -82% | 1 | 1 | 0% | 2,921 | 2,750 | -6% | 0 | 0 | — |
case-15 | fail→pass | 14,716 | 13,484 | -8% | 1 | 1 | 0% | 2,609 | 4,808 | +84% | 0 | 0 | — |
case-16 | pass→pass | 13,748 | 10,850 | -21% | 1 | 1 | 0% | 2,514 | 4,750 | +89% | 0 | 0 | — |
case-17 | fail→pass | 13,488 | 13,927 | +3% | 1 | 1 | 0% | 2,619 | 5,256 | +101% | 0 | 0 | — |
case-18 | fail→pass | 9,610 | 2,817 | -71% | 1 | 1 | 0% | 1,831 | 3,249 | +77% | 0 | 0 | — |
case-19 | fail→fail | 17,440 | 18,103 | +4% | 1 | 1 | 0% | 3,331 | 5,323 | +60% | 0 | 0 | — |
case-20 | pass→pass | 13,325 | 9,673 | -27% | 1 | 1 | 0% | 2,471 | 4,365 | +77% | 0 | 0 | — |
case-21 | pass→pass | 19,578 | 13,410 | -32% | 1 | 1 | 0% | 3,615 | 5,177 | +43% | 0 | 0 | — |
case-22 | pass→pass | 13,463 | 5,957 | -56% | 1 | 1 | 0% | 2,616 | 3,809 | +46% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 18 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.