PRD
Turn the current conversation and codebase understanding into a PRD. Do NOT interview the user — synthesize what is already known.
Process
Explore the repo to understand the codebase, if not already done. Follow the domain-doc consumer rules in ${CLAUDE_PLUGIN_ROOT}/skills/grill-docs/reference/domain-docs.md: read .yoke/context.md and the relevant .yoke/adr/, use the glossary's vocabulary throughout the PRD, and flag any ADR the PRD contradicts. Also read the git memory of the modules the PRD touches per ${CLAUDE_PLUGIN_ROOT}/skills/gca/reference/history-reading.md — active Constraint: entries and past Rejected: approaches belong in Implementation Decisions.
Sketch the major modules to build or modify. Look for deep modules to extract that can be tested in isolation. A deep module encapsulates substantial functionality behind a simple, testable interface that rarely changes. Decide the module breakdown and which modules are test-worthy yourself, and record both in the PRD's Implementation Decisions and Testing Decisions sections — do not stop to interview the user.
Write the PRD using the template below.
Build the slug — an English kebab-case description, prefixed with a ticket id only if one exists in context (e.g. 86-balance-on-accounts, otherwise dark-mode-settings). Derive the PRD title from the slug's human-readable form and add it as a top-level # <title> heading at the top of the PRD body. Save a local copy to .yoke/ai/<slug>/<slug>-prd.md (mkdir -p .yoke/ai/<slug> first).
Publish to GitHub. Follow ${CLAUDE_PLUGIN_ROOT}/skills/issues/reference/github-issues.md for the gh conventions and triage labels. First check it is safe to publish: only when an open GitHub issue already carries the same title, ask the user whether to update it (gh issue edit <n> --body-file ...) or create a new one. A stale local .yoke/ai/<slug>/<slug>-prd.md with no matching open issue is not ambiguous — overwrite it and create the issue without asking. Otherwise:
gh issue create --title "<PRD title>" --body-file .yoke/ai/<slug>/<slug>-prd.md
Apply the ready-for-agent label per the reference (create it if the repo lacks it, unless the user objects). Then set the issue's type to Feature per the reference's "Issue types" section — a best-effort API call after creation; if the repo has no issue types, leave it untyped and warn rather than failing. Write the resulting issue URL into the local PRD artifact as a **Tracking:** <URL> line directly under the # <title> heading, so /yoke:issues can later use it as the parent for sub-issue linking; skip the write if a **Tracking:** line already exists. Finally, print the issue URL.
If gh is not authenticated or there is no GitHub remote, keep the local copy only and tell the user where it is.
Problem Statement
The problem the user faces, from the user's perspective.
Solution
The solution to the problem, from the user's perspective.
User Stories
A LONG, numbered list of user stories. Each follows this format:
- As an , I want a , so that
Make it extensive — cover every aspect of the feature.
Implementation Decisions
A list of implementation decisions. This can include:
- The modules that will be built/modified
- The interfaces of those modules that will be modified
- Technical clarifications from the developer
- Architectural decisions
- Schema changes
- API contracts
- Specific interactions
Do NOT include specific file paths or code snippets. They go stale fast.
Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it within the relevant decision and note briefly that it came from a prototype. Trim to the decision-rich parts — not a working demo, just the important bits.
Testing Decisions
A list of testing decisions. Include:
- A description of what makes a good test (only test external behavior, not implementation details)
- Which modules will be tested
- Prior art for the tests (i.e. similar tests in the codebase)
Out of Scope
What is out of scope for this PRD.
Further Notes
Any further notes about the feature.
Rules
- Synthesize from existing context — don't interview the user.
- Use the project's domain glossary and respect ADRs. Pair with
/yoke:grill-docs upstream to build that vocabulary.
- To break the PRD into implementation tickets, hand off to
/yoke:issues.
- Language: match the conversation language, or follow the project-level definition in CLAUDE.md / AGENTS.md.
1---2name: prd3description: Turns the current conversation and codebase understanding into a PRD, publishes it as a GitHub issue, and saves a local copy in .yoke/ai. Does not interview — synthesizes what is already known. Activates when the user writes "prd", "create a prd", "write a prd", "turn this into a prd", "product requirements doc", "draft requirements".4---56# PRD78Turn the current conversation and codebase understanding into a PRD. Do NOT interview the user — synthesize what is already known.910## Process11121. **Explore the repo** to understand the codebase, if not already done. Follow the domain-doc consumer rules in `${CLAUDE_PLUGIN_ROOT}/skills/grill-docs/reference/domain-docs.md`: read `.yoke/context.md` and the relevant `.yoke/adr/`, use the glossary's vocabulary throughout the PRD, and flag any ADR the PRD contradicts. Also read the git memory of the modules the PRD touches per `${CLAUDE_PLUGIN_ROOT}/skills/gca/reference/history-reading.md` — active `Constraint:` entries and past `Rejected:` approaches belong in Implementation Decisions.13142. **Sketch the major modules** to build or modify. Look for deep modules to extract that can be tested in isolation. A deep module encapsulates substantial functionality behind a simple, testable interface that rarely changes. Decide the module breakdown and which modules are test-worthy yourself, and record both in the PRD's Implementation Decisions and Testing Decisions sections — do not stop to interview the user.15163. **Write the PRD** using the template below.17184. **Build the slug** — an English kebab-case description, prefixed with a ticket id only if one exists in context (e.g. `86-balance-on-accounts`, otherwise `dark-mode-settings`). Derive the PRD title from the slug's human-readable form and add it as a top-level `# <title>` heading at the top of the PRD body. Save a local copy to `.yoke/ai/<slug>/<slug>-prd.md` (`mkdir -p .yoke/ai/<slug>` first).19205. **Publish to GitHub.** Follow `${CLAUDE_PLUGIN_ROOT}/skills/issues/reference/github-issues.md` for the `gh` conventions and triage labels. First check it is safe to publish: only when an open GitHub issue already carries the same title, ask the user whether to update it (`gh issue edit <n> --body-file ...`) or create a new one. A stale local `.yoke/ai/<slug>/<slug>-prd.md` with no matching open issue is not ambiguous — overwrite it and create the issue without asking. Otherwise:2122 ```bash23 gh issue create --title "<PRD title>" --body-file .yoke/ai/<slug>/<slug>-prd.md24 ```2526 Apply the `ready-for-agent` label per the reference (create it if the repo lacks it, unless the user objects). Then set the issue's type to `Feature` per the reference's "Issue types" section — a best-effort API call after creation; if the repo has no issue types, leave it untyped and warn rather than failing. Write the resulting issue URL into the local PRD artifact as a `**Tracking:** <URL>` line directly under the `# <title>` heading, so `/yoke:issues` can later use it as the parent for sub-issue linking; skip the write if a `**Tracking:**` line already exists. Finally, print the issue URL.2728 If `gh` is not authenticated or there is no GitHub remote, keep the local copy only and tell the user where it is.2930<prd-template>3132## Problem Statement3334The problem the user faces, from the user's perspective.3536## Solution3738The solution to the problem, from the user's perspective.3940## User Stories4142A LONG, numbered list of user stories. Each follows this format:43441. As an <actor>, I want a <feature>, so that <benefit>4546<user-story-example>471. As a mobile bank customer, I want to see balance on my accounts, so that I can make better informed decisions about my spending48</user-story-example>4950Make it extensive — cover every aspect of the feature.5152## Implementation Decisions5354A list of implementation decisions. This can include:5556- The modules that will be built/modified57- The interfaces of those modules that will be modified58- Technical clarifications from the developer59- Architectural decisions60- Schema changes61- API contracts62- Specific interactions6364Do NOT include specific file paths or code snippets. They go stale fast.6566Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it within the relevant decision and note briefly that it came from a prototype. Trim to the decision-rich parts — not a working demo, just the important bits.6768## Testing Decisions6970A list of testing decisions. Include:7172- A description of what makes a good test (only test external behavior, not implementation details)73- Which modules will be tested74- Prior art for the tests (i.e. similar tests in the codebase)7576## Out of Scope7778What is out of scope for this PRD.7980## Further Notes8182Any further notes about the feature.8384</prd-template>8586## Rules8788- Synthesize from existing context — don't interview the user.89- Use the project's domain glossary and respect ADRs. Pair with `/yoke:grill-docs` upstream to build that vocabulary.90- To break the PRD into implementation tickets, hand off to `/yoke:issues`.91- Language: match the conversation language, or follow the project-level definition in CLAUDE.md / AGENTS.md.