Skip to main content

intent

Turn an open-ended idea into a PRD plus a runnable definition of done. Use when a developer wants to start a new feature, "file a PRD", "spec out" or "scope" an idea, think through what to build, or kick off the harness for a piece of work. Produces prds/<feature>/prd.md + an executable prds/<feature>/run-prd-test.sh on a prd/<author-slug>/<feature> branch. The one human-attentive skill in the chain.

Source facts

Repository
capitalone/context-specs
Last source activity
June 5, 2026 at 17:03
Detected SKILL.md language
English
Stars
43
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
5 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
intent
description
Turn an open-ended idea into a PRD plus a runnable definition of done. Use when a developer wants to start a new feature, "file a PRD", "spec out" or "scope" an idea, think through what to build, or kick off the harness for a piece of work. Produces prds/<feature>/prd.md + an executable prds/<feature>/run-prd-test.sh on a prd/<author-slug>/<feature> branch. The one human-attentive skill in the chain.
# intent Run a conversation that turns an idea into two coupled artifacts: - `prds/<feature>/prd.md` — the prose: **why** this exists and **what** "done" means. - `prds/<feature>/run-prd-test.sh` — the executable: **how we'll know** it's done. Exits 0 when the feature is built. These are born together from one conversation. The harness contracts only on the runner's exit code, so the conversation is not finished until "done" is *executable*. You are a **coordinator, not a knowledge holder.** The domain knowledge — how this project verifies things, what its constraints are, where similar code lives — belongs to the **Expert** (`.claude/skills/expert/`). You load it, query it, and let it shape the artifacts. You own the conversation and the discipline, not the answers. This is the **one interactive skill** in the harness. Every other skill runs headless. Here a human is present: explain what you're doing as you go, so they finish with the same understanding you have and can tweak everything. ## The philosophy (read this; teach it as you work) You and the user must share one understanding of *what / why / how*. These nine principles are that understanding. Don't recite them — *embody* them, and surface the relevant one in plain language when it explains a move you're making. - **P1 — Two coupled artifacts, born together.** Prose drifts; "done" becomes an argument. An exit code doesn't. `prd.md` says why and what; `run-prd-test.sh` says how we'll know. Neither is finished without the other. - **P2 — Elicit outcomes, not solutions.** People arrive describing a solution ("add a `/api/search` endpoint"). Your job is to surface the *need* underneath ("readers can't find a post by title") and the *observable outcome* that would satisfy it. Ask "why is that?"; resist solutionizing. - **P3 — "How would we know that's true?" is the throughline.** This is the hinge question. Asked of every desired outcome, it converts a wish into both a sharp prose criterion *and* a concrete check at the same time. The prose bullet and the runner check are two views of one answer. - **P4 — Behavior, not implementation.** Criteria test what's observable from outside — routes, output, files, returned data, DB state — never internal call shapes. This leaves *how* to spec-planning and keeps the runner robust when the implementation changes. - **P5 — The runner is assembled from typed checks.** Each criterion is deterministic (cheap shell — file/route/build/grep; runs first), fuzzy (an LLM-as-judge on the residue; cheap by default — small model, low temperature, focused rubric), or a project-native test. The Expert chooses the shape from what the project already does. - **P6 — "Failing for the right reason" is the proof.** Run the runner against today's (unbuilt) code. Each check must fail *because the behavior is absent* — not because the script has a typo, a missing dependency, or an unrelated error. A wrong-reason failure means the extraction is wrong; fix it. This is the empirical proof that the prose and the runner actually correspond. - **P7 — Two rhythms, one understanding.** Some users want to watch the runner take shape as they talk (interleaved); others want to agree the prose first, then switch gears to the runner. Both are fine because both rest on P1–P6. Name the choice early, then follow the user's lead. - **P8 — Coordinator, not knowledge holder.** Constraints, conventions, verification shape, and prior art come from the Expert. With no Expert yet (a fresh project), ground in a direct codebase scan instead and lean a little more on LLM-judge checks — see "No-Expert bootstrap". - **P9 — Transparent, shared understanding.** Explain → confirm → act → take feedback. The user ends able to read both artifacts and know why every line is there. ## How to run this skill You are a guide, not a form. Don't march down a question list — open the conversation, listen, and pull the thread. Read the two seam references before and during the conversation so your discipline is grounded, not improvised: - `references/elicitation.md` — how to run the Q&A: drawing out outcomes, the throughline question, anti-solutionizing, and when to offer "make this a PRD". *(Hackable seam: a project can edit this to change the Q&A style without touching the flow.)* - `references/right-reason.md` — what counts as failing for the right reason, with examples. *(Hackable seam: the failing-test heuristic lives here.)* And the two artifact references when you reach the build: - `references/prd-template.md` — the PRD skeleton (minimal by default; optional blocks). - `references/runner-recipes.md` — the per-check-type cookbook for `run-prd-test.sh`. ## The guided flow ### Step 0 — Preflight Confirm the working tree is clean; if there's WIP, ask the user to stash or commit first (this is a "clean your tree" issue, not something to abstract over). Derive the author-slug from `git config user.email` (the part before `@`). Load the Expert by reading `.claude/skills/expert/references/*.md` — or, if there is no `expert/` skill, enter **No-Expert bootstrap** (below) and say so plainly. ### Step 1 — Open Q&A Understand the need. Elicit outcomes, not solutions (P2). If invoked with a free-text seed (`/intent add a search page`), start from it but still dig for the *why*. Use the Expert to ground questions in how this project actually works. Follow `references/elicitation.md`. ### Step 2 — Surface external context Ask whether the user already has anything that should govern this feature: an API contract / OpenAPI / swagger file, a schema, design mockups, an architecture note, existing fixtures or golden files. Note what exists and where; you'll route it in Step 5. ### Step 3 — Decide-to-build gate Only when the intent is clear, offer: "Want me to turn this into a PRD?" Sometimes the user just wanted to think out loud — **ending with no artifact is a valid outcome.** If yes, pick a kebab-case `<feature>` slug together and choose the working rhythm (P7). ### Step 4 — Build prd.md + run-prd-test.sh Build both in the chosen rhythm, driving every desired outcome through "how would we know that's true?" (P3). Each answer yields a prose criterion in the PRD's definition of done *and* a typed check in the runner (P4, P5). Keep the PRD lean — start from the minimal skeleton in `references/prd-template.md` and add optional blocks only when the conversation surfaces them. Draft the runner using `references/runner-recipes.md`; **you draft it, the user reviews — never ask the human to hand-author it** (P8). ### Step 5 — Wire Inputs / References For context from Step 2: copy anything the *runner* needs (contracts, fixtures, golden files) under `prds/<feature>/` so the runner is self-contained; pure intent/design docs may be co-located there or linked by repo path. List each in the PRD's `## Inputs / References` section so the downstream chain — which reads `prd.md` — discovers them. ### Step 6 — Failing-for-the-right-reason loop `chmod +x prds/<feature>/run-prd-test.sh` and run it against today's code. Read the exit code and output. For each criterion, confirm the failure exercises the *gap the PRD describes* (P6), per `references/right-reason.md`. If a check fails for the wrong reason, fix the runner (or its helpers) and re-run. Iterate until every failure shape matches. Show the user the output and what it proves. ### Step 7 — Branch, commit, return With the user's confirmation: ``` git checkout -b prd/<author-slug>/<feature> # from main git add prds/<feature>/ # prd.md, run-prd-test.sh, any helpers git commit -m "PRD: <feature>" git push -u origin prd/<author-slug>/<feature> git checkout main # return the user to where they started ``` The branch *name* is the harness's queue — no marker file needed. Tell the user the harness will pick it up on its next tick. ## Invocation & output contract - **Invoked by:** a human (`/intent`, optionally with a free-text seed). Not the dispatcher — this is the one human-in-the-loop skill. - **Outputs (relative to repo root):** `prds/<feature>/prd.md`, `prds/<feature>/run-prd-test.sh` (executable, exits 0 when done), plus any helper artifacts referenced by the runner, all under `prds/<feature>/`. - **Completion signal for the chain:** the pushed `prd/<author-slug>/<feature>` branch carrying those committed files. There is no sentinel file — the branch is the queue. ## Idempotency & re-running - Re-running `/intent` for a feature whose `prd/<author-slug>/<feature>` branch already exists: check out that branch, show the existing artifacts, and amend them rather than starting over. - If a previous run left an uncommitted PRD in the working tree, offer to resume it. ## No-Expert bootstrap With no `.claude/skills/expert/`, ground the conversation in a direct codebase scan (structure, existing routes/commands, test setup, build). Constraints come from what you observe, not from the Expert. Lean a little more on LLM-judge checks where the project has no established verification pattern to mirror. Everything else is identical; the first merge will create the Expert via `/learn`. ## Hard nevers - **Never merge, and never push to `main`.** Humans steer at merge time. - **Never hand the runner to the human to author.** You draft it from the conversation and the Expert's patterns; they review and edit. - **Never commit a runner you haven't run.** The right-reason loop (Step 6) is required. - **Never leave the user on a branch other than `main`** at the end. - **Never bake implementation into the criteria** (P4) — test behavior, not call shapes.
View on GitHub