Skill: interview

SkillDev tools

Lets your agent interview you about a raw idea, stress-test it, and write the results to docs/idea-brief.md.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Skill: interview skill

About this skill

Use BEFORE roadmap or specify to get the idea OUT OF YOUR HEAD and onto disk, a Socratic interview that surfaces hidden assumptions, names tradeoffs, exposes imprecisions and proposes fresh angles, then writes `docs/idea-brief.md` (8 sections) so the next stage has a source to read instead of guess

What this skill tells your AI

The instructions your AI receives, as published by genkovich/sdd in skills/interview/SKILL.md and read by ahel’s review.

Pressure-tests an idea before it becomes a roadmap or a spec, and writes down what came out. The user shares a raw idea; across 3 phases you surface hidden assumptions, name tradeoffs, expose imprecisions and propose fresh angles — then the survivor lands in docs/idea-brief.md.

Two things are being produced at once, and the second is the one that matters downstream: a sharper idea in the user's head, and the context an agent cannot read anywhere else. The repo holds what the agent can discover on its own (survey maps it); this file holds what only the person knows. roadmap hard-refuses without a source — this is that source.

Scope: any idea. Product, content, business, architecture, refactor approach — all in scope. The boundary: this is an interview about the idea, not codebase archaeology. Ask the user to articulate the idea in words first. Consult files only if the user explicitly invites it; default is interview-first, no unprompted grep/find/read.

Language. Respond in the user's language; the instructions here are English for clarity. Brief prose follows artifact_language, headings + frontmatter keys stay English → ../_shared/artifact-language.md.

The depth dial and the Socratic posture are SDD-wide: → ../_shared/interview-depth.md · ../_shared/ask-style.md

Owner

The idea's author — whoever has the thing in their head (PM / lead / engineer / the solo maintainer).

Inputs

  • The raw idea, in the user's own words. Nothing else is required.
  • (Optional) a <slug> — kebab-case, short. Not given → propose 2–3 and let the user pick.
  • (Optional) prior notes / a ticket / links the user chooses to drop in.

The write gate — where the brief lands (and when it doesn't)

Run git rev-parse --show-toplevel once, before the final summary:

  • Inside a git repo → the brief is written to <repo root>/docs/idea-brief.md (protocol steps 6–8). This is the SDD case: the next stage reads it from disk.
  • Outside a repo → write nothing. The final summary is the whole artifact, the self-check runs against the summary's own format (per ../_shared/self-check.md step 1), and there is no commit. A life / content / strategy idea in a scratch folder must not leave a file behind — that's the case this gate exists for.

An existing docs/idea-brief.md is updated, never silently rebuilt: read it first, and say in the handoff which sections changed.

Protocol

  1. Resolve the write gate above first (silently — one git rev-parse, no question about it). Ensure the settings file (first thing, after this skill's own gate). If .claude/sdd.local.md is absent, create it now from the canonical template — documented defaults + the self-documenting body — and patch .gitignore; if it exists, read it and never overwrite. The one procedure lives in ../_shared/settings-file.md. Creating is unconditional; changing values is only ever offered by config. Say one line: «.claude/sdd.local.md created with documented defaults — /sdd:config to tune it». (Subordinate to the write gate: outside a git repo this skill writes nothing, settings included.) Then set the depth dial. One AskUserQuestion, then commit (default medium). The dial is SDD-wide; interview's delta — the 3–4 / 6–10 / 10–15 question budget per level and each level's posture — is the canonical interview row in ../_shared/interview-depth.md (no table duplicated here). The adversarial triggers (grill / rip apart / розʼєби / погрилити) imply hard unless the user says otherwise. State the depth in one line, then start.
  2. Phase 1 — understand the idea (see Phases).
  3. Phase 2 — stress-test tradeoffs and imprecisions. The core of the run.
  4. Phase 3 — propose new angles.
  5. Final summary in plain text (mini/full format below). This is what the user reads; §1–§8 of the brief are filled from it, not the other way round.
  6. Write — repo only. Fill ./templates/idea-brief.md → docs/idea-brief.md; set updated_at (today) and depth (the level this run actually used). §1 Raw idea carries the user's own words verbatim — never the polished rewrite.
  7. Structural self-check — repo only, per ../_shared/self-check.md: re-read the file from disk and verify 5 items: (1) all eight ## <n>. <Heading> sections present verbatim and none empty; (2) zero template <!-- instruction … --> comments survived into the file; (3) zero tech tokens in the body — \b(Postgres|PostgreSQL|MySQL|SQLite|Redis|Kafka|RabbitMQ|MongoDB|Elasticsearch| gRPC|GraphQL|JSONB|p95|p99)\b (the \b boundaries matter — without them chi matches inside «architecture»); (4) the frontmatter carries exactly the template's four keys (status / owner / updated_at / depth) with none invented — updated_at = today, depth = the level used, status: Draft; (5) the file exists at <repo root>/docs/idea-brief.md (test -f). Fix + re-check ≤2 cycles; surface the rest. Outside a repo the summary checked against its mini/full format IS this skill's structural self-check — nothing on disk to re-read.
  8. Commit + handoff. Repo only: propose commit interview: idea brief for <slug>. Then emit the stage-handoff block per ../_shared/handoff.md (utility variant — /clear optional), per «Hand off» below. Outside a repo: the handoff block still prints, with Review naming the summary instead of a path and no commit line.

Phases

Use 1-3 questions per phase, targeting the count from the depth dial. Move on from a phase when answers repeat, the user says "next" / "хватить", or the latest answer added nothing.

Phase 1 — Understand the idea

If the idea isn't stated in one sentence yet, ask for it in plain text (no AskUserQuestion). Then unpack: who suffers without this · what success concretely looks like · whether it's new or a refinement. Don't ask what's already obvious. → §1 Raw idea, §3 Users.

Phase 2 — Stress-test tradeoffs and imprecisions

The core. Hunt hidden assumptions ("this assumes X — what if X is false?"), tradeoffs (time vs quality, scope vs depth, reach vs focus), imprecisions (vague terms, ambiguous metrics), attention competition, and cost of failure. Every question offers positions, not yes/no. → §2 Problem, §4 Why now, §5 Out of scope, §6 Risks.

Probing frames — internal lenses (premortem · second-order · naive listener · inversion · cost of waiting · the other person). Pick what fits, mix them, don't name the frame to the user. Worked before/after examples per lens → references/probing-frames.md.

Intensity dial. Default tone is Socratic; the adversarial triggers escalate phrasing ("Why do you think X is even true?"). The user dials back with "ease up" / "помʼякши".

Drill vs move on. Drill the same dimension when an answer surfaced a new assumption; move on once the position is clear and the tradeoff named.

Phase 3 — Propose new angles

Now actively propose via AskUserQuestion: 2-3 alternative shapes (different audience, format, scale) or a twist (inversion, constraint, simplification). The Recommended option is your strongest bet, with reasoning in description. → §7 Recommendation, §8 Open questions.

Hard rules

  1. Every question goes through AskUserQuestion, not free text — 2-4 concrete options, the first marked (Recommended), each option's description spelling out what follows from it. Free text slips into "I don't know" and loses signal. On a host that has no native AskUserQuestion (Codex CLI, Cursor) the same question is asked as numbered plain text — the same options with the same descriptions, one question at a time, then stop and wait for the answer. That is the documented host adapter, not the open-ended free text this rule forbids → ../_shared/tool-adapters.md.
  2. One question at a time. The user answers with full context on the previous answer, and you adapt the next question to it. Batching two or three questions per call is the SDLC toolkit's behaviour, not this one — it costs exactly the adaptation that makes the interview worth running.
  3. Recommendation is mandatory. Always carry a position inside the Recommended option — a neutral interviewer surfaces less than one with a take the user can argue against.
  4. Don't skip phases. No alternatives before intent is clear; no grilling tradeoffs before the idea is understood.
  5. Fabricating an answer voids the run. Fabricating means answering for the user, from the model's own guesses — a brief filled that way is a reconstruction, not an interview, and every downstream stage inherits the fiction. A missing native AskUserQuestion is not that case: it's a host difference the adapter in rule 1 already covers, so ask in numbered plain text and carry on — never stop over it. STOP only when nobody can answer: a headless / -p run, a non-interactive session, or a denied tool call with no human left in the loop. Then say so plainly and write nothing.

Final summary (plain text, not AskUserQuestion)

≤4 questions → mini; ≥5 → full.

Mini: Revised idea (one sentence) · Weakest spot (one sentence) · Next action (one verb).

Full:

## Revised idea
{one paragraph — the idea after the interview}

## What surfaced
- **Hidden assumptions**: …
- **Main tradeoff**: …
- **Weakest spot**: …

## Alternative angles
1. {strongest} 2. {second} 3. {the one they wouldn't have reached alone}

## Next step
{one concrete verb — usually "/sdd:roadmap" or "/sdd:specify <slug>"}

A full annotated medium-depth pass → references/annotated-pass.md.

Definition of Done

  • In a repo: docs/idea-brief.md exists with all eight sections filled, updated_at = today, depth = the level used, §1 in the user's own words, and no tech tokens in the body. The step-7 structural self-check passed and its result is reported in the handoff.
  • Outside a repo: the final summary matches its mini/full format; nothing written to disk.
  • Either way: the depth dial was set, every question actually fired, and the handoff block named the next command.

Hand off

Emit the stage-handoff block per ../_shared/handoff.md (utility variant — /clear optional):

  • What I did — the revised idea + its weakest spot + «self-check: 5/5 pass» + the proposed commit.
  • Review — docs/idea-brief.md (§2 Problem and §5 Out of scope are the two the next stage leans on hardest). Outside a repo: «nothing on disk — the summary above is the artifact».
  • Run next — /sdd:roadmap when the brief covers a whole product that needs decomposing into steps (this is the file roadmap refuses to start without); /sdd:specify <slug> when the survivor is one buildable feature. Neither, when the idea wasn't an engineering one — resume whatever you were doing.

Never end on a bare «Next: …».

Anti-patterns

  • Asking "what exactly do you mean by X?" instead of offering 3 interpretations to pick between.
  • Generic advice ("think about the user") instead of a specific take.
  • Ending without a recommendation, or without naming the next step.
  • Dragging past the depth-dial ceiling — at medium the target is 6-10, not a marathon.
  • Reaching into the repo / running grep unprompted — the idea is articulated in words first.
  • Writing the brief from the model's summary instead of the user's answers. §1 is verbatim; §2–§8 quote what was actually said, not what would read well.
  • Growing the brief into a spec. Eight short sections. Acceptance criteria, user stories, NFRs and KPIs are specify's job, and it runs its own ideation suite — a second copy here means two pipelines producing the same document twice.

Edge cases

  • Idea already mature — skip most of Phase 1, sometimes to 1 question.
  • User aborts with "ok summary" — go straight to the final block with what's gathered.
  • Idea turned out weak mid-interview — say so plainly, then propose the reframe.
  • Idea is for someone else — re-route: "what would they say to question X?"
  • docs/idea-brief.md already exists — read it, update the sections this run changed, keep the rest; the commit message says what moved.

Stuck protocol

If the user picks Other twice in a row OR writes "I don't know" / "не знаю", switch to a single open text question ("In your own words — what's bugging you most about this right now?"). Once they answer, resume AskUserQuestion with a new angle.

References & template

Signals

GitHub stars
151
Forks
55
Last commit
Sep 2026
Advanced
Catalog kind
skill
Key
interview-genkovich
Source
github.com/genkovich/sdd