agentleFS
mattstrublemattstruble/skills/prd-writing/SKILL.md

prd-writing

Skill2 starsChanged 4 months agoMITView on GitHub

Behavioral PRD writing — co-author a product requirements document through structured interview and codebase exploration, saved as a local Markdown file. Use when user wants to write a PRD, create a product requirements document, plan a new feature, define requirements, capture expected behaviors, or scope a project. Also trigger when the user mentions \"PRD\", \"product requirements\", \"requirements doc\", or wants to define what a system should do before implementation begins.

  • Reads credentials

16 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use feedback-synthesis, onboarding-flow and 2 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.
  • Dragoon0xSkill

    feedback-synthesis

    Turn raw customer feedback from multiple sources into clear product insights and priorities. Covers feedback collection, pattern recognition, and separating signal from noise. Use when feedback feels overwhelming, contradictory, or when the team can't agree on what users actually want.

    Also in 3 projects that use this

  • Dragoon0xSkill

    onboarding-flow

    Design first-run experiences that create the aha moment fast. Reduces time-to-value by sequencing actions, progressive disclosure, and contextual guidance. Use when building signup flows, product tours, or empty states.

    Also in 3 projects that use this

  • Microsoft AzureSkill

    git-workflow

    Squad branching model: dev-first workflow with insiders preview channel

    Also in 3 projects that use this

  • +1 more from Dragoon0x

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 8 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 12 edited versions we read keep these.

  • 8

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before interviewing, explore the repo.

    line 24
  2. Very specific:

    Do NOT read or surface the contents of secrets files (.env, *.key, credentials.*, secrets/).

    line 31
  3. Very specific:

    Check if docs/prd.md exists.

    line 35
  4. Distinctive:

    If starting from the existing PRD: use it to pre-populate interview answers and skip phases already well-covered.

    line 39
  5. Very specific:

    Ask one question at a time.

    line 43
  6. Distinctive:

    Do not batch questions even if the user asks you to — batching produces shallow answers that miss the nuance needed for a good PRD.

    line 47
  7. Distinctive:

    Before writing, present all captured behaviors grouped by capability area.

    line 82
  8. Very specific:

    Do NOT commit the file — not even if the user says "save it" or "finalize it".

    line 94
  9. Distinctive:

    Exact outcomes: No verdict words ("invalid", "malformed", "handles", "supports", "gracefully").

    line 145
  10. Distinctive:

    Be terse: Every unnecessary word is a potential error amplified downstream.

    line 155
  11. Distinctive:

    Each capability group should be independently shippable: If a group bundles unrelated concerns, split it.

    line 157
  12. Distinctive:

    Final check: Before you tell the user the file is written, run the reference's final check over the whole PRD and fix what it finds.

    line 159

“Common” is measured: kept by at least 6 in 10 of the 12 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Behavioral PRD Writing

Co-author a behavioral PRD for a repository through structured interview and codebase exploration. Output is docs/prd.md at the repo root.

The goal is a document that captures what the system should do — from the outside, in plain language — without prescribing how to build it. Downstream skills and processes generate stories, epics, and feature specs from this PRD.

Scope Model

PRD (per-repo) → Capability Groups (independently shippable) → Behaviors (testable statements)

Workflow

Step 1: Explore the codebase

Before interviewing, explore the repo. Understand what exists — code structure, existing docs, patterns, naming conventions. This grounds the interview in reality and prevents asking questions the codebase already answers.

Look for:

  • Existing documentation (README.md, CONTRIBUTING.md)
  • Code structure and module organization
  • Any prior PRDs, specs, or design docs in docs/

Do NOT read or surface the contents of secrets files (.env, *.key, credentials.*, secrets/).

Step 2: Check for an existing PRD

Check if docs/prd.md exists. If found, read it, briefly summarize what it covers, and ask:

"I found an existing PRD at docs/prd.md — it covers [brief summary]. Should I use it as a starting point, or start fresh?"

If starting from the existing PRD: use it to pre-populate interview answers and skip phases already well-covered. If starting fresh: proceed as if no PRD exists.

Step 3: Interview the user

Ask one question at a time. Provide a recommended answer with each question — this reduces friction and anchors the conversation. Fill in concrete details from the codebase before asking; never emit a literal [X] placeholder to the user.

Follow this sequence loosely; skip phases already answered by the codebase or the current conversation. If an answer is ambiguous or contradicts something found in the codebase, ask a follow-up before moving on. If the user gives two consecutive non-answers on the same question, move on and mark it as an Open Question.

Do not batch questions even if the user asks you to — batching produces shallow answers that miss the nuance needed for a good PRD. If the user pushes back, explain that one question at a time produces a better document.

Phase 1 — Problem & actors

Understand who has the problem and what's painful.

  • "Who are the primary users of this system?" (Recommended: [infer from codebase context])
  • "What problem does this solve that isn't solved today?"
  • "What's the most painful part of the current workflow?"

Phase 2 — Scenarios

Walk through concrete usage end-to-end.

  • "Walk me through what happens when a user [does the primary action] for the first time."
  • "What does a typical session look like end to end?"
  • "What's the most common thing a user will do with this?"

Phase 3 — Edge cases & failure modes

What breaks, what's weird, what happens at boundaries.

  • "What should happen if the service is unavailable during [primary action]?"
  • "Are there scenarios where two users would do [primary action] simultaneously?"
  • "What happens when the input is empty, malformed, or extremely large?"

Phase 4 — Scope boundaries

What's explicitly out.

  • "You mentioned [X] — is that something this PRD should cover, or is it a separate concern?"
  • "Are there adjacent features we should explicitly exclude?"

Step 4: Behavior coverage check

Before writing, present all captured behaviors grouped by capability area. Ask:

"Here are the capabilities and behaviors I've captured. What's missing?"

After each response, incorporate any new behaviors and ask again. If the user keeps adding new capability areas, note them as Open Questions or a future-phase section rather than expanding the current PRD indefinitely. Stop iterating when the user confirms completeness or provides no new behaviors after two consecutive rounds.

This is the primary quality gate — it catches missing use cases before they become implementation gaps.

Step 5: Write docs/prd.md

Read technical-writing/references/simplified-technical-english.md from the skills catalog before you write. Write the PRD in a single pass using the template below, in that Simplified Technical English, and apply the technical-writing skill's voice and revision rules. Create the docs/ directory if it doesn't exist. Write the file to docs/prd.md relative to the repository root. If overwriting an existing file, mention this to the user before writing.

Do NOT commit the file — not even if the user says "save it" or "finalize it". Writing the file to disk is the complete action. Tell the user the file is at docs/prd.md and that committing is their responsibility.

PRD Template

# PRD: [Product/Feature Name]

## Problem Statement
What problem exists, from the user's perspective.

## Terms
Each project term the behaviors use, with a one-sentence definition.
- **[term]**: [definition]

## User Stories
Short list establishing actors and motivations.
- As a [actor], I want [feature], so that [benefit]

## Expected Behaviors

### [Capability Group 1]
Today: [current behavior in one or two sentences, or "No current behavior."]
- When [condition], [actor] must [observable result].
- [actor] must [observable result].

### [Capability Group 2]
- Behavioral statement
- Behavioral statement

## Open Questions
- Unresolved design decisions go here, not buried as assumptions.

## Out of Scope
- What this PRD explicitly does not cover.

Notes on the template:

  • User Stories — keep to 3–8 entries. Just enough to establish actors and motivations, not a full specification.
  • Expected Behaviors — the heart of the document. Flat lists of plain behavioral statements, grouped by capability. Each group should be independently shippable; if a group bundles unrelated concerns, split it.
  • Table of Contents — add only when there are 5 or more capability groups.
  • Open Questions — captures uncertainty explicitly rather than burying it as assumptions.

Writing Guidelines

Apply these when writing the PRD. The Simplified Technical English reference applies to every section.

  1. Specify behavior, not structure. Describe what the system does from the outside. Don't prescribe class names, file layout, or internal architecture.
  2. One behavior per statement. Each statement names the actor, the condition, and one observable result, and uses "must" for the requirement. "When the export has no rows, the API must return an empty CSV file." Split a statement that contains "and" between two results.
  3. Exact outcomes. No verdict words ("invalid", "malformed", "handles", "supports", "gracefully"). Say what the user or caller observes.
  4. Today versus required. Each capability group opens with one "Today:" line. Behavior statements describe the required system; never describe current behavior without "Today".
  5. Define every term. Each project term in a behavior statement appears in Terms. Everyday words with a project meaning are terms.
  6. State intent, not mechanism. Say why something matters so downstream implementors can find better approaches.
  7. Make uncertainty visible. Unresolved decisions and missing numbers go in Open Questions. Don't bury assumptions in behavioral statements, and don't write "should" or "may" for a requirement.
  8. Be terse. Every unnecessary word is a potential error amplified downstream. Cut adjectives, qualifiers, and hedges that don't add meaning.
  9. Each capability group should be independently shippable. If a group bundles unrelated concerns, split it.
  10. Final check. Before you tell the user the file is written, run the reference's final check over the whole PRD and fix what it finds.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.