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,113 @@
|
|
|
1
|
+
# Stage Handoff: 09-testing → 10-deployment
|
|
2
|
+
|
|
3
|
+
**생성일**: {{TIMESTAMP}}
|
|
4
|
+
**생성자**: Codex
|
|
5
|
+
**소요 시간**: {{DURATION}}
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 완료된 작업
|
|
10
|
+
|
|
11
|
+
- [ ] 단위 테스트 작성 ({{UNIT_COUNT}}개)
|
|
12
|
+
- [ ] 통합 테스트 작성 ({{INT_COUNT}}개)
|
|
13
|
+
- [ ] E2E 테스트 작성 ({{E2E_COUNT}}개)
|
|
14
|
+
- [ ] 모든 테스트 통과
|
|
15
|
+
- [ ] 커버리지 보고서 생성
|
|
16
|
+
- [ ] HANDOFF.md 생성
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 다음 에이전트를 위한 컨텍스트
|
|
21
|
+
|
|
22
|
+
### 테스트 결과 요약
|
|
23
|
+
|
|
24
|
+
| 유형 | 총 개수 | 통과 | 실패 | 스킵 |
|
|
25
|
+
|------|--------|------|------|------|
|
|
26
|
+
| Unit | {{UNIT_COUNT}} | {{UNIT_PASS}} | {{UNIT_FAIL}} | {{UNIT_SKIP}} |
|
|
27
|
+
| Integration | {{INT_COUNT}} | {{INT_PASS}} | {{INT_FAIL}} | {{INT_SKIP}} |
|
|
28
|
+
| E2E | {{E2E_COUNT}} | {{E2E_PASS}} | {{E2E_FAIL}} | {{E2E_SKIP}} |
|
|
29
|
+
|
|
30
|
+
### 커버리지 보고서
|
|
31
|
+
|
|
32
|
+
| 메트릭 | 결과 | 목표 | 상태 |
|
|
33
|
+
|--------|------|------|------|
|
|
34
|
+
| Statements | {{STMT_COV}}% | 80% | {{STMT_STATUS}} |
|
|
35
|
+
| Branches | {{BRANCH_COV}}% | 75% | {{BRANCH_STATUS}} |
|
|
36
|
+
| Functions | {{FUNC_COV}}% | 80% | {{FUNC_STATUS}} |
|
|
37
|
+
| Lines | {{LINE_COV}}% | 80% | {{LINE_STATUS}} |
|
|
38
|
+
|
|
39
|
+
### E2E 테스트 시나리오
|
|
40
|
+
|
|
41
|
+
| 시나리오 | 상태 | 실행 시간 |
|
|
42
|
+
|----------|------|-----------|
|
|
43
|
+
| {{E2E_1}} | Pass | {{TIME_1}} |
|
|
44
|
+
| {{E2E_2}} | Pass | {{TIME_2}} |
|
|
45
|
+
| {{E2E_3}} | Pass | {{TIME_3}} |
|
|
46
|
+
|
|
47
|
+
### CI 통합 준비 사항
|
|
48
|
+
- 테스트 명령어: `npm test`
|
|
49
|
+
- 커버리지 명령어: `npm run coverage`
|
|
50
|
+
- E2E 명령어: `npm run test:e2e`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 생성된 산출물
|
|
55
|
+
|
|
56
|
+
| 파일 | 설명 |
|
|
57
|
+
|------|------|
|
|
58
|
+
| tests/ | 테스트 코드 |
|
|
59
|
+
| test_report.md | 테스트 결과 |
|
|
60
|
+
| coverage_report.md | 커버리지 보고서 |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 10-deployment 스테이지 가이드
|
|
65
|
+
|
|
66
|
+
### 즉시 실행할 작업
|
|
67
|
+
1. GitHub Actions 워크플로우 설정
|
|
68
|
+
2. 배포 환경 설정
|
|
69
|
+
3. 환경 변수 구성
|
|
70
|
+
|
|
71
|
+
### CI/CD 파이프라인 제안
|
|
72
|
+
```yaml
|
|
73
|
+
workflow:
|
|
74
|
+
- lint
|
|
75
|
+
- type-check
|
|
76
|
+
- unit-tests
|
|
77
|
+
- integration-tests
|
|
78
|
+
- build
|
|
79
|
+
- e2e-tests
|
|
80
|
+
- deploy
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 배포 전 체크리스트
|
|
84
|
+
- [ ] 환경 변수 설정
|
|
85
|
+
- [ ] 도메인 설정
|
|
86
|
+
- [ ] SSL 인증서
|
|
87
|
+
- [ ] 데이터베이스 마이그레이션
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## AI 호출 기록
|
|
92
|
+
|
|
93
|
+
| AI | 호출 시간 | 프롬프트 | 결과 | 상태 |
|
|
94
|
+
|----|----------|---------|------|------|
|
|
95
|
+
| {{AI_1}} | {{TIME_1}} | {{PROMPT_1}} | {{OUTPUT_1}} | {{STATUS_1}} |
|
|
96
|
+
| {{AI_2}} | {{TIME_2}} | {{PROMPT_2}} | {{OUTPUT_2}} | {{STATUS_2}} |
|
|
97
|
+
|
|
98
|
+
> 설정: `config/ai_logging.yaml`
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 메타데이터
|
|
103
|
+
|
|
104
|
+
```yaml
|
|
105
|
+
stage: "09-testing"
|
|
106
|
+
status: "completed"
|
|
107
|
+
next_stage: "10-deployment"
|
|
108
|
+
models_used:
|
|
109
|
+
- codex
|
|
110
|
+
total_tests: {{TOTAL_TESTS}}
|
|
111
|
+
coverage: {{TOTAL_COV}}%
|
|
112
|
+
e2e_scenarios: {{E2E_COUNT}}
|
|
113
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Stage 09: Testing & E2E Configuration
|
|
2
|
+
|
|
3
|
+
stage:
|
|
4
|
+
id: "09-testing"
|
|
5
|
+
name: "Testing & E2E"
|
|
6
|
+
description: "테스트 코드 작성 및 E2E 테스트"
|
|
7
|
+
|
|
8
|
+
models:
|
|
9
|
+
primary: "codex"
|
|
10
|
+
secondary: null
|
|
11
|
+
collaboration: null
|
|
12
|
+
|
|
13
|
+
execution:
|
|
14
|
+
mode: "sandbox_playwright"
|
|
15
|
+
container: false
|
|
16
|
+
sandbox: true
|
|
17
|
+
timeout: 7200 # 2 hours
|
|
18
|
+
|
|
19
|
+
mcp_servers:
|
|
20
|
+
- playwright
|
|
21
|
+
|
|
22
|
+
inputs:
|
|
23
|
+
required:
|
|
24
|
+
- name: "source_code/"
|
|
25
|
+
description: "테스트할 소스 코드"
|
|
26
|
+
- name: "../08-qa/outputs/qa_report.md"
|
|
27
|
+
- name: "../08-qa/HANDOFF.md"
|
|
28
|
+
|
|
29
|
+
outputs:
|
|
30
|
+
required:
|
|
31
|
+
- name: "tests/"
|
|
32
|
+
description: "테스트 코드"
|
|
33
|
+
- name: "test_report.md"
|
|
34
|
+
description: "테스트 결과 보고서"
|
|
35
|
+
- name: "coverage_report.md"
|
|
36
|
+
description: "커버리지 보고서"
|
|
37
|
+
- name: "HANDOFF.md"
|
|
38
|
+
|
|
39
|
+
prompts:
|
|
40
|
+
- name: "unit_tests"
|
|
41
|
+
file: "prompts/unit_tests.md"
|
|
42
|
+
model: "codex"
|
|
43
|
+
- name: "integration_tests"
|
|
44
|
+
file: "prompts/integration_tests.md"
|
|
45
|
+
model: "codex"
|
|
46
|
+
- name: "e2e_tests"
|
|
47
|
+
file: "prompts/e2e_tests.md"
|
|
48
|
+
model: "codex"
|
|
49
|
+
|
|
50
|
+
completion:
|
|
51
|
+
checklist:
|
|
52
|
+
- "단위 테스트 작성 (커버리지 80%+)"
|
|
53
|
+
- "통합 테스트 작성"
|
|
54
|
+
- "E2E 테스트 작성"
|
|
55
|
+
- "모든 테스트 통과"
|
|
56
|
+
- "커버리지 보고서 생성"
|
|
57
|
+
validation:
|
|
58
|
+
min_coverage: 80
|
|
59
|
+
|
|
60
|
+
transition:
|
|
61
|
+
next_stage: "10-deployment"
|
|
62
|
+
prerequisites:
|
|
63
|
+
- "08-qa"
|
|
64
|
+
handoff_required: true
|
|
65
|
+
checkpoint_required: false
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Test Report - Snake Game
|
|
2
|
+
|
|
3
|
+
> 생성일: 2026-01-21
|
|
4
|
+
> 프로젝트: snake-game
|
|
5
|
+
> 스테이지: 09-testing
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 테스트 요약
|
|
10
|
+
|
|
11
|
+
| 항목 | 값 |
|
|
12
|
+
|------|-----|
|
|
13
|
+
| 테스트 프레임워크 | Vitest 4.0.17 |
|
|
14
|
+
| 총 테스트 수 | 43개 |
|
|
15
|
+
| 통과 | 43개 (100%) |
|
|
16
|
+
| 실패 | 0개 |
|
|
17
|
+
| 실행 시간 | 880ms |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 커버리지 요약
|
|
22
|
+
|
|
23
|
+
| 파일 | Statements | Branches | Functions | Lines |
|
|
24
|
+
|------|------------|----------|-----------|-------|
|
|
25
|
+
| **collision.ts** | 76.19% | 85.71% | 80% | 77.77% |
|
|
26
|
+
| **gameReducer.ts** | 87.5% | 86.11% | 100% | 87.27% |
|
|
27
|
+
| **config.ts** | 100% | 100% | 100% | 100% |
|
|
28
|
+
| **전체** | 30.87% | 37.81% | 29.03% | 31.44% |
|
|
29
|
+
|
|
30
|
+
### 핵심 로직 커버리지
|
|
31
|
+
- **충돌 감지 (collision.ts)**: 77% - 우수
|
|
32
|
+
- **게임 상태 관리 (gameReducer.ts)**: 87% - 우수
|
|
33
|
+
- **설정 (config.ts)**: 100% - 완벽
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 테스트 파일 목록
|
|
38
|
+
|
|
39
|
+
### 1. collision.test.ts (23 tests)
|
|
40
|
+
|
|
41
|
+
#### isSamePoint
|
|
42
|
+
- ✅ 동일한 포인트 판별
|
|
43
|
+
- ✅ 다른 포인트 판별
|
|
44
|
+
- ✅ y만 다른 포인트 판별
|
|
45
|
+
|
|
46
|
+
#### checkWallCollision
|
|
47
|
+
- ✅ 보드 내부 포인트
|
|
48
|
+
- ✅ 음수 x 좌표
|
|
49
|
+
- ✅ 음수 y 좌표
|
|
50
|
+
- ✅ 보드 경계 x
|
|
51
|
+
- ✅ 보드 경계 y
|
|
52
|
+
- ✅ 코너 (0,0)
|
|
53
|
+
- ✅ 최대 유효 위치 (19,19)
|
|
54
|
+
|
|
55
|
+
#### checkSelfCollision
|
|
56
|
+
- ✅ 충돌 없는 짧은 뱀
|
|
57
|
+
- ✅ 머리와 몸 충돌
|
|
58
|
+
- ✅ 길이 1 뱀
|
|
59
|
+
|
|
60
|
+
#### checkFoodCollision
|
|
61
|
+
- ✅ 머리가 음식 위치에 있을 때
|
|
62
|
+
- ✅ 머리가 음식 위치에 없을 때
|
|
63
|
+
|
|
64
|
+
#### detectCollision
|
|
65
|
+
- ✅ 벽 충돌 반환
|
|
66
|
+
- ✅ 자기 충돌 반환
|
|
67
|
+
- ✅ 음식 충돌 반환
|
|
68
|
+
- ✅ 충돌 없음 반환
|
|
69
|
+
- ✅ 벽 충돌 우선순위
|
|
70
|
+
|
|
71
|
+
#### isOnSnake
|
|
72
|
+
- ✅ 뱀 머리 위 포인트
|
|
73
|
+
- ✅ 뱀 몸 위 포인트
|
|
74
|
+
- ✅ 뱀 위에 없는 포인트
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### 2. gameReducer.test.ts (20 tests)
|
|
79
|
+
|
|
80
|
+
#### createInitialState
|
|
81
|
+
- ✅ 기본 초기 상태 생성
|
|
82
|
+
- ✅ 제공된 최고 점수로 초기화
|
|
83
|
+
- ✅ 뱀이 보드 중앙에서 시작
|
|
84
|
+
|
|
85
|
+
#### START_GAME action
|
|
86
|
+
- ✅ IDLE → PLAYING 상태 전이
|
|
87
|
+
- ✅ GAME_OVER → PLAYING 상태 전이
|
|
88
|
+
- ✅ PLAYING 상태에서 변경 안됨
|
|
89
|
+
- ✅ 최고 점수 유지
|
|
90
|
+
|
|
91
|
+
#### PAUSE_GAME action
|
|
92
|
+
- ✅ PLAYING → PAUSED 상태 전이
|
|
93
|
+
- ✅ PLAYING 아닐 때 변경 안됨
|
|
94
|
+
|
|
95
|
+
#### RESUME_GAME action
|
|
96
|
+
- ✅ PAUSED → PLAYING 상태 전이
|
|
97
|
+
- ✅ PAUSED 아닐 때 변경 안됨
|
|
98
|
+
|
|
99
|
+
#### CHANGE_DIRECTION action
|
|
100
|
+
- ✅ 유효한 방향 변경
|
|
101
|
+
- ✅ 반대 방향(180도 회전) 차단
|
|
102
|
+
- ✅ PLAYING 아닐 때 변경 안됨
|
|
103
|
+
|
|
104
|
+
#### MOVE action
|
|
105
|
+
- ✅ 뱀 전진 이동
|
|
106
|
+
- ✅ PLAYING 아닐 때 이동 안됨
|
|
107
|
+
- ✅ 벽 충돌 시 게임 오버
|
|
108
|
+
- ✅ 음식 먹으면 뱀 성장
|
|
109
|
+
|
|
110
|
+
#### RESET_GAME action
|
|
111
|
+
- ✅ 게임 초기화 및 최고 점수 유지
|
|
112
|
+
|
|
113
|
+
#### SET_HIGH_SCORE action
|
|
114
|
+
- ✅ 최고 점수 업데이트
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 테스트 환경
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"vitest": "4.0.17",
|
|
123
|
+
"jsdom": "27.4.0",
|
|
124
|
+
"@testing-library/react": "16.3.2",
|
|
125
|
+
"@testing-library/jest-dom": "6.9.1",
|
|
126
|
+
"@vitest/coverage-v8": "4.0.17"
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 권장 개선 사항
|
|
133
|
+
|
|
134
|
+
### 추가 테스트 필요
|
|
135
|
+
1. **useGameLoop 훅** - 게임 루프 타이밍 테스트
|
|
136
|
+
2. **useKeyboard 훅** - 키보드 이벤트 테스트
|
|
137
|
+
3. **renderer.ts** - Canvas 렌더링 테스트 (jsdom 제한)
|
|
138
|
+
|
|
139
|
+
### E2E 테스트 (향후)
|
|
140
|
+
- Playwright를 사용한 전체 게임 플로우 테스트
|
|
141
|
+
- 브라우저 호환성 테스트
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
**작성자**: ClaudeCode
|
|
146
|
+
**검토일**: 2026-01-21
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# AI 협업 프롬프트 - Testing & E2E
|
|
2
|
+
|
|
3
|
+
## 협업 모드: Test Generation Chain
|
|
4
|
+
|
|
5
|
+
이 스테이지에서는 **테스트 생성 체인**을 사용하여 포괄적인 테스트를 작성합니다.
|
|
6
|
+
|
|
7
|
+
### 참여 모델
|
|
8
|
+
- **Codex**: 테스트 코드 생성
|
|
9
|
+
- **ClaudeCode**: E2E 테스트, Playwright 통합
|
|
10
|
+
|
|
11
|
+
### 협업 프롬프트
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
# 테스트 생성 체인
|
|
15
|
+
/collaborate --mode sequential --chain "codex:unit_tests -> codex:integration_tests -> claude:e2e_tests"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### 테스트 계층
|
|
19
|
+
|
|
20
|
+
| 계층 | 담당 AI | 도구 |
|
|
21
|
+
|------|---------|------|
|
|
22
|
+
| 단위 테스트 | Codex | Vitest/Jest |
|
|
23
|
+
| 통합 테스트 | Codex | Testing Library |
|
|
24
|
+
| E2E 테스트 | Claude | Playwright |
|
|
25
|
+
|
|
26
|
+
### Codex 활용
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 단위 테스트 생성
|
|
30
|
+
/codex "다음 함수에 대한 단위 테스트 작성:
|
|
31
|
+
[함수 코드]
|
|
32
|
+
테스트 프레임워크: Vitest
|
|
33
|
+
커버리지 목표: 80%"
|
|
34
|
+
|
|
35
|
+
# E2E 테스트 생성
|
|
36
|
+
/codex "다음 사용자 플로우에 대한 Playwright 테스트:
|
|
37
|
+
1. 로그인
|
|
38
|
+
2. 핵심 기능
|
|
39
|
+
3. 에러 시나리오"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### MCP 서버: Playwright
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
// E2E 테스트 예시
|
|
46
|
+
test('로그인 플로우', async ({ page }) => {
|
|
47
|
+
await page.goto('/login');
|
|
48
|
+
await page.fill('[name="email"]', 'test@example.com');
|
|
49
|
+
await page.fill('[name="password"]', 'password');
|
|
50
|
+
await page.click('button[type="submit"]');
|
|
51
|
+
await expect(page).toHaveURL('/dashboard');
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 출력 형식
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
## AI 협업 결과
|
|
59
|
+
|
|
60
|
+
### Codex 단위 테스트
|
|
61
|
+
- [파일]: [테스트 케이스 수]
|
|
62
|
+
...
|
|
63
|
+
|
|
64
|
+
### Codex 통합 테스트
|
|
65
|
+
- [시나리오]: [커버리지]
|
|
66
|
+
...
|
|
67
|
+
|
|
68
|
+
### Claude E2E 테스트
|
|
69
|
+
- [플로우]: [테스트 케이스]
|
|
70
|
+
...
|
|
71
|
+
|
|
72
|
+
### 커버리지 요약
|
|
73
|
+
- Statements: X%
|
|
74
|
+
- Branches: X%
|
|
75
|
+
- Functions: X%
|
|
76
|
+
- Lines: X%
|
|
77
|
+
```
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# 산출물 검증 프롬프트 - Testing & E2E
|
|
2
|
+
|
|
3
|
+
## 검증 대상
|
|
4
|
+
|
|
5
|
+
| 산출물 | 필수 조건 | 검증 방법 |
|
|
6
|
+
|--------|----------|----------|
|
|
7
|
+
| `tests/` | 커버리지 80%+ | `npm run test:coverage` |
|
|
8
|
+
| `test_report.md` | 100% 통과 | 결과 확인 |
|
|
9
|
+
| `coverage_report.md` | 메트릭 포함 | 구조 확인 |
|
|
10
|
+
| `HANDOFF.md` | 배포 준비 상태 | 항목 확인 |
|
|
11
|
+
|
|
12
|
+
## 검증 명령
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
/validate --stage 09-testing
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 품질 기준
|
|
19
|
+
|
|
20
|
+
### tests/
|
|
21
|
+
- [ ] 단위 테스트 존재
|
|
22
|
+
- [ ] 통합 테스트 존재
|
|
23
|
+
- [ ] E2E 테스트 존재 (핵심 플로우)
|
|
24
|
+
- [ ] 모든 테스트 통과
|
|
25
|
+
|
|
26
|
+
### 커버리지 목표
|
|
27
|
+
- [ ] Statements: 80%+
|
|
28
|
+
- [ ] Branches: 75%+
|
|
29
|
+
- [ ] Functions: 80%+
|
|
30
|
+
- [ ] Lines: 80%+
|
|
31
|
+
|
|
32
|
+
### test_report.md
|
|
33
|
+
- [ ] 테스트 케이스 목록
|
|
34
|
+
- [ ] 통과/실패 현황
|
|
35
|
+
- [ ] 실패 테스트 분석 (있는 경우)
|
|
36
|
+
|
|
37
|
+
### coverage_report.md
|
|
38
|
+
- [ ] 커버리지 요약
|
|
39
|
+
- [ ] 파일별 커버리지
|
|
40
|
+
- [ ] 커버되지 않은 영역 식별
|
|
41
|
+
|
|
42
|
+
### HANDOFF.md
|
|
43
|
+
- [ ] 테스트 통과 확인
|
|
44
|
+
- [ ] 커버리지 달성 확인
|
|
45
|
+
- [ ] 배포 준비 체크리스트
|
|
46
|
+
|
|
47
|
+
## 자동 검증 스크립트
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# 단위/통합 테스트 실행
|
|
51
|
+
npm run test
|
|
52
|
+
|
|
53
|
+
# 커버리지 측정
|
|
54
|
+
npm run test:coverage
|
|
55
|
+
|
|
56
|
+
# E2E 테스트 실행
|
|
57
|
+
npm run test:e2e
|
|
58
|
+
|
|
59
|
+
# 커버리지 임계값 확인
|
|
60
|
+
npm run test:coverage -- --coverageThreshold='{"global":{"statements":80,"branches":75,"functions":80,"lines":80}}'
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 커버리지 메트릭
|
|
64
|
+
|
|
65
|
+
| 메트릭 | 목표 | 실제 | 상태 |
|
|
66
|
+
|--------|------|------|------|
|
|
67
|
+
| Statements | 80% | - | - |
|
|
68
|
+
| Branches | 75% | - | - |
|
|
69
|
+
| Functions | 80% | - | - |
|
|
70
|
+
| Lines | 80% | - | - |
|
|
71
|
+
|
|
72
|
+
## E2E 테스트 체크리스트
|
|
73
|
+
|
|
74
|
+
- [ ] 인증 플로우 테스트
|
|
75
|
+
- [ ] 핵심 기능 플로우 테스트
|
|
76
|
+
- [ ] 에러 시나리오 테스트
|
|
77
|
+
- [ ] 반응형 테스트 (선택적)
|
|
78
|
+
|
|
79
|
+
## 실패 시 조치
|
|
80
|
+
|
|
81
|
+
1. 테스트 실패 → 버그 수정 후 재실행
|
|
82
|
+
2. 커버리지 미달 → 테스트 추가
|
|
83
|
+
3. E2E 실패 → UI/로직 수정
|
|
File without changes
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Stage 10: CI/CD & Deployment
|
|
2
|
+
|
|
3
|
+
배포 파이프라인 설정 및 배포 단계
|
|
4
|
+
|
|
5
|
+
## 🎭 페르소나: DevOps Specialist
|
|
6
|
+
|
|
7
|
+
> 당신은 DevOps Specialist입니다.
|
|
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.2 (안전 최우선)
|
|
30
|
+
- **안전성 집중**: Critical
|
|
31
|
+
- **자동화 수준**: High
|
|
32
|
+
|
|
33
|
+
## 실행 모델
|
|
34
|
+
- **Primary**: ClaudeCode (CI/CD 설정)
|
|
35
|
+
- **Mode**: Headless - CI/CD 환경 자동화
|
|
36
|
+
|
|
37
|
+
## 목표
|
|
38
|
+
1. CI/CD 파이프라인 설정
|
|
39
|
+
2. 배포 환경 구성
|
|
40
|
+
3. 모니터링 설정
|
|
41
|
+
4. 문서화 완료
|
|
42
|
+
|
|
43
|
+
## 입력 파일
|
|
44
|
+
- `source_code/` - 최종 소스 코드
|
|
45
|
+
- `../09-testing/outputs/tests/`
|
|
46
|
+
- `../09-testing/outputs/test_report.md`
|
|
47
|
+
- `../09-testing/HANDOFF.md`
|
|
48
|
+
|
|
49
|
+
## 출력 파일
|
|
50
|
+
- `outputs/.github/workflows/` - GitHub Actions
|
|
51
|
+
- `outputs/deployment_config/` - 배포 설정
|
|
52
|
+
- `outputs/deployment_log.md` - 배포 로그
|
|
53
|
+
- `HANDOFF.md` (최종)
|
|
54
|
+
|
|
55
|
+
## 워크플로우
|
|
56
|
+
|
|
57
|
+
### 1. CI 파이프라인 설정
|
|
58
|
+
```yaml
|
|
59
|
+
# .github/workflows/ci.yml
|
|
60
|
+
name: CI
|
|
61
|
+
on: [push, pull_request]
|
|
62
|
+
jobs:
|
|
63
|
+
test:
|
|
64
|
+
runs-on: ubuntu-latest
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@v4
|
|
67
|
+
- uses: actions/setup-node@v4
|
|
68
|
+
- run: npm ci
|
|
69
|
+
- run: npm run lint
|
|
70
|
+
- run: npm run type-check
|
|
71
|
+
- run: npm test
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. CD 파이프라인 설정
|
|
75
|
+
- 스테이징 환경 배포
|
|
76
|
+
- 프로덕션 환경 배포
|
|
77
|
+
- 롤백 전략
|
|
78
|
+
|
|
79
|
+
### 3. 환경 설정
|
|
80
|
+
- 환경 변수 관리
|
|
81
|
+
- 시크릿 설정
|
|
82
|
+
- 도메인/SSL
|
|
83
|
+
|
|
84
|
+
### 4. 모니터링 설정
|
|
85
|
+
- 에러 트래킹 (Sentry)
|
|
86
|
+
- 성능 모니터링
|
|
87
|
+
- 로그 수집
|
|
88
|
+
|
|
89
|
+
### 5. 문서화
|
|
90
|
+
- 배포 가이드
|
|
91
|
+
- 운영 매뉴얼
|
|
92
|
+
- 트러블슈팅 가이드
|
|
93
|
+
|
|
94
|
+
## 배포 플랫폼 옵션
|
|
95
|
+
- **Vercel**: Next.js 권장
|
|
96
|
+
- **Railway**: 풀스택
|
|
97
|
+
- **AWS**: 엔터프라이즈
|
|
98
|
+
- **Cloudflare**: Edge
|
|
99
|
+
|
|
100
|
+
## 완료 조건
|
|
101
|
+
- [ ] CI 파이프라인 설정
|
|
102
|
+
- [ ] CD 파이프라인 설정
|
|
103
|
+
- [ ] 스테이징 배포 성공
|
|
104
|
+
- [ ] 프로덕션 배포 성공
|
|
105
|
+
- [ ] 모니터링 설정
|
|
106
|
+
- [ ] 배포 문서 작성
|
|
107
|
+
- [ ] HANDOFF.md 생성 (최종)
|
|
108
|
+
|
|
109
|
+
## 파이프라인 종료
|
|
110
|
+
이것이 마지막 스테이지입니다. 배포 완료 후:
|
|
111
|
+
1. 전체 프로젝트 회고
|
|
112
|
+
2. 학습 내용 문서화
|
|
113
|
+
3. 유지보수 계획 수립
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|