@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
package/README.ko.md ADDED
@@ -0,0 +1,469 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/wooo-jin/forgen/main/assets/banner.png" alt="Forgen" width="100%"/>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <strong>Claude Code 개인화 하네스.</strong><br/>
7
+ <strong>쓸수록 나를 더 잘 아는 Claude.</strong>
8
+ </p>
9
+
10
+ <p align="center">
11
+ <a href="https://www.npmjs.com/package//forgen"><img src="https://img.shields.io/npm/v//forgen.svg" alt="npm version"/></a>
12
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"/></a>
13
+ <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg" alt="Node.js >= 20"/></a>
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="#forgen를-쓰면-일어나는-일">동작 흐름</a> &middot;
18
+ <a href="#빠른-시작">빠른 시작</a> &middot;
19
+ <a href="#동작-방식">동작 방식</a> &middot;
20
+ <a href="#4축-개인화">4축 개인화</a> &middot;
21
+ <a href="#명령어">명령어</a> &middot;
22
+ <a href="#아키텍처">아키텍처</a> &middot;
23
+ <a href="#안전">안전</a>
24
+ </p>
25
+
26
+ <p align="center">
27
+ <a href="README.md">English</a> &middot;
28
+ 한국어 &middot;
29
+ <a href="README.ja.md">日本語</a> &middot;
30
+ <a href="README.zh.md">简体中文</a>
31
+ </p>
32
+
33
+ ---
34
+
35
+ ## 두 개발자. 같은 Claude. 완전히 다른 행동.
36
+
37
+ 개발자 A는 신중합니다. Claude가 모든 테스트를 돌리고, 이유를 설명하고, 현재 파일 밖의 것은 손대기 전에 물어봐야 합니다.
38
+
39
+ 개발자 B는 빠릅니다. Claude가 가정하고, 관련 파일까지 바로 고치고, 결과를 두 줄로 보고하면 됩니다.
40
+
41
+ forgen 없이는 두 개발자 모두 같은 범용 Claude를 받습니다. forgen를 쓰면, 각자 자기 방식대로 일하는 Claude를 받습니다.
42
+
43
+ ```
44
+ 개발자 A의 Claude: 개발자 B의 Claude:
45
+ "관련 이슈 3개를 발견했습니다. "로그인 + 관련 파일 2개 수정 완료.
46
+ 진행하기 전에 세션 핸들러도 테스트 통과. 리스크 1건: 세션
47
+ 함께 수정할까요? 각각의 분석은 타임아웃 미커버. 끝."
48
+ 다음과 같습니다..."
49
+ ```
50
+
51
+ forgen가 이것을 가능하게 합니다. 작업 스타일을 프로파일링하고, 교정에서 학습하고, Claude가 매 세션마다 따르는 개인화 규칙을 렌더링합니다.
52
+
53
+ ---
54
+
55
+ ## forgen를 쓰면 일어나는 일
56
+
57
+ ### 첫 실행 (1회, 약 1분)
58
+
59
+ ```bash
60
+ npm install -g /forgen
61
+ forgen
62
+ ```
63
+
64
+ 첫 실행을 감지하면 4문항 온보딩이 시작됩니다. 각 질문은 구체적인 시나리오입니다:
65
+
66
+ ```
67
+ 질문 1: 애매한 구현 요청
68
+
69
+ "로그인 기능을 개선해줘"라는 요청을 받았습니다.
70
+ 요구사항이 명확하지 않고, 인접 모듈에 영향을 줄 수 있습니다.
71
+
72
+ A) 먼저 요구사항/범위를 확인하고, 범위 확대 가능성이 있으면 물어본다
73
+ B) 같은 흐름 안이면 진행하되, 큰 범위 확대가 보이면 확인한다
74
+ C) 합리적으로 가정하고 인접 파일까지 바로 수정한다
75
+
76
+ 선택 (A/B/C):
77
+ ```
78
+
79
+ 4개의 질문. 4개의 축 측정. 각 축에 팩과 세밀한 facet이 포함된 프로필이 생성됩니다. 개인화된 규칙 파일이 렌더링되어 Claude가 읽는 위치에 배치됩니다.
80
+
81
+ ### 매 세션 (일상 사용)
82
+
83
+ ```bash
84
+ forgen # `claude` 대신 사용
85
+ ```
86
+
87
+ 내부 동작:
88
+
89
+ 1. 하네스가 `~/.forgen/me/forge-profile.json`에서 프로필 로드
90
+ 2. 프리셋 매니저가 세션 합성: 글로벌 안전 규칙 + 팩 기본 규칙 + 개인 오버레이 + 세션 오버레이
91
+ 3. 규칙 렌더러가 모든 것을 자연어로 변환하여 `~/.claude/rules/v1-rules.md`에 기록
92
+ 4. Claude Code가 시작되어 해당 규칙을 행동 지침으로 읽음
93
+ 5. 안전 훅 활성화: 위험 명령 차단, 시크릿 필터링, 프롬프트 인젝션 탐지
94
+
95
+ ### Claude를 교정할 때
96
+
97
+ 당신이 말합니다: "내가 요청하지 않은 파일은 리팩토링하지 마."
98
+
99
+ Claude가 `correction-record` MCP 도구를 호출합니다. 교정은 축 분류(`judgment_philosophy`), 종류(`avoid-this`), 신뢰도 점수가 포함된 구조화된 evidence로 저장됩니다. 현재 세션에 즉시 효과를 주는 임시 규칙이 생성됩니다.
100
+
101
+ ### 세션 사이 (자동)
102
+
103
+ 세션이 끝나면 auto-compound가 추출합니다:
104
+ - 솔루션 (맥락이 포함된 재사용 가능한 패턴)
105
+ - 행동 관찰 (당신의 작업 방식)
106
+ - 세션 학습 요약
107
+
108
+ 축적된 evidence를 기반으로 facet이 미세 조정됩니다. 교정이 지속적으로 현재 팩과 다른 방향을 가리키면, 3세션 후 mismatch 감지가 트리거되어 팩 변경을 추천합니다.
109
+
110
+ ### 다음 세션
111
+
112
+ 교정이 반영된 업데이트 규칙이 렌더링됩니다. Compound 지식이 MCP를 통해 검색 가능합니다. Claude가 *당신의* Claude가 되어갑니다.
113
+
114
+ ---
115
+
116
+ ## 빠른 시작
117
+
118
+ ```bash
119
+ # 1. 설치
120
+ npm install -g /forgen
121
+
122
+ # 2. 첫 실행 — 4문항 온보딩 (영어/한국어 선택)
123
+ forgen
124
+
125
+ # 3. 이후 매일
126
+ forgen
127
+ ```
128
+
129
+ ### 사전 요구사항
130
+
131
+ - **Node.js** >= 20 (SQLite 세션 검색은 >= 22 권장)
132
+ - **Claude Code** 설치 및 인증 (`npm i -g @anthropic-ai/claude-code`)
133
+
134
+ ---
135
+
136
+ ## 동작 방식
137
+
138
+ ### 학습 루프
139
+
140
+ ```
141
+ +-------------------+
142
+ | 온보딩 |
143
+ | (4문항) |
144
+ +--------+----------+
145
+ |
146
+ v
147
+ +-------------------------------+
148
+ | 프로필 생성 |
149
+ | 4축 x 팩 + facet + trust |
150
+ +-------------------------------+
151
+ |
152
+ +-----------------------+------------------------+
153
+ | |
154
+ v |
155
+ +------------------+ |
156
+ | 규칙 렌더링 | ~/.claude/rules/v1-rules.md |
157
+ | Claude 형식으로 | |
158
+ +--------+---------+ |
159
+ | |
160
+ v |
161
+ +------------------+ |
162
+ | 세션 진행 | Claude가 개인화 규칙을 따름 |
163
+ | 교정하면 | ---> correction-record MCP |
164
+ | Claude 학습 | Evidence 저장 |
165
+ +--------+---------+ 임시 규칙 생성 |
166
+ | |
167
+ v |
168
+ +------------------+ |
169
+ | 세션 종료 | auto-compound 추출: |
170
+ | | 솔루션 + 관찰 + 요약 |
171
+ +--------+---------+ |
172
+ | |
173
+ v |
174
+ +------------------+ |
175
+ | Facet 조정 | 프로필 미세 조정 |
176
+ | Mismatch 확인 | 최근 3세션 rolling 분석 |
177
+ +--------+---------+ |
178
+ | |
179
+ +------------------------------------------------+
180
+ (다음 세션: 업데이트된 규칙)
181
+ ```
182
+
183
+ ### Compound 지식
184
+
185
+ 지식은 세션을 거치며 축적되고, 검색 가능해집니다:
186
+
187
+ | 유형 | 출처 | Claude 활용 방법 |
188
+ |------|------|-----------------|
189
+ | **솔루션** | 세션에서 추출 | MCP를 통한 `compound-search` |
190
+ | **스킬** | 검증된 솔루션에서 승격 | 슬래시 커맨드로 자동 로드 |
191
+ | **행동 패턴** | 3회 이상 관찰 시 자동 감지 | `forge-behavioral.md`에 적용 |
192
+ | **Evidence** | 교정 + 관찰 | facet 조정의 근거 |
193
+
194
+ ---
195
+
196
+ ## 4축 개인화
197
+
198
+ 각 축에는 3개의 팩이 있습니다. 각 팩에는 세밀한 facet(0-1 수치)이 포함되어 있으며, 교정에 따라 시간이 지나면서 미세 조정됩니다.
199
+
200
+ ### 품질/안전
201
+
202
+ | 팩 | Claude의 행동 |
203
+ |----|-------------|
204
+ | **보수형** | 완료 보고 전 모든 테스트를 실행. 타입 체크. 엣지 케이스 검증. 모든 검사가 통과해야 "완료"라고 말함. |
205
+ | **균형형** | 핵심 검증을 실행하고, 남은 리스크를 요약. 철저함과 속도의 균형. |
206
+ | **속도형** | 빠른 smoke 테스트. 결과와 리스크를 즉시 보고. 전달을 우선. |
207
+
208
+ ### 자율성
209
+
210
+ | 팩 | Claude의 행동 |
211
+ |----|-------------|
212
+ | **확인 우선형** | 인접 파일을 수정하기 전 확인. 애매한 요구사항 명확화. 범위 확장에 승인 요청. |
213
+ | **균형형** | 같은 흐름 안이면 진행. 큰 범위 확대가 보이면 확인. |
214
+ | **자율 실행형** | 합리적으로 가정. 관련 파일을 바로 수정. 완료 후 무엇을 했는지 보고. |
215
+
216
+ ### 판단 철학
217
+
218
+ | 팩 | Claude의 행동 |
219
+ |----|-------------|
220
+ | **최소변경형** | 기존 구조 유지. 동작하는 코드를 리팩토링하지 않음. 수정 범위를 최소한으로 유지. |
221
+ | **균형형** | 현재 작업에 집중. 명확한 개선 기회가 보이면 제안. |
222
+ | **구조적접근형** | 반복 패턴이나 기술 부채를 발견하면 적극적으로 구조 개선 제안. 추상화와 재사용 설계 선호. 아키텍처 일관성 유지. |
223
+
224
+ ### 커뮤니케이션
225
+
226
+ | 팩 | Claude의 행동 |
227
+ |----|-------------|
228
+ | **간결형** | 코드와 결과만. 선제적으로 설명하지 않음. 물어볼 때만 부연. |
229
+ | **균형형** | 핵심 변경과 이유를 요약. 필요하면 추가 질문 유도. |
230
+ | **상세형** | 무엇을, 왜, 영향 범위, 대안까지 설명. 교육적 맥락 제공. 보고서를 섹션별로 구조화. |
231
+
232
+ ---
233
+
234
+ ## 렌더링된 규칙의 실제 모습
235
+
236
+ forgen가 세션을 합성하면 Claude가 읽는 `v1-rules.md` 파일을 렌더링합니다. 서로 다른 프로필이 완전히 다른 Claude 행동을 만드는 두 가지 실제 예시입니다.
237
+
238
+ ### 예시 1: 보수형 + 확인 우선형 + 구조적접근형 + 상세형
239
+
240
+ ```markdown
241
+ [보수형 quality / 확인 우선형 autonomy / 구조적접근형 judgment / 상세형 communication]
242
+
243
+ ## Must Not
244
+ - .env, credentials, API 키를 절대 커밋하거나 노출하지 마라.
245
+ - 파괴적 명령(rm -rf, DROP, force-push)은 사용자 확인 없이 실행하지 마라.
246
+
247
+ ## Working Defaults
248
+ - Trust: 위험 우회 비활성. 파괴적 명령, 민감 경로 접근 시 항상 확인.
249
+ - 반복되는 패턴이나 기술 부채를 발견하면 적극적으로 구조 개선을 제안하라.
250
+ - 추상화와 재사용 가능한 설계를 선호하라. 단, 과도한 추상화는 피한다.
251
+ - 변경 시 전체 아키텍처 관점에서 일관성을 유지하라.
252
+
253
+ ## When To Ask
254
+ - 애매한 작업은 시작 전 요구사항을 명확히 하라.
255
+ - 명시적으로 요청된 범위 밖의 파일을 수정하기 전에 확인하라.
256
+
257
+ ## How To Validate
258
+ - 완료 보고 전 관련 테스트, 타입 체크, 핵심 검증을 모두 완료하라.
259
+ - 모든 검사가 통과하기 전에는 "완료"라고 하지 마라.
260
+
261
+ ## How To Report
262
+ - 변경 이유, 대안 검토, 영향 범위를 함께 설명하라.
263
+ - 교육적 맥락을 제공하라 — 왜 이 접근이 좋은지, 다른 방법과 비교.
264
+ - 보고는 구조화하라 (변경 사항, 이유, 영향, 다음 단계).
265
+
266
+ ## Evidence Collection
267
+ - 사용자가 행동을 교정하면("하지마", "그렇게 말고", "앞으로는 이렇게") 반드시 correction-record MCP 도구를 호출하여 evidence로 기록하라.
268
+ - kind 선택: fix-now(즉시 수정), prefer-from-now(앞으로 이렇게), avoid-this(하지 마라)
269
+ - axis_hint: quality_safety(품질/검증), autonomy(자율/확인), judgment_philosophy(변경 접근법), communication_style(설명 스타일)
270
+ - 교정이 아닌 일반 피드백은 기록하지 않는다.
271
+ ```
272
+
273
+ ### 예시 2: 속도형 + 자율 실행형 + 최소변경형 + 간결형
274
+
275
+ ```markdown
276
+ [속도형 quality / 자율 실행형 autonomy / 최소변경형 judgment / 간결형 communication]
277
+
278
+ ## Must Not
279
+ - .env, credentials, API 키를 절대 커밋하거나 노출하지 마라.
280
+ - 파괴적 명령(rm -rf, DROP, force-push)은 사용자 확인 없이 실행하지 마라.
281
+
282
+ ## Working Defaults
283
+ - Trust: 런타임 마찰 최소화. 명시적 금지와 파괴적 명령 외에는 자유 실행.
284
+ - 기존 코드 구조를 최대한 유지하라. 동작하는 코드를 불필요하게 리팩토링하지 마라.
285
+ - 수정 범위를 최소한으로 유지하라. 인접 파일 변경은 꼭 필요한 경우에만.
286
+ - 변경 전 근거(테스트, 에러 로그)를 먼저 확보하라.
287
+
288
+ ## How To Validate
289
+ - 최소 smoke만 보고 빠르게 결과와 리스크만 보고하라.
290
+
291
+ ## How To Report
292
+ - 응답은 짧고 핵심만. 코드와 결과 위주로 보고하라.
293
+ - 부연 설명은 물어볼 때만. 선제적으로 길게 설명하지 마라.
294
+
295
+ ## Evidence Collection
296
+ - 사용자가 행동을 교정하면("하지마", "그렇게 말고", "앞으로는 이렇게") 반드시 correction-record MCP 도구를 호출하여 evidence로 기록하라.
297
+ - kind 선택: fix-now(즉시 수정), prefer-from-now(앞으로 이렇게), avoid-this(하지 마라)
298
+ - axis_hint: quality_safety(품질/검증), autonomy(자율/확인), judgment_philosophy(변경 접근법), communication_style(설명 스타일)
299
+ - 교정이 아닌 일반 피드백은 기록하지 않는다.
300
+ ```
301
+
302
+ 같은 Claude. 같은 코드베이스. 완전히 다른 작업 스타일. 1분짜리 온보딩이 만든 차이입니다.
303
+
304
+ ---
305
+
306
+ ## 명령어
307
+
308
+ ### 핵심
309
+
310
+ ```bash
311
+ forgen # 개인화된 Claude Code 시작
312
+ forgen "로그인 버그 수정해줘" # 프롬프트와 함께 시작
313
+ forgen --resume # 이전 세션 이어서
314
+ ```
315
+
316
+ ### 개인화
317
+
318
+ ```bash
319
+ forgen onboarding # 4문항 온보딩 실행
320
+ forgen forge --profile # 현재 프로필 확인
321
+ forgen forge --reset soft # 프로필 초기화 (soft / learning / full)
322
+ forgen forge --export # 프로필 내보내기
323
+ ```
324
+
325
+ ### 상태 확인
326
+
327
+ ```bash
328
+ forgen inspect profile # 4축 프로필 + 팩 + facet
329
+ forgen inspect rules # 활성/비활성 규칙
330
+ forgen inspect evidence # 교정 기록
331
+ forgen inspect session # 현재 세션 상태
332
+ forgen me # 개인 대시보드 (inspect profile 단축키)
333
+ ```
334
+
335
+ ### 지식 관리
336
+
337
+ ```bash
338
+ forgen compound # 축적된 지식 미리보기
339
+ forgen compound --save # 자동 분석된 패턴 저장
340
+ forgen skill promote <이름> # 검증된 솔루션을 스킬로 승격
341
+ forgen skill list # 승격된 스킬 목록
342
+ ```
343
+
344
+ ### 시스템
345
+
346
+ ```bash
347
+ forgen init # 프로젝트 초기화
348
+ forgen doctor # 시스템 진단
349
+ forgen config hooks # 훅 상태 확인
350
+ forgen config hooks --regenerate # 훅 재생성
351
+ forgen mcp # MCP 서버 관리
352
+ forgen uninstall # forgen 깔끔하게 제거
353
+ ```
354
+
355
+ ### MCP 도구 (세션 중 Claude가 사용)
356
+
357
+ | 도구 | 용도 |
358
+ |------|------|
359
+ | `compound-search` | 축적된 지식을 쿼리로 검색 |
360
+ | `compound-read` | 솔루션 전문 읽기 |
361
+ | `compound-list` | 필터가 있는 솔루션 목록 |
362
+ | `compound-stats` | 통계 요약 |
363
+ | `session-search` | 이전 세션 대화 검색 (SQLite FTS5, Node.js 22+) |
364
+ | `correction-record` | 사용자 교정을 구조화된 evidence로 기록 |
365
+
366
+ ---
367
+
368
+ ## 아키텍처
369
+
370
+ ```
371
+ ~/.forgen/ 개인화 홈
372
+ |-- me/
373
+ | |-- forge-profile.json 4축 프로필 (팩 + facet + trust)
374
+ | |-- rules/ 규칙 저장소 (규칙별 JSON 파일)
375
+ | |-- behavior/ Evidence 저장소 (교정 + 관찰)
376
+ | |-- recommendations/ 팩 추천 (온보딩 + mismatch)
377
+ | +-- solutions/ Compound 지식
378
+ |-- state/
379
+ | |-- sessions/ 세션 상태 스냅샷
380
+ | +-- raw-logs/ Raw 세션 로그 (7일 TTL 자동 정리)
381
+ +-- config.json 글로벌 설정 (locale, trust, packs)
382
+
383
+ ~/.claude/
384
+ |-- settings.json 훅 + 환경변수 (하네스가 주입)
385
+ |-- rules/
386
+ | |-- forge-behavioral.md 학습된 행동 패턴 (자동 생성)
387
+ | +-- v1-rules.md 렌더링된 개인화 규칙 (세션별)
388
+ |-- commands/forgen/ 슬래시 커맨드 (승격된 스킬)
389
+ +-- .claude.json MCP 서버 등록
390
+
391
+ ~/.compound/ 레거시 compound 홈 (훅/MCP가 아직 참조)
392
+ |-- me/
393
+ | |-- solutions/ 축적된 compound 지식
394
+ | |-- behavior/ 행동 패턴
395
+ | +-- skills/ 승격된 스킬
396
+ +-- sessions.db SQLite 세션 이력 (Node.js 22+)
397
+ ```
398
+
399
+ ### 데이터 흐름
400
+
401
+ ```
402
+ forge-profile.json 개인화의 단일 진실 원천
403
+ |
404
+ v
405
+ preset-manager.ts 세션 상태 합성:
406
+ 글로벌 안전 규칙 hard constraint (항상 활성)
407
+ + 기본 팩 규칙 프로필 팩에서
408
+ + 개인 오버레이 교정 생성 규칙에서
409
+ + 세션 오버레이 현재 세션 임시 규칙
410
+ + 런타임 능력 감지 trust 정책 조정
411
+ |
412
+ v
413
+ rule-renderer.ts Rule[]을 자연어로 변환:
414
+ 필터 (active만) 파이프라인: filter -> dedupe -> group ->
415
+ dedupe (render_key) order -> template -> budget (4000자)
416
+ 카테고리별 그룹
417
+ 순서: Must Not -> Working Defaults -> When To Ask -> How To Validate -> How To Report
418
+ |
419
+ v
420
+ ~/.claude/rules/v1-rules.md Claude가 실제로 읽는 파일
421
+ ```
422
+
423
+ ---
424
+
425
+ ## 안전
426
+
427
+ 안전 훅은 `settings.json`에 자동 등록되며, Claude의 모든 도구 호출 시 실행됩니다.
428
+
429
+ | 훅 | 트리거 | 기능 |
430
+ |----|--------|------|
431
+ | **pre-tool-use** | 모든 도구 실행 전 | `rm -rf`, `curl\|sh`, `--force` push, 위험 패턴 차단 |
432
+ | **db-guard** | SQL 연산 | `DROP TABLE`, `WHERE` 없는 `DELETE`, `TRUNCATE` 차단 |
433
+ | **secret-filter** | 파일 쓰기, 출력 | API 키, 토큰, 자격 증명 노출 시 경고 |
434
+ | **slop-detector** | 코드 생성 후 | TODO 잔재, `eslint-disable`, `as any`, `@ts-ignore` 감지 |
435
+ | **prompt-injection-filter** | 모든 입력 | 패턴 + 휴리스틱 기반 프롬프트 인젝션 차단 |
436
+ | **context-guard** | 세션 중 | 컨텍스트 윈도우 한계 접근 시 경고 |
437
+ | **rate-limiter** | MCP 도구 호출 | 과도한 MCP 도구 호출 방지 |
438
+
439
+ 안전 규칙은 **hard constraint**입니다 -- 팩 선택이나 교정으로 재정의할 수 없습니다. 렌더링된 규칙의 "Must Not" 섹션은 프로필과 무관하게 항상 존재합니다.
440
+
441
+ ---
442
+
443
+ ## 핵심 설계 원칙
444
+
445
+ - **4축 프로필, 선호도 토글이 아님.** 각 축에는 팩(대분류)과 facet(0-1 수치의 세밀한 조정)이 있습니다. 팩은 안정적 행동을 제공하고, facet은 전체 재분류 없이 미세 조정을 가능하게 합니다.
446
+
447
+ - **Evidence 기반 학습, regex 매칭이 아님.** 교정은 구조화된 데이터(`CorrectionRequest`: kind, axis_hint, message)입니다. Claude가 분류하고, 알고리즘이 적용합니다. 사용자 입력에 대한 패턴 매칭이 없습니다.
448
+
449
+ - **Pack + overlay 모델.** 기본 팩이 안정적 기본값을 제공합니다. 교정에서 생성된 개인 오버레이가 위에 쌓입니다. 세션 오버레이는 임시 규칙입니다. 충돌 해소: 세션 > 개인 > 팩 (글로벌 안전은 항상 hard constraint).
450
+
451
+ - **자연어로 렌더링된 규칙.** `v1-rules.md` 파일에는 설정이 아닌 한국어(또는 영어) 문장이 담깁니다. Claude는 "동작하는 코드를 불필요하게 리팩토링하지 마라"같은 지침을 읽습니다 -- 사람 멘토가 가이드를 주는 것과 같은 방식입니다.
452
+
453
+ - **Mismatch 감지.** 최근 3세션 rolling 분석으로 교정이 지속적으로 현재 팩과 다른 방향을 가리키는지 확인합니다. 감지되면 조용히 drift하지 않고, 팩 재추천을 제안합니다.
454
+
455
+ - **런타임 trust 계산.** 원하는 trust 정책이 Claude Code의 실제 런타임 권한 모드와 조율됩니다. Claude Code가 `--dangerously-skip-permissions`로 실행되면, forgen가 effective trust 수준을 그에 맞게 조정합니다.
456
+
457
+ - **국제화.** 영어와 한국어 완전 지원. 온보딩 시 언어를 선택하면 온보딩 질문, 렌더링된 규칙, CLI 출력 전체에 적용됩니다.
458
+
459
+ ---
460
+
461
+ ## 공존
462
+
463
+ forgen는 설치 시 다른 Claude Code 플러그인(oh-my-claudecode, superpowers, claude-mem)을 감지하고 겹치는 훅을 비활성화합니다. 핵심 안전 훅과 compound 훅은 항상 활성 상태를 유지합니다.
464
+
465
+ ---
466
+
467
+ ## 라이선스
468
+
469
+ MIT