---
name: "sc:enforce-verify"
description: "검증 강제. 모든 수정 작업 완료 전 필수 실행. 검증 미통과 시 완료 선언 차단."
---

# Enforce Verify Skill (Hard Block)

수정 완료 전 검증을 **강제**하는 Hard Block 스킬입니다.

**이 스킬을 건너뛸 수 없습니다. Verify 보고서 없이 "완료" 선언은 차단됩니다.**

---

## 사용법

```
/sc:enforce-verify
/sc:enforce-verify lib/features/fortune/
```

---

## 차단 조건

| 조건 | 상태 |
|------|------|
| flutter analyze 미실행 | ⛔ 차단 |
| flutter analyze 에러 존재 | ⛔ 차단 |
| build_runner 실패 (freezed 사용 시) | ⛔ 차단 |
| 사용자 테스트 미확인 | ⛔ 차단 |
| Verify 보고서 미출력 | ⛔ 차단 |

---

## 강제 검증 프로세스

```
1️⃣ 정적 분석
   └─ flutter analyze 실행
   └─ 에러 0 필수, 경고 확인

   ⛔ 에러 있으면: "에러 수정 후 다시 실행해주세요" 출력 후 차단

2️⃣ 빌드 검증
   └─ dart run build_runner build (freezed 사용 시)
   └─ 컴파일 성공 확인

   ⛔ 실패 시: "빌드 에러 수정해주세요" 출력 후 차단

3️⃣ 포맷 검증
   └─ dart format --set-exit-if-changed .
   └─ 포맷 준수 확인

4️⃣ 품질 검증
   └─ /sc:quality-check 호출
   └─ 아키텍처 규칙 확인
   └─ 디자인 시스템 확인

   ⛔ 품질 이슈 시: "품질 이슈 수정해주세요" 출력 후 차단

5️⃣ 사용자 테스트 요청
   └─ 테스트 시나리오 제공
   └─ 사용자 확인 대기

   ⛔ 사용자 미확인 시: 완료 선언 불가

6️⃣ Verify 보고서 생성
   └─ JIRA 이슈 상태 → Done
```

---

## 필수 실행 명령어

```bash
# 1. 정적 분석 (필수)
flutter analyze

# 2. 빌드 (freezed 사용 시)
dart run build_runner build --delete-conflicting-outputs

# 3. 포맷 확인
dart format --set-exit-if-changed .

# 4. 품질 검증
/sc:quality-check
```

---

## 필수 출력 형식

**이 보고서가 출력되어야 차단이 해제됩니다:**

```
============================================
✅ Verify (검증) 보고서
============================================

📊 정적 분석
   flutter analyze: ✅ 0 errors, N warnings

   경고 사항 (무시 가능):
   - [경고1] (이유: ...)
   - [경고2] (이유: ...)

🔧 빌드 검증
   build_runner: ✅ 성공
   또는
   build_runner: N/A (freezed 미사용)

📐 포맷 검증
   dart format: ✅ 통과

🛡️ 품질 검증
   아키텍처: ✅ 통과
   디자인 시스템: ✅ 통과
   앱스토어 규정: ✅ 통과

📁 수정된 파일
   1. [파일1.dart] - [변경 내용 요약]
   2. [파일2.dart] - [변경 내용 요약]
   3. [파일3.dart] - [변경 내용 요약]

============================================

🧪 동작 테스트 요청

   아래 시나리오로 테스트해주세요:

   1. [테스트 단계 1]
   2. [테스트 단계 2]
   3. [테스트 단계 3]

   예상 결과: [어떤 결과가 나와야 하는지]

   확인 방법: [어떻게 확인하는지]

============================================
⏳ 사용자 테스트 결과 대기 중...
============================================
```

---

## 사용자 응답 처리

### 테스트 성공 시

사용자가 다음 중 하나를 입력하면:
- "테스트 완료"
- "동작함"
- "확인"
- "됨"
- "OK"
- "성공"

```
============================================
✅ 작업 완료
============================================

📋 작업 요약
   [작업 내용 요약]

📁 수정된 파일
   1. [파일1.dart]
   2. [파일2.dart]

🧪 테스트: ✅ 사용자 확인 완료

📋 JIRA: FORT-XXX → Done 전환됨

============================================
```

### 테스트 실패 시

사용자가 다음 중 하나를 입력하면:
- "안됨"
- "에러"
- "실패"
- "문제"
- "버그"

```
⛔ 테스트 실패 - 완료 선언 차단

사용자 피드백: [입력 내용]

다음 단계:
1. 에러 내용을 알려주세요
2. /sc:enforce-rca로 다시 분석
3. 수정 후 /sc:enforce-verify 재실행

현재 JIRA 이슈: FORT-XXX (In Progress 유지)
```

---

## JIRA 연동

### 검증 완료 시

```
jira_post (상태 전환):
  issue: FORT-XXX
  transition: Done
  comment: |
    ## 검증 완료

    ### 정적 분석
    - flutter analyze: 0 errors

    ### 빌드 검증
    - build_runner: 성공

    ### 품질 검증
    - 모든 검증 통과

    ### 사용자 테스트
    - 사용자 확인: 완료

    ### 수정된 파일
    {파일 목록}
```

---

## 완료 선언 금지 패턴

**다음 상황에서 "완료", "수정됨", "고쳤다" 선언 시 즉시 차단:**

```
⛔ HARD BLOCK: 검증 없이 완료 선언 불가

감지된 선언: "수정이 완료되었습니다!"

차단 이유:
- flutter analyze 미실행
- 사용자 테스트 미확인

/sc:enforce-verify 를 먼저 실행해주세요.
```

---

## 자동 호출 조건

다음 Skill 완료 시 자동으로 `/sc:enforce-verify` 호출:

| Skill | 자동 호출 |
|-------|----------|
| /sc:troubleshoot | ✅ |
| /sc:feature-fortune | ✅ |
| /sc:feature-chat | ✅ |
| /sc:feature-ui | ✅ |
| /sc:backend-service | ✅ |
| 직접 코드 수정 | ✅ |

---

## 테스트 시나리오 템플릿

### UI 수정 시
```
🧪 동작 테스트 요청

1. 앱을 실행해주세요 (flutter run)
2. [해당 화면]으로 이동해주세요
3. [수정된 UI 요소]를 확인해주세요
4. 다크모드로 전환해서 확인해주세요

예상 결과: [UI가 어떻게 보여야 하는지]
```

### 버그 수정 시
```
🧪 동작 테스트 요청

1. 앱을 실행해주세요
2. [버그가 발생했던 상황]을 재현해주세요
3. [수정된 동작]을 확인해주세요

예상 결과: [에러 없이 정상 동작]
이전 증상: [이전에는 어떤 에러가 발생했는지]
```

### API 수정 시
```
🧪 동작 테스트 요청

1. 앱을 실행해주세요
2. [API를 호출하는 기능]을 실행해주세요
3. 네트워크 탭에서 응답을 확인해주세요

예상 결과: [정상 응답, 데이터 표시]
```

### 새 기능 추가 시
```
🧪 동작 테스트 요청

1. 앱을 실행해주세요
2. [새 기능 진입 경로]로 이동해주세요
3. [새 기능]을 사용해보세요
4. [예상 동작]을 확인해주세요

예상 결과: [새 기능이 어떻게 동작해야 하는지]
```