@wooojin/forgen 0.2.0 → 0.3.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 (158) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.ja.md +79 -14
  3. package/README.ko.md +100 -14
  4. package/README.md +124 -17
  5. package/README.zh.md +79 -14
  6. package/agents/analyst.md +48 -4
  7. package/agents/architect.md +39 -4
  8. package/agents/code-reviewer.md +107 -77
  9. package/agents/critic.md +47 -4
  10. package/agents/debugger.md +46 -4
  11. package/agents/designer.md +40 -4
  12. package/agents/executor.md +112 -30
  13. package/agents/explore.md +45 -5
  14. package/agents/git-master.md +48 -4
  15. package/agents/planner.md +121 -18
  16. package/agents/test-engineer.md +58 -4
  17. package/agents/verifier.md +92 -77
  18. package/commands/architecture-decision.md +127 -258
  19. package/commands/calibrate.md +225 -0
  20. package/commands/code-review.md +163 -178
  21. package/commands/compound.md +127 -68
  22. package/commands/deep-interview.md +273 -0
  23. package/commands/docker.md +68 -178
  24. package/commands/forge-loop.md +215 -0
  25. package/commands/learn.md +231 -0
  26. package/commands/retro.md +215 -0
  27. package/commands/ship.md +277 -0
  28. package/dist/cli.js +26 -9
  29. package/dist/core/auto-compound-runner.js +14 -0
  30. package/dist/core/config-injector.d.ts +2 -1
  31. package/dist/core/config-injector.js +2 -1
  32. package/dist/core/dashboard.d.ts +108 -0
  33. package/dist/core/dashboard.js +495 -0
  34. package/dist/core/doctor.js +151 -21
  35. package/dist/core/drift-score.d.ts +49 -0
  36. package/dist/core/drift-score.js +87 -0
  37. package/dist/core/harness.d.ts +6 -1
  38. package/dist/core/harness.js +75 -19
  39. package/dist/core/mcp-config.d.ts +2 -0
  40. package/dist/core/mcp-config.js +6 -1
  41. package/dist/core/paths.d.ts +6 -1
  42. package/dist/core/paths.js +18 -2
  43. package/dist/core/spawn.d.ts +3 -2
  44. package/dist/core/spawn.js +27 -8
  45. package/dist/core/types.d.ts +34 -0
  46. package/dist/engine/compound-export.d.ts +41 -0
  47. package/dist/engine/compound-export.js +169 -0
  48. package/dist/engine/compound-lifecycle.d.ts +4 -3
  49. package/dist/engine/compound-lifecycle.js +91 -46
  50. package/dist/engine/compound-loop.js +18 -0
  51. package/dist/engine/meta-learning/adaptive-thresholds.d.ts +20 -0
  52. package/dist/engine/meta-learning/adaptive-thresholds.js +126 -0
  53. package/dist/engine/meta-learning/extraction-tuner.d.ts +15 -0
  54. package/dist/engine/meta-learning/extraction-tuner.js +99 -0
  55. package/dist/engine/meta-learning/matcher-weight-tuner.d.ts +21 -0
  56. package/dist/engine/meta-learning/matcher-weight-tuner.js +151 -0
  57. package/dist/engine/meta-learning/runner.d.ts +14 -0
  58. package/dist/engine/meta-learning/runner.js +90 -0
  59. package/dist/engine/meta-learning/scope-promoter.d.ts +21 -0
  60. package/dist/engine/meta-learning/scope-promoter.js +84 -0
  61. package/dist/engine/meta-learning/session-quality-scorer.d.ts +61 -0
  62. package/dist/engine/meta-learning/session-quality-scorer.js +166 -0
  63. package/dist/engine/meta-learning/types.d.ts +114 -0
  64. package/dist/engine/meta-learning/types.js +43 -0
  65. package/dist/engine/solution-format.d.ts +2 -2
  66. package/dist/engine/solution-format.js +249 -34
  67. package/dist/engine/solution-index.d.ts +1 -1
  68. package/dist/engine/solution-matcher.d.ts +30 -1
  69. package/dist/engine/solution-matcher.js +235 -45
  70. package/dist/fgx.js +12 -8
  71. package/dist/hooks/context-guard.d.ts +15 -0
  72. package/dist/hooks/context-guard.js +218 -56
  73. package/dist/hooks/db-guard.js +2 -2
  74. package/dist/hooks/hook-config.d.ts +27 -1
  75. package/dist/hooks/hook-config.js +72 -12
  76. package/dist/hooks/hooks-generator.d.ts +3 -0
  77. package/dist/hooks/hooks-generator.js +23 -6
  78. package/dist/hooks/intent-classifier.d.ts +0 -2
  79. package/dist/hooks/intent-classifier.js +32 -18
  80. package/dist/hooks/keyword-detector.js +126 -204
  81. package/dist/hooks/notepad-injector.js +2 -2
  82. package/dist/hooks/permission-handler.js +2 -2
  83. package/dist/hooks/post-tool-failure.js +12 -6
  84. package/dist/hooks/post-tool-handlers.d.ts +1 -1
  85. package/dist/hooks/post-tool-handlers.js +14 -11
  86. package/dist/hooks/post-tool-use.d.ts +11 -0
  87. package/dist/hooks/post-tool-use.js +184 -71
  88. package/dist/hooks/pre-compact.d.ts +11 -1
  89. package/dist/hooks/pre-compact.js +112 -37
  90. package/dist/hooks/pre-tool-use.js +86 -56
  91. package/dist/hooks/rate-limiter.js +3 -3
  92. package/dist/hooks/secret-filter.js +2 -2
  93. package/dist/hooks/session-recovery.js +256 -236
  94. package/dist/hooks/shared/hook-response.d.ts +4 -4
  95. package/dist/hooks/shared/hook-response.js +13 -24
  96. package/dist/hooks/shared/hook-timing.d.ts +15 -0
  97. package/dist/hooks/shared/hook-timing.js +64 -0
  98. package/dist/hooks/skill-injector.d.ts +4 -3
  99. package/dist/hooks/skill-injector.js +47 -16
  100. package/dist/hooks/slop-detector.js +3 -3
  101. package/dist/hooks/solution-injector.js +224 -197
  102. package/dist/hooks/subagent-tracker.js +2 -2
  103. package/dist/host/codex-adapter.d.ts +10 -0
  104. package/dist/host/codex-adapter.js +154 -0
  105. package/dist/mcp/solution-reader.d.ts +5 -5
  106. package/dist/mcp/solution-reader.js +34 -24
  107. package/dist/renderer/rule-renderer.js +9 -11
  108. package/dist/services/session.d.ts +19 -0
  109. package/dist/services/session.js +62 -0
  110. package/hooks/hooks.json +2 -2
  111. package/package.json +2 -1
  112. package/skills/architecture-decision/SKILL.md +113 -257
  113. package/skills/calibrate/SKILL.md +207 -0
  114. package/skills/code-review/SKILL.md +151 -178
  115. package/skills/compound/SKILL.md +126 -68
  116. package/skills/deep-interview/SKILL.md +266 -0
  117. package/skills/docker/SKILL.md +57 -179
  118. package/skills/forge-loop/SKILL.md +198 -0
  119. package/skills/learn/SKILL.md +216 -0
  120. package/skills/retro/SKILL.md +199 -0
  121. package/skills/ship/SKILL.md +259 -0
  122. package/agents/code-simplifier.md +0 -197
  123. package/agents/performance-reviewer.md +0 -172
  124. package/agents/qa-tester.md +0 -158
  125. package/agents/refactoring-expert.md +0 -168
  126. package/agents/scientist.md +0 -144
  127. package/agents/security-reviewer.md +0 -137
  128. package/agents/writer.md +0 -184
  129. package/commands/api-design.md +0 -268
  130. package/commands/ci-cd.md +0 -270
  131. package/commands/database.md +0 -263
  132. package/commands/debug-detective.md +0 -99
  133. package/commands/documentation.md +0 -276
  134. package/commands/ecomode.md +0 -51
  135. package/commands/frontend.md +0 -271
  136. package/commands/git-master.md +0 -90
  137. package/commands/incident-response.md +0 -292
  138. package/commands/migrate.md +0 -101
  139. package/commands/performance.md +0 -288
  140. package/commands/refactor.md +0 -105
  141. package/commands/security-review.md +0 -288
  142. package/commands/tdd.md +0 -183
  143. package/commands/testing-strategy.md +0 -265
  144. package/skills/api-design/SKILL.md +0 -262
  145. package/skills/ci-cd/SKILL.md +0 -264
  146. package/skills/database/SKILL.md +0 -257
  147. package/skills/debug-detective/SKILL.md +0 -95
  148. package/skills/documentation/SKILL.md +0 -270
  149. package/skills/ecomode/SKILL.md +0 -46
  150. package/skills/frontend/SKILL.md +0 -265
  151. package/skills/git-master/SKILL.md +0 -86
  152. package/skills/incident-response/SKILL.md +0 -286
  153. package/skills/migrate/SKILL.md +0 -96
  154. package/skills/performance/SKILL.md +0 -282
  155. package/skills/refactor/SKILL.md +0 -100
  156. package/skills/security-review/SKILL.md +0 -282
  157. package/skills/tdd/SKILL.md +0 -178
  158. package/skills/testing-strategy/SKILL.md +0 -260
@@ -1,233 +1,218 @@
1
1
  ---
2
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
3
+ description: This skill should be used when the user asks to "code review,코드 리뷰,리뷰해줘,review this". 신뢰도 보정 기반 체계적 코드 리뷰 — compound 이력 연동, auto-fix, 20개 체크리스트.
4
+ argument-hint: "[file, PR number, or git range]"
5
+ model: opus
6
+ allowed-tools:
7
+ - Read
8
+ - Grep
9
+ - Glob
10
+ - Bash
11
+ - Edit
12
+ - Write
13
+ - Agent
4
14
  triggers:
5
15
  - "code review"
6
16
  - "코드 리뷰"
7
17
  - "리뷰해줘"
8
18
  - "review this"
19
+ - "리뷰"
20
+ - "review"
9
21
  ---
10
22
 
11
23
  <Purpose>
12
- 체계적인 코드 리뷰를 수행하여 품질, 보안, 유지보수성을 검증합니다.
13
- 심각도별로 분류된 피드백을 제공합니다.
24
+ 변경된 코드의 품질, 보안, 유지보수성을 체계적으로 검증합니다.
25
+ 모든 발견에 신뢰도 점수(1-10)를 부여하여 false positive를 최소화합니다.
26
+ auto-fix 가능한 항목은 직접 수정하고, 판단이 필요한 항목만 사용자에게 보고합니다.
14
27
  </Purpose>
15
28
 
29
+ <Compound_Integration>
30
+ ## Compound-In: 이전 리뷰 이력 로드
31
+
32
+ ```
33
+ compound-search("{모듈명} {파일 경로 키워드} review 리뷰 이슈")
34
+ ```
35
+
36
+ 검색 결과가 있으면 보고서 상단에 표시합니다:
37
+
38
+ ```
39
+ 이전에 이 모듈에서 발견된 이슈:
40
+ - [{제목}] (심각도: {level}, 날짜: {date})
41
+ 해결 여부: {해결됨 / 미해결 / 재발}
42
+ ```
43
+
44
+ 재발 패턴: 같은 이슈 2회 이상 -> 심각도 자동 상향 (MEDIUM -> HIGH)
45
+
46
+ ## Compound-Out: 발견사항 기록
47
+
48
+ - CRITICAL/HIGH -> compound troubleshoot 기록 제안
49
+ - 새 anti-pattern -> compound anti-pattern 기록 제안
50
+ </Compound_Integration>
51
+
52
+ <Confidence_Calibration>
53
+ ## 신뢰도 보정 (모든 발견에 적용)
54
+
55
+ ```
56
+ 9-10: 코드를 읽고 검증함. 구체적 버그/취약점 시연 가능.
57
+ 7-8: 높은 확신 패턴 매치. 거의 확실히 실제 이슈.
58
+ 5-6: 중간. false positive 가능. 주의하여 플래그.
59
+ 3-4: 낮음. 부록에만 포함.
60
+ 1-2: 추측. P0 심각도일 때만 보고.
61
+ ```
62
+
63
+ 보고 임계값:
64
+ - 본문: 5 이상
65
+ - 부록: 3-4
66
+ - 1-2: P0 아니면 생략
67
+ </Confidence_Calibration>
68
+
16
69
  <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>
70
+ ## Phase 1: 스코프 파악
38
71
 
39
- ## 에이전트 위임
72
+ ```bash
73
+ # 인수가 파일 경로 -> cat {path}
74
+ # 인수가 PR 번호 -> gh pr diff {number}
75
+ # 인수가 git range -> git diff {range}
76
+ # 인수 없음 -> git diff HEAD (또는 git diff --staged)
77
+ ```
40
78
 
41
- `code-reviewer` 에이전트(Opus 모델)에 위임하여 심층 코드 분석을 수행합니다:
79
+ ## Phase 2: Compound-In (이전 이력 확인)
42
80
 
43
81
  ```
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
- )
82
+ compound-search("{모듈명 또는 핵심 키워드}")
67
83
  ```
68
84
 
69
- ## 리뷰 체크리스트 (20개 항목)
85
+ ## Phase 3: 체계적 검토 (20개 체크리스트)
70
86
 
71
87
  ### Security (6개)
72
- - [ ] 하드코딩된 시크릿 없음 (API 키, 비밀번호, 토큰)
73
- - [ ] 모든 사용자 입력이 살균됨
74
- - [ ] SQL/NoSQL 인젝션 방지
75
- - [ ] XSS 방지 (출력 이스케이핑)
76
- - [ ] CSRF 보호 (상태 변경 작업)
77
- - [ ] 인증/인가가 적절히 적용됨
88
+ - [ ] 하드코딩된 시크릿 없음
89
+ - [ ] 입력 살균 (SQL/NoSQL injection 방지)
90
+ - [ ] XSS 방지
91
+ - [ ] CSRF 보호
92
+ - [ ] 인증/인가 적용
93
+ - [ ] 민감 정보 로그 노출 없음
94
+
95
+ ### Critical Category (5개)
96
+ - [ ] SQL/데이터 안전성
97
+ - [ ] 경쟁 조건
98
+ - [ ] LLM 신뢰 경계 (LLM 출력 살균 확인)
99
+ - [ ] 시크릿 노출 (코드 + 로그 + 에러 메시지)
100
+ - [ ] Enum 완전성 (새 값 -> 모든 switch/match 업데이트)
78
101
 
79
102
  ### Code Quality (5개)
80
- - [ ] 함수가 50줄 미만 (가이드라인)
103
+ - [ ] 함수 50줄 미만
81
104
  - [ ] 순환 복잡도 10 미만
82
- - [ ] 깊은 중첩 없음 (4단계 초과 early return 적용)
83
- - [ ] 중복 로직 없음 (DRY 원칙)
84
- - [ ] 명확하고 서술적인 네이밍
105
+ - [ ] 깊은 중첩 없음 (4단계 -> early return)
106
+ - [ ] DRY 원칙
107
+ - [ ] 서술적 네이밍
85
108
 
86
109
  ### 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** | 스타일/제안 (수정 고려) |
110
+ - [ ] N+1 없음
111
+ - [ ] 적절한 캐싱
112
+ - [ ] 효율적 알고리즘
113
+ - [ ] 불필요한 리렌더링 없음
114
+
115
+ ## Phase 4: Auto-Fix 적용
116
+
117
+ **AUTO-FIX** (묻지 않고 수정):
118
+ - 데드 코드, 미사용 import, stale 주석, 빈 catch 블록
119
+
120
+ **ASK** (사용자 판단):
121
+ - 로직 변경, 아키텍처 리팩토링, 동작 변경
122
+
123
+ ## Phase 5: 보고서 작성
124
+
125
+ 신뢰도 점수 + 심각도별 분류.
126
+ </Steps>
127
+
128
+ <Finding_Format>
129
+ ```
130
+ [P{N}] (confidence: {N}/10) `{file}:{line}`
131
+ Issue: {구체적 문제}
132
+ Impact: {영향}
133
+ Fix: {수정 방안}
134
+ ```
135
+ </Finding_Format>
136
+
137
+ <Failure_Modes>
138
+ **스타일만 리뷰하고 로직 생략**: 네이밍/들여쓰기만 지적하고 비즈니스 로직, 엣지 케이스, 동시성은 검토하지 않는다.
139
+ **파일:라인 없는 피드백**: 모든 이슈에 `파일명:라인번호` 필수.
140
+ **숨겨진 BLOCKER + APPROVE**: CRITICAL/HIGH 발견 시 APPROVE 불가.
141
+ **신뢰도 없는 발견**: 모든 발견에 1-10 신뢰도 필수.
142
+ **Auto-fix에서 로직 변경**: 데드 코드/import/주석만 자동 수정. 비즈니스 로직 자동 변경 금지.
143
+ **LLM 출력 무조건 신뢰**: LLM 출력 처리 코드는 신뢰 경계 검사 필수.
144
+ </Failure_Modes>
137
145
 
138
146
  <Output>
139
147
  ```
140
148
  CODE REVIEW REPORT / 코드 리뷰 리포트
141
149
  ======================================
150
+ Scope: {리뷰 대상}
151
+ Files: {N}개 | Lines: +{N} / -{N}
142
152
 
143
- Files Reviewed: N
144
- Total Issues: N
145
-
146
- CRITICAL (N)
147
- ------------
148
- (없음 / 이슈 상세)
153
+ [COMPOUND HISTORY]
154
+ - {이전 이슈} ({날짜}) -- {상태}
149
155
 
150
- HIGH (N)
151
- --------
152
- 1. src/api/auth.ts:42
153
- Issue: 사용자 입력이 SQL 쿼리 전에 살균되지 않음
154
- Risk: SQL 인젝션 취약점
155
- Fix: 파라미터화 쿼리 또는 ORM 사용
156
+ CRITICAL ({N})
157
+ ──────────────
158
+ [P0] (confidence: {N}/10) `{file}:{line}`
159
+ Issue: ...
160
+ Impact: ...
161
+ Fix: ...
156
162
 
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: 검증된 이메일 유효성 검사 라이브러리 사용
163
+ HIGH ({N})
164
+ ──────────
165
+ ...
166
166
 
167
- MEDIUM (N)
168
- ----------
167
+ MEDIUM ({N})
168
+ ────────────
169
169
  ...
170
170
 
171
- LOW (N)
172
- -------
171
+ LOW ({N})
172
+ ─────────
173
173
  ...
174
174
 
175
- RECOMMENDATION: [APPROVE / REQUEST CHANGES / COMMENT]
175
+ AUTO-FIXED ({N})
176
+ ────────────────
177
+ - {수정 내용} ({file}:{line})
178
+
179
+ APPENDIX (confidence 3-4)
180
+ ─────────────────────────
181
+ - {낮은 신뢰도 항목}
176
182
 
177
- [수정이 필요한 경우 요약 코멘트]
183
+ VERDICT: {APPROVE / REQUEST CHANGES / COMMENT}
184
+ {판정 근거}
178
185
  ```
186
+
187
+ | 판정 | 조건 |
188
+ |------|------|
189
+ | APPROVE | CRITICAL/HIGH 0개 |
190
+ | REQUEST CHANGES | CRITICAL 1+ 또는 HIGH 2+ |
191
+ | COMMENT | HIGH 1개 또는 MEDIUM만 |
179
192
  </Output>
180
193
 
181
194
  <Policy>
182
- - 변경된 코드만 리뷰합니다 (기존 코드의 기술 부채는 별도 이슈로)
183
- - 구체적인 코드 라인을 참조하여 피드백합니다
184
- - 문제 지적 해결 방안도 함께 제시합니다
185
- - 잘된 부분도 언급하여 균형 잡힌 피드백을 제공합니다
186
- - 20개 체크 항목을 빠짐없이 검토합니다
187
- - APPROVE/REQUEST CHANGES/COMMENT 3단계 판정을 반드시 포함합니다
195
+ - 변경된 코드만 리뷰 (기존 기술 부채는 별도 이슈).
196
+ - 모든 이슈에 `파일:라인` + 신뢰도 필수.
197
+ - 문제 + 수정 방안을 함께 제시.
198
+ - 20개 체크 항목 빠짐없이 검토.
199
+ - Auto-fix는 안전한 항목에만.
200
+ - CRITICAL/HIGH 발견 APPROVE 불가.
188
201
  </Policy>
189
202
 
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
203
  <Arguments>
219
204
  ## 사용법
220
- `/forgen:code-review {리뷰 대상}`
205
+ `/code-review {대상}`
221
206
 
222
207
  ### 예시
223
- - `/forgen:code-review` (기본: 최근 변경사항 리뷰)
224
- - `/forgen:code-review src/auth/login.ts`
225
- - `/forgen:code-review 최근 3개 커밋`
226
- - `/forgen:code-review PR #42`
208
+ - `/code-review` (git diff HEAD)
209
+ - `/code-review src/auth/login.ts`
210
+ - `/code-review 42` (PR #42)
211
+ - `/code-review HEAD~3..HEAD`
227
212
 
228
213
  ### 인자
229
- - 파일 경로, 커밋 범위, PR 번호 등을 지정
230
- - 인자 없으면 `git diff`로 변경사항을 자동 감지
214
+ - 파일 경로, PR 번호, git range
215
+ - 생략 git diff 자동 감지
231
216
  </Arguments>
232
217
 
233
218
  $ARGUMENTS
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: compound
3
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
+ argument-hint: "[solution description]"
4
5
  model: inherit
5
6
  allowed-tools:
6
7
  - Bash
@@ -25,93 +26,151 @@ triggers:
25
26
  참고: CLI `forgen compound`는 최근 코드/세션을 자동 분석한 결과를 미리보기하고, `--save`일 때만 저장합니다. 이 slash skill은 대화 전체 맥락을 바탕으로 수동 추출할 때 사용합니다.
26
27
  </Purpose>
27
28
 
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
29
+ <Compound_Integration>
30
+ ## Phase 0: Compound-In (중복 방지 검색)
31
+
32
+ 추출 기존 compound 패턴을 검색하여 중복을 방지합니다.
33
+
64
34
  ```
65
- - 이미 유사한 솔루션/규칙이 있는가? → 업데이트 또는 보완
66
- - 기존 항목과 모순되는가? → 둘 다 기록하고 비교
35
+ compound-search("[핵심 키워드]")
36
+ compound-stats
37
+ ```
38
+
39
+ 결과 기반:
40
+ - 동일 패턴 존재 → 업데이트 vs 신규 판단
41
+ - 유사하지만 다른 맥락 → 별도 항목 + 기존 항목 관계 명시
42
+ - 완전히 새로운 → 신규 저장
43
+ </Compound_Integration>
44
+
45
+ <Steps>
46
+ ## Phase 1: 세션 분석 (4개 구조화 카테고리)
67
47
 
68
- ### 확신도 자기 평가
69
- 추출 항목에 대해 확신도를 평가하세요:
70
- - **높음**: 명확한 인과관계, 반복 검증됨
48
+ ### pattern (HOW to do something)
49
+ - 재사용 가능한 접근법, 효과적이었던 기법
50
+ - 제목: `"{topic}-{approach}"` (예: "prisma-upsert-pattern")
51
+
52
+ ### troubleshoot (WHAT went wrong)
53
+ - 에러 → 근본 원인 → 해결 절차
54
+ - 제목: `"{error}-{solution}"` (예: "hmac-mismatch-fix")
55
+
56
+ ### decision (WHY this way)
57
+ - 기술 선택의 근거, 트레이드오프
58
+ - 제목: `"adr-{topic}"` (예: "adr-redis-vs-memcached")
59
+
60
+ ### anti-pattern (What NOT to do)
61
+ - 시도했다가 실패한 접근, 근본 원인
62
+ - 제목: `"avoid-{pattern}"` (예: "avoid-barrel-exports")
63
+
64
+ ### 확신도 평가
65
+ - **높음**: 명확한 인과, 반복 검증
71
66
  - **중간**: 합리적 추론, 1회 검증
72
- - **낮음**: 가설 수준, 추가 검증 필요
67
+ - **낮음**: 가설 수준
73
68
 
74
- ## Phase 2: 품질 게이트
69
+ ## Phase 2: 품질 게이트 (5-Question Filter)
75
70
 
76
- 추출 항목을 검증하세요:
71
+ | # | 질문 | YES일 때 | NO일 때 |
72
+ |---|------|---------|---------|
73
+ | Q1 | Google에서 5분 안에 찾을 수 있는가? | 저장 안 함 | 통과 |
74
+ | Q2 | 이 코드베이스에만 해당하는가? | scope: project | scope: me |
75
+ | Q3 | WHY가 포함되어 있는가? | 통과 | WHY 추가 후 저장 |
76
+ | Q4 | 컨텍스트 없이 이해 가능한가? | 통과 | 컨텍스트 추가 |
77
+ | Q5 | 이미 compound에 있는가? | 기존 항목 업데이트 | 신규 저장 |
77
78
 
78
- 1. **재사용 가능한가?** 프로젝트에만 해당하는 것은 제외 (scope: project로 표시)
79
- 2. **구체적인가?** — "좋은 코드를 작성하자" 같은 일반론은 제외
80
- 3. **실행 가능한가?** — 다음에 적용할 수 있는 구체적 내용이 있는가?
81
- 4. **독성이 없는가?** — @ts-ignore, --force, 임시 우회 같은 패턴은 제외
79
+ 추가 거부: 일반론, 독성 패턴(@ts-ignore, --force), 단순 변경 세션
82
80
 
83
81
  ## Phase 3: 축적
84
82
 
85
- 추출한 각 인사이트를 CLI 명령어로 저장합니다:
86
-
87
83
  ```bash
88
- # 솔루션 (재사용 가능한 패턴)
89
- forgen compound --solution "제목" " 접근법을 사용했고, 언제 적용하는지 포함한 상세 설명"
84
+ # pattern
85
+ forgen compound --solution "{topic}-{approach}" "상세 설명 (WHY 포함)"
90
86
 
91
- # 트러블슈팅 (에러 → 원인 → 해결)
92
- forgen compound --solution "에러명-해결법" "에러 상황, 근본 원인, 해결 절차를 포함"
87
+ # troubleshoot
88
+ forgen compound --solution "{error}-{solution}" "에러 상황, 원인, 해결 절차"
93
89
 
94
- # 의사결정 (선택의 근거)
95
- forgen compound --solution "기술선택-이유" "어떤 대안이 있었고 왜 이것을 선택했는지"
90
+ # decision
91
+ forgen compound --solution "adr-{topic}" "대안, 선택 이유, 트레이드오프"
96
92
 
97
- # 안티패턴 (피해야 할 것)
98
- forgen compound --solution "피해야-할-패턴" " 접근이 실패했고 대신 무엇을 해야 하는지"
93
+ # anti-pattern
94
+ forgen compound --solution "avoid-{pattern}" "실패 원인, 대체 접근법"
99
95
  ```
100
96
 
101
- **중요**:
102
- - 각 솔루션의 내용에 **"왜"**를 반드시 포함하세요
103
- - 제목은 구체적으로 (예: "React-useCallback-memo-최적화" O, "성능개선" X)
104
- - 내용은 다른 세션에서 이 솔루션을 보고 바로 적용할 수 있을 정도로 상세하게
105
- - 단순 타이포/1줄 수정 세션이면 → "복리화 불필요" 후 종료
106
-
107
97
  ## Phase 4: 리포트
108
98
 
109
99
  ```
110
- 📊 세션 복리화 완료
111
- ├─ 추출: N개 솔루션
112
- ├─ 유형: pattern X개, troubleshoot Y개, decision Z개
113
- └─ 저장: ~/.forgen/me/solutions/
100
+ 세션 복리화 완료
101
+ ─────────────────────────────────
102
+ 추출: N개 솔루션
103
+ 유형: pattern X개, troubleshoot Y개, decision Z개, anti-pattern W개
104
+ 저장: ~/.forgen/me/solutions/
114
105
  ```
106
+
107
+ ## Phase 5: Health Dashboard
108
+
109
+ ```
110
+ COMPOUND HEALTH
111
+ ════════════════════════════════════════════════════
112
+ Total: {N} solutions
113
+ |- mature (3+ hits): {N} ({N}%)
114
+ |- verified (2 hits): {N} ({N}%)
115
+ |- candidate (1 hit): {N} ({N}%)
116
+ +- experiment (0 hits): {N} ({N}%) <- cleanup candidates
117
+
118
+ Hit Rate (7d): {N}%
119
+ Top Patterns: "{name}" ({N} hits), "{name}" ({N} hits)
120
+ Stale (30d+ unused): {N} -> /learn prune
121
+
122
+ Category: pattern {N} | troubleshoot {N} | decision {N} | anti-pattern {N}
123
+ Trend: {analysis}
124
+ ════════════════════════════════════════════════════
125
+ ```
126
+
127
+ ### 건강 지표
128
+
129
+ | 지표 | 건강 | 주의 | 위험 |
130
+ |------|------|------|------|
131
+ | mature 비율 | > 30% | 15-30% | < 15% |
132
+ | experiment 비율 | < 20% | 20-40% | > 40% |
133
+ | hit rate (7d) | > 30% | 15-30% | < 15% |
134
+ | stale 수 | < 5 | 5-15 | > 15 |
115
135
  </Steps>
116
136
 
137
+ <Failure_Modes>
138
+ NEVER: **일반론 추출**: 추상적 교훈 저장 금지. Q1에서 걸러집니다.
139
+
140
+ NEVER: **프로젝트 전용을 범용으로**: scope: project 명시 필수.
141
+
142
+ NEVER: **중복 추출**: Phase 0에서 기존 항목 확인 필수. Q5에서 걸러집니다.
143
+
144
+ NEVER: **"왜" 없는 추출**: Q3에서 걸러집니다.
145
+
146
+ NEVER: **단순 세션 억지 추출**: "복리화 불필요"로 종료.
147
+
148
+ NEVER: **카테고리 무시**: 4개 카테고리별 제목 형식 준수.
149
+
150
+ NEVER: **Health Dashboard 건너뛰기**: 추출 후 반드시 Phase 5 실행.
151
+ </Failure_Modes>
152
+
153
+ <Policy>
154
+ - Phase 0 중복 방지 검색을 반드시 먼저 실행
155
+ - 4개 카테고리로 분류 (pattern, troubleshoot, decision, anti-pattern)
156
+ - 5-Question Filter 모든 항목에 적용
157
+ - "왜" 없는 항목 저장 금지
158
+ - 카테고리별 제목 형식 준수
159
+ - 기존 항목 중복 시 업데이트 제안
160
+ - 단순 세션이면 "복리화 불필요"로 종료
161
+ - 추출 후 Health Dashboard 표시
162
+ </Policy>
163
+
164
+ <Arguments>
165
+ ## 사용법
166
+ `compound {선택적 설명}`
167
+
168
+ ### 예시
169
+ - `compound` — 전체 세션 분석
170
+ - `compound 인증 구현 관련` — 특정 주제 집중
171
+
172
+ ### 인자
173
+ - 선택적: 특정 주제 키워드. 생략 시 전체 세션 분석.
174
+ </Arguments>
175
+
117
176
  $ARGUMENTS