Interview
Turns an underspecified request into a confirmed, thought-through scope before a single line is planned or written.
It restates and diffs the request, researches the code so its questions are specific, surfaces the unknowns and non-goals, interviews the user only where research falls short, and emits a brief.md that planning consumes.
This SKILL.md is a thin index. Phase procedures live in rules/*.md and load on demand.
A full worked run lives in references/interview-example.md.
Contents
When it runs
$ARGUMENTS is the request to align on (free text).
If $ARGUMENTS is empty, use the current conversation's active request; if there is none, ask what to scope — never interview against a guessed request.
| Flag |
Default |
Meaning |
--non-interactive |
off |
Do not prompt the user. Surface the questions inside brief.md under Open questions, proceed on stated assumptions, and set the readiness verdict. For headless callers that cannot prompt. |
This skill is adaptive.
When the request is already crisp and research answers the open questions, it asks nothing, writes a one-line pass note plus the brief, and returns ready.
It interrupts only for a genuine, load-bearing unknown — see rules/readiness-gate.md.
Relation to aw and ideate (precedence)
- Autonomous-implementation asks ("implement X autonomously", "ship this",
/aw) are owned by aw, which runs this interview inside its Phase 0 (default-on for Full tier — see rules/aw-integration.md) — do not also fire standalone; let aw drive.
- Standalone
/interview is for the explicit "help me scope this first" moment on non-aw or ambiguous work.
- For solution options, not scope, use
/ideate — it diverges and scores; this skill converges on the one scope.
Workflow
Five phases, each with a gate. Do not advance until the gate passes.
Required reading by phase
Load on demand — do not preload.
Core principles
- Research before asking. A question the codebase already answers is noise. Ground every question in what the code shows so it is specific ("reuse
PrStatusCache or add a cache?"), not generic ("what do you want?"). See rules/research-grounding.md.
- Interrupt only for load-bearing unknowns. Classify each unknown
blocking vs advisory. Ask about blocking ones; proceed on advisory ones and record the assumption. Silence is the correct output for a crisp request. See rules/readiness-gate.md.
- Batch the questions. One prioritized round via
AskUserQuestion, two at most. Never drip questions one at a time. See rules/question-design.md.
- Consultative, not stenographic. Capture intent and pressure-test completeness: non-goals, edge cases, success criteria, constraints. This is the "is it thought-through" half. See
rules/consultative-completeness.md.
- Converge, don't diverge. This skill pins down the one thing to build. It hands divergent option-generation to
/ideate, adversarial plan review to /critical, and readiness scoring to /confidence. Do not duplicate them.
- The brief is the deliverable. A confirmed, self-contained
brief.md plus a readiness verdict — nothing more. It writes no product code. See rules/brief-artifact.md.
Anti-patterns
- Asking a question the code answers. Fix: research first (Phase 1).
- Dripping questions one at a time across turns. Fix: batch into one
AskUserQuestion round.
- Interviewing a request that is already crisp. Fix: honor the adaptive pass — write the brief, return
ready, ask nothing.
- Generating solution options. Fix: that is
/ideate; this skill converges on scope.
- Adversarially red-teaming an implementation plan. Fix: that is
/critical; run it after a plan exists.
- Producing a scored gate verdict. Fix: that is
/confidence; this skill elicits the inputs a score needs.
- Writing product code or a plan. Fix: stop at
brief.md; hand off to planning.
Definition of done
1---2name: interview3description: Aligns on the scope of a request before any plan or implementation begins — the requirements-elicitation interview a senior engineer runs before touching code. Restates the request and diffs it against the user's words, researches the codebase so questions are specific, surfaces unknowns, non-goals, edge cases, and success criteria, then runs a batched clarifying-question interview only when research cannot resolve the ambiguity (adaptive — stays silent when the request is already crisp). Produces a confirmed brief.md artifact that downstream planning consumes, plus a readiness verdict (ready / ready-with-assumptions / blocked). Convergent and pre-plan: hands option-generation to /ideate, plan review to /critical, and scoring to /confidence. Use before autonomous work, before planning, or when a request feels underspecified. Triggers on "align on scope", "interview me", "clarify the request", "scope this", "scope alignment", "before we plan", "/interview".4license: MIT5---67# Interview89Turns an underspecified request into a confirmed, thought-through scope before a single line is planned or written.10It restates and diffs the request, researches the code so its questions are specific, surfaces the unknowns and non-goals, interviews the user only where research falls short, and emits a `brief.md` that planning consumes.1112> **This `SKILL.md` is a thin index.** Phase procedures live in `rules/*.md` and load on demand.13> A full worked run lives in [`references/interview-example.md`](./references/interview-example.md).1415## Contents1617- [When it runs](#when-it-runs)18- [Workflow](#workflow)19- [Required reading by phase](#required-reading-by-phase)20- [Core principles](#core-principles)21- [Anti-patterns](#anti-patterns)22- [Definition of done](#definition-of-done)2324---2526## When it runs2728`$ARGUMENTS` is the request to align on (free text).29If `$ARGUMENTS` is empty, use the current conversation's active request; if there is none, ask what to scope — never interview against a guessed request.3031| Flag | Default | Meaning |32| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |33| `--non-interactive` | off | Do not prompt the user. Surface the questions inside `brief.md` under `Open questions`, proceed on stated assumptions, and set the readiness verdict. For headless callers that cannot prompt. |3435This skill is **adaptive**.36When the request is already crisp and research answers the open questions, it asks nothing, writes a one-line pass note plus the brief, and returns `ready`.37It interrupts only for a genuine, load-bearing unknown — see [`rules/readiness-gate.md`](./rules/readiness-gate.md).3839### Relation to `aw` and `ideate` (precedence)4041- **Autonomous-implementation asks** ("implement X autonomously", "ship this", `/aw`) are owned by `aw`, which runs this interview *inside* its Phase 0 (default-on for Full tier — see [`rules/aw-integration.md`](./rules/aw-integration.md)) — do not also fire standalone; let `aw` drive.42- **Standalone `/interview`** is for the explicit "help me scope this first" moment on non-`aw` or ambiguous work.43- **For solution *options*, not scope**, use `/ideate` — it diverges and scores; this skill converges on the one scope.4445## Workflow4647Five phases, each with a gate. Do not advance until the gate passes.4849| Phase | Name | Rule file | Gate |50| ----- | ----------------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------- |51| 0 | Restate & diff | [`rules/research-grounding.md`](./rules/research-grounding.md) | Request restated in own words; every delta from the user's words surfaced. |52| 1 | Research the ground | [`rules/research-grounding.md`](./rules/research-grounding.md) | Affected areas, prior art, patterns, and constraints located in the code. |53| 2 | Surface unknowns (gate) | [`rules/readiness-gate.md`](./rules/readiness-gate.md), [`rules/consultative-completeness.md`](./rules/consultative-completeness.md) | Every unknown enumerated and classified `blocking` vs `advisory`; interview-or-pass decided. |54| 3 | Interview | [`rules/question-design.md`](./rules/question-design.md) | Blocking + high-value unknowns asked in ≤ 2 batched rounds, or skipped (adaptive pass). |55| 4 | Confirm & brief | [`rules/brief-artifact.md`](./rules/brief-artifact.md) | Understanding confirmed; `brief.md` written; readiness verdict set. |5657## Required reading by phase5859Load on demand — do not preload.6061| Phase | Files |62| ----- | ------------------------------------------------------------------------------------------------------------- |63| 0–1 | [`rules/research-grounding.md`](./rules/research-grounding.md) |64| 2 | [`rules/readiness-gate.md`](./rules/readiness-gate.md), [`rules/consultative-completeness.md`](./rules/consultative-completeness.md) |65| 3 | [`rules/question-design.md`](./rules/question-design.md) |66| 4 | [`rules/brief-artifact.md`](./rules/brief-artifact.md) |67| aw | [`rules/aw-integration.md`](./rules/aw-integration.md) — how `aw` / `aw-planner` delegate to this skill. |6869## Core principles70711. **Research before asking.** A question the codebase already answers is noise. Ground every question in what the code shows so it is specific ("reuse `PrStatusCache` or add a cache?"), not generic ("what do you want?"). See [`rules/research-grounding.md`](./rules/research-grounding.md).722. **Interrupt only for load-bearing unknowns.** Classify each unknown `blocking` vs `advisory`. Ask about blocking ones; proceed on advisory ones and record the assumption. Silence is the correct output for a crisp request. See [`rules/readiness-gate.md`](./rules/readiness-gate.md).733. **Batch the questions.** One prioritized round via `AskUserQuestion`, two at most. Never drip questions one at a time. See [`rules/question-design.md`](./rules/question-design.md).744. **Consultative, not stenographic.** Capture intent *and* pressure-test completeness: non-goals, edge cases, success criteria, constraints. This is the "is it thought-through" half. See [`rules/consultative-completeness.md`](./rules/consultative-completeness.md).755. **Converge, don't diverge.** This skill pins down the *one* thing to build. It hands divergent option-generation to `/ideate`, adversarial plan review to `/critical`, and readiness scoring to `/confidence`. Do not duplicate them.766. **The brief is the deliverable.** A confirmed, self-contained `brief.md` plus a readiness verdict — nothing more. It writes no product code. See [`rules/brief-artifact.md`](./rules/brief-artifact.md).7778## Anti-patterns7980- Asking a question the code answers. **Fix:** research first (Phase 1).81- Dripping questions one at a time across turns. **Fix:** batch into one `AskUserQuestion` round.82- Interviewing a request that is already crisp. **Fix:** honor the adaptive pass — write the brief, return `ready`, ask nothing.83- Generating solution options. **Fix:** that is `/ideate`; this skill converges on scope.84- Adversarially red-teaming an implementation plan. **Fix:** that is `/critical`; run it after a plan exists.85- Producing a scored gate verdict. **Fix:** that is `/confidence`; this skill elicits the inputs a score needs.86- Writing product code or a plan. **Fix:** stop at `brief.md`; hand off to planning.8788## Definition of done8990- [ ] Request restated in own words; every delta from the user's words surfaced (Phase 0).91- [ ] Affected code areas, prior art, and constraints located (Phase 1).92- [ ] Every unknown enumerated and classified `blocking` vs `advisory` (Phase 2).93- [ ] Blocking + high-value unknowns resolved via ≤ 2 batched rounds, or a clean adaptive pass logged (Phase 3).94- [ ] `brief.md` written to `.agent/{branch}/brief.md` (re-run updates it in place).95- [ ] Readiness verdict set: `ready` | `ready-with-assumptions` | `blocked`.96- [ ] One-line summary delivered naming the verdict and pointing at the brief.