5.11 실전 프로젝트: Flutter 모바일 앱 만들기 & APK 빌드

웹 게시판 실습에서 배운 바이브 코딩 패턴을 모바일 앱으로 확장합니다. Flutter를 사용하여 할 일 관리(Todo) 앱을 만들고, 실제 안드로이드 기기에 설치할 수 있는 APK 파일까지 빌드합니다.

왜 Flutter인가?
  • 하나의 코드로 Android + iOS — 플랫폼별 개발 불필요
  • Dart 언어 — JavaScript와 유사해 바이브 코딩에 적합
  • Hot Reload — 코드 수정 즉시 반영, 반복 개선에 최적
  • AI 친화적 — Claude Code가 Flutter/Dart 코드 생성에 강력

전체 워크플로우

graph LR A["1단계\n환경 설정"] --> B["2단계\n앱 설계"] B --> C["3단계\n바이브 코딩"] C --> D["4단계\n테스트"] D --> E["5단계\nAPK 빌드"] A1["Flutter SDK\n+ Android Studio"] --> A B1["Skill\n/pdca plan\n/pdca design"] --> B C1["Agent\nSub-Agent\nUI + 로직 병렬"] --> C D1["에뮬레이터\n+ MCP 테스트"] --> D E1["flutter build apk\n배포 가능한 파일"] --> E style A fill:#02569B,color:#fff style B fill:#4a9eff,color:#fff style C fill:#ff9800,color:#fff style D fill:#9c27b0,color:#fff style E fill:#4caf50,color:#fff

Step 1: 개발 환경 설정

Flutter 개발에 필요한 도구를 설치합니다. Claude Code에게 직접 요청할 수 있습니다.

프롬프트: Flutter 환경 설정 요청
Flutter 개발 환경을 설정해줘.

필요한 것:
1. Flutter SDK 설치 상태 확인
2. Android SDK 설치 상태 확인
3. flutter doctor로 환경 진단
4. 문제가 있으면 해결 방법 안내
# Flutter 설치 (Windows 기준)
# 1. Flutter SDK 다운로드: https://docs.flutter.dev/get-started/install

# 2. 환경 변수 설정 후 확인
flutter --version

# 3. 환경 진단 — 부족한 것 자동 안내
flutter doctor

# 4. 새 프로젝트 생성
flutter create todo_app
cd todo_app

# 5. Claude Code 시작
claude
필수 도구역할설치 방법
Flutter SDK Flutter 프레임워크 + Dart 언어 flutter.dev에서 다운로드
Android Studio Android SDK + 에뮬레이터 developer.android.com에서 다운로드
VS Code (선택) Flutter 확장팩 지원 에디터 Flutter Extension 설치
사전 준비 체크: flutter doctor 명령어 실행 시 모든 항목에 체크(✓)가 뜨면 준비 완료입니다. 체크가 안 된 항목이 있으면 Claude Code에게 "flutter doctor에서 이 에러가 나와. 해결해줘"라고 요청하세요.

Step 2: Todo 앱 설계 — 스킬 활용

프롬프트: Flutter Todo 앱 설계
Flutter로 만들 Todo 앱을 설계해줘.

기능 요구사항:
- 할 일 목록 보기 (체크박스 + 제목 + 날짜)
- 새 할 일 추가 (제목 입력, 우선순위 선택)
- 할 일 완료 처리 (체크 토글)
- 할 일 삭제 (스와이프 삭제)
- 완료/미완료 필터링
- 데이터는 로컬 저장 (SharedPreferences)

디자인 요구사항:
- Material Design 3 스타일
- 라이트/다크 테마 지원
- 부드러운 애니메이션
- FloatingActionButton으로 추가

화면 구성:
- 메인 화면: 할 일 목록 + 필터 탭
- 추가 다이얼로그: 제목 + 우선순위 입력

앱 화면 구조

graph TD A["TodoApp\nMaterialApp"] --> B["HomeScreen\n메인 화면"] B --> C["AppBar\n제목 + 테마 토글"] B --> D["FilterTabs\n전체 / 미완료 / 완료"] B --> E["TodoList\n할 일 목록"] B --> F["FAB (+)\n추가 버튼"] E --> G["TodoItem\n체크박스 + 제목 + 날짜"] E --> H["Dismissible\n스와이프 삭제"] F --> I["AddTodoDialog\n제목 입력 + 우선순위"] style A fill:#02569B,color:#fff style B fill:#4a9eff,color:#fff style F fill:#ff9800,color:#fff style I fill:#9c27b0,color:#fff

Step 3: 바이브 코딩으로 구현 — Sub-Agent 활용

프롬프트: Flutter Todo 앱 구현 요청
위 설계대로 Flutter Todo 앱을 구현해줘.

구현 지침:
1. lib/main.dart — 앱 진입점, 테마 설정
2. lib/models/todo.dart — Todo 데이터 모델
3. lib/screens/home_screen.dart — 메인 화면
4. lib/widgets/todo_item.dart — 개별 할일 위젯
5. lib/widgets/add_todo_dialog.dart — 추가 다이얼로그
6. lib/services/storage_service.dart — SharedPreferences 저장

Sub-Agent를 활용해서 모델/화면/위젯/서비스를 병렬로 만들어줘.

코딩 규칙:
- StatefulWidget 대신 가능하면 StatelessWidget + setState 패턴
- const 생성자 적극 활용
- 한글 주석으로 핵심 로직 설명
graph TD A["사용자 요청\n'Todo 앱 만들어줘'"] --> B["Main Agent\n작업 분석 & 분배"] B --> C["Sub-Agent 1\n데이터 모델\ntodo.dart"] B --> D["Sub-Agent 2\n메인 화면\nhome_screen.dart"] B --> E["Sub-Agent 3\n위젯 컴포넌트\ntodo_item.dart\nadd_todo_dialog.dart"] B --> F["Sub-Agent 4\n저장 서비스\nstorage_service.dart"] C --> G["Main Agent\n통합 + main.dart 생성"] D --> G E --> G F --> G G --> H["flutter run\n에뮬레이터에서 실행"] style A fill:#4a9eff,color:#fff style B fill:#ff9800,color:#fff style G fill:#9c27b0,color:#fff style H fill:#4caf50,color:#fff

핵심 코드 구조 미리보기

// lib/models/todo.dart — 할 일 데이터 모델
class Todo {
  final String id;
  final String title;
  final Priority priority;
  final DateTime createdAt;
  bool isCompleted;

  Todo({
    required this.id,
    required this.title,
    this.priority = Priority.medium,
    required this.createdAt,
    this.isCompleted = false,
  });

  // JSON 변환 (SharedPreferences 저장용)
  Map<String, dynamic> toJson() => {
    'id': id,
    'title': title,
    'priority': priority.index,
    'createdAt': createdAt.toIso8601String(),
    'isCompleted': isCompleted,
  };

  factory Todo.fromJson(Map<String, dynamic> json) => Todo(
    id: json['id'],
    title: json['title'],
    priority: Priority.values[json['priority']],
    createdAt: DateTime.parse(json['createdAt']),
    isCompleted: json['isCompleted'],
  );
}

enum Priority { low, medium, high }
// lib/main.dart — 앱 진입점 (핵심 부분)
import 'package:flutter/material.dart';
import 'screens/home_screen.dart';

void main() => runApp(const TodoApp());

class TodoApp extends StatefulWidget {
  const TodoApp({super.key});

  @override
  State<TodoApp> createState() => _TodoAppState();
}

class _TodoAppState extends State<TodoApp> {
  ThemeMode _themeMode = ThemeMode.system;

  void _toggleTheme() {
    setState(() {
      _themeMode = _themeMode == ThemeMode.dark
          ? ThemeMode.light
          : ThemeMode.dark;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Todo App',
      theme: ThemeData(
        colorSchemeSeed: Colors.blue,
        useMaterial3: true,
      ),
      darkTheme: ThemeData(
        colorSchemeSeed: Colors.blue,
        brightness: Brightness.dark,
        useMaterial3: true,
      ),
      themeMode: _themeMode,
      home: HomeScreen(onToggleTheme: _toggleTheme),
    );
  }
}

Step 4: 에뮬레이터 테스트 & MCP 활용

# 에뮬레이터 실행 방법
# 1. 에뮬레이터 목록 확인
flutter emulators

# 2. 에뮬레이터 실행
flutter emulators --launch Pixel_7_API_34

# 3. 앱 실행 (Hot Reload 활성화)
flutter run

# 4. Hot Reload: 코드 수정 후 r 키 입력
# 5. Hot Restart: R 키 입력 (상태 초기화)
프롬프트: 앱 테스트 요청
Todo 앱을 에뮬레이터에서 테스트해줘.

테스트 시나리오:
1. 앱 실행 → 빈 목록 화면 표시 확인
2. FAB(+) 버튼 클릭 → 추가 다이얼로그 표시
3. "Flutter 공부하기" 입력 + 높음 우선순위 → 추가
4. 할 일 체크박스 토글 → 완료 표시 (취소선)
5. 스와이프 삭제 → 목록에서 제거
6. 다크모드 토글 → 테마 전환 확인
7. 앱 종료 후 재실행 → 데이터 유지 확인

각 단계 결과를 PASS/FAIL로 정리해줘.
테스트 방법도구적합한 상황
에뮬레이터 수동 테스트 Android Emulator / iOS Simulator UI/UX 직접 확인, 터치 인터랙션 검증
Flutter 통합 테스트 flutter test 위젯 동작, 비즈니스 로직 자동 검증
MCP Playwright Flutter Web 빌드 후 브라우저 테스트 웹 버전 자동 테스트 (크로스 플랫폼 확인)
프롬프트: Flutter 통합 테스트 코드 생성
Todo 앱의 통합 테스트 코드를 작성해줘.

test/widget_test.dart에 다음 테스트 추가:
1. 앱 실행 시 빈 목록 표시 테스트
2. Todo 추가 후 목록에 표시 테스트
3. 완료 토글 동작 테스트
4. 삭제 동작 테스트

flutter test로 실행 가능하게 해줘.
// test/widget_test.dart — AI가 자동 생성하는 테스트 코드 예시
import 'package:flutter_test/flutter_test.dart';
import 'package:todo_app/main.dart';

void main() {
  testWidgets('빈 목록에서 Todo 추가 테스트', (tester) async {
    // 앱 실행
    await tester.pumpWidget(const TodoApp());

    // 빈 목록 확인
    expect(find.text('할 일이 없습니다'), findsOneWidget);

    // FAB 클릭 → 다이얼로그 열기
    await tester.tap(find.byType(FloatingActionButton));
    await tester.pumpAndSettle();

    // 제목 입력
    await tester.enterText(
      find.byType(TextField), 'Flutter 공부하기');

    // 추가 버튼 클릭
    await tester.tap(find.text('추가'));
    await tester.pumpAndSettle();

    // 목록에 표시 확인
    expect(find.text('Flutter 공부하기'), findsOneWidget);
  });
}

Step 5: APK 빌드 — 실제 기기에 설치

테스트가 완료되면 APK 파일을 빌드하여 안드로이드 기기에 설치할 수 있습니다.

프롬프트: APK 빌드 요청
Todo 앱을 APK로 빌드해줘.

빌드 전 확인:
1. pubspec.yaml에 앱 이름, 버전 정보 확인
2. 앱 아이콘 설정 (기본 Flutter 아이콘 → 커스텀)
3. 불필요한 권한 제거

빌드 옵션:
- Release 모드 (디버그 아님)
- APK 파일로 생성 (AAB 아님)
- 파일 크기 최소화
# APK 빌드 명령어
# 1. 의존성 정리
flutter clean
flutter pub get

# 2. Release APK 빌드
flutter build apk --release

# 빌드 완료 시 출력 위치:
# build/app/outputs/flutter-apk/app-release.apk

# 3. 파일 크기 확인
ls -lh build/app/outputs/flutter-apk/app-release.apk
# 예: 약 15~25MB

# 4. 연결된 기기에 직접 설치
flutter install

APK 빌드 과정 상세

graph TD A["Dart 소스 코드\nlib/*.dart"] --> B["flutter build apk\n--release"] B --> C["Dart → 네이티브 코드\nAOT 컴파일"] C --> D["리소스 패키징\n아이콘, 폰트, 이미지"] D --> E["서명 & 압축\nRelease 키로 서명"] E --> F["app-release.apk\n설치 가능한 파일"] F --> G["기기 설치\nflutter install\n또는 USB 복사"] style A fill:#02569B,color:#fff style B fill:#ff9800,color:#fff style F fill:#4caf50,color:#fff style G fill:#9c27b0,color:#fff
빌드 옵션명령어용도파일 크기
Debug APK flutter build apk --debug 개발 중 테스트용 ~60MB (디버그 정보 포함)
Release APK flutter build apk --release 배포용 (최적화됨) ~15-25MB
Split APK flutter build apk --split-per-abi CPU 아키텍처별 분리 ~7-12MB (아키텍처당)
App Bundle flutter build appbundle Google Play 스토어 등록용 ~10-15MB (자동 최적화)

APK 빌드 전 체크리스트

프롬프트: 빌드 전 설정 요청
APK 빌드 전에 다음 설정을 확인하고 수정해줘:

1. pubspec.yaml:
   - name: todo_app
   - description: 바이브 코딩으로 만든 할 일 관리 앱
   - version: 1.0.0+1

2. android/app/build.gradle:
   - minSdkVersion: 21 (Android 5.0 이상)
   - targetSdkVersion: 34
   - versionCode, versionName 확인

3. android/app/src/main/AndroidManifest.xml:
   - 앱 이름을 한글로: "할 일 관리"
   - 불필요한 인터넷 권한 제거 (오프라인 앱이므로)

4. 앱 아이콘:
   - flutter_launcher_icons 패키지로 커스텀 아이콘 설정
# pubspec.yaml — 핵심 설정
name: todo_app
description: 바이브 코딩으로 만든 할 일 관리 앱
version: 1.0.0+1

environment:
  sdk: '>=3.0.0 <4.0.0'

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.2.0    # 로컬 데이터 저장

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_launcher_icons: ^0.13.0  # 앱 아이콘 생성

# 앱 아이콘 설정
flutter_launcher_icons:
  android: true
  ios: true
  image_path: "assets/icon/app_icon.png"

기기에 설치하기

설치 방법절차필요한 것
USB 직접 설치 USB 연결 → flutter install USB 케이블, 개발자 모드 활성화
APK 파일 전송 APK 파일을 기기로 복사 → 파일 탐색기에서 설치 "출처를 알 수 없는 앱" 설치 허용
QR 코드 공유 APK를 클라우드 업로드 → QR 코드 생성 → 스캔 설치 Google Drive, Firebase App Distribution 등
Play Store 등록 AAB 빌드 → Google Play Console 업로드 개발자 계정 ($25 일회성)

웹 게시판 vs Flutter 앱 — 바이브 코딩 비교

비교 항목 5.10 웹 게시판 5.11 Flutter 앱
결과물 HTML 파일 (브라우저에서 실행) APK 파일 (스마트폰에 설치)
기술 스택 HTML + CSS + JavaScript Flutter + Dart
데이터 저장 localStorage SharedPreferences
테스트 MCP Playwright (브라우저) flutter test + 에뮬레이터
배포 GitHub Pages / Netlify APK 파일 / Play Store
바이브 코딩 난이도 초급 (환경 설정 불필요) 중급 (Flutter SDK 설치 필요)
생산성 단축률 기존 대비 ~95% 단축 기존 대비 ~90% 단축

Flutter 바이브 코딩 Tips

상황프롬프트 예시활용 도구
UI 수정 "할 일 카드에 그림자 효과를 추가하고, 우선순위에 따라 왼쪽 테두리 색을 다르게 해줘" 바이브 코딩 + Hot Reload
기능 추가 "할 일에 마감일을 추가하고, 날짜 선택기(DatePicker)를 연동해줘" 바이브 코딩
에러 해결 "flutter run 하면 이 에러가 나와: [에러 메시지]. 해결해줘" 바이브 코딩
성능 개선 "목록 스크롤이 버벅여. ListView.builder로 최적화해줘" 바이브 코딩 + Sub-Agent
APK 최적화 "APK 크기를 줄여줘. 사용하지 않는 패키지 제거하고 ProGuard 적용" 바이브 코딩

Flutter 실습 과제

다음 단계를 따라 나만의 모바일 앱을 완성해보세요:

  1. 환경 설정: flutter doctor로 개발 환경 확인
  2. 프로젝트 생성: flutter create todo_app으로 시작
  3. 설계: Claude Code에게 Todo 앱 설계 요청
  4. 구현: Sub-Agent로 모델/화면/위젯/서비스 병렬 생성
  5. 실행: flutter run으로 에뮬레이터에서 확인
  6. 반복 개선: Hot Reload로 UI/기능 3회 이상 수정
  7. 테스트: flutter test로 위젯 테스트 실행
  8. APK 빌드: flutter build apk --release로 APK 생성
  9. 설치: 실제 기기에 APK 설치하여 동작 확인
  10. (응용): 카테고리, 마감일, 알림 등 1가지 기능 추가
핵심 요약: Flutter 바이브 코딩은 웹 실습의 연장선입니다. "자연어로 설명 → AI가 Dart 코드 생성 → Hot Reload로 즉시 확인 → 반복 개선" 패턴은 웹과 동일합니다. 차이점은 결과물이 실제 스마트폰에 설치되는 앱이라는 것입니다. PM/PL이 프로토타입 앱을 직접 만들어 "이런 앱을 만들고 싶어요"라고 보여줄 수 있다면, 개발팀과의 커뮤니케이션이 획기적으로 달라집니다.

5.12 실전: 기존 프로젝트 소스 대규모 개선 — AI 네이티브 리팩토링

새로 만드는 것보다 기존 코드를 개선하는 것이 실무의 80%입니다. 수십~수백 개 파일을 수정해야 하는 대규모 개선 작업에서 Claude Code의 에이전트, 스킬, MCP를 총동원하여 안전하고 체계적으로 처리하는 방법을 학습합니다.

핵심 원칙: 기존 프로젝트 수정은 신규 개발과 다릅니다. "먼저 이해하고, 영향을 파악하고, 안전하게 수정하고, 반드시 검증한다"는 순서를 지켜야 합니다. AI가 아무리 빨라도, 검증 없이 수정하면 장애로 이어집니다.

전체 워크플로우 — 7단계 안전 개선 프로세스

graph TD A["1단계\n코드베이스 분석\n현황 파악"] --> B["2단계\n영향도 분석\n수정 범위 산정"] B --> C["3단계\n보안 점검\n취약점 스캔"] C --> D["4단계\n소스 패턴 분석\n코딩 컨벤션 파악"] D --> E["5단계\nSub-Agent 병렬 수정\n대규모 코드 변경"] E --> F["6단계\n검증 & 테스트\nGap 분석 + 자동 테스트"] F --> G["7단계\n문서화 & 보고서\n변경 이력 정리"] A1["Agent: Explore\n코드 탐색"] --> A B1["Agent: code-analyzer\n의존성 추적"] --> B C1["Agent: security-reviewer\nOWASP 검사"] --> C D1["Agent: code-reviewer\n패턴 분석"] --> D E1["Sub-Agent 3~5개\n파일별 병렬 수정"] --> E F1["Agent: gap-detector\nMCP Playwright"] --> F G1["Agent: report-generator\nDOCX 생성"] --> G style A fill:#4a9eff,color:#fff style B fill:#ff9800,color:#fff style C fill:#f44336,color:#fff style D fill:#9c27b0,color:#fff style E fill:#02569B,color:#fff style F fill:#4caf50,color:#fff style G fill:#795548,color:#fff

실습 시나리오: 레거시 웹 프로젝트 개선

상황 설정: 2년 전에 만들어진 사내 관리 시스템이 있습니다. jQuery 기반이고, 보안 패치가 안 되어 있고, 모바일 대응이 안 되며, 코딩 컨벤션이 통일되지 않았습니다. 파일 50개, 코드 약 15,000줄을 개선해야 합니다.

Step 1: 코드베이스 분석 — 현황 파악

수정하기 전에 프로젝트의 전체 구조를 이해해야 합니다. Claude Code에게 코드를 읽고 분석하게 합니다.

프롬프트: 코드베이스 전체 분석 요청
이 프로젝트를 전체적으로 분석해줘.

분석 항목:
1. 프로젝트 구조 — 폴더/파일 트리와 각 역할
2. 기술 스택 — 사용 중인 언어, 프레임워크, 라이브러리 버전
3. 코드 규모 — 파일 수, 총 코드 줄 수, 언어별 비율
4. 의존성 현황 — package.json/requirements.txt 분석
5. 진입점 — 앱 시작 흐름, 라우팅 구조
6. 데이터 흐름 — DB 연결, API 호출 패턴

결과를 마크다운 표로 정리해줘.
분석 도구Claude Code 명령파악하는 내용
파일 탐색 Glob, Grep 도구 자동 사용 프로젝트 구조, 파일 목록, 코드 패턴
의존성 분석 "package.json 분석해줘" 사용 중인 라이브러리, 버전 노후화 여부
코드 통계 "코드 규모를 분석해줘" 총 줄 수, 파일 수, 복잡도 분포
Sub-Agent 탐색 Explore 에이전트 자동 활용 대규모 코드베이스를 병렬로 빠르게 탐색

Step 2: 영향도 분석 — 수정하면 어디가 깨지나?

대규모 수정에서 가장 중요한 단계입니다. "이 파일을 수정하면 다른 어떤 파일이 영향을 받는가?"를 사전에 파악해야 합니다.

graph TD A["수정 대상 파일\nutils.js"] --> B["직접 의존\nimport utils from..."] B --> C["api.js\nauth.js\ndata.js"] C --> D["간접 의존\n이 파일들을 import하는 파일"] D --> E["pages/login.js\npages/dashboard.js\npages/settings.js\n..."] A --> F{"영향도 분석\n결과"} F --> G["직접 영향: 3개 파일"] F --> H["간접 영향: 12개 파일"] F --> I["테스트 필요: 15개 파일"] style A fill:#f44336,color:#fff style F fill:#ff9800,color:#fff style I fill:#4caf50,color:#fff
프롬프트: 영향도 분석 요청
다음 수정 작업의 영향도를 분석해줘.

수정 계획:
- utils.js의 formatDate() 함수 시그니처 변경
- api.js의 에러 핸들링 패턴을 try-catch에서 async/await로 변환
- 전체 CSS를 BEM 네이밍으로 통일

각 수정 항목별로:
1. 직접 영향 받는 파일 목록 (import/require 추적)
2. 간접 영향 받는 파일 목록 (연쇄 의존)
3. 수정 위험도 (상/중/하)
4. 추천 수정 순서 (의존성 역순)
5. 수정 후 필수 테스트 항목

의존성 그래프를 Mermaid로 시각화해줘.

영향도 분석 결과 예시

수정 항목직접 영향간접 영향위험도수정 순서
formatDate() 시그니처 변경 api.js, auth.js, data.js 12개 페이지 컴포넌트 1순위 (가장 많은 의존)
에러 핸들링 패턴 변환 api.js 내부만 api.js 호출하는 8개 파일 2순위
CSS BEM 네이밍 통일 전체 HTML/JSX 파일 없음 (스타일만 변경) 3순위 (기능 영향 없음)
실무 핵심 판단: 영향도 분석 결과를 보고 수정 순서와 단계를 결정하는 것이 PM/PL의 역할입니다. 위험도 '상'인 작업은 별도 브랜치에서 진행하고, '하'인 작업부터 시작하는 것이 안전합니다. Claude Code에게 "위험도 낮은 것부터 순서대로 수정해줘"라고 지시할 수 있습니다.

Step 3: 보안 점검 — 취약점 스캔

코드를 수정하기 전에 기존 보안 취약점을 먼저 파악합니다. 수정 과정에서 함께 해결할 수 있습니다.

프롬프트: 보안 취약점 스캔 요청
이 프로젝트의 보안 취약점을 전수 검사해줘.

검사 항목 (OWASP Top 10 기준):
1. SQL 인젝션 — 사용자 입력이 쿼리에 직접 들어가는 곳
2. XSS (크로스사이트 스크립팅) — innerHTML, document.write 사용
3. 인증/인가 결함 — 토큰 관리, 세션 처리, 권한 검사
4. 민감 데이터 노출 — 하드코딩된 API 키, 비밀번호
5. 의존성 취약점 — 알려진 CVE가 있는 라이브러리
6. CSRF 보호 — 폼 제출 시 토큰 검증
7. 보안 헤더 — CSP, X-Frame-Options 등

각 취약점을 발견하면:
- 파일명:줄번호
- 위험 등급 (Critical/High/Medium/Low)
- 문제 코드 스니펫
- 수정 권고안

표로 정리해줘.
검사 도구/에이전트역할검출 대상
code-analyzer 에이전트 코드 품질 + 보안 패턴 분석 위험한 함수 사용, 안전하지 않은 패턴
security-reviewer 에이전트 OWASP Top 10 전문 검사 SQL 인젝션, XSS, 인증 결함, 민감 데이터
npm audit / pip audit 의존성 CVE 검사 알려진 취약점이 있는 패키지
Grep 도구 위험 패턴 검색 eval(), innerHTML, 하드코딩 키
# Claude Code에서 보안 검사 실행 예시

> 이 프로젝트에서 eval(), innerHTML, document.write를 사용하는 곳을 모두 찾아줘

  검색 결과:
  ✗ src/utils/template.js:45   — eval(userInput)          [Critical]
  ✗ src/pages/comment.js:23    — el.innerHTML = data      [High]
  ✗ src/legacy/render.js:12    — document.write(html)     [High]
  ✓ src/pages/about.js:8       — el.innerHTML = '정적 텍스트' [Safe - 정적]

> npm audit

  found 3 vulnerabilities (1 critical, 2 high)
  ┌─────────────┬────────────────┬──────────┐
  │ Package     │ Vulnerability  │ Severity │
  ├─────────────┼────────────────┼──────────┤
  │ lodash      │ Prototype Poll │ Critical │
  │ express     │ Open Redirect  │ High     │
  │ jsonwebtoken│ Algorithm Conf │ High     │
  └─────────────┴────────────────┴──────────┘

Step 4: 소스 패턴 분석 — 코딩 컨벤션 파악

기존 코드의 스타일을 먼저 파악해야, 수정 후에도 일관성이 유지됩니다.

프롬프트: 코딩 패턴 분석 요청
이 프로젝트의 코딩 패턴을 분석해줘.

분석할 패턴:
1. 네이밍 컨벤션 — camelCase? snake_case? 혼용?
2. 파일 구조 — 컴포넌트, 유틸, 서비스 분리 방식
3. 에러 처리 패턴 — try-catch? .catch()? 콜백?
4. 상태 관리 패턴 — 글로벌 변수? 모듈 패턴? 클래스?
5. 주석 스타일 — JSDoc? 인라인? 없음?
6. 불일치/혼용 패턴 — 같은 로직의 다른 구현 방식

패턴 분석 결과를 바탕으로 CLAUDE.md에 넣을
코딩 컨벤션 규칙을 제안해줘.
CLAUDE.md 활용: 분석된 패턴을 CLAUDE.md에 기록해두면, 이후 Claude Code가 수정할 때 기존 스타일과 일관된 코드를 생성합니다. 이것이 대규모 수정에서 CLAUDE.md가 필수인 이유입니다.
# CLAUDE.md — 기존 프로젝트 분석 후 작성 예시

## 프로젝트 컨텍스트
- 2년 된 사내 관리 시스템, jQuery → Vanilla JS 전환 중
- 파일 50개, 코드 15,000줄

## 코딩 컨벤션 (기존 패턴 유지)
- 변수명: camelCase (기존 코드와 통일)
- 함수명: camelCase, 동사로 시작 (getData, handleClick)
- 파일명: kebab-case (user-profile.js)
- CSS 클래스: BEM 전환 중 (block__element--modifier)

## 수정 규칙
- jQuery → Vanilla JS 전환 시 동일 동작 보장
- 기존 API 응답 형식 변경 금지 (하위 호환성)
- console.log 제거, 구조화된 로깅으로 교체
- var → const/let 전환 (const 우선)

Step 5: Sub-Agent 병렬 수정 — 대규모 코드 변경

분석이 끝나면 실제 수정에 들어갑니다. 파일이 수십 개일 때 Sub-Agent를 활용한 병렬 처리가 핵심입니다.

graph TD A["PM/PL: '위험도 낮은 것부터\n순서대로 수정해줘'"] --> B["Main Agent\n수정 전략 수립"] B --> C["Phase 1: CSS 통일\n(위험도: 하)"] B --> D["Phase 2: JS 패턴 변환\n(위험도: 중)"] B --> E["Phase 3: API/함수 변경\n(위험도: 상)"] C --> C1["Sub-Agent 1\npages/ CSS 수정"] C --> C2["Sub-Agent 2\ncomponents/ CSS 수정"] C --> C3["Sub-Agent 3\nlayouts/ CSS 수정"] D --> D1["Sub-Agent 4\nvar → const/let 전환"] D --> D2["Sub-Agent 5\njQuery → Vanilla JS"] D --> D3["Sub-Agent 6\n에러 핸들링 통일"] E --> E1["Main Agent\n순차 수정 (안전)"] C1 --> F["Phase별 검증\ngit commit"] C2 --> F C3 --> F D1 --> F D2 --> F D3 --> F E1 --> F style A fill:#4a9eff,color:#fff style B fill:#ff9800,color:#fff style C fill:#4caf50,color:#fff style D fill:#ff9800,color:#fff style E fill:#f44336,color:#fff
프롬프트: 대규모 병렬 수정 요청
분석 결과를 바탕으로 프로젝트를 단계별로 개선해줘.

Phase 1 (위험도 낮음 — Sub-Agent 병렬):
- 전체 CSS 클래스를 BEM 네이밍으로 통일
- Sub-Agent를 pages/, components/, layouts/ 폴더별로 분배
- 각 Sub-Agent는 HTML의 클래스명과 CSS를 함께 수정
- Phase 1 완료 후 git commit

Phase 2 (위험도 중간 — Sub-Agent 병렬):
- var → const/let 전환 (const 우선)
- jQuery 선택자 → document.querySelector 전환
- 콜백 기반 → async/await 전환
- Phase 2 완료 후 git commit

Phase 3 (위험도 높음 — 순차 처리):
- formatDate() 함수 시그니처 변경 + 호출부 전체 수정
- 보안 취약점 수정 (eval 제거, innerHTML → textContent)
- Phase 3 완료 후 git commit

각 Phase 완료 후 반드시 변경사항을 커밋하고,
다음 Phase로 넘어가기 전에 기본 동작 확인해줘.

대규모 수정 시 필수 전략

전략방법이유
Phase별 커밋 각 Phase 완료마다 /commit으로 저장 문제 발생 시 해당 Phase만 롤백 가능
브랜치 분리 git checkout -b refactor/phase-1 메인 브랜치 보호, PR 리뷰 후 머지
위험도 순 실행 낮음 → 중간 → 높음 순서 안전한 변경으로 자신감 확보 후 위험한 작업
CLAUDE.md 유지 프로젝트 컨벤션 + 수정 규칙 명시 Sub-Agent가 일관된 스타일로 수정
변경 전 스냅샷 "수정 전 현재 상태를 기록해줘" Before/After 비교, 보고서 증적

Step 6: 검증 & 테스트 — 수정 후 안전성 확인

대규모 수정의 가장 중요한 단계입니다. 수정이 기존 기능을 깨뜨리지 않았는지 다층 검증합니다.

graph TD A["수정 완료"] --> B["Layer 1\n정적 분석"] B --> C["Layer 2\nGap 분석"] C --> D["Layer 3\n자동 테스트"] D --> E["Layer 4\nUI 테스트"] E --> F{"전체\nPASS?"} F -->|"No"| G["실패 항목\n자동 수정"] G --> B F -->|"Yes"| H["검증 완료\n보고서 생성"] B1["린트, 타입 체크\n문법 오류 검출"] --> B C1["/pdca analyze\n설계-구현 일치율"] --> C D1["기존 테스트 실행\nflutter test, jest"] --> D E1["MCP Playwright\n화면 동작 검증"] --> E style A fill:#ff9800,color:#fff style F fill:#9c27b0,color:#fff style H fill:#4caf50,color:#fff
프롬프트: 다층 검증 요청
수정 결과를 다음 4단계로 검증해줘.

Layer 1 — 정적 분석:
- ESLint/TSC 실행하여 문법/타입 오류 확인
- 사용하지 않는 변수, import 정리

Layer 2 — Gap 분석:
- 수정 계획서 대비 실제 변경 파일 비교
- 빠진 수정 항목이 있는지 확인
- Match Rate 계산

Layer 3 — 기존 테스트 실행:
- 기존 테스트 코드가 있으면 전부 실행
- 실패하는 테스트가 있으면 원인 분석

Layer 4 — MCP 화면 테스트:
- 주요 페이지 접속하여 렌더링 확인
- 로그인, 목록, 상세, 폼 제출 시나리오 테스트
- 모바일 뷰포트에서 레이아웃 확인

각 Layer별 PASS/FAIL 결과를 표로 정리해줘.

검증 결과 예시

검증 Layer검사 항목결과상세
Layer 1: 정적 분석 ESLint 검사 PASS 0 errors, 3 warnings (미사용 변수)
Layer 2: Gap 분석 수정 계획 대비 일치율 PASS Match Rate: 95% (47/50 파일 수정 완료)
Layer 3: 기존 테스트 jest 테스트 32개 FAIL 30 passed, 2 failed (formatDate 관련)
Layer 4: UI 테스트 MCP Playwright 5개 시나리오 PASS 5/5 시나리오 정상
Layer 3 실패 시 대응: 테스트 2개가 실패했으면, Claude Code에게 "실패한 테스트 2개를 분석하고 수정해줘"라고 요청합니다. 수정 후 다시 전체 테스트를 실행하여 PASS를 확인합니다. 이것이 자동화된 회귀 테스트(Regression Test)입니다.

Step 7: 문서화 & 보고서 — 변경 이력 정리

프롬프트: 대규모 수정 보고서 요청
이번 리팩토링 작업의 종합 보고서를 DOCX로 작성해줘.

보고서 구성:
1. 개요 — 프로젝트 정보, 작업 기간, 작업자
2. 수정 전 현황 — 코드 분석 결과 요약
3. 영향도 분석 결과 — 의존성 그래프, 위험도 분류
4. 보안 점검 결과 — 발견 취약점 및 조치 내역
5. 수정 내역 상세
   - Phase별 수정 파일 목록
   - Before/After 코드 비교 (주요 변경)
   - 수정 라인 수 통계
6. 검증 결과 — 4-Layer 검증 PASS/FAIL
7. 잔여 이슈 — 미처리 항목, 후속 작업 필요 사항
8. 성과 지표 — 코드 품질 Before/After 비교

파일명: refactoring-report-2026-04-09.docx

수정 성과 지표 예시

지표 수정 전 수정 후 개선율
보안 취약점 Critical 1, High 4, Medium 8 Critical 0, High 0, Medium 2 85% 감소
코드 일관성 네이밍 혼용 38개 파일 전체 BEM + camelCase 통일 100% 통일
의존성 노후화 3개 CVE 취약 패키지 전체 최신 안정 버전 100% 해결
레거시 코드 jQuery 사용 23개 파일 Vanilla JS 전환 완료 100% 전환
테스트 커버리지 42% 78% +36%p
수정 파일 수 47개 파일, 2,300줄 변경

활용 도구 총정리 — 단계별 최적 도구

단계주요 도구역할자동화 수준
1. 코드 분석 Explore 에이전트, Glob/Grep 코드베이스 구조 파악 완전 자동
2. 영향도 분석 code-analyzer 에이전트 의존성 추적, 위험도 산정 완전 자동
3. 보안 점검 security-reviewer 에이전트, npm audit OWASP Top 10, CVE 검사 완전 자동
4. 패턴 분석 code-reviewer 에이전트 코딩 스타일 파악, CLAUDE.md 생성 완전 자동
5. 병렬 수정 Sub-Agent 3~5개 Phase별 파일 병렬 수정 자동 + PM 승인
6. 검증 gap-detector, MCP Playwright, 기존 테스트 4-Layer 다층 검증 완전 자동
7. 문서화 report-generator 에이전트 DOCX 보고서 자동 생성 완전 자동

기존 수동 리팩토링 vs AI 리팩토링 — 생산성 비교

작업 수동 리팩토링 소요 시간 AI 리팩토링 소요 시간
코드 분석 개발자가 코드 읽으며 파악 2~3일 Explore 에이전트가 자동 분석 5~10분
영향도 분석 IDE에서 참조 추적, 수동 기록 1~2일 code-analyzer가 의존성 자동 추적 3~5분
보안 점검 보안 전문가 코드 리뷰 2~3일 security-reviewer + npm audit 5~10분
50개 파일 수정 개발자 1명이 순차 수정 5~10일 Sub-Agent 5개가 병렬 수정 30~60분
테스트 & 검증 수동 테스트 + 코드 리뷰 2~3일 4-Layer 자동 검증 10~20분
문서화 변경 이력 수동 작성 1~2일 report-generator DOCX 자동 생성 5분
graph LR subgraph Manual["수동 리팩토링"] M1["분석\n3일"] --> M2["수정\n7일"] M2 --> M3["테스트\n3일"] M3 --> M4["문서화\n2일"] end subgraph AI["AI 리팩토링"] A1["분석\n20분"] --> A2["수정\n1시간"] A2 --> A3["검증\n20분"] A3 --> A4["문서화\n5분"] end style Manual fill:#ffebee,stroke:#f44336 style AI fill:#e8f5e9,stroke:#4caf50
비교 항목수동 리팩토링AI 리팩토링
총 소요 시간 2~3주 (50개 파일 기준) 2~3시간
필요 인력 시니어 개발자 1~2명 + QA 1명 PM/PL 1명 (AI가 실행)
누락 위험 수동 추적으로 누락 발생 가능 Grep 전수 검색으로 누락 최소화
일관성 개발자 간 스타일 차이 발생 CLAUDE.md 기반 100% 일관된 스타일
롤백 용이성 대규모 커밋 시 롤백 어려움 Phase별 커밋으로 정밀 롤백 가능
AI 리팩토링의 한계와 주의점
  • 비즈니스 로직 이해 — AI는 코드 패턴은 변환하지만, "왜 이렇게 구현했는지" 비즈니스 맥락은 모릅니다. 특수한 비즈니스 규칙이 있는 코드는 실무자가 반드시 확인하세요.
  • 데이터베이스 마이그레이션 — DB 스키마 변경은 AI에게 맡기되, 실행 전 반드시 백업하고 DBA와 리뷰하세요.
  • 프로덕션 배포 — 스테이징 환경에서 충분히 테스트한 후 프로덕션에 배포합니다. AI 수정이라도 배포 프로세스는 동일하게 지켜야 합니다.
  • 팀 리뷰 필수 — Sub-Agent가 수정한 코드도 반드시 PR을 만들어 팀원 리뷰를 거치세요. /review 스킬로 AI 1차 리뷰 후 사람이 2차 리뷰하는 것을 권장합니다.

대규모 개선 실습 과제

실제 프로젝트(또는 오픈소스)를 대상으로 다음을 수행해보세요:

  1. 프로젝트 선택: 본인의 기존 프로젝트 또는 GitHub에서 레거시 프로젝트 clone
  2. 코드 분석: Claude Code에게 "이 프로젝트를 전체 분석해줘" 요청
  3. 영향도 분석: 수정하고 싶은 항목의 영향 범위 파악
  4. 보안 점검: "보안 취약점을 검사해줘"로 보안 이슈 확인
  5. CLAUDE.md 작성: 코딩 컨벤션과 수정 규칙 정리
  6. Phase별 수정: 위험도 낮은 것부터 Sub-Agent로 병렬 수정
  7. 다층 검증: 정적 분석 → Gap 분석 → 테스트 → UI 테스트
  8. 보고서 생성: Before/After 비교가 포함된 DOCX 보고서
핵심 요약: 기존 프로젝트 대규모 개선은 "분석 → 영향도 → 보안 → 패턴 → 수정 → 검증 → 문서화" 7단계를 반드시 순서대로 밟아야 합니다. 각 단계마다 Claude Code의 전문 에이전트(Explore, code-analyzer, security-reviewer, gap-detector, report-generator)가 자동으로 처리하며, Sub-Agent 병렬 수정으로 수동 대비 90% 이상 시간을 단축합니다. 그러나 PM/PL의 판단(수정 순서 결정, 비즈니스 로직 확인, 배포 승인)은 AI가 대체할 수 없는 핵심 역할입니다.

5.13 Claude Code 업무 능률 극대화 전략

지금까지 배운 스킬, MCP, 에이전트, PDCA를 실전 업무에서 최대 효율로 조합하는 방법을 정리합니다. 개별 기능을 아는 것과 이를 워크플로우로 엮어 쓰는 것은 전혀 다른 차원의 생산성을 만들어냅니다.

이 섹션의 목표: Claude Code를 "가끔 쓰는 도구"에서 "매일 쓰는 업무 파트너"로 전환하는 실전 전략을 익힙니다.

A. 골든 프롬프트 공식 — 10초 만에 최적 프롬프트 작성

프롬프트 품질이 결과 품질의 80%를 결정합니다. 다음 5요소 공식을 기억하세요.

graph LR A["1. 역할\n'시니어 개발자로서'"] --> B["2. 컨텍스트\n'Next.js 14 프로젝트에서'"] B --> C["3. 구체적 지시\n'로그인 폼을 만들어줘'"] C --> D["4. 출력 형식\n'TypeScript + Tailwind'"] D --> E["5. 제약조건\n'외부 라이브러리 없이'"] style A fill:#4a9eff,color:#fff style B fill:#ff9800,color:#fff style C fill:#9c27b0,color:#fff style D fill:#4caf50,color:#fff style E fill:#f44336,color:#fff

상황별 최적 프롬프트 매트릭스

업무 상황나쁜 프롬프트 (느림)골든 프롬프트 (빠름)시간 절약
코드 생성 "로그인 페이지 만들어줘" "React + TypeScript로 이메일/비밀번호 로그인 폼을 만들어줘. 빈 필드 검증, 로딩 상태, 에러 메시지 표시 포함. Tailwind CSS 사용" 반복 수정 3회 → 0회
코드 리뷰 "이 코드 봐줘" "이 PR의 코드를 보안(SQL 인젝션, XSS), 성능(N+1 쿼리), 에러 처리 관점에서 리뷰하고, 심각도별로 정리해줘" 추가 질문 2~3회 → 0회
디버깅 "에러 나는데 고쳐줘" "이 에러가 발생해: [에러 메시지]. 해당 파일은 src/api/auth.js야. 근본 원인을 분석하고, 수정 코드와 재발 방지 방안까지 알려줘" 원인 파악 30분 → 2분
문서화 "README 써줘" "이 프로젝트의 README.md를 작성해줘. 프로젝트 소개, 기술 스택, 설치 방법(npm), 환경 변수 설정, 실행 방법, 폴더 구조를 포함. 마크다운 형식" 수정 요청 4회 → 1회
테스트 "테스트 코드 만들어줘" "auth.service.ts의 login() 함수에 대한 단위 테스트를 Jest로 작성해줘. 정상 로그인, 잘못된 비밀번호, 존재하지 않는 사용자, 토큰 만료 케이스 포함" 엣지케이스 누락 0건

프롬프트 체이닝 — 복잡한 작업을 단계별로

하나의 긴 프롬프트보다 여러 프롬프트를 연결하는 것이 더 정확하고 빠릅니다.

graph TD A["프롬프트 1\n'이 프로젝트 구조를 분석해줘'"] -->|"컨텍스트 확보"| B["프롬프트 2\n'위 구조를 기반으로\nAPI 엔드포인트를 설계해줘'"] B -->|"설계 완료"| C["프롬프트 3\n'위 설계대로\n코드를 구현해줘'"] C -->|"구현 완료"| D["프롬프트 4\n'구현한 코드의\n테스트를 작성해줘'"] style A fill:#4a9eff,color:#fff style B fill:#ff9800,color:#fff style C fill:#9c27b0,color:#fff style D fill:#4caf50,color:#fff
패턴방법적합한 상황
분석 → 구현 "먼저 분석해줘" → "분석 결과대로 구현해줘" 기존 코드를 이해한 후 수정할 때
설계 → 구현 → 테스트 "설계해줘" → "구현해줘" → "테스트 작성해줘" 새 기능 개발 시
에러 → 분석 → 수정 → 검증 "에러 분석해줘" → "수정해줘" → "다시 테스트해줘" 디버깅 시
스캐폴드 → 디테일 "전체 구조를 잡아줘" → "각 함수를 상세 구현해줘" 대규모 구현 시

B. 자동화 워크플로우 — 반복 작업을 제로로

CLAUDE.md 최적화 — 매번 반복 설명 제거

매 세션마다 "이 프로젝트는..."이라고 설명하는 시간을 CLAUDE.md로 제거합니다.

# CLAUDE.md — 업무 능률 최적화 버전

## 프로젝트
- Next.js 14 + TypeScript + Prisma + PostgreSQL
- 팀: 프론트 3명, 백엔드 2명, PM 1명

## 코딩 규칙 (AI가 자동 적용)
- TypeScript strict 모드 필수
- 함수형 컴포넌트 + React Hook 사용
- CSS: Tailwind CSS만 사용 (인라인 스타일 금지)
- API: RESTful 패턴, 에러는 try-catch + 커스텀 에러 클래스
- 테스트: Jest + React Testing Library, 커버리지 80% 이상

## 금지 사항
- any 타입 사용 금지
- console.log 커밋 금지
- 하드코딩된 문자열 금지 (상수 파일로 분리)

## 자주 쓰는 명령
- 개발 서버: npm run dev
- 테스트: npm test
- 빌드: npm run build
- 린트: npm run lint
효과: CLAUDE.md를 잘 작성해두면 매 세션마다 5~10분의 컨텍스트 설명 시간을 절약합니다. 하루 5세션이면 하루 30~50분 절약입니다.

Hooks 실전 레시피 — 자동 품질 관리

자동화 목표Hook 설정효과
파일 저장 시 자동 린트 PostToolUse + Write|Editeslint --fix 코드 스타일 자동 교정, 린트 오류 즉시 수정
세션 시작 시 프로젝트 로드 SessionStartgit status + 최근 변경 요약 매번 "어디까지 했지?" 확인 불필요
커밋 전 자동 테스트 PreToolUse + Bash(git commit)npm test 테스트 실패한 코드 커밋 방지
위험 명령 경고 PreToolUse + Bash(rm|drop|delete)확인 메시지 실수로 파일/DB 삭제 방지
// .claude/settings.json — 능률 극대화 Hooks 설정
{
  "hooks": {
    "SessionStart": [{
      "command": "echo '=== 프로젝트 상태 ===' && git status --short && echo '=== 최근 커밋 ===' && git log --oneline -3"
    }],
    "PostToolUse": [{
      "matcher": "Write|Edit",
      "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
    }],
    "PreToolUse": [{
      "matcher": "Bash(git commit*)",
      "command": "npm test --silent 2>/dev/null || echo '⚠️ 테스트 실패! 커밋 전 확인 필요'"
    }]
  }
}

스킬 조합 워크플로우 — 파이프라인 패턴

개별 스킬을 순서대로 조합하면 완전한 자동화 파이프라인이 됩니다.

graph LR subgraph Pipeline1["기능 개발 파이프라인"] P1["/pdca plan\n계획 수립"] --> P2["/pdca design\n설계"] P2 --> P3["바이브 코딩\n구현"] P3 --> P4["/pdca analyze\nGap 검증"] P4 --> P5["/simplify\n코드 정리"] P5 --> P6["/commit\n저장"] end subgraph Pipeline2["코드 리뷰 파이프라인"] R1["/review\nAI 1차 리뷰"] --> R2["수정 적용"] R2 --> R3["/simplify\n코드 정리"] R3 --> R4["/commit\n저장"] end subgraph Pipeline3["장애 대응 파이프라인"] E1["에러 로그\n붙여넣기"] --> E2["근본 원인\n분석"] E2 --> E3["수정 적용"] E3 --> E4["테스트\n검증"] E4 --> E5["/commit\n핫픽스"] end style Pipeline1 fill:#e8f4fd,stroke:#4a9eff style Pipeline2 fill:#fff8e1,stroke:#ff9800 style Pipeline3 fill:#ffebee,stroke:#f44336

MCP 서버 조합 — 업무별 최적 세트

업무 유형추천 MCP 세트활용 시나리오
웹 개발 Playwright + Filesystem 코딩 → 브라우저 자동 테스트 → 스크린샷 비교
데이터 분석 PostgreSQL MCP + Filesystem DB 직접 쿼리 → 결과 분석 → 차트 생성
PM 업무 Gmail MCP + Slack MCP 이슈 수집 → 보고서 작성 → 메일/슬랙 공유
풀스택 개발 Playwright + DB MCP + Filesystem API 개발 → DB 검증 → UI 테스트 → 전체 연동

C. 대규모 작업 전략 — 큰 작업을 빠르고 안전하게

Plan Mode — 실행 전에 계획부터

복잡한 작업은 바로 코딩하지 말고, Plan Mode로 계획을 먼저 세우고 승인 후 실행합니다.

상황Plan Mode 사용바로 실행
파일 5개 이상 수정 Plan Mode 사용 (권장)
아키텍처 변경 Plan Mode 필수
버그 수정 (1~2 파일) 바로 실행 (효율적)
문서/주석 추가 바로 실행 (안전)
프롬프트: Plan Mode 활용 예시
(Shift+Tab으로 Plan Mode 진입 후)

사용자 인증 시스템을 JWT 기반으로 전환해줘.

고려사항:
- 현재 세션 기반 인증 → JWT Access/Refresh 토큰
- 영향 받는 파일: auth.js, middleware.js, 모든 API 라우트
- 기존 로그인 사용자의 세션 호환성 유지
- 보안: 토큰 만료, 리프레시 로직, CSRF 보호

먼저 수정 계획을 세우고 보여줘. 승인 후에 실행할게.

Sub-Agent 최적 분배 전략

graph TD A{"작업 규모\n판단"} --> B["소규모\n파일 1~3개"] A --> C["중규모\n파일 4~10개"] A --> D["대규모\n파일 10개+"] B --> B1["Main Agent\n직접 처리\n(Sub-Agent 불필요)"] C --> C1["Sub-Agent 2~3개\n영역별 분담\n(프론트/백엔드/테스트)"] D --> D1["Sub-Agent 4~5개\n+ Phase 분할\n+ Phase별 커밋"] style B fill:#4caf50,color:#fff style C fill:#ff9800,color:#fff style D fill:#f44336,color:#fff
작업 유형추천 Sub-Agent 구성분배 기준
프론트엔드 기능 Agent 1: 컴포넌트
Agent 2: 스타일
Agent 3: 테스트
관심사 분리 (UI/스타일/테스트)
API 개발 Agent 1: 라우트/컨트롤러
Agent 2: 서비스/모델
Agent 3: 테스트/문서
레이어별 분리 (표현/비즈니스/검증)
코드 마이그레이션 Agent 1~4: 폴더별 할당
Agent 5: 통합 검증
폴더별 분리 (독립 작업 가능 단위)
문서 일괄 생성 Agent 1: API 문서
Agent 2: 가이드
Agent 3: CHANGELOG
문서 유형별 분리

컨텍스트 관리 — 대화가 길어질 때

상황해결 방법명령어
대화가 길어져 AI 응답이 느려짐 대화 내용 압축 (기억은 유지) /compact
완전히 새로운 작업 시작 대화 초기화 (깨끗한 상태) /clear
작업 A 끝나고 작업 B 시작 작업 A 커밋 → /compact → 작업 B 시작 /commit/compact
비용이 많이 나가는 느낌 현재 세션 비용 확인 /cost
비용 최적화 팁:
  • /compact를 적극 활용하면 동일 세션에서 토큰 사용량 30~50% 절감
  • 큰 파일 전체를 읽게 하지 말고, 관련 부분만 지정: "auth.js의 login 함수만 봐줘"
  • 반복 프롬프트는 CLAUDE.md에 정의하여 매번 재입력 방지
  • Plan Mode로 불필요한 수정-되돌리기 반복 방지

D. 하루 업무에 적용하는 Claude Code 루틴

graph TD subgraph Morning["오전 루틴"] M1["세션 시작\nCLAUDE.md 자동 로드"] --> M2["git status 확인\n어제 작업 이어받기"] M2 --> M3["Plan Mode\n오늘 할 작업 설계"] M3 --> M4["Sub-Agent 병렬 구현\n핵심 기능 개발"] end subgraph Afternoon["오후 루틴"] A1["/review\n오전 작업 AI 리뷰"] --> A2["리뷰 피드백 반영\n코드 수정"] A2 --> A3["MCP Playwright\n화면 테스트"] A3 --> A4["/simplify\n코드 품질 정리"] end subgraph Evening["마감 루틴"] E1["/commit\n변경사항 저장"] --> E2["/pdca report\n일일 작업 보고서"] E2 --> E3["/cost\n비용 확인"] E3 --> E4["/compact\n내일을 위한 정리"] end M4 --> A1 A4 --> E1 style Morning fill:#e8f4fd,stroke:#4a9eff style Afternoon fill:#fff8e1,stroke:#ff9800 style Evening fill:#e8f5e9,stroke:#4caf50
시간대활동사용 도구소요 시간
09:00 세션 시작, 프로젝트 상태 파악 SessionStart Hook, git status 1분 (자동)
09:05 오늘 작업 계획 수립 Plan Mode / /pdca plan 5~10분
09:15 핵심 기능 구현 (집중 시간) 바이브 코딩, Sub-Agent 2~3시간
12:00 오전 작업 중간 커밋 /commit 1분
13:00 코드 리뷰 + 품질 개선 /review/simplify 30분
14:00 테스트 + 검증 MCP Playwright, /pdca analyze 30분
15:00 추가 기능 / 버그 수정 바이브 코딩, 프롬프트 체이닝 2시간
17:00 최종 커밋 + 보고서 + 비용 확인 /commit/pdca report/cost 5분

E. 업무별 능률 비교 — Before & After

일상 업무 수동 처리 Claude Code 활용 절약 시간
새 기능 코드 작성 2~4시간 10~20분 (바이브 코딩 + 반복 개선) ~90%
코드 리뷰 30~60분/PR 5분 (/review로 1차 자동 리뷰) ~85%
버그 디버깅 1~4시간 5~15분 (에러 로그 분석 + 근본 원인 추적) ~90%
테스트 코드 작성 1~2시간 5~10분 (엣지케이스 포함 자동 생성) ~90%
API 문서 작성 2~3시간 5분 (코드에서 자동 추출) ~95%
코드 리팩토링 1~3일 1~2시간 (Sub-Agent 병렬 처리) ~90%
환경 설정 / 트러블슈팅 30분~2시간 2~5분 (에러 메시지 붙여넣기) ~95%
회의록 정리 30~60분 3분 (텍스트 붙여넣기 → 구조화) ~95%
PR 설명 작성 15~30분 1분 (diff 분석 → 자동 생성) ~95%
보안 취약점 점검 2~3일 (전문가) 10분 (security-reviewer 자동 스캔) ~98%
graph LR subgraph Before["수동 업무 (하루 8시간)"] B1["코딩 4h"] --> B2["리뷰 1h"] B2 --> B3["디버깅 1.5h"] B3 --> B4["문서 1h"] B4 --> B5["기타 0.5h"] end subgraph After["Claude Code 활용 (하루 8시간)"] A1["코딩 1h"] --> A2["리뷰 0.5h"] A2 --> A3["디버깅 0.5h"] A3 --> A4["문서 0.5h"] A4 --> A5["추가 기능\n개발 5.5h"] end style Before fill:#ffebee,stroke:#f44336 style After fill:#e8f5e9,stroke:#4caf50
핵심 변화: Claude Code를 활용하면 기존에 하루 1개 기능을 만들던 속도가 하루 3~5개 기능으로 늘어납니다. 절약된 시간은 "더 많은 코딩"이 아니라 "더 나은 설계, 더 깊은 사고, 더 많은 검증"에 투자하는 것이 최고의 활용법입니다.

능률 극대화 실습 과제

다음 세팅을 직접 적용하고 체감 효과를 확인해보세요:

  1. 프로젝트에 CLAUDE.md 작성 — 코딩 규칙, 기술 스택, 자주 쓰는 명령 정리
  2. Hooks 설정 — SessionStart에 git status, PostToolUse에 eslint 자동 실행
  3. 골든 프롬프트 연습 — 5요소(역할+컨텍스트+지시+형식+제약) 적용해서 코드 생성
  4. 스킬 파이프라인 실행 — 구현 → /review/simplify/commit
  5. /cost로 비용 확인 — 하루 작업 후 사용량 모니터링
  6. Before/After 비교 — 동일 작업을 Claude Code 유무로 시간 측정해보기
능률 극대화의 역설: AI 도구가 빠르다고 해서 검증을 생략하면 안 됩니다. 빠르게 만들고, 빠르게 검증하고, 빠르게 개선하는 "빠른 반복의 품질"이 진정한 능률입니다. 속도만 추구하면 나중에 더 큰 시간을 디버깅에 쓰게 됩니다.
← 이전 5. 바이브 코딩 심화 다음 →