---
name: jin-fsd
description: Full Self-Driving 모드. 오케스트레이터 파이프라인을 단계별 사용자 승인과 함께 실행합니다. "jin fsd", "자율실행" 시 사용.
triggers:
  - jin fsd
  - 자율실행
argument-hint: "[자율 실행할 작업 설명]"
---

# Jin FSD - Full Self-Driving 모드

## 목적

jin-orchestrator와 동일한 멀티 에이전트 파이프라인을 실행하되, 모든 상태 전이에서 사용자 승인을 요구하는 안전한 자율 실행 모드입니다. 사용자가 각 단계를 확인하고 승인/거부/수정할 수 있습니다:

| 단계 | 에이전트 | 역할 | 승인 게이트 |
|------|----------|------|-------------|
| 추천 | - (jin-suggest) | 최적 에이전트/워크플로우 추천 | AskUserQuestion |
| 범위 정의 | - | 사용자와 범위 합의 | AskUserQuestion |
| 계획 | `task-planner-agent` (opus) | 태스크 분해 | AskUserQuestion |
| 요구사항 인터뷰 | `jin-interview-agent` | 계획 기반 상세 요구사항 확보 | AskUserQuestion |
| 실행 | `swe-agent` / `swe-agent-high` | 태스크 구현 | AskUserQuestion |
| 검증 | `swe-verifier` (sonnet) | 독립 검증 | AskUserQuestion |
| 수정 | 실행 에이전트 | 수정 반복 | AskUserQuestion |

## 핵심 원칙

1. **사용자 승인 필수**: 모든 상태 전이에서 `AskUserQuestion`으로 명시적 승인 획득
2. **투명성**: 각 단계의 결과를 사용자에게 상세히 보고
3. **제어권**: 사용자가 계획을 수정하거나 태스크를 추가/제거 가능
4. **안전 우선**: 승인 없이 다음 단계로 진행하지 않음
5. **오케스트레이터 기반**: jin-orchestrator와 동일한 에이전트/도구 활용

## 워크플로우

### Step 0: 추천 (Suggest)

jin-suggest 스킬을 호출하여 사용자 요청에 가장 적합한 에이전트와 워크플로우를 분석합니다.

**수행 작업**:
1. 사용자 요청에서 의도 카테고리 분류 (jin-suggest 매핑 테이블 기반)
2. 프로젝트 컨텍스트 감지 (`pyproject.toml`, `package.json`, `.git`, `AGENTS.md`, `tests/` 존재 여부)
3. 추천 에이전트 및 워크플로우 결정

**프로젝트 컨텍스트 감지 규칙**:

| 파일/디렉토리 | 감지 결과 | 자동 반영 |
|--------------|----------|----------|
| `pyproject.toml` | Python 프로젝트 | `python-expert` 에이전트 우선 |
| `package.json` | Node.js/React 프로젝트 | 프론트엔드 관련 에이전트 우선 |
| `tests/` 또는 `test/` | 테스트 존재 | 검증 단계에서 테스트 실행 포함 |
| `AGENTS.md` | 초기화 완료 | `jin-deepinit` 추천 제외 |

**추천 결과를 사용자에게 보고하고 승인을 요청합니다.**

**AskUserQuestion**:
```
jin-suggest 분석 결과:

요청: [사용자 요청 요약]
프로젝트: [감지된 프로젝트 타입]

추천 에이전트:
| 용도 | 에이전트 | 모델 | 이유 |
|------|----------|------|------|
| 실행 | [에이전트명] | [모델] | [이유] |
| 검증 | swe-verifier | sonnet | 독립 검증 |

추천 워크플로우:
> 1. [스킬/단계] → [설명]
> 2. [스킬/단계] → [설명]

이 구성으로 FSD를 시작할까요?
- 승인: "yes" 또는 "진행"
- 수정: 에이전트나 워크플로우 변경사항을 알려주세요
- 거부: "취소"
```

사용자 승인 후 추천된 에이전트 배정을 확정하고 Step 1로 진행합니다.

```markdown
### 추천 확정

- **추천 에이전트**: [확정된 에이전트 목록]
- **추가 스킬**: [자동 적용된 스킬]
- **사용자 수정**: [있으면 기록]
```

### Step 1: 범위 정의 (Scope)

`AskUserQuestion`으로 작업 범위를 사용자와 합의합니다.

```markdown
## FSD 모드 시작

**작업 요청**: [사용자 요청 요약]

다음 사항을 확인합니다:
1. 수정 대상 범위 (파일/디렉토리)
2. 수정하면 안 되는 영역
3. 테스트 요구사항
4. 추가 제약사항
```

**AskUserQuestion**:
```
FSD 모드를 시작합니다.

작업: [요청 요약]

다음을 확인해주세요:
1. 수정 범위가 맞나요? (예: src/ 디렉토리)
2. 수정 금지 영역이 있나요?
3. 추가 요구사항이 있나요?

승인하시면 계획 단계로 진행합니다.
```

사용자 응답을 반영하여 범위를 확정합니다.

```markdown
### 범위 확정

- **수정 대상**: [확정된 범위]
- **제외 영역**: [수정 금지 영역]
- **추가 요구사항**: [사용자 추가 요청]
```

### Step 2: 계획 (Planning)

`task-planner-agent`에게 위임하여 태스크를 분해합니다. (jin-orchestrator Step 1과 동일)

**위임 프롬프트 템플릿**:
```
다음 작업을 원자적 태스크로 분해하세요:

## 작업 요청
[사용자 요청 전문]

## 범위 제약
- 수정 대상: [Step 1에서 확정된 범위]
- 제외 영역: [수정 금지 영역]

## 추천 에이전트 (Step 0 결과)
- 실행 에이전트: [Step 0에서 확정된 에이전트]
- 추가 스킬: [자동 적용된 스킬]

태스크별 에이전트 배정 시 위 추천을 기본값으로 사용하세요.

태스크 분해 보고서 형식으로 출력하세요.
```

계획 결과를 사용자에게 보여주고 승인을 요청합니다.

**AskUserQuestion**:
```
태스크 계획이 완료되었습니다:

| ID | 태스크 | 대상 파일 | 에이전트 | 복잡도 |
|----|--------|-----------|----------|--------|
| T1 | [설명] | [파일] | swe-agent | LOW |
| T2 | [설명] | [파일] | swe-agent-high | HIGH |

실행 순서: T1 → T2

이 계획대로 실행할까요?
- 승인: "yes" 또는 "진행"
- 수정: 변경할 내용을 알려주세요
- 거부: "취소"
```

사용자가 수정을 요청하면 계획을 조정 후 다시 승인 요청합니다.

```markdown
### 계획 승인됨

- **총 태스크**: N개
- **실행 순서**: [확정된 순서]
- **사용자 수정**: [있으면 기록]
```

### Step 2.5: 요구사항 인터뷰 (Requirements Interview)

`jin-interview-agent`에게 위임하여, Step 2에서 도출된 태스크 계획을 기반으로 상세 요구사항을 확보합니다.

**수행 작업**:
1. 계획된 태스크 목록과 범위 정보를 jin-interview-agent에게 전달
2. 각 태스크의 구현에 필요한 구체적 요구사항 질문 (예: API 설계, 데이터 모델, 에러 처리 방식 등)
3. 인터뷰 결과를 구조화된 스펙 문서로 정리
4. 인터뷰 결과를 Step 3 실행 시 각 태스크의 컨텍스트로 전달

**위임 프롬프트 템플릿**:
```
다음 계획을 기반으로 구현에 필요한 상세 요구사항을 인터뷰하세요:

## 태스크 계획
[Step 2에서 확정된 태스크 목록]

## 범위 정보
- 수정 대상: [Step 1에서 확정된 범위]
- 제외 영역: [수정 금지 영역]

## 추천 에이전트 (Step 0 결과)
- 실행 에이전트: [Step 0에서 확정된 에이전트]
- 추가 스킬: [자동 적용된 스킬]

각 태스크에 대해 구현 전 확인이 필요한 사항을 질문하세요.
인터뷰 결과를 태스크별 스펙 문서로 정리하세요.
```

인터뷰 결과를 사용자에게 보여주고 승인을 요청합니다.

**AskUserQuestion**:
```
요구사항 인터뷰 결과:

## 태스크별 상세 요구사항
| ID | 태스크 | 확인된 요구사항 |
|----|--------|----------------|
| T1 | [설명] | [인터뷰에서 확보된 요구사항 요약] |
| T2 | [설명] | [인터뷰에서 확보된 요구사항 요약] |

## 도출된 추가 고려사항
- [인터뷰 과정에서 발견된 추가 사항]

이 요구사항으로 실행 단계를 진행할까요?
- 승인: "yes" 또는 "진행"
- 보완: 추가로 확인할 사항을 알려주세요
- 건너뛰기: "skip" (인터뷰 없이 실행 진행)
```

사용자가 보완을 요청하면 추가 인터뷰를 진행합니다.

```markdown
### 인터뷰 완료

- **인터뷰 결과**: 태스크별 상세 요구사항 확보
- **추가 고려사항**: [도출된 사항]
- **사용자 승인**: 획득
```

### Step 3: 실행 (Execution)

계획된 태스크를 실행합니다. (jin-orchestrator Step 2와 동일)

각 태스크의 실행 결과를 사용자에게 보고하고 다음 태스크 진행을 승인받습니다.

**실행 후 AskUserQuestion**:
```
태스크 실행 결과:

| ID | 태스크 | 상태 | 변경 파일 |
|----|--------|------|-----------|
| T1 | [설명] | completed | `file1.py` |
| T2 | [설명] | completed | `file2.py`, `file3.py` |

변경 요약:
- T1: [변경 내용 요약]
- T2: [변경 내용 요약]

검증 단계로 진행할까요?
- 승인: "yes" 또는 "진행"
- 재실행: 재실행할 태스크를 지정해주세요
- 거부: "취소"
```

```markdown
### 실행 완료

- **완료 태스크**: N / M개
- **변경 파일**: K개
- **사용자 승인**: 획득
```

### Step 4: 검증 (Verification)

`swe-verifier`에게 독립 검증을 위임합니다. (jin-orchestrator Step 3과 동일)

검증 결과를 사용자에게 보고합니다.

**AskUserQuestion**:
```
검증 결과:

- 판정: PASS / FAIL
- 재현 검증: PASS / FAIL
- 엣지케이스: N개 PASS / M개 FAIL
- 회귀: clean / N개 이슈

[PASS인 경우]
작업을 완료할까요?

[FAIL인 경우]
실패 원인: [상세]
수정 루프를 실행할까요?
- 승인: "yes" 또는 "수정"
- 거부: "취소"
```

```markdown
### 검증 결과

- **판정**: PASS / FAIL
- **사용자 승인**: 획득
```

### Step 5: 수정 (Fix) — 필요 시

검증 FAIL 시 수정 태스크를 생성하고 사용자 승인 후 재실행합니다.

**AskUserQuestion**:
```
수정 계획 (반복 N/3):

실패 원인: [verifier 보고서에서 추출]
수정 태스크:
| ID | 수정 내용 | 에이전트 |
|----|-----------|----------|
| F1 | [수정 설명] | swe-agent |

이 수정을 실행할까요?
- 승인: "yes" 또는 "진행"
- 수정: 변경할 내용을 알려주세요
- 중단: "취소" (수동 수정으로 전환)
```

수정 후 Step 4 (검증)로 복귀합니다. 최대 3회 반복.

```markdown
### 수정 루프 (N/3)

- **실패 원인**: [요약]
- **수정 태스크**: N개
- **사용자 승인**: 획득
```

**최종 보고서**:

```markdown
## FSD Report

### 작업 요약
- **요청**: [사용자 요청 요약]
- **모드**: Full Self-Driving (사용자 승인 게이트)
- **태스크**: N개
- **검증**: PASS
- **수정 반복**: N회

### 승인 이력
| 단계 | 승인 | 사용자 수정 |
|------|------|-------------|
| 추천 | 승인 | [있으면 기록] |
| 범위 정의 | 승인 | [있으면 기록] |
| 계획 | 승인 | [있으면 기록] |
| 요구사항 인터뷰 | 승인 | [있으면 기록] |
| 실행 | 승인 | [있으면 기록] |
| 검증 | 승인 | - |

### 실행 결과
| ID | 태스크 | 에이전트 | 상태 |
|----|--------|----------|------|
| T1 | [설명] | swe-agent | completed |
| T2 | [설명] | swe-agent-high | completed |

### 검증 결과
- **독립 검증**: PASS
- **재현 테스트**: PASS
- **엣지케이스**: N개 PASS
- **회귀**: clean

### 변경 파일 목록
- `path/to/file1.py`
- `path/to/file2.py`
```

## jin-orchestrator와의 차이점

| 항목 | jin-orchestrator | jin-fsd |
|------|-----------------|---------|
| 실행 방식 | 자동 (사용자 개입 없음) | 매 단계 사용자 승인 |
| 범위 정의 | 자동 분석 | 사용자와 합의 |
| 계획 수정 | 불가 | 사용자가 계획 수정 가능 |
| 실행 중 개입 | 불가 | 태스크별 승인/재실행 가능 |
| 적합한 상황 | 명확한 작업, 신뢰도 높은 환경 | 중요한 변경, 첫 사용, 학습 목적 |

## 예외사항

다음은 **문제가 아닙니다**:

1. **단순 작업**: 태스크가 1개인 경우에도 승인 게이트는 유지 (안전 우선)
2. **사용자 거부**: 어느 단계에서든 사용자가 "취소"하면 즉시 중단 + 현재까지의 보고서 생성
3. **테스트가 없는 프로젝트**: 회귀 검증에서 "테스트 없음"은 SKIP
4. **사용자 응답 지연**: 승인 대기 중에는 다른 작업을 수행하지 않음

## Related Files

| File | Purpose |
|------|---------|
| `skills/jin-suggest/SKILL.md` | 에이전트/워크플로우 추천 엔진 (Step 0) |
| `skills/jin-interview/SKILL.md` | 상세 요구사항 인터뷰 스킬 (Step 2.5) |
| `agents/jin-interview-agent.md` | 요구사항 인터뷰 에이전트 |
| `skills/jin-orchestrator/SKILL.md` | 자동 오케스트레이션 파이프라인 (승인 없음) |
| `agents/orchestrator-agent.md` | 파이프라인 관리 오케스트레이터 |
| `agents/task-planner-agent.md` | 태스크 분해 및 의존성 그래프 생성 |
| `agents/swe-agent.md` | 태스크 실행 에이전트 (sonnet) |
| `agents/swe-agent-high.md` | 복잡 태스크 실행 에이전트 (opus) |
| `agents/swe-verifier.md` | 독립 검증 에이전트 |
