@wooojin/forgen 0.4.13 → 0.5.5

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 (166) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +261 -0
  3. package/README.ja.md +16 -12
  4. package/README.ko.md +12 -8
  5. package/README.md +90 -27
  6. package/README.zh.md +16 -12
  7. package/assets/claude/commands/forge-loop.md +7 -1
  8. package/assets/claude/commands/ship.md +18 -1
  9. package/assets/opencode/forgen.ts +52 -0
  10. package/assets/shared/hook-registry.json +210 -22
  11. package/dist/checks/_shared/meta-guard-dispatch.d.ts +7 -0
  12. package/dist/checks/_shared/meta-guard-dispatch.js +12 -2
  13. package/dist/checks/_shared/model-profile.d.ts +25 -0
  14. package/dist/checks/_shared/model-profile.js +63 -0
  15. package/dist/cli.js +99 -153
  16. package/dist/core/auto-compound-runner.d.ts +0 -11
  17. package/dist/core/auto-compound-runner.js +199 -92
  18. package/dist/core/changelog-cli.d.ts +4 -1
  19. package/dist/core/changelog-cli.js +8 -7
  20. package/dist/core/compound-consent.d.ts +15 -0
  21. package/dist/core/compound-consent.js +48 -0
  22. package/dist/core/compound-sweep-cli.d.ts +60 -0
  23. package/dist/core/compound-sweep-cli.js +374 -0
  24. package/dist/core/config-injector.d.ts +16 -1
  25. package/dist/core/config-injector.js +47 -28
  26. package/dist/core/dashboard-cli.js +40 -16
  27. package/dist/core/dashboard.d.ts +3 -4
  28. package/dist/core/dashboard.js +15 -34
  29. package/dist/core/dev-cli.d.ts +13 -0
  30. package/dist/core/dev-cli.js +70 -0
  31. package/dist/core/doctor.d.ts +16 -5
  32. package/dist/core/doctor.js +190 -176
  33. package/dist/core/drift-score.d.ts +2 -0
  34. package/dist/core/drift-score.js +9 -1
  35. package/dist/core/harness.js +115 -43
  36. package/dist/core/health-cli.d.ts +2 -0
  37. package/dist/core/health-cli.js +6 -1
  38. package/dist/core/host-detect.d.ts +3 -1
  39. package/dist/core/host-detect.js +26 -1
  40. package/dist/core/migrate-cli.js +15 -0
  41. package/dist/core/migrate-evidence-host.d.ts +2 -1
  42. package/dist/core/migrate-tenetx.d.ts +50 -0
  43. package/dist/core/migrate-tenetx.js +262 -0
  44. package/dist/core/probe-workflow-cli.d.ts +3 -3
  45. package/dist/core/probe-workflow-cli.js +13 -13
  46. package/dist/core/recall-cli.js +1 -1
  47. package/dist/core/regress-map-cli.js +1 -1
  48. package/dist/core/rendered-rules-manifest.d.ts +29 -0
  49. package/dist/core/rendered-rules-manifest.js +60 -0
  50. package/dist/core/session-store.js +14 -3
  51. package/dist/core/settings-injector.d.ts +3 -0
  52. package/dist/core/settings-injector.js +12 -16
  53. package/dist/core/spawn.d.ts +37 -1
  54. package/dist/core/spawn.js +116 -9
  55. package/dist/core/state-gc.js +1 -0
  56. package/dist/core/status-cli.d.ts +20 -0
  57. package/dist/core/status-cli.js +100 -0
  58. package/dist/core/statusline-cli.d.ts +7 -0
  59. package/dist/core/statusline-cli.js +63 -19
  60. package/dist/core/transcript-summary.d.ts +18 -0
  61. package/dist/core/transcript-summary.js +81 -0
  62. package/dist/core/trust-layer-intent.d.ts +21 -1
  63. package/dist/core/trust-layer-intent.js +7 -0
  64. package/dist/core/types.d.ts +3 -2
  65. package/dist/core/uninstall.js +12 -0
  66. package/dist/core/usage-telemetry.d.ts +7 -1
  67. package/dist/core/usage-telemetry.js +7 -9
  68. package/dist/core/v1-bootstrap.js +1 -1
  69. package/dist/core/watch-cli.js +1 -1
  70. package/dist/engine/compound-extractor.js +10 -0
  71. package/dist/engine/compound-loop.js +55 -7
  72. package/dist/engine/compound-share.d.ts +85 -0
  73. package/dist/engine/compound-share.js +606 -0
  74. package/dist/engine/correction-cluster-runner.d.ts +38 -0
  75. package/dist/engine/correction-cluster-runner.js +188 -0
  76. package/dist/engine/correction-clustering.d.ts +80 -0
  77. package/dist/engine/correction-clustering.js +167 -0
  78. package/dist/engine/enforce-classifier.d.ts +10 -1
  79. package/dist/engine/enforce-classifier.js +111 -22
  80. package/dist/engine/extraction-session.js +10 -3
  81. package/dist/engine/private-filter.d.ts +36 -0
  82. package/dist/engine/private-filter.js +100 -0
  83. package/dist/engine/ranking-pipeline.js +4 -2
  84. package/dist/engine/relevance-gate.d.ts +12 -0
  85. package/dist/engine/relevance-gate.js +12 -0
  86. package/dist/engine/roi-demotion.d.ts +79 -0
  87. package/dist/engine/roi-demotion.js +159 -0
  88. package/dist/engine/solution-format.d.ts +1 -0
  89. package/dist/engine/solution-format.js +26 -0
  90. package/dist/engine/solution-matcher.js +10 -1
  91. package/dist/fgx.js +7 -6
  92. package/dist/forge/cli.js +8 -2
  93. package/dist/hooks/compound-reflection.js +6 -1
  94. package/dist/hooks/context-guard.d.ts +16 -1
  95. package/dist/hooks/context-guard.js +99 -49
  96. package/dist/hooks/hook-config.js +5 -0
  97. package/dist/hooks/hook-registry.d.ts +6 -1
  98. package/dist/hooks/hooks-generator.js +3 -0
  99. package/dist/hooks/post-tool-use.js +2 -3
  100. package/dist/hooks/pre-compact.js +14 -0
  101. package/dist/hooks/pre-tool-use.js +5 -1
  102. package/dist/hooks/session-end.d.ts +34 -0
  103. package/dist/hooks/session-end.js +100 -0
  104. package/dist/hooks/session-recovery.js +18 -1
  105. package/dist/hooks/shared/hook-timing.js +6 -1
  106. package/dist/hooks/shared/stop-triggers.d.ts +29 -2
  107. package/dist/hooks/shared/stop-triggers.js +35 -2
  108. package/dist/hooks/solution-injector.d.ts +28 -0
  109. package/dist/hooks/solution-injector.js +126 -28
  110. package/dist/hooks/stop-guard.js +5 -2
  111. package/dist/hooks/subagent-stop-guard.js +4 -1
  112. package/dist/host/capabilities-claude.js +1 -0
  113. package/dist/host/capabilities-codex.js +1 -0
  114. package/dist/host/capabilities-opencode.d.ts +26 -0
  115. package/dist/host/capabilities-opencode.js +78 -0
  116. package/dist/host/capabilities-registry.d.ts +7 -0
  117. package/dist/host/capabilities-registry.js +14 -0
  118. package/dist/host/codex-rules-context.d.ts +25 -0
  119. package/dist/host/codex-rules-context.js +62 -0
  120. package/dist/host/exec-host.d.ts +14 -3
  121. package/dist/host/exec-host.js +15 -2
  122. package/dist/host/host-binding.d.ts +27 -0
  123. package/dist/host/host-binding.js +11 -0
  124. package/dist/host/host-runtime.js +18 -0
  125. package/dist/host/install-codex.d.ts +66 -0
  126. package/dist/host/install-codex.js +293 -25
  127. package/dist/host/install-opencode.d.ts +38 -0
  128. package/dist/host/install-opencode.js +148 -0
  129. package/dist/host/install-orchestrator.d.ts +4 -1
  130. package/dist/host/install-orchestrator.js +30 -1
  131. package/dist/host/invoke-agent.d.ts +3 -2
  132. package/dist/host/invoke-agent.js +1 -0
  133. package/dist/host/opencode/context-cli.d.ts +15 -0
  134. package/dist/host/opencode/context-cli.js +25 -0
  135. package/dist/host/opencode/guard-cli.d.ts +13 -0
  136. package/dist/host/opencode/guard-cli.js +39 -0
  137. package/dist/host/opencode/plugin/forgen.d.ts +31 -0
  138. package/dist/host/opencode/plugin/forgen.js +60 -0
  139. package/dist/host/opencode/translate.d.ts +49 -0
  140. package/dist/host/opencode/translate.js +96 -0
  141. package/dist/host/parity-harness.d.ts +10 -2
  142. package/dist/host/parity-harness.js +7 -3
  143. package/dist/host/projection.d.ts +37 -3
  144. package/dist/host/projection.js +104 -42
  145. package/dist/mcp/tools.js +17 -4
  146. package/dist/store/evidence-store.d.ts +2 -6
  147. package/dist/store/evidence-store.js +164 -46
  148. package/dist/store/host-mismatch.d.ts +2 -1
  149. package/dist/store/host-mismatch.js +8 -8
  150. package/dist/store/profile-store.d.ts +3 -2
  151. package/dist/store/rule-store.d.ts +41 -0
  152. package/dist/store/rule-store.js +77 -2
  153. package/dist/store/types.d.ts +9 -2
  154. package/hooks/hooks.json +13 -1
  155. package/package.json +3 -2
  156. package/plugin.json +2 -2
  157. package/skills/architecture-decision/SKILL.md +18 -0
  158. package/skills/calibrate/SKILL.md +18 -0
  159. package/skills/code-review/SKILL.md +17 -0
  160. package/skills/compound/SKILL.md +17 -0
  161. package/skills/deep-interview/SKILL.md +7 -0
  162. package/skills/docker/SKILL.md +18 -0
  163. package/skills/forge-loop/SKILL.md +30 -1
  164. package/skills/learn/SKILL.md +15 -0
  165. package/skills/retro/SKILL.md +16 -0
  166. package/skills/ship/SKILL.md +36 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://claude.ai/schemas/claude-plugin.json",
3
3
  "name": "forgen",
4
- "version": "0.4.13",
4
+ "version": "0.5.5",
5
5
  "description": "Claude Code harness — the more you use Claude, the better it gets",
6
6
  "author": {
7
7
  "name": "jang-ujin",
package/CHANGELOG.md CHANGED
@@ -7,6 +7,267 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.5.5] — 2026-10-01 — Codex Stop 분기 복구 (Stop 트리거 auto-compound·finalizeSession)
11
+
12
+ ### Fixed
13
+ - `context-guard` 가 Stop 이벤트를 Claude 전용 `stop_hook_type` 필드로만 판별해, Codex 의 Stop 입력
14
+ (`hook_event_name:"Stop"` 만 있고 `stop_hook_type` 없음) 에서는 Stop 분기 전체가 건너뛰어졌다 →
15
+ Codex 세션은 `finalizeSession`, Stop 트리거 auto-compound(≥10 프롬프트), rate-limit 감지, 세션 종료
16
+ 안내가 전혀 돌지 않고 컴팩션 때만 학습 추출됐다. `hook_event_name === "Stop"` 을 `end_turn` 과 동치로
17
+ 인정. (0.5.4 실환경 검증 중 hook-timing 의 context-guard 가 Stop 시점에 `UserPromptSubmit` 로 기록되는
18
+ 것을 보고 발견.)
19
+
20
+ ### Verified
21
+ - vitest: Codex 형 Stop 입력으로 20-프롬프트 세션 종료 안내가 나오는 테스트 추가.
22
+ - 격리 Codex 세션: hook-timing 에 `context-guard … event:"Stop", rt:"codex"` 기록, Stop 훅 Completed.
23
+
24
+
25
+ ## [0.5.4] — 2026-10-01 — Codex 훅 출력 스키마 준수 (0.5.3 의 Stop 훅 Failed 회귀 수정)
26
+
27
+ ### Fixed — Codex 가 forgen Stop 훅 출력을 매 턴 "Failed" 로 버리던 회귀
28
+ - 0.5.3 의 사영(`projectCodexToClaude`)이 모든 출력에 `hookSpecificOutput.hookEventName` 을 붙였는데,
29
+ Codex 0.153.4 의 Stop/SubagentStop 출력 스키마는 `additionalProperties:false` 이고 `hookSpecificOutput`
30
+ 을 허용하지 않는다 → `parse_stop` 실패 → "hook returned invalid stop hook JSON output" → **Failed**
31
+ (실환경 `codex exec` 에서 `hook: Stop Failed` ×2 재현; 훅 자체는 exit 0 + 정상 JSON). 0.5.3 격리 검증은
32
+ 당시 사영이 stdin 의 `hook_event_name` 을 못 읽어 우연히 키를 안 붙인 상태라 통과했었다.
33
+ - 사영을 **이벤트별 allowlist** 로 재작성 (`CODEX_OUTPUT_SCHEMA`): universal 키 / `decision`·`reason` 허용
34
+ 이벤트 / `hookSpecificOutput` 허용 이벤트와 하위 키를 Codex 스키마 그대로 따르고, 절대 새 키를 만들지
35
+ 않는다. PostToolUse 에 PreToolUse 형 deny 가 오면 Codex 의 PostToolUse block 형으로 번역.
36
+ - 회귀 방지: `tests/fixtures/codex-hook-schemas/` 에 rust-v0.153.4 출력 스키마 11종을 vendoring 하고,
37
+ `tests/host/codex-output-schema.test.ts` 가 forgen 의 모든 응답 helper × 이벤트 조합을 사영 후 스키마로
38
+ 검증한다.
39
+
40
+ ### Verified
41
+ - 격리 Codex 세션: Stop 훅 3종(forgen 2 + 서드파티 1) 전부 `Completed`; `rm -rf` 응답 → `Stop Blocked` +
42
+ continuation 유지. 실환경 재설치 후 동일 확인 (아래 Install 절).
43
+ - vitest 전체, self-gate static/runtime/release.
44
+
45
+
46
+ ## [0.5.3] — 2026-10-01 — Codex 동등화 2차 (룰 주입·에이전트·훅 신뢰) + Stop block 사영 결함 수정 + 최신 호스트 갭 1차
47
+
48
+ 오너가 Codex 를 일상 호스트로 전환하면서 "Claude 와 동일한 forgen 경험" 을 코드·실세션 대조로
49
+ 감사. 훅/MCP/스킬은 동등했으나 **개인화 룰과 서브에이전트가 Codex 에 전달되지 않는** 구조적
50
+ 갭을 발견·수정. 결정 문서: docs/adr/ADR-014-codex-parity-rules-agents.md.
51
+
52
+ ### Added — ADR-014
53
+ - **D1 개인화 룰 주입 (Codex)**: `session-recovery` 가 `FORGEN_RUNTIME=codex` 일 때
54
+ `generateClaudeRuleFiles()` 산출(v1-rules / project-context / forge-behavioral / user-profile)을
55
+ Claude 와 동일 캡(`RULE_FILE_CAPS`)으로 `<forgen-rules host="codex">` 블록에 담아 SessionStart
56
+ additionalContext 로 주입. 컴팩션 후에는 두 호스트 모두 SessionStart 가 `source="compact"` 로 재발화
57
+ 하므로 같은 경로가 재주입 (별도 플래그 경로 없음). 새 모듈 `src/host/codex-rules-context.ts`.
58
+ - 설계 이유: hooks.json 을 바이트 동일하게 유지해야 Codex 의 훅 신뢰 기록이 유효 → 새 훅이
59
+ 아니라 기존 훅 내부 분기. AGENTS.md 파일 주입은 사용자 저장소에 개인 룰이 커밋될 위험.
60
+ - **D2 Codex 커스텀 에이전트**: `forgen install codex` 가 `assets/claude/agents/*.md` 14종을
61
+ `~/.codex/agents/ch-<name>.toml` 로 생성 (공식 스키마 name/description/developer_instructions +
62
+ model_reasoning_effort/sandbox_mode 만 사용; `tools`/`disallowedTools` 양쪽에서 읽기전용 판정).
63
+ config.toml 에 `[features] multi_agent = true` 가 없으면 install 출력에 ⚠ 안내. Claude 설치명(ch-*)과 동일해 스킬 본문의
64
+ `ch-planner → ch-executor → ch-verifier` 참조가 Codex 에서도 해석됨. `# forgen-managed` 마커로
65
+ idempotent, 사용자 toml 보존.
66
+ - **D3 스킬 Codex 적응**: 설치 시 `$ARGUMENTS`(Codex 미지원 변수) 자연어 치환 + "Codex host note"
67
+ (ch-* 에이전트 위치, spawn 불가 시 `invoke-agent` MCP 대체) 부착.
68
+ - **D4 훅 신뢰 감사**: `auditCodexHookTrust()` 가 hooks.json forgen 엔트리 vs config.toml
69
+ `[hooks.state."<hooks.json>:<event>:<i>:<j>"]` 를 대조 (Codex 미지원 이벤트 PostToolUseFailure 는
70
+ `ignoredByCodex` 로 분리). `forgen install codex` 출력과 `forgen doctor` 의 새 `[Codex Hooks]`
71
+ 섹션에 "N/M trusted, 미승인 시 codex 안에서 `/hooks`" 안내. trusted_hash 를
72
+ forgen 이 쓰지 않음(신뢰 모델 우회 금지).
73
+ - **D5 측정**: `hook-timing.jsonl` 엔트리에 `rt: claude|codex` 필드.
74
+
75
+ ### Fixed — ADR-015 X-G1 (결함): Codex 에 Stop block 이 전달되지 않음
76
+ - `codex-adapter` 의 사영(`projectCodexToClaude`)이 `decision:"block"` 을 `continue:false +
77
+ permissionDecision:"block"` 으로 변조해 내보냈다. Codex 는 top-level `decision`/`reason` 을 읽고
78
+ `continue:false` 를 "처리 중단" 으로 해석하므로 **stop-guard 의 자기검증 차단이 Codex 에서 한 번도
79
+ continuation 을 만들지 못했다**. 사영을 host 스키마 보존(pass-through) 으로 재설계. fable 갭 분석에서
80
+ 발견, dist 실행으로 재현, 격리 `codex exec` 에서 `hook: Stop Blocked` → 자기 교정 턴 관측.
81
+ - PreToolUse deny 의 `continue:false` 는 Codex 가 "unsupported" 로 로그하던 것을 제거 (차단은
82
+ `permissionDecision` 이 표현).
83
+
84
+ ### Added — ADR-015 (최신 Claude Code 2.1.286 대비 갭, 0.5.3 반영분)
85
+ - **`SessionEnd` 훅 (Claude 전용)**: 세션 종료 시 user 메시지 ≥10 이면 auto-compound 러너를 detached
86
+ spawn — Stop 이 안 오는 종료(Ctrl+C 등)·긴 컴팩션 세션의 후반 학습 유실 보강. registry 에
87
+ `hosts` 필드 도입; **Codex hooks.json 은 22개 바이트 동일 유지** (훅 신뢰 보존).
88
+ - **중첩 실행 가드**: forgen 이 띄우는 추출용 `claude -p` 에 `FORGEN_NESTED_RUN=1` +
89
+ `--no-session-persistence`. 추출 run 안에서 22개 훅이 재귀 발화해 hook-timing/sessions 를 오염하고
90
+ 다음 SessionStart 의 auto-compound 후보가 되던 문제 차단. (`--bare` 는 OAuth 를 끊어 채택 불가.)
91
+ - **플러그인 스킬 frontmatter 보존**: `skills/<name>/SKILL.md` 가 `disable-model-invocation`(ship),
92
+ `allowed-tools`, `argument-hint`, `model` 을 잃던 빌드 결함 수정.
93
+ - 백로그(설계/재승인 필요)는 docs/adr/ADR-015 표 참조 — Codex async/SessionEnd/PostCompact 등록,
94
+ `notify`, `--output-schema`, `.codex/rules`, `verify` 스킬 규약, `InstructionsLoaded`, plugin eval 등.
95
+
96
+ ### Verified
97
+ - vitest 전체 pass (신규: codex-rules-context, install-codex ADR-014 9, hook-timing rt, projection
98
+ 재작성, hooks-generator-hosts, session-end).
99
+ - fresh-context critic (fable) 1라운드 → MAJOR 3 + MINOR 6 반영 (상세: ADR-014 Verification).
100
+ `tests/extraction-session.test.ts` 2건은 타이밍 flaky(단독 재실행 pass, 본 변경과 무관).
101
+ - self-gate static ✓, self-gate-runtime 9/9 ✓.
102
+ - **격리 라이브 (CODEX_HOME/FORGEN_HOME 임시, Codex 0.153.4)**:
103
+ - 훅 미승인 `codex exec` → forgen 훅 0건 발화 (공식 문서의 "skipped until trusted" 실증).
104
+ - `--dangerously-bypass-hook-trust` → rollout 에 `<forgen-rules host="codex">` 4KB 주입 확인
105
+ (v1-rules `## Must Not` 포함), Codex 가 ch-* 에이전트 14종 전부 열거, 생성 TOML 14/14 tomllib 파싱 OK.
106
+
107
+ ### Known gaps (정직 표기)
108
+ - Codex 전용 이벤트(SessionEnd/PostCompact/Interrupt) 미사용, `PostToolUseFailure` 는 Codex 에 없어
109
+ dead 엔트리로 유지 — 둘 다 hooks.json 변경이 필요해 신뢰 재승인 비용 때문에 보류.
110
+ - Codex 가 `.claude/rules` 처럼 매 턴 재로드하지는 않음 — 세션 시작 1회 + 컴팩션 시 SessionStart 재발화 1회.
111
+ - 서브에이전트 `model` 은 Codex 기본 subagent 모델 사용 (Claude 의 opus/sonnet 지정은 effort 로만 매핑).
112
+
113
+
114
+ ## [0.5.2] — 2026-08-18 — 학습 파이프라인 무결성: 실운영 데이터 진단으로 3대 결함 수정
115
+
116
+ 설치 후 실제 축적 데이터를 감사한 결과, 학습 파이프라인이 "우리 생각대로" 돌지
117
+ 않는 지점 3개를 발견·근본원인 규명·수정. npm publish 는 규칙대로 보류.
118
+
119
+ ### Fixed — 결함1: advisory 룰 폭주 (retire→재생성 churn)
120
+ - `compound sweep` 가 behavior_inference advisory 룰을 매 실행마다 새 UUID 로
121
+ 재생성해 6,701 파일(distinct render_key 172, 97% 중복)까지 폭증(1,046/일). 원인:
122
+ `render_key` 가 영구 upsert 정체성이 아닌 "현재 active" 임시 dedup 키로만 쓰이고,
123
+ 채굴된 Evidence 가 consumed 표시되지 않아 retire 로 풀린 render_key 를 stale
124
+ evidence 가 즉시 재승격(시계만 리셋).
125
+ - 수정: `findRuleByRenderKey()`(모든 status, scope 필터) 로 기존 룰 제자리 재활성
126
+ (`created_at`/`rule_id` 보존, TTL=첫 채굴 이후 총수명 캡), `Evidence.candidate_rule_refs`
127
+ 재사용한 consumed 마킹(동일 evidence replay 억제, 진짜 cross-session 반복은 Laplace
128
+ 강화 유지), 하드닝된 `withFileLockSync` 로 retire→lookup→create 크로스-프로세스 락,
129
+ `forgen compound sweep --prune-removed [--apply] [--retention-days N]`(dry-run 기본).
130
+
131
+ ### Fixed — 결함2: solution 추출 무음 실패 (생애 최초 산출 0건) — 라이브 확증 후 재설계
132
+ - opt-in(`autoCompoundHaiku`) 켜짐에도 `me/solutions/` 신규 산출이 forgen 생애 통틀어 0건.
133
+ - **라이브 확증으로 초기 진단을 정정**: 처음엔 "sparse env 권한 hedge"로 보고 `--permission-mode
134
+ dontAsk` 를 넣었으나, 실제 A/B 결과 dontAsk 는 산출을 전혀 바꾸지 못했다(有/無 모두 0).
135
+ 진짜 원인은 (1) 프롬프트가 "형식: forgen compound ..."(format:)이라 headless haiku 가
136
+ 명령을 텍스트로 프린트만 하고 Bash 도구를 호출 안 함, (2) 애초에 headless haiku 의 Bash
137
+ 도구 호출이 근본적으로 불안정(동일 조건 1↔0), (3) cron sparse PATH 에 `forgen` 부재,
138
+ (4) 러너가 `stdio:'ignore'` 라 이 모든 실패가 무음.
139
+ - **재설계(결정론적)**: 모델에 Bash 도구를 아예 주지 않는다. 모델은 재사용 솔루션을
140
+ 텍스트로만 출력하고, 러너가 `--solution "제목" "설명"` 을 파싱해 `forgen` 을 직접 실행한다
141
+ (behavior 경로와 동일 패턴). 부수효과로 **P1-S1 injection 표면 제거** — 모델 출력은
142
+ 파싱·필터(`containsPromptInjection`/`filterSolutionContent`) 후 `execFileSync` 의 *인자*로만
143
+ 쓰이고 셸을 거치지 않는다. `forgen` 은 러너 node 의 형제 바이너리를 절대경로로 호출해
144
+ PATH 의존을 없애고, `spawn.ts` 는 러너를 `process.execPath` 로 띄워 실 cron(nvm node)에서
145
+ forgen 형제경로가 성립하게 한다. 러너 stdout/stderr 는 세션별 로그로 캡처(무음 실패 제거).
146
+ - **라이브 검증**: cron-faithful sparse env(격리 FORGEN_HOME, 절대 nvm node)에서 실제 러너
147
+ 실행 → solution **0→1** 확인.
148
+ - **보안 defense-in-depth**: (1) 러너에서 대시-선두 title/content 스킵(arg confusion 1차 차단),
149
+ (2) `handleCompound` 인자 파서 리팩터 — manual-add(`--solution`/`--rule`/…)를 서브커맨드
150
+ dispatch 보다 먼저 처리해, 위치인자(title/content)의 `--remove`/`clean-stale` 등이
151
+ `args.includes(...)` 스캔에 걸려 삭제·정리 분기를 탈취하던 경로를 CLI 레벨에서 원천 차단.
152
+
153
+ ### Fixed — 결함3: 전역 CLI 버전 드리프트
154
+ - 대화형 `forgen`/`fgx` 가 0.4.12(설치 후 미갱신)로 러닝 파이프라인(dist 0.5.x)과 불일치.
155
+ 전역 CLI 를 npm latest 로 최신화.
156
+
157
+ ## [0.5.1] — 2026-08-18 — docs 정직화 i18n 동기화 + consent-sync CI 가드
158
+
159
+ 문서/CI 전용 패치. 사용자 노출 코드·런타임 동작 변경 없음. npm publish 는 규칙대로
160
+ 보류(품질 우선 — sellable/paper grade 도달 시).
161
+
162
+ ### Docs
163
+ - **ko/ja/zh README 학습-루프 정직화 동기화**: EN(0.5.0)이 "session ends → auto-compound
164
+ extracts" 무조건-추출 프레이밍을 opt-in consent 모델(ADR-012)로 고쳤으나 세 번역본이
165
+ 미반영이던 갭 해소(ko 는 v0.4.4 기준까지 뒤처짐). always-on(egress 0) vs
166
+ opt-in(`forgen compound consent on`, 기본 off, redaction, `forgen doctor`) 이분,
167
+ advisory-only 채굴(ADR-013), `compound sweep` backstop(ADR-011), ASCII 다이어그램·각주까지
168
+ EN 과 일치화. fresh-context critic 으로 21개 검증점(7 claim × 3 언어) 전수 확인.
169
+
170
+ ### CI
171
+ - **4 로케일 README consent 동기화 invariant** (`tests/readme-i18n-consent-sync.test.ts`):
172
+ 4 로케일 모두 consent load-bearing 토큰 포함(POSITIVE: `forgen compound consent on` /
173
+ `opt-in` / `egress 0` / `advisory-only` / `compound sweep` / `<private>`) + 무조건-추출
174
+ 프레이밍(`auto-compound`) 미포함(NEGATIVE) 강제. EN 정직화가 번역에 다시 누락되거나 옛
175
+ 프레이밍이 부활하면 PR 에서 RED. vitest.config include('tests/**') → ci.yml 자동 실행.
176
+
177
+ ## [0.5.0] — 2026-08-05 — cross-session δ 실증 · 학습 아키텍처 완성 (ADR-010~013)
178
+
179
+ forgen 의 첫 npm 릴리스(이전 발행은 0.4.x). 헤드라인: **forgen 효과(δ)를 프론티어
180
+ 모델에서 처음으로 유의하게 실증**했고, 그 학습을 안전·정직하게 돌리는 백그라운드
181
+ 아키텍처(ADR-011~013)를 완성했다. 아래 플랫폼-수렴 재정렬(ADR-010)이 이 릴리스의 토대다.
182
+
183
+ ### 측정 — cross-session δ 실증 (핵심)
184
+ - **forgen 효과(δ)를 처음으로 유의하게 실증** — cross-session 정책 준수. forgen 이
185
+ 이전 세션의 user-특정 정책을 재주입해, 그 정책을 모르는 vanilla 대비 준수율을 올린다:
186
+ Sonnet 5 **δ = 0.714, 95% CI [0.429, 0.929]** (vanilla 4/14 → forgen 14/14),
187
+ Opus 4.8 **δ = 0.500, 95% CI [0.214, 0.786]** (vanilla 7/14 → forgen 14/14).
188
+ 블라인드 human rater 확증(Cohen's κ = 0.748). **"내부 측정" 등급** (메인테이너 유래
189
+ 데이터셋 + intra-family judge + rater 1인) — 외부 주장은 독립 rater 패널·외부 리뷰어·
190
+ cross-family judge 재현 후. `docs/release/v0.5.0-persistence-delta.md`.
191
+ - **δ 는 모델 역량과 직교**: 강한 모델일수록 일반 good-practice 는 스스로 따라 δ 가
192
+ 작아지나, user-특정(추론 불가) 정책은 forgen 만 맞힘. within-session 은 구조적 null
193
+ (프론티어 컨텍스트 보유) — δ 는 cross-session 에서만 산다.
194
+
195
+ ### Added — 학습 백그라운드 아키텍처
196
+ - **auto-compound 백그라운드 방법론 (ADR-011)**: `forgen compound sweep` 시간-기반
197
+ backstop + cron 자동설치(`--install-cron`), barren backoff 성장예외, PreCompact 러너.
198
+ 긴 컴팩션/차단 세션에서 학습이 유실되던 갭 해소.
199
+ - **auto-compound 동의 모델 (ADR-012)**: transcript 요약을 Haiku 로 전송하는 추출을
200
+ **opt-in** 화(`forgen compound consent on|off`). 결정론 교정→룰 승급(egress 0)은 기본
201
+ 유지 — "당신 몰래 API 로 보내지 않는다".
202
+ - **correction-aware 채굴 (ADR-013)**: 명시 마커 없는 완곡·반사실 교정을 사후 회수해
203
+ 학습에 반영. 채굴 룰은 **advisory-only invariant**(차단 불가) + 캡 + auto: 네임스페이스
204
+ + 생성나이 은퇴 — LLM 채굴이 위험한 영구 차단 룰을 만들지 못하게 data-level 로 보장.
205
+
206
+ ### Fixed — 학습 파이프라인 실버그
207
+ - **실 transcript 스키마 버그**: auto-compound-runner 가 text 를 top-level `entry.content`
208
+ 로 읽었으나 실제 Claude 스키마는 `entry.message.content` 중첩 → 전 user/assistant 턴
209
+ 누락으로 auto-compound(채굴 포함)가 **실데이터에서 dead** 였다. message.content 우선 +
210
+ fallback, 순수 파싱 모듈 분리 + real-schema 회귀.
211
+ - **settings-injection 마커 버그**: `permissions.deny` JSON 배열에 `# forgen-managed`
212
+ 주석을 데이터로 주입 → Claude Code 가 malformed 룰로 매 세션 경고. 주입 중단 +
213
+ 기존 오염 self-heal.
214
+ - **drift-score hardcap cooldown 부재**: 50편집 초과 후 매 편집마다 drift_critical 이
215
+ 발화하던(세션길이 카운터로 전락) 문제.
216
+
217
+ ---
218
+
219
+ ### 플랫폼 수렴 대응 (ADR-010, 이 릴리스의 토대 — 2026-07-16)
220
+
221
+ Claude Code 가 forgen 영역을 native 로 흡수하기 시작한 것(`/doctor`, `/usage`,
222
+ Auto mode)과 Sonnet 5 기본 모델 전환에 대한 전략 릴리스. 방향: native 와 겹치는
223
+ 표면에서 물러나고, moat(교정→프로필 학습·증거 게이팅 정책·compound recall+ROI·
224
+ multi-host)에 재집중. 상세 결정 기록: `docs/adr/ADR-010`, 실행 스펙:
225
+ `docs/plans/2026-07-16-v0.5.0-execution-plan.md`. 전 작업 청크가 적대적 리뷰
226
+ 6회전을 거침 (SEV-1 3건 포함 전 발견 반영).
227
+
228
+ #### 측정 기반 재정렬 (핵심 배경)
229
+ - **v0.4.11 실측: opus-4.8 에서 완료 가드 blocks=0** (easy/hard 양쪽) — δ 효과는
230
+ 100% injection 에서 나온다. enforcement 는 프론티어 모델이 흡수했고, forgen 의
231
+ 가치는 injection 품질·메모리·개인화·측정으로 이동했다. 효과 수치는 Sonnet 5
232
+ 재측정(R2) 전까지 주장하지 않는다 (Honest Fail Path).
233
+
234
+ #### Added
235
+ - **`forgen migrate tenetx`** (+ `doctor --reclaim`): tenetx(레거시 정체성)/구버전
236
+ forgen 이 `~/.claude/rules/` 등에 남긴 규칙 스프롤을 provenance 기반으로 회수.
237
+ manifest content-hash 일치 = 무프롬프트, 마커만 = `--yes` 필요, 그 외 불간섭.
238
+ 전량 백업-이동(가역), `--dry-run`, `--apply-settings`(settings-lock 준수).
239
+ - **Injection ROI 루프**: `surfaced ≫ acted_on` 저 ROI 솔루션 자동 강등(×0.5,
240
+ 24h 게이트 2윈도 연속 시 주입 제외, acted 발생 시 즉시 해제). `forgen status`
241
+ 에 "Surfaced but ignored" 패널. native 메모리에 없는 acted-on 피드백 루프.
242
+ - **per-model 완료-가드 프로필**: 측정된 opus-4.8 은 advise(기록만), 미측정
243
+ 모델(sonnet-5 포함)은 block 유지. 모델 식별은 statusline 세션 캐시 경유
244
+ (hook stdin 에 모델 필드 없음 — probe 실측). DANGEROUS 가드는 모델 무관 block.
245
+ - **smoke 릴리스 게이트**: `scripts/smoke.cjs` — 실제 프로세스 실행 증거만 기록
246
+ (vitest/cli/statusline/hook-exec), report.version ↔ package.json 바인딩으로
247
+ stale 증거 재사용 차단. Docker e2e 게이트 폐지 대체 (증거 수단 적정화 —
248
+ 원칙 유지).
249
+ - retro-real 평가 데이터셋 15엔트리 (실세션 anonymized, 완화 역방향 케이스 포함).
250
+
251
+ #### Changed
252
+ - **경계 재정의**: `forgen doctor` 는 forgen 자체 기계+효과-측정 게이트만
253
+ (환경 건강 → native `/doctor` 안내, Maturity/QuickWins 제거, hook timing →
254
+ `--verbose`); 사용량 표시 → native `/usage` 이관(1회 공지, dashboard 는
255
+ deprecated 플래그); 보안/안티패턴 prose → 훅 포인터 2줄 (71.8% 축소).
256
+ - **규칙 주입 전면 프로젝트 스코프화**: `forge-*` 글로벌 사이드채널 제거 —
257
+ behavioral 패턴이 전 프로젝트에 새던 결함(F6) 수정. 렌더 파일 content-hash
258
+ manifest 기록 (reclaimer 근거).
259
+ - **behavioral 에코 하드닝**: observedCount≥2 게이트(주력 — 실오염 49/49 가
260
+ 1회 관찰) + 캡처 사이드 차단 + 앵커드 패턴 보강. Claude-voice 에코가 규칙으로
261
+ 재주입되던 오염 경로 차단.
262
+
263
+ #### Fixed
264
+ - `doctor --repair` 가 글로벌 설치에서 실제로 복구하지 못하던 버그 (devDeps 부재로
265
+ build 실패 → postinstall 미도달) — dist 존재 시 build 생략 + 결과 재검증 보고.
266
+ - statusline 1회 공지가 5초 캐시에 섞여 반복되던 버그.
267
+
268
+ #### Deprecated
269
+ - `usage-telemetry` 기록 (no-op shim, v0.6.0 모듈 삭제 예정) — native `/usage`.
270
+
10
271
  ## [0.4.13] — 2026-06-02 — Hotfix: fgx 세션 종료 시 터미널 물림 방지
11
272
 
12
273
  핫픽스 한 건.
package/README.ja.md CHANGED
@@ -55,19 +55,19 @@ Claude: 「完了宣言を取り消します。証拠ファイルがありま
55
55
 
56
56
  **何が起きたか**: Claude の Stop フックが、あなたが定義したルール (`L1-e2e-before-done`) によってブロックされました。Claude はブロック `reason` を読み、早すぎた完了宣言を撤回し、証拠を生成して再提出しました。**追加 API コール 0** — Claude が元々生成する予定だった同じセッションのターン内で全て起きました。
57
57
 
58
- これが **Mech-B セルフチェックプロンプトインジェクト** です。Claude Code の Stop フックが `decision: "block"` + `reason` を受け入れ、Claude が次のターンでその reason を入力として読むから成り立ちます。10 シナリオ $1.74 で end-to-end 検証済み ([A1 spike report](docs/spike/mech-b-a1-verification-report.md))。
58
+ これが **Mech-B セルフチェックプロンプトインジェクト** です。Claude Code の Stop フックが `decision: "block"` + `reason` を受け入れ、Claude が次のターンでその reason を入力として読むから成り立ちます。10 シナリオ $1.74 で end-to-end 検証済み (A1 spike report — git 履歴にアーカイブ済み, `docs/spike/` pre-v0.5.0)。
59
59
 
60
60
  🎬 **動作を見る** (27秒):
61
61
 
62
62
  ```bash
63
63
  # 実際のフック・実際のルール・実際の block/approve サイクルをライブで
64
- bash docs/demo/mech-b-demo.sh
64
+ # demo スクリプトは git 履歴にアーカイブ済み (docs/demo/ pre-v0.5.0)
65
65
 
66
66
  # または録画済み asciinema キャストを再生
67
- asciinema play docs/demo/mech-b-block-unblock.cast
67
+ # asciinema cast も同様
68
68
  ```
69
69
 
70
- デモの「本物/シミュレーション」の区別は [`docs/demo/README.md`](docs/demo/README.md) を参照。
70
+
71
71
 
72
72
  ---
73
73
 
@@ -162,16 +162,17 @@ forgen # `claude` の代わりに使用
162
162
 
163
163
  あなたが言います: 「頼んでいないファイルをリファクタリングしないで。」
164
164
 
165
- Claude が `correction-record` MCP ツールを呼び出します。修正は、軸分類(`judgment_philosophy`)、種類(`avoid-this`)、信頼度スコアを含む構造化されたエビデンスとして保存されます。現在のセッションに即座に効果を持つ一時ルールが作成されます。
165
+ Claude が `correction-record` MCP ツールを呼び出します。修正は、軸分類(`judgment_philosophy`)、種類(`avoid-this`)、信頼度スコアを含む構造化されたエビデンスとして保存されます。現在のセッションに即座に効果を持つ一時ルールが作成されます。セッション終了時、このルールは**恒久ルール**に昇格します — この決定論的な corrections → rules 経路は**ネットワーク egress 0** で動作し、私たちが測定した cross-session δ はまさにこの経路に乗っています。
166
+
167
+ あなたが明示的に指摘しない柔らかい修正(「うーん…これだけ最小限に書いたら後で全部やり直しになるんじゃない?」)はリアルタイムでは捉えにくいものです。transcript 抽出(下記)に opt-in すると、forgen は会話からそうした修正も**遡って(retroactive に)マイニング**します — ただしこうして自動マイニングされたルールは **advisory-only**(コンテキストとして提示されるだけで、決してブロック・強制しない)であり、あなたが反応しなければ時間とともに age-out します。
166
168
 
167
169
  ### セッション間(自動)
168
170
 
169
- セッション終了時に auto-compound が抽出します:
170
- - ソリューション(コンテキスト付きの再利用可能なパターン)
171
- - 行動観察(あなたの作業の仕方)
172
- - セッション学習サマリー
171
+ **Always on(決定論的、egress 0):** 明示的な修正は恒久ルールに昇格し、ほぼ重複する修正はクラスタリングされて強化され、蓄積されたエビデンスからファセットが微調整されます。時間ベースの `compound sweep` バックストップ(オプションで cron)が、長いセッションや中断されたセッションでもその学習が失われないようにします。
173
172
 
174
- 蓄積されたエビデンスに基づいてファセットが微調整されます。修正が継続的に現在のパックと異なる方向を指している場合、3セッション後にミスマッチ検出がトリガーされ、パック変更を提案します。
173
+ **Opt-in(`forgen compound consent on`):** バックグラウンドの Haiku パスがセッション transcript の*redaction 済みサマリー*を読み、再利用可能なソリューション、行動観察、そして上記の柔らかい修正を抽出します。これは**デフォルト off** です — あなたがオンにしない限り、forgen はあなたの会話をどこにも送信せず、送信前に secret / `<private>` 範囲は除去されます。`forgen doctor` が常に現在の状態を表示します。
174
+
175
+ 修正が継続的に現在のパックと異なる方向を指している場合、3セッション後にミスマッチ検出がトリガーされ、パック変更を提案します。
175
176
 
176
177
  ### 次のセッション
177
178
 
@@ -190,6 +191,7 @@ forgen install both # 3択インタラクティブ: claude / codex / bo
190
191
  # または非対話:
191
192
  forgen install claude
192
193
  forgen install codex
194
+ # Codex のみ: codex 内で `/hooks` から forgen フックを一度承認 — Codex は未承認フックをスキップ (forgen doctor の [Codex Hooks] で確認)
193
195
 
194
196
  # 3. 初回実行 — 4問オンボーディング (英語/韓国語選択)
195
197
  forgen # デフォルト: Claude
@@ -300,8 +302,8 @@ env を使ってください。ホスト環境 (macOS/Linux ワークステー
300
302
  | |
301
303
  v |
302
304
  +------------------+ |
303
- | セッション終了 | auto-compound 抽出: |
304
- | | ソリューション + 観察 + サマリー |
305
+ | セッション終了 | corrections -> rules (常時, egress 0) |
306
+ | | transcript 抽出: opt-in (Haiku) |
305
307
  +--------+---------+ |
306
308
  | |
307
309
  v |
@@ -331,6 +333,8 @@ experiment (0.30) → candidate (0.55) → verified (0.75) → mature (0.90)
331
333
  | **行動パターン** | 3回以上の観察で自動検出 | `forge-behavioral.md` に適用 |
332
334
  | **エビデンス** | 修正 + 観察 | ファセット調整 + ルール作成を促進 |
333
335
 
336
+ *ソリューションと行動パターンは **opt-in** の transcript 抽出パス(`forgen compound consent on`、デフォルト off)から得られます。corrections → rules とファセット調整は always-on で、あなたのマシンから決して出ません。*
337
+
334
338
  ### ソリューション自動注入
335
339
 
336
340
  入力したプロンプトはすべて、蓄積されたソリューションと照合されます。関連するものはClaudeのコンテキストに自動注入されます — 手動検索は不要です。
package/README.ko.md CHANGED
@@ -122,16 +122,17 @@ forgen # `claude` 대신 사용
122
122
 
123
123
  당신이 말합니다: "내가 요청하지 않은 파일은 리팩토링하지 마."
124
124
 
125
- Claude가 `correction-record` MCP 도구를 호출합니다. 교정은 축 분류(`judgment_philosophy`), 종류(`avoid-this`), 신뢰도 점수가 포함된 구조화된 evidence로 저장됩니다. 현재 세션에 즉시 효과를 주는 임시 규칙이 생성됩니다.
125
+ Claude가 `correction-record` MCP 도구를 호출합니다. 교정은 축 분류(`judgment_philosophy`), 종류(`avoid-this`), 신뢰도 점수가 포함된 구조화된 evidence로 저장됩니다. 현재 세션에 즉시 효과를 주는 임시 규칙이 생성됩니다. 세션이 끝나면 이 규칙은 **영구 규칙**으로 승급됩니다 — 이 결정론적 corrections → rules 경로는 **네트워크 egress 0** 으로 동작하며, 우리가 측정한 cross-session δ가 바로 이 경로에 실립니다.
126
+
127
+ 당신이 명시적으로 짚지 않은 완곡한 교정("음… 이렇게 최소로만 짜면 나중에 다 다시 해야 하는 거 아니야?")은 실시간으로 잡기 어렵습니다. transcript 추출(아래)에 opt-in 하면 forgen이 대화에서 그런 교정도 **retroactive하게 채굴**합니다 — 단, 이렇게 자동 채굴된 규칙은 **advisory-only**(컨텍스트로 표시될 뿐 절대 차단·강제하지 않음)이며, 당신이 반응하지 않으면 시간이 지나 age-out 됩니다.
126
128
 
127
129
  ### 세션 사이 (자동)
128
130
 
129
- 세션이 끝나면 auto-compound가 추출합니다:
130
- - 솔루션 (맥락이 포함된 재사용 가능한 패턴)
131
- - 행동 관찰 (당신의 작업 방식)
132
- - 세션 학습 요약
131
+ **Always on (결정론적, egress 0):** 명시적 교정은 영구 규칙으로 승급되고, 거의 중복인 교정은 클러스터링되어 강화되며, 축적된 evidence로 facet이 미세 조정됩니다. 시간 기반 `compound sweep` backstop(선택적으로 cron)이 길거나 중단된 세션에서도 그 학습이 유실되지 않게 보장합니다.
132
+
133
+ **Opt-in (`forgen compound consent on`):** 백그라운드 Haiku 패스가 세션 transcript의 *redaction된 요약*을 읽어 재사용 가능한 솔루션, 행동 관찰, 그리고 위의 완곡한 교정을 추출합니다. 이것은 **기본 off** 입니다 — 당신이 켜지 않는 한 forgen은 당신의 대화를 어디로도 보내지 않으며, 전송 전에 secret / `<private>` 범위는 제거됩니다. `forgen doctor` 가 항상 현재 상태를 보여줍니다.
133
134
 
134
- 축적된 evidence를 기반으로 facet이 미세 조정됩니다. 교정이 지속적으로 현재 팩과 다른 방향을 가리키면, 3세션 후 mismatch 감지가 트리거되어 팩 변경을 추천합니다.
135
+ 교정이 지속적으로 현재 팩과 다른 방향을 가리키면, 3세션 후 mismatch 감지가 트리거되어 팩 변경을 추천합니다.
135
136
 
136
137
  ### 다음 세션
137
138
 
@@ -150,6 +151,7 @@ forgen install both # 3지선다 인터랙티브: claude / codex / both
150
151
  # 또는 비대화형:
151
152
  forgen install claude
152
153
  forgen install codex
154
+ # Codex 만: codex 안에서 `/hooks` 로 forgen 훅을 한 번 승인 — Codex 는 미승인 훅을 skip (forgen doctor 의 [Codex Hooks] 로 확인)
153
155
 
154
156
  # 3. 첫 실행 — 4문항 온보딩 (영어/한국어 선택)
155
157
  forgen # 기본: Claude
@@ -260,8 +262,8 @@ Linux 컨테이너에서 `~/.claude.json` 만 마운트하면 refresh 토큰이
260
262
  | |
261
263
  v |
262
264
  +------------------+ |
263
- | 세션 종료 | auto-compound 추출: |
264
- | | 솔루션 + 관찰 + 요약 |
265
+ | 세션 종료 | corrections -> rules (항상, egress 0) |
266
+ | | transcript 추출: opt-in (Haiku) |
265
267
  +--------+---------+ |
266
268
  | |
267
269
  v |
@@ -305,6 +307,8 @@ experiment (0.30) → candidate (0.55) → verified (0.75) → mature (0.90)
305
307
  | **행동 패턴** | 3회 이상 관찰 시 자동 감지 | `forge-behavioral.md`에 적용 |
306
308
  | **Evidence** | 교정 + 관찰 | facet 조정 및 규칙 생성의 근거 |
307
309
 
310
+ *솔루션과 행동 패턴은 **opt-in** transcript 추출 패스(`forgen compound consent on`, 기본 off)에서 나옵니다. corrections → rules 와 facet 조정은 always-on 이며 절대 당신의 머신을 떠나지 않습니다.*
311
+
308
312
  ### Solution 자동 주입
309
313
 
310
314
  입력하는 모든 프롬프트가 축적된 솔루션과 매칭됩니다. 관련 솔루션은 Claude의 컨텍스트에 자동 주입됩니다 — 직접 찾아볼 필요가 없습니다.