@wooojin/forgen 0.2.1 โ†’ 0.3.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 (145) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/README.ko.md +25 -14
  3. package/README.md +61 -17
  4. package/agents/analyst.md +48 -4
  5. package/agents/architect.md +39 -4
  6. package/agents/code-reviewer.md +107 -77
  7. package/agents/critic.md +47 -4
  8. package/agents/debugger.md +46 -4
  9. package/agents/designer.md +40 -4
  10. package/agents/executor.md +112 -30
  11. package/agents/explore.md +45 -5
  12. package/agents/git-master.md +48 -4
  13. package/agents/planner.md +121 -18
  14. package/agents/solution-evolver.md +115 -0
  15. package/agents/test-engineer.md +58 -4
  16. package/agents/verifier.md +92 -77
  17. package/commands/architecture-decision.md +127 -258
  18. package/commands/calibrate.md +225 -0
  19. package/commands/code-review.md +163 -178
  20. package/commands/compound.md +127 -68
  21. package/commands/deep-interview.md +212 -110
  22. package/commands/docker.md +68 -178
  23. package/commands/forge-loop.md +215 -0
  24. package/commands/learn.md +231 -0
  25. package/commands/retro.md +215 -0
  26. package/commands/ship.md +277 -0
  27. package/dist/cli.js +25 -9
  28. package/dist/core/auto-compound-runner.js +14 -0
  29. package/dist/core/config-injector.d.ts +2 -1
  30. package/dist/core/config-injector.js +2 -1
  31. package/dist/core/dashboard.d.ts +17 -0
  32. package/dist/core/dashboard.js +158 -2
  33. package/dist/core/harness.d.ts +6 -1
  34. package/dist/core/harness.js +75 -19
  35. package/dist/core/paths.d.ts +31 -1
  36. package/dist/core/paths.js +43 -2
  37. package/dist/core/spawn.d.ts +3 -2
  38. package/dist/core/spawn.js +27 -8
  39. package/dist/core/types.d.ts +34 -0
  40. package/dist/engine/compound-lifecycle.d.ts +4 -3
  41. package/dist/engine/compound-lifecycle.js +91 -46
  42. package/dist/engine/learn-cli.d.ts +1 -0
  43. package/dist/engine/learn-cli.js +182 -0
  44. package/dist/engine/meta-learning/adaptive-thresholds.d.ts +20 -0
  45. package/dist/engine/meta-learning/adaptive-thresholds.js +126 -0
  46. package/dist/engine/meta-learning/extraction-tuner.d.ts +15 -0
  47. package/dist/engine/meta-learning/extraction-tuner.js +99 -0
  48. package/dist/engine/meta-learning/matcher-weight-tuner.d.ts +21 -0
  49. package/dist/engine/meta-learning/matcher-weight-tuner.js +151 -0
  50. package/dist/engine/meta-learning/runner.d.ts +14 -0
  51. package/dist/engine/meta-learning/runner.js +90 -0
  52. package/dist/engine/meta-learning/scope-promoter.d.ts +21 -0
  53. package/dist/engine/meta-learning/scope-promoter.js +84 -0
  54. package/dist/engine/meta-learning/session-quality-scorer.d.ts +61 -0
  55. package/dist/engine/meta-learning/session-quality-scorer.js +166 -0
  56. package/dist/engine/meta-learning/types.d.ts +114 -0
  57. package/dist/engine/meta-learning/types.js +43 -0
  58. package/dist/engine/solution-candidate.d.ts +30 -0
  59. package/dist/engine/solution-candidate.js +124 -0
  60. package/dist/engine/solution-fitness.d.ts +52 -0
  61. package/dist/engine/solution-fitness.js +95 -0
  62. package/dist/engine/solution-fixup.d.ts +30 -0
  63. package/dist/engine/solution-fixup.js +116 -0
  64. package/dist/engine/solution-format.d.ts +10 -2
  65. package/dist/engine/solution-format.js +287 -57
  66. package/dist/engine/solution-index.d.ts +1 -1
  67. package/dist/engine/solution-index.js +10 -0
  68. package/dist/engine/solution-matcher.d.ts +7 -1
  69. package/dist/engine/solution-matcher.js +137 -37
  70. package/dist/engine/solution-outcomes.d.ts +70 -0
  71. package/dist/engine/solution-outcomes.js +242 -0
  72. package/dist/engine/solution-quarantine.d.ts +36 -0
  73. package/dist/engine/solution-quarantine.js +172 -0
  74. package/dist/engine/solution-weakness.d.ts +45 -0
  75. package/dist/engine/solution-weakness.js +225 -0
  76. package/dist/engine/solution-writer.d.ts +5 -0
  77. package/dist/engine/solution-writer.js +18 -0
  78. package/dist/fgx.js +12 -8
  79. package/dist/hooks/context-guard.d.ts +5 -0
  80. package/dist/hooks/context-guard.js +118 -2
  81. package/dist/hooks/hooks-generator.d.ts +3 -0
  82. package/dist/hooks/hooks-generator.js +23 -6
  83. package/dist/hooks/keyword-detector.js +16 -100
  84. package/dist/hooks/post-tool-failure.js +7 -0
  85. package/dist/hooks/skill-injector.d.ts +4 -3
  86. package/dist/hooks/skill-injector.js +6 -4
  87. package/dist/hooks/solution-injector.js +20 -0
  88. package/dist/host/codex-adapter.d.ts +10 -0
  89. package/dist/host/codex-adapter.js +154 -0
  90. package/dist/mcp/solution-reader.d.ts +5 -5
  91. package/dist/mcp/solution-reader.js +34 -24
  92. package/dist/mcp/tools.js +8 -0
  93. package/dist/services/session.d.ts +19 -0
  94. package/dist/services/session.js +62 -0
  95. package/hooks/hooks.json +2 -2
  96. package/package.json +2 -1
  97. package/skills/architecture-decision/SKILL.md +113 -257
  98. package/skills/calibrate/SKILL.md +207 -0
  99. package/skills/code-review/SKILL.md +151 -178
  100. package/skills/compound/SKILL.md +126 -68
  101. package/skills/deep-interview/SKILL.md +210 -110
  102. package/skills/docker/SKILL.md +57 -179
  103. package/skills/forge-loop/SKILL.md +198 -0
  104. package/skills/learn/SKILL.md +216 -0
  105. package/skills/retro/SKILL.md +199 -0
  106. package/skills/ship/SKILL.md +259 -0
  107. package/agents/code-simplifier.md +0 -197
  108. package/agents/performance-reviewer.md +0 -172
  109. package/agents/qa-tester.md +0 -158
  110. package/agents/refactoring-expert.md +0 -168
  111. package/agents/scientist.md +0 -144
  112. package/agents/security-reviewer.md +0 -137
  113. package/agents/writer.md +0 -184
  114. package/commands/api-design.md +0 -268
  115. package/commands/ci-cd.md +0 -270
  116. package/commands/database.md +0 -263
  117. package/commands/debug-detective.md +0 -99
  118. package/commands/documentation.md +0 -276
  119. package/commands/ecomode.md +0 -51
  120. package/commands/frontend.md +0 -271
  121. package/commands/git-master.md +0 -90
  122. package/commands/incident-response.md +0 -292
  123. package/commands/migrate.md +0 -101
  124. package/commands/performance.md +0 -288
  125. package/commands/refactor.md +0 -105
  126. package/commands/security-review.md +0 -288
  127. package/commands/specify.md +0 -128
  128. package/commands/tdd.md +0 -183
  129. package/commands/testing-strategy.md +0 -265
  130. package/skills/api-design/SKILL.md +0 -262
  131. package/skills/ci-cd/SKILL.md +0 -264
  132. package/skills/database/SKILL.md +0 -257
  133. package/skills/debug-detective/SKILL.md +0 -95
  134. package/skills/documentation/SKILL.md +0 -270
  135. package/skills/ecomode/SKILL.md +0 -46
  136. package/skills/frontend/SKILL.md +0 -265
  137. package/skills/git-master/SKILL.md +0 -86
  138. package/skills/incident-response/SKILL.md +0 -286
  139. package/skills/migrate/SKILL.md +0 -96
  140. package/skills/performance/SKILL.md +0 -282
  141. package/skills/refactor/SKILL.md +0 -100
  142. package/skills/security-review/SKILL.md +0 -282
  143. package/skills/specify/SKILL.md +0 -122
  144. package/skills/tdd/SKILL.md +0 -178
  145. package/skills/testing-strategy/SKILL.md +0 -260
@@ -1,276 +0,0 @@
1
- ---
2
- name: documentation
3
- description: This skill should be used when the user asks to "documentation,๋ฌธ์„œํ™”,docs,๊ธฐ์ˆ  ๋ฌธ์„œ,readme,API docs". Technical documentation writing with audience analysis and structured content
4
- triggers:
5
- - "documentation"
6
- - "๋ฌธ์„œํ™”"
7
- - "docs"
8
- - "๊ธฐ์ˆ  ๋ฌธ์„œ"
9
- - "readme"
10
- - "API docs"
11
- ---
12
- <!-- forgen-managed -->
13
-
14
- <Purpose>
15
- ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
16
- ๋Œ€์ƒ ๋…์ž ๋ถ„์„, ์ •๋ณด ๊ตฌ์กฐ ์„ค๊ณ„, ์ดˆ์•ˆ ์ž‘์„ฑ, ๋ฆฌ๋ทฐ, ๋ฐฐํฌ๊นŒ์ง€
17
- ๊ธฐ์ˆ  ๋ฌธ์„œ์˜ ์ „์ฒด ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
18
- </Purpose>
19
-
20
- <Steps>
21
- 1. **๋Œ€์ƒ ๋…์ž ๋ถ„์„**: ๋ฌธ์„œ๋ฅผ ์ฝ์„ ์‚ฌ๋žŒ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค
22
- - ๋…์ž์˜ ๊ธฐ์ˆ  ์ˆ˜์ค€ (์ดˆ๊ธ‰/์ค‘๊ธ‰/๊ณ ๊ธ‰)
23
- - ๋…์ž์˜ ์—ญํ•  (๊ฐœ๋ฐœ์ž, DevOps, PM, ์ตœ์ข… ์‚ฌ์šฉ์ž)
24
- - ๋…์ž๊ฐ€ ๋‹ฌ์„ฑํ•˜๋ ค๋Š” ๋ชฉํ‘œ (์„ค์น˜, ํ†ตํ•ฉ, ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…)
25
- - ์‚ฌ์ „ ์ง€์‹ ๊ฐ€์ • (ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ํ”„๋ ˆ์ž„์›Œํฌ, ๋„๋ฉ”์ธ)
26
- - ๋ฌธ์„œ ์ ‘๊ทผ ๋งฅ๋ฝ (์ฒ˜์Œ ์‚ฌ์šฉ vs ์ฐธ์กฐ vs ๋ฌธ์ œ ํ•ด๊ฒฐ)
27
-
28
- 2. **์ •๋ณด ๊ตฌ์กฐ ์„ค๊ณ„**: ๋ฌธ์„œ์˜ ๋ผˆ๋Œ€๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค
29
- - ๋ฌธ์„œ ์œ ํ˜• ๊ฒฐ์ •:
30
- * Tutorial (ํ•™์Šต ์ง€ํ–ฅ) -- "์ด๋ ‡๊ฒŒ ํ•ด๋ณด์„ธ์š”"
31
- * How-to Guide (๋ชฉํ‘œ ์ง€ํ–ฅ) -- "์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค"
32
- * Reference (์ •๋ณด ์ง€ํ–ฅ) -- "์ด๊ฒƒ์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค"
33
- * Explanation (์ดํ•ด ์ง€ํ–ฅ) -- "์ด๊ฒƒ์ด ์™œ ์ด๋ ‡๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค"
34
- - ๋ชฉ์ฐจ(TOC) ์ดˆ์•ˆ ์ž‘์„ฑ
35
- - ์„น์…˜๋ณ„ ๊นŠ์ด์™€ ๋ฒ”์œ„ ๊ฒฐ์ •
36
- - ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ (์„ ํ˜• vs ๋น„์„ ํ˜•)
37
- - ์—ฐ๊ด€ ๋ฌธ์„œ ๋งํฌ ๋งต
38
-
39
- 3. **์ดˆ์•ˆ ์ž‘์„ฑ**: ๋‚ด์šฉ์„ ์ฑ„์›Œ๋„ฃ์Šต๋‹ˆ๋‹ค
40
- - ๋ช…ํ™•ํ•œ ์ œ๋ชฉ๊ณผ ๋ถ€์ œ (์Šค์บ” ๊ฐ€๋Šฅ)
41
- - ๊ฐ ์„น์…˜ ์ฒซ ๋ฌธ์žฅ์— ํ•ต์‹ฌ ๋‚ด์šฉ (์—ญํ”ผ๋ผ๋ฏธ๋“œ ๊ตฌ์กฐ)
42
- - ์ฝ”๋“œ ์˜ˆ์‹œ (๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ๊ฐ€๋Šฅ, ์‹คํ–‰ ๊ฐ€๋Šฅ)
43
- - ๋‹จ๊ณ„๋ณ„ ์ ˆ์ฐจ (๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ, ๊ฒ€์ฆ ๋‹จ๊ณ„ ํฌํ•จ)
44
- - ์‹œ๊ฐ์  ๋ณด์กฐ ์ž๋ฃŒ (๋‹ค์ด์–ด๊ทธ๋žจ, ์Šคํฌ๋ฆฐ์ƒท, ํ‘œ)
45
- - ์ฃผ์˜ ์‚ฌํ•ญ ํ‘œ์‹œ (Note, Warning, Caution, Tip)
46
- - ์šฉ์–ด ์ผ๊ด€์„ฑ ์œ ์ง€ (์šฉ์–ด์ง‘ ์ฐธ์กฐ)
47
- - ๋‹ค๊ตญ์–ด ๊ณ ๋ ค (์˜์–ด + ํ•œ๊ตญ์–ด ๋ณ‘ํ–‰ ์—ฌ๋ถ€)
48
-
49
- 4. **๋ฆฌ๋ทฐ ๋ฐ ๊ฒ€์ฆ**: ๋ฌธ์„œ ํ’ˆ์งˆ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
50
- - ๊ธฐ์ˆ ์  ์ •ํ™•์„ฑ -- ์ฝ”๋“œ ์˜ˆ์‹œ ์‹คํ–‰ ํ™•์ธ
51
- - ์™„์ „์„ฑ -- ๋ˆ„๋ฝ๋œ ๋‹จ๊ณ„๋‚˜ ์ •๋ณด ํ™•์ธ
52
- - ๋ช…ํ™•์„ฑ -- ๋ชจํ˜ธํ•œ ํ‘œํ˜„, ์ „๋ฌธ ์šฉ์–ด ๊ณผ๋‹ค ์‚ฌ์šฉ ์ ๊ฒ€
53
- - ์ผ๊ด€์„ฑ -- ์šฉ์–ด, ํฌ๋งท, ์Šคํƒ€์ผ ํ†ต์ผ
54
- - ์ ‘๊ทผ์„ฑ -- ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ํ˜ธํ™˜, ๋Œ€์ฒด ํ…์ŠคํŠธ
55
- - ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ์„ฑ -- ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ๊ฐ€ ์ ์ ˆํžˆ ํฌํ•จ
56
-
57
- 5. **๋ฐฐํฌ ๋ฐ ์œ ์ง€๋ณด์ˆ˜**: ๋ฌธ์„œ๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค
58
- - ๋ฐฐํฌ ์ฑ„๋„ ๊ฒฐ์ • (GitHub Pages, Docusaurus, Notion)
59
- - ๋ฒ„์ „ ๊ด€๋ฆฌ (๋ฌธ์„œ ๋ฒ„์ „ = ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „)
60
- - ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ง‘ ์ฒด๊ณ„ (์ด์Šˆ, ์ฝ”๋ฉ˜ํŠธ, ๋ถ„์„)
61
- - ์ •๊ธฐ ๋ฆฌ๋ทฐ ์ผ์ • ์„ค์ •
62
- - ํ๊ธฐ(deprecation) ์ ˆ์ฐจ
63
- </Steps>
64
-
65
- ## ์—์ด์ „ํŠธ ์œ„์ž„
66
-
67
- `writer` ์—์ด์ „ํŠธ(Haiku ๋ชจ๋ธ)์— ์œ„์ž„ํ•˜์—ฌ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค:
68
-
69
- ```
70
- Agent(
71
- subagent_type="writer",
72
- model="haiku",
73
- prompt="DOCUMENTATION TASK
74
-
75
- ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
76
-
77
- Subject: [๋ฌธ์„œํ™” ๋Œ€์ƒ]
78
- Audience: [๋Œ€์ƒ ๋…์ž]
79
- Type: [Tutorial / How-to / Reference / Explanation]
80
-
81
- Writing Checklist:
82
- 1. ๋Œ€์ƒ ๋…์ž ์ˆ˜์ค€์— ๋งž๋Š” ์–ด์กฐ ์‚ฌ์šฉ
83
- 2. ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์˜ˆ์‹œ ํฌํ•จ
84
- 3. ๋‹จ๊ณ„๋ณ„ ์ ˆ์ฐจ์— ๊ฒ€์ฆ ๋‹จ๊ณ„ ํฌํ•จ
85
- 4. ์‹œ๊ฐ์  ๋ณด์กฐ ์ž๋ฃŒ ํ™œ์šฉ (ํ‘œ, ๋‹ค์ด์–ด๊ทธ๋žจ)
86
- 5. ์šฉ์–ด ์ผ๊ด€์„ฑ ์œ ์ง€
87
-
88
- Output: ์™„์„ฑ๋œ ๊ธฐ์ˆ  ๋ฌธ์„œ:
89
- - ๋ชฉ์ฐจ
90
- - ์„น์…˜๋ณ„ ๋‚ด์šฉ
91
- - ์ฝ”๋“œ ์˜ˆ์‹œ
92
- - ์ฃผ์˜ ์‚ฌํ•ญ
93
- - ๊ด€๋ จ ๋ฌธ์„œ ๋งํฌ"
94
- )
95
- ```
96
-
97
- ## External Consultation (Optional)
98
-
99
- writer ์—์ด์ „ํŠธ๋Š” ๊ต์ฐจ ๊ฒ€์ฆ์„ ์œ„ํ•ด Claude Task ์—์ด์ „ํŠธ์— ์ž๋ฌธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
100
-
101
- ### Protocol
102
- 1. **์ž์ฒด ๋ฌธ์„œ ์ดˆ์•ˆ์„ ๋จผ์ € ์™„๋ฃŒ** -- ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์„ฑ
103
- 2. **๊ฒ€์ฆ์„ ์œ„ํ•œ ์ž๋ฌธ** -- Claude Task ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•ด ๊ธฐ์ˆ  ์ •ํ™•์„ฑ ๊ต์ฐจ ํ™•์ธ
104
- 3. **๋น„ํŒ์  ํ‰๊ฐ€** -- ์™ธ๋ถ€ ์ œ์•ˆ์„ ๋งน๋ชฉ์ ์œผ๋กœ ์ˆ˜์šฉํ•˜์ง€ ์•Š์Œ
105
- 4. **์šฐ์•„ํ•œ ํด๋ฐฑ** -- ์œ„์ž„์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ์ ˆ๋Œ€ ์ฐจ๋‹จํ•˜์ง€ ์•Š์Œ
106
-
107
- ### ์ž๋ฌธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
108
- - ๊ณต๊ฐœ API ๋ฌธ์„œ (์™ธ๋ถ€ ๊ฐœ๋ฐœ์ž ๋Œ€์ƒ)
109
- - ์•„ํ‚คํ…์ฒ˜ ์„ค๋ช… ๋ฌธ์„œ
110
- - ๋ณต์žกํ•œ ํ†ตํ•ฉ ๊ฐ€์ด๋“œ
111
- - ๋‹ค๊ตญ์–ด ๋ฌธ์„œ
112
-
113
- ### ์ž๋ฌธ์„ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ
114
- - ๋‚ด๋ถ€ README ์—…๋ฐ์ดํŠธ
115
- - ๊ฐ„๋‹จํ•œ ์„ค์น˜ ๊ฐ€์ด๋“œ
116
- - ์ธ๋ผ์ธ ์ฝ”๋“œ ๋ฌธ์„œ (JSDoc, TSDoc)
117
- - ๋ณ€๊ฒฝ ์ด๋ ฅ (CHANGELOG)
118
-
119
- ## ๋ฌธ์„œ ์œ ํ˜• ๊ฐ€์ด๋“œ
120
-
121
- | ์œ ํ˜• | ๋ชฉ์  | ๊ตฌ์กฐ | ์˜ˆ์‹œ |
122
- |------|------|------|------|
123
- | **Tutorial** | ํ•™์Šต | ๋‹จ๊ณ„๋ณ„ ์ง„ํ–‰ | "์ฒซ ๋ฒˆ์งธ ์•ฑ ๋งŒ๋“ค๊ธฐ" |
124
- | **How-to** | ๋ฌธ์ œ ํ•ด๊ฒฐ | ๋ชฉํ‘œ โ†’ ๋‹จ๊ณ„ โ†’ ๊ฒฐ๊ณผ | "์ธ์ฆ ์ถ”๊ฐ€ํ•˜๊ธฐ" |
125
- | **Reference** | ์ •๋ณด ์กฐํšŒ | ์•ŒํŒŒ๋ฒณ/์นดํ…Œ๊ณ ๋ฆฌ ์ •๋ ฌ | "API ๋ ˆํผ๋Ÿฐ์Šค" |
126
- | **Explanation** | ์ดํ•ด | ๋ฐฐ๊ฒฝ โ†’ ์›์ธ โ†’ ๊ฒฐ๊ณผ | "์ธ์ฆ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ" |
127
-
128
- ## ๋ฌธ์„œ ํ’ˆ์งˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ
129
-
130
- ### ๋‚ด์šฉ (5๊ฐœ)
131
- - [ ] ๊ธฐ์ˆ ์ ์œผ๋กœ ์ •ํ™•ํ•จ (์ฝ”๋“œ ์˜ˆ์‹œ ์‹คํ–‰ ํ™•์ธ)
132
- - [ ] ๋Œ€์ƒ ๋…์ž ์ˆ˜์ค€์— ์ ํ•ฉ
133
- - [ ] ๋ชจ๋“  ํ•„์ˆ˜ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋จ
134
- - [ ] ์‚ฌ์ „ ์กฐ๊ฑด(prerequisites)์ด ๋ช…์‹œ๋จ
135
- - [ ] ์ฝ”๋“œ ์˜ˆ์‹œ๊ฐ€ ๋ณต์‚ฌ-์‹คํ–‰ ๊ฐ€๋Šฅ
136
-
137
- ### ๊ตฌ์กฐ (4๊ฐœ)
138
- - [ ] ๋ชฉ์ฐจ๊ฐ€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ตฌ์„ฑ๋จ
139
- - [ ] ์ œ๋ชฉ์ด ๋‚ด์šฉ์„ ์ •ํ™•ํžˆ ์„ค๋ช…
140
- - [ ] ์Šค์บ”์ด ๊ฐ€๋Šฅํ•œ ํ˜•์‹ (์งง์€ ๋‹จ๋ฝ, ๋ชฉ๋ก, ํ‘œ)
141
- - [ ] ๊ด€๋ จ ๋ฌธ์„œ์— ๋Œ€ํ•œ ๋งํฌ ํฌํ•จ
142
-
143
- ### ์Šคํƒ€์ผ (4๊ฐœ)
144
- - [ ] ์ผ๊ด€๋œ ์šฉ์–ด ์‚ฌ์šฉ
145
- - [ ] ๋Šฅ๋™ํƒœ ์‚ฌ์šฉ (์ˆ˜๋™ํƒœ ์ตœ์†Œํ™”)
146
- - [ ] ๋ถˆํ•„์š”ํ•œ ์ „๋ฌธ ์šฉ์–ด ์—†์Œ (์žˆ์œผ๋ฉด ์„ค๋ช… ํฌํ•จ)
147
- - [ ] Note/Warning/Tip์ด ์ ์ ˆํžˆ ์‚ฌ์šฉ๋จ
148
-
149
- ### ์ ‘๊ทผ์„ฑ (3๊ฐœ)
150
- - [ ] ์ด๋ฏธ์ง€์— ๋Œ€์ฒด ํ…์ŠคํŠธ ์ œ๊ณต
151
- - [ ] ์ฝ”๋“œ ๋ธ”๋ก์— ์–ธ์–ด ํƒœ๊ทธ ๋ช…์‹œ
152
- - [ ] ์ƒ‰์ƒ์œผ๋กœ๋งŒ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์Œ
153
-
154
- ## ์ž‘์„ฑ ์›์น™
155
-
156
- | ์›์น™ | ๋‚˜์œ ์˜ˆ | ์ข‹์€ ์˜ˆ |
157
- |------|---------|---------|
158
- | **๊ตฌ์ฒด์ ** | "์„ค์ •์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค" | "`config.json`์˜ `port` ๊ฐ’์„ `3000`์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค" |
159
- | **๋Šฅ๋™ํƒœ** | "ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค" | "์ด ๋ช…๋ น์ด ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค" |
160
- | **๊ฒ€์ฆ ํฌํ•จ** | "์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค" | "์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. `Started on port 3000` ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด์ด๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค" |
161
- | **์ด์œ  ์„ค๋ช…** | "์บ์‹œ๋ฅผ ๋น„์›๋‹ˆ๋‹ค" | "์ด์ „ ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ๊ฐ„์„ญํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์บ์‹œ๋ฅผ ๋น„์›๋‹ˆ๋‹ค" |
162
-
163
- <Output>
164
- ```
165
- DOCUMENTATION PLAN / ๋ฌธ์„œํ™” ๊ณ„ํš
166
- ==================================
167
-
168
- Subject: [๋ฌธ์„œํ™” ๋Œ€์ƒ]
169
- Type: [Tutorial / How-to / Reference / Explanation]
170
- Audience: [๋Œ€์ƒ ๋…์ž] ([๊ธฐ์ˆ  ์ˆ˜์ค€])
171
-
172
- TABLE OF CONTENTS / ๋ชฉ์ฐจ
173
- --------------------------
174
- 1. ๊ฐœ์š”
175
- - ์ด ๋ฌธ์„œ์˜ ๋ชฉ์ 
176
- - ์‚ฌ์ „ ์กฐ๊ฑด
177
- 2. [ํ•ต์‹ฌ ์„น์…˜ 1]
178
- - [ํ•˜์œ„ ํ•ญ๋ชฉ]
179
- 3. [ํ•ต์‹ฌ ์„น์…˜ 2]
180
- 4. ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
181
- 5. ๋‹ค์Œ ๋‹จ๊ณ„
182
- 6. ๊ด€๋ จ ๋ฌธ์„œ
183
-
184
- CONTENT / ๋‚ด์šฉ
185
- ---------------
186
- ## 1. ๊ฐœ์š”
187
-
188
- [๊ฐ„๊ฒฐํ•œ ์„ค๋ช… -- ์ด ๋ฌธ์„œ๋ฅผ ์ฝ์œผ๋ฉด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€]
189
-
190
- ### ์‚ฌ์ „ ์กฐ๊ฑด
191
- - [ํ•„์š”ํ•œ ๋„๊ตฌ/์ง€์‹ 1]
192
- - [ํ•„์š”ํ•œ ๋„๊ตฌ/์ง€์‹ 2]
193
-
194
- ## 2. [ํ•ต์‹ฌ ์„น์…˜]
195
-
196
- ### ๋‹จ๊ณ„ 1: [๋™์ž‘]
197
-
198
- [์™œ ์ด ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•œ์ง€ ํ•œ ์ค„ ์„ค๋ช…]
199
-
200
- ```bash
201
- npm install @example/sdk
202
- ```
203
-
204
- > **Tip:** [์œ ์šฉํ•œ ์ถ”๊ฐ€ ์ •๋ณด]
205
-
206
- ### ๊ฒ€์ฆ
207
- [์„ฑ๊ณต ์‹œ ๋ณด์ด๋Š” ๊ฒฐ๊ณผ ์„ค๋ช…]
208
-
209
- ## ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
210
-
211
- | ๋ฌธ์ œ | ์›์ธ | ํ•ด๊ฒฐ |
212
- |------|------|------|
213
- | [์—๋Ÿฌ ๋ฉ”์‹œ์ง€] | [์›์ธ] | [ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•] |
214
-
215
- REVIEW STATUS / ๋ฆฌ๋ทฐ ์ƒํƒœ
216
- ----------------------------
217
- - [ ] ๊ธฐ์ˆ  ์ •ํ™•์„ฑ ๊ฒ€์ฆ
218
- - [ ] ์ฝ”๋“œ ์˜ˆ์‹œ ์‹คํ–‰ ํ™•์ธ
219
- - [ ] ์šฉ์–ด ์ผ๊ด€์„ฑ ํ™•์ธ
220
- - [ ] ์ ‘๊ทผ์„ฑ ๊ฒ€ํ† 
221
- ```
222
- </Output>
223
-
224
- <Policy>
225
- - ์ฝ”๋“œ ์˜ˆ์‹œ๋Š” ๋ฐ˜๋“œ์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ๋กœ ๋™์ž‘)
226
- - ๋ชจ๋“  ๋‹จ๊ณ„์— ๊ฒ€์ฆ ๋ฐฉ๋ฒ•์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค ("์ด๋ ‡๊ฒŒ ๋ณด์ด๋ฉด ์„ฑ๊ณต")
227
- - ๋…์ž๋ฅผ ๊ฐ€์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค -- ์‚ฌ์ „ ์กฐ๊ฑด์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค
228
- - ์šฉ์–ด๋Š” ํ”„๋กœ์ ํŠธ ์ „์ฒด์—์„œ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
229
- - ๋ฌธ์„œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•จ๊ป˜ ๋ฒ„์ „ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค
230
- - ์ตœ์†Œ 1๋ช…์˜ ๊ธฐ์ˆ  ๋ฆฌ๋ทฐ์–ด๋ฅผ ๊ฑฐ์นœ ํ›„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค
231
- </Policy>
232
-
233
- ## ๋‹ค๋ฅธ ์Šคํ‚ฌ๊ณผ์˜ ์—ฐ๋™
234
-
235
- **API ์„ค๊ณ„ ์—ฐ๋™:**
236
- ```
237
- /forgen:api-design OpenAPI ์Šคํ‚ค๋งˆ ๊ธฐ๋ฐ˜ ๋ฌธ์„œ
238
- ```
239
- API ์„ค๊ณ„ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์„œํ™”
240
-
241
- **์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • ์—ฐ๋™:**
242
- ```
243
- /forgen:architecture-decision ADR ๋ฌธ์„œํ™”
244
- ```
245
- ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • ๊ธฐ๋ก ๋ฌธ์„œํ™”
246
-
247
- **์ฝ”๋“œ ๋ฆฌ๋ทฐ ์—ฐ๋™:**
248
- ```
249
- /forgen:code-review ๋ฌธ์„œ ์ฝ”๋“œ ์˜ˆ์‹œ
250
- ```
251
- ๋ฌธ์„œ ๋‚ด ์ฝ”๋“œ ์˜ˆ์‹œ์˜ ์ •ํ™•์„ฑ ๊ฒ€์ฆ
252
-
253
- ## Best Practices
254
-
255
- - **๋…์ž ์ค‘์‹ฌ** -- ์ž์‹ ์ด ์•„๋‹Œ ๋…์ž์˜ ๊ด€์ ์—์„œ ์ž‘์„ฑ
256
- - **์‹คํ–‰ ๊ฐ€๋Šฅ** -- ๋ชจ๋“  ์ฝ”๋“œ ์˜ˆ์‹œ๋Š” ์‹ค์ œ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•จ
257
- - **์Šค์บ” ๊ฐ€๋Šฅ** -- ๊ธด ํ…์ŠคํŠธ๋ณด๋‹ค ๋ชฉ๋ก, ํ‘œ, ์ฝ”๋“œ ๋ธ”๋ก ํ™œ์šฉ
258
- - **์ตœ์‹  ์œ ์ง€** -- ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ๋ฌธ์„œ๋„ ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธ
259
- - **ํ”ผ๋“œ๋ฐฑ ์ˆ˜์šฉ** -- ๋…์ž ํ”ผ๋“œ๋ฐฑ์„ ์ ๊ทน์ ์œผ๋กœ ๋ฐ˜์˜
260
-
261
- <Arguments>
262
- ## ์‚ฌ์šฉ๋ฒ•
263
- `/forgen:documentation {๋ฌธ์„œํ™” ๋Œ€์ƒ}`
264
-
265
- ### ์˜ˆ์‹œ
266
- - `/forgen:documentation ํ”„๋กœ์ ํŠธ README ์ž‘์„ฑ`
267
- - `/forgen:documentation API ๋ ˆํผ๋Ÿฐ์Šค ๋ฌธ์„œ`
268
- - `/forgen:documentation ์„ค์น˜ ๊ฐ€์ด๋“œ (์ดˆ๋ณด์ž์šฉ)`
269
- - `/forgen:documentation ์•„ํ‚คํ…์ฒ˜ ์„ค๋ช… ๋ฌธ์„œ`
270
-
271
- ### ์ธ์ž
272
- - ๋ฌธ์„œํ™”ํ•  ๋Œ€์ƒ, ๋…์ž, ๋ฌธ์„œ ์œ ํ˜• ๋“ฑ์„ ์„ค๋ช…
273
- - ์ธ์ž ์—†์œผ๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฌธ์„œ๋ฅผ ์ œ์•ˆ
274
- </Arguments>
275
-
276
- $ARGUMENTS
@@ -1,51 +0,0 @@
1
- ---
2
- name: ecomode
3
- description: This skill should be used when the user asks to "eco,ecomode,์ ˆ์•ฝ,๋น„์šฉ์ ˆ์•ฝ". Token-saving eco mode with Haiku priority and minimal responses
4
- triggers:
5
- - "eco"
6
- - "ecomode"
7
- - "์ ˆ์•ฝ"
8
- - "๋น„์šฉ์ ˆ์•ฝ"
9
- ---
10
-
11
- <Purpose>
12
- Compound Harness Ecomode โ€” ํ† ํฐ ์ ˆ์•ฝ ๋ชจ๋“œ.
13
- ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Haiku ๋ชจ๋ธ์„ ์šฐ์„  ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ„๊ฒฐํ•œ ์‘๋‹ต์„ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.
14
- </Purpose>
15
-
16
- <Execution_Policy>
17
- 1. ๋ชจ๋“  ํƒ์ƒ‰์€ ์ตœ์†Œํ•œ์œผ๋กœ (Glob/Grep ์šฐ์„ , Agent ์ตœ์†Œํ™”)
18
- 2. ์‘๋‹ต์€ ๊ฐ„๊ฒฐํ•˜๊ฒŒ (๋ถˆํ•„์š”ํ•œ ์„ค๋ช… ์ƒ๋žต)
19
- 3. ์ฝ”๋“œ ๋ธ”๋ก ์œ„์ฃผ๋กœ ๋‹ต๋ณ€, ๋ถ€์—ฐ ์„ค๋ช… ์ตœ์†Œํ™”
20
- 4. ํ•œ ๋ฒˆ์— ์ •ํ™•ํžˆ ์ˆ˜์ • (๋ฐ˜๋ณต ์ˆ˜์ • ํšŒํ”ผ)
21
- 5. ์—์ด์ „ํŠธ ์Šคํฐ ์‹œ ์ „๋ถ€ Haiku ๋ชจ๋ธ ์‚ฌ์šฉ
22
- </Execution_Policy>
23
-
24
- <Model_Routing>
25
- - ๋ชจ๋“  ์ž‘์—…: Haiku (๊ฐ•์ œ)
26
- - ์—์ด์ „ํŠธ ์Šคํฐ: Haiku (๊ฐ•์ œ)
27
- - ๋ณต์žกํ•œ ์•„ํ‚คํ…์ฒ˜ ํŒ๋‹จ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ Sonnet ํ—ˆ์šฉ
28
- </Model_Routing>
29
-
30
- <Constraints>
31
- - Agent ๋„๊ตฌ ์‚ฌ์šฉ ์ตœ์†Œํ™” (์ง์ ‘ Glob/Grep/Read๋กœ ํ•ด๊ฒฐ)
32
- - ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ํƒ์ƒ‰ ๊ธˆ์ง€ (๋ชฉ์ ์ด ๋ช…ํ™•ํ•œ ํƒ์ƒ‰๋งŒ)
33
- - ์ฝ”๋“œ ์„ค๋ช…์€ ์š”์ฒญ ์‹œ์—๋งŒ ์ œ๊ณต
34
- - ๋ฐ˜๋ณต ์ˆ˜์ • ์‹œ ์ฆ‰์‹œ ์ค‘๋‹จํ•˜๊ณ  ์ „์ฒด ๊ตฌ์กฐ ํŒŒ์•… ํ›„ ๋‹จ์ผ ์ˆ˜์ •
35
- - ์—์ด์ „ํŠธ ์Šคํฐ ์‹œ model: "haiku" ํŒŒ๋ผ๋ฏธํ„ฐ ํ•„์ˆ˜
36
- </Constraints>
37
-
38
- <Arguments>
39
- ## ์‚ฌ์šฉ๋ฒ•
40
- `/forgen:ecomode {์ž‘์—… ๋‚ด์šฉ}`
41
-
42
- ### ์˜ˆ์‹œ
43
- - `/forgen:ecomode ๋ฒ„๊ทธ ์ˆ˜์ •: login API 500 ์—๋Ÿฌ`
44
- - `/forgen:ecomode ํƒ€์ž… ์ •์˜ ์ถ”๊ฐ€: UserProfile ์ธํ„ฐํŽ˜์ด์Šค`
45
- - `eco ์ด ํ•จ์ˆ˜ ๋ฆฌํŒฉํ† ๋งํ•ด์ค˜`
46
-
47
- ### ์ธ์ž
48
- - ๊ฐ„๋‹จํ•œ ์ž‘์—… ์„ค๋ช…์„ ์ „๋‹ฌํ•˜๋ฉด ์ตœ์†Œ ๋น„์šฉ์œผ๋กœ ์ฒ˜๋ฆฌ
49
- </Arguments>
50
-
51
- $ARGUMENTS
@@ -1,271 +0,0 @@
1
- ---
2
- name: frontend
3
- description: This skill should be used when the user asks to "frontend,ํ”„๋ก ํŠธ์—”๋“œ,component,์ ‘๊ทผ์„ฑ,accessibility,์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„". Frontend component design, accessibility audit, and responsive implementation
4
- triggers:
5
- - "frontend"
6
- - "ํ”„๋ก ํŠธ์—”๋“œ"
7
- - "component"
8
- - "์ ‘๊ทผ์„ฑ"
9
- - "accessibility"
10
- - "์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„"
11
- ---
12
- <!-- forgen-managed -->
13
-
14
- <Purpose>
15
- ํ”„๋ก ํŠธ์—”๋“œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
16
- ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ ์„ค๊ณ„, Props ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜, ์ ‘๊ทผ์„ฑ ๊ฐ์‚ฌ,
17
- ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ, ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ํฌํ•จํ•œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ „์ฒด๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
18
- </Purpose>
19
-
20
- <Steps>
21
- 1. **์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ ์„ค๊ณ„**: ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค
22
- - ํŽ˜์ด์ง€/๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„
23
- - Atomic Design ์›์น™ ์ ์šฉ (Atoms โ†’ Molecules โ†’ Organisms โ†’ Templates โ†’ Pages)
24
- - ์ปดํฌ๋„ŒํŠธ ์ฑ…์ž„ ๋ถ„๋ฆฌ (UI vs ๋กœ์ง)
25
- - ๊ณต์œ  ์ปดํฌ๋„ŒํŠธ vs ๋„๋ฉ”์ธ ์ปดํฌ๋„ŒํŠธ ๊ตฌ๋ถ„
26
- - ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ๋‹ค์ด์–ด๊ทธ๋žจ ์ž‘์„ฑ
27
- - ์ƒํƒœ ๊ด€๋ฆฌ ์œ„์น˜ ๊ฒฐ์ • (๋กœ์ปฌ vs ์ „์—ญ vs ์„œ๋ฒ„)
28
- - ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ฐฉํ–ฅ ์ •์˜ (๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„)
29
-
30
- 2. **Props ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„**: ์ปดํฌ๋„ŒํŠธ API๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค
31
- - TypeScript ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
32
- - ํ•„์ˆ˜/์„ ํƒ Props ๊ตฌ๋ถ„
33
- - ๊ธฐ๋ณธ๊ฐ’ ์„ค์ • (defaultProps ๋˜๋Š” default parameter)
34
- - ์ฝœ๋ฐฑ Props ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜ (onXxx, handleXxx)
35
- - children ํŒจํ„ด ํ™œ์šฉ (ํ•ฉ์„ฑ ํŒจํ„ด)
36
- - Render Props ๋˜๋Š” Compound Component ํŒจํ„ด ๊ณ ๋ ค
37
- - Props ๊ณผ๋„ ํ™•์‚ฐ(prop drilling) ๋ฐฉ์ง€ ์ „๋žต
38
- - Discriminated Union ํƒ€์ž…์œผ๋กœ ๋ณ€ํ˜•(variant) ๊ด€๋ฆฌ
39
-
40
- 3. **์ ‘๊ทผ์„ฑ ๊ฐ์‚ฌ**: WCAG 2.1 AA ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ์„ฑ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค
41
- - ์‹œ๋งจํ‹ฑ HTML ์‚ฌ์šฉ (button, nav, main, section, article)
42
- - ARIA ์†์„ฑ ์ ์ ˆ ์‚ฌ์šฉ (aria-label, aria-describedby, role)
43
- - ํ‚ค๋ณด๋“œ ๋‚ด๋น„๊ฒŒ์ด์…˜ (Tab, Enter, Escape, Arrow keys)
44
- - ํฌ์ปค์Šค ๊ด€๋ฆฌ (ํฌ์ปค์Šค ํŠธ๋žฉ, ํฌ์ปค์Šค ๋ณต์›)
45
- - ์ƒ‰์ƒ ๋Œ€๋น„ (์ตœ์†Œ 4.5:1 for text, 3:1 for large text)
46
- - ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ํ˜ธํ™˜์„ฑ (๋ผ์ด๋ธŒ ๋ฆฌ์ „, ์ƒํƒœ ์•Œ๋ฆผ)
47
- - ๋ชจ์…˜ ๊ฐ์†Œ ๋Œ€์‘ (prefers-reduced-motion)
48
- - ํ„ฐ์น˜ ํƒ€๊ฒŸ ํฌ๊ธฐ (์ตœ์†Œ 44x44px)
49
- - ๋Œ€์ฒด ํ…์ŠคํŠธ (์ด๋ฏธ์ง€ alt, ์•„์ด์ฝ˜ aria-label)
50
- - ํผ ์ ‘๊ทผ์„ฑ (label ์—ฐ๊ฒฐ, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์—ฐ๊ฒฐ)
51
-
52
- 4. **๋ฐ˜์‘ํ˜• ๊ตฌํ˜„**: ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค
53
- - ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ์ •์˜ (mobile: 320px, tablet: 768px, desktop: 1024px+)
54
- - Mobile-first ์ ‘๊ทผ๋ฒ• ์ ์šฉ
55
- - ์œ ๋™์  ๋ ˆ์ด์•„์›ƒ (Flexbox, Grid)
56
- - ๋ฐ˜์‘ํ˜• ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ (clamp, fluid type)
57
- - ์ด๋ฏธ์ง€ ๋ฐ˜์‘ํ˜• ์ฒ˜๋ฆฌ (srcset, picture, next/image)
58
- - ํ„ฐ์น˜/๋งˆ์šฐ์Šค ์ธํ„ฐ๋ž™์…˜ ์ฐจ์ด ๋Œ€์‘
59
- - ๊ฐ€๋กœ/์„ธ๋กœ ๋ชจ๋“œ ๋Œ€์‘
60
-
61
- 5. **์„ฑ๋Šฅ ์ตœ์ ํ™”**: ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค
62
- - React.memo๋กœ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง ๋ฐฉ์ง€
63
- - useMemo/useCallback ์ ์ ˆ ์‚ฌ์šฉ (๋‚จ์šฉ ๋ฐฉ์ง€)
64
- - ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ… (React.lazy + Suspense)
65
- - ๊ฐ€์ƒ ์Šคํฌ๋กค (๋Œ€๋Ÿ‰ ๋ฆฌ์ŠคํŠธ, react-window)
66
- - ์ด๋ฏธ์ง€ ์ง€์—ฐ ๋กœ๋”ฉ (loading="lazy", Intersection Observer)
67
- - Web Vitals ๋ชจ๋‹ˆํ„ฐ๋ง (LCP, FID, CLS)
68
- - ๋ฒˆ๋“ค ๋ถ„์„ (webpack-bundle-analyzer)
69
- </Steps>
70
-
71
- ## ์—์ด์ „ํŠธ ์œ„์ž„
72
-
73
- `designer` ์—์ด์ „ํŠธ(Sonnet ๋ชจ๋ธ)์— ์œ„์ž„ํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค:
74
-
75
- ```
76
- Agent(
77
- subagent_type="designer",
78
- model="sonnet",
79
- prompt="FRONTEND COMPONENT TASK
80
-
81
- ํ”„๋ก ํŠธ์—”๋“œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜์„ธ์š”.
82
-
83
- Feature: [๊ธฐ๋Šฅ/ํŽ˜์ด์ง€ ์„ค๋ช…]
84
- Framework: [React / Vue / Svelte / etc.]
85
- Styling: [Tailwind / CSS Modules / styled-components]
86
-
87
- Design Checklist:
88
- 1. ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ ์„ค๊ณ„
89
- 2. Props ์ธํ„ฐํŽ˜์ด์Šค (TypeScript)
90
- 3. ์ ‘๊ทผ์„ฑ ๊ฐ์‚ฌ (WCAG 2.1 AA)
91
- 4. ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ (Mobile-first)
92
- 5. ์„ฑ๋Šฅ ์ตœ์ ํ™” (๋ฆฌ๋ Œ๋”๋ง, ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…)
93
-
94
- Output: ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„ ๋ฌธ์„œ:
95
- - ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ
96
- - Props ์ธํ„ฐํŽ˜์ด์Šค
97
- - ์ ‘๊ทผ์„ฑ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๊ฒฐ๊ณผ
98
- - ๋ฐ˜์‘ํ˜• ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ
99
- - ์„ฑ๋Šฅ ์ตœ์ ํ™” ํฌ์ธํŠธ"
100
- )
101
- ```
102
-
103
- ## External Consultation (Optional)
104
-
105
- designer ์—์ด์ „ํŠธ๋Š” ๊ต์ฐจ ๊ฒ€์ฆ์„ ์œ„ํ•ด Claude Task ์—์ด์ „ํŠธ์— ์ž๋ฌธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
106
-
107
- ### Protocol
108
- 1. **์ž์ฒด ์„ค๊ณ„๋ฅผ ๋จผ์ € ์™„๋ฃŒ** -- ๋…๋ฆฝ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„
109
- 2. **๊ฒ€์ฆ์„ ์œ„ํ•œ ์ž๋ฌธ** -- Claude Task ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ์„ฑ/UX ๊ต์ฐจ ํ™•์ธ
110
- 3. **๋น„ํŒ์  ํ‰๊ฐ€** -- ์™ธ๋ถ€ ์ œ์•ˆ์„ ๋งน๋ชฉ์ ์œผ๋กœ ์ˆ˜์šฉํ•˜์ง€ ์•Š์Œ
111
- 4. **์šฐ์•„ํ•œ ํด๋ฐฑ** -- ์œ„์ž„์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ์ ˆ๋Œ€ ์ฐจ๋‹จํ•˜์ง€ ์•Š์Œ
112
-
113
- ### ์ž๋ฌธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
114
- - ๋ณต์žกํ•œ ์ธํ„ฐ๋ž™์…˜ ํŒจํ„ด (๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ, ๊ฐ€์ƒ ์Šคํฌ๋กค)
115
- - ์ ‘๊ทผ์„ฑ์ด ์ค‘์š”ํ•œ ๊ณต๊ฐœ ์›น์‚ฌ์ดํŠธ
116
- - ๋Œ€๊ทœ๋ชจ ์ƒํƒœ ๊ด€๋ฆฌ ์•„ํ‚คํ…์ฒ˜
117
- - ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
118
-
119
- ### ์ž๋ฌธ์„ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ
120
- - ๋‹จ์ˆœ ํผ ์ปดํฌ๋„ŒํŠธ
121
- - ์ž˜ ์•Œ๋ ค์ง„ UI ํŒจํ„ด
122
- - ๋‚ด๋ถ€ ์–ด๋“œ๋ฏผ ๋„๊ตฌ
123
- - ํ”„๋กœํ† ํƒ€์ž… ์ˆ˜์ค€์˜ UI
124
-
125
- ## ์ ‘๊ทผ์„ฑ ์ฒดํฌ๋ฆฌ์ŠคํŠธ (WCAG 2.1 AA)
126
-
127
- ### ์ธ์ง€ ๊ฐ€๋Šฅ (Perceivable) (5๊ฐœ)
128
- - [ ] ๋ชจ๋“  ์ด๋ฏธ์ง€์— ๋Œ€์ฒด ํ…์ŠคํŠธ (alt) ์ œ๊ณต
129
- - [ ] ์ƒ‰์ƒ ๋Œ€๋น„ 4.5:1 ์ด์ƒ (ํ…์ŠคํŠธ), 3:1 ์ด์ƒ (๋Œ€ํ˜• ํ…์ŠคํŠธ)
130
- - [ ] ์ƒ‰์ƒ๋งŒ์œผ๋กœ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์Œ (์•„์ด์ฝ˜/ํ…์ŠคํŠธ ๋ณ‘ํ–‰)
131
- - [ ] ํ…์ŠคํŠธ ํฌ๊ธฐ 200%๊นŒ์ง€ ํ™•๋Œ€ ๊ฐ€๋Šฅ (๋ ˆ์ด์•„์›ƒ ๊นจ์ง ์—†์ด)
132
- - [ ] ์ž๋™ ์žฌ์ƒ ๋ฏธ๋””์–ด์— ์ •์ง€ ๋ฒ„ํŠผ ์ œ๊ณต
133
-
134
- ### ์กฐ์ž‘ ๊ฐ€๋Šฅ (Operable) (5๊ฐœ)
135
- - [ ] ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํ‚ค๋ณด๋“œ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
136
- - [ ] ํฌ์ปค์Šค ์ˆœ์„œ๊ฐ€ ๋…ผ๋ฆฌ์ 
137
- - [ ] ํฌ์ปค์Šค ํ‘œ์‹œ๊ฐ€ ๋ช…ํ™• (outline ์ œ๊ฑฐ ๊ธˆ์ง€)
138
- - [ ] ํ„ฐ์น˜ ํƒ€๊ฒŸ ์ตœ์†Œ 44x44px
139
- - [ ] ์‹œ๊ฐ„ ์ œํ•œ์ด ์žˆ๋Š” ๊ธฐ๋Šฅ์— ์—ฐ์žฅ ์˜ต์…˜ ์ œ๊ณต
140
-
141
- ### ์ดํ•ด ๊ฐ€๋Šฅ (Understandable) (4๊ฐœ)
142
- - [ ] ํผ ํ•„๋“œ์— label์ด ์—ฐ๊ฒฐ๋จ
143
- - [ ] ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ํ•ด๋‹น ํ•„๋“œ ๊ทผ์ฒ˜์— ํ‘œ์‹œ๋จ
144
- - [ ] ๋งํฌ ํ…์ŠคํŠธ๊ฐ€ ๋ชฉ์ ์ง€๋ฅผ ์„ค๋ช… ("์—ฌ๊ธฐ๋ฅผ ํด๋ฆญ" ๊ธˆ์ง€)
145
- - [ ] ์–ธ์–ด ์†์„ฑ (lang)์ด ์„ค์ •๋จ
146
-
147
- ### ๊ฒฌ๊ณ ํ•จ (Robust) (4๊ฐœ)
148
- - [ ] ์‹œ๋งจํ‹ฑ HTML ์š”์†Œ ์‚ฌ์šฉ (div ๋‚จ์šฉ ๊ธˆ์ง€)
149
- - [ ] ARIA ์†์„ฑ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉ๋จ
150
- - [ ] ๋™์  ์ฝ˜ํ…์ธ ์— aria-live ์ ์šฉ
151
- - [ ] ์ปค์Šคํ…€ ์œ„์ ฏ์— ์ ์ ˆํ•œ role ์„ค์ •
152
-
153
- ## ์ปดํฌ๋„ŒํŠธ ๋ณต์žก๋„ ๊ฐ€์ด๋“œ
154
-
155
- | ๋ณต์žก๋„ | Props ์ˆ˜ | ์ƒํƒœ | ํŒจํ„ด |
156
- |--------|---------|------|------|
157
- | **๋‹จ์ˆœ** | 0~3 | Stateless | ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ |
158
- | **๋ณดํ†ต** | 4~8 | ๋กœ์ปฌ ์ƒํƒœ | useState/useReducer |
159
- | **๋ณต์žก** | 9+ | ์ „์—ญ + ๋กœ์ปฌ | Compound Component, Context |
160
-
161
- <Output>
162
- ```
163
- FRONTEND COMPONENT DESIGN / ํ”„๋ก ํŠธ์—”๋“œ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„
164
- =====================================================
165
-
166
- Feature: [๊ธฐ๋Šฅ๋ช…]
167
- Framework: [React 18 + TypeScript]
168
- Styling: [Tailwind CSS]
169
-
170
- COMPONENT TREE / ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ
171
- ---------------------------------
172
- <ProductPage>
173
- โ”œโ”€โ”€ <ProductHeader>
174
- โ”‚ โ”œโ”€โ”€ <Breadcrumb />
175
- โ”‚ โ””โ”€โ”€ <ProductTitle />
176
- โ”œโ”€โ”€ <ProductGallery>
177
- โ”‚ โ”œโ”€โ”€ <ImageCarousel />
178
- โ”‚ โ””โ”€โ”€ <ThumbnailStrip />
179
- โ”œโ”€โ”€ <ProductInfo>
180
- โ”‚ โ”œโ”€โ”€ <PriceDisplay />
181
- โ”‚ โ”œโ”€โ”€ <VariantSelector />
182
- โ”‚ โ””โ”€โ”€ <AddToCartButton />
183
- โ””โ”€โ”€ <ProductReviews>
184
- โ”œโ”€โ”€ <ReviewSummary />
185
- โ””โ”€โ”€ <ReviewList />
186
-
187
- PROPS INTERFACES / Props ์ธํ„ฐํŽ˜์ด์Šค
188
- --------------------------------------
189
- interface ProductInfoProps {
190
- product: Product;
191
- selectedVariant: Variant | null;
192
- onVariantSelect: (variant: Variant) => void;
193
- onAddToCart: (quantity: number) => void;
194
- isLoading?: boolean;
195
- }
196
-
197
- ACCESSIBILITY AUDIT / ์ ‘๊ทผ์„ฑ ๊ฐ์‚ฌ
198
- -----------------------------------
199
- Perceivable: [5/5 PASS]
200
- Operable: [4/5 - ํ„ฐ์น˜ ํƒ€๊ฒŸ ํฌ๊ธฐ ์ˆ˜์ • ํ•„์š”]
201
- Understandable: [4/4 PASS]
202
- Robust: [4/4 PASS]
203
-
204
- RESPONSIVE BREAKPOINTS / ๋ฐ˜์‘ํ˜• ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ
205
- -------------------------------------------------
206
- Mobile (< 768px): ๋‹จ์ผ ์ปฌ๋Ÿผ, ๊ฐค๋Ÿฌ๋ฆฌ ์Šค์™€์ดํ”„
207
- Tablet (768~1024px): 2์ปฌ๋Ÿผ (๊ฐค๋Ÿฌ๋ฆฌ + ์ •๋ณด)
208
- Desktop (> 1024px): 3์ปฌ๋Ÿผ (๊ฐค๋Ÿฌ๋ฆฌ + ์ •๋ณด + ๋ฆฌ๋ทฐ)
209
-
210
- PERFORMANCE / ์„ฑ๋Šฅ
211
- -------------------
212
- - ImageCarousel: React.lazy๋กœ ์ง€์—ฐ ๋กœ๋”ฉ
213
- - ReviewList: ๊ฐ€์ƒ ์Šคํฌ๋กค (react-window)
214
- - ์ด๋ฏธ์ง€: next/image with srcset
215
- - ๋ฒˆ๋“ค ๊ธฐ์—ฌ: ~25KB (gzip)
216
- ```
217
- </Output>
218
-
219
- <Policy>
220
- - ์ ‘๊ทผ์„ฑ์€ ์„ ํƒ์ด ์•„๋‹Œ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค -- WCAG 2.1 AA๋ฅผ ํ•ญ์ƒ ์ถฉ์กฑ
221
- - ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค
222
- - Props ์ธํ„ฐํŽ˜์ด์Šค๋Š” TypeScript๋กœ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค
223
- - Mobile-first๋กœ ์„ค๊ณ„ํ•˜๊ณ  ๋ฐ์Šคํฌํ†ฑ์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค
224
- - ์„ฑ๋Šฅ ์ตœ์ ํ™”๋Š” ์ธก์ • ํ›„ ํ•„์š”ํ•œ ๊ณณ์—๋งŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค (์‚ฌ์ „ ์ตœ์ ํ™” ๊ธˆ์ง€)
225
- - ๋””์ž์ธ ์‹œ์Šคํ…œ/ํ† ํฐ์ด ์žˆ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค
226
- </Policy>
227
-
228
- ## ๋‹ค๋ฅธ ์Šคํ‚ฌ๊ณผ์˜ ์—ฐ๋™
229
-
230
- **์„ฑ๋Šฅ ์—ฐ๋™:**
231
- ```
232
- /forgen:performance ํ”„๋ก ํŠธ์—”๋“œ ๋ฒˆ๋“ค ๋ถ„์„
233
- ```
234
- ๋ฒˆ๋“ค ํฌ๊ธฐ์™€ ๋ Œ๋”๋ง ์„ฑ๋Šฅ ์ตœ์ ํ™”
235
-
236
- **TDD ์—ฐ๋™:**
237
- ```
238
- /forgen:tdd ์ปดํฌ๋„ŒํŠธ ์œ ๋‹› ํ…Œ์ŠคํŠธ
239
- ```
240
- ์ปดํฌ๋„ŒํŠธ๋ณ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
241
-
242
- **์ฝ”๋“œ ๋ฆฌ๋ทฐ ์—ฐ๋™:**
243
- ```
244
- /forgen:code-review src/components/
245
- ```
246
- ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒ€์ฆ
247
-
248
- ## Best Practices
249
-
250
- - **ํ•ฉ์„ฑ ์šฐ์„ ** -- ์ƒ์†๋ณด๋‹ค ํ•ฉ์„ฑ(composition) ํŒจํ„ด ์‚ฌ์šฉ
251
- - **์ ‘๊ทผ์„ฑ ๋‚ด์žฅ** -- ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ํฌํ•จ
252
- - **ํƒ€์ž… ์•ˆ์ „** -- Props์— TypeScript ํƒ€์ž…์„ ๋ช…์‹œ
253
- - **์ธก์ • ํ›„ ์ตœ์ ํ™”** -- React Profiler๋กœ ํ™•์ธ ํ›„ ์ตœ์ ํ™”
254
- - **์ผ๊ด€๋œ ํŒจํ„ด** -- ํ”„๋กœ์ ํŠธ ์ „์ฒด์—์„œ ๋™์ผํ•œ ํŒจํ„ด ์œ ์ง€
255
-
256
- <Arguments>
257
- ## ์‚ฌ์šฉ๋ฒ•
258
- `/forgen:frontend {์„ค๊ณ„ ๋Œ€์ƒ}`
259
-
260
- ### ์˜ˆ์‹œ
261
- - `/forgen:frontend ์ƒํ’ˆ ์ƒ์„ธ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„`
262
- - `/forgen:frontend ๊ธฐ์กด ํผ ์ปดํฌ๋„ŒํŠธ ์ ‘๊ทผ์„ฑ ๊ฐœ์„ `
263
- - `/forgen:frontend ๋Œ€์‹œ๋ณด๋“œ ๋ ˆ์ด์•„์›ƒ ๋ฐ˜์‘ํ˜• ๊ตฌํ˜„`
264
- - `/forgen:frontend ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ธฐ๋ณธ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„`
265
-
266
- ### ์ธ์ž
267
- - ์„ค๊ณ„ํ•  ํŽ˜์ด์ง€/๊ธฐ๋Šฅ, ํ”„๋ ˆ์ž„์›Œํฌ, ์ ‘๊ทผ์„ฑ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ์„ ์„ค๋ช…
268
- - ์ธ์ž ์—†์œผ๋ฉด ํ”„๋กœ์ ํŠธ์˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๊ฐœ์„ ์  ์ œ์‹œ
269
- </Arguments>
270
-
271
- $ARGUMENTS
@@ -1,90 +0,0 @@
1
- ---
2
- name: git-master
3
- description: This skill should be used when the user asks to "git-master,๊นƒ๋งˆ์Šคํ„ฐ,atomic commit". Atomic commits, smart rebasing, and history management
4
- triggers:
5
- - "git-master"
6
- - "๊นƒ๋งˆ์Šคํ„ฐ"
7
- - "atomic commit"
8
- ---
9
-
10
- <Purpose>
11
- ์›์ž์  ์ปค๋ฐ‹ ์ „๋žต๊ณผ ์ฒด๊ณ„์ ์ธ Git ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
12
- Conventional Commits ์ปจ๋ฒค์…˜, ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋ฆฌ๋ฒ ์ด์Šค, ๋ธŒ๋žœ์น˜ ์ „๋žต์„ ํ†ตํ•ด
13
- ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•œ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
14
- </Purpose>
15
-
16
- <Steps>
17
- 1. **์›์ž์  ์ปค๋ฐ‹ ์ „๋žต**
18
- - ํ•˜๋‚˜์˜ ์ปค๋ฐ‹ = ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋ณ€๊ฒฝ ๋‹จ์œ„
19
- - ๋นŒ๋“œ ๊ฐ€๋Šฅํ•˜๊ณ  ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ์ƒํƒœ๋กœ ์œ ์ง€
20
- - `git add <specific-files>`๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์„ ํƒ์  ์Šคํ…Œ์ด์ง•
21
- > **Note:** `git add -p`(์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ํŒจ์น˜ ๋ชจ๋“œ)์™€ `git add -i`๋Š” Claude Code์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. `git add <specific-files>`๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
22
-
23
- 2. **Conventional Commits ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜**
24
- ```
25
- <type>(<scope>): <subject>
26
-
27
- <body>
28
-
29
- <footer>
30
- ```
31
- - **type**: feat, fix, docs, style, refactor, test, chore, perf
32
- - **scope**: ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ/์ปดํฌ๋„ŒํŠธ (์„ ํƒ)
33
- - **subject**: ํ˜„์žฌํ˜• ๋™์‚ฌ๋กœ ์‹œ์ž‘, 50์ž ์ด๋‚ด
34
- - **Breaking Change**: footer์— `BREAKING CHANGE:` ๋ช…์‹œ
35
-
36
- 3. **์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋ฆฌ๋ฒ ์ด์Šค**
37
- > **Note:** `git rebase -i`๋Š” Claude Code์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์ž…๋ ฅ ๋ถˆ๊ฐ€). ๋Œ€์‹  `git rebase` with explicit commit range ๋˜๋Š” `git commit --fixup` + `git rebase --autosquash`๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
38
- ```bash
39
- git rebase -i HEAD~N # N๊ฐœ ์ปค๋ฐ‹ ์žฌ์ •๋ฆฌ (Claude Code ์™ธ๋ถ€์—์„œ ์‹คํ–‰)
40
- ```
41
- - `pick`: ๊ทธ๋Œ€๋กœ ์œ ์ง€
42
- - `squash`/`fixup`: ์ด์ „ ์ปค๋ฐ‹๊ณผ ํ•ฉ์น˜๊ธฐ
43
- - `reword`: ๋ฉ”์‹œ์ง€๋งŒ ์ˆ˜์ •
44
- - `edit`: ์ปค๋ฐ‹ ๋‚ด์šฉ ์ˆ˜์ •
45
- - `drop`: ์ปค๋ฐ‹ ์‚ญ์ œ
46
- - โš  ๊ณต์œ  ๋ธŒ๋žœ์น˜์—์„œ ๋ฆฌ๋ฒ ์ด์Šค ๊ธˆ์ง€
47
-
48
- 4. **๋ธŒ๋žœ์น˜ ์ „๋žต**
49
- - `main/master`: ํ•ญ์ƒ ๋ฐฐํฌ ๊ฐ€๋Šฅ ์ƒํƒœ
50
- - `develop`: ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜ (Git Flow)
51
- - `feature/<ticket>-<short-desc>`: ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
52
- - `fix/<ticket>-<short-desc>`: ๋ฒ„๊ทธ ์ˆ˜์ •
53
- - `hotfix/<ticket>`: ๊ธด๊ธ‰ ์ˆ˜์ •
54
- - ๋ธŒ๋žœ์น˜๋ช…์— ํ‹ฐ์ผ“ ๋ฒˆํ˜ธ ํฌํ•จ ๊ถŒ์žฅ
55
-
56
- 5. **Squash & Fixup ์›Œํฌํ”Œ๋กœ์šฐ**
57
- ```bash
58
- git commit --fixup <sha> # ํŠน์ • ์ปค๋ฐ‹์— fixup ์ƒ์„ฑ
59
- git rebase -i --autosquash main # fixup ์ž๋™ ์ •๋ ฌ
60
- ```
61
-
62
- 6. **Conflict ํ•ด๊ฒฐ ์ „๋žต**
63
- - `git mergetool` ๋˜๋Š” IDE ํ†ตํ•ฉ ๋„๊ตฌ ์‚ฌ์šฉ
64
- - ๋ณต์žกํ•œ ์ถฉ๋Œ: `git checkout --ours/--theirs <file>` ์„ ํƒ
65
- - ์ถฉ๋Œ ํ•ด๊ฒฐ ํ›„ ๋ฐ˜๋“œ์‹œ ํ…Œ์ŠคํŠธ ์‹คํ–‰
66
- - `git log --merge`: ์ถฉ๋Œ์— ๊ธฐ์—ฌํ•œ ์ปค๋ฐ‹ ํ™•์ธ
67
- </Steps>
68
-
69
- <Policy>
70
- - ๊ณต์œ  ๋ธŒ๋žœ์น˜(main, develop)์—์„œ force push ๊ธˆ์ง€
71
- - ์ปค๋ฐ‹ ์ „ `git diff --staged`๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ตœ์ข… ํ™•์ธ
72
- - WIP ์ปค๋ฐ‹์€ push ์ „ squash ์ฒ˜๋ฆฌ
73
- - ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— '์ˆ˜์ •', 'fix', 'update'๋งŒ ์“ฐ์ง€ ์•Š๊ณ  ๊ตฌ์ฒด์  ๋งฅ๋ฝ ํฌํ•จ
74
- </Policy>
75
-
76
- <Arguments>
77
- ## ์‚ฌ์šฉ๋ฒ•
78
- `/forgen:git-master {์ž‘์—… ๋‚ด์šฉ}`
79
-
80
- ### ์˜ˆ์‹œ
81
- - `/forgen:git-master 3๊ฐœ์˜ WIP ์ปค๋ฐ‹์„ ์›์ž์  ์ปค๋ฐ‹์œผ๋กœ ์žฌ์ •๋ฆฌ`
82
- - `/forgen:git-master feature ๋ธŒ๋žœ์น˜๋ฅผ main์— ๋ฆฌ๋ฒ ์ด์Šคํ•˜๋ฉฐ ์ถฉ๋Œ ํ•ด๊ฒฐ`
83
- - `/forgen:git-master ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ํด๋ฆฐ์—… ํ›„ PR ์ค€๋น„`
84
-
85
- ### ์ธ์ž
86
- - ํ˜„์žฌ Git ์ƒํƒœ ๋˜๋Š” ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์„ค๋ช…
87
- - ๋ธŒ๋žœ์น˜๋ช…, ์ปค๋ฐ‹ ๋ฒ”์œ„, ๋ชฉํ‘œ ๋ธŒ๋žœ์น˜ ๋“ฑ ๊ตฌ์ฒด์  ์ •๋ณด ํฌํ•จ ๊ถŒ์žฅ
88
- </Arguments>
89
-
90
- $ARGUMENTS