hyper-interview
Requirements-clarification gate. Turns a vague idea into a clear spec through a short Socratic interview — one targeted question at a time, aimed at whichever requirement dimension is least clear — then writes the spec to .hyperclaude/specs/<YYYYMMDD-HHMM>-<slug>.md. The spec is the front-end input to hyper-research / hyper-plan; the slug it mints is derived from the idea text the same way those skills derive theirs, so handing the same idea forward keeps the research → plan → plan-review trace linked.
Claude-only — no Codex. Critique belongs downstream, where it has something concrete to critique (hyper-plan-review on the plan, hyper-code-review on the diff). This gate's job is clarity, not review: get the requirements right so the plan isn't built on guesses. Anything off in the spec is caught when the plan is reviewed.
This is the light interview — the brainstorming-style conversational flow with deep-interview's weakest-dimension targeting, minus the heavy machinery (no numeric ambiguity scoring, no topology/ontology bookkeeping, no challenge-mode state machine, no resume).
When to use
- User typed
/hyperclaude:hyper-interview <idea>.
- The idea is vague or under-specified and jumping straight to a plan would guess at scope ("interview me", "ask me what you need", "not sure exactly what I want", "make sure you understand before building").
Skip when:
- The request is already concrete (file paths, function names, acceptance criteria) — go to
hyper-plan, or dispatch implementer for one step (pass run_in_background: false for the result inline).
- The user pasted a PRD / spec / plan and wants it executed — use
hyper-plan / hyper-implement.
- The user says "just do it" / "skip the questions" — respect it. Don't interrogate; proceed to the work they asked for.
How to invoke
--resume is not supported. Refine in place during the session (Step 5 overwrites the file written in Step 4); a separate fresh run mints a new timestamped spec (same slug if the idea is unchanged) — there's no resume keyed on the path, so that's harmless.
Invocation argument: $ARGUMENTS
Step 1 — Resolve the idea + project context
- The idea is
$ARGUMENTS. If empty, fall back to the user's most recent build/implement intent in this conversation; if none exists, ask "What do you want to build?" and stop.
- Greenfield vs brownfield. Dispatch the
Explore agent (read-only) ONCE with run_in_background: false (the greenfield/brownfield verdict and area map gate Step 2's questions, which cite Explore's findings; result awaited inline) to check whether the cwd has source code bearing on the idea:
- Relevant code exists → brownfield: have Explore map the relevant area (paths, key symbols, patterns) so the questions can cite repo evidence instead of asking the user what the code already reveals.
- Otherwise → greenfield.
- Keep this to a single Explore dispatch; don't fan out. If exploration fails, proceed as greenfield and note the limitation.
Step 2 — Interview loop (one question at a time)
Track clarity qualitatively across a few dimensions — no numeric scoring:
| Dimension |
Clear once it can be stated as… |
| Goal |
the core outcome in one sentence — the key noun and what happens to it |
| Constraints |
the boundaries, environment, and explicit non-goals |
| Success |
how to verify it's done — concrete, testable acceptance |
| Context (brownfield only) |
how it fits the existing code without breaking it |
Each round:
- Target the weakest dimension. Name it in one line first: "Goal is clear; constraints are still fuzzy → next question targets constraints."
- Ask exactly ONE question via
AskUserQuestion, with concrete options plus free-text. Aim it to expose an assumption, not to collect a feature list. (Brownfield: cite the file/symbol that prompted the question — "I found JWT auth in src/auth/; extend it or diverge?")
- Fold the answer in and re-judge that dimension.
When the idea is nearly clear, take one simplifier pass: "What's the simplest version that's still valuable?" / "Is <constraint> a real requirement or an assumption?" Then move to the spec.
Stop the loop when every applicable dimension is clear enough to write testable acceptance criteria, OR the user says "enough / let's go / build it" (allow after ~2 rounds). On early exit, name in one line what's still fuzzy so the gap is on record.
Soft cap: if the loop reaches ~8 rounds without converging, summarize what's clear, flag what isn't, and ask whether to proceed or keep going. Don't loop forever.
Step 3 — Approaches (only when there's a real fork)
If the idea has a genuine design fork (e.g. native app vs PWA, polling vs webhook), present 2–3 approaches with trade-offs and a recommendation in one message, and let the user pick. Skip this entirely when the idea is a requirement to clarify rather than a design to choose.
Do NOT produce a task breakdown here — decomposition into ## Task N: blocks is hyper-plan's job. The spec states what, not the task list.
Step 4 — Write the spec
Derive the slug from the idea, same rule as hyper-plan / hyper-research: lowercase, ASCII only, alphanumerics + hyphen, first 5 words of the idea joined by -. Example: "Add OAuth login to the API" → add-oauth-login-to-the.
- No-ASCII fallback (e.g. an all-Korean idea): the filename is the timestamp only (
<timestamp>.md), and the frontmatter slug: line is the bare key with an empty value: slug: (key, colon, single space, nothing after — NOT slug: "").
Resolve the path:
mkdir -p .hyperclaude/specs
date -u +%Y%m%d-%H%M
Base path .hyperclaude/specs/<timestamp>-<slug>.md; if it exists, append -2, -3, … until free.
Write the spec with the Write tool. Author NO plugin-version line — the PostToolUse stamp hook adds it post-write. Frontmatter keys, in this order:
---
mode: interview
idea: |-
<idea, each line 2-space indented>
slug: <slug>
generated: <ISO-8601 timestamp>
type: greenfield|brownfield
---
# Spec: <title>
## Goal
<one crisp paragraph — the core outcome, covering the whole idea>
## Constraints
- <constraint>
## Non-Goals
- <explicitly excluded scope>
## Acceptance Criteria
- [ ] <testable criterion>
## Assumptions Resolved
| Assumption | Resolution |
|---|---|
| <what was assumed / surfaced> | <what was decided> |
## Context
<brownfield: the cited code findings (paths/symbols) this builds on or diverges from.
greenfield: technology choices and constraints. Omit this section if empty.>
Scale each section to the idea — a small idea gets a few lines per section, not padding. The spec captures the interview's conclusions, not its transcript.
Step 5 — User review + handoff
Tell the user the spec path and ask them to review it. Wait for approval (the HARD-GATE). If they request changes, revise the spec at the same path and re-confirm.
On approval, hand off — do NOT implement here. Pass the ORIGINAL idea text as the task argument — verbatim, the same text recorded in the spec's idea: frontmatter — NOT the reworded Goal. This is what keeps the slug aligned: hyper-plan / hyper-research derive their slug from $ARGUMENTS with the same rule used in Step 4, so the same idea text yields the same slug and the research → plan → plan-review trace stays linked. A reworded Goal would derive a different slug and silently break the trace. (hyper-plan does not read specs/ — the slug match is what links them, plus the spec content you already hold in context.)
- Straight to planning →
/hyperclaude:hyper-plan <original idea>. The spec's resolved requirements (Goal / Constraints / Acceptance Criteria) are already in this conversation from Step 4 — feed them to the planner as context.
- Research first (when prior-art / pitfalls matter) →
/hyperclaude:hyper-research <original idea>, then hyper-plan.
Default recommendation: hyper-plan; prepend hyper-research when the approach has real unknowns.
Anti-patterns
- Calling Codex / the bridge. This gate is Claude-only; review is downstream (
hyper-plan-review, hyper-code-review).
- Numeric ambiguity scoring, topology/ontology bookkeeping, challenge-mode state machines, resume state. Out of scope — this is the light interview, deliberately not deep-interview.
- Batching questions. One per round; multiple at once produces shallow answers and blurs which dimension is being improved.
- Asking what the code already tells you. Explore first (brownfield) and cite the evidence in the question.
- Decomposing into tasks. That's
hyper-plan. The spec states what to build and how success is verified — not the ordered task list.
- Implementing before spec approval. The HARD-GATE is absolute regardless of perceived simplicity.
- Hand-authoring a
<spec>-v2.md sibling. In-session revisions overwrite the Step-4 path in place (Step 5); a separate re-run getting a new timestamped path is expected, not something to encode by hand.
1---2name: hyper-interview3description: Use when starting from a vague or under-specified idea and want requirements clarified before planning — "interview me", "ask me what you need", "clarify requirements first", "I'm not sure exactly what I want", "make sure you understand before building". Also when the user invokes /hyperclaude:hyper-interview. Runs a short one-question-at-a-time interview and writes a spec to .hyperclaude/specs/ — the front-end input to /hyperclaude:hyper-research and /hyperclaude:hyper-plan. Distinct from /hyperclaude:hyper-plan, which decomposes an ALREADY-CLEAR task into tasks.4---56# hyper-interview78Requirements-clarification gate. Turns a vague idea into a clear spec through a short Socratic interview — one targeted question at a time, aimed at whichever requirement dimension is least clear — then writes the spec to `.hyperclaude/specs/<YYYYMMDD-HHMM>-<slug>.md`. The spec is the front-end input to `hyper-research` / `hyper-plan`; the slug it mints is derived from the idea text the same way those skills derive theirs, so handing the same idea forward keeps the `research → plan → plan-review` trace linked.910**Claude-only — no Codex.** Critique belongs downstream, where it has something concrete to critique (`hyper-plan-review` on the plan, `hyper-code-review` on the diff). This gate's job is *clarity*, not review: get the requirements right so the plan isn't built on guesses. Anything off in the spec is caught when the plan is reviewed.1112This is the **light** interview — the brainstorming-style conversational flow with deep-interview's weakest-dimension targeting, minus the heavy machinery (no numeric ambiguity scoring, no topology/ontology bookkeeping, no challenge-mode state machine, no resume).1314## When to use1516- User typed `/hyperclaude:hyper-interview <idea>`.17- The idea is vague or under-specified and jumping straight to a plan would guess at scope ("interview me", "ask me what you need", "not sure exactly what I want", "make sure you understand before building").1819Skip when:20- The request is already concrete (file paths, function names, acceptance criteria) — go to `hyper-plan`, or dispatch `implementer` for one step (pass `run_in_background: false` for the result inline).21- The user pasted a PRD / spec / plan and wants it executed — use `hyper-plan` / `hyper-implement`.22- The user says "just do it" / "skip the questions" — respect it. Don't interrogate; proceed to the work they asked for.2324<HARD-GATE>25Do NOT write code, scaffold anything, or invoke an implementation skill until the spec is written AND the user approves it — however simple the idea looks. The interview's only outputs are the spec file and the handoff. "Simple" ideas are exactly where unexamined assumptions waste the most work.26</HARD-GATE>2728## How to invoke2930`--resume` is not supported. Refine *in place* during the session (Step 5 overwrites the file written in Step 4); a separate fresh run mints a new timestamped spec (same slug if the idea is unchanged) — there's no resume keyed on the path, so that's harmless.3132**Invocation argument:** $ARGUMENTS3334### Step 1 — Resolve the idea + project context35361. The idea is `$ARGUMENTS`. If empty, fall back to the user's most recent build/implement intent in this conversation; if none exists, ask "What do you want to build?" and stop.372. **Greenfield vs brownfield.** Dispatch the `Explore` agent (read-only) ONCE with **`run_in_background: false`** (the greenfield/brownfield verdict and area map gate Step 2's questions, which cite Explore's findings; result awaited inline) to check whether the cwd has source code bearing on the idea:38 - Relevant code exists → **brownfield**: have Explore map the relevant area (paths, key symbols, patterns) so the questions can cite repo evidence instead of asking the user what the code already reveals.39 - Otherwise → **greenfield**.40 - Keep this to a single Explore dispatch; don't fan out. If exploration fails, proceed as greenfield and note the limitation.4142### Step 2 — Interview loop (one question at a time)4344Track clarity qualitatively across a few dimensions — **no numeric scoring**:4546| Dimension | Clear once it can be stated as… |47|---|---|48| **Goal** | the core outcome in one sentence — the key noun and what happens to it |49| **Constraints** | the boundaries, environment, and explicit non-goals |50| **Success** | how to verify it's done — concrete, testable acceptance |51| **Context** *(brownfield only)* | how it fits the existing code without breaking it |5253Each round:54551. **Target the weakest dimension.** Name it in one line first: *"Goal is clear; constraints are still fuzzy → next question targets constraints."*562. **Ask exactly ONE question** via `AskUserQuestion`, with concrete options plus free-text. Aim it to **expose an assumption**, not to collect a feature list. (Brownfield: cite the file/symbol that prompted the question — *"I found JWT auth in `src/auth/`; extend it or diverge?"*)573. **Fold the answer in** and re-judge that dimension.5859When the idea is nearly clear, take **one simplifier pass**: *"What's the simplest version that's still valuable?"* / *"Is `<constraint>` a real requirement or an assumption?"* Then move to the spec.6061**Stop the loop** when every applicable dimension is clear enough to write testable acceptance criteria, OR the user says "enough / let's go / build it" (allow after ~2 rounds). On early exit, name in one line what's still fuzzy so the gap is on record.6263**Soft cap:** if the loop reaches ~8 rounds without converging, summarize what's clear, flag what isn't, and ask whether to proceed or keep going. Don't loop forever.6465### Step 3 — Approaches (only when there's a real fork)6667If the idea has a genuine design fork (e.g. native app vs PWA, polling vs webhook), present **2–3 approaches with trade-offs and a recommendation** in one message, and let the user pick. Skip this entirely when the idea is a requirement to clarify rather than a design to choose.6869Do NOT produce a task breakdown here — decomposition into `## Task N:` blocks is `hyper-plan`'s job. The spec states **what**, not the task list.7071### Step 4 — Write the spec72731. **Derive the slug** from the idea, same rule as `hyper-plan` / `hyper-research`: lowercase, ASCII only, alphanumerics + hyphen, first 5 words of the idea joined by `-`. Example: "Add OAuth login to the API" → `add-oauth-login-to-the`.74 - **No-ASCII fallback** (e.g. an all-Korean idea): the filename is the timestamp only (`<timestamp>.md`), and the frontmatter `slug:` line is the bare key with an empty value: `slug: ` (key, colon, single space, nothing after — NOT `slug: ""`).752. Resolve the path:76 ```bash77 mkdir -p .hyperclaude/specs78 date -u +%Y%m%d-%H%M79 ```80 Base path `.hyperclaude/specs/<timestamp>-<slug>.md`; if it exists, append `-2`, `-3`, … until free.813. Write the spec with the **Write** tool. Author NO `plugin-version` line — the PostToolUse stamp hook adds it post-write. Frontmatter keys, in this order:8283 ```84 ---85 mode: interview86 idea: |-87 <idea, each line 2-space indented>88 slug: <slug>89 generated: <ISO-8601 timestamp>90 type: greenfield|brownfield91 ---92 # Spec: <title>9394 ## Goal95 <one crisp paragraph — the core outcome, covering the whole idea>9697 ## Constraints98 - <constraint>99100 ## Non-Goals101 - <explicitly excluded scope>102103 ## Acceptance Criteria104 - [ ] <testable criterion>105106 ## Assumptions Resolved107 | Assumption | Resolution |108 |---|---|109 | <what was assumed / surfaced> | <what was decided> |110111 ## Context112 <brownfield: the cited code findings (paths/symbols) this builds on or diverges from.113 greenfield: technology choices and constraints. Omit this section if empty.>114 ```115116 **Scale each section to the idea** — a small idea gets a few lines per section, not padding. The spec captures the interview's conclusions, not its transcript.117118### Step 5 — User review + handoff1191201. Tell the user the spec path and ask them to review it. **Wait for approval** (the HARD-GATE). If they request changes, revise the spec at the same path and re-confirm.1212. On approval, hand off — do NOT implement here. **Pass the ORIGINAL idea text as the task argument** — verbatim, the same text recorded in the spec's `idea:` frontmatter — NOT the reworded Goal. This is what keeps the slug aligned: `hyper-plan` / `hyper-research` derive their slug from `$ARGUMENTS` with the *same* rule used in Step 4, so the same idea text yields the same slug and the `research → plan → plan-review` trace stays linked. A reworded Goal would derive a *different* slug and silently break the trace. (`hyper-plan` does not read `specs/` — the slug match is what links them, plus the spec content you already hold in context.)122 - **Straight to planning** → `/hyperclaude:hyper-plan <original idea>`. The spec's resolved requirements (Goal / Constraints / Acceptance Criteria) are already in this conversation from Step 4 — feed them to the planner as context.123 - **Research first** (when prior-art / pitfalls matter) → `/hyperclaude:hyper-research <original idea>`, then `hyper-plan`.124125 Default recommendation: `hyper-plan`; prepend `hyper-research` when the approach has real unknowns.126127## Anti-patterns128129- **Calling Codex / the bridge.** This gate is Claude-only; review is downstream (`hyper-plan-review`, `hyper-code-review`).130- **Numeric ambiguity scoring, topology/ontology bookkeeping, challenge-mode state machines, resume state.** Out of scope — this is the light interview, deliberately not deep-interview.131- **Batching questions.** One per round; multiple at once produces shallow answers and blurs which dimension is being improved.132- **Asking what the code already tells you.** Explore first (brownfield) and cite the evidence in the question.133- **Decomposing into tasks.** That's `hyper-plan`. The spec states *what* to build and how success is verified — not the ordered task list.134- **Implementing before spec approval.** The HARD-GATE is absolute regardless of perceived simplicity.135- **Hand-authoring a `<spec>-v2.md` sibling.** In-session revisions overwrite the Step-4 path in place (Step 5); a separate re-run getting a new timestamped path is expected, not something to encode by hand.