---
name: _workflow-spec
version: 1.0.0
description: 요구사항 명세 문서 작성 (🔴 Complex 모드)
user-invocable: false
---

# Workflow Spec Skill

> 🔴 **Complex 모드 전용** - `/workflow`에서 복잡도 🔴 선택 시 자동 호출됩니다.
>
> 🟢 Simple, 🟡 Medium 모드에서는 이 스킬을 사용하지 않습니다.

사용자 주도로 요구사항을 수집하고, 구체적인 명세 문서를 작성하는 스킬입니다.

## 핵심 원칙

**사용자가 말할 때까지 기다린다.**

- 에이전트가 먼저 질문하지 않음
- 사용자가 충분히 설명할 때까지 경청
- 승인/수정 요청 시에만 사용자 입력 대기

**중요**: 이 단계에서는 코드베이스를 분석하지 않습니다. 오직 요구사항 정의에만 집중합니다.

## 실행 워크플로우

### Phase 1: 시작 및 대기

스킬 실행 시 다음 메시지만 출력하고 **즉시 대기**:

```
📋 Spec 작성을 시작합니다.

구현하려는 기능에 대해 자유롭게 설명해주세요.
- 기능 설명
- Figma 링크 (있다면)
- API 스펙 (있다면)
- 기타 참고 자료

충분히 설명하신 후 "작성해줘" 또는 "이 정도야"라고 말씀해주시면
문서 초안을 작성하겠습니다.
```

**금지 사항**:
- 질문 던지기
- 선택지 제시
- 추가 정보 요청

### Phase 2: 컨텍스트 수집

사용자가 설명을 계속하는 동안:

1. **경청**: 사용자의 모든 입력을 기록
2. **보조 자료 수집**: 사용자가 링크를 제공하면 해당 자료 조회
   - Figma 링크 → Figma MCP 도구 사용
   - API 스펙 → API 문서 확인 (Swagger, Postman 등)
3. **간단한 확인만**: "네, 계속해주세요" 또는 "Figma 확인했습니다" 정도만

#### Figma 디자인 컨텍스트 수집 (필수)

Figma 링크가 제공되면 **반드시** 다음 두 도구를 모두 호출:

```
1. mcp__figma__get_design_context  → 레이아웃 구조, 컴포넌트, 스타일 정보
2. mcp__figma__get_screenshot      → 시각적 확인용 스크린샷
```

**추출해야 할 정보**:

| 항목 | 예시 |
|------|------|
| 정렬 방식 | 상단 좌측 정렬, 중앙 정렬 등 |
| 컨테이너 구조 | Body → 아이콘 + TitleGroup |
| 간격 (gap) | 아이콘↔텍스트: 20px |
| 여백 (padding) | paddingTop: 20px, paddingHorizontal: 20px |
| 컴포넌트 크기 | 아이콘: 120x120 |
| 텍스트 스타일 | title_20_extraBold, title_15_regular |
| 색상 토큰 | text.primary, text.secondary |

**사용자가 "작성해줘", "이 정도야", "문서 만들어줘" 등의 신호를 보내면 Phase 3로 진행**

### Phase 3: 문서 초안 작성

1. **이슈 번호 확인**: 브랜치명에서 추출
   ```bash
   git branch --show-current
   ```

2. **수집된 정보 정리**: 사용자가 제공한 모든 정보를 구조화

3. **spec.md 초안 작성**: 템플릿에 맞춰 문서 작성

4. **사용자에게 초안 제시**:
   ```
   📄 spec.md 초안을 작성했습니다.

   [문서 내용 요약 또는 전체 표시]

   ---
   ✅ 승인: "승인", "좋아", "OK" 등
   ✏️ 수정 필요: 수정이 필요한 부분을 말씀해주세요
   ```

### Phase 4: 승인 루프

**승인 시**:
- spec.md 파일 저장
- 완료 메시지 출력
- 다음 단계 안내

**수정 요청 시**:
- 즉시 대기 상태로 전환
- 사용자가 추가 설명을 완료할 때까지 경청
- 다시 Phase 3로 (문서 수정 후 제시)

**이 루프는 사용자가 승인할 때까지 반복**

## spec.md 템플릿

```markdown
---
feature: 기능 제목
status: spec
created: YYYY-MM-DD
updated: YYYY-MM-DD
figma: (Figma 링크, 있는 경우)
---

# {기능 제목}

## 📋 기능 개요

[기능에 대한 간단한 설명]

## 🎯 기능 요구사항

### 필수 기능
- [ ] 기능 1
- [ ] 기능 2
- [ ] 기능 3

### 선택 기능 (있는 경우)
- [ ] 선택 기능 1

## 🎨 UI 요구사항 (해당 시)

### 레이아웃 구조

```
[컨테이너 구조를 시각적으로 표현]
```

### 스타일 상세

| 속성 | 값 |
|------|-----|
| 정렬 | - |
| 배경색 | - |
| 간격 (gap) | - |
| 여백 (padding) | - |

### 인터랙션

[사용자 인터랙션 설명]

## 🔌 API 스펙 (해당 시)

### {HTTP 메서드} {엔드포인트}

**Request:**
```json
{
  "field": "value"
}
```

**Response (성공):**
```json
{
  "success": true,
  "data": {}
}
```

## ⚠️ 엣지 케이스

| 상황 | 처리 방법 |
|------|----------|
| 상황 1 | 처리 방법 1 |

## 🧪 테스트 대상

### 핵심 비즈니스 로직
| 유형 | 파일 | 설명 |
|------|------|------|
| ViewModel | `{FILE_PATH}` | {DESCRIPTION} |

## ✅ 수락 기준 (Acceptance Criteria)

1. [ ] 기준 1
2. [ ] 기준 2
3. [ ] 기준 3
```

## 완료 메시지

```
✅ spec.md 생성 완료

📁 파일: .claude/work-docs/spec.md

📋 요약:
- 필수 기능: N개
- API 엔드포인트: N개
- 수락 기준: N개

▶️ 다음 단계: /workflow plan 실행
```

**중요**: 완료 메시지 출력 후 **스킬을 종료**합니다.

## 금지 사항

1. **선제적 질문 금지**: 사용자가 먼저 말하기 전에 질문하지 않음
2. **선택지 강요 금지**: AskUserQuestion으로 선택을 강요하지 않음
3. **코드베이스 분석 금지**: 이 단계에서는 기존 코드를 탐색하지 않음
4. **구현 방법 논의 금지**: "어떻게" 구현할지는 이후 단계에서 결정
5. **모호한 UI 스펙 금지**: Figma 링크가 있으면 반드시 MCP로 확인 후 구체적인 값 기록
