backend-claude-code 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.claude/settings.json +42 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +33 -0
  4. package/.github/PULL_REQUEST_TEMPLATE.md +32 -0
  5. package/.mcp.json +19 -0
  6. package/CLAUDE.md +126 -0
  7. package/README.md +142 -0
  8. package/agents/code-reviewer.md +84 -0
  9. package/agents/database-reviewer.md +91 -0
  10. package/agents/java-build-resolver.md +127 -0
  11. package/agents/java-performance-reviewer.md +262 -0
  12. package/agents/planner.md +99 -0
  13. package/agents/security-reviewer.md +119 -0
  14. package/agents/tdd-guide.md +189 -0
  15. package/bin/cli.js +144 -0
  16. package/commands/db-migrate.md +134 -0
  17. package/commands/dev-build.md +72 -0
  18. package/commands/dev-coverage.md +73 -0
  19. package/commands/dev-fix.md +75 -0
  20. package/commands/dev-plan.md +501 -0
  21. package/commands/dev-review.md +144 -0
  22. package/commands/dev-run.md +385 -0
  23. package/commands/dev-test.md +89 -0
  24. package/commands/dev-verify.md +95 -0
  25. package/commands/dev.md +45 -0
  26. package/commands/git-commit.md +112 -0
  27. package/commands/git-issue.md +74 -0
  28. package/commands/git-pr.md +184 -0
  29. package/commands/git-push.md +28 -0
  30. package/package.json +24 -0
  31. package/rules/architecture.md +33 -0
  32. package/rules/coding-style.md +113 -0
  33. package/rules/controller-patterns.md +63 -0
  34. package/rules/dto-patterns.md +76 -0
  35. package/rules/entity-patterns.md +70 -0
  36. package/rules/error-handling.md +56 -0
  37. package/rules/hooks.md +73 -0
  38. package/rules/repository-patterns.md +75 -0
  39. package/rules/security.md +101 -0
  40. package/rules/service-patterns.md +70 -0
  41. package/rules/testing.md +174 -0
  42. package/skills/api-design/SKILL.md +523 -0
  43. package/skills/architecture-decision-records/SKILL.md +179 -0
  44. package/skills/database-migrations/SKILL.md +429 -0
  45. package/skills/hexagonal-architecture/SKILL.md +276 -0
  46. package/skills/java-coding-standards/SKILL.md +236 -0
  47. package/skills/jpa-patterns/SKILL.md +218 -0
  48. package/skills/postgres-patterns/SKILL.md +147 -0
  49. package/skills/springboot-patterns/SKILL.md +255 -0
  50. package/skills/springboot-security/SKILL.md +241 -0
  51. package/skills/springboot-tdd/SKILL.md +236 -0
@@ -0,0 +1,501 @@
1
+ ---
2
+ description: Create comprehensive feature implementation plan with codebase analysis and pattern extraction
3
+ argument-hint: <feature description | path/to/prd.md>
4
+ ---
5
+
6
+ > Adapted from PRPs-agentic-eng by Wirasm. Part of the PRP workflow series.
7
+
8
+ # PRP Plan
9
+
10
+ Create a detailed, self-contained implementation plan that captures all codebase patterns, conventions, and context needed to implement a feature in a single pass.
11
+
12
+ **Core Philosophy**: A great plan contains everything needed to implement without asking further questions. Every pattern, every convention, every gotcha — captured once, referenced throughout.
13
+
14
+ **Golden Rule**: If you would need to search the codebase during implementation, capture that knowledge NOW in the plan.
15
+
16
+ ---
17
+
18
+ ## Phase 0 — DETECT
19
+
20
+ Determine input type from `$ARGUMENTS`:
21
+
22
+ | Input Pattern | Detection | Action |
23
+ |---|---|---|
24
+ | Path ending in `.prd.md` | File path to PRD | Parse PRD, find next pending phase |
25
+ | Path to `.md` with "Implementation Phases" | PRD-like document | Parse phases, find next pending |
26
+ | Path to any other file | Reference file | Read file for context, treat as free-form |
27
+ | Free-form text | Feature description | Proceed directly to Phase 1 |
28
+ | Empty / blank | No input | Ask user what feature to plan |
29
+
30
+ ### PRD Parsing (when input is a PRD)
31
+
32
+ 1. Read the PRD file with `cat "$PRD_PATH"`
33
+ 2. Parse the **Implementation Phases** section
34
+ 3. Find phases by status:
35
+ - Look for `pending` phases
36
+ - Check dependency chains (a phase may depend on prior phases being `complete`)
37
+ - Select the **next eligible pending phase**
38
+ 4. Extract from the selected phase:
39
+ - Phase name and description
40
+ - Acceptance criteria
41
+ - Dependencies on prior phases
42
+ - Any scope notes or constraints
43
+ 5. Use the phase description as the feature to plan
44
+
45
+ If no pending phases remain, report that all phases are complete.
46
+
47
+ ---
48
+
49
+ ## Phase 1 — PARSE
50
+
51
+ Extract and clarify the feature requirements.
52
+
53
+ ### Feature Understanding
54
+
55
+ From the input (PRD phase or free-form description), identify:
56
+
57
+ - **What** is being built (concrete deliverable)
58
+ - **Why** it matters (user value)
59
+ - **Who** uses it (target user/system)
60
+ - **Where** it fits (which part of the codebase)
61
+
62
+ ### User Story
63
+
64
+ Format as:
65
+ ```
66
+ As a [type of user],
67
+ I want [capability],
68
+ So that [benefit].
69
+ ```
70
+
71
+ ### Complexity Assessment
72
+
73
+ | Level | Indicators | Typical Scope |
74
+ |---|---|---|
75
+ | **Small** | Single file, isolated change, no new dependencies | 1-3 files, <100 lines |
76
+ | **Medium** | Multiple files, follows existing patterns, minor new concepts | 3-10 files, 100-500 lines |
77
+ | **Large** | Cross-cutting concerns, new patterns, external integrations | 10+ files, 500+ lines |
78
+ | **XL** | Architectural changes, new subsystems, migration needed | 20+ files, consider splitting |
79
+
80
+ ### Ambiguity Gate
81
+
82
+ If any of these are unclear, **STOP and ask the user** before proceeding:
83
+
84
+ - The core deliverable is vague
85
+ - Success criteria are undefined
86
+ - There are multiple valid interpretations
87
+ - Technical approach has major unknowns
88
+
89
+ Do NOT guess. Ask. A plan built on assumptions fails during implementation.
90
+
91
+ ---
92
+
93
+ ## Phase 2 — EXPLORE
94
+
95
+ Gather deep codebase intelligence. Search the codebase directly for each category below.
96
+
97
+ ### Codebase Search (8 Categories)
98
+
99
+ For each category, search using grep, find, and file reading:
100
+
101
+ 1. **Similar Implementations** — Find existing features that resemble the planned one. Look for analogous patterns, endpoints, components, or modules.
102
+
103
+ 2. **Naming Conventions** — Identify how files, functions, variables, classes, and exports are named in the relevant area of the codebase.
104
+
105
+ 3. **Error Handling** — Find how errors are caught, propagated, logged, and returned to users in similar code paths.
106
+
107
+ 4. **Logging Patterns** — Identify what gets logged, at what level, and in what format.
108
+
109
+ 5. **Type Definitions** — Find relevant types, interfaces, schemas, and how they're organized.
110
+
111
+ 6. **Test Patterns** — Find how similar features are tested. Note test file locations, naming, setup/teardown patterns, and assertion styles.
112
+
113
+ 7. **Configuration** — Find relevant config files, environment variables, and feature flags.
114
+
115
+ 8. **Dependencies** — Identify packages, imports, and internal modules used by similar features.
116
+
117
+ ### Codebase Analysis (5 Traces)
118
+
119
+ Read relevant files to trace:
120
+
121
+ 1. **Entry Points** — How does a request/action enter the system and reach the area you're modifying?
122
+ 2. **Data Flow** — How does data move through the relevant code paths?
123
+ 3. **State Changes** — What state is modified and where?
124
+ 4. **Contracts** — What interfaces, APIs, or protocols must be honored?
125
+ 5. **Patterns** — What architectural patterns are used (repository, service, controller, etc.)?
126
+
127
+ ### Unified Discovery Table
128
+
129
+ Compile findings into a single reference:
130
+
131
+ | Category | File:Lines | Pattern | Key Snippet |
132
+ |---|---|---|---|
133
+ | Naming | `src/services/userService.ts:1-5` | camelCase services, PascalCase types | `export class UserService` |
134
+ | Error | `src/middleware/errorHandler.ts:10-25` | Custom AppError class | `throw new AppError(...)` |
135
+ | ... | ... | ... | ... |
136
+
137
+ ---
138
+
139
+ ## Phase 3 — RESEARCH
140
+
141
+ If the feature involves external libraries, APIs, or unfamiliar technology:
142
+
143
+ 1. Search the web for official documentation
144
+ 2. Find usage examples and best practices
145
+ 3. Identify version-specific gotchas
146
+
147
+ Format each finding as:
148
+
149
+ ```
150
+ KEY_INSIGHT: [what you learned]
151
+ APPLIES_TO: [which part of the plan this affects]
152
+ GOTCHA: [any warnings or version-specific issues]
153
+ ```
154
+
155
+ If the feature uses only well-understood internal patterns, skip this phase and note: "No external research needed — feature uses established internal patterns."
156
+
157
+ ---
158
+
159
+ ## Phase 4 — DESIGN
160
+
161
+ ### UX Transformation (if applicable)
162
+
163
+ Document the before/after user experience:
164
+
165
+ **Before:**
166
+ ```
167
+ ┌─────────────────────────────┐
168
+ │ [Current user experience] │
169
+ │ Show the current flow, │
170
+ │ what the user sees/does │
171
+ └─────────────────────────────┘
172
+ ```
173
+
174
+ **After:**
175
+ ```
176
+ ┌─────────────────────────────┐
177
+ │ [New user experience] │
178
+ │ Show the improved flow, │
179
+ │ what changes for the user │
180
+ └─────────────────────────────┘
181
+ ```
182
+
183
+ ### Interaction Changes
184
+
185
+ | Touchpoint | Before | After | Notes |
186
+ |---|---|---|---|
187
+ | ... | ... | ... | ... |
188
+
189
+ If the feature is purely backend/internal with no UX change, note: "Internal change — no user-facing UX transformation."
190
+
191
+ ---
192
+
193
+ ## Phase 5 — ARCHITECT
194
+
195
+ ### Strategic Design
196
+
197
+ Define the implementation approach:
198
+
199
+ - **Approach**: High-level strategy (e.g., "Add new service layer following existing repository pattern")
200
+ - **Alternatives Considered**: What other approaches were evaluated and why they were rejected
201
+ - **Scope**: Concrete boundaries of what WILL be built
202
+ - **NOT Building**: Explicit list of what is OUT OF SCOPE (prevents scope creep during implementation)
203
+
204
+ ---
205
+
206
+ ## Phase 6 — GENERATE
207
+
208
+ Write the full plan document using the template below. Save to `.claude/PRPs/plans/{kebab-case-feature-name}.plan.md`.
209
+
210
+ Create the directory if it doesn't exist:
211
+ ```bash
212
+ mkdir -p .claude/PRPs/plans
213
+ ```
214
+
215
+ ### Plan Template
216
+
217
+ ````markdown
218
+ # Plan: [Feature Name]
219
+
220
+ ## Summary
221
+ [2-3 sentence overview]
222
+
223
+ ## User Story
224
+ As a [user], I want [capability], so that [benefit].
225
+
226
+ ## Problem → Solution
227
+ [Current state] → [Desired state]
228
+
229
+ ## Metadata
230
+ - **Complexity**: [Small | Medium | Large | XL]
231
+ - **Source PRD**: [path or "N/A"]
232
+ - **PRD Phase**: [phase name or "N/A"]
233
+ - **Estimated Files**: [count]
234
+
235
+ ---
236
+
237
+ ## UX Design
238
+
239
+ ### Before
240
+ [ASCII diagram or "N/A — internal change"]
241
+
242
+ ### After
243
+ [ASCII diagram or "N/A — internal change"]
244
+
245
+ ### Interaction Changes
246
+ | Touchpoint | Before | After | Notes |
247
+ |---|---|---|---|
248
+
249
+ ---
250
+
251
+ ## Mandatory Reading
252
+
253
+ Files that MUST be read before implementing:
254
+
255
+ | Priority | File | Lines | Why |
256
+ |---|---|---|---|
257
+ | P0 (critical) | `path/to/file` | 1-50 | Core pattern to follow |
258
+ | P1 (important) | `path/to/file` | 10-30 | Related types |
259
+ | P2 (reference) | `path/to/file` | all | Similar implementation |
260
+
261
+ ## External Documentation
262
+
263
+ | Topic | Source | Key Takeaway |
264
+ |---|---|---|
265
+ | ... | ... | ... |
266
+
267
+ ---
268
+
269
+ ## Patterns to Mirror
270
+
271
+ Code patterns discovered in the codebase. Follow these exactly.
272
+
273
+ ### NAMING_CONVENTION
274
+ // SOURCE: [file:lines]
275
+ [actual code snippet showing the naming pattern]
276
+
277
+ ### ERROR_HANDLING
278
+ // SOURCE: [file:lines]
279
+ [actual code snippet showing error handling]
280
+
281
+ ### LOGGING_PATTERN
282
+ // SOURCE: [file:lines]
283
+ [actual code snippet showing logging]
284
+
285
+ ### REPOSITORY_PATTERN
286
+ // SOURCE: [file:lines]
287
+ [actual code snippet showing data access]
288
+
289
+ ### SERVICE_PATTERN
290
+ // SOURCE: [file:lines]
291
+ [actual code snippet showing service layer]
292
+
293
+ ### TEST_STRUCTURE
294
+ // SOURCE: [file:lines]
295
+ [actual code snippet showing test setup]
296
+
297
+ ---
298
+
299
+ ## Files to Change
300
+
301
+ | File | Action | Justification |
302
+ |---|---|---|
303
+ | `path/to/file.ts` | CREATE | New service for feature |
304
+ | `path/to/existing.ts` | UPDATE | Add new method |
305
+
306
+ ## NOT Building
307
+
308
+ - [Explicit item 1 that is out of scope]
309
+ - [Explicit item 2 that is out of scope]
310
+
311
+ ---
312
+
313
+ ## Step-by-Step Tasks
314
+
315
+ ### Task 1: [Name]
316
+ - **ACTION**: [What to do]
317
+ - **IMPLEMENT**: [Specific code/logic to write]
318
+ - **MIRROR**: [Pattern from Patterns to Mirror section to follow]
319
+ - **IMPORTS**: [Required imports]
320
+ - **GOTCHA**: [Known pitfall to avoid]
321
+ - **VALIDATE**: [How to verify this task is correct]
322
+
323
+ ### Task 2: [Name]
324
+ - **ACTION**: ...
325
+ - **IMPLEMENT**: ...
326
+ - **MIRROR**: ...
327
+ - **IMPORTS**: ...
328
+ - **GOTCHA**: ...
329
+ - **VALIDATE**: ...
330
+
331
+ [Continue for all tasks...]
332
+
333
+ ---
334
+
335
+ ## Testing Strategy
336
+
337
+ ### Unit Tests
338
+
339
+ | Test | Input | Expected Output | Edge Case? |
340
+ |---|---|---|---|
341
+ | ... | ... | ... | ... |
342
+
343
+ ### Edge Cases Checklist
344
+ - [ ] Empty input
345
+ - [ ] Maximum size input
346
+ - [ ] Invalid types
347
+ - [ ] Concurrent access
348
+ - [ ] Network failure (if applicable)
349
+ - [ ] Permission denied
350
+
351
+ ---
352
+
353
+ ## Validation Commands
354
+
355
+ ### Static Analysis
356
+ ```bash
357
+ # Run type checker
358
+ [project-specific type check command]
359
+ ```
360
+ EXPECT: Zero type errors
361
+
362
+ ### Unit Tests
363
+ ```bash
364
+ # Run tests for affected area
365
+ [project-specific test command]
366
+ ```
367
+ EXPECT: All tests pass
368
+
369
+ ### Full Test Suite
370
+ ```bash
371
+ # Run complete test suite
372
+ [project-specific full test command]
373
+ ```
374
+ EXPECT: No regressions
375
+
376
+ ### Database Validation (if applicable)
377
+ ```bash
378
+ # Verify schema/migrations
379
+ [project-specific db command]
380
+ ```
381
+ EXPECT: Schema up to date
382
+
383
+ ### Browser Validation (if applicable)
384
+ ```bash
385
+ # Start dev server and verify
386
+ [project-specific dev server command]
387
+ ```
388
+ EXPECT: Feature works as designed
389
+
390
+ ### Manual Validation
391
+ - [ ] [Step-by-step manual verification checklist]
392
+
393
+ ---
394
+
395
+ ## Acceptance Criteria
396
+ - [ ] All tasks completed
397
+ - [ ] All validation commands pass
398
+ - [ ] Tests written and passing
399
+ - [ ] No type errors
400
+ - [ ] No lint errors
401
+ - [ ] Matches UX design (if applicable)
402
+
403
+ ## Completion Checklist
404
+ - [ ] Code follows discovered patterns
405
+ - [ ] Error handling matches codebase style
406
+ - [ ] Logging follows codebase conventions
407
+ - [ ] Tests follow test patterns
408
+ - [ ] No hardcoded values
409
+ - [ ] Documentation updated (if needed)
410
+ - [ ] No unnecessary scope additions
411
+ - [ ] Self-contained — no questions needed during implementation
412
+
413
+ ## Risks
414
+ | Risk | Likelihood | Impact | Mitigation |
415
+ |---|---|---|---|
416
+ | ... | ... | ... | ... |
417
+
418
+ ## Notes
419
+ [Any additional context, decisions, or observations]
420
+ ```
421
+
422
+ ---
423
+
424
+ ## Output
425
+
426
+ ### Save the Plan
427
+
428
+ Write the generated plan to:
429
+ ```
430
+ .claude/PRPs/plans/{kebab-case-feature-name}.plan.md
431
+ ```
432
+
433
+ ### Update PRD (if input was a PRD)
434
+
435
+ If this plan was generated from a PRD phase:
436
+ 1. Update the phase status from `pending` to `in-progress`
437
+ 2. Add the plan file path as a reference in the phase
438
+
439
+ ### Report to User
440
+
441
+ ```
442
+ ## Plan Created
443
+
444
+ - **File**: .claude/PRPs/plans/{kebab-case-feature-name}.plan.md
445
+ - **Source PRD**: [path or "N/A"]
446
+ - **Phase**: [phase name or "standalone"]
447
+ - **Complexity**: [level]
448
+ - **Scope**: [N files, M tasks]
449
+ - **Key Patterns**: [top 3 discovered patterns]
450
+ - **External Research**: [topics researched or "none needed"]
451
+ - **Risks**: [top risk or "none identified"]
452
+ - **Confidence Score**: [1-10] — likelihood of single-pass implementation
453
+
454
+ > Next step: Run `/dev run .claude/PRPs/plans/{name}.plan.md` to execute this plan.
455
+ ```
456
+
457
+ ---
458
+
459
+ ## Verification
460
+
461
+ Before finalizing, verify the plan against these checklists:
462
+
463
+ ### Context Completeness
464
+ - [ ] All relevant files discovered and documented
465
+ - [ ] Naming conventions captured with examples
466
+ - [ ] Error handling patterns documented
467
+ - [ ] Test patterns identified
468
+ - [ ] Dependencies listed
469
+
470
+ ### Implementation Readiness
471
+ - [ ] Every task has ACTION, IMPLEMENT, MIRROR, and VALIDATE
472
+ - [ ] No task requires additional codebase searching
473
+ - [ ] Import paths are specified
474
+ - [ ] GOTCHAs documented where applicable
475
+
476
+ ### Pattern Faithfulness
477
+ - [ ] Code snippets are actual codebase examples (not invented)
478
+ - [ ] SOURCE references point to real files and line numbers
479
+ - [ ] Patterns cover naming, errors, logging, data access, and tests
480
+ - [ ] New code will be indistinguishable from existing code
481
+
482
+ ### Validation Coverage
483
+ - [ ] Static analysis commands specified
484
+ - [ ] Test commands specified
485
+ - [ ] Build verification included
486
+
487
+ ### UX Clarity
488
+ - [ ] Before/after states documented (or marked N/A)
489
+ - [ ] Interaction changes listed
490
+ - [ ] Edge cases for UX identified
491
+
492
+ ### No Prior Knowledge Test
493
+ A developer unfamiliar with this codebase should be able to implement the feature using ONLY this plan, without searching the codebase or asking questions. If not, add the missing context.
494
+
495
+ ---
496
+
497
+ ## Next Steps
498
+
499
+ - Run `/dev run <plan-path>` to execute this plan
500
+ - Run `/plan` for quick conversational planning without artifacts
501
+ ````
@@ -0,0 +1,144 @@
1
+ ---
2
+ description: 코드 리뷰 — 로컬 변경사항(Java 특화) 또는 GitHub PR 리뷰 (PR 번호/URL 전달 시 PR 모드)
3
+ argument-hint: [pr-number | pr-url | file-path | blank for all changes]
4
+ ---
5
+
6
+ # Dev Review
7
+
8
+ **Input**: $ARGUMENTS
9
+
10
+ ---
11
+
12
+ ## Mode Selection
13
+
14
+ `$ARGUMENTS`에 PR 번호, PR URL, 또는 `--pr`이 포함된 경우:
15
+ → **PR Review Mode**로 이동
16
+
17
+ 그 외:
18
+ → **Local Review Mode** 사용
19
+
20
+ ---
21
+
22
+ ## Local Review Mode
23
+
24
+ ### Phase 1 — GATHER
25
+
26
+ ```bash
27
+ git diff --name-only HEAD
28
+ ```
29
+
30
+ 특정 파일 지정 시 (`$ARGUMENTS`):
31
+ ```bash
32
+ git diff HEAD -- "$ARGUMENTS"
33
+ ```
34
+
35
+ 변경된 파일 없으면 종료: "리뷰할 내용이 없습니다."
36
+
37
+ ### Phase 2 — BUILD CHECK
38
+
39
+ ```bash
40
+ ./mvnw compile -q --no-transfer-progress 2>&1 | tail -5 || \
41
+ ./gradlew compileJava -q 2>&1 | tail -5
42
+ ```
43
+
44
+ 컴파일 실패 시 → `/dev build` 실행 먼저.
45
+
46
+ ### Phase 3 — REVIEW
47
+
48
+ Java 파일이 포함된 경우 `java-reviewer` 에이전트에 위임한다.
49
+ 그 외 파일은 직접 리뷰한다.
50
+
51
+ **Security Issues (CRITICAL)**
52
+ - 하드코딩된 자격 증명, API 키, 토큰
53
+ - SQL 인젝션 취약점 (문자열 연결)
54
+ - 입력 검증 누락 (`@Valid` 없는 `@RequestBody`)
55
+ - 경로 순회 위험
56
+
57
+ **Spring Boot Architecture (HIGH)**
58
+ - 필드 주입 (`@Autowired`) — 생성자 주입으로 전환
59
+ - 컨트롤러에 비즈니스 로직
60
+ - `@Transactional` 잘못된 레이어
61
+ - 엔티티 직접 반환 (DTO 없음)
62
+
63
+ **JPA Issues (HIGH)**
64
+ - `FetchType.EAGER` on collections
65
+ - 페이지네이션 없는 목록 엔드포인트
66
+ - `Optional.get()` without `isPresent()`
67
+
68
+ **Code Quality (MEDIUM)**
69
+ - 50줄 이상 함수
70
+ - 800줄 이상 파일
71
+ - 중첩 깊이 > 4
72
+ - 오류 처리 누락, 빈 catch 블록
73
+
74
+ ### Phase 4 — REPORT
75
+
76
+ ```
77
+ Dev Review — <날짜>
78
+ Files Changed: N
79
+
80
+ CRITICAL: N issues
81
+ - [파일:라인] 문제 → 수정 방법
82
+
83
+ HIGH: N issues
84
+ - [파일:라인] 문제 → 수정 방법
85
+
86
+ MEDIUM: N issues
87
+ - [파일:라인] 문제
88
+
89
+ Decision: APPROVE | REQUEST_CHANGES | BLOCK
90
+ ```
91
+
92
+ CRITICAL/HIGH → 커밋 차단.
93
+
94
+ ---
95
+
96
+ ## PR Review Mode
97
+
98
+ GitHub PR 종합 리뷰.
99
+
100
+ ### Phase 1 — FETCH
101
+
102
+ ```bash
103
+ gh pr view <NUMBER> --json number,title,body,author,baseRefName,headRefName,changedFiles,additions,deletions
104
+ gh pr diff <NUMBER>
105
+ ```
106
+
107
+ ### Phase 2 — REVIEW
108
+
109
+ 변경된 파일 **전체** 읽기 (diff만 아님).
110
+
111
+ | 카테고리 | 확인 내용 |
112
+ |---------|---------|
113
+ | **Correctness** | 로직 오류, null 처리, 엣지 케이스 |
114
+ | **Security** | 인젝션, 인가 누락, 시크릿 노출 |
115
+ | **Spring Boot** | 계층 아키텍처, @Transactional, DTO |
116
+ | **JPA** | N+1, 페이지네이션, fetch 전략 |
117
+ | **Tests** | 커버리지, 테스트 슬라이스, 명명 |
118
+ | **Performance** | N+1 쿼리, 무제한 조회, 인덱스 |
119
+
120
+ ### Phase 3 — VALIDATE
121
+
122
+ ```bash
123
+ ./mvnw verify -q --no-transfer-progress 2>&1 | tail -10 || \
124
+ ./gradlew check -q 2>&1 | tail -10
125
+ ```
126
+
127
+ ### Phase 4 — DECIDE
128
+
129
+ | 조건 | 결정 |
130
+ |------|------|
131
+ | CRITICAL/HIGH 없음, 검증 통과 | **APPROVE** |
132
+ | MEDIUM만 있음 | **APPROVE** with comments |
133
+ | HIGH 있음 | **REQUEST CHANGES** |
134
+ | CRITICAL 있음 | **BLOCK** |
135
+
136
+ ### Phase 5 — PUBLISH
137
+
138
+ ```bash
139
+ # APPROVE
140
+ gh pr review <NUMBER> --approve --body "<요약>"
141
+
142
+ # REQUEST CHANGES
143
+ gh pr review <NUMBER> --request-changes --body "<필수 수정 요약>"
144
+ ```