スキル一覧に戻る

app-modify-workflow

stravinest / house-hold-account

0🍴 0📅 2026年1月19日

앱 수정 워크플로우를 시작합니다. 현황 분석 -> UI/UX 검토 -> 엣지 케이스 확인 -> 사용자 질문 -> 계획 수립 -> 구현 -> 코드 리뷰 반복 순서로 체계적인 앱 수정을 진행합니다. "/app-modify-workflow", "앱 수정 워크플로우", "수정 워크플로우로" 등의 명령으로 활성화됩니다.

read, write, edit, grep, glob, bash, task, todowrite, skill, askuserquestion, enterplanmode, exitplanmode, mcp__mobile-mcp__mobile_take_screenshot, mcp__mobile-mcp__mobile_list_elements_on_screen, mcp__mobile-mcp__mobile_click_on_screen_at_coordinates, mcp__mobile-mcp__mobile_launch_app, mcp__mobile-mcp__mobile_list_available_devices

SKILL.md

---
name: app-modify-workflow
description: 앱 수정 워크플로우를 시작합니다. 현황 분석 -> UI/UX 검토 -> 엣지 케이스 확인 -> 사용자 질문 -> 계획 수립 -> 구현 -> 코드 리뷰 반복 순서로 체계적인 앱 수정을 진행합니다. "/app-modify-workflow", "앱 수정 워크플로우", "수정 워크플로우로" 등의 명령으로 활성화됩니다.
allowed-tools: Read, Write, Edit, Grep, Glob, Bash, Task, TodoWrite, Skill, AskUserQuestion, EnterPlanMode, ExitPlanMode, mcp__mobile-mcp__mobile_take_screenshot, mcp__mobile-mcp__mobile_list_elements_on_screen, mcp__mobile-mcp__mobile_click_on_screen_at_coordinates, mcp__mobile-mcp__mobile_launch_app, mcp__mobile-mcp__mobile_list_available_devices
---

# 앱 수정 워크플로우 (App Modify Workflow)

기존 앱 기능을 수정/개선할 때 사용하는 체계적인 6단계 워크플로우입니다.
새 기능 개발이 아닌 **기존 기능의 변경, 버그 수정, UI/UX 개선**에 특화되어 있습니다.

## 활성화 방법

다음 명령어로 워크플로우를 시작합니다:

- `앱 수정 워크플로우` 또는 `수정 워크플로우로 진행해줘`
- `/app-modify-workflow`
- `앱 수정으로 [요청 내용]`

### 예시

```
사용자: 앱 수정 워크플로우로 결제수단 관리 화면을 개선해줘
사용자: /app-modify-workflow 카테고리 선택 UI 수정
사용자: 수정 워크플로우로 거래 입력 폼의 UX 개선해줘
```

---

## 워크플로우 개요

```
[요청 접수]
    |
    v
[Phase 1: 현황 분석] ─────────────────────────────────
    |  - 수정 대상 코드 분석
    |  - UI/UX 현황 파악
    |  - 엣지 케이스 식별
    v
[Phase 2: 요구사항 명확화] ───────────────────────────
    |  - AskUserQuestion으로 질문
    |  - 답변 기반 요구사항 정리
    v
[Phase 3: 계획 수립] ─────────────────────────────────
    |  - plan 모드로 상세 계획 작성
    |  - 사용자 승인
    v
[Phase 4: 구현] ──────────────────────────────────────
    |  - modify-todo.md 생성 및 실행
    |  - Agent 분담 작업
    v
[Phase 5: 코드 리뷰 및 반복] ─────────────────────────
    |  - code-reviewer 실행
    +──[결함 발견]──> [modify-todo.md 업데이트] ──> [Phase 4]
    |
    v
[Phase 6: 완료] ──────────────────────────────────────
    - 테스트 검증
    - 결과 보고
    - 아카이브
```

---

## Phase 1: 현황 분석

### 1.1 수정 대상 코드 분석

수정 대상 기능과 관련된 코드를 심층 분석합니다.

```
Task(
  subagent_type: "feature-dev:code-explorer",
  prompt: "[수정 대상 기능]의 현재 구현을 분석해주세요.
  - 관련 파일 목록
  - 실행 경로 추적
  - 의존성 맵핑
  - 현재 아키텍처 패턴"
)
```

### 1.2 UI/UX 현황 파악

현재 UI/UX 상태를 분석하고 개선점을 식별합니다.

#### 분석 항목

| 항목 | 확인 사항 |
|------|----------|
| 레이아웃 | 요소 배치, 간격, 정렬 |
| 색상 | 일관성, 접근성, 다크모드 지원 |
| 폰트 | 크기, 가독성, 계층 구조 |
| 인터랙션 | 터치 영역, 피드백, 애니메이션 |
| 상태 표시 | 로딩, 에러, 빈 상태 처리 |
| 반응성 | 다양한 화면 크기 대응 |

#### 스크린샷 분석 (선택사항)

```
# 현재 화면 캡처
mcp__mobile-mcp__mobile_take_screenshot

# UI 요소 분석
mcp__mobile-mcp__mobile_list_elements_on_screen
```

### 1.3 엣지 케이스 식별

수정 시 고려해야 할 엣지 케이스를 식별합니다.

#### 공통 엣지 케이스 체크리스트

| 카테고리 | 엣지 케이스 |
|----------|-----------|
| 데이터 | 빈 데이터, 대량 데이터, 특수 문자, 긴 텍스트 |
| 네트워크 | 오프라인, 느린 연결, 타임아웃 |
| 사용자 입력 | 유효하지 않은 입력, 빠른 연속 클릭, 동시 요청 |
| 권한 | 권한 없음, 읽기 전용, 만료된 세션 |
| 디바이스 | 작은 화면, 큰 화면, 접근성 설정 |
| 상태 | 초기 상태, 중간 상태, 에러 복구 |

### 1.4 분석 결과 저장

분석 결과를 파일로 저장합니다.

```markdown
# 현황 분석 결과

## 수정 대상: [기능명]

### 관련 파일
- lib/features/[feature]/presentation/pages/xxx_page.dart
- lib/features/[feature]/presentation/widgets/xxx_widget.dart
- ...

### 현재 UI/UX 상태
- 강점: ...
- 개선점: ...

### 식별된 엣지 케이스
1. [엣지 케이스 1]
2. [엣지 케이스 2]
3. ...

### 의존성
- Provider: ...
- Repository: ...
```

저장 위치: `.workflow/context/analysis-result.md`

---

## Phase 2: 요구사항 명확화

### 2.1 사용자 질문

분석 결과를 바탕으로 사용자에게 구체적인 질문을 합니다.

```
AskUserQuestion(
  questions: [
    {
      "question": "UI 개선 방향을 선택해주세요",
      "header": "UI 방향",
      "options": [
        {"label": "레이아웃 재구성", "description": "요소 배치와 구조를 변경"},
        {"label": "스타일 개선", "description": "색상, 폰트, 간격 조정"},
        {"label": "인터랙션 개선", "description": "애니메이션, 피드백 추가"},
        {"label": "전면 리디자인", "description": "전체적으로 새롭게 설계"}
      ],
      "multiSelect": false
    },
    {
      "question": "우선 처리할 엣지 케이스를 선택해주세요",
      "header": "엣지 케이스",
      "options": [
        {"label": "데이터 관련", "description": "빈 데이터, 대량 데이터 처리"},
        {"label": "에러 처리", "description": "네트워크 오류, 타임아웃"},
        {"label": "입력 검증", "description": "유효하지 않은 입력 처리"},
        {"label": "모든 케이스", "description": "전부 처리"}
      ],
      "multiSelect": true
    }
  ]
)
```

### 2.2 질문 카테고리

| 카테고리 | 질문 예시 |
|----------|----------|
| 범위 | 어떤 부분까지 수정할까요? (특정 컴포넌트 / 전체 화면) |
| 우선순위 | 가장 중요한 개선 사항은 무엇인가요? |
| 제약사항 | 유지해야 할 기존 동작이 있나요? |
| 호환성 | 이전 버전과의 호환성이 필요한가요? |
| 테스트 | 어떤 시나리오를 반드시 테스트해야 하나요? |

### 2.3 요구사항 정리

사용자 답변을 바탕으로 요구사항을 정리합니다.

```markdown
# 수정 요구사항

## 기능: [기능명]

### 사용자 요청 요약
- [핵심 요청 내용]

### UI/UX 요구사항
- [ ] [UI 요구사항 1]
- [ ] [UI 요구사항 2]

### 기능 요구사항
- [ ] [기능 요구사항 1]
- [ ] [기능 요구사항 2]

### 엣지 케이스 처리
- [ ] [엣지 케이스 1]
- [ ] [엣지 케이스 2]

### 제약사항
- [유지해야 할 동작]
- [호환성 요구사항]
```

저장 위치: `.workflow/modify-requirements.md`

---

## Phase 3: 계획 수립

### 3.1 Plan 모드 진입

요구사항을 바탕으로 상세 구현 계획을 수립합니다.

```
EnterPlanMode()
```

### 3.2 계획 작성 가이드

Plan 모드에서 다음 내용을 포함하여 계획을 작성합니다:

```markdown
# 수정 계획: [기능명]

## 변경 범위

### 수정할 파일
| 파일 | 변경 유형 | 변경 내용 |
|------|----------|----------|
| xxx_page.dart | 수정 | 레이아웃 구조 변경 |
| xxx_widget.dart | 신규 | 새 위젯 추가 |
| xxx_provider.dart | 수정 | 상태 로직 개선 |

### 영향받는 영역
- 직접 영향: [영향받는 기능 1], [영향받는 기능 2]
- 간접 영향: [관련 기능]

## 구현 단계

### 1단계: [제목]
- 작업 내용
- 예상 변경 사항

### 2단계: [제목]
- 작업 내용
- 예상 변경 사항

## 테스트 계획

### 단위 테스트
- [ ] [테스트 케이스 1]
- [ ] [테스트 케이스 2]

### 통합 테스트
- [ ] [시나리오 1]
- [ ] [시나리오 2]

### 엣지 케이스 테스트
- [ ] [엣지 케이스 1]
- [ ] [엣지 케이스 2]

## 리스크 및 대응

| 리스크 | 대응 방안 |
|--------|----------|
| [리스크 1] | [대응 1] |
| [리스크 2] | [대응 2] |
```

### 3.3 사용자 승인

계획 완료 후 승인을 요청합니다.

```
ExitPlanMode()
```

---

## Phase 4: 구현

### 4.1 modify-todo.md 생성

```markdown
# Modify Todo: [작업명]

## 메타 정보
- 생성일: YYYY-MM-DD HH:MM
- 현재 Phase: 4 (구현)
- 상태: 진행중
- 리뷰 반복 횟수: 0

## 관련 문서
- 분석 결과: .workflow/context/analysis-result.md
- 요구사항: .workflow/modify-requirements.md

---

## 작업 목록

### 1. 준비 단계
| 번호 | 작업 | 담당 Agent | 상태 | 결과 |
|------|------|-----------|------|------|
| 1.1 | 기존 코드 백업 확인 | - | 대기 | - |
| 1.2 | 의존성 확인 | Explore | 대기 | - |

### 2. 구현 단계
| 번호 | 작업 | 담당 Agent | 상태 | 결과 |
|------|------|-----------|------|------|
| 2.1 | [수정 작업 1] | tdd-developer | 대기 | - |
| 2.2 | [수정 작업 2] | general-purpose | 대기 | - |
| 2.3 | [UI 수정] | general-purpose | 대기 | - |

### 3. 엣지 케이스 처리
| 번호 | 작업 | 담당 Agent | 상태 | 결과 |
|------|------|-----------|------|------|
| 3.1 | [엣지 케이스 1] | tdd-developer | 대기 | - |
| 3.2 | [엣지 케이스 2] | tdd-developer | 대기 | - |

### 4. 검증 단계
| 번호 | 작업 | 담당 Agent | 상태 | 결과 |
|------|------|-----------|------|------|
| 4.1 | 코드 리뷰 | code-reviewer | 대기 | - |
| 4.2 | 테스트 작성 | test-writer | 대기 | - |

---

## 리뷰 피드백 히스토리

---

## 변경 로그
- YYYY-MM-DD HH:MM: 초기 생성
```

저장 위치: `.workflow/modify-todo.md`

### 4.2 Agent 할당 테이블

| 작업 유형 | 담당 Agent | 설명 |
|----------|-----------|------|
| 코드 분석 | `Explore` | 기존 코드 구조 파악 |
| 로직 수정 | `tdd-developer` | 테스트 우선 개발로 안전한 수정 |
| UI 수정 | `general-purpose` | 위젯, 레이아웃 변경 |
| 테스트 | `test-writer` | 테스트 코드 작성 |
| 리뷰 | `feature-dev:code-reviewer` | 코드 품질 검토 |

### 4.3 실행 규칙

1. **순차 실행**: 의존성 있는 작업은 순차 실행
2. **병렬 실행**: 독립적인 UI 작업은 병렬 가능
3. **상태 업데이트**: 작업 완료 시 즉시 modify-todo.md 업데이트
4. **결과 기록**: 변경된 파일과 주요 내용 기록

---

## Phase 5: 코드 리뷰 및 반복

### 5.1 리뷰 실행

```
Task(
  subagent_type: "feature-dev:code-reviewer",
  prompt: "수정된 코드를 리뷰해주세요.

  확인 항목:
  1. 버그: 로직 오류, 예외 처리 누락
  2. 보안: 취약점, 데이터 노출
  3. 성능: 불필요한 렌더링, 메모리 누수
  4. 품질: 코드 스타일, 가독성
  5. 호환성: 기존 기능 영향

  변경된 파일: [파일 목록]"
)
```

### 5.2 리뷰 결과 처리

#### 결함 발견 시

1. modify-todo.md의 "리뷰 피드백 히스토리" 섹션에 피드백 추가
2. 해당 작업의 상태를 `재작업`으로 변경
3. "리뷰 반복 횟수" 증가
4. 담당 Agent에게 재할당하여 Phase 4 재실행

```markdown
## 리뷰 피드백 히스토리

### 1차 리뷰 (YYYY-MM-DD)
- [x] xxx_page.dart: dispose에서 리소스 해제 누락 -> 재작업 완료
- [x] xxx_widget.dart: 에러 상태 UI 미구현 -> 재작업 완료
```

#### 결함 없음

1. 모든 작업 상태를 `완료`로 변경
2. Phase 6으로 진행

### 5.3 반복 제한

- **최대 3회**까지 리뷰 반복
- 초과 시 사용자에게 확인 요청

```
3회 이상 리뷰가 반복되었습니다.
현재 남은 이슈:
- [이슈 1]
- [이슈 2]

계속 진행하시겠습니까? (Y/n)
```

---

## Phase 6: 완료

### 6.1 테스트 검증

```bash
# 단위 테스트
flutter test test/features/[feature]/

# 전체 분석
flutter analyze

# 빌드 검증
flutter build apk --debug
```

### 6.2 앱 테스트 (선택사항)

```
# 앱 실행 및 수정 사항 확인
mcp__mobile-mcp__mobile_launch_app
mcp__mobile-mcp__mobile_take_screenshot
```

### 6.3 결과 보고

```markdown
## 앱 수정 워크플로우 완료

### 작업 요약
- 수정 대상: [기능명]
- 총 작업 수: [N]개
- 리뷰 반복: [N]회

### 변경된 파일
| 파일 | 변경 유형 | 주요 변경 내용 |
|------|----------|--------------|
| xxx_page.dart | 수정 | 레이아웃 개선 |
| xxx_widget.dart | 신규 | 에러 상태 위젯 추가 |

### 해결된 엣지 케이스
- [x] [엣지 케이스 1]
- [x] [엣지 케이스 2]

### 테스트 결과
- 단위 테스트: 통과 (N/N tests)
- 분석: 통과 (0 issues)
- 빌드: 성공

### 다음 단계
- [ ] 실제 디바이스 테스트
- [ ] PR 생성
- [ ] QA 검토
```

### 6.4 아카이브

```bash
mkdir -p .workflow/archived
mv .workflow/modify-todo.md .workflow/archived/YYYY-MM-DD_[작업명]_modify.md
```

---

## 체크포인트 시스템

### 파일 구조

```
.workflow/
├── modify-todo.md           # 작업 목록 + 상태 추적
├── modify-requirements.md   # 요구사항 정의
├── checkpoint.md            # 현재 체크포인트
├── context/
│   ├── analysis-result.md   # Phase 1 분석 결과
│   ├── questions-result.md  # Phase 2 질문 결과
│   └── plan-result.md       # Phase 3 계획
├── results/
│   └── task-X.X.md          # Agent 작업 결과
└── archived/
```

### checkpoint.md 형식

```markdown
# Modify Workflow Checkpoint

## 현재 상태
- 작업명: [작업명]
- 현재 Phase: [1-6]
- 현재 작업: [작업 번호]
- 마지막 업데이트: YYYY-MM-DD HH:MM

## 다음 단계
- 다음 Phase: [Phase 번호]
- 다음 작업: [작업 설명]
- 담당 Agent: [Agent 타입]

## 재개 명령어
앱 수정 워크플로우 재개

## 컨텍스트 파일 참조
- modify-todo.md: .workflow/modify-todo.md
- 분석 결과: .workflow/context/analysis-result.md
```

### 워크플로우 재개

```
앱 수정 워크플로우 재개
/app-modify-workflow resume
```

---

## 주의사항

1. **기존 기능 보존**: 수정 시 기존 동작이 깨지지 않도록 주의
2. **테스트 필수**: 수정 전후 테스트로 회귀 방지
3. **에러 처리 원칙 준수**: CLAUDE.md의 에러 처리 원칙 (rethrow 등)
4. **단일 modify-todo.md**: 동시에 하나의 수정 작업만 진행
5. **리뷰 반복 제한**: 최대 3회 (초과 시 사용자 확인)
6. **사용자 확인**: Phase 2, 3에서 반드시 사용자 승인 필요
7. **엣지 케이스 처리**: 식별된 엣지 케이스는 반드시 처리

---

## 전체 흐름 예시

### 사용자 요청

```
사용자: 앱 수정 워크플로우로 결제수단 관리 화면의 UX를 개선해줘
```

### 실행 과정

```
[Phase 1] 현황 분석
   -> 코드 분석: PaymentMethodManagementPage, 관련 위젯 분석
   -> UI/UX 파악: 현재 레이아웃, 인터랙션 분석
   -> 엣지 케이스: 빈 목록, 긴 이름, 삭제 확인 등 식별

[Phase 2] 요구사항 명확화
   -> 질문: "UI 개선 방향은?", "우선 엣지 케이스는?"
   -> 사용자 답변: "레이아웃 재구성", "에러 처리 우선"
   -> 요구사항 정리: modify-requirements.md 생성

[Phase 3] 계획 수립
   -> EnterPlanMode 진입
   -> 상세 계획 작성 (파일별 변경 사항, 단계별 작업)
   -> ExitPlanMode로 사용자 승인

[Phase 4] 구현
   -> modify-todo.md 생성: 8개 작업 정의
   -> 1.1 Explore -> 완료: "의존성 확인"
   -> 2.1 tdd-developer -> 완료: "리스트 구조 변경"
   -> 2.2 general-purpose -> 완료: "UI 개선"
   -> 3.1 tdd-developer -> 완료: "빈 상태 처리"

[Phase 5] 코드 리뷰 반복
   -> 1차 리뷰: "에러 메시지 개선 필요"
   -> 재작업: 에러 UI 수정
   -> 2차 리뷰: 통과

[Phase 6] 완료
   -> flutter test: 통과
   -> flutter analyze: 통과
   -> 결과 보고
   -> modify-todo.md 아카이브
```