@kood/claude-code 0.5.1 → 0.5.3
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.
- package/dist/index.js +163 -28
- package/package.json +1 -1
- package/templates/.claude/agents/analyst.md +6 -14
- package/templates/.claude/agents/architect.md +6 -14
- package/templates/.claude/agents/code-reviewer.md +8 -14
- package/templates/.claude/agents/dependency-manager.md +8 -14
- package/templates/.claude/agents/deployment-validator.md +8 -14
- package/templates/.claude/agents/designer.md +8 -0
- package/templates/.claude/agents/document-writer.md +6 -14
- package/templates/.claude/agents/explore.md +8 -3
- package/templates/.claude/agents/git-operator.md +63 -17
- package/templates/.claude/agents/implementation-executor.md +14 -37
- package/templates/.claude/agents/ko-to-en-translator.md +8 -13
- package/templates/.claude/agents/lint-fixer.md +8 -172
- package/templates/.claude/agents/planner.md +6 -14
- package/templates/.claude/agents/refactor-advisor.md +8 -14
- package/templates/.claude/commands/git-all.md +3 -167
- package/templates/.claude/commands/git-session.md +3 -71
- package/templates/.claude/commands/lint-fix.md +119 -82
- package/templates/.claude/commands/lint-init.md +2 -54
- package/templates/.claude/commands/pre-deploy.md +143 -82
- package/templates/.claude/commands/version-update.md +171 -66
- package/templates/.claude/instructions/agent-patterns/agent-coordination.md +208 -0
- package/templates/.claude/instructions/agent-patterns/index.md +264 -0
- package/templates/.claude/instructions/agent-patterns/model-routing.md +167 -0
- package/templates/.claude/instructions/agent-patterns/parallel-execution.md +91 -0
- package/templates/.claude/instructions/agent-patterns/read-parallelization.md +106 -0
- package/templates/.claude/instructions/index.md +350 -0
- package/templates/.claude/instructions/multi-agent/agent-roster.md +811 -0
- package/templates/.claude/{PARALLEL_AGENTS.md → instructions/multi-agent/coordination-guide.md} +27 -336
- package/templates/.claude/instructions/{parallel-agent-execution.md → multi-agent/execution-patterns.md} +127 -438
- package/templates/.claude/instructions/multi-agent/index.md +282 -0
- package/templates/.claude/instructions/multi-agent/performance-optimization.md +456 -0
- package/templates/.claude/instructions/tech-stack/design-standards.md +282 -0
- package/templates/.claude/instructions/tech-stack/index.md +70 -0
- package/templates/.claude/instructions/tech-stack/prisma-patterns.md +352 -0
- package/templates/.claude/instructions/tech-stack/tanstack-patterns.md +275 -0
- package/templates/.claude/instructions/validation/forbidden-patterns.md +281 -0
- package/templates/.claude/instructions/validation/index.md +32 -0
- package/templates/.claude/instructions/validation/required-behaviors.md +331 -0
- package/templates/.claude/instructions/validation/verification-checklist.md +318 -0
- package/templates/.claude/instructions/workflow-patterns/index.md +18 -0
- package/templates/.claude/instructions/workflow-patterns/phase-based-workflow.md +250 -0
- package/templates/.claude/instructions/workflow-patterns/sequential-thinking.md +217 -0
- package/templates/.claude/instructions/workflow-patterns/todowrite-pattern.md +215 -0
- package/templates/.claude/skills/bug-fix/SKILL.md +972 -0
- package/templates/.claude/skills/docs-creator/AGENTS.md +4 -1
- package/templates/.claude/skills/docs-creator/SKILL.md +258 -0
- package/templates/.claude/skills/docs-refactor/AGENTS.md +4 -1
- package/templates/.claude/skills/docs-refactor/SKILL.md +145 -0
- package/templates/.claude/skills/execute/SKILL.md +15 -242
- package/templates/.claude/skills/figma-to-code/AGENTS.md +4 -1
- package/templates/.claude/skills/figma-to-code/SKILL.md +306 -0
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +4 -1
- package/templates/.claude/skills/global-uiux-design/SKILL.md +455 -125
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +4 -1
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +461 -116
- package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +177 -0
- package/templates/.claude/skills/plan/SKILL.md +1102 -98
- package/templates/.claude/skills/prd/SKILL.md +367 -66
- package/templates/.claude/skills/ralph/AGENTS.md +4 -1
- package/templates/.claude/skills/ralph/SKILL.md +83 -0
- package/templates/.claude/skills/refactor/SKILL.md +1214 -0
- package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +149 -0
- package/templates/.claude/commands/bug-fix.md +0 -510
- package/templates/.claude/commands/refactor.md +0 -788
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# Required Behaviors (필수 행동)
|
|
2
|
+
|
|
3
|
+
**목적**: 모든 작업에서 반드시 따라야 할 규칙
|
|
4
|
+
|
|
5
|
+
## 작업 시작
|
|
6
|
+
|
|
7
|
+
### 필수 1: Sequential Thinking
|
|
8
|
+
|
|
9
|
+
**복잡도 MEDIUM 이상 작업은 반드시 Sequential Thinking 실행**
|
|
10
|
+
|
|
11
|
+
| 복잡도 | 최소 단계 | 예시 |
|
|
12
|
+
|--------|----------|------|
|
|
13
|
+
| LOW | 1-2 | 파일 읽기, 간단한 검색 |
|
|
14
|
+
| MEDIUM | 3-5 | 기능 구현, 버그 수정 |
|
|
15
|
+
| HIGH | 7-10+ | 아키텍처 설계, 대규모 리팩토링 |
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// ✅ 필수: 작업 전 Sequential Thinking
|
|
19
|
+
mcp__sequential-thinking__sequentialthinking({
|
|
20
|
+
thought: "User API 구현 계획: 요구사항 분석 → 스키마 → 구현 → 검증",
|
|
21
|
+
thoughtNumber: 1,
|
|
22
|
+
totalThoughts: 5,
|
|
23
|
+
nextThoughtNeeded: true
|
|
24
|
+
})
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 필수 2: 파일 읽기 전 Read 사용
|
|
28
|
+
|
|
29
|
+
**코드 수정 전 반드시 Read로 파일 읽기**
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
// ✅ 필수 순서
|
|
33
|
+
Read({ file_path: "src/functions/auth.ts" }) // 1. 읽기
|
|
34
|
+
Edit({ ... }) // 2. 수정
|
|
35
|
+
|
|
36
|
+
// ❌ 금지
|
|
37
|
+
Edit({ ... }) // 읽지 않고 수정
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 필수 3: 병렬 읽기
|
|
41
|
+
|
|
42
|
+
**3개 이상 독립 파일은 반드시 병렬로 읽기**
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// ✅ 필수: 병렬 읽기
|
|
46
|
+
Read({ file_path: "file1.ts" })
|
|
47
|
+
Read({ file_path: "file2.ts" })
|
|
48
|
+
Read({ file_path: "file3.ts" })
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 코드 작성
|
|
52
|
+
|
|
53
|
+
### 필수 4: UTF-8 인코딩
|
|
54
|
+
|
|
55
|
+
**모든 파일은 UTF-8 인코딩 사용**
|
|
56
|
+
|
|
57
|
+
### 필수 5: 코드 묶음 단위 한글 주석
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
// ✅ 필수: 코드 블록 상단에 한글 주석
|
|
61
|
+
// 사용자 인증 검증
|
|
62
|
+
const isAuthenticated = await checkAuth(session)
|
|
63
|
+
if (!isAuthenticated) throw new Error('Unauthorized')
|
|
64
|
+
|
|
65
|
+
// 사용자 데이터 조회
|
|
66
|
+
const user = await prisma.user.findUnique({ where: { id: session.userId } })
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 필수 6: TypeScript strict 모드
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
// ✅ 필수: 명시적 타입
|
|
73
|
+
function createUser(data: CreateUserInput): Promise<User> {
|
|
74
|
+
return prisma.user.create({ data })
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ❌ 금지: any 사용
|
|
78
|
+
function createUser(data: any): any {
|
|
79
|
+
return prisma.user.create({ data })
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## API 구현
|
|
84
|
+
|
|
85
|
+
### 필수 7: Server Function 패턴
|
|
86
|
+
|
|
87
|
+
**POST/PUT/PATCH는 inputValidator 필수**
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// ✅ 필수
|
|
91
|
+
export const createUser = createServerFn({ method: 'POST' })
|
|
92
|
+
.inputValidator(createUserSchema) // 필수
|
|
93
|
+
.handler(async ({ data }) => {
|
|
94
|
+
return prisma.user.create({ data })
|
|
95
|
+
})
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**인증 필요 시 middleware 필수**
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
// ✅ 필수
|
|
102
|
+
export const getProfile = createServerFn({ method: 'GET' })
|
|
103
|
+
.middleware([authMiddleware]) // 필수
|
|
104
|
+
.handler(async ({ context }) => {
|
|
105
|
+
return prisma.user.findUnique({ where: { id: context.userId } })
|
|
106
|
+
})
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 필수 8: TanStack Query 사용
|
|
110
|
+
|
|
111
|
+
**클라이언트에서 Server Function 호출 시 반드시 TanStack Query 사용**
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
// ✅ 필수: useQuery/useMutation
|
|
115
|
+
const { data } = useQuery({
|
|
116
|
+
queryKey: ['users'],
|
|
117
|
+
queryFn: getUsers
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
const mutation = useMutation({
|
|
121
|
+
mutationFn: createUser,
|
|
122
|
+
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['users'] })
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
// ❌ 금지: 직접 호출
|
|
126
|
+
const users = await getUsers()
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 검증
|
|
130
|
+
|
|
131
|
+
### 필수 9: 4-Phase 순차 진행
|
|
132
|
+
|
|
133
|
+
**Phase 1 → 2 → 3 → 4 순서 엄수**
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
✅ Phase 1: 작업 실행 (모든 요구사항 완료)
|
|
137
|
+
✅ Phase 2: 자동 검증 (/pre-deploy + TODO)
|
|
138
|
+
✅ Phase 3: Planner 검증 (승인 필수)
|
|
139
|
+
✅ Phase 4: 완료 (<promise> 출력)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 필수 10: /pre-deploy 전체 실행
|
|
143
|
+
|
|
144
|
+
**typecheck, lint, build 모두 통과 필수**
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
// ✅ 필수: 전체 검증
|
|
148
|
+
Skill("pre-deploy")
|
|
149
|
+
|
|
150
|
+
// ❌ 금지: 부분 검증
|
|
151
|
+
Bash({ command: "tsc --noEmit" }) // typecheck만
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 필수 11: Planner 검증
|
|
155
|
+
|
|
156
|
+
**Phase 3에서 Planner 승인 필수**
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
// ✅ 필수
|
|
160
|
+
Task(
|
|
161
|
+
subagent_type="planner",
|
|
162
|
+
model="opus",
|
|
163
|
+
prompt=`구현 완료 검증 요청
|
|
164
|
+
|
|
165
|
+
【원본 작업】
|
|
166
|
+
${PROMPT}
|
|
167
|
+
|
|
168
|
+
【검증 결과】
|
|
169
|
+
- /pre-deploy: ✅
|
|
170
|
+
- TODO: ✅ 0개
|
|
171
|
+
|
|
172
|
+
완료 여부 판단 요청`
|
|
173
|
+
)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 문서화
|
|
177
|
+
|
|
178
|
+
### 필수 12: Ralph 세션 문서
|
|
179
|
+
|
|
180
|
+
**Ralph 스킬 사용 시 반드시 문서화**
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
.claude/ralph/{YYYY-MM-DD_HH-MM}/
|
|
184
|
+
├── TASKS.md # 필수
|
|
185
|
+
├── PROCESS.md # 필수
|
|
186
|
+
├── VERIFICATION.md # 필수
|
|
187
|
+
└── NOTES.md # 선택
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 필수 13: 문서 업데이트 시점
|
|
191
|
+
|
|
192
|
+
| 시점 | 업데이트 파일 | 내용 |
|
|
193
|
+
|------|--------------|------|
|
|
194
|
+
| Phase 전환 | PROCESS.md | Phase N 완료 → Phase N+1 시작 |
|
|
195
|
+
| 요구사항 완료 | TASKS.md | 체크박스 체크 |
|
|
196
|
+
| 검증 실행 | VERIFICATION.md | /pre-deploy 결과, TODO 개수 |
|
|
197
|
+
| 주요 의사결정 | PROCESS.md | 결정 내용 및 이유 |
|
|
198
|
+
|
|
199
|
+
### 필수 14: Prisma Multi-File
|
|
200
|
+
|
|
201
|
+
**Prisma Multi-File 구조 사용 시 모든 요소에 한글 주석 필수**
|
|
202
|
+
|
|
203
|
+
```prisma
|
|
204
|
+
// ✅ 필수: 모든 모델/필드/enum에 주석
|
|
205
|
+
|
|
206
|
+
/// 사용자
|
|
207
|
+
model User {
|
|
208
|
+
/// 고유 식별자
|
|
209
|
+
id Int @id @default(autoincrement())
|
|
210
|
+
/// 이메일 (고유)
|
|
211
|
+
email String @unique
|
|
212
|
+
/// 이름
|
|
213
|
+
name String
|
|
214
|
+
/// 생성 시각
|
|
215
|
+
createdAt DateTime @default(now())
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/// 사용자 역할
|
|
219
|
+
enum UserRole {
|
|
220
|
+
/// 관리자
|
|
221
|
+
ADMIN
|
|
222
|
+
/// 일반 사용자
|
|
223
|
+
USER
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Git 작업
|
|
228
|
+
|
|
229
|
+
### 필수 15: git-operator 사용
|
|
230
|
+
|
|
231
|
+
**Git 작업은 반드시 git-operator 에이전트 사용**
|
|
232
|
+
|
|
233
|
+
```typescript
|
|
234
|
+
// ✅ 필수
|
|
235
|
+
Task(subagent_type="git-operator", model="haiku",
|
|
236
|
+
prompt="변경사항 커밋 및 푸시")
|
|
237
|
+
|
|
238
|
+
// ❌ 금지
|
|
239
|
+
Bash({ command: "git add . && git commit -m 'feat: ...' && git push" })
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### 필수 16: 커밋 메시지 형식
|
|
243
|
+
|
|
244
|
+
**`<prefix>: <설명>` 형식 필수 (한 줄)**
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# ✅ 필수
|
|
248
|
+
feat: 로그인 API 구현
|
|
249
|
+
fix: 타입 에러 수정
|
|
250
|
+
refactor: auth 모듈 리팩토링
|
|
251
|
+
|
|
252
|
+
# ❌ 금지
|
|
253
|
+
로그인 기능 추가 # prefix 없음
|
|
254
|
+
feat: 로그인 API 구현\n\nCo-Authored-By: ... # 여러 줄
|
|
255
|
+
🤖 feat: 로그인 # 이모지
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Prefix 종류:**
|
|
259
|
+
- feat, fix, refactor, style, docs, test, chore, perf, ci
|
|
260
|
+
|
|
261
|
+
## 에이전트 활용
|
|
262
|
+
|
|
263
|
+
### 필수 17: 에이전트 위임
|
|
264
|
+
|
|
265
|
+
**다음 조건 시 반드시 에이전트 위임:**
|
|
266
|
+
|
|
267
|
+
- [ ] 독립적인 작업
|
|
268
|
+
- [ ] 새 컨텍스트 필요
|
|
269
|
+
- [ ] 전문 지식 필요
|
|
270
|
+
- [ ] 10분 이상 소요 예상
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
// ✅ 필수: 적절한 에이전트 위임
|
|
274
|
+
Task(subagent_type="implementation-executor", model="sonnet", ...)
|
|
275
|
+
Task(subagent_type="designer", model="sonnet", ...)
|
|
276
|
+
Task(subagent_type="code-reviewer", model="opus", ...)
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### 필수 18: 모델 선택
|
|
280
|
+
|
|
281
|
+
**에이전트 호출 시 model 파라미터 필수**
|
|
282
|
+
|
|
283
|
+
| 모델 | 사용 시점 |
|
|
284
|
+
|------|----------|
|
|
285
|
+
| haiku | 탐색, 문서, Git |
|
|
286
|
+
| sonnet | 구현, 수정, 분석 (기본) |
|
|
287
|
+
| opus | 아키텍처, 보안, 검증 |
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
// ✅ 필수: model 명시
|
|
291
|
+
Task(subagent_type="explore", model="haiku", ...)
|
|
292
|
+
Task(subagent_type="planner", model="opus", ...)
|
|
293
|
+
|
|
294
|
+
// ❌ 금지: model 누락
|
|
295
|
+
Task(subagent_type="explore", ...)
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## 종합 체크리스트
|
|
299
|
+
|
|
300
|
+
작업 시작 전:
|
|
301
|
+
|
|
302
|
+
- [ ] Sequential Thinking 실행 (MEDIUM 이상)
|
|
303
|
+
- [ ] 파일 읽기 계획 (병렬 여부)
|
|
304
|
+
- [ ] 에이전트 활용 계획
|
|
305
|
+
|
|
306
|
+
코드 작성 시:
|
|
307
|
+
|
|
308
|
+
- [ ] UTF-8 인코딩
|
|
309
|
+
- [ ] 한글 주석 (코드 블록 단위)
|
|
310
|
+
- [ ] TypeScript strict 모드
|
|
311
|
+
- [ ] Server Function 패턴 준수
|
|
312
|
+
- [ ] TanStack Query 사용
|
|
313
|
+
|
|
314
|
+
검증 시:
|
|
315
|
+
|
|
316
|
+
- [ ] Phase 1 → 2 → 3 → 4 순서
|
|
317
|
+
- [ ] /pre-deploy 전체 실행
|
|
318
|
+
- [ ] Planner 승인 확인
|
|
319
|
+
|
|
320
|
+
문서화:
|
|
321
|
+
|
|
322
|
+
- [ ] Ralph 세션 폴더 생성
|
|
323
|
+
- [ ] Phase 전환 시 업데이트
|
|
324
|
+
- [ ] 검증 결과 기록
|
|
325
|
+
|
|
326
|
+
Git:
|
|
327
|
+
|
|
328
|
+
- [ ] git-operator 사용
|
|
329
|
+
- [ ] 커밋 메시지 형식 준수
|
|
330
|
+
|
|
331
|
+
**모든 필수 항목 준수 → 품질 보장**
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
# Verification Checklist
|
|
2
|
+
|
|
3
|
+
**목적**: 작업 완료 전 표준 검증 절차
|
|
4
|
+
|
|
5
|
+
## Phase별 검증
|
|
6
|
+
|
|
7
|
+
### Phase 1: 작업 실행 검증
|
|
8
|
+
|
|
9
|
+
**완료 조건:**
|
|
10
|
+
|
|
11
|
+
- [ ] 모든 요구사항 구현 완료
|
|
12
|
+
- [ ] TASKS.md 체크리스트 100% 완료
|
|
13
|
+
- [ ] 주요 의사결정 PROCESS.md 기록
|
|
14
|
+
- [ ] 독립 작업 병렬 실행 확인
|
|
15
|
+
|
|
16
|
+
**검증 방법:**
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
// TASKS.md 읽기
|
|
20
|
+
Read({ file_path: ".claude/ralph/{timestamp}/TASKS.md" })
|
|
21
|
+
|
|
22
|
+
// 모든 체크박스가 [x]인지 확인
|
|
23
|
+
// 진행률이 100%인지 확인
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Phase 2: 자동 검증
|
|
27
|
+
|
|
28
|
+
**완료 조건:**
|
|
29
|
+
|
|
30
|
+
- [ ] typecheck 통과 (tsc --noEmit)
|
|
31
|
+
- [ ] lint 통과 (eslint, 0 에러)
|
|
32
|
+
- [ ] build 통과 (프로젝트 빌드 성공)
|
|
33
|
+
- [ ] pending/in_progress TODO = 0개
|
|
34
|
+
- [ ] VERIFICATION.md 업데이트 완료
|
|
35
|
+
|
|
36
|
+
**검증 방법:**
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
// 1. /pre-deploy 실행
|
|
40
|
+
Skill("pre-deploy")
|
|
41
|
+
|
|
42
|
+
// 2. 결과 확인
|
|
43
|
+
// - typecheck: ✅ (에러 없음)
|
|
44
|
+
// - lint: ✅ (warning/error 0개)
|
|
45
|
+
// - build: ✅ (성공)
|
|
46
|
+
|
|
47
|
+
// 3. TODO 확인
|
|
48
|
+
TaskList()
|
|
49
|
+
// pending: 0
|
|
50
|
+
// in_progress: 0
|
|
51
|
+
|
|
52
|
+
// 4. VERIFICATION.md 업데이트
|
|
53
|
+
Task(subagent_type="document-writer", model="haiku",
|
|
54
|
+
prompt="VERIFICATION.md에 검증 결과 기록")
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Phase 3: Planner 검증
|
|
58
|
+
|
|
59
|
+
**완료 조건:**
|
|
60
|
+
|
|
61
|
+
- [ ] Planner 에이전트 호출 완료
|
|
62
|
+
- [ ] Planner 응답: "승인" 또는 "완료"
|
|
63
|
+
- [ ] VERIFICATION.md에 Planner 응답 기록
|
|
64
|
+
- [ ] Phase 2 검증 결과 포함하여 전달
|
|
65
|
+
|
|
66
|
+
**검증 방법:**
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
// 1. Planner 호출
|
|
70
|
+
Task(
|
|
71
|
+
subagent_type="planner",
|
|
72
|
+
model="opus",
|
|
73
|
+
prompt=`구현 완료 검증 요청
|
|
74
|
+
|
|
75
|
+
【원본 작업】
|
|
76
|
+
${ORIGINAL_PROMPT}
|
|
77
|
+
|
|
78
|
+
【수행 내용】
|
|
79
|
+
- 요구사항 1: ✅ (구체적 설명)
|
|
80
|
+
- 요구사항 2: ✅ (구체적 설명)
|
|
81
|
+
- 요구사항 3: ✅ (구체적 설명)
|
|
82
|
+
|
|
83
|
+
【검증 결과】
|
|
84
|
+
- /pre-deploy: ✅ typecheck/lint/build 통과
|
|
85
|
+
- TODO: ✅ 0개
|
|
86
|
+
|
|
87
|
+
완료 여부를 판단하고, 미흡한 점이 있다면 구체적으로 지적해주세요.`
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
// 2. 응답 확인
|
|
91
|
+
// "승인", "완료", "문제없음" → Phase 4 진행
|
|
92
|
+
// "수정 필요", "미흡" → Phase 2 복귀
|
|
93
|
+
|
|
94
|
+
// 3. VERIFICATION.md 업데이트
|
|
95
|
+
Task(subagent_type="document-writer", model="haiku",
|
|
96
|
+
prompt="VERIFICATION.md: Planner 응답 기록")
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Phase 4: 완료
|
|
100
|
+
|
|
101
|
+
**완료 조건:**
|
|
102
|
+
|
|
103
|
+
- [ ] TASKS.md 최종 확인 (모든 항목 체크)
|
|
104
|
+
- [ ] PROCESS.md 완료 시각 기록
|
|
105
|
+
- [ ] VERIFICATION.md 모든 검증 통과 확인
|
|
106
|
+
- [ ] `<promise>` 태그 출력
|
|
107
|
+
|
|
108
|
+
**검증 방법:**
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// 1. 최종 문서 확인
|
|
112
|
+
Read({ file_path: ".claude/ralph/{timestamp}/TASKS.md" })
|
|
113
|
+
Read({ file_path: ".claude/ralph/{timestamp}/PROCESS.md" })
|
|
114
|
+
Read({ file_path: ".claude/ralph/{timestamp}/VERIFICATION.md" })
|
|
115
|
+
|
|
116
|
+
// 2. PROCESS.md 완료 기록
|
|
117
|
+
Task(subagent_type="document-writer", model="haiku",
|
|
118
|
+
prompt="PROCESS.md: 완료 시각 및 총 소요 시간 기록")
|
|
119
|
+
|
|
120
|
+
// 3. <promise> 출력
|
|
121
|
+
<promise>작업 완료</promise>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 코드 품질 검증
|
|
125
|
+
|
|
126
|
+
### TypeScript 검증
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# typecheck 실행
|
|
130
|
+
tsc --noEmit
|
|
131
|
+
|
|
132
|
+
# 예상 출력
|
|
133
|
+
# (에러 없음)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**확인 사항:**
|
|
137
|
+
|
|
138
|
+
- [ ] 타입 에러 0개
|
|
139
|
+
- [ ] any 타입 사용 없음
|
|
140
|
+
- [ ] @ts-ignore 주석 없음
|
|
141
|
+
- [ ] 모든 함수에 명시적 return type
|
|
142
|
+
|
|
143
|
+
### ESLint 검증
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# lint 실행
|
|
147
|
+
eslint .
|
|
148
|
+
|
|
149
|
+
# 예상 출력
|
|
150
|
+
# ✔ No problems
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**확인 사항:**
|
|
154
|
+
|
|
155
|
+
- [ ] ESLint 에러 0개
|
|
156
|
+
- [ ] ESLint 경고 0개 (또는 정당한 이유)
|
|
157
|
+
- [ ] Prettier 포맷 일치
|
|
158
|
+
|
|
159
|
+
### Build 검증
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# 빌드 실행
|
|
163
|
+
npm run build
|
|
164
|
+
# 또는
|
|
165
|
+
vite build
|
|
166
|
+
|
|
167
|
+
# 예상 출력
|
|
168
|
+
# ✓ built in XXXms
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**확인 사항:**
|
|
172
|
+
|
|
173
|
+
- [ ] 빌드 성공
|
|
174
|
+
- [ ] 번들 크기 적절
|
|
175
|
+
- [ ] 빌드 경고 없음
|
|
176
|
+
|
|
177
|
+
## 기능 검증
|
|
178
|
+
|
|
179
|
+
### API 검증
|
|
180
|
+
|
|
181
|
+
- [ ] Server Function 올바른 메서드 (GET/POST/PUT/DELETE)
|
|
182
|
+
- [ ] POST/PUT/PATCH는 inputValidator 사용
|
|
183
|
+
- [ ] 인증 필요 시 middleware 사용
|
|
184
|
+
- [ ] 에러 처리 적절
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
// ✅ 검증 예시
|
|
188
|
+
export const createUser = createServerFn({ method: 'POST' })
|
|
189
|
+
.middleware([authMiddleware]) // 인증 확인
|
|
190
|
+
.inputValidator(createUserSchema) // 입력 검증 확인
|
|
191
|
+
.handler(async ({ data }) => { // 핸들러 확인
|
|
192
|
+
return prisma.user.create({ data })
|
|
193
|
+
})
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### UI 검증
|
|
197
|
+
|
|
198
|
+
- [ ] TanStack Query 사용 (useQuery/useMutation)
|
|
199
|
+
- [ ] 에러 상태 처리
|
|
200
|
+
- [ ] 로딩 상태 처리
|
|
201
|
+
- [ ] 낙관적 업데이트 (필요 시)
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
// ✅ 검증 예시
|
|
205
|
+
const { data, isLoading, error } = useQuery({
|
|
206
|
+
queryKey: ['users'],
|
|
207
|
+
queryFn: getUsers
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
const mutation = useMutation({
|
|
211
|
+
mutationFn: createUser,
|
|
212
|
+
onSuccess: () => {
|
|
213
|
+
queryClient.invalidateQueries({ queryKey: ['users'] })
|
|
214
|
+
}
|
|
215
|
+
})
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Database 검증
|
|
219
|
+
|
|
220
|
+
- [ ] Prisma 스키마 일관성
|
|
221
|
+
- [ ] 관계 올바름 (1:N, N:N)
|
|
222
|
+
- [ ] Index 적절
|
|
223
|
+
- [ ] 한글 주석 (Multi-File 사용 시 필수)
|
|
224
|
+
|
|
225
|
+
## 문서 검증
|
|
226
|
+
|
|
227
|
+
### TASKS.md
|
|
228
|
+
|
|
229
|
+
```markdown
|
|
230
|
+
- [x] 요구사항 1: 완료
|
|
231
|
+
- [x] 요구사항 2: 완료
|
|
232
|
+
- [x] 요구사항 3: 완료
|
|
233
|
+
|
|
234
|
+
완료: 3 / 총 3
|
|
235
|
+
진행률: 100%
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### PROCESS.md
|
|
239
|
+
|
|
240
|
+
```markdown
|
|
241
|
+
## Phase 4: 완료
|
|
242
|
+
|
|
243
|
+
**완료 시각:** 2026-01-24 17:00
|
|
244
|
+
**총 소요 시간:** 30분
|
|
245
|
+
|
|
246
|
+
모든 요구사항 구현 및 검증 완료
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### VERIFICATION.md
|
|
250
|
+
|
|
251
|
+
```markdown
|
|
252
|
+
## /pre-deploy 검증
|
|
253
|
+
|
|
254
|
+
**실행 시각:** 2026-01-24 16:50
|
|
255
|
+
|
|
256
|
+
**결과:**
|
|
257
|
+
- Typecheck: ✅ 통과
|
|
258
|
+
- Lint: ✅ 0 에러
|
|
259
|
+
- Build: ✅ 성공
|
|
260
|
+
|
|
261
|
+
## TODO 확인
|
|
262
|
+
|
|
263
|
+
**실행 시각:** 2026-01-24 16:52
|
|
264
|
+
|
|
265
|
+
**결과:** pending/in_progress = 0
|
|
266
|
+
|
|
267
|
+
## Planner 검증
|
|
268
|
+
|
|
269
|
+
**실행 시각:** 2026-01-24 16:55
|
|
270
|
+
|
|
271
|
+
**응답:** "구현 완료 승인. 요구사항 모두 충족."
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Git 검증
|
|
275
|
+
|
|
276
|
+
### 커밋 메시지
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
# ✅ 올바른 형식
|
|
280
|
+
feat: 로그인 API 구현
|
|
281
|
+
fix: 타입 에러 수정
|
|
282
|
+
|
|
283
|
+
# ❌ 잘못된 형식
|
|
284
|
+
로그인 기능 # prefix 없음
|
|
285
|
+
feat: 로그인\n\nCo-Authored-By: ... # 여러 줄
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### 커밋 내용
|
|
289
|
+
|
|
290
|
+
- [ ] 논리적 단위로 분리
|
|
291
|
+
- [ ] 관련 없는 변경 혼재 없음
|
|
292
|
+
- [ ] AI 표시 없음 (Co-Authored-By, 🤖 등)
|
|
293
|
+
|
|
294
|
+
## 실패 시 조치
|
|
295
|
+
|
|
296
|
+
| 실패 항목 | 조치 |
|
|
297
|
+
|----------|------|
|
|
298
|
+
| typecheck 실패 | lint-fixer 에이전트로 수정 |
|
|
299
|
+
| lint 실패 | lint-fixer 에이전트로 수정 |
|
|
300
|
+
| build 실패 | 에러 로그 분석 후 수정 |
|
|
301
|
+
| Planner 거절 | 피드백 반영 → Phase 2부터 재실행 |
|
|
302
|
+
| TODO 미완료 | 남은 작업 완료 |
|
|
303
|
+
|
|
304
|
+
**절대 검증 스킵하지 않음. 실패 시 수정 → 재검증 반복.**
|
|
305
|
+
|
|
306
|
+
## 최종 체크리스트
|
|
307
|
+
|
|
308
|
+
작업 완료 전 확인:
|
|
309
|
+
|
|
310
|
+
- [ ] Phase 1-4 순차 진행 완료
|
|
311
|
+
- [ ] /pre-deploy 전체 통과
|
|
312
|
+
- [ ] TODO 리스트 0개
|
|
313
|
+
- [ ] Planner 승인 획득
|
|
314
|
+
- [ ] 문서 업데이트 완료
|
|
315
|
+
- [ ] Git 커밋 형식 준수
|
|
316
|
+
- [ ] 코드 품질 기준 충족
|
|
317
|
+
|
|
318
|
+
**모든 항목 체크 완료 후 `<promise>` 출력**
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Workflow Patterns
|
|
2
|
+
|
|
3
|
+
작업 흐름 및 사고 패턴
|
|
4
|
+
|
|
5
|
+
## 파일 목록
|
|
6
|
+
|
|
7
|
+
| 파일 | 설명 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| [sequential-thinking.md](./sequential-thinking.md) | Sequential Thinking - 구조화된 사고 과정 |
|
|
10
|
+
| [todowrite-pattern.md](./todowrite-pattern.md) | TodoWrite 패턴 - 작업 단계 관리 |
|
|
11
|
+
| [phase-based-workflow.md](./phase-based-workflow.md) | Phase 기반 워크플로우 - 4단계 검증 |
|
|
12
|
+
|
|
13
|
+
## 사용법
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
@.claude/instructions/workflow-patterns/sequential-thinking.md
|
|
17
|
+
@.claude/instructions/workflow-patterns/phase-based-workflow.md
|
|
18
|
+
```
|