@kood/claude-code 0.4.0 → 0.5.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/dist/index.js +53 -7
- package/package.json +2 -1
- package/templates/.claude/PARALLEL_AGENTS.md +737 -0
- package/templates/.claude/agents/analyst.md +416 -0
- package/templates/.claude/agents/architect.md +569 -0
- package/templates/.claude/agents/code-reviewer.md +132 -133
- package/templates/.claude/agents/dependency-manager.md +93 -94
- package/templates/.claude/agents/deployment-validator.md +64 -65
- package/templates/.claude/agents/designer.md +655 -0
- package/templates/.claude/agents/document-writer.md +500 -0
- package/templates/.claude/agents/explore.md +499 -0
- package/templates/.claude/agents/git-operator.md +74 -75
- package/templates/.claude/agents/implementation-executor.md +138 -109
- package/templates/.claude/agents/ko-to-en-translator.md +18 -22
- package/templates/.claude/agents/lint-fixer.md +250 -93
- package/templates/.claude/agents/planner.md +356 -0
- package/templates/.claude/agents/refactor-advisor.md +135 -136
- package/templates/.claude/commands/bug-fix.md +296 -207
- package/templates/.claude/commands/git-all.md +199 -46
- package/templates/.claude/commands/git-session.md +113 -57
- package/templates/.claude/commands/lint-fix.md +219 -153
- package/templates/.claude/commands/lint-init.md +113 -76
- package/templates/.claude/commands/pre-deploy.md +190 -124
- package/templates/.claude/commands/refactor.md +407 -162
- package/templates/.claude/commands/version-update.md +138 -37
- package/templates/.claude/instructions/context-engineering/ANTHROPIC_CONTEXT_ENGINEERING.md +178 -0
- package/templates/.claude/instructions/context-engineering/references/claude-4x.md +215 -0
- package/templates/.claude/instructions/context-engineering/references/core-principles.md +137 -0
- package/templates/.claude/instructions/context-engineering/references/examples.md +351 -0
- package/templates/.claude/instructions/context-engineering/references/techniques.md +162 -0
- package/templates/.claude/instructions/parallel-agent-execution.md +874 -0
- package/templates/.claude/skills/docs-creator/AGENTS.md +238 -0
- package/templates/.claude/{commands/docs-creator.md → skills/docs-creator/SKILL.md} +61 -75
- package/templates/.claude/skills/docs-refactor/AGENTS.md +270 -0
- package/templates/.claude/{commands/docs-refactor.md → skills/docs-refactor/SKILL.md} +30 -44
- package/templates/.claude/skills/execute/SKILL.md +451 -0
- package/templates/.claude/skills/figma-to-code/AGENTS.md +287 -0
- package/templates/.claude/skills/figma-to-code/SKILL.md +225 -225
- package/templates/.claude/skills/figma-to-code/references/design-tokens.md +75 -73
- package/templates/.claude/skills/figma-to-code/references/figma-mcp-tools.md +73 -73
- package/templates/.claude/skills/figma-to-code/references/layout-mapping.md +104 -104
- package/templates/.claude/skills/figma-to-code/references/responsive-design.md +99 -99
- package/templates/.claude/skills/figma-to-code/references/verification.md +91 -91
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +317 -0
- package/templates/.claude/skills/global-uiux-design/SKILL.md +738 -0
- package/templates/.claude/skills/global-uiux-design/references/accessibility.md +401 -0
- package/templates/.claude/skills/global-uiux-design/references/color-system.md +275 -0
- package/templates/.claude/skills/global-uiux-design/references/design-philosophy.md +206 -0
- package/templates/.claude/skills/global-uiux-design/references/design-systems.md +446 -0
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +307 -0
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +170 -0
- package/templates/.claude/skills/nextjs-react-best-practices/AGENTS.md +95 -116
- package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +134 -152
- package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-event-handler-refs.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-use-latest.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-api-routes.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-defer-await.md +22 -22
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-dependencies.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-parallel.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-suspense-boundaries.md +21 -21
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-barrel-imports.md +18 -18
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-conditional.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-defer-third-party.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-dynamic-imports.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-preload.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/client-event-listeners.md +9 -9
- package/templates/.claude/skills/nextjs-react-best-practices/rules/client-swr-dedup.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-batch-dom-css.md +13 -13
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-function-results.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-property-access.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-storage.md +10 -10
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-combine-iterations.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-early-exit.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-hoist-regexp.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-index-maps.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-length-check-first.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-min-max-loop.md +16 -16
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-set-map-lookups.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-tosorted-immutable.md +17 -17
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-activity.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-conditional-render.md +8 -8
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-content-visibility.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hydration-no-flicker.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-svg-precision.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-defer-reads.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-dependencies.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-derived-state.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-functional-setstate.md +34 -34
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-memo.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-transitions.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-after-nonblocking.md +24 -24
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-lru.md +10 -10
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-react.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-parallel-fetching.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-serialization.md +6 -6
- package/templates/.claude/skills/plan/SKILL.md +594 -0
- package/templates/.claude/skills/prd/SKILL.md +496 -0
- package/templates/.claude/skills/ralph/AGENTS.md +393 -0
- package/templates/.claude/skills/ralph/SKILL.md +1035 -0
- package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +100 -121
- package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +139 -157
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-defer-await.md +22 -22
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-dependencies.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-loader.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-parallel.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-barrel-imports.md +18 -18
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-conditional.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-lazy-routes.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-preload.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-event-listeners.md +9 -9
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-tanstack-query.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-batch-dom-css.md +13 -13
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-function-results.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-property-access.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-storage.md +10 -10
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-combine-iterations.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-early-exit.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-hoist-regexp.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-index-maps.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-length-check-first.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-min-max-loop.md +16 -16
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-set-map-lookups.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-tosorted-immutable.md +17 -17
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-conditional-render.md +8 -8
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-content-visibility.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-svg-precision.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-defer-reads.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-dependencies.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-derived-state.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-functional-setstate.md +34 -34
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-memo.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-transitions.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-cache-lru.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-parallel-fetching.md +9 -9
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +6 -6
- package/templates/.claude/commands/agent-creator.md +0 -370
- package/templates/.claude/commands/command-creator.md +0 -524
- package/templates/.claude/commands/execute.md +0 -469
- package/templates/.claude/commands/git.md +0 -98
- package/templates/.claude/commands/plan.md +0 -531
- package/templates/.claude/commands/prd.md +0 -629
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
# PRD Skill
|
|
2
|
+
|
|
3
|
+
> Product Requirements Document 생성
|
|
4
|
+
|
|
5
|
+
<when_to_use>
|
|
6
|
+
|
|
7
|
+
| 시나리오 | 설명 |
|
|
8
|
+
|---------|------|
|
|
9
|
+
| **신규 기능** | 3개 이상 파일 수정이 예상되는 기능 |
|
|
10
|
+
| **아키텍처 변경** | 새로운 시스템/모듈 추가 |
|
|
11
|
+
| **복잡한 요구사항** | 다중 의존성, 여러 팀 협업 |
|
|
12
|
+
| **기획 문서화** | 아이디어/회의 메모를 구조화된 문서로 변환 |
|
|
13
|
+
|
|
14
|
+
**호출 시점**: 구현 전 요구사항 정리, 팀 커뮤니케이션, 의사결정 기록
|
|
15
|
+
|
|
16
|
+
</when_to_use>
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
<parallel_agent_execution>
|
|
21
|
+
|
|
22
|
+
## 병렬 Agent 실행
|
|
23
|
+
|
|
24
|
+
PRD 작성 시 여러 Agent를 병렬로 실행하여 효율성 향상.
|
|
25
|
+
|
|
26
|
+
### Recommended Agents
|
|
27
|
+
|
|
28
|
+
| Agent | Model | 용도 |
|
|
29
|
+
|-------|-------|------|
|
|
30
|
+
| **@analyst** | sonnet/opus | 요구사항 분석, 문제 정의 |
|
|
31
|
+
| **@document-writer** | sonnet | PRD 작성, 문서화 |
|
|
32
|
+
| **@explore** | haiku | 기존 문서/코드 조사 |
|
|
33
|
+
| **@architect** | sonnet | 기술 아키텍처 검토 |
|
|
34
|
+
|
|
35
|
+
### Parallel Execution Patterns
|
|
36
|
+
|
|
37
|
+
| 패턴 | 조합 | 시나리오 |
|
|
38
|
+
|------|------|----------|
|
|
39
|
+
| **조사 + 분석** | explore + analyst | 기존 구조 파악 + 요구사항 분석 |
|
|
40
|
+
| **다중 기능 PRD** | document-writer x N | 독립적인 기능마다 병렬 작성 |
|
|
41
|
+
| **분석 + 아키텍처** | analyst + architect | 요구사항 분석 + 기술 검토 동시 진행 |
|
|
42
|
+
|
|
43
|
+
### Model Routing
|
|
44
|
+
|
|
45
|
+
| 복잡도 | Model | 기준 |
|
|
46
|
+
|--------|-------|------|
|
|
47
|
+
| **LOW** | haiku/sonnet | 단순 기능 PRD (CRUD, 단일 화면) |
|
|
48
|
+
| **MEDIUM** | sonnet | 일반 기능 PRD (다중 화면, API 통합) |
|
|
49
|
+
| **HIGH** | opus | 복잡한 시스템 PRD (신규 아키텍처, 다중 의존성) |
|
|
50
|
+
|
|
51
|
+
### Practical Examples
|
|
52
|
+
|
|
53
|
+
#### 조사 + 분석 병렬
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// ✅ 기존 인증 구조 조사 + 신규 요구사항 분석
|
|
57
|
+
Task({
|
|
58
|
+
subagent_type: 'explore',
|
|
59
|
+
model: 'haiku',
|
|
60
|
+
prompt: '기존 인증 구조 조사 (Better Auth, 미들웨어, 세션 관리)'
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
Task({
|
|
64
|
+
subagent_type: 'analyst',
|
|
65
|
+
model: 'sonnet',
|
|
66
|
+
prompt: '소셜 로그인 추가 요구사항 분석 (Google, GitHub)'
|
|
67
|
+
})
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
#### 다중 기능 PRD 병렬
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// ✅ 독립적인 기능마다 PRD 작성
|
|
74
|
+
Task({
|
|
75
|
+
subagent_type: 'document-writer',
|
|
76
|
+
model: 'sonnet',
|
|
77
|
+
prompt: 'User 관리 PRD 작성 (프로필 편집, 권한 관리)'
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
Task({
|
|
81
|
+
subagent_type: 'document-writer',
|
|
82
|
+
model: 'sonnet',
|
|
83
|
+
prompt: 'Payment 연동 PRD 작성 (결제 플로우, 환불 처리)'
|
|
84
|
+
})
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### 분석 + 아키텍처 병렬
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// ✅ 요구사항 분석 + 기술 아키텍처 검토
|
|
91
|
+
Task({
|
|
92
|
+
subagent_type: 'analyst',
|
|
93
|
+
model: 'sonnet',
|
|
94
|
+
prompt: '실시간 알림 요구사항 분석 (사용자 니즈, 우선순위)'
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
Task({
|
|
98
|
+
subagent_type: 'architect',
|
|
99
|
+
model: 'sonnet',
|
|
100
|
+
prompt: '실시간 알림 기술 아키텍처 검토 (WebSocket vs SSE vs Firebase)'
|
|
101
|
+
})
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### 복잡한 시스템 PRD
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// ✅ 조사 → 분석 → PRD 작성 (순차 + 병렬)
|
|
108
|
+
// 1단계: 조사 (병렬)
|
|
109
|
+
Task({ subagent_type: 'explore', model: 'haiku', prompt: '현재 데이터 구조 조사' })
|
|
110
|
+
Task({ subagent_type: 'explore', model: 'haiku', prompt: '기존 통합 API 조사' })
|
|
111
|
+
|
|
112
|
+
// 2단계: 분석 + 아키텍처 (병렬)
|
|
113
|
+
Task({ subagent_type: 'analyst', model: 'opus', prompt: '신규 시스템 요구사항 분석' })
|
|
114
|
+
Task({ subagent_type: 'architect', model: 'sonnet', prompt: '기술 스택 및 아키텍처 검토' })
|
|
115
|
+
|
|
116
|
+
// 3단계: PRD 작성
|
|
117
|
+
Task({ subagent_type: 'document-writer', model: 'sonnet', prompt: '통합 PRD 작성' })
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
</parallel_agent_execution>
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
<workflow>
|
|
125
|
+
|
|
126
|
+
## 실행 흐름
|
|
127
|
+
|
|
128
|
+
| 단계 | 작업 | 도구 |
|
|
129
|
+
|------|------|------|
|
|
130
|
+
| 1 | 복잡도 판단 및 PRD 구조 계획 | Sequential Thinking (3-5단계) |
|
|
131
|
+
| 2 | 코드베이스/문서 조사 (필요시) | Task (Explore) |
|
|
132
|
+
| 3 | 병렬 Agent 실행 (복잡한 경우) | Task (analyst, architect, document-writer) |
|
|
133
|
+
| 4 | 15개 섹션 구조로 PRD 작성 | Write → `.claude/plans/` 또는 `docs/prd/` |
|
|
134
|
+
|
|
135
|
+
**핵심 원칙**:
|
|
136
|
+
- 짧고 명확한 문장, 구체적 예시
|
|
137
|
+
- User Stories + Functional + Non-functional 구분
|
|
138
|
+
- 현재값 → 목표값 형태 지표
|
|
139
|
+
- 불확실한 부분은 Open Questions에 명시
|
|
140
|
+
|
|
141
|
+
</workflow>
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
<prd_structure>
|
|
146
|
+
|
|
147
|
+
## PRD 15개 섹션 구조
|
|
148
|
+
|
|
149
|
+
### 1. 메타데이터
|
|
150
|
+
제목, 작성자, 버전, 날짜, 관련 문서 링크
|
|
151
|
+
|
|
152
|
+
### 2. 비전 & 배경
|
|
153
|
+
- 제품 비전 (1-2문장)
|
|
154
|
+
- 배경/컨텍스트 (왜 지금?)
|
|
155
|
+
- 기존 한계 (간단히)
|
|
156
|
+
|
|
157
|
+
### 3. 문제 정의 & 목표
|
|
158
|
+
- **문제**: 어떤 문제/기회 (유저 피드백, 지표)
|
|
159
|
+
- **목표**: 측정 가능한 KPI (비즈니스/사용자)
|
|
160
|
+
|
|
161
|
+
### 4. 범위 (Scope)
|
|
162
|
+
- **In Scope**: P0/P1 기능
|
|
163
|
+
- **Out of Scope**: 후속 릴리즈
|
|
164
|
+
|
|
165
|
+
### 5. 타깃 유저 & 페르소나
|
|
166
|
+
- 주요 세그먼트
|
|
167
|
+
- 페르소나 (이름, 역할, 목표, Pain Point)
|
|
168
|
+
- Primary Persona
|
|
169
|
+
|
|
170
|
+
### 6. 사용자 여정 & 시나리오
|
|
171
|
+
- 여정 단계 (해당 구간 표시)
|
|
172
|
+
- 대표 시나리오 (사용자 목적과 단계)
|
|
173
|
+
|
|
174
|
+
### 7. 기능 요구사항
|
|
175
|
+
각 기능마다:
|
|
176
|
+
- **User Stories**: As a [유저], I want to [행동] so that [가치]
|
|
177
|
+
- **기능 설명**: Happy Path, Alternative Flow, Edge Case
|
|
178
|
+
- **Functional Requirements**: 시스템 동작 명세
|
|
179
|
+
- **Non-functional Requirements**: 성능, 보안, 사용성
|
|
180
|
+
|
|
181
|
+
### 8. UX/UI 요구사항
|
|
182
|
+
- 핵심 원칙 (디자인 제약)
|
|
183
|
+
- 필수 정보/액션
|
|
184
|
+
- 접근성 (다국어, 키보드, 대비)
|
|
185
|
+
|
|
186
|
+
### 9. 기술/데이터 요구사항
|
|
187
|
+
- 기술 스택, 통합/의존성
|
|
188
|
+
- 데이터 구조 (엔티티)
|
|
189
|
+
- 보안/규제 (인증, 개인정보)
|
|
190
|
+
|
|
191
|
+
### 10. 성공 지표 & KPI
|
|
192
|
+
|
|
193
|
+
| 지표 | 현재값 | 목표값 | 측정 방법 |
|
|
194
|
+
|------|--------|--------|----------|
|
|
195
|
+
| ... | ... | ... | ... |
|
|
196
|
+
|
|
197
|
+
### 11. 리스크, 가정, 의존성
|
|
198
|
+
- 가정 (전제 조건)
|
|
199
|
+
- 리스크 (기술/비즈니스/UX, 완화 방안)
|
|
200
|
+
- 의존성 (다른 팀/프로젝트)
|
|
201
|
+
|
|
202
|
+
### 12. 릴리즈 전략 & 마일스톤
|
|
203
|
+
- 릴리즈 전략 (전체/단계적/A/B)
|
|
204
|
+
- 마일스톤 (타임라인)
|
|
205
|
+
- 롤백 계획 (Feature Flag)
|
|
206
|
+
|
|
207
|
+
### 13. 오픈 이슈 & Todo
|
|
208
|
+
|
|
209
|
+
| 질문 | 결정자 | 기한 |
|
|
210
|
+
|------|--------|------|
|
|
211
|
+
| ... | ... | ... |
|
|
212
|
+
|
|
213
|
+
### 14. 작성 스타일 가이드
|
|
214
|
+
- 짧고 명확한 문장, 수식어 제거
|
|
215
|
+
- "좋은 UX" → 구체적 기준/예시
|
|
216
|
+
- 트레이드오프 선택 이유 명시
|
|
217
|
+
|
|
218
|
+
### 15. Claude 최종 지시
|
|
219
|
+
- 15개 섹션 구조 준수
|
|
220
|
+
- 기능/요구사항: User Stories + Functional + Non-functional
|
|
221
|
+
- 불명확한 부분 → Open Questions
|
|
222
|
+
- 기존 PRD 수정 시 → Change log
|
|
223
|
+
|
|
224
|
+
</prd_structure>
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
<template>
|
|
229
|
+
|
|
230
|
+
## PRD 템플릿
|
|
231
|
+
|
|
232
|
+
```markdown
|
|
233
|
+
# [제품/기능명] PRD
|
|
234
|
+
|
|
235
|
+
## 메타데이터
|
|
236
|
+
|
|
237
|
+
| 항목 | 내용 |
|
|
238
|
+
|------|------|
|
|
239
|
+
| **작성자** | [이름] |
|
|
240
|
+
| **버전** | v0.1 |
|
|
241
|
+
| **작성일** | YYYY-MM-DD |
|
|
242
|
+
| **수정일** | YYYY-MM-DD |
|
|
243
|
+
| **관련 문서** | [링크] |
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 1. 비전 & 배경
|
|
248
|
+
|
|
249
|
+
**비전**: [1-2문장]
|
|
250
|
+
|
|
251
|
+
**배경**: [왜 지금 하는지]
|
|
252
|
+
|
|
253
|
+
**기존 한계**: [간단히]
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 2. 문제 정의 & 목표
|
|
258
|
+
|
|
259
|
+
### 문제
|
|
260
|
+
[어떤 문제/기회]
|
|
261
|
+
|
|
262
|
+
**인사이트**:
|
|
263
|
+
- 유저 피드백: [요약]
|
|
264
|
+
- 지표: 전환율 15%, 이탈률 50%
|
|
265
|
+
|
|
266
|
+
### 목표
|
|
267
|
+
|
|
268
|
+
| 분류 | 목표 |
|
|
269
|
+
|------|------|
|
|
270
|
+
| **비즈니스** | 결제 완료율 +5% |
|
|
271
|
+
| **사용자** | 작업 시간 30% 단축 |
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## 3. 범위
|
|
276
|
+
|
|
277
|
+
### In Scope (P0/P1)
|
|
278
|
+
- [ ] 기능 1 (P0)
|
|
279
|
+
- [ ] 기능 2 (P1)
|
|
280
|
+
|
|
281
|
+
### Out of Scope
|
|
282
|
+
- 기능 X (후속 릴리즈)
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## 4. 타깃 유저 & 페르소나
|
|
287
|
+
|
|
288
|
+
### 주요 세그먼트
|
|
289
|
+
- 세그먼트 1
|
|
290
|
+
- 세그먼트 2
|
|
291
|
+
|
|
292
|
+
### 페르소나
|
|
293
|
+
|
|
294
|
+
**이름**: 김OO
|
|
295
|
+
**역할**: 소규모 쇼핑몰 운영자
|
|
296
|
+
**목표**: 재고 관리 자동화
|
|
297
|
+
**Pain Point**: 수동 입력 시간 과다
|
|
298
|
+
|
|
299
|
+
**Primary Persona**: 김OO
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 5. 사용자 여정 & 시나리오
|
|
304
|
+
|
|
305
|
+
### 여정 단계
|
|
306
|
+
`랜딩 → [가입 → 첫 세팅] → 핵심 기능 → 반복 → 업그레이드`
|
|
307
|
+
|
|
308
|
+
### 대표 시나리오
|
|
309
|
+
사용자는 재고를 빠르게 등록하기 위해 앱을 연다.
|
|
310
|
+
...
|
|
311
|
+
5분 안에 100개 상품을 등록할 수 있다.
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 6. 기능 요구사항
|
|
316
|
+
|
|
317
|
+
### 기능 1: [이름]
|
|
318
|
+
|
|
319
|
+
**설명**: [1-2문장]
|
|
320
|
+
|
|
321
|
+
**목표**: [어떤 문제 해결]
|
|
322
|
+
|
|
323
|
+
**우선순위**: P0
|
|
324
|
+
|
|
325
|
+
#### User Stories
|
|
326
|
+
- As a 쇼핑몰 운영자, I want to 엑셀로 재고를 일괄 등록 so that 시간을 절약할 수 있다
|
|
327
|
+
|
|
328
|
+
#### 기능 설명
|
|
329
|
+
- 엑셀 파일 업로드 (최대 1,000행)
|
|
330
|
+
- 검증: 필수 필드, 중복 체크
|
|
331
|
+
- 성공/실패 피드백
|
|
332
|
+
|
|
333
|
+
#### Functional Requirements
|
|
334
|
+
- 시스템은 엑셀 업로드 시 필수 필드(상품명, 가격) 검증해야 함
|
|
335
|
+
- 중복 상품은 경고 표시 후 사용자 선택(덮어쓰기/건너뛰기)
|
|
336
|
+
- 성공 시 재고 목록 페이지로 이동
|
|
337
|
+
|
|
338
|
+
#### Non-functional Requirements
|
|
339
|
+
- 성능: 1,000행 처리 < 3초
|
|
340
|
+
- 보안: 파일 크기 제한 5MB
|
|
341
|
+
- 사용성: 진행률 표시
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
### 기능 2: [이름]
|
|
346
|
+
...
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## 7. UX/UI 요구사항
|
|
351
|
+
|
|
352
|
+
| 항목 | 내용 |
|
|
353
|
+
|------|------|
|
|
354
|
+
| **핵심 원칙** | 간편함 우선, 3클릭 이내 완료 |
|
|
355
|
+
| **필수 정보** | 진행률 바, 에러 메시지 |
|
|
356
|
+
| **접근성** | 키보드 네비게이션, 한/영 지원 |
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## 8. 기술/데이터 요구사항
|
|
361
|
+
|
|
362
|
+
| 항목 | 내용 |
|
|
363
|
+
|------|------|
|
|
364
|
+
| **기술 스택** | React, TanStack Query, Prisma |
|
|
365
|
+
| **통합** | Excel Parser (xlsx.js) |
|
|
366
|
+
| **데이터** | Product 테이블 (name, price, quantity) |
|
|
367
|
+
| **보안** | JWT 인증, File validation |
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## 9. 성공 지표 & KPI
|
|
372
|
+
|
|
373
|
+
| 지표 | 현재값 | 목표값 | 측정 방법 |
|
|
374
|
+
|------|--------|--------|----------|
|
|
375
|
+
| 등록 시간 | 평균 15분 | 5분 이하 | 업로드 완료 이벤트 |
|
|
376
|
+
| 에러율 | 30% | 10% 이하 | 실패 업로드 / 전체 |
|
|
377
|
+
| 주간 활성 | 500명 | 800명 | GA 이벤트 |
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## 10. 리스크, 가정, 의존성
|
|
382
|
+
|
|
383
|
+
| 분류 | 내용 |
|
|
384
|
+
|------|------|
|
|
385
|
+
| **가정** | 사용자는 엑셀 형식을 알고 있음 |
|
|
386
|
+
| **리스크** | 대용량 파일 처리 성능 (완화: 행 수 제한) |
|
|
387
|
+
| **의존성** | xlsx.js 라이브러리 |
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## 11. 릴리즈 전략
|
|
392
|
+
|
|
393
|
+
**전략**: 단계적 롤아웃 (베타 → GA)
|
|
394
|
+
|
|
395
|
+
**마일스톤**:
|
|
396
|
+
- 설계 완료: 2025-02-20
|
|
397
|
+
- 베타 릴리즈: 2025-03-10 (100명)
|
|
398
|
+
- GA: 2025-03-25
|
|
399
|
+
|
|
400
|
+
**롤백**: Feature Flag 사용
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## 12. 오픈 이슈
|
|
405
|
+
|
|
406
|
+
| 질문 | 결정자 | 기한 |
|
|
407
|
+
|------|--------|------|
|
|
408
|
+
| 엑셀 템플릿 제공 여부 | PM | 2025-02-15 |
|
|
409
|
+
| 에러 메시지 문구 확정 | UX | 2025-02-20 |
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
</template>
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
<examples>
|
|
417
|
+
|
|
418
|
+
## 실전 예시
|
|
419
|
+
|
|
420
|
+
### 예시 1: 사용자 프로필 편집
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
사용자: 사용자 프로필 편집 기능 PRD 작성
|
|
424
|
+
|
|
425
|
+
1. Sequential Thinking (5단계):
|
|
426
|
+
thought 1: "프로필 편집 - 보통 복잡도, CRUD 기본 기능"
|
|
427
|
+
thought 2: "현재 User 모델 확인 필요, 인증 방식 파악"
|
|
428
|
+
thought 3: "편집 가능 필드: 이름, 이메일, 프로필 이미지"
|
|
429
|
+
thought 4: "검증: 이메일 중복, 이미지 크기, 형식"
|
|
430
|
+
thought 5: "API: PUT /api/user/:id, 클라이언트: useQuery + useMutation"
|
|
431
|
+
|
|
432
|
+
2. Task 탐색:
|
|
433
|
+
Task (Explore): "User 모델 및 인증 구조 분석"
|
|
434
|
+
|
|
435
|
+
3. PRD 작성:
|
|
436
|
+
→ .claude/plans/profile-edit-prd.md
|
|
437
|
+
|
|
438
|
+
4. 주요 섹션:
|
|
439
|
+
- 문제: 사용자가 정보를 수정할 방법이 없음
|
|
440
|
+
- 목표: 프로필 편집 완료율 90% 이상
|
|
441
|
+
- 기능: 이름/이메일/이미지 편집, 실시간 검증
|
|
442
|
+
- KPI: 편집 완료율, 에러율
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### 예시 2: 실시간 알림
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
사용자: 실시간 알림 시스템 PRD 작성
|
|
449
|
+
|
|
450
|
+
1. Sequential Thinking (7단계):
|
|
451
|
+
thought 1: "실시간 알림 - 복잡도 높음, 새 인프라 필요"
|
|
452
|
+
thought 2: "현재 통신: REST만, 폴링 없음"
|
|
453
|
+
thought 3: "제약: 서버 부하, 클라이언트 연결 관리"
|
|
454
|
+
thought 4: "접근: WebSocket vs SSE vs Firebase"
|
|
455
|
+
thought 5: "WebSocket - 양방향, 복잡. SSE - 단방향, 간단"
|
|
456
|
+
thought 6: "옵션 3개: WebSocket(추천), SSE, Firebase"
|
|
457
|
+
thought 7: "WebSocket 추천 - 확장성, 제어 가능"
|
|
458
|
+
|
|
459
|
+
2. 병렬 실행:
|
|
460
|
+
Task({ subagent_type: 'analyst', prompt: '알림 요구사항 분석' })
|
|
461
|
+
Task({ subagent_type: 'architect', prompt: 'WebSocket 아키텍처 검토' })
|
|
462
|
+
|
|
463
|
+
3. PRD 작성:
|
|
464
|
+
- 비전: "사용자가 즉시 중요한 업데이트를 받는다"
|
|
465
|
+
- 범위:
|
|
466
|
+
* In: 주문 상태, 메시지 알림
|
|
467
|
+
* Out: 푸시 알림 (후속)
|
|
468
|
+
- 기술: WebSocket (ws 라이브러리), Redis Pub/Sub
|
|
469
|
+
- 리스크: 연결 안정성 (완화: 자동 재연결)
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### 예시 3: 대시보드 분석 기능
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
사용자: 대시보드 분석 기능 PRD - 매출, 주문, 트래픽 차트
|
|
476
|
+
|
|
477
|
+
1. Sequential Thinking (5단계):
|
|
478
|
+
thought 1: "대시보드 - 보통 복잡도, 데이터 집계 + 시각화"
|
|
479
|
+
thought 2: "데이터: Order, Payment, Analytics 테이블"
|
|
480
|
+
thought 3: "차트: 라인(트렌드), 바(비교), 파이(비율)"
|
|
481
|
+
thought 4: "필터: 기간(일/주/월), 카테고리"
|
|
482
|
+
thought 5: "성능: 집계 쿼리 최적화, 캐싱 필요"
|
|
483
|
+
|
|
484
|
+
2. PRD 핵심:
|
|
485
|
+
- 문제: 매출 데이터를 확인하려면 여러 페이지 접근 필요
|
|
486
|
+
- 목표: 대시보드 사용률 70% 이상
|
|
487
|
+
- 기능 요구사항:
|
|
488
|
+
* User Story: "As a 관리자, I want to 매출 트렌드를 한눈에 보고 싶다"
|
|
489
|
+
* Functional: 기간별 매출 집계, 차트 렌더링
|
|
490
|
+
* Non-functional: 쿼리 < 500ms, 캐싱 5분
|
|
491
|
+
- 성공 지표:
|
|
492
|
+
* 페이지뷰: 0 → 500/일
|
|
493
|
+
* 로딩 시간: - → 500ms 이하
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
</examples>
|