@yeongjaeyou/claude-code-config 0.2.1 → 0.3.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.
- package/.claude/commands/ask-codex.md +429 -0
- package/.claude/commands/ask-gemini.md +438 -0
- package/.claude/commands/gh/post-merge.md +7 -2
- package/.claude/commands/tm/post-merge.md +12 -5
- package/.claude/commands/tm/resolve-issue.md +40 -0
- package/.claude/commands/tm/review-prd-with-codex.md +449 -0
- package/.claude/commands/tm/sync-to-github.md +87 -39
- package/package.json +5 -2
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
# PRD Codex 검토 (review-prd-with-codex)
|
|
2
|
+
|
|
3
|
+
생성된 PRD를 Codex MCP로 검토하고 Claude가 cross-check하여 합의된 결론을 전달합니다.
|
|
4
|
+
합의가 도달할 때까지 최대 3회 핑퐁합니다.
|
|
5
|
+
|
|
6
|
+
**핵심 원칙:**
|
|
7
|
+
- Codex는 context/도구가 제한적이므로 Claude가 반드시 검증
|
|
8
|
+
- 불일치 시 Codex에 재질문 (컨텍스트 재전달 방식)
|
|
9
|
+
- 이모지 사용 금지
|
|
10
|
+
- 범용적 표현 사용 (특정 프로젝트 용어 지양)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 아규먼트
|
|
15
|
+
|
|
16
|
+
`$ARGUMENTS`로 PRD 파일 경로를 받습니다.
|
|
17
|
+
- 예: `/tm:review-prd-with-codex .taskmaster/docs/prd.md`
|
|
18
|
+
- 없으면 AskUserQuestion으로 경로 입력 요청
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Codex 컨텍스트 구성 원칙
|
|
23
|
+
|
|
24
|
+
### 1. 이번 워크플로우의 Codex 사용 범위
|
|
25
|
+
- 이번 명령은 **Codex MCP 도구**를 사용 (`mcp__codex__codex`)
|
|
26
|
+
- sandbox는 `read-only` 설정
|
|
27
|
+
- **네트워크/웹서치는 사용하지 않음** (재현성과 안전을 위해)
|
|
28
|
+
- 재현성을 위해 PRD/컨텍스트를 프롬프트에 직접 포함 (파일 탐색에 의존하지 않음)
|
|
29
|
+
- git history 접근 불가 (Claude가 cross-check로 보완)
|
|
30
|
+
|
|
31
|
+
### 2. 필수 포함 정보 (풍부한 컨텍스트)
|
|
32
|
+
- PRD 전문 (라인 번호 포함 - `nl -ba` 형식)
|
|
33
|
+
- **CLAUDE.md 전문** (제한 없이 전체 포함)
|
|
34
|
+
- **프로젝트 기술 스택 상세** (package.json, requirements.txt 내용)
|
|
35
|
+
- **디렉토리 구조** (주요 폴더 구조)
|
|
36
|
+
- **PRD 관련 코드 요약** (선택: PRD에 언급된 파일의 심볼 개요)
|
|
37
|
+
- 검토 기준 명시
|
|
38
|
+
- 출력 형식 강제
|
|
39
|
+
|
|
40
|
+
### 3. 포함하지 말아야 할 정보
|
|
41
|
+
- Claude 전용 도구 언급 (AskUserQuestion, TodoWrite 등)
|
|
42
|
+
- 내부 워크플로우 세부사항
|
|
43
|
+
|
|
44
|
+
### 4. 프롬프트 구성 원칙
|
|
45
|
+
- **CLAUDE.md 전체 포함** (1000자 제한 제거)
|
|
46
|
+
- PRD 전체를 한 번에 검토 (분할하지 않음)
|
|
47
|
+
- 기술 스택과 디렉토리 구조로 프로젝트 맥락 제공
|
|
48
|
+
- 타임아웃 발생 시에만 프롬프트 축소 고려
|
|
49
|
+
|
|
50
|
+
### 5. 출력 형식 강제
|
|
51
|
+
- 구조화된 형식 명시 (테이블, 리스트)
|
|
52
|
+
- "반드시 이 형식으로" 명시
|
|
53
|
+
- 라인 번호 참조 요구
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 작업 순서
|
|
58
|
+
|
|
59
|
+
### Step 1: 사전 정보 수집 (풍부한 컨텍스트)
|
|
60
|
+
|
|
61
|
+
#### 1.1 PRD 파일 읽기 (라인 번호 포함)
|
|
62
|
+
```bash
|
|
63
|
+
nl -ba $ARGUMENTS
|
|
64
|
+
```
|
|
65
|
+
- `nl -ba`: 빈 줄 포함 모든 줄에 번호 부여 (cat -n보다 일관적)
|
|
66
|
+
- 파일이 없으면 오류 메시지 출력 후 종료
|
|
67
|
+
|
|
68
|
+
#### 1.2 PRD 파일 존재 확인
|
|
69
|
+
```bash
|
|
70
|
+
test -f $ARGUMENTS && echo "파일 존재" || echo "파일 없음"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### 1.3 CLAUDE.md 전문 읽기
|
|
74
|
+
- 프로젝트 루트의 CLAUDE.md 확인
|
|
75
|
+
- **전체 내용을 프롬프트에 포함** (1000자 제한 없음)
|
|
76
|
+
- 프로젝트 컨벤션, 기술 스택, 주의사항 모두 전달
|
|
77
|
+
|
|
78
|
+
#### 1.4 프로젝트 기술 스택 상세 수집
|
|
79
|
+
Claude가 다음 파일들을 읽고 요약:
|
|
80
|
+
- `package.json` (프론트엔드 의존성)
|
|
81
|
+
- `requirements.txt` (백엔드 의존성)
|
|
82
|
+
- `go.mod`, `Cargo.toml` 등 (해당 시)
|
|
83
|
+
- 주요 프레임워크/라이브러리 버전 명시
|
|
84
|
+
|
|
85
|
+
#### 1.5 디렉토리 구조 수집
|
|
86
|
+
```bash
|
|
87
|
+
# 주요 디렉토리 구조 (깊이 2-3)
|
|
88
|
+
tree -L 3 --dirsfirst -I 'node_modules|__pycache__|.git|dist|build|.next'
|
|
89
|
+
```
|
|
90
|
+
또는 `ls -la` 조합으로 구조 파악
|
|
91
|
+
|
|
92
|
+
#### 1.6 PRD 관련 코드 파일 요약 (선택)
|
|
93
|
+
- PRD에 언급된 주요 파일/모듈이 있으면 해당 파일의 심볼 개요 수집
|
|
94
|
+
- 예: "인증 시스템 개선" PRD라면 `routes/auth.py`, `middleware.ts` 등 확인
|
|
95
|
+
- 기존 구현과 PRD 설계의 관계 파악에 도움
|
|
96
|
+
|
|
97
|
+
#### 1.7 TaskMaster PRD 템플릿 참조
|
|
98
|
+
`.taskmaster/templates/example_prd.txt` 구조:
|
|
99
|
+
```
|
|
100
|
+
<context>
|
|
101
|
+
# Overview
|
|
102
|
+
# Core Features
|
|
103
|
+
# User Experience
|
|
104
|
+
</context>
|
|
105
|
+
<PRD>
|
|
106
|
+
# Technical Architecture
|
|
107
|
+
# Development Roadmap
|
|
108
|
+
# Logical Dependency Chain
|
|
109
|
+
# Risks and Mitigations
|
|
110
|
+
# Appendix
|
|
111
|
+
</PRD>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 2: Codex 프롬프트 구성 (풍부한 컨텍스트)
|
|
115
|
+
|
|
116
|
+
다음 템플릿을 사용하여 프롬프트 작성:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
## 역할
|
|
120
|
+
당신은 PRD(Product Requirements Document) 검토 전문가입니다.
|
|
121
|
+
|
|
122
|
+
## 프로젝트 컨텍스트
|
|
123
|
+
|
|
124
|
+
### 기술 스택
|
|
125
|
+
[package.json / requirements.txt 내용 요약]
|
|
126
|
+
예시:
|
|
127
|
+
- Frontend: Next.js 15, React 19, Tailwind CSS v4, shadcn/ui
|
|
128
|
+
- Backend: FastAPI, Google Gemini API, Decord
|
|
129
|
+
- 배포: Docker + Cloudflare Tunnel
|
|
130
|
+
|
|
131
|
+
### 프로젝트 구조
|
|
132
|
+
[tree 또는 ls 출력 결과]
|
|
133
|
+
```
|
|
134
|
+
frontend/
|
|
135
|
+
├── src/app/ # App Router
|
|
136
|
+
├── src/components/ # UI 컴포넌트
|
|
137
|
+
└── src/hooks/ # Custom hooks
|
|
138
|
+
|
|
139
|
+
services/
|
|
140
|
+
├── base_video_processor.py
|
|
141
|
+
├── video_processor.py
|
|
142
|
+
└── child_safety_processor.py
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 프로젝트 지침 (CLAUDE.md)
|
|
146
|
+
[CLAUDE.md 전문 - 제한 없이 전체 포함]
|
|
147
|
+
|
|
148
|
+
### PRD 관련 기존 코드 (선택)
|
|
149
|
+
[PRD에 언급된 주요 파일이 있다면 심볼 개요]
|
|
150
|
+
|
|
151
|
+
## 검토 대상
|
|
152
|
+
파일: [PRD 파일 경로]
|
|
153
|
+
|
|
154
|
+
### PRD 내용 (라인 번호 포함)
|
|
155
|
+
[PRD 전문 - nl -ba 형식으로]
|
|
156
|
+
|
|
157
|
+
## TaskMaster PRD 형식 기준
|
|
158
|
+
<context>: Overview, Core Features, User Experience
|
|
159
|
+
<PRD>: Technical Architecture, Development Roadmap (Phase 단위),
|
|
160
|
+
Logical Dependency Chain, Risks and Mitigations, Appendix
|
|
161
|
+
|
|
162
|
+
## 검토 기준
|
|
163
|
+
1. 구조: TaskMaster PRD 형식 준수 여부
|
|
164
|
+
2. 명확성: 모호한 표현, 정의되지 않은 용어, 측정 불가능한 목표
|
|
165
|
+
3. 실행가능성: 구현 가능한 수준의 구체성, 기술적 현실성
|
|
166
|
+
4. 완전성: 누락된 섹션 (User Stories, Acceptance Criteria,
|
|
167
|
+
Success Metrics, Risk/Dependencies 등)
|
|
168
|
+
5. 일관성: 내부 모순, 중복 정의, 버전 불일치
|
|
169
|
+
|
|
170
|
+
## 출력 형식 (반드시 이 형식으로)
|
|
171
|
+
|
|
172
|
+
### 타당한 점 (Strengths)
|
|
173
|
+
- [항목]: [설명] (라인 번호)
|
|
174
|
+
|
|
175
|
+
### 개선 필요 사항 (Issues)
|
|
176
|
+
| 항목 | 위치(라인) | 문제점 | 권장 수정 |
|
|
177
|
+
|------|-----------|--------|----------|
|
|
178
|
+
|
|
179
|
+
### 개방 질문 (Open Questions)
|
|
180
|
+
- [질문 1]
|
|
181
|
+
- [질문 2]
|
|
182
|
+
|
|
183
|
+
### 종합 평가
|
|
184
|
+
[1-2문장 요약]
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Step 3: Codex MCP 첫 실행
|
|
188
|
+
|
|
189
|
+
**mcp__codex__codex 도구 호출:**
|
|
190
|
+
|
|
191
|
+
파라미터:
|
|
192
|
+
- `prompt`: Step 2에서 구성한 전체 프롬프트
|
|
193
|
+
- `sandbox`: "read-only"
|
|
194
|
+
- `cwd`: 프로젝트 루트 경로 (선택)
|
|
195
|
+
|
|
196
|
+
**호출 예시:**
|
|
197
|
+
```
|
|
198
|
+
mcp__codex__codex 도구 호출:
|
|
199
|
+
- prompt: [구성한 프롬프트]
|
|
200
|
+
- sandbox: "read-only"
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**참고:**
|
|
204
|
+
- MCP 도구 응답에서 텍스트 결과를 파싱
|
|
205
|
+
- 타임아웃 발생 시 프롬프트 길이 줄이기
|
|
206
|
+
|
|
207
|
+
### Step 4: Codex 피드백 수신 및 파싱
|
|
208
|
+
|
|
209
|
+
Codex 응답을 다음 구조로 정리:
|
|
210
|
+
- Strengths: 타당한 점 목록
|
|
211
|
+
- Issues: 개선 필요 사항 테이블
|
|
212
|
+
- Open Questions: 개방 질문 목록
|
|
213
|
+
- Summary: 종합 평가
|
|
214
|
+
|
|
215
|
+
### Step 5: Claude Cross-check
|
|
216
|
+
|
|
217
|
+
**Codex가 놓칠 수 있는 항목 검증:**
|
|
218
|
+
|
|
219
|
+
1. **이미 해결된 이슈 확인**
|
|
220
|
+
```bash
|
|
221
|
+
git log --oneline -20
|
|
222
|
+
```
|
|
223
|
+
- PRD에 언급된 이슈가 이미 커밋으로 해결되었는지 확인
|
|
224
|
+
|
|
225
|
+
2. **패키지/의존성 존재 여부 검증**
|
|
226
|
+
- npm: `npm view [패키지명]`
|
|
227
|
+
- pip: `pip show [패키지명]` 또는 PyPI 검색
|
|
228
|
+
- 실제로 존재하지 않는 패키지 언급 여부
|
|
229
|
+
|
|
230
|
+
3. **코드베이스-PRD 동기화 확인**
|
|
231
|
+
- PRD에 언급된 파일/모듈이 실제 존재하는지
|
|
232
|
+
- 기존 구현과 PRD 설계 일치 여부
|
|
233
|
+
|
|
234
|
+
4. **CLAUDE.md 지침 준수 확인**
|
|
235
|
+
- 프로젝트 컨벤션 준수 여부
|
|
236
|
+
- TaskMaster 워크플로우 적합성
|
|
237
|
+
|
|
238
|
+
5. **Codex 틀린 부분 식별**
|
|
239
|
+
- 검증 결과 틀린 내용 목록화
|
|
240
|
+
- 근거 준비 (git commit, 실제 파일 등)
|
|
241
|
+
|
|
242
|
+
### Step 6: 불일치 확인 및 재검토 (컨텍스트 재전달 방식)
|
|
243
|
+
|
|
244
|
+
**불일치 항목이 있으면:**
|
|
245
|
+
|
|
246
|
+
`mcp__codex__codex` 새 세션으로 호출하되, **이전 대화 맥락을 프롬프트에 포함**:
|
|
247
|
+
|
|
248
|
+
#### 재검토 프롬프트 템플릿:
|
|
249
|
+
```
|
|
250
|
+
## 역할
|
|
251
|
+
당신은 PRD 검토 전문가입니다.
|
|
252
|
+
|
|
253
|
+
## 이전 검토 맥락
|
|
254
|
+
|
|
255
|
+
### 1차 검토 결과 요약
|
|
256
|
+
[Codex 1차 응답 핵심 내용 - Strengths, Issues, Questions, Summary]
|
|
257
|
+
|
|
258
|
+
### Claude Cross-check 결과
|
|
259
|
+
[불일치 항목 및 근거]
|
|
260
|
+
|
|
261
|
+
## 재검토 요청
|
|
262
|
+
위 Cross-check 결과를 반영하여 다음 항목만 재검토해주세요:
|
|
263
|
+
1. [불일치 항목 1]
|
|
264
|
+
2. [불일치 항목 2]
|
|
265
|
+
|
|
266
|
+
기존 평가 중 변경이 필요한 부분만 수정된 형식으로 답변해주세요.
|
|
267
|
+
|
|
268
|
+
## 참고 정보
|
|
269
|
+
[필요시 추가 컨텍스트 - 관련 코드, git log 등]
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**MCP 호출:**
|
|
273
|
+
```
|
|
274
|
+
mcp__codex__codex 도구 호출:
|
|
275
|
+
- prompt: [재검토 프롬프트]
|
|
276
|
+
- sandbox: "read-only"
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**핑퐁 종료 조건:**
|
|
280
|
+
- 합의 도달 (불일치 항목 없음)
|
|
281
|
+
- 최대 3회 도달
|
|
282
|
+
- Codex가 Claude의 근거를 수용
|
|
283
|
+
|
|
284
|
+
**반복 횟수 추적:**
|
|
285
|
+
- 1회차: 초기 검토
|
|
286
|
+
- 2회차: 1차 재검토 (이전 맥락 포함)
|
|
287
|
+
- 3회차: 2차 재검토 (마지막)
|
|
288
|
+
|
|
289
|
+
### Step 7: 합의 도출 및 전달
|
|
290
|
+
|
|
291
|
+
**출력 형식:**
|
|
292
|
+
|
|
293
|
+
```markdown
|
|
294
|
+
## PRD 검토 결과 (Codex + Claude 합의)
|
|
295
|
+
|
|
296
|
+
### 검토 과정
|
|
297
|
+
- 핑퐁 횟수: [N]회
|
|
298
|
+
- 합의 상태: [완전 합의 / 부분 합의 / Claude 판단]
|
|
299
|
+
|
|
300
|
+
### [VALID] 타당한 피드백
|
|
301
|
+
| 항목 | 설명 | 출처 |
|
|
302
|
+
|------|------|------|
|
|
303
|
+
|
|
304
|
+
### [ISSUE] 개선 필요 사항
|
|
305
|
+
| 항목 | 문제점 | 권장 수정 | 출처 |
|
|
306
|
+
|------|--------|----------|------|
|
|
307
|
+
|
|
308
|
+
### [CORRECTION] Codex 오류 교정
|
|
309
|
+
| Codex 주장 | 실제 상황 | 근거 |
|
|
310
|
+
|-----------|----------|------|
|
|
311
|
+
|
|
312
|
+
### [DECISION] 결정 필요 사항
|
|
313
|
+
(선택지가 있으면 AskUserQuestion으로 질문)
|
|
314
|
+
|
|
315
|
+
### [SUMMARY] 종합 결론
|
|
316
|
+
[최종 요약]
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## 작업 지침
|
|
322
|
+
|
|
323
|
+
- 한글로 답변
|
|
324
|
+
- 코드나 문서 작성 시 이모지 사용 금지
|
|
325
|
+
- **불명확한 사항은 추측하지 말고 AskUserQuestion으로 질문**
|
|
326
|
+
- PRD 수정 제안은 사용자 확인 후 진행
|
|
327
|
+
- Codex와 Claude 의견 불일치 시 근거를 명확히 제시
|
|
328
|
+
- 검토 기준이 애매하면 사용자에게 우선순위 질문
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## 오류 처리
|
|
333
|
+
|
|
334
|
+
- **PRD 파일 없음**: "파일을 찾을 수 없습니다. 경로를 확인해주세요."
|
|
335
|
+
- **Codex MCP 호출 실패**: "Codex MCP 도구 호출에 실패했습니다. MCP 서버 상태를 확인해주세요."
|
|
336
|
+
- **타임아웃**: "Codex 응답 시간 초과. 프롬프트 길이를 줄이거나 다시 시도해주세요."
|
|
337
|
+
- **재검토 필요**: "이전 맥락을 포함하여 새 세션으로 재검토를 진행합니다."
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Codex MCP 도구 참조
|
|
342
|
+
|
|
343
|
+
### Claude가 사용하는 MCP 도구
|
|
344
|
+
| 도구 | 파라미터 | 설명 |
|
|
345
|
+
|------|----------|------|
|
|
346
|
+
| `mcp__codex__codex` | `prompt`, `sandbox`, `cwd`, `model` 등 | 새 Codex 세션 시작 |
|
|
347
|
+
|
|
348
|
+
**주요 파라미터:**
|
|
349
|
+
- `prompt` (필수): 초기 프롬프트
|
|
350
|
+
- `sandbox`: "read-only" (파일 읽기만 허용, 안전)
|
|
351
|
+
- `cwd`: 작업 디렉토리 (선택)
|
|
352
|
+
- `model`: 모델 지정 (선택, 예: "o3", "o4-mini")
|
|
353
|
+
|
|
354
|
+
**참고:**
|
|
355
|
+
- 핑퐁 시에는 새 세션에 이전 맥락을 프롬프트에 포함하여 호출
|
|
356
|
+
- CLI의 `codex resume`과 달리 MCP에서는 컨텍스트 재전달 방식 사용
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## Cross-check 체크리스트
|
|
361
|
+
|
|
362
|
+
| 검증 항목 | 방법 | 예시 |
|
|
363
|
+
|----------|------|------|
|
|
364
|
+
| 이미 해결된 이슈 | `git log --grep="이슈번호"` | 특정 이슈가 이미 커밋으로 해결됨 |
|
|
365
|
+
| 패키지 존재 여부 | `npm view` / `pip show` | 존재하지 않는 SDK 언급 |
|
|
366
|
+
| 파일/모듈 존재 | `ls`, `find`, `grep` | 특정 어댑터 파일 위치 확인 |
|
|
367
|
+
| 버전 일치 | `package.json`, `requirements.txt` | 명시된 버전과 실제 버전 |
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## 사용 예시
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
# PRD 생성 후 검토
|
|
375
|
+
/tm:convert-prd .taskmaster/docs/my-idea.md
|
|
376
|
+
# prd.md 생성됨
|
|
377
|
+
|
|
378
|
+
/tm:review-prd-with-codex .taskmaster/docs/prd.md
|
|
379
|
+
# Codex MCP 검토 + Claude cross-check + 핑퐁 + 합의 결과 출력
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## 워크플로우 다이어그램
|
|
385
|
+
|
|
386
|
+
```
|
|
387
|
+
[Step 1: 풍부한 컨텍스트 수집]
|
|
388
|
+
|
|
|
389
|
+
v
|
|
390
|
+
[Step 2: 프롬프트 구성]
|
|
391
|
+
|
|
|
392
|
+
v
|
|
393
|
+
[Step 3: Codex MCP 1차 검토] ─────────────────────────┐
|
|
394
|
+
| (mcp__codex__codex) |
|
|
395
|
+
v |
|
|
396
|
+
[Step 4: 피드백 파싱] |
|
|
397
|
+
| |
|
|
398
|
+
v |
|
|
399
|
+
[Step 5: Claude Cross-check] |
|
|
400
|
+
| |
|
|
401
|
+
v |
|
|
402
|
+
[Step 6: 불일치 있음?] |
|
|
403
|
+
| |
|
|
404
|
+
├─ YES & 반복 < 3 ─> [새 MCP 호출 + 컨텍스트 재전달]┘
|
|
405
|
+
| (이전 대화 요약 포함)
|
|
406
|
+
|
|
|
407
|
+
└─ NO 또는 반복 >= 3 ─> [Step 7: 합의 결과 전달]
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**핵심 플로우:**
|
|
411
|
+
1. Codex MCP 검토 실행
|
|
412
|
+
2. Claude가 cross-check로 검증
|
|
413
|
+
3. 불일치 발견 시 새 MCP 호출 (이전 맥락을 프롬프트에 포함)
|
|
414
|
+
4. 합의 도달 또는 최대 3회까지 반복
|
|
415
|
+
5. 최종 결과 전달
|
|
416
|
+
|
|
417
|
+
---
|
|
418
|
+
|
|
419
|
+
## 예상 결과물 예시
|
|
420
|
+
|
|
421
|
+
```markdown
|
|
422
|
+
## PRD 검토 결과 (Codex + Claude 합의)
|
|
423
|
+
|
|
424
|
+
### 검토 과정
|
|
425
|
+
- 핑퐁 횟수: 2회
|
|
426
|
+
- 합의 상태: 완전 합의
|
|
427
|
+
|
|
428
|
+
### [VALID] 타당한 피드백
|
|
429
|
+
| 항목 | 설명 | 출처 |
|
|
430
|
+
|------|------|------|
|
|
431
|
+
| 성공 지표 없음 | Goals에 기능 목표만 있음, 성능/비용 기준 미정의 | Codex |
|
|
432
|
+
| 에러 처리 누락 | API 호출 코드에 예외 처리 없음 | Codex + Claude |
|
|
433
|
+
| 테스트 시나리오 | happy-path만 있고 실패 케이스 없음 | Codex |
|
|
434
|
+
|
|
435
|
+
### [ISSUE] 개선 필요 사항
|
|
436
|
+
| 항목 | 문제점 | 권장 수정 | 출처 |
|
|
437
|
+
|------|--------|----------|------|
|
|
438
|
+
| 의존성 목록 | 존재하지 않는 패키지 언급 | 실제 패키지로 수정 | Claude 검증 |
|
|
439
|
+
| Milestone 상태 | 이미 해결된 이슈 포함 | 완료 표시 또는 제거 | Claude 검증 |
|
|
440
|
+
|
|
441
|
+
### [CORRECTION] Codex 오류 교정
|
|
442
|
+
| Codex 주장 | 실제 상황 | 근거 |
|
|
443
|
+
|-----------|----------|------|
|
|
444
|
+
| 특정 기능 미구현 | 해당 기능 이미 존재 | src/modules/ 폴더 확인 |
|
|
445
|
+
|
|
446
|
+
### [SUMMARY] 종합 결론
|
|
447
|
+
PRD는 구조적으로 양호하나, 비기능 요구사항(성능, 보안, 에러 처리)과
|
|
448
|
+
의존성 정보 업데이트가 필요함. 이미 해결된 이슈는 Milestone에서 제거 권장.
|
|
449
|
+
```
|
|
@@ -28,9 +28,10 @@ Milestone: Phase 2 Core ←── PRD Phase 2 (Task 5-7)
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
**원칙:**
|
|
31
|
-
- **Milestone** = PRD Phase 단위 (
|
|
32
|
-
- **Issue** = 메인 태스크 단위 (
|
|
31
|
+
- **Milestone** = PRD Phase 단위 (PRD에 따라 개수 다름)
|
|
32
|
+
- **Issue** = 메인 태스크 단위 (pending/in-progress 상태만)
|
|
33
33
|
- **Subtask** = Issue 내 체크박스 + TaskMaster 내부 관리
|
|
34
|
+
- **done 상태 태스크** = 동기화에서 제외
|
|
34
35
|
|
|
35
36
|
---
|
|
36
37
|
|
|
@@ -74,33 +75,55 @@ gh issue list --search "in:body \"Task Master 참조\"" --state all --json numbe
|
|
|
74
75
|
task-master list
|
|
75
76
|
```
|
|
76
77
|
|
|
77
|
-
**PRD Phase 매핑 (
|
|
78
|
+
**PRD Phase 매핑 (동적 확인 필요):**
|
|
79
|
+
|
|
80
|
+
실행 전 아래 명령으로 동기화 대상 태스크를 확인합니다:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# pending/in-progress 태스크만 조회 (done 제외)
|
|
84
|
+
task-master list --status pending
|
|
85
|
+
task-master list --status in-progress
|
|
86
|
+
|
|
87
|
+
# 또는 전체 목록에서 상태 확인
|
|
88
|
+
task-master list
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Phase 매핑 작성 방법:**
|
|
92
|
+
1. 해당 PRD 파일(`.taskmaster/docs/`)의 Phase 구조 확인
|
|
93
|
+
2. `task-master list` 결과에서 실제 Task ID 범위 확인
|
|
94
|
+
3. 아래 템플릿에 맞춰 매핑 테이블 작성
|
|
78
95
|
|
|
79
96
|
| Phase | TaskMaster Task IDs | 설명 |
|
|
80
97
|
|-------|---------------------|------|
|
|
81
|
-
| Phase
|
|
82
|
-
|
|
|
83
|
-
|
|
84
|
-
|
|
98
|
+
| [PRD Phase 이름] | task N, N+1, ... | [PRD에서 확인] |
|
|
99
|
+
| ... | ... | ... |
|
|
100
|
+
|
|
101
|
+
**참고 - 버전별 Milestone 접두어:**
|
|
102
|
+
- 기존 v1 PRD 태스크: `Phase 1: MVP`, `Phase 2: Core` 등
|
|
103
|
+
- v2 이후 PRD 태스크: `V2 Phase 1: ...`, `V3 Phase 1: ...` 등으로 구분 권장
|
|
85
104
|
|
|
86
105
|
### 3. 변환 계획 수립 및 사용자 확인
|
|
87
106
|
|
|
88
107
|
아래 형식으로 변환 계획을 출력하고 **반드시 사용자 확인** 요청:
|
|
89
108
|
|
|
90
109
|
```
|
|
91
|
-
[
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
110
|
+
[PRD 정보]
|
|
111
|
+
- 파일: .taskmaster/docs/<prd-파일명>.md
|
|
112
|
+
- 버전: V2 (또는 해당 버전)
|
|
113
|
+
|
|
114
|
+
[동기화 대상 태스크]
|
|
115
|
+
- Task ID 범위: N ~ M (pending/in-progress 상태)
|
|
116
|
+
- 총 태스크 수: X개
|
|
117
|
+
|
|
118
|
+
[Milestone 생성 계획] (Phase 수에 따라)
|
|
119
|
+
- [버전] Phase 1: [이름] (task N-M 포함)
|
|
120
|
+
- [버전] Phase 2: [이름] (task N-M 포함)
|
|
121
|
+
- ...
|
|
122
|
+
|
|
123
|
+
[Issue 생성 계획] (태스크 수에 따라)
|
|
124
|
+
[버전] Phase 1 하위:
|
|
125
|
+
- Issue: [타입] task N - [태스크 제목]
|
|
126
|
+
- Issue: [타입] task N+1 - [태스크 제목]
|
|
104
127
|
...
|
|
105
128
|
```
|
|
106
129
|
|
|
@@ -217,16 +240,17 @@ gh issue create \
|
|
|
217
240
|
|
|
218
241
|
### 6. 의존성 연결 및 ID 매핑 기록
|
|
219
242
|
|
|
220
|
-
**Issue 생성 순서**:
|
|
243
|
+
**Issue 생성 순서**: 동기화 대상 태스크 중 가장 낮은 ID부터 순서대로 생성
|
|
221
244
|
|
|
222
245
|
| TaskMaster ID | GitHub Issue | 제목 |
|
|
223
246
|
|---------------|--------------|------|
|
|
224
|
-
| task
|
|
225
|
-
| task
|
|
247
|
+
| task N | #X | [태스크 제목] |
|
|
248
|
+
| task N+1 | #X+1 | [태스크 제목] |
|
|
226
249
|
| ... | ... | ... |
|
|
227
250
|
|
|
228
251
|
**의존성 변환:**
|
|
229
|
-
-
|
|
252
|
+
- 동기화 대상 내 의존성: Issue 본문에 "선행 작업: #X (task N)"
|
|
253
|
+
- done 상태 태스크 의존성: Issue 본문에 "선행 작업: task N (완료됨)" - GitHub Issue 없음
|
|
230
254
|
|
|
231
255
|
### 7. 결과 보고 및 매핑 테이블 출력
|
|
232
256
|
|
|
@@ -235,23 +259,22 @@ gh issue create \
|
|
|
235
259
|
```
|
|
236
260
|
[동기화 완료]
|
|
237
261
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
- Phase 2: Core Features
|
|
241
|
-
- Phase 3: UX Enhancement
|
|
242
|
-
- Phase 4: Deploy
|
|
262
|
+
PRD: .taskmaster/docs/<파일명>.md
|
|
263
|
+
버전: [V1/V2/...]
|
|
243
264
|
|
|
244
|
-
|
|
265
|
+
Milestones ([개수]개):
|
|
266
|
+
- [버전] Phase 1: [이름]
|
|
267
|
+
- [버전] Phase 2: [이름]
|
|
268
|
+
- ...
|
|
269
|
+
|
|
270
|
+
Issues ([개수]개):
|
|
245
271
|
| GitHub Issue | TaskMaster | 제목 | Milestone |
|
|
246
272
|
|--------------|------------|------|-----------|
|
|
247
|
-
| #
|
|
248
|
-
| #
|
|
249
|
-
| #N+2 | task 3 | 공통 레이아웃 및 네비게이션 | Phase 1: MVP |
|
|
250
|
-
| #N+3 | task 4 | 인증 시스템 구현 | Phase 1: MVP |
|
|
251
|
-
| #N+4 | task 5 | 대시보드 홈 구현 | Phase 2: Core |
|
|
273
|
+
| #X | task N | [태스크 제목] | [버전] Phase 1: [이름] |
|
|
274
|
+
| #X+1 | task N+1 | [태스크 제목] | [버전] Phase 1: [이름] |
|
|
252
275
|
| ... | ... | ... | ... |
|
|
253
276
|
|
|
254
|
-
(
|
|
277
|
+
(X = 기존 최대 Issue/PR 번호 + 1, N = 동기화 대상 시작 Task ID)
|
|
255
278
|
```
|
|
256
279
|
|
|
257
280
|
**생성 후 검증:**
|
|
@@ -273,9 +296,9 @@ gh issue view <번호> --json body | grep "Task Master 참조"
|
|
|
273
296
|
## 옵션 처리
|
|
274
297
|
|
|
275
298
|
### 아규먼트
|
|
276
|
-
- ARGUMENTS 비어있음: 전체 Task
|
|
277
|
-
- ARGUMENTS가 Phase 번호: 해당 Phase만 (예: phase1, 1)
|
|
278
|
-
- ARGUMENTS가 Task ID: 해당 Task만 (예: task
|
|
299
|
+
- ARGUMENTS 비어있음: 동기화 대상 전체 Task (pending/in-progress 상태)
|
|
300
|
+
- ARGUMENTS가 Phase 번호: 해당 Phase만 (예: phase1, 1, v2-phase1)
|
|
301
|
+
- ARGUMENTS가 Task ID: 해당 Task만 (예: task 11, 11,12,13)
|
|
279
302
|
|
|
280
303
|
### 상태 필터
|
|
281
304
|
- pending, in-progress 상태만 동기화
|
|
@@ -283,6 +306,31 @@ gh issue view <번호> --json body | grep "Task Master 참조"
|
|
|
283
306
|
|
|
284
307
|
---
|
|
285
308
|
|
|
309
|
+
## 작업 지침
|
|
310
|
+
|
|
311
|
+
- 한글로 답할 것, Issue 제목/본문도 한글로 작성할 것
|
|
312
|
+
- 코드나 문서 작성 시 이모지 사용 금지
|
|
313
|
+
- 불명확한 사항은 추측하지 말고 AskUserQuestion 도구로 질문
|
|
314
|
+
- 커밋, PR, 이슈에 'Generated with Claude', 'Co-Authored-By: Claude' 등 Claude attribution 금지
|
|
315
|
+
|
|
316
|
+
### 한글 인코딩 주의사항
|
|
317
|
+
|
|
318
|
+
**문제**: `gh issue create --title` 명령에서 한글이 가끔 `\uXXXX` 유니코드 이스케이프로 깨짐
|
|
319
|
+
|
|
320
|
+
**대응 방법**: Issue 생성 완료 후 제목이 깨졌는지 확인하고, 깨진 경우 `gh issue edit`로 수정
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
# Issue 생성 후 제목 확인
|
|
324
|
+
gh issue list --state open --limit 10 --json number,title
|
|
325
|
+
|
|
326
|
+
# 제목이 깨진 경우 수정
|
|
327
|
+
gh issue edit <번호> --title "[bugfix] 다크모드 비디오 재생 버튼 색상 수정"
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**체크포인트**: 모든 Issue 생성 완료 후 `gh issue list`로 제목 확인 필수
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
286
334
|
## 주의사항
|
|
287
335
|
|
|
288
336
|
1. **중복 생성 방지**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yeongjaeyou/claude-code-config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Claude Code CLI custom commands, agents, and skills",
|
|
5
5
|
"bin": {
|
|
6
6
|
"claude-code-config": "./bin/cli.js"
|
|
@@ -25,5 +25,8 @@
|
|
|
25
25
|
"bugs": {
|
|
26
26
|
"url": "https://github.com/YoungjaeDev/claude-code-config/issues"
|
|
27
27
|
},
|
|
28
|
-
"homepage": "https://github.com/YoungjaeDev/claude-code-config#readme"
|
|
28
|
+
"homepage": "https://github.com/YoungjaeDev/claude-code-config#readme",
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
}
|
|
29
32
|
}
|