실무 워크플로우 + 프롬프트 쿡북 완전판
단순히 AI에게 코드를 맡기는 시대는 끝났습니다. LLM을 좀 더 효율적으로 사용하고 최적화된 결과물을 만들기 위해 다양한 LLM을 사용하는 기법을 공유 드립니다. 사실 개발은 아는 만큼 퀄리티가 달라지는 분야이기 때문에 설계와 리뷰, 보안까지 LLM을 얼마나 효율적으로 사용하느냐에 따라 결과물이 달라집니다.
이제는 설계 → 구현 → 리뷰 → 개선 → 문서화 전체 개발 사이클에 AI를 배치하는 사람이 더 빠르고 더 좋은 코드를 만듭니다.
목차
- 왜 Claude, Cursor, ChatGPT를 함께 써야 할까?
- 실제 워크플로우 (9 Steps)
- CLAUDE.md 템플릿
- Cursor Rules 템플릿
- 실전 프롬프트 쿡북
- AI 코드 리뷰 프롬프트 50선
- 최종 워크플로우 요약
- 결론
1. 왜 Claude, Cursor, ChatGPT를 함께 써야 할까?
많은 개발자가 묻습니다.
"Claude가 좋나요?" "ChatGPT가 좋나요?" "Cursor만 써도 되지 않나요?"
실제 생산성이 높은 개발자들은 하나만 사용하지 않습니다. 각 도구의 강점을 역할별로 분리합니다.
| 도구 | 역할 | 가장 잘하는 일 |
|---|---|---|
| ChatGPT | Tech Lead | 요구사항 분석, 설계 검증, 아키텍처 리뷰 |
| Claude Code | Senior Engineer | 구현, 리팩토링, 대규모 코드 수정, 테스트 생성 |
| Cursor | Pair Programmer | IDE 내 코드 생성, 반복 수정, 빠른 패턴 적용 |
AI를 개발팀 구성원처럼 생각하면 쉽습니다. 다양한 LLM을 사용한다면 좀 더 최적화되 결과를 얻을 수 있습니다.
2. 실제 워크플로우 (9 Steps)
STEP 1 — ChatGPT로 요구사항 정리
개발 시작 전 가장 먼저 하는 작업입니다.
다음 요구사항을 분석해줘.
목표: JWT 인증 서버 구현
요구사항:
- Spring Boot
- Redis Refresh Token
- Access Token 30분
- Refresh Token 14일
- OAuth2 확장 가능
먼저 구현 계획을 작성하고,
놓친 부분이 있다면 지적해줘.
얻는 결과: 구현 범위 정리 / 누락된 요구사항 발견 / API 목록 정리 / DB 구조 제안 / 위험 요소 분석
STEP 2 — ChatGPT에게 설계 검증받기
설계를 직접 만들었다면 바로 구현하지 않습니다.
시니어 백엔드 엔지니어 관점에서 검토해줘.
확장성 / 성능 / 보안 / 유지보수성 관점에서 비판적으로 분석해줘.
좋은 점은 말하지 말고, 문제점만 찾아줘.
팁: "좋은 점은 말하지 말고"를 추가하면 AI가 훨씬 공격적으로 리뷰합니다.
STEP 3 — Claude Code에게 구현 맡기기
설계가 끝났다면 구현은 Claude Code에게 맡깁니다. Claude는 특히 대규모 코드 생성, 파일 간 참조, 리팩토링, 테스트 코드 생성에서 강력합니다.
Claude 성능을 높이는 3가지 방법
① 역할 부여
당신은 15년차 시니어 백엔드 엔지니어입니다.
Clean Architecture를 준수하며
유지보수성과 테스트 가능성을 최우선으로 고려하세요.
② APEI 방식 사용
1. Analyze — 요구사항과 현재 코드를 분석해줘
2. Plan — 구현 계획을 먼저 정리해줘
3. Execute — 계획대로 구현해줘
4. Iterate — 결과를 검토하고 개선해줘
③ 목표를 수치로 제시
목표:
- TPS 1000 이상
- 응답속도 100ms 이하
- 테스트 커버리지 80% 이상
- 유지보수성 고려
위 조건을 만족하도록 구현해줘.
STEP 4 — Cursor에서 빠르게 수정
Claude가 생성한 코드를 Cursor에서 마무리합니다. IDE 안에서 직접 작동하기 때문에 반복 작업 효율이 높습니다.
이 파일의 로그를 전부 구조화 로그로 변경해줘.
예외 처리 패턴을 통일해줘.
모든 API에 Swagger Annotation 추가해줘.
STEP 5 — ChatGPT에게 코드 리뷰 맡기기
구현 후 반드시 수행합니다.
이 코드를 리뷰해줘.
관점: 성능 / 보안 / 유지보수성 / 확장성
좋은 점은 제외하고 문제점만 찾아줘.
강력한 추가 프롬프트:
# Grill Me
이 변경사항을 가차없이 비판해줘.
# 10x Engineer
10배 뛰어난 엔지니어라면 무엇을 다르게 했을까?
STEP 6 — Claude에게 개선시키기
ChatGPT가 발견한 문제를 Claude에게 전달합니다. 이 과정을 2~3번 반복하면 코드 품질이 크게 향상됩니다.
다음 리뷰 내용을 반영해서 개선해줘.
[리뷰 내용 붙여넣기]
STEP 7 — Git Diff 기반 리뷰
git diff main..feature/my-branch
결과를 그대로 AI에 전달합니다.
# Claude에게
변경사항을 리뷰해줘.
# ChatGPT에게
이 PR을 리뷰한다고 생각하고 문제점만 찾아줘.
STEP 8 — AI 시대의 TDD
구현보다 테스트를 먼저 작성시킵니다.
# 1단계
구현하지 말고 테스트 코드만 먼저 작성해줘.
# 2단계
이 테스트를 통과하는 구현을 작성해줘.
AI와 TDD의 궁합은 생각보다 매우 좋습니다.
STEP 9 — 문서화 자동화
README 작성해줘.
ADR(Architecture Decision Record) 문서 작성해줘.
운영 가이드 작성해줘.
API 문서 작성해줘.
변경사항 기반으로 CHANGELOG 업데이트해줘.
3. CLAUDE.md 템플릿
Claude Code 사용자라면 사실상 필수입니다. 프로젝트 루트에 CLAUDE.md 파일을 생성하면, Claude가 세션 시작 시 자동으로 읽어 프로젝트 전체 일관성을 유지합니다.
# Project Rules for Claude
## Project Overview
- 프로젝트명: [프로젝트명]
- 언어/프레임워크: [예: Java 17 / Spring Boot 3.x]
- 목표: [핵심 목표 1~2줄]
## Architecture
- Clean Architecture 준수 (Controller → Service → Repository 레이어 분리)
- Service Layer 필수 — Controller에서 비즈니스 로직 금지
- Repository 직접 접근 금지 (반드시 Service 경유)
- Domain 객체는 불변(Immutable) 설계 원칙
## Naming Conventions
- DTO 클래스: `XxxRequest`, `XxxResponse` 접미사 사용
- Service 인터페이스 + 구현체 분리: `XxxService` / `XxxServiceImpl`
- Command Query 분리 (CQRS 패턴 적용)
- 상수는 `UPPER_SNAKE_CASE`, 변수는 `camelCase`
## Code Style
- 함수 최대 길이: 30줄 이하
- 중첩 if-else 3단계 이상 금지 → Early Return 패턴 사용
- Magic Number 사용 금지 → 상수로 분리
- 주석은 "무엇"이 아닌 "왜"를 설명
## Testing
- 모든 Service 메서드 단위 테스트 필수
- 모든 API 엔드포인트 Integration Test 작성
- 테스트 커버리지 목표: 80% 이상
- 테스트 네이밍: `메서드명_상황_기대결과` 형식
## Error Handling
- Custom Exception 사용 (`BusinessException`, `ValidationException` 등)
- 전역 예외 처리: `@ControllerAdvice` 활용
- API 에러 응답 포맷 통일: `{ code, message, data }` 구조
## Logging
- Structured Logging 사용 (JSON 형식)
- 로그 레벨 기준: ERROR(장애), WARN(이상징후), INFO(주요 흐름), DEBUG(개발용)
- PII(개인정보) 로그 출력 금지
## Security
- SQL Injection 방지: PreparedStatement 또는 ORM 파라미터 바인딩만 사용
- XSS 방지: 입력값 검증 및 출력 인코딩
- 시크릿 키, 패스워드 하드코딩 절대 금지 → 환경변수 또는 Vault 사용
## Performance
- N+1 문제 방지: Fetch Join 또는 별도 쿼리로 해결
- 페이지네이션 필수: 목록 조회 API에 Cursor 기반 페이지네이션 적용
- 캐싱 전략: Redis TTL 명시 필수
## Documentation
- 모든 Public API에 Swagger/OpenAPI 어노테이션 필수
- 복잡한 비즈니스 로직에 ADR(Architecture Decision Record) 작성
- README는 항상 최신 상태 유지
4. Cursor Rules 템플릿
프로젝트 루트에 .cursorrules 파일을 생성합니다. Cursor가 자동으로 읽어 코드 생성 품질을 높여줍니다.
# Cursor Rules
## Role
You are a Senior Software Engineer with 15+ years of experience.
Always prioritize: correctness > readability > performance > brevity.
## Code Generation Principles
- Write self-documenting code; minimize comments except for "why" explanations
- Prefer composition over inheritance
- Follow SOLID principles
- Apply DRY but avoid premature abstraction
- Always handle edge cases and error conditions
## Language-Specific Rules (Java/Spring)
- Use constructor injection, not field injection (@Autowired 금지)
- Return Optional<T> instead of null for nullable values
- Use records for immutable DTOs
- Prefer stream API over imperative loops for collection processing
- Always use @Transactional(readOnly = true) for read operations
## Language-Specific Rules (TypeScript/React)
- Use functional components with hooks only (no class components)
- Define explicit TypeScript types; avoid `any`
- Use React Query for server state, Zustand for client state
- Apply error boundaries for async component errors
- Prefer named exports over default exports
## Testing Rules
- Write tests first when implementing new features (TDD)
- One assertion per test case (or logically grouped)
- Use descriptive test names: given_when_then format
- Mock external dependencies (DB, API calls) in unit tests
- Use real DB in integration tests (Testcontainers)
## Refactoring Rules
- Never change behavior when refactoring; tests must pass before and after
- Extract method when function exceeds 20 lines
- Replace magic numbers/strings with named constants
- Eliminate code duplication > 3 occurrences
## PR / Commit Rules
- Commit messages: feat / fix / refactor / test / docs / chore prefix 사용
- One logical change per commit
- PR description: 변경 이유(Why) → 변경 내용(What) → 테스트 방법(How to Test)
## Output Format
- Always include necessary imports
- Show complete, runnable code (no placeholder comments like "// TODO: implement")
- If multiple approaches exist, briefly note the trade-offs
- Flag potential security issues immediately
5. 실전 프롬프트 쿡북
설계 & 아키텍처
# 기술 스택 선택
[요구사항]을 구현하는 데 적합한 기술 스택을 추천해줘.
각 선택지의 장단점을 표로 정리하고, 최종 추천 이유를 설명해줘.
# 아키텍처 설계
[시스템명]의 아키텍처를 설계해줘.
- 예상 트래픽: DAU [N]명, TPS [N]
- 핵심 제약: [레이턴시 / 비용 / 확장성 우선순위]
다이어그램 설명 + 각 컴포넌트 선택 이유를 포함해줘.
# 데이터베이스 설계
[도메인]의 ERD를 설계해줘.
정규화 수준, 인덱스 전략, 파티셔닝 고려사항을 포함해줘.
# API 설계
RESTful API 설계 원칙에 따라 [기능]의 API 명세를 작성해줘.
엔드포인트, HTTP 메서드, 요청/응답 스키마, 에러 코드를 포함해줘.
구현
# 기능 구현 (상세)
[기능명]을 구현해줘.
- 언어/프레임워크: [예: Java 17 / Spring Boot 3]
- 아키텍처 패턴: [Clean Architecture / Hexagonal]
- 비기능 요구사항: TPS [N], 응답속도 [N]ms 이하
- 테스트 코드 포함
- 에러 처리 포함
# 리팩토링
아래 코드를 리팩토링해줘.
[코드 붙여넣기]
- 가독성 향상
- 중복 제거
- SOLID 원칙 적용
변경 전/후 비교와 이유를 설명해줘.
# 성능 최적화
아래 코드의 성능 병목을 찾아 최적화해줘.
[코드 붙여넣기]
예상 개선 효과(Big-O 기준)와 트레이드오프를 명시해줘.
# 마이그레이션
[기존 코드/라이브러리]를 [신규 코드/라이브러리]로 마이그레이션해줘.
단계별 전환 전략과 롤백 계획을 포함해줘.
테스트
# 단위 테스트 생성
아래 코드의 단위 테스트를 작성해줘.
[코드 붙여넣기]
- Happy Path, Edge Case, Exception Case 모두 포함
- 테스트 프레임워크: [JUnit5 / Jest / pytest]
- Mocking 전략 설명 포함
# 통합 테스트 생성
[API 엔드포인트]의 통합 테스트를 작성해줘.
- 실제 DB 사용 (Testcontainers)
- 인증/인가 시나리오 포함
- 데이터 셋업/정리 코드 포함
# 테스트 커버리지 분석
아래 테스트 코드를 분석하고 누락된 케이스를 찾아줘.
[테스트 코드 붙여넣기]
추가해야 할 테스트 목록을 우선순위 순으로 정리해줘.
# 부하 테스트 시나리오
[API명]의 부하 테스트 시나리오를 작성해줘.
- 도구: [k6 / JMeter / Locust]
- 목표: TPS [N], 응답시간 P99 [N]ms 이하
- 점진적 부하 증가 시나리오 포함
보안
# 보안 취약점 점검
아래 코드의 보안 취약점을 OWASP Top 10 기준으로 분석해줘.
[코드 붙여넣기]
취약점별 위험도(High/Medium/Low)와 수정 방법을 제시해줘.
# 인증/인가 설계
[시스템]의 인증/인가 시스템을 설계해줘.
- JWT vs Session 비교
- RBAC vs ABAC 선택 기준
- Refresh Token 보안 전략
- OAuth2/OIDC 통합 방안
# 암호화 전략
[데이터]의 암호화 전략을 수립해줘.
저장 데이터(at-rest)와 전송 데이터(in-transit) 모두 포함해줘.
디버깅
# 에러 분석
아래 에러 로그를 분석하고 원인과 해결책을 제시해줘.
[에러 로그 붙여넣기]
재발 방지 방법도 포함해줘.
# 성능 분석
아래 APM/프로파일링 결과를 분석하고 개선 방안을 제시해줘.
[프로파일링 결과 붙여넣기]
# N+1 문제 찾기
아래 코드에서 N+1 쿼리 문제를 찾아줘.
[코드 붙여넣기]
최적화된 쿼리로 수정해줘.
📚 문서화
# README 생성
아래 코드/프로젝트의 README.md를 작성해줘.
[코드/설명 붙여넣기]
포함 항목: 프로젝트 개요, 설치 방법, 사용법, API 레퍼런스, 기여 방법, 라이선스
# ADR 작성
[기술 결정명]에 대한 ADR(Architecture Decision Record)을 작성해줘.
포함 항목: 배경, 결정 사항, 고려한 대안, 결과, 트레이드오프
# 기술 부채 문서화
아래 코드의 기술 부채를 분석하고 문서화해줘.
[코드 붙여넣기]
부채 항목별 영향도, 해결 비용, 우선순위를 표로 정리해줘.
# 운영 가이드 작성
[서비스명]의 운영 가이드를 작성해줘.
포함 항목: 배포 절차, 모니터링 항목, 알람 기준, 장애 대응 플레이북, 롤백 방법
6. AI 코드 리뷰 프롬프트 50선
🔍 일반 리뷰 (1–10)
1. 이 코드를 시니어 엔지니어 관점에서 리뷰해줘. 좋은 점은 제외하고 문제점만.
2. 이 PR을 머지하기 전에 반드시 확인해야 할 사항을 찾아줘.
3. 이 코드에서 6개월 후 유지보수할 때 문제가 될 부분을 찾아줘.
4. 이 코드를 처음 보는 개발자가 이해하기 어려운 부분을 찾아줘.
5. Grill Me — 이 코드를 가차없이 비판해줘.
6. 10x 엔지니어라면 이 코드를 어떻게 다르게 작성했을까?
7. 이 코드의 복잡도(Cyclomatic Complexity)가 높은 부분을 찾고 단순화 방법을 제시해줘.
8. 이 코드에서 SOLID 원칙을 위반한 부분을 찾아줘.
9. 이 코드에서 DRY 원칙을 위반한 중복 코드를 찾아줘.
10. 이 코드의 의존성 구조를 분석하고 순환 의존성이 있는지 확인해줘.
성능 리뷰 (11–20)
11. 이 코드에서 성능 병목이 될 수 있는 부분을 찾아줘.
12. 이 코드에서 불필요한 DB 쿼리가 발생하는 부분을 찾아줘. (N+1 포함)
13. 이 코드에서 메모리 누수가 발생할 수 있는 부분을 찾아줘.
14. 이 코드에서 캐싱을 적용하면 효과적인 부분을 찾아줘.
15. 이 코드에서 비동기 처리로 개선 가능한 부분을 찾아줘.
16. 이 코드에서 인덱스가 제대로 활용되지 않는 쿼리를 찾아줘.
17. 이 코드에서 GC 압박을 줄이기 위해 개선할 부분을 찾아줘.
18. 이 코드에서 커넥션 풀 고갈이 발생할 수 있는 패턴을 찾아줘.
19. 이 코드의 시간 복잡도를 분석하고 더 효율적인 알고리즘을 제안해줘.
20. 이 코드에서 불필요한 직렬화/역직렬화가 발생하는 부분을 찾아줘.
보안 리뷰 (21–30)
21. 이 코드를 OWASP Top 10 기준으로 보안 취약점을 분석해줘.
22. 이 코드에서 SQL Injection 취약점이 있는 부분을 찾아줘.
23. 이 코드에서 인증/인가가 누락된 API 엔드포인트를 찾아줘.
24. 이 코드에서 민감 정보(PII, 비밀번호, 토큰)가 로그에 노출되는 부분을 찾아줘.
25. 이 코드에서 하드코딩된 시크릿이나 자격증명을 찾아줘.
26. 이 코드에서 XSS 취약점이 발생할 수 있는 부분을 찾아줘.
27. 이 코드에서 CSRF 방어가 미흡한 부분을 찾아줘.
28. 이 코드에서 Race Condition이 발생할 수 있는 부분을 찾아줘.
29. 이 코드에서 입력값 검증이 누락된 부분을 찾아줘.
30. 이 코드에서 에러 메시지가 내부 정보를 과도하게 노출하는 부분을 찾아줘.
설계 리뷰 (31–40)
31. 이 코드의 레이어 분리가 적절한지 검토해줘.
32. 이 코드에서 서비스 레이어가 과도하게 비대해진 부분을 찾아줘. (God Class 패턴)
33. 이 코드에서 도메인 로직이 잘못된 레이어에 위치한 부분을 찾아줘.
34. 이 코드의 확장성을 평가해줘. 요구사항이 10배 증가하면 어디가 문제가 될까?
35. 이 코드에서 전략 패턴, 팩토리 패턴 등 디자인 패턴을 적용하면 좋을 부분을 찾아줘.
36. 이 코드의 트랜잭션 경계가 올바르게 설정되어 있는지 검토해줘.
37. 이 코드에서 단일 책임 원칙(SRP)을 위반한 클래스/함수를 찾아줘.
38. 이 코드의 에러 처리 전략이 일관되게 적용되었는지 검토해줘.
39. 이 코드의 API 계약(Contract)이 변경에 안전한지 평가해줘.
40. 이 코드에서 이벤트 기반 아키텍처로 개선하면 좋은 부분을 찾아줘.
테스트 리뷰 (41–50)
41. 이 테스트 코드에서 누락된 케이스를 찾아줘. (Edge Case, Exception 중심)
42. 이 테스트가 실제로 의미 있는 검증을 하고 있는지 평가해줘. (False Positive 점검)
43. 이 테스트에서 테스트 간 의존성(순서 의존, 전역 상태 공유)이 있는지 찾아줘.
44. 이 테스트 코드의 가독성을 개선해줘. (Arrange-Act-Assert 패턴 적용)
45. 이 코드에서 단위 테스트가 불가능한 구조를 찾아줘. 테스트 가능하게 리팩토링 방법을 제안해줘.
46. 이 Mocking 전략이 적절한지 평가해줘. Over-mocking 또는 Under-mocking 여부 확인.
47. 이 테스트의 실행 속도를 개선할 수 있는 부분을 찾아줘.
48. 이 테스트가 비결정론적(Flaky)하게 동작할 수 있는 부분을 찾아줘.
49. 이 코드의 테스트 커버리지를 분석하고 반드시 추가해야 할 테스트를 우선순위 순으로 정리해줘.
50. 이 통합 테스트가 실제 운영 환경을 충분히 재현하고 있는지 평가해줘.
7. 최종 워크플로우 요약
1. ChatGPT → 요구사항 분석 및 누락 사항 확인
2. ChatGPT → 설계 검증 (문제점만 찾아줘)
3. Claude Code → CLAUDE.md 기반 구현
4. Claude Code → TDD — 테스트 먼저, 구현 나중
5. Cursor → IDE 내 반복 수정 및 패턴 통일
6. ChatGPT → 코드 리뷰 (Grill Me / 10x Engineer)
7. Claude Code → 리뷰 반영 개선 (2~3회 반복)
8. Git Diff → Claude + ChatGPT 동시 PR 리뷰
9. AI → README / ADR / 운영가이드 문서화
8. 결론
AI는 개발자를 대체하지 않습니다.
하지만 AI를 잘 사용하는 개발자는 AI를 사용하지 않는 개발자를 대체할 가능성이 높습니다.
중요한 것은 어떤 모델이 더 뛰어난가가 아닙니다. 더 중요한 것은:
- ChatGPT로 생각하고-Claude로 구현하고-Cursor로 생산성을 높이고-다시 ChatGPT로 검증하는
개발 프로세스를 만드는 것입니다.
AI를 코드 자동완성 도구로만 사용하지 말고, 설계자 · 리뷰어 · 시니어 엔지니어로 활용해 보세요.
생산성이 완전히 달라집니다.
요약 (LinkedIn / SNS용)
✔ ChatGPT → 요구사항 분석 및 설계 검증
✔ Claude Code → 구현 및 리팩토링 (CLAUDE.md로 일관성 확보)
✔ Cursor → IDE 내 생산성 향상 (.cursorrules 활용)
✔ ChatGPT → 코드 리뷰 및 최종 검증
✔ AI 코드 리뷰 프롬프트 50선 → 품질 기준 표준화
AI 하나를 선택하는 시대가 아니라, AI 팀을 구성하는 시대가 왔습니다.
#AI #ClaudeCode #ChatGPT #Cursor #SoftwareEngineering #DeveloperProductivity #Coding #Programming #GenerativeAI #PromptEngineering