@wooojin/forgen 0.1.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.
Files changed (268) hide show
  1. package/.claude-plugin/plugin.json +20 -0
  2. package/CHANGELOG.md +353 -0
  3. package/CONTRIBUTING.md +98 -0
  4. package/LICENSE +21 -0
  5. package/README.ja.md +469 -0
  6. package/README.ko.md +469 -0
  7. package/README.md +483 -0
  8. package/README.zh.md +469 -0
  9. package/agents/analyst.md +98 -0
  10. package/agents/architect.md +62 -0
  11. package/agents/code-reviewer.md +120 -0
  12. package/agents/code-simplifier.md +197 -0
  13. package/agents/critic.md +70 -0
  14. package/agents/debugger.md +117 -0
  15. package/agents/designer.md +131 -0
  16. package/agents/executor.md +54 -0
  17. package/agents/explore.md +145 -0
  18. package/agents/git-master.md +212 -0
  19. package/agents/performance-reviewer.md +172 -0
  20. package/agents/planner.md +29 -0
  21. package/agents/qa-tester.md +158 -0
  22. package/agents/refactoring-expert.md +168 -0
  23. package/agents/scientist.md +144 -0
  24. package/agents/security-reviewer.md +137 -0
  25. package/agents/test-engineer.md +153 -0
  26. package/agents/verifier.md +133 -0
  27. package/agents/writer.md +184 -0
  28. package/commands/api-design.md +268 -0
  29. package/commands/architecture-decision.md +314 -0
  30. package/commands/ci-cd.md +270 -0
  31. package/commands/code-review.md +233 -0
  32. package/commands/compound.md +117 -0
  33. package/commands/database.md +263 -0
  34. package/commands/debug-detective.md +99 -0
  35. package/commands/docker.md +274 -0
  36. package/commands/documentation.md +276 -0
  37. package/commands/ecomode.md +51 -0
  38. package/commands/frontend.md +271 -0
  39. package/commands/git-master.md +90 -0
  40. package/commands/incident-response.md +292 -0
  41. package/commands/migrate.md +101 -0
  42. package/commands/performance.md +288 -0
  43. package/commands/refactor.md +105 -0
  44. package/commands/security-review.md +288 -0
  45. package/commands/tdd.md +183 -0
  46. package/commands/testing-strategy.md +265 -0
  47. package/dist/cli.d.ts +2 -0
  48. package/dist/cli.js +295 -0
  49. package/dist/core/auto-compound-runner.d.ts +12 -0
  50. package/dist/core/auto-compound-runner.js +460 -0
  51. package/dist/core/config-hooks.d.ts +10 -0
  52. package/dist/core/config-hooks.js +112 -0
  53. package/dist/core/config-injector.d.ts +50 -0
  54. package/dist/core/config-injector.js +455 -0
  55. package/dist/core/doctor.d.ts +1 -0
  56. package/dist/core/doctor.js +163 -0
  57. package/dist/core/errors.d.ts +81 -0
  58. package/dist/core/errors.js +133 -0
  59. package/dist/core/global-config.d.ts +43 -0
  60. package/dist/core/global-config.js +25 -0
  61. package/dist/core/harness.d.ts +24 -0
  62. package/dist/core/harness.js +621 -0
  63. package/dist/core/init.d.ts +7 -0
  64. package/dist/core/init.js +37 -0
  65. package/dist/core/inspect-cli.d.ts +7 -0
  66. package/dist/core/inspect-cli.js +47 -0
  67. package/dist/core/legacy-detector.d.ts +33 -0
  68. package/dist/core/legacy-detector.js +66 -0
  69. package/dist/core/logger.d.ts +34 -0
  70. package/dist/core/logger.js +121 -0
  71. package/dist/core/mcp-config.d.ts +44 -0
  72. package/dist/core/mcp-config.js +177 -0
  73. package/dist/core/notepad.d.ts +31 -0
  74. package/dist/core/notepad.js +88 -0
  75. package/dist/core/paths.d.ts +85 -0
  76. package/dist/core/paths.js +101 -0
  77. package/dist/core/plugin-detector.d.ts +44 -0
  78. package/dist/core/plugin-detector.js +226 -0
  79. package/dist/core/runtime-detector.d.ts +8 -0
  80. package/dist/core/runtime-detector.js +49 -0
  81. package/dist/core/scope-resolver.d.ts +8 -0
  82. package/dist/core/scope-resolver.js +45 -0
  83. package/dist/core/session-logger.d.ts +6 -0
  84. package/dist/core/session-logger.js +111 -0
  85. package/dist/core/session-store.d.ts +28 -0
  86. package/dist/core/session-store.js +218 -0
  87. package/dist/core/settings-lock.d.ts +18 -0
  88. package/dist/core/settings-lock.js +125 -0
  89. package/dist/core/spawn.d.ts +3 -0
  90. package/dist/core/spawn.js +135 -0
  91. package/dist/core/types.d.ts +108 -0
  92. package/dist/core/types.js +1 -0
  93. package/dist/core/uninstall.d.ts +4 -0
  94. package/dist/core/uninstall.js +307 -0
  95. package/dist/core/v1-bootstrap.d.ts +26 -0
  96. package/dist/core/v1-bootstrap.js +155 -0
  97. package/dist/engine/compound-cli.d.ts +24 -0
  98. package/dist/engine/compound-cli.js +250 -0
  99. package/dist/engine/compound-extractor.d.ts +68 -0
  100. package/dist/engine/compound-extractor.js +860 -0
  101. package/dist/engine/compound-lifecycle.d.ts +32 -0
  102. package/dist/engine/compound-lifecycle.js +305 -0
  103. package/dist/engine/compound-loop.d.ts +32 -0
  104. package/dist/engine/compound-loop.js +511 -0
  105. package/dist/engine/match-eval-log.d.ts +139 -0
  106. package/dist/engine/match-eval-log.js +270 -0
  107. package/dist/engine/phrase-blocklist.d.ts +119 -0
  108. package/dist/engine/phrase-blocklist.js +208 -0
  109. package/dist/engine/skill-promoter.d.ts +20 -0
  110. package/dist/engine/skill-promoter.js +115 -0
  111. package/dist/engine/solution-format.d.ts +160 -0
  112. package/dist/engine/solution-format.js +432 -0
  113. package/dist/engine/solution-index.d.ts +13 -0
  114. package/dist/engine/solution-index.js +252 -0
  115. package/dist/engine/solution-matcher.d.ts +364 -0
  116. package/dist/engine/solution-matcher.js +656 -0
  117. package/dist/engine/solution-writer.d.ts +76 -0
  118. package/dist/engine/solution-writer.js +157 -0
  119. package/dist/engine/term-matcher.d.ts +81 -0
  120. package/dist/engine/term-matcher.js +268 -0
  121. package/dist/engine/term-normalizer.d.ts +116 -0
  122. package/dist/engine/term-normalizer.js +171 -0
  123. package/dist/fgx.d.ts +6 -0
  124. package/dist/fgx.js +42 -0
  125. package/dist/forge/cli.d.ts +11 -0
  126. package/dist/forge/cli.js +100 -0
  127. package/dist/forge/evidence-processor.d.ts +21 -0
  128. package/dist/forge/evidence-processor.js +87 -0
  129. package/dist/forge/mismatch-detector.d.ts +44 -0
  130. package/dist/forge/mismatch-detector.js +83 -0
  131. package/dist/forge/onboarding-cli.d.ts +6 -0
  132. package/dist/forge/onboarding-cli.js +89 -0
  133. package/dist/forge/onboarding.d.ts +25 -0
  134. package/dist/forge/onboarding.js +122 -0
  135. package/dist/hooks/compound-reflection.d.ts +45 -0
  136. package/dist/hooks/compound-reflection.js +82 -0
  137. package/dist/hooks/context-guard.d.ts +24 -0
  138. package/dist/hooks/context-guard.js +156 -0
  139. package/dist/hooks/dangerous-patterns.json +18 -0
  140. package/dist/hooks/db-guard.d.ts +17 -0
  141. package/dist/hooks/db-guard.js +105 -0
  142. package/dist/hooks/hook-config.d.ts +29 -0
  143. package/dist/hooks/hook-config.js +92 -0
  144. package/dist/hooks/hook-registry.d.ts +43 -0
  145. package/dist/hooks/hook-registry.js +31 -0
  146. package/dist/hooks/hooks-generator.d.ts +49 -0
  147. package/dist/hooks/hooks-generator.js +99 -0
  148. package/dist/hooks/intent-classifier.d.ts +12 -0
  149. package/dist/hooks/intent-classifier.js +62 -0
  150. package/dist/hooks/keyword-detector.d.ts +25 -0
  151. package/dist/hooks/keyword-detector.js +389 -0
  152. package/dist/hooks/notepad-injector.d.ts +18 -0
  153. package/dist/hooks/notepad-injector.js +51 -0
  154. package/dist/hooks/permission-handler.d.ts +14 -0
  155. package/dist/hooks/permission-handler.js +114 -0
  156. package/dist/hooks/post-tool-failure.d.ts +11 -0
  157. package/dist/hooks/post-tool-failure.js +118 -0
  158. package/dist/hooks/post-tool-handlers.d.ts +17 -0
  159. package/dist/hooks/post-tool-handlers.js +115 -0
  160. package/dist/hooks/post-tool-use.d.ts +29 -0
  161. package/dist/hooks/post-tool-use.js +151 -0
  162. package/dist/hooks/pre-compact.d.ts +10 -0
  163. package/dist/hooks/pre-compact.js +165 -0
  164. package/dist/hooks/pre-tool-use.d.ts +31 -0
  165. package/dist/hooks/pre-tool-use.js +325 -0
  166. package/dist/hooks/prompt-injection-filter.d.ts +56 -0
  167. package/dist/hooks/prompt-injection-filter.js +287 -0
  168. package/dist/hooks/rate-limiter.d.ts +21 -0
  169. package/dist/hooks/rate-limiter.js +86 -0
  170. package/dist/hooks/secret-filter.d.ts +14 -0
  171. package/dist/hooks/secret-filter.js +65 -0
  172. package/dist/hooks/session-recovery.d.ts +27 -0
  173. package/dist/hooks/session-recovery.js +406 -0
  174. package/dist/hooks/shared/atomic-write.d.ts +41 -0
  175. package/dist/hooks/shared/atomic-write.js +148 -0
  176. package/dist/hooks/shared/context-budget.d.ts +37 -0
  177. package/dist/hooks/shared/context-budget.js +45 -0
  178. package/dist/hooks/shared/file-lock.d.ts +56 -0
  179. package/dist/hooks/shared/file-lock.js +253 -0
  180. package/dist/hooks/shared/hook-response.d.ts +33 -0
  181. package/dist/hooks/shared/hook-response.js +62 -0
  182. package/dist/hooks/shared/injection-caps.d.ts +39 -0
  183. package/dist/hooks/shared/injection-caps.js +52 -0
  184. package/dist/hooks/shared/plugin-signal.d.ts +23 -0
  185. package/dist/hooks/shared/plugin-signal.js +104 -0
  186. package/dist/hooks/shared/read-stdin.d.ts +8 -0
  187. package/dist/hooks/shared/read-stdin.js +63 -0
  188. package/dist/hooks/shared/sanitize-id.d.ts +7 -0
  189. package/dist/hooks/shared/sanitize-id.js +9 -0
  190. package/dist/hooks/shared/sanitize.d.ts +7 -0
  191. package/dist/hooks/shared/sanitize.js +22 -0
  192. package/dist/hooks/skill-injector.d.ts +38 -0
  193. package/dist/hooks/skill-injector.js +285 -0
  194. package/dist/hooks/slop-detector.d.ts +18 -0
  195. package/dist/hooks/slop-detector.js +93 -0
  196. package/dist/hooks/solution-injector.d.ts +58 -0
  197. package/dist/hooks/solution-injector.js +436 -0
  198. package/dist/hooks/subagent-tracker.d.ts +10 -0
  199. package/dist/hooks/subagent-tracker.js +90 -0
  200. package/dist/i18n/index.d.ts +43 -0
  201. package/dist/i18n/index.js +224 -0
  202. package/dist/lib.d.ts +14 -0
  203. package/dist/lib.js +14 -0
  204. package/dist/mcp/server.d.ts +8 -0
  205. package/dist/mcp/server.js +40 -0
  206. package/dist/mcp/solution-reader.d.ts +90 -0
  207. package/dist/mcp/solution-reader.js +273 -0
  208. package/dist/mcp/tools.d.ts +16 -0
  209. package/dist/mcp/tools.js +302 -0
  210. package/dist/preset/facet-catalog.d.ts +17 -0
  211. package/dist/preset/facet-catalog.js +46 -0
  212. package/dist/preset/preset-manager.d.ts +31 -0
  213. package/dist/preset/preset-manager.js +111 -0
  214. package/dist/renderer/inspect-renderer.d.ts +11 -0
  215. package/dist/renderer/inspect-renderer.js +123 -0
  216. package/dist/renderer/rule-renderer.d.ts +18 -0
  217. package/dist/renderer/rule-renderer.js +159 -0
  218. package/dist/store/evidence-store.d.ts +23 -0
  219. package/dist/store/evidence-store.js +58 -0
  220. package/dist/store/profile-store.d.ts +12 -0
  221. package/dist/store/profile-store.js +53 -0
  222. package/dist/store/recommendation-store.d.ts +22 -0
  223. package/dist/store/recommendation-store.js +64 -0
  224. package/dist/store/rule-store.d.ts +22 -0
  225. package/dist/store/rule-store.js +62 -0
  226. package/dist/store/session-state-store.d.ts +11 -0
  227. package/dist/store/session-state-store.js +44 -0
  228. package/dist/store/types.d.ts +159 -0
  229. package/dist/store/types.js +7 -0
  230. package/hooks/hook-registry.json +21 -0
  231. package/hooks/hooks.json +185 -0
  232. package/package.json +89 -0
  233. package/plugin.json +20 -0
  234. package/scripts/postinstall.js +826 -0
  235. package/skills/api-design/SKILL.md +262 -0
  236. package/skills/architecture-decision/SKILL.md +309 -0
  237. package/skills/ci-cd/SKILL.md +264 -0
  238. package/skills/code-review/SKILL.md +228 -0
  239. package/skills/compound/SKILL.md +101 -0
  240. package/skills/database/SKILL.md +257 -0
  241. package/skills/debug-detective/SKILL.md +95 -0
  242. package/skills/docker/SKILL.md +268 -0
  243. package/skills/documentation/SKILL.md +270 -0
  244. package/skills/ecomode/SKILL.md +46 -0
  245. package/skills/frontend/SKILL.md +265 -0
  246. package/skills/git-master/SKILL.md +86 -0
  247. package/skills/incident-response/SKILL.md +286 -0
  248. package/skills/migrate/SKILL.md +96 -0
  249. package/skills/performance/SKILL.md +282 -0
  250. package/skills/refactor/SKILL.md +100 -0
  251. package/skills/security-review/SKILL.md +282 -0
  252. package/skills/tdd/SKILL.md +178 -0
  253. package/skills/testing-strategy/SKILL.md +260 -0
  254. package/starter-pack/solutions/starter-api-error-responses.md +37 -0
  255. package/starter-pack/solutions/starter-async-patterns.md +40 -0
  256. package/starter-pack/solutions/starter-caching-strategy.md +40 -0
  257. package/starter-pack/solutions/starter-code-review-checklist.md +39 -0
  258. package/starter-pack/solutions/starter-debugging-systematic.md +40 -0
  259. package/starter-pack/solutions/starter-dependency-injection.md +40 -0
  260. package/starter-pack/solutions/starter-error-handling-patterns.md +38 -0
  261. package/starter-pack/solutions/starter-git-atomic-commits.md +36 -0
  262. package/starter-pack/solutions/starter-input-validation.md +40 -0
  263. package/starter-pack/solutions/starter-n-plus-one-queries.md +37 -0
  264. package/starter-pack/solutions/starter-refactor-safely.md +38 -0
  265. package/starter-pack/solutions/starter-secret-management.md +37 -0
  266. package/starter-pack/solutions/starter-separation-of-concerns.md +36 -0
  267. package/starter-pack/solutions/starter-tdd-red-green-refactor.md +40 -0
  268. package/starter-pack/solutions/starter-typescript-strict-types.md +39 -0
@@ -0,0 +1,233 @@
1
+ ---
2
+ name: code-review
3
+ description: This skill should be used when the user asks to "code review,코드 리뷰,리뷰해줘,review this". Systematic code review with severity-rated feedback
4
+ triggers:
5
+ - "code review"
6
+ - "코드 리뷰"
7
+ - "리뷰해줘"
8
+ - "review this"
9
+ ---
10
+
11
+ <Purpose>
12
+ 체계적인 코드 리뷰를 수행하여 품질, 보안, 유지보수성을 검증합니다.
13
+ 심각도별로 분류된 피드백을 제공합니다.
14
+ </Purpose>
15
+
16
+ <Steps>
17
+ 1. **스코프 파악**: 변경된 파일과 영향 범위를 식별합니다
18
+ - git diff 또는 지정된 파일 확인
19
+ - 변경의 목적과 컨텍스트 이해
20
+
21
+ 2. **정확성 검증**: 로직이 의도대로 동작하는지 확인합니다
22
+ - 엣지 케이스 처리 여부
23
+ - 에러 핸들링 적절성
24
+ - 동시성/경쟁 조건
25
+
26
+ 3. **보안 검토**: OWASP Top 10 기준으로 취약점을 점검합니다
27
+ - 입력 검증/살균
28
+ - 인증/인가 로직
29
+ - 민감 정보 노출
30
+
31
+ 4. **유지보수성**: 코드 품질과 가독성을 평가합니다
32
+ - 네이밍 컨벤션
33
+ - SOLID 원칙 준수
34
+ - 적절한 추상화 수준
35
+
36
+ 5. **피드백 작성**: 심각도별로 분류하여 리포트합니다
37
+ </Steps>
38
+
39
+ ## 에이전트 위임
40
+
41
+ `code-reviewer` 에이전트(Opus 모델)에 위임하여 심층 코드 분석을 수행합니다:
42
+
43
+ ```
44
+ Agent(
45
+ subagent_type="code-reviewer",
46
+ model="opus",
47
+ prompt="CODE REVIEW TASK
48
+
49
+ 코드 변경 사항의 품질, 보안, 유지보수성을 리뷰하세요.
50
+
51
+ Scope: [git diff 또는 특정 파일]
52
+
53
+ Review Checklist:
54
+ - Security 취약점 (OWASP Top 10)
55
+ - Code Quality (복잡도, 중복)
56
+ - Performance 이슈 (N+1, 비효율 알고리즘)
57
+ - Best Practices (네이밍, 문서화, 에러 핸들링)
58
+ - Maintainability (결합도, 테스트 가능성)
59
+
60
+ Output: 코드 리뷰 리포트:
61
+ - 리뷰한 파일 수
62
+ - 심각도별 이슈 (CRITICAL, HIGH, MEDIUM, LOW)
63
+ - 구체적인 파일:라인 위치
64
+ - 수정 권고
65
+ - 승인 권고 (APPROVE / REQUEST CHANGES / COMMENT)"
66
+ )
67
+ ```
68
+
69
+ ## 리뷰 체크리스트 (20개 항목)
70
+
71
+ ### Security (6개)
72
+ - [ ] 하드코딩된 시크릿 없음 (API 키, 비밀번호, 토큰)
73
+ - [ ] 모든 사용자 입력이 살균됨
74
+ - [ ] SQL/NoSQL 인젝션 방지
75
+ - [ ] XSS 방지 (출력 이스케이핑)
76
+ - [ ] CSRF 보호 (상태 변경 작업)
77
+ - [ ] 인증/인가가 적절히 적용됨
78
+
79
+ ### Code Quality (5개)
80
+ - [ ] 함수가 50줄 미만 (가이드라인)
81
+ - [ ] 순환 복잡도 10 미만
82
+ - [ ] 깊은 중첩 없음 (4단계 초과 시 early return 적용)
83
+ - [ ] 중복 로직 없음 (DRY 원칙)
84
+ - [ ] 명확하고 서술적인 네이밍
85
+
86
+ ### Performance (4개)
87
+ - [ ] N+1 쿼리 패턴 없음
88
+ - [ ] 적절한 캐싱 적용
89
+ - [ ] 효율적인 알고리즘 (O(n^2) 대신 O(n) 가능한 경우)
90
+ - [ ] 불필요한 리렌더링 없음 (React/Vue)
91
+
92
+ ### Best Practices (5개)
93
+ - [ ] 에러 핸들링이 적절히 구현됨
94
+ - [ ] 적절한 레벨의 로깅
95
+ - [ ] 공개 API에 대한 문서화
96
+ - [ ] 핵심 경로에 대한 테스트 존재
97
+ - [ ] 주석 처리된 코드 없음
98
+
99
+ ## 승인 기준
100
+
101
+ | 판정 | 조건 | 설명 |
102
+ |------|------|------|
103
+ | **APPROVE** | CRITICAL/HIGH 이슈 없음 | 경미한 개선 사항만 있음, 머지 가능 |
104
+ | **REQUEST CHANGES** | CRITICAL 또는 HIGH 이슈 존재 | 반드시 수정 후 재리뷰 필요 |
105
+ | **COMMENT** | LOW/MEDIUM 이슈만 존재 | 차단 사항 없음, 선택적 개선 권장 |
106
+
107
+ ## External Consultation (Optional)
108
+
109
+ code-reviewer 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
110
+
111
+ ### Protocol
112
+ 1. **자체 리뷰를 먼저 완료** — 독립적으로 분석 수행
113
+ 2. **검증을 위한 자문** — Claude Task 에이전트를 통해 발견 사항 교차 확인
114
+ 3. **비판적 평가** — 외부 발견 사항을 맹목적으로 수용하지 않음
115
+ 4. **우아한 폴백** — 위임이 불가능할 경우 절대 차단하지 않음
116
+
117
+ ### 자문이 필요한 경우
118
+ - 보안에 민감한 코드 변경
119
+ - 복잡한 아키텍처 패턴
120
+ - 익숙하지 않은 코드베이스나 언어
121
+ - 고위험 프로덕션 코드
122
+
123
+ ### 자문을 생략하는 경우
124
+ - 단순 리팩토링
125
+ - 잘 알려진 패턴
126
+ - 시간이 촉박한 리뷰
127
+ - 작고 격리된 변경
128
+
129
+ ## 심각도 정의
130
+
131
+ | 심각도 | 설명 |
132
+ |--------|------|
133
+ | **CRITICAL** | 보안 취약점 (머지 전 반드시 수정) |
134
+ | **HIGH** | 버그 또는 주요 코드 스멜 (머지 전 수정 권장) |
135
+ | **MEDIUM** | 경미한 이슈 (가능할 때 수정) |
136
+ | **LOW** | 스타일/제안 (수정 고려) |
137
+
138
+ <Output>
139
+ ```
140
+ CODE REVIEW REPORT / 코드 리뷰 리포트
141
+ ======================================
142
+
143
+ Files Reviewed: N
144
+ Total Issues: N
145
+
146
+ CRITICAL (N)
147
+ ------------
148
+ (없음 / 이슈 상세)
149
+
150
+ HIGH (N)
151
+ --------
152
+ 1. src/api/auth.ts:42
153
+ Issue: 사용자 입력이 SQL 쿼리 전에 살균되지 않음
154
+ Risk: SQL 인젝션 취약점
155
+ Fix: 파라미터화 쿼리 또는 ORM 사용
156
+
157
+ 2. src/components/UserProfile.tsx:89
158
+ Issue: 비밀번호가 로그에 평문으로 출력됨
159
+ Risk: 크리덴셜 노출
160
+ Fix: 로그 구문에서 비밀번호 제거
161
+
162
+ 3. src/utils/validation.ts:15
163
+ Issue: 이메일 정규식이 잘못된 형식을 허용
164
+ Risk: 잘못된 이메일 수용
165
+ Fix: 검증된 이메일 유효성 검사 라이브러리 사용
166
+
167
+ MEDIUM (N)
168
+ ----------
169
+ ...
170
+
171
+ LOW (N)
172
+ -------
173
+ ...
174
+
175
+ RECOMMENDATION: [APPROVE / REQUEST CHANGES / COMMENT]
176
+
177
+ [수정이 필요한 경우 요약 코멘트]
178
+ ```
179
+ </Output>
180
+
181
+ <Policy>
182
+ - 변경된 코드만 리뷰합니다 (기존 코드의 기술 부채는 별도 이슈로)
183
+ - 구체적인 코드 라인을 참조하여 피드백합니다
184
+ - 문제 지적 시 해결 방안도 함께 제시합니다
185
+ - 잘된 부분도 언급하여 균형 잡힌 피드백을 제공합니다
186
+ - 20개 체크 항목을 빠짐없이 검토합니다
187
+ - APPROVE/REQUEST CHANGES/COMMENT 3단계 판정을 반드시 포함합니다
188
+ </Policy>
189
+
190
+ ## 다른 스킬과의 연동
191
+
192
+ **Pipeline 연동:**
193
+ ```
194
+ /forgen:pipeline review "사용자 인증 구현"
195
+ ```
196
+ 구현 워크플로우의 일부로 코드 리뷰 포함
197
+
198
+ **Ralph 연동:**
199
+ ```
200
+ /forgen:ralph code-review then fix all issues
201
+ ```
202
+ 코드 리뷰 후 피드백 수정, 승인될 때까지 반복
203
+
204
+ **팀 기반 병렬 리뷰:**
205
+ ```
206
+ /forgen:team 4:code-reviewer "src/ 전체 파일 리뷰"
207
+ ```
208
+ 여러 파일에 대해 병렬 코드 리뷰 수행
209
+
210
+ ## Best Practices
211
+
212
+ - **조기 리뷰** — 이슈가 누적되기 전에 잡기
213
+ - **자주 리뷰** — 크고 드문 리뷰보다 작고 빈번한 리뷰
214
+ - **CRITICAL/HIGH 우선** — 보안과 버그부터 즉시 수정
215
+ - **컨텍스트 고려** — 일부 "이슈"는 의도적 트레이드오프일 수 있음
216
+ - **리뷰에서 학습** — 피드백을 활용하여 코딩 관행 개선
217
+
218
+ <Arguments>
219
+ ## 사용법
220
+ `/forgen:code-review {리뷰 대상}`
221
+
222
+ ### 예시
223
+ - `/forgen:code-review` (기본: 최근 변경사항 리뷰)
224
+ - `/forgen:code-review src/auth/login.ts`
225
+ - `/forgen:code-review 최근 3개 커밋`
226
+ - `/forgen:code-review PR #42`
227
+
228
+ ### 인자
229
+ - 파일 경로, 커밋 범위, PR 번호 등을 지정
230
+ - 인자 없으면 `git diff`로 변경사항을 자동 감지
231
+ </Arguments>
232
+
233
+ $ARGUMENTS
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: compound
3
+ description: This skill should be used when the user asks to "복리화,compound,패턴 추출,솔루션 축적,what did we learn". Compound Engineering — extract reusable patterns from this session's work
4
+ model: inherit
5
+ allowed-tools:
6
+ - Bash
7
+ - Read
8
+ - Write
9
+ - mcp__forgen-compound__compound-search
10
+ - mcp__forgen-compound__compound-read
11
+ - mcp__forgen-compound__compound-list
12
+ - mcp__forgen-compound__compound-stats
13
+ triggers:
14
+ - "복리화"
15
+ - "compound"
16
+ - "패턴 추출"
17
+ - "솔루션 축적"
18
+ - "what did we learn"
19
+ - "배운 것 정리"
20
+ ---
21
+
22
+ <Purpose>
23
+ 이 세션에서 수행한 작업을 분석하여 재사용 가능한 지식을 추출하고 축적합니다.
24
+ 당신은 이 대화의 전체 맥락을 갖고 있으므로, git diff만으로는 알 수 없는 "왜"를 포함할 수 있습니다.
25
+ 참고: CLI `forgen compound`는 최근 코드/세션을 자동 분석한 결과를 미리보기하고, `--save`일 때만 저장합니다. 이 slash skill은 대화 전체 맥락을 바탕으로 수동 추출할 때 사용합니다.
26
+ </Purpose>
27
+
28
+ <Steps>
29
+ ## Phase 1: 세션 분석
30
+
31
+ 이 세션의 대화를 돌아보며 다음을 식별하세요:
32
+
33
+ ### 솔루션 (재사용 가능한 패턴)
34
+ - 어떤 기술적 결정을 내렸는가? 왜?
35
+ - 어떤 접근법이 효과적이었는가?
36
+ - 시도했다가 실패한 것은? (anti-pattern)
37
+ - 반복될 수 있는 패턴이 있는가?
38
+
39
+ ### 트러블슈팅 (문제 해결 지식)
40
+ - 어떤 에러/문제를 만났는가?
41
+ - 근본 원인은 무엇이었는가?
42
+ - 해결 방법은?
43
+ - 다음에 같은 문제를 만나면 바로 적용할 수 있는 해결 절차는?
44
+
45
+ ### 의사결정 (선택의 근거)
46
+ - 기술 스택/라이브러리 선택의 이유
47
+ - 아키텍처 결정의 배경
48
+ - 트레이드오프와 그 판단 근거
49
+
50
+ ### 안티패턴 (피해야 할 것)
51
+ - 이 세션에서 시도했다가 실패한 접근법은?
52
+ - 왜 실패했는가? (근본 원인)
53
+ - 다음에 같은 실수를 피하려면?
54
+
55
+ ### 영향 범위 분석
56
+ - 이 변경/결정이 다른 모듈/파일에 미치는 영향은?
57
+ - 의존하는 코드가 깨질 수 있는가?
58
+ - 어떤 테스트가 추가로 필요한가?
59
+
60
+ ### 기존 항목 교차 참조
61
+ 축적 전에 기존 compound 항목과 비교하세요:
62
+ ```bash
63
+ forgen compound list
64
+ ```
65
+ - 이미 유사한 솔루션/규칙이 있는가? → 업데이트 또는 보완
66
+ - 기존 항목과 모순되는가? → 둘 다 기록하고 비교
67
+
68
+ ### 확신도 자기 평가
69
+ 각 추출 항목에 대해 확신도를 평가하세요:
70
+ - **높음**: 명확한 인과관계, 반복 검증됨
71
+ - **중간**: 합리적 추론, 1회 검증
72
+ - **낮음**: 가설 수준, 추가 검증 필요
73
+
74
+ ## Phase 2: 품질 게이트
75
+
76
+ 추출 전 각 항목을 검증하세요:
77
+
78
+ 1. **재사용 가능한가?** — 이 프로젝트에만 해당하는 것은 제외 (scope: project로 표시)
79
+ 2. **구체적인가?** — "좋은 코드를 작성하자" 같은 일반론은 제외
80
+ 3. **실행 가능한가?** — 다음에 적용할 수 있는 구체적 내용이 있는가?
81
+ 4. **독성이 없는가?** — @ts-ignore, --force, 임시 우회 같은 패턴은 제외
82
+
83
+ ## Phase 3: 축적
84
+
85
+ 추출한 각 인사이트를 CLI 명령어로 저장합니다:
86
+
87
+ ```bash
88
+ # 솔루션 (재사용 가능한 패턴)
89
+ forgen compound --solution "제목" "왜 이 접근법을 사용했고, 언제 적용하는지 포함한 상세 설명"
90
+
91
+ # 트러블슈팅 (에러 → 원인 → 해결)
92
+ forgen compound --solution "에러명-해결법" "에러 상황, 근본 원인, 해결 절차를 포함"
93
+
94
+ # 의사결정 (선택의 근거)
95
+ forgen compound --solution "기술선택-이유" "어떤 대안이 있었고 왜 이것을 선택했는지"
96
+
97
+ # 안티패턴 (피해야 할 것)
98
+ forgen compound --solution "피해야-할-패턴" "왜 이 접근이 실패했고 대신 무엇을 해야 하는지"
99
+ ```
100
+
101
+ **중요**:
102
+ - 각 솔루션의 내용에 **"왜"**를 반드시 포함하세요
103
+ - 제목은 구체적으로 (예: "React-useCallback-memo-최적화" O, "성능개선" X)
104
+ - 내용은 다른 세션에서 이 솔루션을 보고 바로 적용할 수 있을 정도로 상세하게
105
+ - 단순 타이포/1줄 수정 세션이면 → "복리화 불필요" 후 종료
106
+
107
+ ## Phase 4: 리포트
108
+
109
+ ```
110
+ 📊 세션 복리화 완료
111
+ ├─ 추출: N개 솔루션
112
+ ├─ 유형: pattern X개, troubleshoot Y개, decision Z개
113
+ └─ 저장: ~/.forgen/me/solutions/
114
+ ```
115
+ </Steps>
116
+
117
+ $ARGUMENTS
@@ -0,0 +1,263 @@
1
+ ---
2
+ name: database
3
+ description: This skill should be used when the user asks to "database,db 설계,schema,migration,마이그레이션,스키마". Database schema design, migration planning, and optimization
4
+ triggers:
5
+ - "database"
6
+ - "db 설계"
7
+ - "schema"
8
+ - "migration"
9
+ - "마이그레이션"
10
+ - "스키마"
11
+ ---
12
+ <!-- forgen-managed -->
13
+
14
+ <Purpose>
15
+ 데이터베이스 스키마 설계와 마이그레이션을 체계적으로 수행합니다.
16
+ 요구사항 분석부터 정규화, 인덱싱, 마이그레이션 스크립트 작성,
17
+ 롤백 계획까지 데이터 레이어의 전체 라이프사이클을 다룹니다.
18
+ </Purpose>
19
+
20
+ <Steps>
21
+ 1. **요구사항 분석**: 데이터 요구사항을 수집하고 정리합니다
22
+ - 비즈니스 엔티티와 관계 식별
23
+ - 읽기/쓰기 비율 추정 (read-heavy vs write-heavy)
24
+ - 예상 데이터 볼륨 추정 (행 수, 증가율)
25
+ - 트랜잭션 요구사항 (ACID, eventual consistency)
26
+ - 보존 정책 (데이터 수명, 아카이빙 규칙)
27
+ - 규제 요구사항 (GDPR, 개인정보보호법)
28
+
29
+ 2. **스키마 설계**: 정규화된 스키마를 설계합니다
30
+ - ERD(Entity-Relationship Diagram) 작성
31
+ - 정규화 수준 결정 (3NF 기본, 필요 시 역정규화)
32
+ - 데이터 타입 선택 (정확한 크기, nullable 여부)
33
+ - 기본 키 전략 (UUID vs auto-increment vs ULID)
34
+ - 외래 키 제약 조건 및 cascade 정책
35
+ - 소프트 삭제(soft delete) vs 하드 삭제 결정
36
+ - 감사(audit) 필드 포함 (created_at, updated_at, created_by)
37
+ - enum 값의 저장 전략 (DB enum vs string vs lookup table)
38
+
39
+ 3. **인덱싱 전략**: 쿼리 성능을 위한 인덱스를 설계합니다
40
+ - 주요 쿼리 패턴 분석 (WHERE, JOIN, ORDER BY)
41
+ - 단일 컬럼 인덱스 vs 복합 인덱스 결정
42
+ - 커버링 인덱스 활용 가능성 검토
43
+ - 부분 인덱스(partial index) 적용 가능성
44
+ - 인덱스 카디널리티와 선택도 분석
45
+ - 인덱스의 쓰기 성능 영향 평가
46
+ - EXPLAIN ANALYZE로 쿼리 플랜 검증 계획
47
+
48
+ 4. **마이그레이션 스크립트 작성**: 안전한 마이그레이션을 구현합니다
49
+ - 마이그레이션 도구 선택 (Prisma, Knex, TypeORM, raw SQL)
50
+ - UP 마이그레이션 작성 (스키마 변경 적용)
51
+ - DOWN 마이그레이션 작성 (변경 롤백)
52
+ - 데이터 마이그레이션 포함 (기존 데이터 변환)
53
+ - 대용량 테이블 변경 시 무중단 전략 (온라인 DDL)
54
+ - 마이그레이션 순서 의존성 확인
55
+
56
+ 5. **롤백 계획**: 장애 시 복구 절차를 수립합니다
57
+ - 롤백 스크립트 테스트 (UP -> DOWN -> UP 사이클)
58
+ - 데이터 손실 없는 롤백 가능 여부 확인
59
+ - 백업/복원 절차 문서화
60
+ - 마이그레이션 실패 시 수동 복구 절차
61
+ - Point-in-Time Recovery 설정 확인
62
+
63
+ 6. **성능 검증**: 스키마 변경의 성능 영향을 검증합니다
64
+ - 마이그레이션 실행 시간 추정
65
+ - 테이블 잠금(lock) 영향 범위 확인
66
+ - 인덱스 생성의 동시성 영향 (CONCURRENTLY 옵션)
67
+ - 스테이징 환경에서 실데이터 볼륨 테스트
68
+ </Steps>
69
+
70
+ ## 에이전트 위임
71
+
72
+ `architect` 에이전트(Opus 모델)에 위임하여 데이터베이스 아키텍처를 설계합니다:
73
+
74
+ ```
75
+ Agent(
76
+ subagent_type="architect",
77
+ model="opus",
78
+ prompt="DATABASE DESIGN TASK
79
+
80
+ 데이터베이스 스키마를 설계하고 마이그레이션 계획을 수립하세요.
81
+
82
+ Domain: [도메인/서비스 설명]
83
+ Database: [PostgreSQL / MySQL / MongoDB / etc.]
84
+
85
+ Design Checklist:
86
+ 1. ERD 및 엔티티 관계 설계
87
+ 2. 정규화 및 데이터 타입 결정
88
+ 3. 인덱싱 전략 수립
89
+ 4. 마이그레이션 스크립트 (UP/DOWN)
90
+ 5. 롤백 계획 및 백업 절차
91
+ 6. 성능 영향 분석
92
+
93
+ Output: 데이터베이스 설계 문서:
94
+ - ERD (텍스트 기반)
95
+ - 테이블/컬렉션 정의
96
+ - 인덱스 목록
97
+ - 마이그레이션 스크립트
98
+ - 롤백 절차"
99
+ )
100
+ ```
101
+
102
+ ## External Consultation (Optional)
103
+
104
+ architect 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
105
+
106
+ ### Protocol
107
+ 1. **자체 스키마 설계를 먼저 완료** -- 독립적으로 설계 수행
108
+ 2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 설계 교차 확인
109
+ 3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
110
+ 4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
111
+
112
+ ### 자문이 필요한 경우
113
+ - 대규모 스키마 마이그레이션 (10+ 테이블 변경)
114
+ - 성능이 중요한 인덱싱 전략
115
+ - 프로덕션 환경의 무중단 마이그레이션
116
+ - 데이터 일관성이 중요한 트랜잭션 설계
117
+
118
+ ### 자문을 생략하는 경우
119
+ - 단순 테이블 추가/수정
120
+ - 잘 알려진 스키마 패턴 적용
121
+ - 개발 환경의 마이그레이션
122
+ - 소규모 인덱스 추가
123
+
124
+ ## 데이터베이스 설계 체크리스트
125
+
126
+ ### 스키마 설계 (6개)
127
+ - [ ] 모든 테이블에 적절한 기본 키 존재
128
+ - [ ] 외래 키 제약 조건이 설정됨
129
+ - [ ] 데이터 타입이 정확한 크기로 선택됨
130
+ - [ ] nullable 필드가 명시적으로 결정됨
131
+ - [ ] 감사 필드 포함 (created_at, updated_at)
132
+ - [ ] 소프트 삭제 전략이 결정됨
133
+
134
+ ### 인덱싱 (4개)
135
+ - [ ] 주요 쿼리 패턴에 인덱스 적용됨
136
+ - [ ] 복합 인덱스의 컬럼 순서가 최적화됨
137
+ - [ ] 과도한 인덱스로 인한 쓰기 성능 저하 없음
138
+ - [ ] 유니크 제약 조건이 비즈니스 규칙과 일치
139
+
140
+ ### 마이그레이션 (4개)
141
+ - [ ] UP/DOWN 마이그레이션 모두 작성됨
142
+ - [ ] 데이터 마이그레이션이 포함됨 (필요 시)
143
+ - [ ] 롤백 테스트 완료
144
+ - [ ] 마이그레이션 실행 시간이 허용 범위 내
145
+
146
+ ### 보안 (4개)
147
+ - [ ] 민감 데이터가 암호화됨
148
+ - [ ] 접근 권한이 최소 권한 원칙으로 설정됨
149
+ - [ ] PII 데이터의 보존/삭제 정책이 정의됨
150
+ - [ ] 감사 로그가 중요 변경에 대해 기록됨
151
+
152
+ <Output>
153
+ ```
154
+ DATABASE DESIGN DOCUMENT / 데이터베이스 설계 문서
155
+ ==================================================
156
+
157
+ Service: [서비스명]
158
+ Database: [PostgreSQL / MySQL / MongoDB]
159
+ Migration Tool: [Prisma / Knex / TypeORM]
160
+
161
+ ERD / 엔티티 관계
162
+ -------------------
163
+ [User] 1---N [Order] N---M [Product]
164
+ | |
165
+ 1---N [Address] 1---N [Review]
166
+
167
+ TABLES / 테이블 정의
168
+ ---------------------
169
+ Table: users
170
+ id UUID PK, DEFAULT gen_random_uuid()
171
+ email VARCHAR(255) NOT NULL, UNIQUE
172
+ name VARCHAR(100) NOT NULL
173
+ password VARCHAR(255) NOT NULL
174
+ role VARCHAR(20) NOT NULL, DEFAULT 'user'
175
+ created_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
176
+ updated_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
177
+ deleted_at TIMESTAMPTZ NULL
178
+
179
+ INDEXES / 인덱스
180
+ -----------------
181
+ | Table | Name | Columns | Type | Reason |
182
+ |--------|---------------------|----------------|--------|---------------------|
183
+ | users | idx_users_email | email | UNIQUE | 로그인 조회 |
184
+ | orders | idx_orders_user_date| user_id, date | BTREE | 사용자별 주문 조회 |
185
+
186
+ MIGRATION / 마이그레이션
187
+ -------------------------
188
+ File: 20260402_001_create_users.sql
189
+
190
+ -- UP
191
+ CREATE TABLE users ( ... );
192
+ CREATE INDEX idx_users_email ON users(email);
193
+
194
+ -- DOWN
195
+ DROP TABLE IF EXISTS users;
196
+
197
+ ROLLBACK PLAN / 롤백 계획
198
+ ---------------------------
199
+ 1. 마이그레이션 실패 시: DOWN 스크립트 실행
200
+ 2. 데이터 손실 위험 시: pg_dump 백업에서 복원
201
+ 3. 긴급 시: Point-in-Time Recovery 사용
202
+
203
+ PERFORMANCE IMPACT / 성능 영향
204
+ -------------------------------
205
+ - 마이그레이션 예상 시간: [N분]
206
+ - 테이블 잠금: [있음/없음]
207
+ - 인덱스 생성: [CONCURRENTLY 사용 여부]
208
+ ```
209
+ </Output>
210
+
211
+ <Policy>
212
+ - 마이그레이션은 반드시 UP/DOWN 양방향으로 작성합니다
213
+ - 프로덕션 마이그레이션 전 스테이징에서 실행 테스트 필수
214
+ - 데이터 손실 가능성이 있는 변경은 백업 확인 후 진행
215
+ - 인덱스 변경은 EXPLAIN ANALYZE로 효과를 검증합니다
216
+ - 대용량 테이블의 ALTER는 무중단 전략을 사용합니다
217
+ - 롤백 불가능한 마이그레이션은 명시적으로 경고합니다
218
+ </Policy>
219
+
220
+ ## 다른 스킬과의 연동
221
+
222
+ **API 설계 연동:**
223
+ ```
224
+ /forgen:api-design 데이터 모델 기반 REST API
225
+ ```
226
+ 데이터베이스 스키마와 일관된 API 설계
227
+
228
+ **보안 리뷰 연동:**
229
+ ```
230
+ /forgen:security-review 마이그레이션 스크립트
231
+ ```
232
+ 마이그레이션의 보안 영향 점검
233
+
234
+ **성능 최적화 연동:**
235
+ ```
236
+ /forgen:performance 쿼리 성능 분석
237
+ ```
238
+ 인덱스 효과 및 쿼리 최적화
239
+
240
+ ## Best Practices
241
+
242
+ - **점진적 마이그레이션** -- 대규모 변경을 작은 단계로 분할
243
+ - **데이터 먼저 백업** -- 프로덕션 변경 전 반드시 백업
244
+ - **테스트 환경 검증** -- 실 데이터 볼륨으로 성능 확인
245
+ - **문서화** -- 스키마 변경 이유와 영향을 기록
246
+ - **무중단 우선** -- 서비스 중단 없는 마이그레이션 전략
247
+
248
+ <Arguments>
249
+ ## 사용법
250
+ `/forgen:database {설계/마이그레이션 대상}`
251
+
252
+ ### 예시
253
+ - `/forgen:database 사용자 관리 시스템 스키마 설계`
254
+ - `/forgen:database orders 테이블에 discount 컬럼 추가 마이그레이션`
255
+ - `/forgen:database 기존 스키마의 인덱싱 최적화`
256
+ - `/forgen:database PostgreSQL에서 MongoDB로 마이그레이션 계획`
257
+
258
+ ### 인자
259
+ - 설계할 도메인, 변경할 스키마, 마이그레이션 목적 등을 설명
260
+ - 인자 없으면 프로젝트의 현재 스키마를 분석
261
+ </Arguments>
262
+
263
+ $ARGUMENTS