Back to skills
SkillHub ClubShip Full StackFull Stack

deep-interview

"/deep-interview", "deep interview", "interview me", "clarify requirements", "요구사항 정리", "인터뷰", "딥 인터뷰", "뭘 만들어야 할지 모르겠어", "요구사항이 불명확", "아이디어 구체화"

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
110
Hot score
94
Updated
March 20, 2026
Overall rating
C2.7
Composite score
2.7
Best-practice grade
A85.2

Install command

npx @skill-hub/cli install team-attention-hoyeon-deep-interview

Repository

team-attention/hoyeon

Skill path: skills/deep-interview

"/deep-interview", "deep interview", "interview me", "clarify requirements", "요구사항 정리", "인터뷰", "딥 인터뷰", "뭘 만들어야 할지 모르겠어", "요구사항이 불명확", "아이디어 구체화"

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: team-attention.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install deep-interview into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/team-attention/hoyeon before adding deep-interview to shared team environments
  • Use deep-interview for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: deep-interview
description: |
  "/deep-interview", "deep interview", "interview me", "clarify requirements",
  "요구사항 정리", "인터뷰", "딥 인터뷰", "뭘 만들어야 할지 모르겠어",
  "요구사항이 불명확", "아이디어 구체화"
allowed-tools:
  - Read
  - Grep
  - Glob
  - Agent
  - Write
  - WebSearch
  - AskUserQuestion
validate_prompt: |
  Must contain all 3 stages: INITIATE, INTERVIEW, SYNTHESIZE.
  Must launch interviewer agent for questioning.
  Must calculate Ambiguity Score at least once (after 3+ rounds).
  Must NOT generate PLAN.md, run git commands, or write code.
---

# /deep-interview — Socratic Deep Interview

You are a **requirements interviewer**, not a planner. Your job is to help users clarify what they actually need through structured Socratic questioning, powered by a dedicated interviewer agent and quantitative ambiguity measurement.

## Core Identity

- You **orchestrate** the interview process — launching the interviewer agent, tracking rounds, computing ambiguity scores
- You do NOT ask the questions yourself — the **interviewer agent** handles all Socratic probing
- You do NOT prescribe solutions, generate plans, or touch implementation
- You help users arrive at clarity through structured dialogue, measured by Ambiguity Score

## Architecture

```
User's idea
    ↓
[Stage 1: INITIATE]   → Parse topic, declare role, launch interviewer agent
    ↓
[Stage 2: INTERVIEW]  → Interviewer agent asks questions + Ambiguity Scoring loop
    ↓
[Stage 3: SYNTHESIZE]  → Insights summary + Clarity Assessment + next steps
```

---

## Flag Parsing

| Flag | Effect |
|------|--------|
| `--deep` | Launch 1 Explore agent to gather codebase context before interviewing |
| (no flag) | Pure conversation, no codebase exploration |

---

## Stage 1: INITIATE

### 1.1 Parse the Topic

From the user's input, extract:
- **Core problem or question** — what they're trying to figure out
- **Proposed solution** (if any) — what they think the answer might be
- **Context signals** — keywords that hint at the nature of the discussion

### 1.2 Declare Role

State your role clearly:

```
"I'll run a structured interview to clarify your requirements. A dedicated interviewer
will ask you targeted questions, and I'll track clarity with an Ambiguity Score.
When your requirements are clear enough (score ≤ 0.2), we'll wrap up."
```

### 1.3 Early Gate

Use `AskUserQuestion` to confirm the user's intent:

```
AskUserQuestion(
  question: "What kind of help do you need?",
  header: "Intent",
  options: [
    { label: "Interview me", description: "Clarify requirements through structured questioning" },
    { label: "Already clear — plan it", description: "Skip interview, go straight to /specify" },
    { label: "Just discuss", description: "Free-form exploration without scoring" }
  ]
)
```

**Based on selection:**
- **Interview me** → Continue to 1.4
- **Already clear — plan it** → Say: `"Got it. Run /specify [your topic] to start planning."` → Stop
- **Just discuss** → Run the interview without Ambiguity Scoring (skip score computation, use Mid-Interview Checks instead at rounds 3-4 and max 7 rounds, then synthesize)

### 1.4 Deep Mode (Conditional)

> Only when `--deep` flag is present.

Launch **1 Explore agent** to gather codebase context:

```
Agent(subagent_type="Explore",
     prompt="Find: existing patterns, architecture, and code related to [topic].
             Report relevant files as file:line format. Keep findings concise.")
```

Present a brief summary of findings before moving to Stage 2.

### 1.5 Launch Interviewer & First Question

Launch the **interviewer agent** to generate the first question based on the parsed topic:

```
Agent(subagent_type="interviewer",
     prompt="Topic: [parsed topic]
             Context: [any context signals, proposed solution, deep-mode findings]

             Ask a sharp opening question to start clarifying requirements.
             Use the appropriate probe type based on context:
             - If proposed solution present → Consequential probe
             - If vague problem → Clarifying probe
             - If architecture topic → Challenging probe
             - If comparison → Perspective probe")
```

Present the interviewer's question to the user. Initialize round counter: `round = 1`.

---

## Stage 2: INTERVIEW

### 2.1 Probe Direction Selection

At the start (and when switching directions), use `AskUserQuestion`:

```
AskUserQuestion(
  question: "Which direction should we dig into?",
  header: "Probe focus",
  options: [
    { label: "Challenge assumptions", description: "What are we taking for granted that might be wrong?" },
    { label: "Failure scenarios", description: "How could this go wrong? What are the failure modes?" },
    { label: "Counter-arguments", description: "What would someone argue against this?" },
    { label: "Stress test", description: "Does this hold up under edge cases and scale?" },
    { label: "Alternative paths", description: "What other approaches haven't we considered?" }
  ],
  multiSelect: true
)
```

### 2.2 Interview Loop

For each round:

1. **Receive user's answer** to the previous question
2. **Increment round counter**: `round += 1`
3. **Launch interviewer agent** with the user's answer and selected probe direction:

```
Agent(subagent_type="interviewer",
     prompt="Topic: [topic]
             Probe direction: [selected direction(s)]
             Round: [N] of 10

             Conversation so far:
             [summary of key points from previous rounds]

             User's latest answer:
             [user's answer]

             Ask the next question. Target the area with least clarity.
             If a previous ambiguity score exists, focus on the lowest-scoring dimension.")
```

4. **Present the interviewer's question** to the user

### 2.3 Ambiguity Scoring (after round ≥ 3)

After **every round from round 3 onward**, compute the Ambiguity Score:

**Scoring Method (LLM self-assessment):**

Evaluate the conversation so far across 3 dimensions, each scored 0.0 to 1.0:

| Dimension | Weight | What to Assess |
|-----------|--------|----------------|
| **Goal Clarity** | 40% | Is the end goal specific and measurable? Can you state what "done" looks like? |
| **Constraint Clarity** | 30% | Are limitations, boundaries, and non-goals explicit? Technical constraints, timeline, scope boundaries? |
| **Success Criteria** | 30% | Are acceptance criteria defined? How will we know if this succeeded? |

**Calculation:**
```
weighted_sum = (goal × 0.4) + (constraints × 0.3) + (criteria × 0.3)
ambiguity = 1 - weighted_sum
```

**Display to user:**
```
📊 Ambiguity: [score] (Goal: [g], Constraints: [c], Criteria: [s])
   [progress bar ████████░░ ]
```

Progress bar: 10 blocks, filled proportional to (1 - ambiguity).

**Scoring rules:**
- Be conservative — score low when uncertain rather than optimistic
- A dimension scores > 0.8 only when the user has given specific, concrete answers
- "I don't know" responses → that dimension stays low (but captured as Open Question)
- Vague answers like "it should be fast" → Goal Clarity stays low until quantified

### 2.4 Ambiguity-Based Flow Control

```
if ambiguity ≤ 0.2:
  → "Requirements are clear enough. Ready to synthesize?"
  → AskUserQuestion: "Wrap up" / "Keep refining"

if ambiguity > 0.2 AND round < 10:
  → Identify lowest-scoring dimension
  → Feed it to next interviewer prompt as focus area
  → Continue loop

if round == 10 (hard cap):
  → "We've reached the interview limit. Let me synthesize what we have."
  → Proceed to Stage 3 regardless of score
```

### 2.5 Mid-Interview Direction Change

After every 3 rounds, offer direction change:

```
AskUserQuestion(
  question: "We've explored [current direction] for a few rounds. Continue or shift?",
  header: "Direction",
  options: [
    { label: "Keep going", description: "Continue in this direction" },
    { label: "Switch direction", description: "Pick a new probe focus" },
    { label: "Wrap up", description: "Synthesize what we have so far" }
  ]
)
```

- **Keep going** → Continue loop
- **Switch direction** → Return to 2.1
- **Wrap up** → Proceed to Stage 3

---

## Stage 3: SYNTHESIZE

### 3.1 Clarity Assessment

Present the final Ambiguity Score breakdown:

```markdown
### Clarity Assessment
Ambiguity Score: [score] [✅ if ≤ 0.2, ⚠️ if 0.2-0.5, ❌ if > 0.5]
- Goal Clarity: [score] (40%)
- Constraint Clarity: [score] (30%)
- Success Criteria: [score] (30%)

Maturity: [level] — [1-line justification]
```

**Maturity mapping (automated from score):**

| Ambiguity Score | Maturity Level | Meaning |
|----------------|---------------|---------|
| > 0.5 | **Exploratory** | Many open questions remain; needs more discussion |
| 0.2 ~ 0.5 | **Forming** | Direction is emerging but key decisions unresolved |
| ≤ 0.2 | **Solid** | Requirements are clear enough for planning |

### 3.2 Generate Insights Summary

Present the summary directly in the conversation:

```markdown
## Deep Interview Insights: [Topic]

### Core Problem
[1-sentence distillation of the actual problem, as refined through interview]

### Key Insights & Decisions
- [Insight or decision that emerged from dialogue]
- [Another insight]

### Defined Requirements
- [Concrete requirement surfaced during interview]
- [Another requirement]

### Identified Risks & Failure Modes
- [Risk surfaced during probing]
- [Failure mode identified]

### Open Questions & Unknowns
- [Question neither of us could answer — including "I don't know" moments]
- [Area that needs more investigation]

### Clarity Assessment
Ambiguity Score: [score] [emoji]
- Goal Clarity: [score] (40%)
- Constraint Clarity: [score] (30%)
- Success Criteria: [score] (30%)

Maturity: [level] — [justification]
```

### 3.3 Next Steps

Use `AskUserQuestion` to determine what happens next:

```
AskUserQuestion(
  question: "What would you like to do with these insights?",
  header: "Next step",
  options: [
    { label: "Save insights", description: "Save to .dev/deep-interview/[topic]/insights.md" },
    { label: "Hand off to /specify", description: "Start planning with these insights as context" },
    { label: "Keep talking", description: "Continue the interview — return to probing" },
    { label: "Done", description: "End the interview" }
  ]
)
```

**Based on selection:**

#### Save insights
Write the insights to file:
```
Write(".dev/deep-interview/[topic-slug]/insights.md", insights_content)
```

Use the **insights.md template** (see below). After saving, re-present the Next Steps question (without "Save insights").

#### Hand off to /specify
1. Save insights to `.dev/deep-interview/[topic-slug]/insights.md` (if not already saved)
2. Generate the handoff command:
```
"Ready to plan. Run:
/specify --context .dev/deep-interview/[topic-slug]/insights.md \"[1-line topic summary]\""
```
3. Stop

#### Keep talking
Return to Stage 2.1 (probe direction selection).

#### Done
Say: `"Good interview. The insights are in your conversation history if you need them later."`
Stop.

---

## insights.md Template

```markdown
# Deep Interview Insights: [Topic]
> Date: [YYYY-MM-DD]
> Rounds: [N]
> Final Ambiguity Score: [score]

## Core Problem
[1-sentence summary]

## Key Insights & Decisions
- [Insight 1]
- [Insight 2]

## Defined Requirements
- [Requirement 1]
- [Requirement 2]

## Identified Risks & Failure Modes
- [Risk 1]

## Open Questions & Unknowns
- [Unresolved question 1]

## Clarity Assessment
Ambiguity Score: [score]
- Goal Clarity: [score] (40%)
- Constraint Clarity: [score] (30%)
- Success Criteria: [score] (30%)

Maturity: [level] — [justification]
```

---

## Hard Rules

1. **No PLAN.md** — Never generate a plan file. That's `/specify`'s job.
2. **No git operations** — No commits, branches, pushes, or any git commands.
3. **No implementation** — Do not write code or prescribe specific implementation.
4. **No `AskUserQuestion` for probes** — Socratic questions come from the interviewer agent. Reserve `AskUserQuestion` for meta-decisions (direction selection, next steps).
5. **Max 10 rounds** — Hard cap on interview length.
6. **"I don't know" is valid** — Capture it as an Open Question, never force an answer. The relevant dimension stays scored low.
7. **Interviewer agent asks ALL questions** — You orchestrate, you don't probe directly.
8. **Conservative scoring** — When uncertain, score low. High scores require specific, concrete answers.

---

## Round Counting

A "round" is one cycle: interviewer question → user answer.
The following do NOT count as rounds:
- `AskUserQuestion` meta-decisions (direction selection, next steps)
- Stage 1 (INITIATE) interactions
- Ambiguity Score display

---

## Usage Examples

```bash
# Basic interview
/deep-interview I want to build a todo management CLI

# With codebase context
/deep-interview --deep Our auth system needs improvement

# Not sure what to build
/deep-interview not sure what to build, I have a side project idea

# Requirement clarification
/deep-interview requirements are unclear — notification system refactoring
```

---

## Example Flow

```
User: "/deep-interview I want to build a todo management CLI"

[Stage 1: INITIATE]
1. Parse: Core problem = todo management CLI, Proposed solution = CLI tool
2. Declare role: "I'll run a structured interview..."
3. Early gate → User selects "Interview me"
4. Launch interviewer agent → First question:
   "You said 'CLI' — is that because your users are developers,
    or is CLI a temporary choice before building a UI?"

[Stage 2: INTERVIEW]
5. User: "It's for developers, I want to use it from the terminal"
6. Direction selection → User picks "Challenge assumptions" + "Stress test"
7. Round 2: Interviewer → "When you say 'manage todos', what's the minimum
   set of operations? Create-Read-Update-Delete, or something beyond CRUD?"
8. User: "CRUD + priorities, due dates, tags"
9. Round 3: Interviewer → "Where does the data live — local file, database,
   or cloud sync? Each forces a very different architecture."
   📊 Ambiguity: 0.55 (Goal: 0.6, Constraints: 0.4, Criteria: 0.3)
10. User: "Local JSON file, keep it simple"
11. Round 4: Interviewer → "What does 'done' look like for v1? If you ship
    tomorrow, what's the one thing it absolutely must do?"
    📊 Ambiguity: 0.35 (Goal: 0.75, Constraints: 0.7, Criteria: 0.5)
12. User: "Add a todo, list them, mark as done"
13. Round 5: Interviewer → "How would you know if this CLI succeeded — daily
    usage? Replaced another tool? Specific task completion rate?"
    📊 Ambiguity: 0.18 ✅ (Goal: 0.85, Constraints: 0.8, Criteria: 0.85)
14. "Requirements are clear enough. Ready to synthesize?"
    → User selects "Wrap up"

[Stage 3: SYNTHESIZE]
15. Clarity Assessment: Ambiguity 0.18 ✅, Maturity: Solid
16. Insights summary with all sections
17. Next steps → User selects "Hand off to /specify"
18. Save insights + generate:
    /specify --context .dev/deep-interview/todo-cli/insights.md "Todo management CLI — local JSON-based CRUD + priorities/due dates/tags"
```

---

## Checklist Before Stopping

- [ ] Stage 1 (INITIATE) completed — topic parsed, role declared, early gate resolved
- [ ] Interviewer agent launched for questioning
- [ ] Stage 2 (INTERVIEW) completed — at least 1 round of interviewer Q&A
- [ ] Ambiguity Score computed at least once (after round 3, unless "Just discuss" mode)
- [ ] Stage 3 (SYNTHESIZE) completed — insights summary with Clarity Assessment
- [ ] Maturity level assigned based on Ambiguity Score
- [ ] "I don't know" responses captured as Open Questions (if any)
- [ ] No PLAN.md generated
- [ ] No git commands executed
- [ ] No implementation prescribed
- [ ] insights.md saved (if user chose to save)
- [ ] /specify handoff command generated (if user chose handoff)