create-ax-project 1.0.0 → 1.0.1

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.
Files changed (62) hide show
  1. package/package.json +1 -1
  2. package/template/.claude/CLAUDE.md +0 -7
  3. package/template/.claude/commands/CLAUDE.md +0 -0
  4. package/template/.claude/hooks/CLAUDE.md +0 -0
  5. package/template/.claude/skills/ai-collaboration/CLAUDE.md +0 -0
  6. package/template/.claude/skills/auto-checkpoint/CLAUDE.md +0 -0
  7. package/template/.claude/skills/context-compression/CLAUDE.md +0 -0
  8. package/template/.claude/skills/context-compression/prompts/CLAUDE.md +0 -0
  9. package/template/.claude/skills/output-validator/CLAUDE.md +0 -0
  10. package/template/.claude/skills/smart-handoff/CLAUDE.md +0 -0
  11. package/template/.claude/skills/stage-transition/CLAUDE.md +0 -0
  12. package/template/.claude/skills/stage-transition/prompts/CLAUDE.md +0 -0
  13. package/template/config/CLAUDE.md +0 -0
  14. package/template/scripts/CLAUDE.md +0 -0
  15. package/template/stages/01-brainstorm/HANDOFF.md +0 -110
  16. package/template/stages/01-brainstorm/inputs/CLAUDE.md +0 -0
  17. package/template/stages/01-brainstorm/inputs/project_brief.md +0 -40
  18. package/template/stages/01-brainstorm/outputs/CLAUDE.md +0 -0
  19. package/template/stages/01-brainstorm/outputs/ideas.md +0 -159
  20. package/template/stages/01-brainstorm/outputs/requirements_analysis.md +0 -222
  21. package/template/stages/01-brainstorm/prompts/CLAUDE.md +0 -0
  22. package/template/stages/01-brainstorm/templates/CLAUDE.md +0 -0
  23. package/template/stages/02-research/HANDOFF.md +0 -158
  24. package/template/stages/02-research/outputs/CLAUDE.md +0 -0
  25. package/template/stages/02-research/outputs/feasibility_report.md +0 -176
  26. package/template/stages/02-research/outputs/tech_research.md +0 -403
  27. package/template/stages/02-research/prompts/CLAUDE.md +0 -0
  28. package/template/stages/03-planning/HANDOFF.md +0 -168
  29. package/template/stages/03-planning/outputs/CLAUDE.md +0 -0
  30. package/template/stages/03-planning/outputs/architecture.md +0 -400
  31. package/template/stages/03-planning/outputs/implementation.yaml +0 -209
  32. package/template/stages/03-planning/outputs/project_plan.md +0 -204
  33. package/template/stages/03-planning/outputs/tech_stack.md +0 -176
  34. package/template/stages/03-planning/prompts/CLAUDE.md +0 -0
  35. package/template/stages/04-ui-ux/HANDOFF.md +0 -165
  36. package/template/stages/04-ui-ux/outputs/CLAUDE.md +0 -0
  37. package/template/stages/04-ui-ux/outputs/design_system.md +0 -449
  38. package/template/stages/04-ui-ux/outputs/user_flows.md +0 -321
  39. package/template/stages/04-ui-ux/outputs/wireframes.md +0 -241
  40. package/template/stages/04-ui-ux/prompts/CLAUDE.md +0 -0
  41. package/template/stages/05-task-management/HANDOFF.md +0 -187
  42. package/template/stages/05-task-management/outputs/CLAUDE.md +0 -0
  43. package/template/stages/05-task-management/outputs/milestones.md +0 -253
  44. package/template/stages/05-task-management/outputs/sprint_plan.md +0 -203
  45. package/template/stages/05-task-management/outputs/tasks.md +0 -402
  46. package/template/stages/05-task-management/prompts/CLAUDE.md +0 -0
  47. package/template/stages/05-task-management/templates/CLAUDE.md +0 -0
  48. package/template/stages/06-implementation/HANDOFF.md +0 -184
  49. package/template/stages/06-implementation/prompts/CLAUDE.md +0 -0
  50. package/template/stages/07-refactoring/HANDOFF.md +0 -82
  51. package/template/stages/07-refactoring/outputs/refactoring_report.md +0 -102
  52. package/template/stages/07-refactoring/prompts/CLAUDE.md +0 -0
  53. package/template/stages/08-qa/HANDOFF.md +0 -114
  54. package/template/stages/08-qa/outputs/qa_report.md +0 -138
  55. package/template/stages/08-qa/prompts/CLAUDE.md +0 -0
  56. package/template/stages/09-testing/HANDOFF.md +0 -118
  57. package/template/stages/09-testing/outputs/test_report.md +0 -146
  58. package/template/stages/09-testing/prompts/CLAUDE.md +0 -0
  59. package/template/stages/10-deployment/HANDOFF.md +0 -141
  60. package/template/stages/10-deployment/prompts/CLAUDE.md +0 -0
  61. package/template/stages/10-deployment/templates/CLAUDE.md +0 -0
  62. package/template/state/templates/CLAUDE.md +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-ax-project",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Multi-AI Workflow Pipeline - Create new projects with 10-stage development workflow",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +0,0 @@
1
- <claude-mem-context>
2
- # Recent Activity
3
-
4
- <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
-
6
- *No recent activity*
7
- </claude-mem-context>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,110 +0,0 @@
1
- # HANDOFF: 01-brainstorm → 02-research
2
-
3
- > 생성일: 2026-01-21
4
- > 프로젝트: snake-game
5
- > 현재 스테이지: 01-brainstorm (완료)
6
- > 다음 스테이지: 02-research
7
-
8
- ---
9
-
10
- ## ✅ 완료된 작업
11
-
12
- - [x] 프로젝트 브리프 작성 (`inputs/project_brief.md`)
13
- - [x] 핵심 기능 아이디어 12개 브레인스토밍
14
- - [x] 사용자 페르소나 3개 정의
15
- - [x] 유사 프로젝트 사례 조사
16
- - [x] 장단점 분석 완료
17
- - [x] MVP 범위 제안
18
-
19
- ---
20
-
21
- ## 📋 핵심 결정사항
22
-
23
- ### 1. 기술 스택 방향
24
- - **렌더링**: Canvas (성능 우선, 모바일 지원)
25
- - **상태관리**: useReducer + Custom Hook
26
- - **게임 루프**: requestAnimationFrame
27
-
28
- ### 2. MVP 기능 범위
29
- | 우선순위 | 기능 |
30
- |---------|------|
31
- | 🔴 필수 | 기본 조작, 먹이 시스템, 충돌 감지, 점수, 재시작 |
32
- | 🟡 중요 | 레벨 시스템, 하이스코어 저장, 일시정지, 모바일 터치 |
33
- | 🟢 선택 | Combo System, Portal Edges, Different Food |
34
-
35
- ### 3. 타겟 사용자 (우선순위)
36
- 1. **Persona A**: 캐주얼 게이머 (모바일, 5-10분 플레이)
37
- 2. **Persona B**: 경쟁적 게이머 (데스크톱, 하이스코어 추구)
38
- 3. **Persona C**: 레트로 팬 (클래식 스타일 선호)
39
-
40
- ---
41
-
42
- ## 📁 생성된 산출물
43
-
44
- | 파일 | 설명 |
45
- |------|------|
46
- | `inputs/project_brief.md` | 프로젝트 개요 및 요구사항 |
47
- | `outputs/ideas.md` | 브레인스토밍 아이디어 (12개) |
48
- | `outputs/requirements_analysis.md` | 요구사항 분석 |
49
- | `HANDOFF.md` | 이 문서 |
50
-
51
- ---
52
-
53
- ## 🔜 다음 스테이지 즉시 실행 작업
54
-
55
- ### 02-research에서 조사할 항목
56
-
57
- 1. **Canvas 게임 루프 구현 방법**
58
- - requestAnimationFrame vs setInterval
59
- - 최적화 기법 (더블 버퍼링)
60
-
61
- 2. **React + Canvas 통합 패턴**
62
- - useRef로 Canvas 접근
63
- - Canvas 리렌더링 최소화
64
-
65
- 3. **모바일 터치 이벤트 처리**
66
- - touchstart/touchmove/touchend
67
- - 스와이프 방향 감지 로직
68
-
69
- 4. **localStorage 하이스코어 저장**
70
- - 데이터 구조 설계
71
- - 보안 고려사항
72
-
73
- 5. **충돌 감지 알고리즘**
74
- - O(n) 자기 몸 충돌
75
- - 최적화 방안
76
-
77
- ---
78
-
79
- ## ⚠️ 주의사항
80
-
81
- 1. **외부 게임 엔진 미사용**: Phaser, PixiJS 등 금지
82
- 2. **순수 React 구현**: jQuery 미사용
83
- 3. **정적 배포 가능**: 백엔드 서버 없음
84
-
85
- ---
86
-
87
- ## 📊 AI 호출 기록
88
-
89
- | AI | 시간 | 프롬프트 | 결과 | 상태 |
90
- |----|------|---------|------|------|
91
- | Gemini | 11:58 | Snake Game 브레인스토밍 | 12개 아이디어, 3 페르소나 | ✅ |
92
- | ClaudeCode | 11:57 | 결과 구조화 | ideas.md, HANDOFF.md | ✅ |
93
-
94
- ---
95
-
96
- ## 🚀 다음 단계
97
-
98
- ```bash
99
- # 다음 스테이지 실행
100
- /run-stage 02-research
101
-
102
- # 또는
103
- /research
104
- ```
105
-
106
- ---
107
-
108
- **생성자**: ClaudeCode
109
- **검토자**: -
110
- **승인**: 대기
File without changes
@@ -1,40 +0,0 @@
1
- # Project Brief: Snake Game
2
-
3
- ## 프로젝트 이름
4
- Snake Game
5
-
6
- ## 한 줄 설명
7
- 클래식 스네이크 게임의 현대적 웹 버전
8
-
9
- ## 문제 정의
10
- 간단하지만 중독성 있는 캐주얼 게임 필요
11
-
12
- ## 타겟 사용자
13
- - 짧은 시간 게임을 즐기고 싶은 사용자
14
- - 레트로 게임 팬
15
- - 모바일/데스크톱 모두에서 게임을 원하는 사용자
16
-
17
- ## 핵심 기능
18
- 1. 방향키/터치로 뱀 조작
19
- 2. 먹이 수집 및 성장
20
- 3. 충돌 감지 (벽, 자기 몸)
21
- 4. 점수 시스템
22
-
23
- ## 기술 요구사항
24
- - React + TypeScript
25
- - Vite 빌드 도구
26
- - Canvas 또는 CSS Grid 기반 렌더링
27
- - 반응형 디자인 (모바일 지원)
28
-
29
- ## 성공 지표
30
- - 게임 플레이 가능 (기본 기능 완성)
31
- - 모바일/데스크톱 모두 지원
32
- - 테스트 커버리지 80% 이상
33
- - 배포 완료 (GitHub Pages 또는 Vercel)
34
-
35
- ## 타임라인
36
- - 전체 파이프라인 (01~10): 약 4시간
37
-
38
- ## 제약사항
39
- - 외부 게임 엔진 미사용 (순수 React)
40
- - 복잡한 백엔드 없음 (프론트엔드 only)
File without changes
@@ -1,159 +0,0 @@
1
- # 🐍 Snake Game - 브레인스토밍 아이디어
2
-
3
- > 생성일: 2026-01-21
4
- > 스테이지: 01-brainstorm
5
- > 프로젝트: snake-game
6
- > AI 도구: Gemini CLI + ClaudeCode
7
-
8
- ---
9
-
10
- ## 📋 핵심 기능 아이디어 (12개)
11
-
12
- ### 🎮 기본 게임플레이 (필수)
13
-
14
- | # | 아이디어 | 설명 | 우선순위 |
15
- |---|---------|------|---------|
16
- | 1 | **기본 뱀 조작** | 방향키(↑↓←→)로 뱀 이동 | 🔴 필수 |
17
- | 2 | **먹이 시스템** | 먹이를 먹으면 뱀 길이 +1, 점수 +10 | 🔴 필수 |
18
- | 3 | **충돌 감지** | 벽/자기 몸 충돌 시 게임 오버 | 🔴 필수 |
19
- | 4 | **점수 시스템** | 실시간 점수 표시 | 🔴 필수 |
20
- | 5 | **게임 재시작** | 게임 오버 후 다시 시작 기능 | 🔴 필수 |
21
-
22
- ### ⭐ Gemini 제안 기능
23
-
24
- | # | 아이디어 | 설명 | 우선순위 |
25
- |---|---------|------|---------|
26
- | 6 | **Dash / Sprint** | 제한된 스태미나로 2배속 이동 | 🟢 선택 |
27
- | 7 | **Ghost Mode** | 자기 몸 통과 파워업 (5초) | 🟢 선택 |
28
- | 8 | **Dynamic Obstacles** | 10초마다 위치 변경되는 장애물 | 🟢 선택 |
29
- | 9 | **Combo System** | 연속 먹이 획득 시 점수 배율 (x1→x2→x4) | 🟡 중요 |
30
- | 10 | **Portal Edges** | 벽 통과 시 반대편으로 이동 (팩맨 스타일) | 🟡 중요 |
31
- | 11 | **Different Food Types** | 사과(+1), 황금사과(점수만), 고추(속도↑), 얼음(속도↓) | 🟢 선택 |
32
- | 12 | **Puzzle Levels** | 미로 레벨에서 모든 먹이 수집 | 🟢 선택 |
33
-
34
- ---
35
-
36
- ## 📊 장단점 분석 (Gemini 분석)
37
-
38
- | 아이디어 | 장점 | 단점 |
39
- |:---------|:-----|:-----|
40
- | **Dash / Sprint** | 스킬 요소 추가, "클러치" 모멘트 | 속도로 인한 실수 충돌 가능 |
41
- | **Ghost Mode** | 초보자 친화적, 좌절감 감소 | 너무 쉬워질 수 있음 |
42
- | **Dynamic Obstacles** | 신선함 유지, 안전지대 캠핑 방지 | 불공정하게 느껴질 수 있음 |
43
- | **Combo System** | 공격적이고 위험한 플레이 유도 | UI 복잡해짐 (타이머 표시) |
44
- | **Portal Edges** | 클래식하고 만족스러운 플로우 | "코너 함정" 긴장감 감소 |
45
- | **Different Food** | 전략적 깊이 (위험 vs 보상) | 플레이어가 색상별 효과 기억 필요 |
46
- | **Puzzle Levels** | 명확한 진행감/완료감 | 무한 모드 대비 재플레이성 낮음 |
47
-
48
- ---
49
-
50
- ## 👥 사용자 페르소나 (Gemini 생성)
51
-
52
- ### 페르소나 A: "The Commuter" (캐주얼)
53
- - **인구통계**: 28세 직장인
54
- - **행동**: 지하철에서 모바일로 5-10분 플레이
55
- - **니즈**:
56
- - 한 손 조작 (스와이프)
57
- - 빠른 시작 (로딩 없음)
58
- - 오프라인 가능
59
- - 브라우저 닫아도 자동 저장
60
- - **불만**: 복잡한 메뉴, 작은 버튼, 광고
61
-
62
- ### 페르소나 B: "The High-Scorer" (경쟁적)
63
- - **인구통계**: 16세 학생
64
- - **행동**: 쉬는 시간에 데스크톱 PC로 플레이, 리더보드에 집착
65
- - **니즈**:
66
- - 정밀한 키보드 조작 (입력 지연 제로)
67
- - 고대비 시각 (장애물 명확히 보임)
68
- - 즉시 재시작 기능 ("R" 키)
69
- - 글로벌 리더보드
70
- - **불만**: 불공정한 RNG, 랙, 느린 애니메이션
71
-
72
- ### 페르소나 C: "The Retro Fan" (향수)
73
- - **인구통계**: 40세 개발자
74
- - **행동**: 픽셀 아트와 칩튠 음악 선호, 휴식용 플레이
75
- - **니즈**:
76
- - 클래식 CRT 필터 또는 픽셀아트 미학
77
- - 단순하고 "순수한" 게임플레이
78
- - 게임패드/컨트롤러 지원
79
- - **불만**: 과도하게 현대적인 "화려한" 효과, 소액결제
80
-
81
- ---
82
-
83
- ## 🔍 유사 프로젝트 사례 (Gemini 조사)
84
-
85
- ### 1. Google Snake (검색 이스터에그)
86
- - **특징**: "접근 가능한" 스네이크의 표준
87
- - **핵심 기능**: 토글 가능한 모드 (속도, 포털, 평화 모드)
88
-
89
- ### 2. Slither.io
90
- - **특징**: "현대 멀티플레이어" 시대 정의
91
- - **핵심 기능**: 마우스 따라가기 (아날로그), "차단" 메카닉
92
-
93
- ### 3. Classic Nokia Snake (Snake II)
94
- - **특징**: 장르의 기초
95
- - **핵심 기능**: 단색, 그리드 기반, 벽 랩어라운드 옵션
96
-
97
- ### 4. React-Snake (GitHub Topics)
98
- - **공통 기술 스택 패턴**:
99
- - `useInterval` 훅으로 게임 루프
100
- - 좌표 배열 `[{x,y}, {x,y}]`로 뱀 몸통
101
- - CSS Grid (쉬움) vs HTML5 Canvas (성능 좋음)
102
- - Redux/Zustand로 하이스코어 관리
103
-
104
- ---
105
-
106
- ## 🎯 MVP 권장사항 (Gemini 제안)
107
-
108
- **페르소나 A (The Commuter)**와 **페르소나 B (The Competitive)**를 염두에 두고:
109
-
110
- ### 기술 스택
111
- - **렌더링**: React + Canvas (모바일 성능 우선)
112
- - **입력**: 키보드 (Arrow/WASD) + 모바일 스와이프
113
-
114
- ### MVP 기능 세트
115
- - [x] 클래식 무한 모드
116
- - [x] LocalStorage에 하이스코어 저장
117
- - [x] 3단계 속도 (느림, 보통, 빠름)
118
- - [x] "즉시 재시작" (한 번 더 시도 루프)
119
-
120
- ---
121
-
122
- ## 📊 최종 우선순위 매트릭스
123
-
124
- ```
125
- 높은 가치
126
-
127
- ┌───────────────────┼───────────────────┐
128
- │ Combo System │ 기본 조작 │
129
- │ Portal Edges │ 먹이 시스템 │
130
- │ 레벨 시스템 │ 충돌 감지 │
131
- │ │ 점수 시스템 │
132
- 적은 ─────────────────────────────────────── 많은
133
- 노력 │ │ 게임 재시작 │ 노력
134
- │ 일시정지 │ │
135
- │ 하이스코어 저장 │ Different Food │
136
- │ │ Ghost Mode │
137
- └───────────────────┼───────────────────┘
138
-
139
- 낮은 가치
140
- ```
141
-
142
- ---
143
-
144
- ## ✅ 브레인스토밍 완료 체크리스트
145
-
146
- - [x] 최소 10개 아이디어 생성 (12개 완료)
147
- - [x] 3개 이상 사용자 페르소나 정의 (3개 완료)
148
- - [x] 각 아이디어 장단점 분석
149
- - [x] 유사 프로젝트 조사
150
- - [x] MVP 범위 제안
151
-
152
- ---
153
-
154
- ## 📝 AI 호출 기록
155
-
156
- | AI | 호출 시간 | 프롬프트 | 결과 | 상태 |
157
- |----|----------|---------|------|------|
158
- | Gemini | 2026-01-21 11:58 | Snake Game 브레인스토밍 | 12개 아이디어, 3 페르소나, 사례 조사 | ✅ 성공 |
159
- | ClaudeCode | 2026-01-21 11:57 | 결과 구조화 | ideas.md 작성 | ✅ 성공 |
@@ -1,222 +0,0 @@
1
- # 📋 Snake Game - 요구사항 분석
2
-
3
- > 생성일: 2026-01-21
4
- > 스테이지: 01-brainstorm
5
- > 프로젝트: snake-game
6
-
7
- ---
8
-
9
- ## 1. 기능적 요구사항 (Functional Requirements)
10
-
11
- ### FR-01: 게임 시작/종료
12
- | ID | 요구사항 | 상세 | 우선순위 |
13
- |----|---------|------|---------|
14
- | FR-01-1 | 게임 시작 | 시작 버튼 클릭 또는 스페이스바로 게임 시작 | 필수 |
15
- | FR-01-2 | 게임 종료 | 충돌 시 게임 오버 화면 표시 | 필수 |
16
- | FR-01-3 | 재시작 | 게임 오버 후 재시작 버튼 제공 | 필수 |
17
- | FR-01-4 | 일시정지 | P키 또는 버튼으로 일시정지/재개 | 중요 |
18
-
19
- ### FR-02: 뱀 조작
20
- | ID | 요구사항 | 상세 | 우선순위 |
21
- |----|---------|------|---------|
22
- | FR-02-1 | 키보드 조작 | 방향키(↑↓←→)로 이동 방향 변경 | 필수 |
23
- | FR-02-2 | 터치 조작 | 스와이프 또는 방향 버튼으로 조작 | 중요 |
24
- | FR-02-3 | 연속 이동 | 뱀은 자동으로 현재 방향으로 이동 | 필수 |
25
- | FR-02-4 | 반대 방향 제한 | 즉시 반대 방향 이동 불가 (자기 충돌 방지) | 필수 |
26
-
27
- ### FR-03: 먹이 시스템
28
- | ID | 요구사항 | 상세 | 우선순위 |
29
- |----|---------|------|---------|
30
- | FR-03-1 | 먹이 생성 | 게임 보드 내 랜덤 위치에 먹이 생성 | 필수 |
31
- | FR-03-2 | 먹이 획득 | 뱀 머리가 먹이와 충돌 시 획득 | 필수 |
32
- | FR-03-3 | 성장 | 먹이 획득 시 뱀 길이 +1 | 필수 |
33
- | FR-03-4 | 새 먹이 | 먹이 획득 후 즉시 새 먹이 생성 | 필수 |
34
-
35
- ### FR-04: 충돌 감지
36
- | ID | 요구사항 | 상세 | 우선순위 |
37
- |----|---------|------|---------|
38
- | FR-04-1 | 벽 충돌 | 보드 경계 충돌 시 게임 오버 | 필수 |
39
- | FR-04-2 | 자기 충돌 | 뱀이 자기 몸과 충돌 시 게임 오버 | 필수 |
40
- | FR-04-3 | 장애물 충돌 | (선택) 장애물과 충돌 시 게임 오버 | 선택 |
41
-
42
- ### FR-05: 점수 시스템
43
- | ID | 요구사항 | 상세 | 우선순위 |
44
- |----|---------|------|---------|
45
- | FR-05-1 | 점수 표시 | 현재 점수 실시간 표시 | 필수 |
46
- | FR-05-2 | 점수 계산 | 먹이당 10점 (레벨에 따라 보너스) | 필수 |
47
- | FR-05-3 | 최고 점수 | 최고 점수 저장 및 표시 | 중요 |
48
- | FR-05-4 | 점수 저장 | localStorage에 하이스코어 저장 | 중요 |
49
-
50
- ### FR-06: 레벨 시스템
51
- | ID | 요구사항 | 상세 | 우선순위 |
52
- |----|---------|------|---------|
53
- | FR-06-1 | 레벨 표시 | 현재 레벨 표시 | 중요 |
54
- | FR-06-2 | 레벨업 조건 | 50점마다 레벨 증가 | 중요 |
55
- | FR-06-3 | 속도 증가 | 레벨당 10% 속도 증가 | 중요 |
56
- | FR-06-4 | 최대 레벨 | 레벨 10 이후 속도 고정 | 중요 |
57
-
58
- ---
59
-
60
- ## 2. 비기능적 요구사항 (Non-Functional Requirements)
61
-
62
- ### NFR-01: 성능
63
- | ID | 요구사항 | 목표 | 측정 방법 |
64
- |----|---------|------|----------|
65
- | NFR-01-1 | 프레임레이트 | 60fps 유지 | Chrome DevTools |
66
- | NFR-01-2 | 초기 로딩 | 2초 이내 | Lighthouse |
67
- | NFR-01-3 | 입력 지연 | 16ms 이내 | 수동 테스트 |
68
- | NFR-01-4 | 번들 크기 | 200KB 이하 | 빌드 분석 |
69
-
70
- ### NFR-02: 호환성
71
- | ID | 요구사항 | 대상 | 비고 |
72
- |----|---------|------|------|
73
- | NFR-02-1 | 데스크톱 브라우저 | Chrome, Firefox, Safari, Edge 최신 2버전 | |
74
- | NFR-02-2 | 모바일 브라우저 | iOS Safari, Android Chrome | |
75
- | NFR-02-3 | 화면 크기 | 320px ~ 1920px | 반응형 |
76
-
77
- ### NFR-03: 접근성
78
- | ID | 요구사항 | 상세 |
79
- |----|---------|------|
80
- | NFR-03-1 | 키보드 네비게이션 | 모든 UI 키보드로 접근 가능 |
81
- | NFR-03-2 | 색상 대비 | WCAG AA 기준 충족 |
82
- | NFR-03-3 | 포커스 표시 | 명확한 포커스 인디케이터 |
83
-
84
- ### NFR-04: 코드 품질
85
- | ID | 요구사항 | 기준 |
86
- |----|---------|------|
87
- | NFR-04-1 | 타입 안전성 | TypeScript strict 모드 |
88
- | NFR-04-2 | 린트 | ESLint 규칙 통과 |
89
- | NFR-04-3 | 테스트 커버리지 | 80% 이상 |
90
- | NFR-04-4 | 코드 포맷 | Prettier 적용 |
91
-
92
- ---
93
-
94
- ## 3. 기술적 제약조건
95
-
96
- ### 필수 기술 스택
97
- - **프론트엔드**: React 18+
98
- - **언어**: TypeScript 5+
99
- - **빌드 도구**: Vite
100
- - **렌더링**: Canvas API
101
-
102
- ### 금지 사항
103
- - 외부 게임 엔진 (Phaser, PixiJS 등) 미사용
104
- - jQuery 미사용
105
- - 백엔드 서버 미사용 (정적 배포)
106
-
107
- ### 권장 사항
108
- - Custom Hook으로 로직 분리
109
- - 컴포넌트 단위 테스트 작성
110
- - CSS Modules 또는 Tailwind CSS
111
-
112
- ---
113
-
114
- ## 4. 데이터 모델
115
-
116
- ### 게임 상태 (GameState)
117
- ```typescript
118
- interface GameState {
119
- status: 'idle' | 'playing' | 'paused' | 'gameover';
120
- score: number;
121
- level: number;
122
- highScore: number;
123
- }
124
- ```
125
-
126
- ### 뱀 (Snake)
127
- ```typescript
128
- interface Position {
129
- x: number;
130
- y: number;
131
- }
132
-
133
- interface Snake {
134
- body: Position[];
135
- direction: 'UP' | 'DOWN' | 'LEFT' | 'RIGHT';
136
- }
137
- ```
138
-
139
- ### 먹이 (Food)
140
- ```typescript
141
- interface Food {
142
- position: Position;
143
- type: 'normal' | 'bonus';
144
- }
145
- ```
146
-
147
- ### 게임 설정 (GameConfig)
148
- ```typescript
149
- interface GameConfig {
150
- boardWidth: number;
151
- boardHeight: number;
152
- cellSize: number;
153
- initialSpeed: number;
154
- speedIncrement: number;
155
- }
156
- ```
157
-
158
- ---
159
-
160
- ## 5. 사용자 시나리오
161
-
162
- ### 시나리오 1: 첫 게임 플레이
163
- 1. 사용자가 웹사이트 접속
164
- 2. "Start Game" 버튼 표시됨
165
- 3. 버튼 클릭 또는 스페이스바로 게임 시작
166
- 4. 뱀이 화면 중앙에서 시작
167
- 5. 방향키로 뱀 조작
168
- 6. 먹이를 먹으면 점수 증가
169
- 7. 벽 또는 자기 몸과 충돌하면 게임 오버
170
- 8. "Game Over" 화면과 최종 점수 표시
171
- 9. "Restart" 버튼으로 재시작
172
-
173
- ### 시나리오 2: 최고 점수 갱신
174
- 1. 게임 플레이 중 현재 점수가 최고 점수 초과
175
- 2. 화면에 "New High Score!" 표시
176
- 3. 게임 오버 시 최고 점수 localStorage에 저장
177
- 4. 다음 게임 시작 시 저장된 최고 점수 표시
178
-
179
- ### 시나리오 3: 모바일 플레이
180
- 1. 모바일 기기로 접속
181
- 2. 화면이 모바일 크기에 맞게 조정됨
182
- 3. 화면 하단에 방향 버튼 표시
183
- 4. 터치/스와이프로 뱀 조작
184
- 5. 세로 모드에서 최적화된 레이아웃
185
-
186
- ---
187
-
188
- ## 6. 인수 기준 (Acceptance Criteria)
189
-
190
- ### 게임 기본 기능
191
- - [ ] 게임 시작 시 뱀이 화면 중앙에 나타난다
192
- - [ ] 방향키 입력에 따라 뱀이 즉시 방향을 바꾼다
193
- - [ ] 뱀이 먹이를 먹으면 길이가 1 증가한다
194
- - [ ] 먹이를 먹으면 점수가 10점 증가한다
195
- - [ ] 벽에 부딪히면 게임이 끝난다
196
- - [ ] 자기 몸에 부딪히면 게임이 끝난다
197
- - [ ] 게임 오버 후 재시작할 수 있다
198
-
199
- ### 추가 기능
200
- - [ ] 50점마다 레벨이 1 증가한다
201
- - [ ] 레벨이 오르면 뱀의 속도가 빨라진다
202
- - [ ] 최고 점수가 브라우저에 저장된다
203
- - [ ] P키를 누르면 일시정지된다
204
- - [ ] 모바일에서 터치로 조작할 수 있다
205
-
206
- ### 품질 기준
207
- - [ ] TypeScript 타입 에러가 없다
208
- - [ ] ESLint 경고/에러가 없다
209
- - [ ] 테스트 커버리지 80% 이상
210
- - [ ] 60fps로 부드럽게 동작한다
211
-
212
- ---
213
-
214
- ## 📝 요약
215
-
216
- | 카테고리 | 필수 | 중요 | 선택 |
217
- |---------|------|------|------|
218
- | 기능적 요구사항 | 12개 | 8개 | 2개 |
219
- | 비기능적 요구사항 | 8개 | 3개 | 0개 |
220
- | 총계 | 20개 | 11개 | 2개 |
221
-
222
- **MVP 범위**: 필수 요구사항 20개 + 중요 요구사항 중 선택 5개
File without changes
File without changes