Interviews an idea into a PRD file covering situation, problem, success, boundary, and journey states, and stops before any technical design. Use when the user says "write the PRD", "create the PRD", "PRD", "product spec", "product requirements", "tlc-prd", or "what does the product need to decide". Do NOT use for designing a solution, choosing technology, publishing the document, or cutting the PRD into tasks.
77
97%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Find out where this effort actually is. Understand the problem. Decide whether to solve it. Write that down as a PRD file, and stop.
SITUATION ────→ PROBLEM ───────→ VERDICT ───────→ FILE
(where this (no solution (a stop, or a (.prd/<slug>.md,
effort is) proposed yet) short record) nothing else)These are not a script, they are the prerequisite order. Ask whatever is answerable given what is settled, and stop when nothing answerable is left. Whether has where we are as a prerequisite. Marching the sections as a form is how a PRD asks an effort that never shipped what its problem costs today.
The failure that matters is converging early: proposing a solution on turn two, hearing "sure", and manufacturing a decision. Everything below exists to make that harder.
The artifact is one Markdown file a product person can read and hand to someone else without having been in the room. It records the bet. It does not record how to build it.
Ask what is answerable now. A question whose prerequisite is still open is a guess you will then treat as a finding. You are done when nothing answerable is left, not when every heading below has been visited.
Nothing is owed a paragraph merely because it exists. A step with no input costs a line. A section with no content does not appear in the file.
Every question carries your recommended answer and the reason, in a line. A question you have no recommendation for is usually one to look up. Facts you look up. Product opinion, priority, and appetite for risk are the user's.
Keep delivery small. One question when the answers depend on each other, two when they do not. Ten at a time is a form, and people answer forms by agreeing.
Some questions cannot be answered by talking. How it should feel, one page or three, needs something to react to. Route it out: a spike where only building answers it, a design pass where only seeing it does. That routing is a result. Record it under Open questions. Do not grind it into a fake decision.
Some efforts do not need a PRD. Where little is at stake, the answer is reversible in an afternoon, and nobody disagrees, give the recommendation in a paragraph and stop. No file. The bar is all three at once. Any one missing and the interview runs.
Record four facts, one line each, so a reader later can tell a thin problem section from a thin effort.
Nothing technical happens here. People arrive holding a solution. Recover the problem it was an answer to.
Decide which kind of problem this is first. The questions differ.
Never run one kind's questions over another. "What breaks if we do nothing" answers itself under absence. Under construction the true reply is "the project stalls". Treating either as a finding talks a team out of work that was never in question.
Push every abstraction until it has a number or a name, in the same turn. "Users are frustrated" means which users, doing what, how often.
When there is no end user, only the cast changes. Whoever carries the work hurts, the next piece of work hurts, the team hurts. The journey is the operational sequence. Skipping the questions because the work is internal is how internal work loses to other work.
Before fetching anything, say which number would change the decision. Then go get that one.
Use whatever the environment actually exposes: usage numbers, complaints, a queue, a spreadsheet, a log of what happened. Never build a dependency on one of them being there. Where nothing is connected, ask the room.
When the number is missing, ask. Record what nobody can measure and what they told you instead, each marked as what it is. For a capability that does not exist there is nothing to measure yet.
The number that moved the verdict belongs in Problem, in one line, with where it came from. Evidence is not its own section in the file.
Walk the actual sequence and confirm it back. The output is the states that matter and what should happen in each.
A number changes which states are worth the trouble. Where almost all the volume takes one path, that path's empty, expired, and abandoned deserve real questions. The other path deserves a line.
Every real sequence has more states than the happy one. Empty, first time, the retry, the half-finished, the expired, the unauthorised, the one where the user walks away and comes back tomorrow. Put them to the user as concrete questions.
These are product states: what should happen. How it is built is not asked here: concurrency, idempotency, authorization mechanics, and observability stay out. If answering needs a product opinion, ask it. If it needs a look at the build, or a design, it waits, and it does not enter this file.
Confirmed states land in the PRD's Journey table. That table is the product acceptance criteria. A state the user confirmed and the file does not contain is the concrete form of writing too little.
Say which questions this PRD answers and which it does not, and get agreement before the verdict. Without a boundary, "understand the problem" becomes an audit.
Widen the solution space once, before the verdict. Ask what would remove the cost you just measured without building the thing that was proposed. Changing a default. Removing the step. Wording that stops the confusion upstream. Doing it by hand for the first ten cases. Solving the half that carries most of the cost. Buying a product that already does this, bounded to whether one exists and roughly what it costs against the time it replaces. Noting a category of product exists is not proposing a design.
Most get discarded in a line. When one survives, say which part of the measured cost it removes and which it leaves. That comparison happens here. After the verdict, nobody reopens what to write down while comparing how to build it.
Where the decision was already committed, this is a record: one line naming who committed and when. If the problem work contradicts the commitment, say so and stop.
Where it is open, four outcomes, and all four are real: build, build something smaller or different, not now, do not build.
Under construction the verdict is about sequence. "Not now, after X" carries what stalls while it waits and what gets written twice if it arrives later.
"Smaller or different" is a new proposal. The problem section has to still hold against it: which part of the measured cost it removes and which it leaves.
"Not now" and "do not build" carry their own case, in the same units as the cost of doing it. What it costs to stay as we are. What would have to become true to change the answer.
State the verdict with the reason. Then stop. The user confirms before you write the file. Do not write the file, and do not discuss how to build it, until they confirm.
Say what would make this worth having done, in the problem's own unit. "It shipped" is not success.
Three lines. Worked if — the outcome, and roughly by when. Going wrong — visible in days, what it looks like when the bet is failing. Review — a date or a trigger, and who looks.
Where little is at stake, the first line alone.
Where the outcome cannot be measured, name an observable proxy, or name what would have to be measured and whether that is part of this work. Under construction the proxy is structural: the work that was waiting can start, and what was only a stand-in is gone.
Nothing in this section becomes a test of the build. The Journey table is the product acceptance criteria. "Refunds fall by a third" cannot be proven by inspecting the build.
Write the file only after the user confirms the verdict, or immediately when Situation established the decision was already committed and the problem work does not contradict it.
Read references/document-format.md at that moment. Do not load it during the interview.
Write .prd/<slug>.md in the current project. <slug> is the title in kebab-case, in the language of the document. If that file already exists, confirm before replacing it. If the user names a different path, use that path.
The prose follows the language of the conversation. Section headings stay as in the format file. Identifiers are never translated.
A declined verdict (not now or do not build) writes Status, Situation, Problem, and Boundary. What would have to become true to reopen it goes in Boundary. Do not invent Journey or Success for work you just declined.
After writing, tell the user the path and the status. Do nothing else with the file.
User says: "I want a PRD so members can save posts." Actions:
references/document-format.md and write .prd/save-posts.md.
Result: one PRD file. Status names who confirmed and when. No technical design, no publish step.User says: "We already decided members can save posts. Write the PRD." Actions:
.prd/save-posts.md with Status recording the commitment.
Result: a PRD a reader can use without the conversation. The verdict line is the commitment, not a fresh gate.User says: "Design the bookmarks schema" or "break this PRD into tasks."
Actions: do not run this skill. This skill produces the PRD file and stops.
Result: no .prd/ file from this request.
User says: "Change the save button label to Save." Actions: the change is reversible in an afternoon, the blast radius is one label, and nobody is disagreeing. Recommend the copy in a paragraph and stop. Result: no file.
Cause: they arrived holding "we need a cache" or a screen spec. Solution: recover the problem. Constraints and substitutes stay. Technology, schema, and API stay out. If they insist on a design, this skill is the wrong one. Write nothing technical into the file.
Cause: the file exists and they want it somewhere else. Solution: the file is the output. Publishing it is their job. Do not create, upload, or sync a page.
Cause: "users are frustrated" was written down instead of pushed. Solution: go back. Which people, doing what, how often, in which unit. A vague answer is not a finding.
Cause: nobody measures it, or the capability does not exist yet. Solution: ask the room. Write the line that says it is unmeasured and what they told you. Do not treat silence as "small".
tech-leads-club/agent-skills
59f94a5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.