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
@@ -1,449 +0,0 @@
1
- # 🎨 Snake Game - λ””μžμΈ μ‹œμŠ€ν…œ
2
-
3
- > 생성일: 2026-01-21
4
- > μŠ€ν…Œμ΄μ§€: 04-ui-ux
5
- > ν”„λ‘œμ νŠΈ: snake-game
6
- > ν…Œλ§ˆ: Neon Arcade
7
-
8
- ---
9
-
10
- ## 1. 색상 νŒ”λ ˆνŠΈ (Color Palette)
11
-
12
- ### 1.1 핡심 색상
13
-
14
- | μ—­ν•  | λ³€μˆ˜λͺ… | 색상 μ½”λ“œ | μš©λ„ |
15
- |------|--------|----------|------|
16
- | **Primary** | `--color-primary` | `#00ff88` | λ±€, 메인 λ²„νŠΌ, κ°•μ‘° ν…μŠ€νŠΈ |
17
- | **Primary Dark** | `--color-primary-dark` | `#00cc6a` | λ±€ 머리, λ²„νŠΌ hover |
18
- | **Secondary** | `--color-secondary` | `#ff6b6b` | 먹이, μœ„ν—˜/μ‚­μ œ, Game Over |
19
- | **Accent** | `--color-accent` | `#f0e130` | 졜고 점수, νŠΉλ³„ μ•Œλ¦Ό |
20
- | **Background** | `--color-bg` | `#1a1a2e` | νŽ˜μ΄μ§€ λ°°κ²½ |
21
- | **Surface** | `--color-surface` | `#16213e` | μΉ΄λ“œ, λͺ¨λ‹¬, μΊ”λ²„μŠ€ λ°°κ²½ |
22
-
23
- ### 1.2 ν…μŠ€νŠΈ 색상
24
-
25
- | μ—­ν•  | λ³€μˆ˜λͺ… | 색상 μ½”λ“œ | μš©λ„ |
26
- |------|--------|----------|------|
27
- | **Text Primary** | `--color-text` | `#ffffff` | μ£Όμš” ν…μŠ€νŠΈ, 점수 |
28
- | **Text Secondary** | `--color-text-sub` | `#aeb2b8` | 보쑰 μ„€λͺ…, 힌트 |
29
- | **Text Muted** | `--color-text-muted` | `#6b7280` | λΉ„ν™œμ„± ν…μŠ€νŠΈ |
30
-
31
- ### 1.3 κ·Έλ¦¬λ“œ/보더 색상
32
-
33
- | μ—­ν•  | λ³€μˆ˜λͺ… | 색상 μ½”λ“œ | μš©λ„ |
34
- |------|--------|----------|------|
35
- | **Grid Line** | `--color-grid` | `rgba(255, 255, 255, 0.05)` | κ²Œμž„ λ³΄λ“œ 격자 |
36
- | **Border** | `--color-border` | `rgba(255, 255, 255, 0.1)` | μ»΄ν¬λ„ŒνŠΈ ν…Œλ‘λ¦¬ |
37
-
38
- ### 1.4 CSS λ³€μˆ˜ μ •μ˜
39
-
40
- ```css
41
- :root {
42
- /* Colors - Primary */
43
- --color-primary: #00ff88;
44
- --color-primary-dark: #00cc6a;
45
- --color-primary-glow: rgba(0, 255, 136, 0.5);
46
-
47
- /* Colors - Secondary */
48
- --color-secondary: #ff6b6b;
49
- --color-secondary-glow: rgba(255, 107, 107, 0.5);
50
-
51
- /* Colors - Accent */
52
- --color-accent: #f0e130;
53
-
54
- /* Colors - Background */
55
- --color-bg: #1a1a2e;
56
- --color-surface: #16213e;
57
- --color-overlay: rgba(0, 0, 0, 0.85);
58
-
59
- /* Colors - Text */
60
- --color-text: #ffffff;
61
- --color-text-sub: #aeb2b8;
62
- --color-text-muted: #6b7280;
63
-
64
- /* Colors - Utility */
65
- --color-grid: rgba(255, 255, 255, 0.05);
66
- --color-border: rgba(255, 255, 255, 0.1);
67
- }
68
- ```
69
-
70
- ---
71
-
72
- ## 2. νƒ€μ΄ν¬κ·Έλž˜ν”Ό (Typography)
73
-
74
- ### 2.1 폰트 νŒ¨λ°€λ¦¬
75
-
76
- | μš©λ„ | 폰트 | λŒ€μ²΄ 폰트 |
77
- |------|------|----------|
78
- | **Primary (Pixel)** | 'Press Start 2P' | 'Courier New', monospace |
79
- | **Secondary (Modern)** | 'Roboto Mono' | 'Consolas', monospace |
80
- | **Fallback** | system-ui | -apple-system, sans-serif |
81
-
82
- ### 2.2 폰트 크기
83
-
84
- | λ³€μˆ˜λͺ… | 크기 | μš©λ„ |
85
- |--------|------|------|
86
- | `--font-xs` | 10px | μ €μž‘κΆŒ, 힌트 |
87
- | `--font-sm` | 12px | 보쑰 ν…μŠ€νŠΈ |
88
- | `--font-base` | 14px | κΈ°λ³Έ ν…μŠ€νŠΈ |
89
- | `--font-lg` | 16px | λ²„νŠΌ, 점수 |
90
- | `--font-xl` | 20px | μ„Ήμ…˜ 제λͺ© |
91
- | `--font-2xl` | 24px | λͺ¨λ‹¬ 제λͺ© |
92
- | `--font-3xl` | 32px | 큰 제λͺ© |
93
- | `--font-4xl` | 48px | 둜고 |
94
-
95
- ### 2.3 폰트 λ‘κ»˜
96
-
97
- | λ³€μˆ˜λͺ… | κ°’ | μš©λ„ |
98
- |--------|-----|------|
99
- | `--font-normal` | 400 | κΈ°λ³Έ ν…μŠ€νŠΈ |
100
- | `--font-medium` | 500 | κ°•μ‘° ν…μŠ€νŠΈ |
101
- | `--font-bold` | 700 | 제λͺ©, 점수 |
102
-
103
- ### 2.4 CSS μ •μ˜
104
-
105
- ```css
106
- :root {
107
- /* Font Family */
108
- --font-pixel: 'Press Start 2P', 'Courier New', monospace;
109
- --font-mono: 'Roboto Mono', 'Consolas', monospace;
110
-
111
- /* Font Size */
112
- --font-xs: 0.625rem; /* 10px */
113
- --font-sm: 0.75rem; /* 12px */
114
- --font-base: 0.875rem; /* 14px */
115
- --font-lg: 1rem; /* 16px */
116
- --font-xl: 1.25rem; /* 20px */
117
- --font-2xl: 1.5rem; /* 24px */
118
- --font-3xl: 2rem; /* 32px */
119
- --font-4xl: 3rem; /* 48px */
120
-
121
- /* Font Weight */
122
- --font-normal: 400;
123
- --font-medium: 500;
124
- --font-bold: 700;
125
-
126
- /* Line Height */
127
- --line-tight: 1.25;
128
- --line-normal: 1.5;
129
- --line-relaxed: 1.75;
130
- }
131
- ```
132
-
133
- ---
134
-
135
- ## 3. μŠ€νŽ˜μ΄μ‹± μ‹œμŠ€ν…œ (Spacing)
136
-
137
- ### 3.1 κΈ°λ³Έ μŠ€μΌ€μΌ (4px 기반)
138
-
139
- | λ³€μˆ˜λͺ… | κ°’ | μš©λ„ |
140
- |--------|-----|------|
141
- | `--space-1` | 4px | λ―Έμ„Έ 간격 |
142
- | `--space-2` | 8px | μš”μ†Œ λ‚΄ 간격 |
143
- | `--space-3` | 12px | μž‘μ€ 간격 |
144
- | `--space-4` | 16px | κΈ°λ³Έ 간격 |
145
- | `--space-5` | 20px | 쀑간 간격 |
146
- | `--space-6` | 24px | μ„Ήμ…˜ 간격 |
147
- | `--space-8` | 32px | 큰 간격 |
148
- | `--space-10` | 40px | μ»΄ν¬λ„ŒνŠΈ 간격 |
149
- | `--space-12` | 48px | μ„Ήμ…˜ ꡬ뢄 |
150
- | `--space-16` | 64px | νŽ˜μ΄μ§€ μ—¬λ°± |
151
-
152
- ### 3.2 CSS μ •μ˜
153
-
154
- ```css
155
- :root {
156
- --space-1: 0.25rem; /* 4px */
157
- --space-2: 0.5rem; /* 8px */
158
- --space-3: 0.75rem; /* 12px */
159
- --space-4: 1rem; /* 16px */
160
- --space-5: 1.25rem; /* 20px */
161
- --space-6: 1.5rem; /* 24px */
162
- --space-8: 2rem; /* 32px */
163
- --space-10: 2.5rem; /* 40px */
164
- --space-12: 3rem; /* 48px */
165
- --space-16: 4rem; /* 64px */
166
- }
167
- ```
168
-
169
- ---
170
-
171
- ## 4. μ»΄ν¬λ„ŒνŠΈ μŠ€νƒ€μΌ
172
-
173
- ### 4.1 λ²„νŠΌ (Button)
174
-
175
- ```css
176
- /* Primary Button */
177
- .btn-primary {
178
- background: transparent;
179
- color: var(--color-primary);
180
- border: 2px solid var(--color-primary);
181
- padding: var(--space-3) var(--space-6);
182
- font-family: var(--font-pixel);
183
- font-size: var(--font-base);
184
- cursor: pointer;
185
- transition: all 0.2s ease;
186
- }
187
-
188
- .btn-primary:hover {
189
- background: var(--color-primary);
190
- color: var(--color-bg);
191
- box-shadow: 0 0 20px var(--color-primary-glow);
192
- }
193
-
194
- /* Secondary Button */
195
- .btn-secondary {
196
- background: transparent;
197
- color: var(--color-text-sub);
198
- border: 1px solid var(--color-border);
199
- padding: var(--space-2) var(--space-4);
200
- }
201
-
202
- .btn-secondary:hover {
203
- border-color: var(--color-text);
204
- color: var(--color-text);
205
- }
206
- ```
207
-
208
- ### 4.2 λͺ¨λ‹¬ (Modal)
209
-
210
- ```css
211
- /* Modal Overlay */
212
- .modal-overlay {
213
- position: fixed;
214
- inset: 0;
215
- background: var(--color-overlay);
216
- display: flex;
217
- align-items: center;
218
- justify-content: center;
219
- backdrop-filter: blur(4px);
220
- }
221
-
222
- /* Modal Content */
223
- .modal-content {
224
- background: var(--color-surface);
225
- border: 2px solid var(--color-primary);
226
- border-radius: var(--radius-lg);
227
- padding: var(--space-8);
228
- max-width: 400px;
229
- width: 90%;
230
- box-shadow: 0 0 30px var(--color-primary-glow);
231
- }
232
-
233
- /* Modal Title */
234
- .modal-title {
235
- font-family: var(--font-pixel);
236
- font-size: var(--font-2xl);
237
- color: var(--color-text);
238
- text-align: center;
239
- margin-bottom: var(--space-6);
240
- }
241
- ```
242
-
243
- ### 4.3 μΉ΄λ“œ (Card)
244
-
245
- ```css
246
- .card {
247
- background: var(--color-surface);
248
- border: 1px solid var(--color-border);
249
- border-radius: var(--radius-md);
250
- padding: var(--space-4);
251
- }
252
-
253
- .card:hover {
254
- border-color: var(--color-primary);
255
- }
256
- ```
257
-
258
- ### 4.4 점수판 (ScoreBoard)
259
-
260
- ```css
261
- .scoreboard {
262
- display: flex;
263
- justify-content: space-between;
264
- align-items: center;
265
- padding: var(--space-3) var(--space-4);
266
- background: var(--color-surface);
267
- border-bottom: 1px solid var(--color-border);
268
- }
269
-
270
- .score {
271
- font-family: var(--font-pixel);
272
- font-size: var(--font-lg);
273
- color: var(--color-text);
274
- }
275
-
276
- .high-score {
277
- font-family: var(--font-pixel);
278
- font-size: var(--font-base);
279
- color: var(--color-accent);
280
- }
281
- ```
282
-
283
- ---
284
-
285
- ## 5. 효과 (Effects)
286
-
287
- ### 5.1 λ„€μ˜¨ κΈ€λ‘œμš°
288
-
289
- ```css
290
- /* Snake Glow */
291
- .snake-glow {
292
- box-shadow: 0 0 10px var(--color-primary),
293
- 0 0 20px var(--color-primary-glow);
294
- }
295
-
296
- /* Food Glow */
297
- .food-glow {
298
- box-shadow: 0 0 10px var(--color-secondary),
299
- 0 0 20px var(--color-secondary-glow);
300
- }
301
-
302
- /* Text Glow */
303
- .text-glow {
304
- text-shadow: 0 0 10px currentColor;
305
- }
306
- ```
307
-
308
- ### 5.2 μ• λ‹ˆλ©”μ΄μ…˜
309
-
310
- ```css
311
- /* Score Pulse */
312
- @keyframes score-pulse {
313
- 0%, 100% { transform: scale(1); }
314
- 50% { transform: scale(1.2); }
315
- }
316
-
317
- .score-pulse {
318
- animation: score-pulse 0.2s ease;
319
- }
320
-
321
- /* Modal Enter */
322
- @keyframes modal-enter {
323
- from {
324
- opacity: 0;
325
- transform: scale(0.9);
326
- }
327
- to {
328
- opacity: 1;
329
- transform: scale(1);
330
- }
331
- }
332
-
333
- .modal-enter {
334
- animation: modal-enter 0.3s ease;
335
- }
336
-
337
- /* Blink (High Score) */
338
- @keyframes blink {
339
- 0%, 100% { opacity: 1; }
340
- 50% { opacity: 0.5; }
341
- }
342
-
343
- .blink {
344
- animation: blink 1s infinite;
345
- }
346
-
347
- /* Snake Pulse */
348
- @keyframes snake-pulse {
349
- 0%, 100% { box-shadow: 0 0 5px var(--color-primary); }
350
- 50% { box-shadow: 0 0 15px var(--color-primary-glow); }
351
- }
352
- ```
353
-
354
- ---
355
-
356
- ## 6. λ°˜μ‘ν˜• λ””μžμΈ
357
-
358
- ### 6.1 브레이크포인트
359
-
360
- | λ³€μˆ˜λͺ… | κ°’ | μ„€λͺ… |
361
- |--------|-----|------|
362
- | `--bp-sm` | 480px | λͺ¨λ°”일 |
363
- | `--bp-md` | 768px | νƒœλΈ”λ¦Ώ |
364
- | `--bp-lg` | 1024px | λ°μŠ€ν¬ν†± |
365
-
366
- ### 6.2 λ―Έλ””μ–΄ 쿼리
367
-
368
- ```css
369
- /* Mobile First */
370
- .container {
371
- padding: var(--space-4);
372
- }
373
-
374
- /* Tablet */
375
- @media (min-width: 480px) {
376
- .container {
377
- padding: var(--space-6);
378
- }
379
- }
380
-
381
- /* Desktop */
382
- @media (min-width: 768px) {
383
- .container {
384
- padding: var(--space-8);
385
- max-width: 600px;
386
- margin: 0 auto;
387
- }
388
- }
389
- ```
390
-
391
- ---
392
-
393
- ## 7. 기타 토큰
394
-
395
- ### 7.1 Border Radius
396
-
397
- | λ³€μˆ˜λͺ… | κ°’ |
398
- |--------|-----|
399
- | `--radius-sm` | 4px |
400
- | `--radius-md` | 8px |
401
- | `--radius-lg` | 12px |
402
- | `--radius-xl` | 16px |
403
- | `--radius-full` | 9999px |
404
-
405
- ### 7.2 Shadow
406
-
407
- | λ³€μˆ˜λͺ… | κ°’ |
408
- |--------|-----|
409
- | `--shadow-sm` | `0 1px 2px rgba(0,0,0,0.3)` |
410
- | `--shadow-md` | `0 4px 6px rgba(0,0,0,0.4)` |
411
- | `--shadow-lg` | `0 10px 15px rgba(0,0,0,0.5)` |
412
- | `--shadow-glow` | `0 0 20px var(--color-primary-glow)` |
413
-
414
- ### 7.3 Transition
415
-
416
- | λ³€μˆ˜λͺ… | κ°’ |
417
- |--------|-----|
418
- | `--transition-fast` | `0.1s ease` |
419
- | `--transition-normal` | `0.2s ease` |
420
- | `--transition-slow` | `0.3s ease` |
421
-
422
- ---
423
-
424
- ## 8. μ»΄ν¬λ„ŒνŠΈ λͺ©λ‘
425
-
426
- | μ»΄ν¬λ„ŒνŠΈ | μ„€λͺ… | μŠ€νƒ€μΌ 파일 |
427
- |---------|------|------------|
428
- | App | λ ˆμ΄μ•„μ›ƒ μ»¨ν…Œμ΄λ„ˆ | App.module.css |
429
- | StartScreen | μ‹œμž‘ ν™”λ©΄ | StartScreen.module.css |
430
- | GameEngine | κ²Œμž„ μ—”μ§„ 래퍼 | GameEngine.module.css |
431
- | CanvasLayer | Canvas λ Œλ”λ§ | CanvasLayer.module.css |
432
- | ScoreBoard | 점수판 | ScoreBoard.module.css |
433
- | GameOverModal | κ²Œμž„ μ˜€λ²„ λͺ¨λ‹¬ | GameOverModal.module.css |
434
- | MobileControls | λͺ¨λ°”일 컨트둀 | MobileControls.module.css |
435
-
436
- ---
437
-
438
- ## βœ… λ””μžμΈ μ‹œμŠ€ν…œ 체크리슀트
439
-
440
- - [x] 색상 νŒ”λ ˆνŠΈ μ •μ˜
441
- - [x] νƒ€μ΄ν¬κ·Έλž˜ν”Ό μ •μ˜
442
- - [x] μŠ€νŽ˜μ΄μ‹± μ‹œμŠ€ν…œ
443
- - [x] λ²„νŠΌ μŠ€νƒ€μΌ
444
- - [x] λͺ¨λ‹¬ μŠ€νƒ€μΌ
445
- - [x] λ„€μ˜¨ κΈ€λ‘œμš° 효과
446
- - [x] μ• λ‹ˆλ©”μ΄μ…˜ μ •μ˜
447
- - [x] λ°˜μ‘ν˜• 브레이크포인트
448
- - [x] CSS λ³€μˆ˜ μ •μ˜
449
- - [x] μ»΄ν¬λ„ŒνŠΈ λͺ©λ‘