to-prd
Skill2 starsChanged 52 days agoMITView on GitHub
Turn the current conversation context into a PRD and publish it to the project issue tracker. Use when user wants to create a PRD from the current context.
132 other projects use a version of this, 99 of them edited.
Adopted by
Most recently taken up by
- ishandutta2007/Awesome-Claude-Skillstheir own version, first seen Nov 8, 2026
- kazemcodes/skill-treeedited, first seen Nov 8, 2026
- paureis/pau-skillsedited, first seen Nov 8, 2026
- snowfluke/tech-lead-skillstheir own version, first seen Nov 8, 2026
- clnnn/playbooktheir own version, first seen Nov 7, 2026
- Integralist/agent-skillstheir own version, first seen Nov 6, 2026
Used with
Projects with it also use zoom-out, request-refactor-plan and 6 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.
victorgarciaesgiSkillzoom-out
Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.
Also in 60 projects that use this
simo97Skillrequest-refactor-plan
Use this skill when user wants to create a refactor plan.
Also in 23 projects that use this
simo97Skilldesign-an-interface
Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions "design it twice".
Also in 24 projects that use this
kennethkeimSkillubiquitous-language
Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions "domain model" or "DDD".
Also in 23 projects that use this
AnasX7Skillscaffold-exercises
Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.
Also in 22 projects that use this
- +3 more from simo97
Other versions132 projects use a version of this.
Word for word · 0
None found.
Edited · 99
- GreyDGL/PentestGPT★ 16k60% same
- amazingloft999-droid/mattpocock-skills★ 42286% same
- Tiberriver256/mcp-server-azure-devops★ 39960% same
- ninehills/skills★ 28060% same
- InditexTech/weavejs★ 26666% same
- serejaris/personal-corp-os★ 24355% same
- serejaris/ris-claude-code★ 24355% same
- ayoubben18/ab-method★ 19283% same
- yamcodes/arkenv★ 15176% same
- alex-on-ai/WebReaper★ 14977% same
89 more not listed
Wrote their own version · 33
- heyongjun666/AICU-Graph★ 200same name
- alamops/skills★ 53same name
- AlemTuzlak/skills★ 45same name
- aveproject/ave★ 24same name
- Integralist/agent-skills★ 23same name
- GulajavaMinistudio/polya-sdlc-coder★ 16same name
- ishandutta2007/Awesome-Claude-Skills★ 16same name
- flpbalada/fb-skills★ 8same name
- snowfluke/my-tech-lead-flow★ 8same name
- snowfluke/tech-lead-skills★ 8same name
23 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 repository32 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ask-zslSkill
- codebase-designSkill
- code-reviewSkill
- commit-push-prSkill
- commitSkill
- decision-mappingSkill
- diagnoseSkill
- domain-modelingSkill
- git-branchSkill
- grill-with-docsSkill
- human-itlSkill
- improve-codebase-architectureSkill
- prototypeSkill
- setup-zsl-superpowersSkill
- tdd-parallelSkill
- tddSkill
- teach-me-the-codebaseSkill
- to-issuesSkill
- triageSkill
- verify-coverageSkill
- edit-articleSkill
- setup-pre-commitSkill
- steampipeSkill
- grillingSkill
- grill-meSkill
- handoffSkill
- timesheetSkill
- writing-great-skillsSkill
- afk-fanoutSkill
- afk-workerSkill
- morning-reviewSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
30 rules. 1 is common, 27 are distinctive, and 2 are very specific to this project.
1
Common
Most of the 127 edited versions we read keep these.
27
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Check with the user that these modules match their expectations.
- Very specific: line 28
Write the PRD using the template below, then publish it to the project issue tracker.
- Common: line 93
Do NOT include specific file paths or code snippets.
- Very specific: line 117
Do not hand-edit content between the BEGIN/END markers — scripts/sync_book_rules.py overwrites it from vendor/agent-rules-books/.
- Distinctive: line 127
Use when business software has enough domain complexity, language ambiguity, strategic differentiation, or integration risk that modeling …
- Distinctive: line 131
Use DDD selectively, but seriously.
- Distinctive: line 135
Before designing code, identify the business capability, classify the subdomain as Core, Supporting, or Generic, define the Bounded …
- Distinctive: line 136
Put the most modeling effort into the Core Domain.
- Distinctive: line 137
Do not apply full tactical DDD to simple CRUD, generic subsystems, or mainly technical problems.
- Distinctive: line 139
Treat the same word in different contexts as potentially different concepts.
- Distinctive: line 142
Keep integration contracts separate from internal models and test translations wherever meanings cross a boundary.
- Distinctive: line 143
Use local domain terms in code, tests, Commands, Domain Events, APIs, and conversations.
- Distinctive: line 144
Use Entities when identity and lifecycle matter.
- Distinctive: line 145
Use immutable, self-validating Value Objects when primitives hide domain meaning.
- Distinctive: line 146
Use Aggregates only as invariant and transactional consistency boundaries.
- Distinctive: line 147
Use Domain Events for meaningful past-tense business facts that clarify collaboration or integration.
- Distinctive: line 149
Keep frameworks, persistence mechanics, transport formats, REST representations, and infrastructure types out of the domain model.
- Distinctive: line 150
Prefer code that teaches the model: make domain assumptions explicit in names, tests, and events.
- Distinctive: line 151
Use Event Storming, scenarios, acceptance tests, modeling spikes, and domain-expert walkthroughs when workflow, terminology, policies, or …
- Distinctive: line 156
When language is fuzzy, generic, overloaded, or imported from another context, pause coding and sharpen the local Ubiquitous Language.
- Distinctive: line 157
When the core concern drifts, terms stop matching code, or supporting complexity hides the core, reassess subdomains, boundaries, and …
- Distinctive: line 158
When one model spreads across billing, identity, catalog, fulfillment, support, permissions, or other separate concerns, split or translate …
- Distinctive: line 159
When an upstream model, schema, UI, framework, API payload, transport object, or database shape starts defining the domain model, restore …
- Distinctive: line 160
When using Shared Kernel, require small stable overlap, joint ownership, and tests.
- Distinctive: line 161
When calling something an Anticorruption Layer, verify that real translation exists.
- Distinctive: line 162
When a request wants to load and mutate a large graph or several Aggregate roots, revisit the invariant boundary and ask whether eventual …
- Distinctive: line 163
When controllers, helpers, services, or transport-shaped application services contain business decisions, move behavior into the domain …
- Distinctive: line 164
When a Domain Event is command-like, vague, trivial, or emitted for every field change, redesign it as a specific business fact or remove …
- Distinctive: line 165
When a concept is represented as a primitive, flag, status code, enum, or boolean but carries domain rules, promote it to a richer concept …
- Distinctive: line 166
When delivery pressure tempts the team to skip design, use a short modeling spike, scenario, or acceptance test and record known modeling …
“Common” is measured: kept by at least 6 in 10 of the 127 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
This skill takes the current conversation context and codebase understanding and produces a PRD. Do NOT interview the user — just synthesize what you already know.
The issue tracker and triage label vocabulary should have been provided to you — run /setup-zsl-superpowers if not.
Process
- Explore the repo to understand the current state of the codebase, if you haven't already. Use the project's domain glossary vocabulary throughout the PRD, and respect any ADRs in the area you're touching.
- Sketch out the major modules you will need to build or modify to complete the implementation. Actively look for opportunities to extract deep modules that can be tested in isolation.
A deep module (as opposed to a shallow module) is one which encapsulates a lot of functionality in a simple, testable interface which rarely changes.
Check with the user that these modules match their expectations. Check with the user which modules they want tests written for.
From those modules, draw a high-level architecture diagram in ASCII for the top of the PRD. Show the major components (the modules from this step plus the external systems they talk to) as labelled boxes, and the primary data/control flow between them as arrows. Keep it to the dozen-or-so boxes that orient a reader — it's a map, not a wiring diagram, so omit incidental helpers and leave per-module internals to the Implementation Decisions section. Fence it in a plain ``` block so it survives copy/paste into the issue tracker.
Write each story at value altitude; push the testable detail into acceptance criteria. A user story is a slice of user value — who, what capability, why — and the story line must stay there: no endpoints, no status codes, no state names, no implementation. Every concrete, testable assertion moves down into the story's acceptance criteria, where technical detail belongs. For each story, write:
- The
As an <actor>, I want <capability>, so that <benefit>line — value only, no technical detail. - One or more
AC<n>: <assertion>sub-bullets — the acceptance criteria. Each states what public-interface behaviour a test would assert — an API result, a state transition, a rendered value, an emitted event (e.g. "POST /login with valid creds returns 200 + setssessioncookie; with invalid creds returns 401"). The acceptance criteria are the contract/verify-coverage's Tier B generates tests against, so be concrete: name the endpoint/state/event, not the implementation. When one capability needs several distinct assertions, give it several ACs — do not fracture it into multiple stories just to give each one a single observable (that is exactly what made earlier PRDs read like a flat list of acceptance criteria).
Refuse to draft a story with no automatable acceptance criterion. Visual/UX stories ("feels welcoming", "looks polished"), pure human-judgement stories ("legal signs off", "design reviews"), and real-external-system stories ("DNS propagates globally") cannot be pinned by an assertion. If the user wants one, push back: either reframe it with an automatable acceptance criterion (e.g. "feels welcoming" → AC "first-render Lighthouse score ≥ 90"), split it into a separate PRD that goes through a manual path (not
/tdd-parallel), or drop it. A story with no automatable acceptance criterion will be refused by/tdd-parallel's pre-flight.- The
- Write the PRD using the template below, then publish it to the project issue tracker. Apply both the
ready-for-agenttriage label (no additional triage needed — you just wrote it) and thebackloglabel (so it shows up on the project board).
<prd-template>Architecture Overview
A high-level ASCII architecture diagram, fenced in a plain ``` block, that orients the reader before they read a word of prose. Boxes are the major components/modules; arrows are the primary data and control flow between them and the external systems they touch.
<architecture-example>
```
┌──────────────┐ ┌──────────────────┐
│ Mobile App │──────▶│ API Gateway │
└──────────────┘ GET └────────┬─────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────────┐ ┌────────────┐ ┌──────────────┐
│ Auth Service │ │ Accounts │ │ Transactions │
└──────────────┘ └─────┬──────┘ └──────┬───────┘
▼ ▼
┌───────────────────────────┐
│ Postgres (ledger) │
└───────────────────────────┘
```
</architecture-example>Problem Statement
The problem that the user is facing, 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 story is written at value altitude — who/what/why, no technical detail — and carries one or more acceptance criteria (AC<n>:), the concrete testable assertions that /tdd-parallel and /verify-coverage consume:
1. As an <actor>, I want <capability>, so that <benefit>.
- AC1: <a public-interface behaviour a test would assert>
- AC2: <another, if the capability needs more than one assertion><user-story-example>
1. As a mobile bank customer, I want to see the balances on my accounts, so that I can make better informed decisions about my spending.
- AC1: GET /accounts returns 200 with a JSON list whose every element has a numeric `balance` field.
- AC2: the home-screen account card renders that balance formatted as currency.
- AC3: an account with no transactions still renders, showing a 0.00 balance.
</user-story-example>This list of user stories should be extremely extensive and cover all aspects of the feature. Keep the story line free of endpoints, status codes, and state names — those live in the acceptance criteria beneath it. Every story must carry at least one AC<n>: acceptance criterion; a story missing it blocks /tdd-parallel. The acceptance criteria are the contract Tier B generates tests against — be specific.
Implementation Decisions
A list of implementation decisions that were made. 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 may end up being outdated very quickly.
Testing Decisions
A list of testing decisions that were made. 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 types of tests in the codebase)
Out of Scope
A description of the things that are out of scope for this PRD.
Further Notes
Any further notes about the feature.
</prd-template><!-- BEGIN bundled-book-rules -->Bundled book rules
Do not hand-edit content between the BEGIN/END markers — scripts/sync_book_rules.py overwrites it from vendor/agent-rules-books/.
Rules from "Domain-Driven Design Distilled" by Vaughn Vernon
<!-- BEGIN domain-driven-design-distilled.mini.md v0.5 -->OBEY Domain-Driven Design Distilled by Vaughn Vernon
When to use
Use when business software has enough domain complexity, language ambiguity, strategic differentiation, or integration risk that modeling changes implementation decisions, but the project still needs the smallest effective DDD practice rather than ceremony.
Primary bias to correct
Use DDD selectively, but seriously. Start from business capability, subdomain importance, bounded context, and local language before tactical patterns, frameworks, persistence, APIs, or class shapes.
Decision rules
- Before designing code, identify the business capability, classify the subdomain as Core, Supporting, or Generic, define the Bounded Context, use its Ubiquitous Language, and choose only tactical patterns that earn their cost.
- Put the most modeling effort into the Core Domain. Keep Supporting and Generic Subdomains simpler unless their own complexity proves otherwise.
- Do not apply full tactical DDD to simple CRUD, generic subsystems, or mainly technical problems; strengthen the model only when invariants, lifecycle, language complexity, or integration risk justify it.
- Give every meaningful model one explicit Bounded Context. The context owns its language, rules, semantics, code structure, tests, and integration contracts.
- Treat the same word in different contexts as potentially different concepts. Translate at context boundaries instead of sharing domain classes or leaking foreign language into the local model.
- Choose context relationships deliberately: Partnership, Shared Kernel, Customer/Supplier, Conformist, Anticorruption Layer, Open Host Service, Published Language, Separate Ways, or Big Ball of Mud containment all imply different ownership and translation duties.
- Select integration style from business coupling and failure semantics: RPC requires acceptable request/response coupling; REST resources must not expose Aggregate internals; messaging must tolerate lag, duplicates, and ordering limits.
- Keep integration contracts separate from internal models and test translations wherever meanings cross a boundary.
- Use local domain terms in code, tests, Commands, Domain Events, APIs, and conversations. One concept gets one term, one term does not carry multiple meanings inside a context, and code is renamed when understanding improves.
- Use Entities when identity and lifecycle matter; make identity explicit and protect meaningful state transitions rather than exposing unrestricted setters.
- Use immutable, self-validating Value Objects when primitives hide domain meaning.
- Use Aggregates only as invariant and transactional consistency boundaries. Keep them small, modify through the root, reference other Aggregates by identity, avoid large object graphs, and usually change one Aggregate per transaction.
- Use Domain Events for meaningful past-tense business facts that clarify collaboration or integration; do not publish noisy field-change events.
- Application Services coordinate use cases by loading Aggregates, invoking domain behavior, saving results, and triggering integration work. They must not become the real domain model.
- Keep frameworks, persistence mechanics, transport formats, REST representations, and infrastructure types out of the domain model. Translate external data at the boundary and persist Aggregates without letting storage define the model.
- Prefer code that teaches the model: make domain assumptions explicit in names, tests, and events; expose richer concepts instead of hiding meaning behind flags, status codes, booleans, enums, helpers, or utilities.
- Use Event Storming, scenarios, acceptance tests, modeling spikes, and domain-expert walkthroughs when workflow, terminology, policies, or acceptance criteria are unclear. Timebox modeling and track modeling debt instead of drifting into detached analysis.
- Estimate and plan DDD work from modeling uncertainty, integration risk, implementation cost, team skill, and access to domain experts, not only from feature count.
Trigger rules
- When language is fuzzy, generic, overloaded, or imported from another context, pause coding and sharpen the local Ubiquitous Language.
- When the core concern drifts, terms stop matching code, or supporting complexity hides the core, reassess subdomains, boundaries, and modeling investment.
- When one model spreads across billing, identity, catalog, fulfillment, support, permissions, or other separate concerns, split or translate instead of reusing shared domain classes.
- When an upstream model, schema, UI, framework, API payload, transport object, or database shape starts defining the domain model, restore boundary translation.
- When using Shared Kernel, require small stable overlap, joint ownership, and tests; without governance, choose another relationship.
- When calling something an Anticorruption Layer, verify that real translation exists.
- When a request wants to load and mutate a large graph or several Aggregate roots, revisit the invariant boundary and ask whether eventual consistency is acceptable.
- When controllers, helpers, services, or transport-shaped application services contain business decisions, move behavior into the domain model or name the missing concept.
- When a Domain Event is command-like, vague, trivial, or emitted for every field change, redesign it as a specific business fact or remove it.
- When a concept is represented as a primitive, flag, status code, enum, or boolean but carries domain rules, promote it to a richer concept or Value Object.
- When delivery pressure tempts the team to skip design, use a short modeling spike, scenario, or acceptance test and record known modeling debt.
Final checklist
- Correct subdomain and Core Domain investment?
- Explicit Bounded Context and relationship to neighboring contexts?
- Ubiquitous Language visible in code, tests, Commands, Events, APIs, and conversations?
- Translation tested where external or foreign meanings cross boundaries?
- Tactical patterns used only where they clarify meaning or protect invariants?
- Aggregates small, root-protected, identity-referenced, and not graph-shaped?
- Application Services coordinating rather than owning business logic?
- Infrastructure, persistence, REST, and transport details kept out of the domain model?
- Modeling discoveries, acceptance tests, expert input, and modeling debt captured before shipping?
<!-- END domain-driven-design-distilled.mini.md --><!-- END bundled-book-rules -->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.

