MCPInstall

prd

Generate a Product Requirements Document (PRD) for a new feature. Use when planning a feature, starting a new project, or when asked to create a PRD. After PRD is confirmed, use /prd-to-spec (optional) for technical design, then /to-issues to create implementable tickets. Triggers on: create a prd, write prd for, plan this feature, requirements for, spec out, 写PRD, 需求文档, 需求分析, 规格说明.

Installs
534
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/smallnest/goal-workflow --skill prd
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads prd automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

PRD Generator

Create detailed Product Requirements Documents that are clear, actionable, and suitable for implementation. After PRD is confirmed, use /to-issues to decompose it into Issues, and optionally /prd-to-spec for technical design before that.


The Job

  1. Receive a feature description from the user
  2. Ask clarifying questions to cover key ambiguities — scale the count to complexity, not a fixed number (see Step 1)
  3. Generate a structured PRD based on answers
  4. Present PRD to user for review — ask "Please review the PRD. Let me know if any adjustments are needed, or reply OK to confirm."
  5. Apply any adjustments, then save to tasks/prd-[feature-name].md
  6. Suggest next steps (see Step 3)

Important: Do NOT start implementing. Just create the PRD.


Step 1: Clarifying Questions

Ask only critical questions where the initial prompt is ambiguous. Scale the number of questions to the feature's complexity — the goal is covering key ambiguities, not hitting a fixed count:

  • Simple, well-scoped feature: 2-3 questions
  • Typical feature: 3-5 questions
  • Complex feature (multiple user roles, cross-system integration, significant ambiguity): 6-8 questions

If a dimension is already unambiguous from the user's input, skip it — don't ask filler questions just to reach a number. Focus on:

  • Problem/Goal: What problem does this solve?
  • Core Functionality: What are the key actions?
  • Scope/Boundaries: What should it NOT do?
  • Success Criteria: How do we know it's done?

Format Questions Like This:

1. What is the primary goal of this feature?
   A. Improve user onboarding experience
   B. Increase user retention
   C. Reduce support burden
   D. Other: [please specify]

2. Who is the target user?
   A. New users only
   B. Existing users only
   C. All users
   D. Admin users only

3. What is the scope?
   A. Minimal viable version
   B. Full-featured implementation
   C. Just the backend/API
   D. Just the UI

This lets users respond with "1A, 2C, 3B" for quick iteration. Remember to indent the options.


Edge Cases & Fallback

ScenarioHandling
User skips clarifying questions (e.g., replies "whatever", "just write it")Fill with reasonable defaults, mark with [Assumption] in PRD, prompt user to confirm during review
User input is too vague (e.g., "add a feature")Ask once for specifics; if still vague, infer from project context and mark assumptions
tasks/ directory does not existAuto-create tasks/ directory
feature-name is hard to extract from inputAsk the user directly: "Suggested PRD filename is prd-XXX.md, please confirm or modify"
User requests PRD changes after reviewApply changes and re-save without re-running the clarification flow
PRD content exceeds 500 linesSuggest the user consider splitting into multiple sub-feature PRDs
User declines to proceedJust save the PRD, user can run /to-issues later
Issue creation needed laterSuggest running /to-issues with the saved PRD file

Step 2: PRD Structure

Generate the PRD with these sections:

1. Introduction/Overview

Brief description of the feature and the problem it solves. Use plain language — avoid jargon or explain it. Assume the reader may be a junior developer or AI agent.

2. Goals

Specific, measurable objectives (bullet list).

3. User Stories

Each story needs:

  • Title: Short descriptive name
  • Description: "As a [user], I want [feature] so that [benefit]"
  • Acceptance Criteria: Verifiable checklist of what "done" means

Numbering rule: US-001, US-002, US-003... (three digits, starting from 001). Each US should be independently implementable and small enough to complete within one focused agent session.

Mandatory E2E test story: Every PRD MUST include one end-to-end (E2E) test user story as the last user story. It validates the complete feature flow across the whole stack — from user action through UI, API, and data layer — not an isolated unit. Its acceptance criteria describe the full happy-path journey a real user takes to accomplish the feature's core goal, plus at least one critical edge/failure path, all asserted through an automated E2E test (e.g., Playwright/Cypress for UI, or an API-level integration test for backend-only features). This story depends on all others and confirms the feature works as a whole.

Acceptance criteria self-check template: Each criterion must satisfy at least one of the following, otherwise it is considered "vague" and must be rewritten:

  • Observable: describes a specific UI state or API response (e.g., "button shows confirmation dialog")
  • Testable: has clear input/output pairs (e.g., "entering an empty email shows a red warning")
  • Verifiable: can be checked by tools (e.g., "Typecheck/lint passes")
  • ❌ Bad example: "works correctly", "good user experience", "excellent performance" → these are unverifiable

Format:

### US-001: [Title]
**Description:** As a [user], I want [feature] so that [benefit].

**Acceptance Criteria:**
- [ ] Specific verifiable criterion
- [ ] Another criterion
- [ ] Typecheck/lint passes
- [ ] **[UI stories only]** Verify in a browser (e.g., via the `run` skill)

E2E story format:

### US-NNN: End-to-end test of [feature] flow
**Description:** As a QA engineer, I want an automated end-to-end test covering the full [feature] journey so that we catch regressions across the entire stack.

**Acceptance Criteria:**
- [ ] Automated E2E test simulates the full happy path (user action → UI → API → data → visible result)
- [ ] Covers at least one critical edge/failure path (e.g., invalid input, empty state, permission denied)
- [ ] Test runs in CI and passes
- [ ] Test is independent and repeatable (sets up and tears down its own data)

Important:

  • Acceptance criteria must be verifiable, not vague. "Works correctly" is bad. "Button shows confirmation dialog before deleting" is good.
  • For any story with UI changes: Always include "Verify in a browser" as acceptance criteria (e.g., via the run skill). This ensures visual verification of frontend work.

4. Functional Requirements

Numbered list of specific functionalities:

  • "FR-1: The system must allow users to..."
  • "FR-2: When a user clicks X, the system must..."

FR specification: Each FR starts with FR-N: (N increments from 1), uses "system must / system shall" phrasing, and describes one specific behavior. Avoid combining multiple "and"-linked behaviors in a single FR.

5. Non-Goals (Out of Scope)

What this feature will NOT include. Critical for managing scope.

6. Design Considerations (Optional)

  • UI/UX requirements
  • Link to mockups if available
  • Relevant existing components to reuse

7. Technical Considerations (Optional)

  • Known constraints or dependencies
  • Integration points with existing systems
  • Performance requirements

8. Success Metrics

How will success be measured?

  • "Reduce time to complete X by 50%"
  • "Increase conversion rate by 10%"

9. Open Questions

Remaining questions or areas needing clarification.


Output

  • Format: Markdown (.md)
  • Location: tasks/
  • Filename: prd-[feature-name].md (kebab-case)

Step 3: Next Steps

After the PRD is saved, suggest the user:

✅ PRD saved to tasks/prd-[feature-name].md

Next steps:
  /prd-to-spec  →  Generate technical SPEC (optional — for complex features)
  /to-issues    →  Decompose into Issues and create tickets

Or go straight to implementation:
  /to-issues    →  Create Issues, then /goal to implement

If the user wants to proceed, invoke the corresponding skill.


Example PRD

# PRD: Task Priority System

## Introduction

Add priority levels to tasks so users can focus on what matters most. Tasks can be marked as high, medium, or low priority, with visual indicators and filtering to help users manage their workload effectively.

## Goals

- Allow assigning priority (high/medium/low) to any task
- Provide clear visual differentiation between priority levels
- Enable filtering and sorting by priority
- Default new tasks to medium priority

## User Stories

### US-001: Add priority field to database
**Description:** As a developer, I need to store task priority so it persists across sessions.

**Acceptance Criteria:**
- [ ] Add priority column to tasks table: 'high' | 'medium' | 'low' (default 'medium')
- [ ] Generate and run migration successfully
- [ ] Typecheck passes

### US-002: Display priority indicator on task cards
**Description:** As a user, I want to see task priority at a glance so I know what needs attention first.

**Acceptance Criteria:**
- [ ] Each task card shows colored priority badge (red=high, yellow=medium, gray=low)
- [ ] Priority visible without hovering or clicking
- [ ] Typecheck passes
- [ ] Verify in a browser (e.g., via the `run` skill)

### US-003: Add priority selector to task edit
**Description:** As a user, I want to change a task's priority when editing it.

**Acceptance Criteria:**
- [ ] Priority dropdown in task edit modal
- [ ] Shows current priority as selected
- [ ] Saves immediately on selection change
- [ ] Typecheck passes
- [ ] Verify in a browser (e.g., via the `run` skill)

### US-004: Filter tasks by priority
**Description:** As a user, I want to filter the task list to see only high-priority items when I'm focused.

**Acceptance Criteria:**
- [ ] Filter dropdown with options: All | High | Medium | Low
- [ ] Filter persists in URL params
- [ ] Empty state message when no tasks match filter
- [ ] Typecheck passes
- [ ] Verify in a browser (e.g., via the `run` skill)

### US-005: End-to-end test of task priority flow
**Description:** As a QA engineer, I want an automated end-to-end test covering the full priority journey so that we catch regressions across the entire stack.

**Acceptance Criteria:**
- [ ] E2E test creates a task, sets its priority via the edit modal, and asserts the badge color updates on the card
- [ ] Test applies a priority filter and asserts only matching tasks remain visible
- [ ] Covers edge case: filtering to a priority with no tasks shows the empty state message
- [ ] Test runs in CI and passes
- [ ] Test sets up and tears down its own task data

## Functional Requirements

- FR-1: Add `priority` field to tasks table ('high' | 'medium' | 'low', default 'medium')
- FR-2: Display colored priority badge on each task card
- FR-3: Include priority selector in task edit modal
- FR-4: Add priority filter dropdown to task list header
- FR-5: Sort by priority within each status column (high to medium to low)

## Non-Goals

- No priority-based notifications or reminders
- No automatic priority assignment based on due date
- No priority inheritance for subtasks

## Technical Considerations

- Reuse existing badge component with color variants
- Filter state managed via URL search params
- Priority stored in database, not computed

## Success Metrics

- Users can change priority in under 2 clicks
- High-priority tasks immediately visible at top of lists
- No regression in task list performance

## Open Questions

- Should priority affect task ordering within a column?
- Should we add keyboard shortcuts for priority changes?

Checklist

Before saving the PRD:

  • Asked clarifying questions with lettered options
  • Incorporated user's answers
  • User stories are small and specific
  • Included a mandatory end-to-end (E2E) test story as the last user story
  • Functional requirements are numbered and unambiguous
  • Non-goals section defines clear boundaries
  • Saved to tasks/prd-[feature-name].md
  • Suggested next steps: /prd-to-spec (optional) and /to-issues

FAQ

What does the prd skill do?

Generate a Product Requirements Document (PRD) for a new feature. Use when planning a feature, starting a new project, or when asked to create a PRD. After PRD is confirmed, use /prd-to-spec (optional) for technical design, then /to-issues to create implementable tickets. Triggers on: create a prd, write prd for, plan this feature, requirements for, spec out, 写PRD, 需求文档, 需求分析, 规格说明.

How do I install prd?

Run npx skills add https://github.com/smallnest/goal-workflow --skill prd in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/prd/ (personal) or .claude/skills/prd/ (project).

Which AI agents can use prd?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is prd safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains prd?

It is published by smallnest in smallnest/goal-workflow. It has 534 recorded installs.

More from smallnest/goal-workflow

View all →

smell

smallnest/goal-workflow

Detect software architecture bad smells, algorithmic complexity hotspots, and anti-patterns in a codebase. Produces a detailed markdown report identifying violations of architectural principles, design patterns, code quality, and performance complexity. Triggers on: smell, code smell, architecture smell, find anti-patterns, detect bad smells, complexity analysis, 代码坏味道, 架构坏味道, 反模式, 找出坏味道, 复杂度分析.

humanize-it

smallnest/goal-workflow

对指定文档进行去 AI 味的改写。自动选择最合适的人性化策略(humanizer-zh / humanize-chinese / technical-writing), 迭代改写直到效果达标或迭代 42 次为止。适用于中文文本的去 AI 化处理,包括通用文章、技术文档、学术论文等。 Use when user says: "humanize this", "去AI味", "降AIGC", "人性化改写", "改成人话", "去除AI痕迹", "humanize document", "make text human-like", "去机器味", "降低AI率", "过AIGC检测"

Docs & Writing534 installs

insight-diagram

smallnest/goal-workflow

为任意项目生成 UML 图、架构图和流程图。分析代码库后让用户选择要生成的图表类型,使用 architecture-diagram skill 渲染为 HTML+SVG,保存到 docs/ 目录。适用于任何软件项目的文档可视化。

Docs & Writing524 installs

refactor

smallnest/goal-workflow

Expert code refactoring based on Martin Fowler's catalog — improve maintainability without changing behavior. Covers code smells, composing methods, moving features, organizing data, simplifying conditionals, method calls, and generalization. Triggers on: refactor, 重构, clean up, improve code, code smell, extract method, rename, simplify.

modern-go

smallnest/goal-workflow

Modernize Go code by applying version-appropriate idioms and APIs (gofix-style transformations). Scans go.mod for the Go version, then transforms Go source files to use modern patterns—from Go 1.0 through 1.26+. Use when the user says "现代化","现代Go语言", "地道的", "idiomatic", "modernize", "modern-go", "update Go code", "gofix", or wants to upgrade Go idioms.

review-it

smallnest/goal-workflow

Code review closeout for Claude Code, Codex, OpenCode, DeepSeek TUI, and Antigravity CLI: local dirty changes, branch vs main, parallel tests.

Popular code quality & workflow skills

View category →

grill-me

mattpocock/skills

A relentless interview to sharpen a plan or design.

Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.

handoff

mattpocock/skills

Compact the current conversation into a handoff document for another agent to pick up.

domain-modeling

mattpocock/skills

Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.

codebase-design

mattpocock/skills

Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.

diagnosing-bugs

mattpocock/skills

Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.