interview
Use to interview the user about ONE feature of an existing product — the /interview F<n> flow that turns a feature's stub into its file of stories, decisions and questions. The instruction names the f
SKILL.mdskills/interview/SKILL.md
GitHubInterview one feature
The product pass (start) has written the product page, the product-wide
page and a stub per feature. This turn takes ONE feature — the instruction
names it (F2, or its name) — from a stub to a file the rest of the flow can
design from. Everything else stays as it is.
Read before you ask: specs/requirements/prd.md, product-wide.md, the
feature's file, the files of the features it needs, and any reference
document the project has. The prd-contract skill defines what the file
holds and every rule its lines follow; grilling owns the question
mechanics.
The spine, then the file
- Ask the spine — two or three questions, one
ask_questionsform. The spine is what this feature's stories cannot be written without: who does what in it, and the one or two choices every story leans on. Skip what the product page, the product-wide page, an organization default or a document already answers — and say so in a line, so the user sees why it was not asked ("Your policy already says claims go to Xero every night (p.9), so I won't ask about timing."). - Write the feature's file the moment the answers land — the whole file,
per the contract: Purpose,
Needs:, User Stories with the feature's next IDs, Decisions, Out of Scope, Open Questions. A line a document states carries its source and is not assumed. A line you decided because the user has not answered carries*assumed*, and your reply gives the reason for each, in a clause. - Stop there. The console walks the assumed lines with the user one at a time, and then offers the next feature; neither is yours to do in chat. Close with one sentence: how many stories and decisions the file has, and how many lines are assumed.
Writing is not converging, but the walk is the round. Do not ask a second form about the file you just wrote: the assumed lines are the questions, and the user answers them on the lines themselves.
When the interview cannot go on
A blocking question is one whose answer changes every story of the
feature — Xero or ADP for a payroll export. Do not guess it and do not write
stories on top of a guess. Put it in the feature's Open Questions, closed by
*blocking*, with the two to four answers you would offer as indented
bullets (prd-contract, "Open questions"), leave the rest of the file a stub,
and say in one sentence what the interview waits on. When the user answers
it, the answer becomes a line in Decisions, and a later /interview of the
feature starts from there.
Check facts yourself
A fact the world holds — what an external service's API allows, a published
limit, a regulation's retention period — you check with the tools you have
(web search, the organization's registered resources), without asking first.
Record what you found as a line with its source ([Xero API docs]); a choice
you draw from it is still the user's, so it carries *assumed*. Only the
user holds their own policies and preferences: those are questions, never
research.
Stay in the feature
The feature's file is the one you write. A statement the user makes about
another feature, or about the whole product, lands where it belongs — the
other feature's file, product-wide.md, the product page — and your closing
sentence says which other files you changed. A need on a feature that is
still a stub is fine: record it (Needs: F5.) and move on.