Deterministic structured Q&A interview loop. Use when any skill needs to gather structured input from the user through a series of focused questions with numbered options, stated defaults, and a confirmation gate before artifact generation.
Deterministic interview loop that any skill can invoke to gather structured user input.
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
! Ask ONE focused question per step. After the user answers, send the NEXT question in a new message. Repeat until all questions for the current interview are answered.
! Every question MUST present numbered answer options. Exactly one option MUST be marked as the default using the [default: N] notation inline.
Example:
Which deployment platform?
1. Cross-platform (Linux / macOS / Windows)
2. Web / Cloud [default: 2]
3. Embedded / low-resource
4. Other / I don't know
[default: 2]), not in a separate line or footnote! Every question MUST include an escape option. The last numbered option MUST be either:
"Other (please specify)" -- for open-ended alternatives
"I don't know" -- when the user may lack context to answer
"Other / I don't know" -- combined form (preferred)
⊗ Present a question with no escape option -- the user must always have a way out
~ When the user selects the escape option, follow up with a brief open-ended prompt to capture their input or acknowledge the gap
! Keep asking until no material ambiguity remains before artifact generation. The interview is NOT complete until the calling skill's required inputs are all captured with sufficient specificity to generate the target artifact.
! When a question has a stated default, the user may accept it with any of the following responses:
! Do NOT re-ask the question when the user accepts the default. Record the default value and proceed to the next question.
! After ALL questions are answered (depth gate satisfied), display a summary of ALL captured answers in a clearly formatted list and require explicit yes/no confirmation before proceeding.
Format:
Here are the values I captured:
- **Field 1**: value
- **Field 2**: value
- **Field 3**: value
...
Confirm these values? (yes / no)
yes, confirmed, approve) -- reject vague responses (proceed, do it, go ahead)ok for individual question defaults because the cost of a wrong default is low (one field, correctable at the confirmation gate). The confirmation gate guards the entire artifact -- accepting ok here risks generating artifacts from auto-filled or misunderstood values. This asymmetry is by design.no: ask which values to correct, re-ask those specific questions only (do not restart the full interview), then re-display the updated summary and re-confirm! When the interview is complete (confirmation gate passed), the skill exits with an answers map -- a structured key-value representation of all captured answers that the calling skill uses to generate artifacts.
The answers map format:
{
"field_1": "captured value",
"field_2": "captured value",
"field_3": ["list", "if", "multi-select"],
...
}
deft-interview supports two usage modes:
The calling skill references deft-interview rules inline (e.g. "this phase follows the deterministic interview loop defined in skills/deft-interview/SKILL.md") and applies the rules directly within its own question sequence. No formal contract object is needed -- the calling skill embeds the question definitions and field requirements in its own SKILL.md. This is the current approach used by skills/deft-setup/SKILL.md Phase 1 and Phase 2.
The calling skill explicitly invokes deft-interview as a sub-skill and passes a formal contract object. When using delegation mode, the calling skill MUST provide:
The calling skill MAY provide:
[default: N] option