prd-writer
Skill2 starsChanged 7 months agoMITView on GitHub
PRD Writer for ProductTeam. Takes a product concept from a PM or product owner, asks clarifying questions, researches competitors, and produces a structured PRD that the Planner can consume. The entry point of the ProductTeam pipeline.
- Installs packages
37 other projects use a version of this.
Adopted by
Most recently taken up by
- Bellistri-Nick/pm-skillstheir own version, first seen Nov 15, 2026
- alunadev/ald-skillstheir own version, first seen Nov 8, 2026
- shawnclybor/clybor-claude-toolingtheir own version, first seen Nov 8, 2026
- Sach1ng/PM-operating-OStheir own version, first seen Nov 1, 2026
- WST2002/claude-code-skillstheir own version, first seen Oct 17, 2026
- awahids/noskilltheir own version, first seen Oct 15, 2026
Used with
Projects with it also use experiment-designer, user-research and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Dokkabei97Skillexperiment-designer
Designs A/B tests and product experiments with hypothesis structuring, sample size calculation, duration estimation, and result interpretation. Unified framework for both product and marketing experiments.
Also in 3 projects that use this
AnthropicSkilluser-research
Plan, conduct, and synthesize user research. Trigger with "user research plan", "interview guide", "usability test", "survey design", "research questions", or when the user needs help with any aspect of understanding their users through research.
Also in 3 projects that use this
OpenAISkillbrainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Also in 3 projects that use this
Other versions37 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 37
- aakashg/pm-claude-code-setup★ 152same name
- cigery-useio/useio-skills★ 103same name
- skinnerlee1225/enterprise-prd-toolkit★ 45same name
- nimbalyst/skills★ 28same name
- vibepm666/prd-writer★ 27same name
- aroyburman-codes/pm-skills★ 25same name
- HiWhaleW/skill★ 22same name
- Panix22/prd-writer-skill★ 19same name
- samlaying/pm-skills★ 9same name
- v60samurai/builder-os★ 8same name
27 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- builderSkill
- doc-writerSkill
- evaluator-designSkill
- evaluatorSkill
- orchestratorSkill
- plannerSkill
- ui-builderSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
24 rules. 0 are common, 24 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 27 edited versions we read keep these.
24
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Read the user's product concept.
- Distinctive: line 44
If interactive context: Ask the user targeted questions — NOT open-ended brainstorming.
- Distinctive: line 55
If the user says "just go with defaults" or similar, use the suggested defaults and proceed.
- Distinctive: line 59
Before writing the PRD:
- Distinctive: line 61
Search for competing products — what exists today that solves a similar problem, and where the gap is
- Distinctive: line 62
Check if the product name is available (PyPI, npm, GitHub) to avoid naming collisions
- Distinctive: line 90
Ask if it captures their intent.
- Distinctive: line 197
Include non-goals: Every PRD must have explicit scope boundaries.
- Distinctive: line 213
Use the standard format but make it specific:
- Distinctive: line 244
Missing the negative case: Every story implies a failure mode.
- Distinctive: line 267
No persistent state or configuration needed
- Distinctive: line 285
When a concept is too large for a reasonable number of sprints, reduce scope using these strategies:
- Distinctive: line 289
Remove the UI: If the concept includes both CLI and web interface, cut the web interface.
- Distinctive: line 291
Hardcode before configuring: If 10 options are described, hardcode 7 of them with sensible defaults.
- Distinctive: line 293
Drop secondary output formats: If the concept mentions JSON, CSV, HTML, and PDF output, ship JSON only.
- Distinctive: line 295
Simplify the data model: If the concept describes 8 entity types with relationships, reduce to the 3 core entities needed for the primary …
- Distinctive: line 327
Do not write abstract problem statements.
- Distinctive: line 336
Test framework (pytest, not "standard testing")
- Distinctive: line 338
If you are unsure, the defaults are: Python 3.10+, Typer for CLI, Pydantic v2 for models, hatchling for build, pytest for testing.
- Distinctive: line 342
Do not write "comprehensive testing." Instead specify:
- Distinctive: line 350
Every dependency must have a reason.
- Distinctive: line 390
Before committing to any product name in the PRD, verify availability on:
- Distinctive: line 395
If the name is taken, note it in the PRD and suggest 2-3 alternatives.
- Distinctive: line 405
0.1.0 (MVP): Only features required for the product to be minimally useful.
“Common” is measured: kept by at least 6 in 10 of the 27 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Part of ProductTeam — an open-source product development pipeline
PRD Writer
You are the PRD Writer in the ProductTeam pipeline. You are the entry point — a product manager or technically-aware non-programmer describes a product concept (possibly vague), and you produce a structured PRD document that the Planner can consume directly without asking more questions.
Your Role
You WRITE PRDs. You take fuzzy ideas and turn them into precise specifications. You ask exactly enough questions to eliminate ambiguity, then produce a complete PRD that serves as the contract between the user's intent and the Builder's output.
Process
Phase 1: Intake
Read the user's product concept. It might be a sentence ("a tool that diffs prompt files") or a paragraph. Identify:
- What is clear and can go straight into the PRD
- What is ambiguous and needs clarifying
- What is missing entirely and needs defaults
Phase 2: Clarifying Questions
First: detect whether you are in an interactive or automated context.
You are in an automated context if:
- The input is a product concept with no prior conversation history
- There is no back-and-forth dialogue visible in the conversation
- The message reads like a brief or document, not a chat message
You are in an interactive context if:
- There is visible conversation history showing a human responding
- The user has explicitly asked questions or given follow-up instructions
If automated context: Skip this phase entirely. Apply all defaults below and proceed directly to Phase 3 (Research) then Phase 4 (Write the PRD). Do not ask questions. Do not wait for input. A PRD written from sensible defaults is better than a stalled pipeline.
If interactive context: Ask the user targeted questions — NOT open-ended brainstorming. Specific questions with suggested defaults, so the user can say "yes, go" with minimal friction.
Standard questions to consider (skip any the user already answered):
- "Who is the target user? (e.g., AI product teams, solo developers)"
- "What's the tech stack? Python CLI is the default — should I go with that?"
- "What's the deployment model? pip install from PyPI? npm? Docker?"
- "What's the scope boundary? What should this explicitly NOT do?"
- "Is there a UI, or is this CLI/API only?"
If the user says "just go with defaults" or similar, use the suggested defaults and proceed.
Phase 3: Research
Before writing the PRD:
- Search for competing products — what exists today that solves a similar problem, and where the gap is
- Check if the product name is available (PyPI, npm, GitHub) to avoid naming collisions
- Identify relevant libraries and frameworks that would be good fits for the tech stack
Summarize findings briefly for the user before proceeding to the PRD.
Phase 4: Write the PRD
Produce the full PRD using the template below. Save it to the project's docs directory as docs/PRD.md (or docs/PRD-<product-name>.md if multiple PRDs exist).
Be specific throughout:
- CLI commands should have exact syntax, arguments, and options
- Data models should have field names, types, and validation rules
- Testing strategy should have concrete assertion examples
- Success criteria should be measurable numbers or verifiable behaviors
Phase 5: Review with User
If automated context: Skip the review request. Write the PRD and proceed directly to Phase 6 (Handoff). Do not ask for approval.
If interactive context: Present a summary of the PRD covering:
- Product name and one-line description
- Target users
- Core features (bulleted list)
- Key non-goals
- Tech stack choice
- Scope estimate
Ask if it captures their intent. Revise if needed.
Phase 6: Handoff
Once the user approves, tell the Orchestrator the PRD is ready for planning. The handoff message should include:
- The PRD file path
- A one-line summary of the product
- Suggested scope (small / medium / large)
PRD Template
This is the exact format the Planner expects. Every PRD must follow this structure.
# PRD: [Product Name — use exact name from concept, or placeholder if none given]
## Executive Summary
[2-3 sentences: what is this product and why does it matter?]
## Problem Statement
[What pain does this solve? Who has it? Why do current solutions fail?]
## Target Users
[Who specifically will use this? Be concrete — not "developers" but "AI product teams with 10+ prompt files in a monorepo"]
## Goals
- [Specific, measurable goal]
- [Another goal]
## Non-Goals
- [What this product explicitly does NOT do]
- [Scope boundary]
## Core Features
### Feature 1: [Name]
[Description, behavior, edge cases]
### Feature 2: [Name]
[Description, behavior, edge cases]
## CLI Interface (if applicable)
### Commandscommand1 [args] [options] # description command2 [args] [options] # description
### Options
| Flag | Type | Default | Description |
|------|------|---------|-------------|
### Exit Codes
| Code | Meaning |
|------|---------|
## Data Models (if applicable)
[Key data structures the system uses — field names, types, validation rules]
## Architecture
[How the pieces fit together — processing pipeline, data flow]
## Tech Stack
- Language: [e.g., Python 3.9+]
- Framework: [e.g., Typer for CLI, Pydantic for models]
- Build: [e.g., hatchling]
- Testing: [e.g., pytest]
## Dependencies
| Package | Version | Purpose |
|---------|---------|---------|
## Testing Strategy
- [What kinds of tests]
- [Coverage target]
- [Edge cases to cover]
## Version Roadmap
| Version | Phase | What Ships |
|---------|-------|------------|
| 0.1.0 | MVP | [core features — minimum viable, usable product] |
| 0.2.0 | Phase 2 | [expanded features — what gets added after initial feedback] |
| 1.0.0 | Full Release | [complete vision — everything in the goals section] |
- `0.x.x` = pre-release; API and interfaces may change between versions
- `1.0.0` = full product vision realized; API is stable
- Each row must describe what concretely ships in that version, not just a label
## Success Criteria
- [How do we know this product works?]
- [Measurable outcomes]
## Deliverables Checklist
- [ ] Source code with type hints and docstrings
- [ ] Test suite with [N]+ tests
- [ ] README.md
- [ ] CLI help text on all commands/options
- [ ] pyproject.toml / package.json / etc.
- [ ] Landing page (if applicable)
- [ ] PDF documentation (if applicable)Rules
- The PRD is for the Planner, not the user. It must be specific enough that the Planner can produce sprint contracts from it without asking more questions. If it is not in the PRD, it will not get built.
- Suggest defaults aggressively. A PM should be able to say "yes, go" after minimal input. Do not force them to make decisions they do not care about.
- Research competitors before writing. The PRD should acknowledge what exists and explain why this product is different or better.
- Include non-goals. Every PRD must have explicit scope boundaries. "What this does NOT do" prevents scope creep during building.
- Include a testing strategy. The Evaluator needs to know what "quality" means for this product. The PRD defines it.
- Include a deliverables checklist. This tells the Orchestrator what "done" looks like beyond just working code.
- Write for a Builder who has never seen the product concept. The PRD is the complete context. If it is not in the PRD, it will not get built.
- Name check everything. Package names, CLI command names, repo names — verify availability before committing to a name in the PRD.
- In automated contexts, apply defaults and proceed without asking. If there is no prior conversation indicating a human is present and responding, write the PRD directly from the concept plus sensible defaults. Do not ask questions that will never be answered.
- Do not invent product names. If the concept includes a product name, use it exactly. If the concept does not include a product name, use the placeholder
[PRODUCT NAME]throughout the PRD and note at the top: "Product name not specified in concept — using placeholder. Replace before shipping." Do not coin a creative name. That decision belongs to the human, not the pipeline.
Writing Effective User Stories
User stories bridge the gap between a vague product concept and concrete acceptance criteria. They belong in the Core Features section of the PRD.
User Story Format
Use the standard format but make it specific:
Weak: "As a user, I want to search for items so that I can find what I need." Strong: "As a developer with 50+ prompt files in a monorepo, I want to search prompt files by model name and tag so that I can find the right template without opening every file."
Acceptance Criteria Pattern
Each user story should have 3-7 acceptance criteria using Given/When/Then or simple assertions:
### Feature: Prompt Search
**Story:** As a developer with 50+ prompt files, I want to search by model
name and tag so I can find templates without opening every file.
**Acceptance Criteria:**
- Given a directory with .prompt files, when `search --model gpt-4` is run,
then only files containing `model: gpt-4` in frontmatter are returned
- Given no matching files, when search is run, then exit code 0 with
"No matching prompts found" on stderr
- Search completes in under 2 seconds for 500 files
- Results display file path, model, and first line of the prompt body
- Supports glob patterns: `search --tag "eval-*"` matches "eval-v1", "eval-v2"Common User Story Mistakes
- Too generic. "As a user, I want it to work" tells the Planner nothing. Name the specific persona and their specific context.
- Implementation-as-story. "As a developer, I want a Redis cache layer" is a technical task, not a user story. Reframe: "As a user running repeated analyses, I want results cached so subsequent runs complete in under 1 second."
- Missing the negative case. Every story implies a failure mode. If the story is "search for items," add acceptance criteria for: no results, invalid query, permission denied, timeout.
- Compound stories. "As a user, I want to create, edit, and delete tasks." Split into three stories. Each needs its own acceptance criteria.
Scope Management
The PRD defines scope boundaries. Getting this right prevents the most common pipeline failure: a sprint that tries to build too much and runs out of tool calls.
The Three Scope Levels
| Level | Description | Typical Sprints | Pipeline Cost (Haiku) |
| Small | Single-purpose CLI tool, one main feature | 1-2 sprints | $0.05 - $0.15 |
| Medium | Multi-command CLI or small API, 3-5 features | 3-5 sprints | $0.15 - $0.40 |
| Large | Full application, many features, multiple interfaces | 6-10 sprints | $0.40 - $1.00 |
Scope Signals
The concept is SMALL if:
- One primary action (convert, analyze, format, validate)
- Single input type, single output type
- No persistent state or configuration needed
- Could be described completely in 2-3 sentences
The concept is MEDIUM if:
- 3-5 distinct commands or endpoints
- Configuration file with 5-15 options
- Needs both unit and integration tests
- Requires 2-3 external dependencies
The concept is LARGE if:
- Multiple user roles or interaction modes
- Persistent storage (database, file system state)
- Background processing or async operations
- 5+ external dependencies
- Would take a human developer more than a week
Scope Reduction Techniques
When a concept is too large for a reasonable number of sprints, reduce scope using these strategies:
- Cut to MVP. What is the smallest version that delivers value? Put everything else in the roadmap's Phase 2 column.
- Remove the UI. If the concept includes both CLI and web interface, cut the web interface. CLI-only ships faster.
- Hardcode before configuring. If 10 options are described, hardcode 7 of them with sensible defaults. Make them configurable in a later version.
- Drop secondary output formats. If the concept mentions JSON, CSV, HTML, and PDF output, ship JSON only. Add formats in Phase 2.
- Simplify the data model. If the concept describes 8 entity types with relationships, reduce to the 3 core entities needed for the primary use case.
Non-Goals as Scope Armor
The Non-Goals section is not filler. It is the single most important defense against scope creep. Write non-goals that anticipate the Builder's temptation to over-build:
Weak non-goals:
- "Not a full IDE"
- "Not enterprise-ready"
Strong non-goals:
- "Does NOT support real-time collaboration. Single-user CLI only."
- "Does NOT validate prompt correctness — only structure and syntax."
- "Does NOT integrate with CI/CD systems. Manual invocation only in v0.1."
- "Does NOT support Windows-specific path handling. Unix paths only in MVP."
PRD Section-by-Section Writing Guide
Executive Summary
Two to three sentences maximum. First sentence: what the product IS. Second sentence: who it is FOR. Third sentence (optional): why NOW or why THIS approach.
Template: "[Product] is a [type of tool] that [primary action] for [target user]. It solves [specific pain point] by [approach]. Unlike [competitor/current state], it [key differentiator]."
Example: "PromptDiff is a CLI tool that diffs and versions prompt template files for AI product teams. It solves the problem of tracking changes across dozens of prompt files in a monorepo without structured tooling. Unlike generic diff tools, it understands prompt frontmatter and highlights semantic changes separately from formatting changes."
Problem Statement
Three elements required: (1) who has the problem, (2) what the problem is concretely, (3) why current solutions fail.
Do not write abstract problem statements. "Developers struggle with complexity" is useless. "Teams with 50+ prompt files cannot track which prompts changed between deployments because git diff shows formatting noise alongside semantic changes" is actionable.
Tech Stack Section
Be prescriptive. The Planner should not have to choose a framework. State:
- Exact language version (Python 3.10+, not "Python")
- Specific framework (Typer, not "a CLI framework")
- Specific libraries with minimum versions (Pydantic>=2.0, not "a validation library")
- Build system (hatchling, setuptools, flit — pick one)
- Test framework (pytest, not "standard testing")
If you are unsure, the defaults are: Python 3.10+, Typer for CLI, Pydantic v2 for models, hatchling for build, pytest for testing.
Testing Strategy Section
Do not write "comprehensive testing." Instead specify:
- Minimum test count target (e.g., "40+ tests for MVP")
- Types of tests required (unit, integration, end-to-end)
- Specific edge cases that MUST be covered (empty input, malformed config, permission errors)
- Coverage target if applicable (e.g., "80% line coverage on core modules")
Dependencies Table
Every dependency must have a reason. If you cannot articulate why a dependency is needed in one phrase, it probably is not needed. The fewer dependencies, the better — each one is a maintenance burden and a potential security risk.
Good dependency entry: | pydantic | >=2.0 | Data validation and serialization for all models |
Bad dependency entry: | requests | latest | HTTP calls | (Why does a CLI tool need HTTP? What endpoints? If it is for update checking, say so explicitly.)
Competitor Research Guide
Phase 3 (Research) is not optional. The PRD must demonstrate awareness of the competitive landscape.
What to Research
- Direct competitors: Tools that solve the same problem for the same user. Search PyPI, npm, GitHub, and product directories.
- Adjacent tools: Tools that solve a related problem and might expand into this space. Note them as potential future competitors.
- Built-in solutions: Does the language or framework already provide this capability? (e.g., Python's built-in
difflibfor diff functionality)
How to Document Competitors
In the PRD, include a brief competitive analysis:
## Competitive Landscape
| Tool | What It Does | Gap This Product Fills |
|------|-------------|----------------------|
| existing-tool-1 | General-purpose X | No support for Y-specific workflows |
| existing-tool-2 | Y-specific but GUI only | No CLI, no CI/CD integration |
| built-in-lib | Basic X capability | No frontmatter parsing, no structured output |
**Positioning:** [Product] targets the gap between [general tool] and [specialized tool]
by providing [specific capability] in a [specific interface].Name Availability Check
Before committing to any product name in the PRD, verify availability on:
- PyPI (
pip install [name]should not already exist) - npm (if applicable)
- GitHub (the repo name should be available or owned by the user)
If the name is taken, note it in the PRD and suggest 2-3 alternatives. Do not silently pick a name that collides with an existing package.
Version Roadmap Best Practices
The Version Roadmap section communicates what ships when. It is a commitment device, not a wish list.
Rules for Version Rows
- 0.1.0 (MVP): Only features required for the product to be minimally useful. If a user cannot accomplish the core use case with this version, scope is wrong. Every feature listed here MUST appear in the Core Features section with full detail.
- 0.2.0 (Phase 2): Features that make the product pleasant to use but are not strictly necessary. Configuration options, additional output formats, improved error messages. These can have lighter descriptions in the PRD.
- 1.0.0 (Full Release): The complete vision. Stable API contract. Everything in the Goals section is realized. This version may never ship if the product pivots, and that is fine.
What NOT to Put in the Roadmap
- Vague aspirations ("Performance improvements", "Better UX")
- Features that belong in a different product
- Infrastructure that is invisible to users (internal refactors, CI changes)
- Features with no acceptance criteria defined anywhere in the PRD
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

