---
name: tfx-deep-interview
description: >
  구현 전 소크라테스식 질의로 요구사항 깊이 탐색.
  5단계 인터뷰를 통해 요구사항을 명확히 하고 최적 구현 경로를 도출합니다.
triggers:
  - deep-interview
  - 딥인터뷰
  - 소크라테스
  - 깊이 탐색
  - 요구사항 분석
argument-hint: "<topic>"
---

# tfx-deep-interview — 소크라테스식 깊이 탐색

> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.


> 구현 전에 질문을 통해 요구사항의 깊이를 탐색합니다.
> "좋은 답은 좋은 질문에서 나온다."

## 사용법

```
/deep-interview 인증 시스템 리팩터링
/deep-interview JWT 기반 세션 관리
/딥인터뷰 데이터 파이프라인 설계
```

## 위임 패턴

Claude 토큰을 절약하기 위해 분석 작업은 Gemini CLI에 위임합니다.

- **Claude 담당**: AskUserQuestion (사용자 상호작용), 산출물 저장
- **Gemini 담당**: 질문 생성, 응답 분석, 종합 문서 초안 작성

각 단계에서 Claude는 누적 컨텍스트를 Gemini에 전달하고, Gemini가 반환한 질문을 AskUserQuestion으로 사용자에게 제시합니다. 사용자 답변은 다음 단계 Gemini 호출의 입력으로 전달됩니다.

**Fallback**: Gemini 호출이 실패하면 Claude Opus가 모든 분석을 직접 수행합니다 (원래 동작 유지).

## 토큰 예산

| 담당 | 토큰 | 역할 |
|------|------|------|
| Claude | ~2K | 오케스트레이션 + AskUserQuestion만 |
| Gemini | ~10K | 분석 + 질문 생성 + 문서 초안 |

## 5단계 인터뷰 프로세스

인터뷰는 반드시 아래 5단계를 순서대로 진행합니다. 각 단계에서 사용자 응답을 수집한 후 다음 단계로 이동합니다.

### Stage 1: Clarify (명확화)

> "정확히 무엇을 달성하려는가?"

목표를 한 문장으로 정의하고, 성공 기준과 현재 상태의 차이를 파악합니다.

**단계 진입 시 Gemini 위임:**

```
Bash("bash scripts/tfx-route.sh gemini exec 'Deep interview Stage 1: Clarify. Topic: {topic}. Previous answers: none. Generate 3 probing questions for this stage and analyze prior responses. Return JSON: {analysis, questions, key_insights}'")
```

Gemini가 반환한 `questions` 배열을 AskUserQuestion으로 사용자에게 제시합니다.

**질문 템플릿 (Gemini 실패 시 Fallback):**

1. "이 작업의 핵심 목표를 한 문장으로 설명해주세요."
2. "완료 후 어떤 상태가 되어야 성공인가요?"
3. "현재 상태에서 가장 큰 문제점은 무엇인가요?"

### Stage 2: Decompose (분해)

> "이것을 어떤 하위 문제로 나눌 수 있는가?"

대상을 3-5개의 독립적 하위 문제로 분해하고, 의존성과 우선순위를 결정합니다.

**단계 진입 시 Gemini 위임:**

```
Bash("bash scripts/tfx-route.sh gemini exec 'Deep interview Stage 2: Decompose. Topic: {topic}. Previous answers: {stage1_answers}. Generate 3 probing questions for this stage and analyze prior responses. Return JSON: {analysis, questions, key_insights}'")
```

Gemini가 반환한 `questions` 배열을 AskUserQuestion으로 사용자에게 제시합니다.

**질문 템플릿 (Gemini 실패 시 Fallback):**

1. "이 작업을 3-5개의 독립된 단계로 나눈다면?"
2. "각 단계 사이에 의존성이 있나요?"
3. "가장 먼저 해결해야 할 핵심 문제는?"

### Stage 3: Challenge (반론)

> "이 접근의 약점은?"

선택한 접근 방식의 단점을 식별하고, 실패 시나리오와 기술 부채 가능성을 탐색합니다.

**단계 진입 시 Gemini 위임:**

```
Bash("bash scripts/tfx-route.sh gemini exec 'Deep interview Stage 3: Challenge. Topic: {topic}. Previous answers: {stage1_answers} {stage2_answers}. Generate 3 probing questions for this stage and analyze prior responses. Return JSON: {analysis, questions, key_insights}'")
```

Gemini가 반환한 `questions` 배열을 AskUserQuestion으로 사용자에게 제시합니다.

**질문 템플릿 (Gemini 실패 시 Fallback):**

1. "이 방식이 실패할 수 있는 시나리오는?"
2. "6개월 후 이 코드를 유지보수할 때 문제가 될 부분은?"
3. "이 접근이 다른 시스템에 미치는 영향은?"

### Stage 4: Alternatives (대안)

> "다른 방법은?"

최소 2개의 대안을 검토하고, 각 대안의 trade-off를 비교합니다.

**단계 진입 시 Gemini 위임:**

```
Bash("bash scripts/tfx-route.sh gemini exec 'Deep interview Stage 4: Alternatives. Topic: {topic}. Previous answers: {stage1_answers} {stage2_answers} {stage3_answers}. Generate 3 probing questions for this stage and analyze prior responses. Return JSON: {analysis, questions, key_insights}'")
```

Gemini가 반환한 `questions` 배열을 AskUserQuestion으로 사용자에게 제시합니다.

**질문 템플릿 (Gemini 실패 시 Fallback):**

1. "같은 목표를 달성할 수 있는 완전히 다른 접근은?"
2. "시간이 절반밖에 없다면 어떤 방식을 택하겠습니까?"
3. "이 기술 대신 다른 것을 사용하면 어떤 trade-off가 있나요?"

### Stage 5: Synthesize (종합)

> "최적 경로는?"

인터뷰 결과를 종합하여 실행 계획을 도출하고, 구조화된 요구사항 문서를 생성합니다.

**단계 진입 시 Gemini 위임:**

```
Bash("bash scripts/tfx-route.sh gemini exec 'Deep interview Stage 5: Synthesize. Topic: {topic}. Previous answers: {stage1_answers} {stage2_answers} {stage3_answers} {stage4_answers}. Generate 3 probing questions for this stage and analyze prior responses. Return JSON: {analysis, questions, key_insights}'")
```

Gemini가 반환한 `questions` 배열을 AskUserQuestion으로 사용자에게 제시합니다.

**질문 템플릿 (Gemini 실패 시 Fallback):**

1. "지금까지의 논의를 종합하면, 최적의 접근 방식은?"
2. "첫 번째 단계로 무엇을 실행하시겠습니까?"
3. "이 결정에 대해 확신하는 정도는? (1-10)"

## 산출물

인터뷰 완료 후 Gemini가 전체 인터뷰 문서 초안을 생성하고, Claude가 Write 툴로 `.tfx/plans/interview-{timestamp}.md`에 저장합니다.

**산출물 생성 Gemini 위임:**

```
Bash("bash scripts/tfx-route.sh gemini exec 'Deep interview complete. Topic: {topic}. All answers: {all_answers}. Generate a structured requirements document draft. Return the full markdown document.'")
```

Gemini 실패 시 Claude가 직접 아래 형식으로 문서를 작성합니다.

### 산출물 형식

```markdown
# Interview: {topic}
Date: {date}

## Goal
{1문장 목표}

## Decomposition
{하위 문제 목록}

## Risks & Challenges
{식별된 위험}

## Alternatives Considered
| 대안 | 장점 | 단점 |
|------|------|------|
| ... | ... | ... |

## Decision
{최종 결정 + 근거}

## Action Plan
1. {단계 1}
2. {단계 2}
3. ...
```

## 동작 규칙

1. 각 단계에서 반드시 사용자 응답을 수집한 후 다음 단계로 이동합니다.
2. 사용자가 명확한 답을 못 할 경우, 후속 질문으로 유도합니다.
3. 단계를 건너뛰지 않습니다 (5단계 모두 필수).
4. 이전 단계의 답변을 다음 단계 질문에 반영합니다 (대화형 연결).
5. 최종 산출물은 항상 `.tfx/plans/interview-{timestamp}.md`에 마크다운 파일로 저장합니다.
6. 인터뷰 시작 시 현재 주제와 관련된 코드베이스를 탐색하여 컨텍스트를 확보합니다.
7. 각 단계 전환 시 이전 단계 요약을 한 줄로 보여줍니다.
