코드리뷰리팩토링by affaan-m
플러터 빌드 및 수정
Dart 분석기 오류와 플러터 빌드 실패를 점진적으로 수정하는 명령어입니다.
한 줄 평가 — 다음 사람 도와주세요
언제 쓰나
플러터 앱 빌드 시 오류가 발생할 때
SKILL.md
Lattice 한국어 번역 · 원본 affaan-m/everything-claude-code (841beea). 복사 → 저장하면 Claude Code가 인식합니다.
---
description: Dart 분석기 오류 및 Flutter 빌드 실패를 점진적으로 수정합니다. 최소한의 수정을 위해 dart-build-resolver 에이전트를 호출합니다.
---
# Flutter 빌드 및 수정
이 명령어는 **dart-build-resolver** 에이전트를 호출하여 Dart/Flutter 빌드 오류를 최소한의 변경으로 점진적으로 수정합니다.
## 이 명령어가 하는 일
1. **진단 실행**: `flutter analyze`, `flutter pub get` 실행
2. **오류 구문 분석**: 파일별로 그룹화하고 심각도별로 정렬
3. **점진적 수정**: 한 번에 하나의 오류
4. **각 수정 사항 확인**: 변경 후 분석 재실행
5. **요약 보고**: 수정된 내용과 남은 내용 표시
## 사용 시기
`/flutter-build`는 다음 경우에 사용하세요:
- `flutter analyze`가 오류를 보고할 때
- `flutter build`가 어떤 플랫폼에서도 실패할 때
- `dart pub get` / `flutter pub get`이 버전 충돌로 실패할 때
- `build_runner`가 코드를 생성하지 못할 때
- 빌드를 중단시키는 변경 사항을 가져온 후
## 실행되는 진단 명령어
```bash
# 분석
flutter analyze 2>&1
# 종속성
flutter pub get 2>&1
# 코드 생성 (프로젝트가 build_runner를 사용하는 경우)
dart run build_runner build --delete-conflicting-outputs 2>&1
# 플랫폼 빌드
flutter build apk 2>&1
flutter build web 2>&1
```
## 예시 세션
````text
User: /flutter-build
Agent:
# Flutter 빌드 해결
## 초기 진단
```
$ flutter analyze
Analyzing project...
error • lib/features/user/data/user_repository_impl.dart:34:16 •
A value of type 'String?' can't be assigned to a variable of type 'String'. •
invalid_assignment
error • lib/features/cart/presentation/cart_page.dart:58:5 •
The method 'add' isn't defined for the type 'List<Item>'.
Try correcting the name to the name of an existing method, or defining a method named 'add'. •
undefined_method
2 errors found.
```
## 수정 1: Null Safety
파일: lib/features/user/data/user_repository_impl.dart:34
오류: 'String?' 타입의 값을 'String' 타입 변수에 할당할 수 없습니다.
변경 사항:
```dart
final id = response.id;
```
에서:
```dart
final id = response.id ?? '';
```
```
$ flutter analyze
1 error found.
```
## 수정 2: Immutable List
파일: lib/features/cart/presentation/cart_page.dart:58
오류: 'List<Item>' 타입에 대해 'add' 메서드가 정의되어 있지 않습니다.
원인: 상태가 수정 불가능한 리스트를 보유하고 있습니다. 변경은 Cubit을 통해 이루어집니다.
변경 사항:
```dart
state.items.add(item);
```
에서:
```dart
context.read<CartCubit>().addItem(item);
// 참고: Cubit은 명명된 메서드(addItem, removeItem)를 노출합니다.
// .add(event)는 BLoC 이벤트 API입니다. 혼동하지 마세요.
```
```
$ flutter analyze
No issues found!
```
## 최종 확인
```
$ flutter test
All tests passed.
```
## 요약
| 지표 | 횟수 |
|--------|-----|
| 분석 오류 수정 | 2 |
| 수정된 파일 | 2 |
| 남은 문제 | 0 |
빌드 상태: 통과 ✓
````
## 일반적으로 수정되는 오류
| 오류 |
|-------------|
| `A value of type 'X?' can't be assigned to 'X'` | `?? default` 또는 null 가드를 추가하세요 |
| `The name 'X' isn't defined` | import를 추가하거나 오타를 수정하세요 |
| `Non-nullable instance field must be initialized` | 초기화하거나 `late`를 추가하세요 |
| `Version solving failed` | pubspec.yaml의 버전 제약 조건을 조정하세요 |
| `Missing concrete implementation of 'X'` | 누락된 인터페이스 메서드를 구현하세요 |
| `build_runner: Part of X expected` | 오래된 `.g.dart` 파일을 삭제하고 다시 빌드하세요 |
## 수정 전략
1. **먼저 분석 오류 수정** - 코드는 오류가 없어야 합니다.
2. **다음으로 경고 처리** - 런타임 버그를 유발할 수 있는 경고를 수정합니다.
3. **세 번째로 pub 충돌 해결** - 종속성 해결을 수정합니다.
4. **한 번에 하나의 수정** - 각 변경 사항을 확인합니다.
5. **최소한의 변경** - 리팩토링하지 말고 그냥 수정합니다.
## 중단 조건
다음 경우 에이전트가 중단되고 보고합니다:
- 3번 시도 후에도 동일한 오류가 지속될 때
- 수정 시 더 많은 오류가 발생할 때
- 아키텍처 변경이 필요할 때
- 사용자 결정이 필요한 패키지 업그레이드 충돌이 발생할 때
## 관련 명령어
- `/flutter-test` — 빌드 성공 후 테스트 실행
- `/flutter-review` — 코드 품질 검토
- `verification-loop` 스킬 — 전체 검증 루프
## 관련
- 에이전트: `agents/dart-build-resolver.md`
- 스킬: `skills/flutter-dart-code-review/`필요한 도구
호버하면 설명CC
설치 + 호출 (2단계)
Claude Code CLI 기준.
- 1
SKILL.md 저장
아래 버튼으로 복사 → 다음 경로로 저장.
~/.claude/skills/everything-claude-code-112/SKILL.md - 2
호출
Claude Code 채팅창에서 자연어로 부르면 자동 발동:
예) 플러터 앱 빌드 시 오류가 발생할 때
트리거가 안 잡히면 SKILL.md의
description줄에 더 구체적인 한국어 키워드를 추가해보세요.