CtrlK
BlogDocsLog inGet started
Tessl Logo

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.

71

Quality

86%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

The canonical home for this skill is intent in tdg-ninja/context-specs-factory-ai

SKILL.md
Quality
Evals
Security

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.
Repository
tdg-ninja/context-specs-claude-code
Last updated
First committed

Canonical home

tdg-ninja/context-specs-factory-ai
In sync

since Aug 20, 2026

Is this your skill?

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.