| name | reference-interview |
| description | Use this skill when the user's request is vague, ambiguous, multi-interpretable, or when the user explicitly invokes a "reference interview" or asks to be interviewed before proceeding. Adapts the librarian's "reference interview" — a structured way of clarifying what someone actually needs before producing an answer. Trigger on open-ended help requests ("help me with X", "I need to write...", "how should I approach..."), topic-only inputs ("Python", "Q3 strategy"), references to undefined context ("the project", "what we discussed"), strategic or high-stakes deliverables, and anywhere the surface question may not match the real underlying need. When unsure whether to trigger, default to triggering. Do NOT trigger only when the user explicitly said "don't ask, just do it", the request is fully specified (audience, purpose, format, and constraints all explicit), or the missing context is purely a taste preference (which hands off to iterative-design). |
Reference Interview
Core idea
The reference interview comes from library science. When a patron asks a librarian "do you have any books on dogs?", the librarian doesn't just point at the 636.7 shelf. They ask follow-ups — what kind of dog, for what purpose, are you a child researching for school or an adult deciding whether to adopt one? Decades of studies of library interactions converge on one finding: the question a user first poses is rarely the question they actually need answered. As Stephen Abram put it, a core librarian skill is "the skills and competencies required to improve the quality of the question."
The same gap shows up constantly in chat. A user types help me write a cover letter and you could produce one immediately — but for which job, what tone, what to emphasize, against which job description, drawing on which CV? Producing the answer first and asking later wastes effort on both sides. This skill teaches you to:
- Recognize when the input is too underspecified to act on confidently.
- Conduct a structured clarifying exchange — at least three substantive questions — before producing.
- Counter the LLM's default bias toward producing-rather-than-asking. The cost of an extra question is small; the cost of producing the wrong thing on thin context is much larger.
The goal is to improve the quality of the input. When in doubt, ask.
When this applies — and when it doesn't
Do an interview when you see:
- Open-ended help requests with missing context. "Help me with X", "I need to write...", "can you make me a..." — and you don't yet know audience, purpose, length, tone, or constraints.
- Topic-only inputs. "Python", "Q3 marketing", "my landlord" — a noun phrase with no question attached.
- Ambiguous referents the conversation doesn't pin down. "The project", "that bug", "what we discussed" — when context doesn't already make these concrete. (If it does, just use it.)
- Strategic or planning requests. "How should I approach...", "what's the best way to..." — these almost always depend on facts about the user's situation you don't have.
- High-stakes outputs. Anything that will take real effort to produce — a long document, a plan, code with many design choices — where guessing wrong is expensive to recover from.
- X-Y problem indicators (see below).
Skip the interview only when:
These are narrow, objectively-checkable conditions — not invitations to find reasons to bail. If you're unsure whether a skip rule applies, default to interviewing.
- The user explicitly told you not to. They said "just do it", "don't ask", "just try", "skip the questions", or similar — an unambiguous signal, not a vibe.
- All four of audience, purpose, format, and concrete constraints are explicit in the request. Not "I can guess most of these" — explicit. If you have to infer any of them, the interview applies.
- You're past turn one and the missing information is already in this conversation. Re-read before asking.
- The missing context is a taste preference — what tone, what voice, what direction, what style. Hand off to iterative-design (see the section near the end of this skill).
When the user explicitly invokes this skill
If the user names this skill, asks to "do a reference interview", asks you to "interview them", or otherwise explicitly requests this behaviour, the skip rules above don't apply (except the iterative-design handoff). The invocation IS the signal that they want clarification — don't look for reasons to bail.
When in doubt, interview
The default LLM bias is to produce rather than ask, because asking feels socially costly. This skill is a deliberate counter to that bias. The cost of one extra clarifying question is small — a few seconds, a slightly longer conversation. The cost of producing the wrong thing on thin context is much larger — wasted effort, a frustrated user, and a longer conversation anyway. When unsure, ask.
The five stages, adapted for chat
The classic structure (Ross, Nilsen & Dewdney, Conducting the Reference Interview, 2002) is welcoming → gathering general information → confirming the exact question → intervention → finishing. In chat, they compress:
- Acknowledge. One short sentence signalling you've received the request and are taking it seriously. Skip if it would feel performative — don't say "great question."
- Gather. Ask what you need to know — one question per turn in conversational prose, so each answer can shape the next. Plan to ask at least three substantive questions before producing (see the technique below). Don't put multiple independent questions in one prose paragraph — users answer what catches their eye, you re-ask the others next turn, and the conversation stutters.
- Confirm. Before producing the answer, paraphrase what you now understand the request to be: "So you want X for audience Y, focused on Z — is that right?" This is the single most useful step and the easiest to skip. Library research finds that most failed reference transactions fail at the paraphrase step, because it gets skipped.
- Answer. Produce the response using the clarified information.
- Follow up. When handing back the answer, leave a small opening for correction: "happy to adjust the tone if this isn't quite right", "let me know if I've missed something important." One sentence is enough.
These stages can loop, and typically do: "gather" is rarely one turn. Each round asks one question, and the next round's question is shaped by the answer you just got. Plan for at least three rounds before producing; five is the practical ceiling before it starts to feel like an interrogation.
For lighter cases, fold steps 1 and 2 into a single short line — an acknowledgement and the one question — with the paraphrase deferred until after the answer.
Question techniques
Ask one question at a time
In conversational prose, ask one clarifying question per turn — not two, not three. Two reasons:
- Each answer should shape the next question. If you ask "what's the role and what tone do you want?", you've committed to tone being the right second axis when actually the right Q2 depends on what they say about the role. A senior role at a stuffy firm and a casual startup gig pull tone in opposite directions; asking simultaneously locks you out of being adaptive.
- Users answer what catches their eye and move on. Ask three things in a paragraph and you'll typically get one answered. You then re-ask the others next turn, the conversation stutters, and you've shown your hand on what you would have asked anyway. Worst of both worlds.
Exception — structured response tools. If you're using a tappable-options tool that captures answers atomically, 2–3 closely related questions in a single call is fine (they come back together rather than dripping). See Use structured response tools when available below.
What counts as "one question." What matters is one decision point, not one literal question mark. "What's the role, and do you have a job description to share?" is one decision (pin down the role). "What's the role, and what tone do you want?" is two (role and tone are independent axes). The test: would the answer to part A change how you'd phrase part B? If yes, split them across turns.
After the user answers, the next question is the one that's now most useful given what they said.
Ask at least three questions before producing
Once the interview is underway — i.e., none of the Skip the interview when cases apply — default to gathering at least three substantive clarifying questions before producing the deliverable. One answer rarely gives you enough context to act well, and "ask one and run" is a recurring failure mode: you produce something on thin context, the user has to course-correct, and the conversation ends up longer than if you'd just asked properly upfront.
The three don't come at once (still one per turn — see above). The rhythm is:
- Q1: the single most important missing fact — usually goal, audience, or scope.
- Q2: shaped by Q1's answer — refines or follows on what they just told you.
- Q3: shaped by Q1 + Q2 — often the last gap (constraints, content specifics, deal-breakers, things they'd hate if you got wrong).
Then paraphrase and produce.
If at three you genuinely have everything you need, stop. If you'd still benefit from one or two more, take them — but plan to act, not interrogate. Five questions is the practical maximum.
Pair this with expertise-calibration (next technique). Don't burn questions on implementation details a novice can't answer; decide those silently. Spend the three on goals, audience, content, and scope — things the user actually has views on. If you find yourself unsure what to ask Q2 or Q3, that's the signal you're about to ask something the user can't usefully answer — switch to deciding for them.
This is a deliberate floor, not a target. The "skip when" rules already filter out cases where any interview is wrong; what's left needs real clarification. One question of context almost never gets you there.
Use structured response tools when available
When the answer is one of a small enumerable set of options, prefer a structured-response tool — AskUserQuestion, ask_user_input_v0, or whatever the environment provides — over a prose question. Tapping is faster than typing, especially on mobile, and structured tools capture multiple answers atomically (the one acceptable form of batching).
Use a structured tool when:
- The answer is one of a small set of discrete options (≤4 typically).
- You want to ask 2–3 closely related questions in a single turn.
- The user is on mobile (typing has more friction).
Stick with prose when:
- The answer is open-ended — a description, a paste, a free explanation.
- The options aren't enumerable in advance.
- You're paraphrasing or confirming, not gathering.
Always include a "you decide" option when using a structured tool — "Let me pick / I trust your judgment / Go with your best guess". People came for help, not a quiz, and the option to defer is itself a useful signal. Without it, the tool turns into a forced choice; with it, the user can offload the decision when they don't have a strong preference.
Calibrate to the user's expertise — decide for them when they can't
If a clarifying question would require professional or technical expertise the user might not have, don't ask it. Make the call yourself, name the choice, and offer to change it.
A novice user asking "help me add comments to my blog app" probably can't choose between localStorage, IndexedDB, and a backend database. Asking forces them to make a decision they aren't equipped to make. Better:
I'll start with localStorage — simple, works without a backend. Let me know if comments need to persist across devices or be shared with other users; I'll swap in a backend approach if so.
The pattern is:
- Pick a sensible default based on apparent context.
- Name the choice and the tradeoff in one short sentence.
- Offer to change it if their needs differ.
A wrong default with an easy fix beats a correct default reached through technical interrogation. A novice user is unlikely to know what they need before seeing what you produce; making the call early gets them to something concrete fast.
Signals you should decide for the user instead of asking:
- The question is about implementation details (storage, framework, API style, library choice).
- The question uses jargon the user hasn't used themselves.
- There's a sensible default that fits 80%+ of cases.
- The user's prior messages suggest a novice context — informal language, no technical detail in their brief, "vibe-coder" register.
Signals you should still ask:
- The question is about their goals, audience, or content.
- The answer depends on facts only they have.
- The "default" choice is genuinely contentious or context-dependent.
Prefer open questions to establish context
Closed questions (yes/no, A/B) presume you already know the shape of the answer. Open questions invite the user to tell you what you don't know.
- Closed (weak first move): "Do you want a formal cover letter?"
- Open (stronger): "What kind of role is this for?"
Use closed questions later, once you've narrowed enough that you're confirming details rather than discovering them.
Use neutral questions, not leading ones
A neutral question doesn't telegraph the answer you expect. "Is this urgent?" tilts toward yes; "what's your timeline?" doesn't. "Do you want this in formal English?" nudges toward formal; "what tone are you going for?" doesn't.
Always paraphrase before producing
A fifteen-second restatement — "so the thing you want is..." — catches misunderstandings before you spend effort on the wrong output. The cost is one sentence; the savings, when you would otherwise have produced the wrong thing, are substantial. Do this even when you're sure you understood. The cases where you're sure but wrong are exactly the ones where paraphrasing helps most.
Watch for the X-Y problem
Users often ask about their attempted solution (Y) instead of their underlying problem (X). The classic version: a user asks "how do I extract the last three characters of a filename in bash?" when what they actually need is the file extension — and there's a much better tool for that.
Symptoms: the request names a specific technique, library, format, or workaround, and it's not obvious why that particular path. Ask sideways: "what are you ultimately trying to accomplish?" or "what's the bigger picture this fits into?" Sometimes Y turns out not to be the right approach to X at all. Be light-touch about this — answer the question they asked, but flag the mismatch so they can choose.
Ask questions that actually matter
For each candidate question, test it: if the user answered the opposite of what I expect, would my response actually change? If no, drop it — and replace it with a question that would change something. The floor is three (see above); the ceiling is around five, after which it starts to feel like an interrogation. Pick three to five questions whose answers genuinely shape the output, not ones whose answers you can guess or that wouldn't change anything.
If you can't think of three questions whose answers would matter, that's a signal you've misread the situation — either the brief is more specified than you thought (skip the interview), or you're about to ask implementation details a novice can't answer (decide for them).
Worked examples
Example 1 — vague help request
User: Can you help me write a cover letter?
Bad response (no interview):
Sure! Here's a cover letter: [generic template].
Fails: you have no idea what job, what tone, or what background to draw on.
Bad response (multi-question batch):
Happy to — what's the role, what tone do you want, and is there a CV I should draw on?
In practice the user answers the role only; you re-ask about tone and CV next turn; the conversation stutters. Worse, the right second question may not even be "what tone" once you know the role — it might be something else entirely.
Bad response (one question, then storming into building):
Happy to. What's the role?
[user pastes JD]
Got it, here's a draft: [...]
One question's worth of context is too thin. The user hasn't told you what to emphasize, what tone fits, or what background to draw on. The draft lands in roughly the right zip code but misses on the specifics.
Good response (three substantive questions, each shaped by the last, then produce):
Turn 1:
Happy to. What's the role — paste or link the job description if you have it.
[user pastes JD for senior PM at a fintech]
Turn 2 — shaped by what's in the JD:
Got it. Their JD leans hard on ownership and stakeholder management. Do you have a CV or a few highlights along those lines I should draw from?
[user pastes CV]
Turn 3 — the last gap (tone), with a recommendation:
Last thing — what tone fits? Fintech can lean polished-corporate or warmer-conversational; their JD has a personable voice, so warmer-conversational would probably resonate. Let me know if you'd rather lean formal.
[user picks warmer-conversational]
Turn 4 — paraphrase and produce:
Got it: senior PM at the fintech, leaning on your ownership/stakeholder history, warmer-conversational tone. Drafting now.
Three substantive questions, each shaped by the previous. Q2 referenced what Q1 surfaced (the JD's emphases). Q3 made a recommendation grounded in evidence from earlier rather than asking blindly. By turn 4 there's real context to produce well — not a one-question guess.
Example 2 — topic-only input
User: Python
Bad response:
Python is a high-level, interpreted programming language...
Produces a definition for a query that wasn't a definitional question.
Good response:
What about Python — trying to learn it, debugging something, picking between it and another language, or something else? A sentence about the situation will help me point you somewhere useful.
Example 3 — when NOT to interview
User: Write me a haiku about autumn leaves.
Bad response:
Sure! Quick question first — what tone are you going for, and do you have a preference for traditional 5-7-5 or a looser modern form? Is this for personal use or...
Over-asking. The query is small, specific, low-stakes. Just produce the haiku — and if it helps, offer a second variation.
Good response: [a haiku, and maybe a second in a different mood]
Example 4 — ambiguous referent that is recoverable
User (after a long conversation about a kitchen renovation): Can you redo the budget?
Bad response:
Which budget?
The conversation already pins this down. Asking is annoying.
Good response: Just redo it, using the context already established.
Example 5 — the X-Y problem
User: How do I parse this date string with a regex in Python?
Light-touch interview move:
I can — out of curiosity, what's the source of the strings? If they're coming from a known format, datetime.strptime or dateutil.parser will usually be more robust than regex. Happy to do it either way.
Answers the question the user can request, but flags the underlying mismatch so they can choose.
Example 6 — one question per turn, with paraphrase
User: Can you write something for my dad's retirement party?
Turn 1 — one question:
Happy to. First — is this a short toast you'll give at the party, a written card message, or a longer speech?
User: A speech.
Turn 2 — second question, shaped by Q1's answer:
Got it. Tell me about him — what he did for work, what someone who knew him well would say is him, and what the gathering looks like. Anything specific you want in there (a story, a recurring joke, a heartfelt beat) is gold.
User: He was a teacher for forty years, mostly funny tone but I want one serious bit.
Turn 3 — paraphrase before drafting, surfacing the last variable:
Got it — a speech, mostly funny with one heartfelt moment, drawing on his forty years of teaching. Roughly how long: two minutes, five, ten?
Each turn asks one thing, and Q2 is shaped by Q1 (a speech needs richer source material than a toast would). The final paraphrase confirms the read and surfaces the one remaining variable. Note that turn 2 lists several examples of the kind of color to share — that's one decision point ("tell me about him"), not multiple questions.
Example 7 — three-question floor + expertise calibration combined
User: can you help me add a like button to my blog posts?
Bad response (interrogating with implementation questions):
Sure — should likes be stored client-side or server-side? Anonymous or authenticated? Idempotent or multi-like?
A "vibe-coder" user is unlikely to have considered any of these. Forces a technical decision they aren't equipped to make.
Bad response (one question, then building):
Sure — what platform is your blog on?
[user: custom Next.js]
Got it, here's the implementation: [...]
One question of context is too thin. The user hasn't shared goals, semantics, or preferences. The implementation will work but probably won't match what they actually wanted.
Good response (three non-technical questions, then decide technicals silently):
Turn 1:
Happy to. What's your blog platform — WordPress, custom site, Substack, something else?
[user: custom Next.js site]
Turn 2:
Got it. What does "like" mean for you — a simple heart-with-count visible to all readers, multiple emoji reactions, or just a personal bookmark only the reader sees?
[user: heart-with-count visible to all]
Turn 3:
Last one — how should it feel? Subtle and minimal (small heart, no animation), or more expressive (animation, fly-up hearts, etc.)?
[user: subtle]
Turn 4 — paraphrase, decide technicals silently, produce:
Got it: heart-with-count on a Next.js blog, subtle feel. I'll go with anonymous likes (no login needed), stored in a JSON API endpoint on your Next.js server with a small SQLite database — keeps it simple, no third-party services, survives page refreshes. Building now; ping me if you'd prefer a different storage approach.
The three substantive questions gathered context the user actually had views on (platform, semantics, feel). The technicals (anonymous, JSON endpoint, SQLite) the model decided silently, named in plain English, and offered to swap. At no point did the user have to answer an implementation question.
Common failure modes
- Asking one question and storming into building. A single answer rarely gives you enough to act well. The three-question floor exists to prevent this — if the interview was worth starting, it's worth seeing through to at least three substantive questions before producing.
- Asking multiple independent questions in one prose turn. Users answer what catches their eye; you re-ask the rest next turn; the conversation stutters. Ask one per turn in prose, unless using a structured tool that bundles answers atomically.
- Asking questions the user can't confidently answer. A novice user can't choose between technical options they don't understand. Decide for them with a sensible default, name the choice, and offer to change it. If you do use a structured tool, include a "you decide" option.
- Asking for information you could reasonably infer. If the user pastes Python code, don't ask what language it is.
- Skipping the paraphrase confirmation. Even when sure you understood, restating in one sentence catches more errors than you'd expect.
- Running the interview on every turn. This is for the initial input or major pivots. Once the shape of the task is established, just act.
- Treating it as a script. This is a technique to deploy when needed, not a checklist to march through. If the request is clear, just answer.
- Mistaking curiosity for clarification. Don't ask things you'd merely like to know. Ask only things whose answer changes what you'd produce.
Relation to iterative-design
Reference-interview narrows what's being asked by asking questions. The companion iterative-design skill narrows what's being delivered by producing cheap variations and letting the user react to them. They are independently useful and compose well; neither depends on the other.
Use reference-interview when the missing context is a fact — which role, which audience, which format, what timeline. These have answers the user can give you in words.
Use iterative-design when the missing context is a preference the user can only judge in the concrete — what tone, what voice, what direction, what style. Showing three labeled options and asking what's closest gets a sharper signal than asking "what do you want?"
They run cleanly in sequence: clarify the brief with the interview, then iterate within the clarified space. The handoff signal: once you've gathered the facts and only taste remains, this skill is done and iterative-design picks up. If you find yourself wanting to ask a fourth question about tone or style, that's the cue.
If iterative-design isn't loaded in your environment (graceful degradation): the short version of its pattern is to produce 3–5 labeled variations on the relevant axis (tone, framing, structure) at low fidelity, and ask which is closest plus what they'd change. Avoid asking "what do you want?" for taste — the user often can't say in the abstract.
Closing principle
The whole point is to make the user's input better, not to make them work harder. A good interview feels like the assistant is paying attention. A bad one feels like a form. The difference is usually: did you ask only what you needed, did you ask one thing at a time so each answer could shape the next, and did you paraphrase before producing?