To prd
An AI engineering skill suite that takes one idea from Ideate → Spec → Plan → Implement → Verify → Review → Ship — the human owns intent, the agent owns execution, ending at risk-banded draft PRs. Installable across Claude Code, Cursor, Gemini CLI, and more.
npx -y skills add celestialdust/achilles-skills --skill to-prdAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Synthesize the grilled intent + design substrate into a product-altitude prd.md — NO interview, just synthesis of what you already discussed. Reach for this the moment intent.md is pinned and the ADRs are written and you need the dual-audience product spec the whole pipeline reads. STAY at product altitude: reference ADRs by id, use CONTEXT.md terms verbatim, and NEVER paste a file path, signature, or schema into the PRD.
SKILL.md
9.9 KB, as published. Nobody here has run it
Purpose
Stage: Spec (human-led). Every downstream stage reads prd.md: acceptance-criteria turns its user stories
into Given/When/Then, frontend-design builds against it, plan-breakdown decomposes its decisions into
slices, and pull-request anchors its summary back to it. So the PRD must be one document, two audiences — the
product reader (Problem · Solution · User Stories) and the dev reader (Implementation · Testing · Out of
Scope) — written at a single altitude: what and interface, never how and implementation.
It exists because the thinking is already done. By the time you reach here, interview-me/idea-refine
have pinned intent.md and spec-grilling has written the ADRs + CONTEXT.md. The PRD does not re-decide
anything; it synthesizes the decided into the shape the chain consumes. That is why it does not
interview — interviewing here means the upstream stages were skipped.
When to use / when to skip
Use when intent is grilled, the design substrate (ADRs/CONTEXT.md) exists, and you need the product
spec the rest of the pipeline reads. Typically the last authored artifact of Spec before acceptance-criteria.
Skip / don't when:
- intent is not yet pinned and the design is not yet grilled → run
interview-me/spec-grillingfirst. This skill synthesizes; it has nothing to synthesize from raw idea + no ADRs. - you feel the urge to ask the user a clarifying question → that is the signal an upstream stage was skipped, not a signal to interview here. Escape hatch: stop, name the missing input, send the user back to the upstream skill.
- the change is a pure refactor with no product-observable behavior → there is no PRD to write.
User-invoked: a human opens this during the human-led Spec stage. (No disable-model-invocation key —
the house format is two-key; this section carries the triggering nuance instead.)
Inputs
Refuse-to-run unless these are resolvable:
- REQUIRED —
docs/features/<slug>/intent.md(the WHAT, frominterview-me/idea-refine): sections Outcome · User · Why · Success · Constraints · Out-of-scope. If absent and no grilled intent exists in the conversation, STOP — there is nothing to synthesize and this skill does not interview. - REQUIRED substrate —
CONTEXT.md(repo-root glossary; its## Glossarysection): you will use its terms verbatim. - REQUIRED substrate —
docs/adr/ADR-<NNN>-*.md(fromspec-grilling): the mechanism rationale you will reference by id, never restate. (If the feature legitimately needed no ADRs, that is fine — but any product decision whose why is technical must point at an ADR that exists.)
If STATE.md / CONTEXT.md / docs/adr/ / docs/features/ do not exist, the repo was never set up →
run project-setup first.
Process
-
Read, don't re-derive. Read
intent.md, skim the relevantdocs/adr/*, and loadCONTEXT.md's## Glossarysection. Explore the repo only enough to ground the product framing (current behavior the user lives with). Do not open the codebase to harvest file paths or signatures — those never enter the PRD. -
Sketch the testing seams — at product altitude. Name the behavioral boundaries at which the feature will be proven (the public HTTP surface, a module's public interface, a CLI command's contract). Prefer existing seams to new ones; use the highest seam possible — the fewer seams, the better (ideal: one). Express them as interfaces/behaviors, never as file paths or function signatures. Check with the user that these seams match their expectations (Spec is human-led).
-
Write
prd.mdfrom the template below, save it todocs/features/<slug>/prd.md, and update STATE.md (see Outputs). Do not publish to any external issue tracker — the local STATE.md board is the tracker, and thegatecolumn carries the hand-off that mp'sready-for-agentlabel used to.
PRD template
Use exactly these six stable section headers (downstream consumers depend on the names), ## Further Notes optional at the end.
## Problem
The problem the user is facing, from the user's perspective. Use CONTEXT.md terms verbatim.
## Solution
The solution to the problem, from the user's perspective.
## User Stories
A LONG, numbered list of user stories, each in the format:
1. As an <actor>, I want a <feature>, so that <benefit>
Example:
1. As a mobile bank customer, I want to see the balance on my accounts, so that I can make better
informed decisions about my spending.
This list must be extensive and cover every aspect of the feature.
## Implementation Decisions
The product-altitude decisions that were made — the WHAT and the interface, not the HOW:
- Which modules/capabilities will be built or modified (by name, not path)
- The product-observable behavior of those modules
- Technical clarifications from the developer (at decision altitude)
- Schema *intent* and API *contract* described in prose
- Specific user-facing interactions
State product decisions plainly ("email is the reset channel"; "tokens expire in 1 hour"). For the
*reasoning* behind a decision, REFERENCE the ADR by id ("see ADR-007"), never restate it. If a decision
is encoded by a committed prototype, reference the prototype ("as committed in the frontend-design
prototype") — do not inline its code.
HARD BOUNDARY: this section — and the whole PRD — must NOT contain file paths, function/type
signatures, schemas-as-code, or driver/library internals. Those live in ADRs, the prototype, and later in
plan.md. The PRD is the narrow, stable interface; the design is the deep hidden body.
## Testing Decisions
- What makes a good test here: only test external/observable behavior, never implementation details.
- Which modules/behaviors will be tested (the seams from Process step 2).
- Prior art: similar kinds of tests already in the codebase (by description, not path).
## Out of Scope
What is explicitly NOT being built in this PRD.
## Further Notes (optional)
Anything else worth recording at product altitude.
Rationalizations
Stop signals disguised as good reasons:
- "Let me just ask the user one quick question." → No. If you need to ask, an upstream stage was skipped.
Synthesize from
intent.md+ ADRs, or send the user back upstream. This skill never interviews. - "Pasting the handler signature / the file path will help the dev." → No. That's structurally
illegal in
prd.md; it goes stale and turns the narrow interface into a shallow module. Reference the ADR/prototype instead. - "Let me re-explain why we chose email, the ADR is terse." → No. Restating ADR rationale duplicates a piece of knowledge that can diverge (DRY-of-knowledge). Link it: "see ADR-007".
- "CONTEXT.md calls it a 'reset token' but 'recovery code' reads nicer." → No. Use the glossary term verbatim; divergent vocabulary is how the chain drifts.
- "The user-story list is long enough." → mp's strength is an exhaustive list. Thin coverage here means
acceptance-criteriacannot enumerate scenarios. Keep going.
Red flags
Stop and fix before saving if any are true:
- The PRD contains a
/path segment, afunction/def/type signature, a code-fenced schema, or a library-internal name. → Strip it; reference the ADR/prototype. - A
see ADR-NNNpoints at a file that does not exist indocs/adr/. - You asked the user a clarifying question to write a decision (vs. to confirm a seam).
- A domain term in the PRD does not appear verbatim in
CONTEXT.md. - You wrote design rationale (the why behind a mechanism) into the PRD instead of linking the ADR.
Verification (ending criteria)
Done when ALL hold:
docs/features/<slug>/prd.mdexists with all six stable headers present, in order.- grep gate is clean:
grep -nE '(\b[a-zA-Z0-9_]+/[a-zA-Z0-9_]+|\.ts\b|\.py\b|\.tsx\b|function |def |=> |: [A-Z][a-zA-Z]+<)' docs/features/<slug>/prd.mdreturns nothing (no paths/signatures/types). - Every
ADR-<NNN>referenced resolves to a file indocs/adr/. - Every domain term used appears verbatim in
CONTEXT.md. - The User Stories list is extensive and every entry is in
As an <actor>, I want <feature>, so that <benefit>form. - No clarifying question was asked to make a decision (synthesis-only).
- The Spec gate stays
you— to-prd does not sign the PRD; the human signs it at the Spec gate. (spec-reviewre-runs the grep gate + ADR-link check before the human reviews.)
Outputs & handoff contract
- Emits:
docs/features/<slug>/prd.mdwith stable sections## Problem·## Solution·## User Stories·## Implementation Decisions·## Testing Decisions·## Out of Scope. Change a section's shape → update its consumer in the same commit (acceptance-criteria,plan-breakdown,pull-request). - Structural invariant:
prd.mdcontains no file paths, signatures, schemas-as-code, or driver/library internals; mechanism rationale is referenced by ADR id; CONTEXT.md terms used verbatim. ADRs + CONTEXT.md are referenced substrate, not chain links (no extra resume hop). - STATE.md update: add
prd.mdto the feature'sorigin:line; feature state staysspec; gate staysyou(the human owns the Spec sign-off). No slice rows yet (slices are born in Plan). - Downstream consumers:
acceptance-criteria(user stories → Given/When/Then, behavioral-only) ·frontend-design(UI features) ·plan-breakdown(Implementation + Testing Decisions → slices) ·pull-request(anchors the PR summary to prd + ADRs).