From 12ae36e0d5b1d9d6c77705f98a73f16b97c2d98f Mon Sep 17 00:00:00 2001 From: Addy Osmani Date: Wed, 13 May 2026 21:47:29 -0700 Subject: [PATCH] interview-me: address review feedback - Disambiguate the using-agent-skills flowchart so interview-me and idea-refine no longer match the same condition top-to-bottom ("Don't know what you want yet?" vs "Have a rough concept, need variants?"). - Add "grill me" to interview-me's frontmatter description and the When to Use trigger list (it was already mentioned in README). - Reorder sections: Example and Interaction with Other Skills now precede Common Rationalizations and Red Flags, so the persuasive example lands before the rationalization table. Per review by @nucliweb on #164. --- skills/interview-me/SKILL.md | 54 +++++++++++++++--------------- skills/using-agent-skills/SKILL.md | 4 +-- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/skills/interview-me/SKILL.md b/skills/interview-me/SKILL.md index 4f3b9cf8..961ddeeb 100644 --- a/skills/interview-me/SKILL.md +++ b/skills/interview-me/SKILL.md @@ -1,6 +1,6 @@ --- name: interview-me -description: Extracts what the user actually wants instead of what they think they should want. Achieves this through one-question-at-a-time interview until ~95% confidence about the underlying intent. Use when an ask is underspecified ("build me X" without "for whom" or "why now"), when the user explicitly invokes ("interview me", "are we sure?", "stress-test my thinking"), or when you catch yourself silently filling in ambiguous requirements before any plan, spec, or code exists. +description: Extracts what the user actually wants instead of what they think they should want. Achieves this through one-question-at-a-time interview until ~95% confidence about the underlying intent. Use when an ask is underspecified ("build me X" without "for whom" or "why now"), when the user explicitly invokes ("interview me", "grill me", "are we sure?", "stress-test my thinking"), or when you catch yourself silently filling in ambiguous requirements before any plan, spec, or code exists. --- # Interview Me @@ -21,7 +21,7 @@ Apply this skill when: - The request is conventional rather than specific ("build me X", "make it faster") and you can't unpack the convention without guessing - You're tempted to start with assumptions you haven't surfaced - The user hasn't said which value they're optimizing for when two reasonable ones are in tension (simplicity vs. flexibility, cost vs. speed) -- The user explicitly invokes: "interview me", "before we start, are we sure?", "stress-test my thinking" +- The user explicitly invokes: "interview me", "grill me", "before we start, are we sure?", "stress-test my thinking" **When NOT to use:** @@ -135,31 +135,6 @@ The output of this skill is a **confirmed statement of intent**: the restate fro If the user wants the intent to persist (a multi-session project, a handoff to another collaborator), offer to save it to `docs/intent/[topic].md`. Only save if they confirm. -## Common Rationalizations - -| Rationalization | Reality | -|---|---| -| "The ask is clear enough" | If you can't write the user's desired outcome in one sentence right now, the ask isn't clear. Run Step 1 before deciding. | -| "Asking too many questions wastes their time" | Time wasted by 4–6 targeted questions is small. Time wasted by building the wrong thing is enormous, and the user is the one bearing that cost. | -| "I'll figure it out as I build" | Switching costs after code exists are 10x what they are now. Discovery during implementation is rework. | -| "They said 'whatever you think,' so I should just decide" | "Whatever you think" is delegation, not decision. Re-ask with two concrete options as a choice. | -| "I should give them several options to pick from" | Options work when the user knows what they want and is choosing between trade-offs. They don't know what they want yet. Listing options widens the search; asking narrows it. | -| "If I attach my guess, I'm leading them" | Leading is the point. Reacting is faster than generating from scratch. The risk is sycophancy, not leading; mitigate by being visibly willing to be wrong. | -| "We've talked enough, I get it" | Test it: can you predict their reaction to the next three questions? If not, you don't get it yet. | -| "The user said yes, we're done" | If the yes followed a vague restate or an open-ended "sounds good," the yes is hollow. Restate concretely and re-confirm. | - -## Red Flags - -- Three or more questions in a single message: that's batching, not interviewing -- A question without your hypothesis attached: that's surveying, not committing -- Accepting "whatever you think is best" as a terminal answer -- Producing a spec, plan, or task list before the user has explicitly confirmed your restate -- Questions framed as "what would be best practice?" instead of "what do you actually want?" -- The user gives a sophistication-signaling answer ("scalable", "clean", "modern") and you accept it without probing whether it's what they actually want -- Three or more rounds without your confidence visibly rising: you're asking the wrong questions, step back and reframe -- Saving the intent doc before the user has confirmed (the doc itself implies a yes the user didn't give) -- Skipping the "Out of scope" line in the restate (silent disagreement about non-goals is half of misalignment) - ## Example A short before-and-after. @@ -208,6 +183,31 @@ Two questions in, the agent has discovered the actual ask isn't "a dashboard." I - **`doubt-driven-development`**: opposite end of the timeline. Interview-me is pre-decision intent extraction; doubt-driven is post-decision artifact review. Both catch divergence, but at different moments. - **`source-driven-development`**: orthogonal. Interview-me clarifies what the user wants; SDD verifies framework facts. They don't compete. +## Common Rationalizations + +| Rationalization | Reality | +|---|---| +| "The ask is clear enough" | If you can't write the user's desired outcome in one sentence right now, the ask isn't clear. Run Step 1 before deciding. | +| "Asking too many questions wastes their time" | Time wasted by 4–6 targeted questions is small. Time wasted by building the wrong thing is enormous, and the user is the one bearing that cost. | +| "I'll figure it out as I build" | Switching costs after code exists are 10x what they are now. Discovery during implementation is rework. | +| "They said 'whatever you think,' so I should just decide" | "Whatever you think" is delegation, not decision. Re-ask with two concrete options as a choice. | +| "I should give them several options to pick from" | Options work when the user knows what they want and is choosing between trade-offs. They don't know what they want yet. Listing options widens the search; asking narrows it. | +| "If I attach my guess, I'm leading them" | Leading is the point. Reacting is faster than generating from scratch. The risk is sycophancy, not leading; mitigate by being visibly willing to be wrong. | +| "We've talked enough, I get it" | Test it: can you predict their reaction to the next three questions? If not, you don't get it yet. | +| "The user said yes, we're done" | If the yes followed a vague restate or an open-ended "sounds good," the yes is hollow. Restate concretely and re-confirm. | + +## Red Flags + +- Three or more questions in a single message: that's batching, not interviewing +- A question without your hypothesis attached: that's surveying, not committing +- Accepting "whatever you think is best" as a terminal answer +- Producing a spec, plan, or task list before the user has explicitly confirmed your restate +- Questions framed as "what would be best practice?" instead of "what do you actually want?" +- The user gives a sophistication-signaling answer ("scalable", "clean", "modern") and you accept it without probing whether it's what they actually want +- Three or more rounds without your confidence visibly rising: you're asking the wrong questions, step back and reframe +- Saving the intent doc before the user has confirmed (the doc itself implies a yes the user didn't give) +- Skipping the "Out of scope" line in the restate (silent disagreement about non-goals is half of misalignment) + ## Verification After applying interview-me: diff --git a/skills/using-agent-skills/SKILL.md b/skills/using-agent-skills/SKILL.md index 15fc57c4..bb033455 100644 --- a/skills/using-agent-skills/SKILL.md +++ b/skills/using-agent-skills/SKILL.md @@ -16,8 +16,8 @@ When a task arrives, identify the development phase and apply the corresponding ``` Task arrives │ - ├── Ask is underspecified? ───────→ interview-me - ├── Vague idea/need refinement? ──→ idea-refine + ├── Don't know what you want yet? ──────→ interview-me + ├── Have a rough concept, need variants? → idea-refine ├── New project/feature/change? ──→ spec-driven-development ├── Have a spec, need tasks? ──────→ planning-and-task-breakdown ├── Implementing code? ────────────→ incremental-implementation