create-ax-project 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.
- package/README.md +374 -0
- package/bin/create.js +193 -0
- package/package.json +38 -0
- package/template/.claude/CLAUDE.md +7 -0
- package/template/.claude/commands/CLAUDE.md +0 -0
- package/template/.claude/commands/benchmark.md +103 -0
- package/template/.claude/commands/brainstorm.md +67 -0
- package/template/.claude/commands/checkpoint.md +93 -0
- package/template/.claude/commands/codex.md +107 -0
- package/template/.claude/commands/collaborate.md +85 -0
- package/template/.claude/commands/context.md +154 -0
- package/template/.claude/commands/deploy.md +102 -0
- package/template/.claude/commands/fork.md +142 -0
- package/template/.claude/commands/gemini.md +84 -0
- package/template/.claude/commands/handoff.md +80 -0
- package/template/.claude/commands/implement.md +82 -0
- package/template/.claude/commands/init-project.md +49 -0
- package/template/.claude/commands/next.md +125 -0
- package/template/.claude/commands/planning.md +69 -0
- package/template/.claude/commands/qa.md +81 -0
- package/template/.claude/commands/refactor.md +95 -0
- package/template/.claude/commands/research.md +60 -0
- package/template/.claude/commands/restore.md +113 -0
- package/template/.claude/commands/run-stage.md +78 -0
- package/template/.claude/commands/stages.md +109 -0
- package/template/.claude/commands/status.md +73 -0
- package/template/.claude/commands/tasks.md +80 -0
- package/template/.claude/commands/test.md +93 -0
- package/template/.claude/commands/ui-ux.md +61 -0
- package/template/.claude/commands/validate.md +174 -0
- package/template/.claude/hooks/CLAUDE.md +0 -0
- package/template/.claude/hooks/ai-selector.sh +223 -0
- package/template/.claude/hooks/auto-checkpoint.sh +187 -0
- package/template/.claude/hooks/output-validator.sh +289 -0
- package/template/.claude/hooks/post-stage.sh +123 -0
- package/template/.claude/hooks/pre-stage.sh +186 -0
- package/template/.claude/hooks/session-start.sh +90 -0
- package/template/.claude/hooks/statusline.sh +115 -0
- package/template/.claude/hooks/stop.sh +104 -0
- package/template/.claude/settings.json +149 -0
- package/template/.claude/skills/ai-collaboration/CLAUDE.md +0 -0
- package/template/.claude/skills/ai-collaboration/README.md +61 -0
- package/template/.claude/skills/ai-collaboration/debate.md +148 -0
- package/template/.claude/skills/ai-collaboration/parallel.md +96 -0
- package/template/.claude/skills/ai-collaboration/prompts/CLAUDE.md +107 -0
- package/template/.claude/skills/auto-checkpoint/CLAUDE.md +0 -0
- package/template/.claude/skills/auto-checkpoint/README.md +77 -0
- package/template/.claude/skills/auto-checkpoint/prompts/CLAUDE.md +113 -0
- package/template/.claude/skills/auto-checkpoint/rollback.md +152 -0
- package/template/.claude/skills/auto-checkpoint/trigger.md +122 -0
- package/template/.claude/skills/context-compression/CLAUDE.md +0 -0
- package/template/.claude/skills/context-compression/README.md +121 -0
- package/template/.claude/skills/context-compression/analyze.md +114 -0
- package/template/.claude/skills/context-compression/compress.md +175 -0
- package/template/.claude/skills/context-compression/prompts/CLAUDE.md +0 -0
- package/template/.claude/skills/context-compression/prompts/compression.md +172 -0
- package/template/.claude/skills/output-validator/CLAUDE.md +0 -0
- package/template/.claude/skills/output-validator/README.md +86 -0
- package/template/.claude/skills/output-validator/prompts/CLAUDE.md +119 -0
- package/template/.claude/skills/output-validator/validate.md +182 -0
- package/template/.claude/skills/smart-handoff/CLAUDE.md +0 -0
- package/template/.claude/skills/smart-handoff/README.md +59 -0
- package/template/.claude/skills/smart-handoff/extract.md +76 -0
- package/template/.claude/skills/smart-handoff/prompts/CLAUDE.md +86 -0
- package/template/.claude/skills/smart-handoff/summarize.md +94 -0
- package/template/.claude/skills/stage-transition/CLAUDE.md +0 -0
- package/template/.claude/skills/stage-transition/README.md +84 -0
- package/template/.claude/skills/stage-transition/handoff-gen.md +160 -0
- package/template/.claude/skills/stage-transition/prompts/CLAUDE.md +0 -0
- package/template/.claude/skills/stage-transition/prompts/transition.md +145 -0
- package/template/.claude/skills/stage-transition/validate.md +108 -0
- package/template/CLAUDE.md +528 -0
- package/template/config/CLAUDE.md +0 -0
- package/template/config/ai_benchmarking.yaml +184 -0
- package/template/config/ai_collaboration.yaml +159 -0
- package/template/config/ai_logging.yaml +129 -0
- package/template/config/auto_checkpoint.yaml +189 -0
- package/template/config/context.yaml +78 -0
- package/template/config/git.yaml +161 -0
- package/template/config/handoff_intelligence.yaml +229 -0
- package/template/config/implementation.yaml.template +181 -0
- package/template/config/mcp_fallbacks.yaml +252 -0
- package/template/config/memory_integration.yaml +200 -0
- package/template/config/model_enforcement.yaml +141 -0
- package/template/config/models.yaml +242 -0
- package/template/config/output_validation.yaml +352 -0
- package/template/config/pipeline.yaml +357 -0
- package/template/config/pipeline_forking.yaml +236 -0
- package/template/config/qa_logging.yaml +166 -0
- package/template/config/smart_rollback.yaml +209 -0
- package/template/config/stage_personas.yaml +354 -0
- package/template/config/workflow.yaml +54 -0
- package/template/scripts/CLAUDE.md +0 -0
- package/template/scripts/ai-benchmark.sh +272 -0
- package/template/scripts/codex-wrapper.sh +97 -0
- package/template/scripts/context-manager.sh +528 -0
- package/template/scripts/create-checkpoint.sh +116 -0
- package/template/scripts/gemini-wrapper.sh +96 -0
- package/template/scripts/init-project.sh +109 -0
- package/template/scripts/list-stages.sh +245 -0
- package/template/scripts/next-stage.sh +228 -0
- package/template/scripts/output-validate.sh +12 -0
- package/template/scripts/pipeline-fork.sh +293 -0
- package/template/scripts/pre-run-check.sh +361 -0
- package/template/scripts/restore-checkpoint.sh +247 -0
- package/template/scripts/run-stage.sh +139 -0
- package/template/scripts/show-status.sh +185 -0
- package/template/scripts/smart-handoff.sh +254 -0
- package/template/stages/01-brainstorm/CLAUDE.md +103 -0
- package/template/stages/01-brainstorm/HANDOFF.md +110 -0
- package/template/stages/01-brainstorm/HANDOFF.md.template +112 -0
- package/template/stages/01-brainstorm/README.md +97 -0
- package/template/stages/01-brainstorm/config.yaml +92 -0
- package/template/stages/01-brainstorm/inputs/.gitkeep +0 -0
- package/template/stages/01-brainstorm/inputs/CLAUDE.md +0 -0
- package/template/stages/01-brainstorm/inputs/project_brief.md +40 -0
- package/template/stages/01-brainstorm/outputs/.gitkeep +0 -0
- package/template/stages/01-brainstorm/outputs/CLAUDE.md +0 -0
- package/template/stages/01-brainstorm/outputs/ideas.md +159 -0
- package/template/stages/01-brainstorm/outputs/requirements_analysis.md +222 -0
- package/template/stages/01-brainstorm/prompts/CLAUDE.md +0 -0
- package/template/stages/01-brainstorm/prompts/collaboration.md +46 -0
- package/template/stages/01-brainstorm/prompts/ideation.md +62 -0
- package/template/stages/01-brainstorm/prompts/persona.md +73 -0
- package/template/stages/01-brainstorm/prompts/requirements.md +73 -0
- package/template/stages/01-brainstorm/prompts/validation.md +50 -0
- package/template/stages/01-brainstorm/templates/CLAUDE.md +0 -0
- package/template/stages/01-brainstorm/templates/ideas.md +91 -0
- package/template/stages/01-brainstorm/templates/requirements_analysis.md +129 -0
- package/template/stages/02-research/CLAUDE.md +101 -0
- package/template/stages/02-research/HANDOFF.md +158 -0
- package/template/stages/02-research/HANDOFF.md.template +102 -0
- package/template/stages/02-research/config.yaml +68 -0
- package/template/stages/02-research/inputs/.gitkeep +0 -0
- package/template/stages/02-research/outputs/.gitkeep +0 -0
- package/template/stages/02-research/outputs/CLAUDE.md +0 -0
- package/template/stages/02-research/outputs/feasibility_report.md +176 -0
- package/template/stages/02-research/outputs/tech_research.md +403 -0
- package/template/stages/02-research/prompts/CLAUDE.md +0 -0
- package/template/stages/02-research/prompts/collaboration.md +51 -0
- package/template/stages/02-research/prompts/feasibility.md +73 -0
- package/template/stages/02-research/prompts/market_analysis.md +58 -0
- package/template/stages/02-research/prompts/tech_stack.md +60 -0
- package/template/stages/02-research/prompts/validation.md +51 -0
- package/template/stages/02-research/templates/.gitkeep +0 -0
- package/template/stages/03-planning/CLAUDE.md +98 -0
- package/template/stages/03-planning/HANDOFF.md +168 -0
- package/template/stages/03-planning/HANDOFF.md.template +91 -0
- package/template/stages/03-planning/config.yaml +64 -0
- package/template/stages/03-planning/inputs/.gitkeep +0 -0
- package/template/stages/03-planning/outputs/.gitkeep +0 -0
- package/template/stages/03-planning/outputs/CLAUDE.md +0 -0
- package/template/stages/03-planning/outputs/architecture.md +400 -0
- package/template/stages/03-planning/outputs/implementation.yaml +209 -0
- package/template/stages/03-planning/outputs/project_plan.md +204 -0
- package/template/stages/03-planning/outputs/tech_stack.md +176 -0
- package/template/stages/03-planning/prompts/CLAUDE.md +0 -0
- package/template/stages/03-planning/prompts/architecture.md +62 -0
- package/template/stages/03-planning/prompts/collaboration.md +57 -0
- package/template/stages/03-planning/prompts/validation.md +59 -0
- package/template/stages/03-planning/templates/.gitkeep +0 -0
- package/template/stages/04-ui-ux/CLAUDE.md +88 -0
- package/template/stages/04-ui-ux/HANDOFF.md +165 -0
- package/template/stages/04-ui-ux/HANDOFF.md.template +92 -0
- package/template/stages/04-ui-ux/config.yaml +57 -0
- package/template/stages/04-ui-ux/inputs/.gitkeep +0 -0
- package/template/stages/04-ui-ux/outputs/.gitkeep +0 -0
- package/template/stages/04-ui-ux/outputs/CLAUDE.md +0 -0
- package/template/stages/04-ui-ux/outputs/design_system.md +449 -0
- package/template/stages/04-ui-ux/outputs/user_flows.md +321 -0
- package/template/stages/04-ui-ux/outputs/wireframes.md +241 -0
- package/template/stages/04-ui-ux/prompts/.gitkeep +0 -0
- package/template/stages/04-ui-ux/prompts/CLAUDE.md +0 -0
- package/template/stages/04-ui-ux/prompts/collaboration.md +56 -0
- package/template/stages/04-ui-ux/prompts/validation.md +54 -0
- package/template/stages/04-ui-ux/templates/.gitkeep +0 -0
- package/template/stages/05-task-management/CLAUDE.md +105 -0
- package/template/stages/05-task-management/HANDOFF.md +187 -0
- package/template/stages/05-task-management/HANDOFF.md.template +97 -0
- package/template/stages/05-task-management/config.yaml +81 -0
- package/template/stages/05-task-management/inputs/.gitkeep +0 -0
- package/template/stages/05-task-management/outputs/.gitkeep +0 -0
- package/template/stages/05-task-management/outputs/CLAUDE.md +0 -0
- package/template/stages/05-task-management/outputs/milestones.md +253 -0
- package/template/stages/05-task-management/outputs/sprint_plan.md +203 -0
- package/template/stages/05-task-management/outputs/tasks.md +402 -0
- package/template/stages/05-task-management/prompts/.gitkeep +0 -0
- package/template/stages/05-task-management/prompts/CLAUDE.md +0 -0
- package/template/stages/05-task-management/prompts/collaboration.md +54 -0
- package/template/stages/05-task-management/prompts/validation.md +66 -0
- package/template/stages/05-task-management/templates/CLAUDE.md +0 -0
- package/template/stages/05-task-management/templates/notion_integration.md +176 -0
- package/template/stages/05-task-management/templates/parallel_groups.yaml +153 -0
- package/template/stages/05-task-management/templates/task_schema.yaml +154 -0
- package/template/stages/06-implementation/CLAUDE.md +163 -0
- package/template/stages/06-implementation/HANDOFF.md +184 -0
- package/template/stages/06-implementation/HANDOFF.md.template +192 -0
- package/template/stages/06-implementation/config.yaml +62 -0
- package/template/stages/06-implementation/inputs/.gitkeep +0 -0
- package/template/stages/06-implementation/outputs/.gitkeep +0 -0
- package/template/stages/06-implementation/prompts/.gitkeep +0 -0
- package/template/stages/06-implementation/prompts/CLAUDE.md +0 -0
- package/template/stages/06-implementation/prompts/collaboration.md +64 -0
- package/template/stages/06-implementation/prompts/validation.md +65 -0
- package/template/stages/06-implementation/templates/.gitkeep +0 -0
- package/template/stages/07-refactoring/CLAUDE.md +180 -0
- package/template/stages/07-refactoring/HANDOFF.md +82 -0
- package/template/stages/07-refactoring/HANDOFF.md.template +97 -0
- package/template/stages/07-refactoring/config.yaml +68 -0
- package/template/stages/07-refactoring/inputs/.gitkeep +0 -0
- package/template/stages/07-refactoring/outputs/.gitkeep +0 -0
- package/template/stages/07-refactoring/outputs/refactoring_report.md +102 -0
- package/template/stages/07-refactoring/prompts/.gitkeep +0 -0
- package/template/stages/07-refactoring/prompts/CLAUDE.md +0 -0
- package/template/stages/07-refactoring/prompts/collaboration.md +71 -0
- package/template/stages/07-refactoring/prompts/validation.md +76 -0
- package/template/stages/07-refactoring/templates/.gitkeep +0 -0
- package/template/stages/08-qa/CLAUDE.md +93 -0
- package/template/stages/08-qa/HANDOFF.md +114 -0
- package/template/stages/08-qa/HANDOFF.md.template +96 -0
- package/template/stages/08-qa/config.yaml +56 -0
- package/template/stages/08-qa/inputs/.gitkeep +0 -0
- package/template/stages/08-qa/outputs/.gitkeep +0 -0
- package/template/stages/08-qa/outputs/qa_report.md +138 -0
- package/template/stages/08-qa/prompts/.gitkeep +0 -0
- package/template/stages/08-qa/prompts/CLAUDE.md +0 -0
- package/template/stages/08-qa/prompts/collaboration.md +65 -0
- package/template/stages/08-qa/prompts/validation.md +71 -0
- package/template/stages/08-qa/templates/.gitkeep +0 -0
- package/template/stages/09-testing/CLAUDE.md +124 -0
- package/template/stages/09-testing/HANDOFF.md +118 -0
- package/template/stages/09-testing/HANDOFF.md.template +113 -0
- package/template/stages/09-testing/config.yaml +65 -0
- package/template/stages/09-testing/inputs/.gitkeep +0 -0
- package/template/stages/09-testing/outputs/.gitkeep +0 -0
- package/template/stages/09-testing/outputs/test_report.md +146 -0
- package/template/stages/09-testing/prompts/.gitkeep +0 -0
- package/template/stages/09-testing/prompts/CLAUDE.md +0 -0
- package/template/stages/09-testing/prompts/collaboration.md +77 -0
- package/template/stages/09-testing/prompts/validation.md +83 -0
- package/template/stages/09-testing/templates/.gitkeep +0 -0
- package/template/stages/10-deployment/CLAUDE.md +117 -0
- package/template/stages/10-deployment/HANDOFF.md +141 -0
- package/template/stages/10-deployment/HANDOFF.md.template +148 -0
- package/template/stages/10-deployment/config.yaml +61 -0
- package/template/stages/10-deployment/inputs/.gitkeep +0 -0
- package/template/stages/10-deployment/outputs/.gitkeep +0 -0
- package/template/stages/10-deployment/prompts/.gitkeep +0 -0
- package/template/stages/10-deployment/prompts/CLAUDE.md +0 -0
- package/template/stages/10-deployment/prompts/collaboration.md +80 -0
- package/template/stages/10-deployment/prompts/validation.md +93 -0
- package/template/stages/10-deployment/templates/CLAUDE.md +0 -0
- package/template/stages/10-deployment/templates/github-actions-cd.yaml +118 -0
- package/template/stages/10-deployment/templates/github-actions-ci.yaml +136 -0
- package/template/state/progress.json.template +111 -0
- package/template/state/templates/CLAUDE.md +0 -0
- package/template/state/templates/handoff_base.md.template +187 -0
- package/template/state/templates/phase_state.md.template +97 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Stage Handoff: 08-qa → 09-testing
|
|
2
|
+
|
|
3
|
+
**생성일**: {{TIMESTAMP}}
|
|
4
|
+
**생성자**: ClaudeCode
|
|
5
|
+
**소요 시간**: {{DURATION}}
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 완료된 작업
|
|
10
|
+
|
|
11
|
+
- [ ] 코드 리뷰 완료
|
|
12
|
+
- [ ] 보안 검사 ({{SECURITY_ISSUES}}개 이슈)
|
|
13
|
+
- [ ] 버그 수정 ({{BUGS_FIXED}}개)
|
|
14
|
+
- [ ] QA 보고서 작성
|
|
15
|
+
- [ ] HANDOFF.md 생성
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 다음 에이전트를 위한 컨텍스트
|
|
20
|
+
|
|
21
|
+
### QA 결과 요약
|
|
22
|
+
|
|
23
|
+
| 항목 | 상태 | 비고 |
|
|
24
|
+
|------|------|------|
|
|
25
|
+
| 코딩 표준 | {{STANDARD_STATUS}} | |
|
|
26
|
+
| 보안 검사 | {{SECURITY_STATUS}} | |
|
|
27
|
+
| 성능 | {{PERF_STATUS}} | |
|
|
28
|
+
| 접근성 | {{A11Y_STATUS}} | |
|
|
29
|
+
|
|
30
|
+
### 수정된 버그
|
|
31
|
+
|
|
32
|
+
| ID | 심각도 | 설명 | 파일 |
|
|
33
|
+
|----|--------|------|------|
|
|
34
|
+
| BUG-001 | {{SEV_1}} | {{BUG_1}} | {{FILE_1}} |
|
|
35
|
+
| BUG-002 | {{SEV_2}} | {{BUG_2}} | {{FILE_2}} |
|
|
36
|
+
|
|
37
|
+
### 알려진 이슈 (미수정)
|
|
38
|
+
- {{KNOWN_ISSUE_1}}: {{REASON_1}}
|
|
39
|
+
|
|
40
|
+
### 테스트 필요 영역
|
|
41
|
+
- {{TEST_AREA_1}}: 핵심 기능
|
|
42
|
+
- {{TEST_AREA_2}}: 엣지 케이스
|
|
43
|
+
- {{TEST_AREA_3}}: 통합 테스트
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 생성된 산출물
|
|
48
|
+
|
|
49
|
+
| 파일 | 설명 |
|
|
50
|
+
|------|------|
|
|
51
|
+
| qa_report.md | QA 보고서 |
|
|
52
|
+
| bug_fixes.md | 버그 수정 내역 |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 09-testing 스테이지 가이드
|
|
57
|
+
|
|
58
|
+
### 즉시 실행할 작업
|
|
59
|
+
1. 단위 테스트 작성
|
|
60
|
+
2. 통합 테스트 작성
|
|
61
|
+
3. E2E 테스트 설정 (Playwright)
|
|
62
|
+
|
|
63
|
+
### 테스트 커버리지 목표
|
|
64
|
+
- 단위 테스트: 80% 이상
|
|
65
|
+
- 통합 테스트: 핵심 플로우 100%
|
|
66
|
+
- E2E: 주요 사용자 시나리오
|
|
67
|
+
|
|
68
|
+
### 권장 테스트 프레임워크
|
|
69
|
+
- Unit: {{UNIT_FRAMEWORK}}
|
|
70
|
+
- E2E: Playwright
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## AI 호출 기록
|
|
75
|
+
|
|
76
|
+
| AI | 호출 시간 | 프롬프트 | 결과 | 상태 |
|
|
77
|
+
|----|----------|---------|------|------|
|
|
78
|
+
| {{AI_1}} | {{TIME_1}} | {{PROMPT_1}} | {{OUTPUT_1}} | {{STATUS_1}} |
|
|
79
|
+
| {{AI_2}} | {{TIME_2}} | {{PROMPT_2}} | {{OUTPUT_2}} | {{STATUS_2}} |
|
|
80
|
+
|
|
81
|
+
> 설정: `config/ai_logging.yaml`
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 메타데이터
|
|
86
|
+
|
|
87
|
+
```yaml
|
|
88
|
+
stage: "08-qa"
|
|
89
|
+
status: "completed"
|
|
90
|
+
next_stage: "09-testing"
|
|
91
|
+
models_used:
|
|
92
|
+
- claudecode
|
|
93
|
+
bugs_found: {{BUGS_FOUND}}
|
|
94
|
+
bugs_fixed: {{BUGS_FIXED}}
|
|
95
|
+
security_issues: {{SECURITY_ISSUES}}
|
|
96
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Stage 08: QA Configuration
|
|
2
|
+
|
|
3
|
+
stage:
|
|
4
|
+
id: "08-qa"
|
|
5
|
+
name: "QA"
|
|
6
|
+
description: "품질 보증 및 코드 리뷰"
|
|
7
|
+
|
|
8
|
+
models:
|
|
9
|
+
primary: "claudecode"
|
|
10
|
+
secondary: null
|
|
11
|
+
collaboration: null
|
|
12
|
+
|
|
13
|
+
execution:
|
|
14
|
+
mode: "plan_sandbox"
|
|
15
|
+
container: false
|
|
16
|
+
sandbox: true
|
|
17
|
+
timeout: 3600
|
|
18
|
+
|
|
19
|
+
inputs:
|
|
20
|
+
required:
|
|
21
|
+
- name: "../07-refactoring/outputs/refactored_code/"
|
|
22
|
+
- name: "../07-refactoring/outputs/refactoring_report.md"
|
|
23
|
+
- name: "../07-refactoring/HANDOFF.md"
|
|
24
|
+
|
|
25
|
+
outputs:
|
|
26
|
+
required:
|
|
27
|
+
- name: "qa_report.md"
|
|
28
|
+
description: "QA 보고서"
|
|
29
|
+
- name: "bug_fixes.md"
|
|
30
|
+
description: "버그 수정 내역"
|
|
31
|
+
- name: "HANDOFF.md"
|
|
32
|
+
|
|
33
|
+
prompts:
|
|
34
|
+
- name: "code_review"
|
|
35
|
+
file: "prompts/code_review.md"
|
|
36
|
+
model: "claudecode"
|
|
37
|
+
- name: "security_audit"
|
|
38
|
+
file: "prompts/security_audit.md"
|
|
39
|
+
model: "claudecode"
|
|
40
|
+
- name: "bug_fix"
|
|
41
|
+
file: "prompts/bug_fix.md"
|
|
42
|
+
model: "claudecode"
|
|
43
|
+
|
|
44
|
+
completion:
|
|
45
|
+
checklist:
|
|
46
|
+
- "코드 리뷰 완료"
|
|
47
|
+
- "보안 검사 통과"
|
|
48
|
+
- "식별된 버그 수정"
|
|
49
|
+
- "QA 보고서 작성"
|
|
50
|
+
|
|
51
|
+
transition:
|
|
52
|
+
next_stage: "09-testing"
|
|
53
|
+
prerequisites:
|
|
54
|
+
- "07-refactoring"
|
|
55
|
+
handoff_required: true
|
|
56
|
+
checkpoint_required: false
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# QA Report - Snake Game
|
|
2
|
+
|
|
3
|
+
> 생성일: 2026-01-21
|
|
4
|
+
> 프로젝트: snake-game
|
|
5
|
+
> 스테이지: 08-qa
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 테스트 요약
|
|
10
|
+
|
|
11
|
+
| 항목 | 결과 | 비고 |
|
|
12
|
+
|------|------|------|
|
|
13
|
+
| ESLint | ✅ 통과 | 0 errors, 0 warnings |
|
|
14
|
+
| TypeScript | ✅ 통과 | 컴파일 성공 |
|
|
15
|
+
| 빌드 | ✅ 통과 | 204.59 KB |
|
|
16
|
+
| 기능 테스트 | ✅ 통과 | 핵심 기능 정상 동작 |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 발견 및 수정된 버그
|
|
21
|
+
|
|
22
|
+
### BUG-001: 게임 시작 즉시 게임 오버
|
|
23
|
+
|
|
24
|
+
**증상**: 게임 시작 버튼 클릭 시 즉시 GAME OVER 화면 표시
|
|
25
|
+
|
|
26
|
+
**원인**: `useGameLoop` 훅의 초기화 로직 결함
|
|
27
|
+
- 첫 프레임에서 `lastTimeRef.current = 0`
|
|
28
|
+
- `deltaTime = timestamp - 0` → 수천 ms
|
|
29
|
+
- `accumulator`에 큰 값이 추가되어 수십 번의 MOVE 호출
|
|
30
|
+
- 뱀이 순식간에 벽까지 이동하여 충돌
|
|
31
|
+
|
|
32
|
+
**수정**:
|
|
33
|
+
```typescript
|
|
34
|
+
// 수정 전
|
|
35
|
+
if (lastTimeRef.current === 0) {
|
|
36
|
+
lastTimeRef.current = timestamp;
|
|
37
|
+
}
|
|
38
|
+
const deltaTime = timestamp - lastTimeRef.current;
|
|
39
|
+
|
|
40
|
+
// 수정 후
|
|
41
|
+
if (lastTimeRef.current === 0) {
|
|
42
|
+
lastTimeRef.current = timestamp;
|
|
43
|
+
rafIdRef.current = requestAnimationFrame(gameLoop);
|
|
44
|
+
return; // 첫 프레임 스킵
|
|
45
|
+
}
|
|
46
|
+
const deltaTime = timestamp - lastTimeRef.current;
|
|
47
|
+
// deltaTime 클램핑 추가
|
|
48
|
+
const clampedDelta = Math.min(deltaTime, speedRef.current * 2);
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**상태**: ✅ 수정 완료
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 기능 테스트 결과
|
|
56
|
+
|
|
57
|
+
### 게임 시작/재시작
|
|
58
|
+
| 테스트 케이스 | 결과 |
|
|
59
|
+
|--------------|------|
|
|
60
|
+
| START GAME 버튼 클릭 | ✅ 통과 |
|
|
61
|
+
| PLAY AGAIN 버튼 클릭 | ✅ 통과 |
|
|
62
|
+
| Enter 키로 시작 | ✅ 통과 |
|
|
63
|
+
|
|
64
|
+
### 키보드 입력
|
|
65
|
+
| 테스트 케이스 | 결과 |
|
|
66
|
+
|--------------|------|
|
|
67
|
+
| ArrowUp 방향 전환 | ✅ 통과 |
|
|
68
|
+
| ArrowDown 방향 전환 | ✅ 통과 |
|
|
69
|
+
| Space 일시정지/재개 | ✅ 통과 |
|
|
70
|
+
|
|
71
|
+
### 충돌 감지
|
|
72
|
+
| 테스트 케이스 | 결과 |
|
|
73
|
+
|--------------|------|
|
|
74
|
+
| 상단 벽 충돌 | ✅ 통과 |
|
|
75
|
+
| 우측 벽 충돌 | ✅ 통과 |
|
|
76
|
+
| 게임 오버 모달 표시 | ✅ 통과 |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 코드 품질
|
|
81
|
+
|
|
82
|
+
### ESLint
|
|
83
|
+
```
|
|
84
|
+
✅ 0 errors, 0 warnings
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### TypeScript
|
|
88
|
+
```
|
|
89
|
+
✅ tsc -b 성공 (0 errors)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 번들 크기
|
|
93
|
+
| 파일 | 크기 | Gzip |
|
|
94
|
+
|------|------|------|
|
|
95
|
+
| index.html | 0.46 KB | 0.29 KB |
|
|
96
|
+
| index.css | 12.85 KB | 2.69 KB |
|
|
97
|
+
| index.js | 204.59 KB | 64.53 KB |
|
|
98
|
+
|
|
99
|
+
**총 번들 크기**: 204.59 KB (목표 200KB 근접)
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 수정된 파일
|
|
104
|
+
|
|
105
|
+
| 파일 | 변경 유형 | 설명 |
|
|
106
|
+
|------|----------|------|
|
|
107
|
+
| `src/hooks/useGameLoop.ts` | 수정 | 첫 프레임 스킵 및 deltaTime 클램핑 |
|
|
108
|
+
| `src/engine/gameReducer.ts` | 수정 | 디버그 로그 추가 후 제거 |
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 남은 테스트 항목 (09-testing)
|
|
113
|
+
|
|
114
|
+
### 단위 테스트 필요
|
|
115
|
+
- [ ] `collision.ts` - 충돌 감지 함수
|
|
116
|
+
- [ ] `gameReducer.ts` - 상태 전이 로직
|
|
117
|
+
- [ ] `useGameLoop.ts` - 게임 루프 타이밍
|
|
118
|
+
|
|
119
|
+
### E2E 테스트 필요
|
|
120
|
+
- [ ] 전체 게임 플로우 (시작 → 플레이 → 게임오버 → 재시작)
|
|
121
|
+
- [ ] 점수 시스템 (먹이 먹기, 레벨업)
|
|
122
|
+
- [ ] 최고 점수 저장/불러오기
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 결론
|
|
127
|
+
|
|
128
|
+
08-qa 스테이지에서 **치명적 버그 1건**을 발견하고 수정했습니다.
|
|
129
|
+
- 게임 루프 초기화 문제로 인한 즉시 게임 오버 현상
|
|
130
|
+
- 수정 후 모든 핵심 기능이 정상 동작함을 확인
|
|
131
|
+
|
|
132
|
+
게임은 플레이 가능한 상태이며, 09-testing 스테이지에서
|
|
133
|
+
단위 테스트 및 E2E 테스트를 추가하여 품질을 강화할 예정입니다.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
**작성자**: ClaudeCode
|
|
138
|
+
**검토일**: 2026-01-21
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# AI 협업 프롬프트 - QA
|
|
2
|
+
|
|
3
|
+
## 협업 모드: Comprehensive Review
|
|
4
|
+
|
|
5
|
+
이 스테이지에서는 **포괄적 리뷰** 모드를 사용하여 품질을 보장합니다.
|
|
6
|
+
|
|
7
|
+
### 참여 모델
|
|
8
|
+
- **ClaudeCode**: 코드 리뷰, 버그 수정, 보안 검사
|
|
9
|
+
|
|
10
|
+
### 협업 프롬프트
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
# 다각도 검토
|
|
14
|
+
/collaborate --mode sequential --chain "claudecode:code_review -> claudecode:security_audit -> claudecode:fix"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 리뷰 영역
|
|
18
|
+
|
|
19
|
+
| 영역 | 검토 항목 |
|
|
20
|
+
|------|----------|
|
|
21
|
+
| 코드 품질 | 가독성, 유지보수성, 베스트 프랙티스 |
|
|
22
|
+
| 보안 | OWASP Top 10, 입력 검증, 인증/인가 |
|
|
23
|
+
| 성능 | 응답 시간, 메모리, 리렌더링 |
|
|
24
|
+
| 기능 | 요구사항 충족, 엣지 케이스 |
|
|
25
|
+
|
|
26
|
+
### 보안 검사 체크리스트
|
|
27
|
+
|
|
28
|
+
- [ ] SQL Injection
|
|
29
|
+
- [ ] XSS (Cross-Site Scripting)
|
|
30
|
+
- [ ] CSRF (Cross-Site Request Forgery)
|
|
31
|
+
- [ ] 인증/인가 우회
|
|
32
|
+
- [ ] 민감 정보 노출
|
|
33
|
+
- [ ] 의존성 취약점
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 의존성 취약점 검사
|
|
37
|
+
npm audit
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 버그 우선순위
|
|
41
|
+
|
|
42
|
+
| 등급 | 기준 | 조치 |
|
|
43
|
+
|------|------|------|
|
|
44
|
+
| Critical | 보안, 데이터 손실 | 즉시 수정 |
|
|
45
|
+
| High | 주요 기능 장애 | 이번 스테이지 수정 |
|
|
46
|
+
| Medium | 부가 기능 이슈 | 다음 스프린트 |
|
|
47
|
+
| Low | UI/UX 개선 | 백로그 |
|
|
48
|
+
|
|
49
|
+
### 출력 형식
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
## QA 결과
|
|
53
|
+
|
|
54
|
+
### 코드 리뷰
|
|
55
|
+
- [파일]: [이슈] - [심각도]
|
|
56
|
+
...
|
|
57
|
+
|
|
58
|
+
### 보안 검사
|
|
59
|
+
- [취약점]: [위치] - [조치]
|
|
60
|
+
...
|
|
61
|
+
|
|
62
|
+
### 버그 수정
|
|
63
|
+
- [BUG-001]: [설명] - [해결 방법]
|
|
64
|
+
...
|
|
65
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# 산출물 검증 프롬프트 - QA
|
|
2
|
+
|
|
3
|
+
## 검증 대상
|
|
4
|
+
|
|
5
|
+
| 산출물 | 필수 조건 | 검증 방법 |
|
|
6
|
+
|--------|----------|----------|
|
|
7
|
+
| `qa_report.md` | 리뷰 결과 포함 | 구조 확인 |
|
|
8
|
+
| `bug_fixes.md` | 수정 내역 | 항목 확인 |
|
|
9
|
+
| 소스 코드 | 보안 검사 통과 | 자동 스캔 |
|
|
10
|
+
| `HANDOFF.md` | 테스트 필요 항목 | 항목 확인 |
|
|
11
|
+
|
|
12
|
+
## 검증 명령
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
/validate --stage 08-qa
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 품질 기준
|
|
19
|
+
|
|
20
|
+
### qa_report.md
|
|
21
|
+
- [ ] 코드 리뷰 결과
|
|
22
|
+
- [ ] 보안 검사 결과
|
|
23
|
+
- [ ] 성능 검토 결과
|
|
24
|
+
- [ ] 발견된 버그 목록
|
|
25
|
+
- [ ] 권장 사항
|
|
26
|
+
|
|
27
|
+
### bug_fixes.md
|
|
28
|
+
- [ ] 수정된 버그 목록
|
|
29
|
+
- [ ] 각 버그의 원인 분석
|
|
30
|
+
- [ ] 해결 방법
|
|
31
|
+
- [ ] 회귀 방지 조치
|
|
32
|
+
|
|
33
|
+
### 소스 코드
|
|
34
|
+
- [ ] Critical 버그 0개
|
|
35
|
+
- [ ] High 버그 0개
|
|
36
|
+
- [ ] 보안 취약점 해결
|
|
37
|
+
|
|
38
|
+
### HANDOFF.md
|
|
39
|
+
- [ ] 테스트 필요 영역
|
|
40
|
+
- [ ] 남은 Medium/Low 이슈
|
|
41
|
+
- [ ] 다음 단계 권고
|
|
42
|
+
|
|
43
|
+
## 자동 검증 스크립트
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# 보안 취약점 검사
|
|
47
|
+
npm audit --audit-level=high
|
|
48
|
+
|
|
49
|
+
# Lint 검사
|
|
50
|
+
npm run lint
|
|
51
|
+
|
|
52
|
+
# 타입 검사
|
|
53
|
+
npm run typecheck
|
|
54
|
+
|
|
55
|
+
# 테스트 실행
|
|
56
|
+
npm run test
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 보안 메트릭
|
|
60
|
+
|
|
61
|
+
| 메트릭 | 기준 | 실제 |
|
|
62
|
+
|--------|------|------|
|
|
63
|
+
| Critical 취약점 | 0 | - |
|
|
64
|
+
| High 취약점 | 0 | - |
|
|
65
|
+
| Medium 취약점 | < 5 | - |
|
|
66
|
+
|
|
67
|
+
## 실패 시 조치
|
|
68
|
+
|
|
69
|
+
1. 보안 취약점 → 즉시 수정 후 재검증
|
|
70
|
+
2. 테스트 실패 → 버그 수정 후 재실행
|
|
71
|
+
3. Lint 에러 → 코드 수정
|
|
File without changes
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Stage 09: Testing & E2E
|
|
2
|
+
|
|
3
|
+
테스트 코드 작성 및 E2E 테스트 단계
|
|
4
|
+
|
|
5
|
+
## 🎭 페르소나: Test Engineer
|
|
6
|
+
|
|
7
|
+
> 당신은 Test Engineer입니다.
|
|
8
|
+
> 신뢰할 수 있고 유지보수 가능한 테스트를 작성하세요.
|
|
9
|
+
> 높은 커버리지와 명확한 테스트 케이스를 목표로 하세요.
|
|
10
|
+
|
|
11
|
+
### 특성
|
|
12
|
+
- 체계적 테스트
|
|
13
|
+
- 커버리지 최적화
|
|
14
|
+
- 자동화 지향
|
|
15
|
+
- 재현 가능성
|
|
16
|
+
|
|
17
|
+
### 권장 행동
|
|
18
|
+
- 높은 테스트 커버리지
|
|
19
|
+
- 다양한 시나리오
|
|
20
|
+
- 자동화된 테스트
|
|
21
|
+
- 명확한 단언문
|
|
22
|
+
|
|
23
|
+
### 지양 행동
|
|
24
|
+
- 불안정한 테스트
|
|
25
|
+
- 하드코딩된 값
|
|
26
|
+
- 의존성 많은 테스트
|
|
27
|
+
|
|
28
|
+
### AI 설정
|
|
29
|
+
- **Temperature**: 0.4 (체계적 설계)
|
|
30
|
+
- **커버리지 집중**: High
|
|
31
|
+
- **자동화 수준**: High
|
|
32
|
+
|
|
33
|
+
## 실행 모델
|
|
34
|
+
- **Primary**: Codex (테스트 코드 생성)
|
|
35
|
+
- **Mode**: Sandbox + Playwright
|
|
36
|
+
- **MCP**: playwright 서버 연동
|
|
37
|
+
|
|
38
|
+
## 목표
|
|
39
|
+
1. 단위 테스트 작성
|
|
40
|
+
2. 통합 테스트 작성
|
|
41
|
+
3. E2E 테스트 작성 (Playwright)
|
|
42
|
+
4. 테스트 커버리지 확보
|
|
43
|
+
|
|
44
|
+
## 입력 파일
|
|
45
|
+
- `../07-refactoring/outputs/refactored_code/` (또는 수정된 코드)
|
|
46
|
+
- `../08-qa/outputs/qa_report.md`
|
|
47
|
+
- `../08-qa/HANDOFF.md`
|
|
48
|
+
|
|
49
|
+
## 출력 파일
|
|
50
|
+
- `outputs/tests/` - 테스트 코드
|
|
51
|
+
- `outputs/test_report.md` - 테스트 결과 보고서
|
|
52
|
+
- `outputs/coverage_report.md` - 커버리지 보고서
|
|
53
|
+
- `HANDOFF.md` - 다음 스테이지 인계 문서
|
|
54
|
+
|
|
55
|
+
## Codex CLI 활용
|
|
56
|
+
|
|
57
|
+
### 단위 테스트 생성
|
|
58
|
+
```bash
|
|
59
|
+
/codex "다음 함수에 대한 단위 테스트를 작성해주세요:
|
|
60
|
+
[함수 코드]
|
|
61
|
+
테스트 프레임워크: Vitest/Jest
|
|
62
|
+
커버리지 목표: 80%"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### E2E 테스트 생성
|
|
66
|
+
```bash
|
|
67
|
+
/codex "다음 사용자 플로우에 대한 Playwright 테스트를 작성해주세요:
|
|
68
|
+
1. 로그인 플로우
|
|
69
|
+
2. 핵심 기능 테스트
|
|
70
|
+
3. 에러 시나리오"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 워크플로우
|
|
74
|
+
|
|
75
|
+
### 1. 테스트 환경 설정
|
|
76
|
+
```bash
|
|
77
|
+
# Vitest 설정
|
|
78
|
+
npm install -D vitest @testing-library/react
|
|
79
|
+
|
|
80
|
+
# Playwright 설정
|
|
81
|
+
npm install -D @playwright/test
|
|
82
|
+
npx playwright install
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 2. 단위 테스트 작성
|
|
86
|
+
- 유틸리티 함수
|
|
87
|
+
- 컴포넌트 렌더링
|
|
88
|
+
- 훅 테스트
|
|
89
|
+
- API 핸들러
|
|
90
|
+
|
|
91
|
+
### 3. 통합 테스트
|
|
92
|
+
- API 통합 테스트
|
|
93
|
+
- 컴포넌트 통합 테스트
|
|
94
|
+
- 데이터 흐름 테스트
|
|
95
|
+
|
|
96
|
+
### 4. E2E 테스트
|
|
97
|
+
- 핵심 사용자 플로우
|
|
98
|
+
- 인증 플로우
|
|
99
|
+
- 에러 처리 시나리오
|
|
100
|
+
|
|
101
|
+
### 5. 커버리지 분석
|
|
102
|
+
- 목표 커버리지 확인
|
|
103
|
+
- 커버되지 않은 영역 식별
|
|
104
|
+
|
|
105
|
+
## 커버리지 목표
|
|
106
|
+
- **Statements**: 80%
|
|
107
|
+
- **Branches**: 75%
|
|
108
|
+
- **Functions**: 80%
|
|
109
|
+
- **Lines**: 80%
|
|
110
|
+
|
|
111
|
+
## 완료 조건
|
|
112
|
+
- [ ] 단위 테스트 작성 (커버리지 80%+)
|
|
113
|
+
- [ ] 통합 테스트 작성
|
|
114
|
+
- [ ] E2E 테스트 작성 (핵심 플로우)
|
|
115
|
+
- [ ] 모든 테스트 통과
|
|
116
|
+
- [ ] 커버리지 보고서 생성
|
|
117
|
+
- [ ] HANDOFF.md 생성
|
|
118
|
+
|
|
119
|
+
## 다음 스테이지
|
|
120
|
+
→ **10-deployment**: CI/CD 및 배포
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# HANDOFF: 09-testing → 10-deployment
|
|
2
|
+
|
|
3
|
+
> 생성일: 2026-01-21
|
|
4
|
+
> 프로젝트: snake-game
|
|
5
|
+
> 현재 스테이지: 09-testing (완료)
|
|
6
|
+
> 다음 스테이지: 10-deployment
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## ✅ 완료된 작업
|
|
11
|
+
|
|
12
|
+
- [x] Vitest 테스트 환경 설정
|
|
13
|
+
- [x] 단위 테스트 작성 (43개)
|
|
14
|
+
- [x] collision.test.ts (23 tests)
|
|
15
|
+
- [x] gameReducer.test.ts (20 tests)
|
|
16
|
+
- [x] 테스트 커버리지 분석
|
|
17
|
+
- [x] 테스트 보고서 작성
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 📊 테스트 결과
|
|
22
|
+
|
|
23
|
+
| 항목 | 결과 |
|
|
24
|
+
|------|------|
|
|
25
|
+
| 총 테스트 | 43개 |
|
|
26
|
+
| 통과율 | 100% |
|
|
27
|
+
| 핵심 로직 커버리지 | 77-87% |
|
|
28
|
+
|
|
29
|
+
### 커버리지 상세
|
|
30
|
+
| 파일 | Lines |
|
|
31
|
+
|------|-------|
|
|
32
|
+
| collision.ts | 77.77% |
|
|
33
|
+
| gameReducer.ts | 87.27% |
|
|
34
|
+
| config.ts | 100% |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 📁 생성/수정된 파일
|
|
39
|
+
|
|
40
|
+
| 파일 | 변경 유형 | 설명 |
|
|
41
|
+
|------|----------|------|
|
|
42
|
+
| `vite.config.ts` | 수정 | Vitest 설정 추가 |
|
|
43
|
+
| `package.json` | 수정 | 테스트 스크립트 추가 |
|
|
44
|
+
| `src/test/setup.ts` | 생성 | 테스트 setup |
|
|
45
|
+
| `src/engine/collision.test.ts` | 생성 | 충돌 감지 테스트 |
|
|
46
|
+
| `src/engine/gameReducer.test.ts` | 생성 | 게임 리듀서 테스트 |
|
|
47
|
+
| `outputs/test_report.md` | 생성 | 테스트 보고서 |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 🚀 10-deployment 권장 작업
|
|
52
|
+
|
|
53
|
+
### 1. 빌드 설정
|
|
54
|
+
```bash
|
|
55
|
+
npm run build
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 2. 배포 옵션
|
|
59
|
+
|
|
60
|
+
#### Option A: GitHub Pages
|
|
61
|
+
```bash
|
|
62
|
+
# vite.config.ts에 base 추가
|
|
63
|
+
base: '/snake-game/',
|
|
64
|
+
|
|
65
|
+
# gh-pages 패키지 사용
|
|
66
|
+
npm install -D gh-pages
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### Option B: Vercel
|
|
70
|
+
```bash
|
|
71
|
+
# Vercel CLI 사용
|
|
72
|
+
npm i -g vercel
|
|
73
|
+
vercel
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### Option C: Netlify
|
|
77
|
+
```bash
|
|
78
|
+
# netlify.toml 생성
|
|
79
|
+
[build]
|
|
80
|
+
command = "npm run build"
|
|
81
|
+
publish = "dist"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 3. 환경 변수 (필요시)
|
|
85
|
+
- 현재 프로젝트는 환경 변수 불필요
|
|
86
|
+
|
|
87
|
+
### 4. CI/CD (선택)
|
|
88
|
+
- GitHub Actions 워크플로우 설정
|
|
89
|
+
- 자동 테스트 및 배포
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 📦 배포 전 체크리스트
|
|
94
|
+
|
|
95
|
+
- [x] 빌드 성공 (204KB)
|
|
96
|
+
- [x] ESLint 통과
|
|
97
|
+
- [x] TypeScript 컴파일 성공
|
|
98
|
+
- [x] 테스트 통과 (43/43)
|
|
99
|
+
- [ ] README.md 작성
|
|
100
|
+
- [ ] 배포 설정
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 🚀 다음 단계
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# 10-deployment 스테이지 실행
|
|
108
|
+
/run-stage 10-deployment
|
|
109
|
+
|
|
110
|
+
# 또는
|
|
111
|
+
/deploy
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
**생성자**: ClaudeCode
|
|
117
|
+
**검토자**: -
|
|
118
|
+
**승인**: 대기
|