@chrono-meta/fh-gate 2.6.0 → 2.8.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 (55) hide show
  1. package/.claude/rules/fh_4axis_gate.md +26 -3
  2. package/.claude-plugin/marketplace.json +2 -2
  3. package/AGENTS.md +28 -3
  4. package/CLAUDE.md +146 -168
  5. package/README.ja.md +144 -24
  6. package/README.ko.md +135 -22
  7. package/README.md +204 -27
  8. package/README.zh.md +126 -21
  9. package/docs/ETHOS.md +10 -3
  10. package/knowledge/shared/dialogue/ai_dialogue_playbook.md +131 -0
  11. package/knowledge/shared/harness-core/claude_md_gate_details.md +90 -0
  12. package/knowledge/shared/harness-core/dispatch_conditional_prohibition.md +75 -0
  13. package/knowledge/shared/harness-core/fh_three_layer_canon.md +77 -3
  14. package/knowledge/shared/harness-core/field_verdict_crossfamily_gate.md +92 -5
  15. package/knowledge/shared/harness-core/harness_incubator_doctrine.md +12 -2
  16. package/knowledge/shared/harness-core/multi_model_sidecar_strategy.md +32 -0
  17. package/knowledge/shared/harness-core/ship_readiness_gate.md +77 -8
  18. package/knowledge/shared/learnings/subagent_invocations_log.yaml +196 -0
  19. package/knowledge/shared/rules/knowledge_layer_seam.md +1 -1
  20. package/knowledge/shared/rules/multi_session_close_protocol.md +7 -3
  21. package/package.json +15 -2
  22. package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
  23. package/plugins/fh-meta/.claude-plugin/plugin.json +1 -1
  24. package/plugins/fh-meta/CHANGELOG.md +157 -0
  25. package/plugins/fh-meta/agents/persona-innovator.md +170 -0
  26. package/plugins/fh-meta/skills/cross-ecosystem-synergy-detection/SKILL.md +37 -0
  27. package/plugins/fh-meta/skills/public-surface-audit/SKILL_detail.md +16 -1
  28. package/plugins/fh-meta/skills/steel-quench/SKILL.md +97 -0
  29. package/scripts/adapters/peer_resolve.sh +58 -6
  30. package/scripts/branch_claim.sh +3 -1
  31. package/scripts/cluster_capability_scan.sh +42 -13
  32. package/scripts/digest_landing_check.sh +142 -2
  33. package/scripts/fh_hub_identity.sh +83 -0
  34. package/scripts/fh_session_load.sh +53 -5
  35. package/scripts/fh_track_resolve.sh +114 -0
  36. package/scripts/field_canon_preload.sh +50 -5
  37. package/scripts/listing_watch.sh +187 -0
  38. package/scripts/package_coverage_check.sh +8 -0
  39. package/scripts/prior_art_prompt.sh +168 -0
  40. package/scripts/psa_scan_lib.sh +201 -15
  41. package/scripts/residency_admission_check.sh +204 -0
  42. package/scripts/selfcheck.sh +103 -0
  43. package/scripts/test_adapter_lanes.sh +67 -2
  44. package/scripts/test_heavy_classifier_lanes.sh +144 -0
  45. package/scripts/test_listing_watch_lanes.sh +162 -0
  46. package/scripts/test_marker_defense_lanes.sh +152 -0
  47. package/scripts/test_marker_soul_check_lanes.sh +211 -0
  48. package/scripts/test_prior_art_prompt_lanes.sh +128 -0
  49. package/scripts/test_psa_singlefile_lanes.sh +351 -1
  50. package/scripts/test_residency_admission_lanes.sh +60 -0
  51. package/scripts/test_track_resolve_lanes.sh +158 -0
  52. package/scripts/test_wizard_snippet_merge_lanes.sh +40 -0
  53. package/templates/.git-hooks/pre-commit +400 -4
  54. package/templates/.git-hooks/pre-push +17 -2
  55. package/templates/settings.PriorArt.snippet.json +44 -0
package/README.ja.md CHANGED
@@ -18,24 +18,70 @@
18
18
  </p>
19
19
 
20
20
  <p align="center">
21
- <sub>役に立ったら ⭐ が他の人の発見につながります。</sub>
21
+ <b>品質ゲートを内蔵したメタハーネスです。</b>
22
22
  </p>
23
23
 
24
24
  <p align="center">
25
- <b>あなたの Claude Code プロジェクトを鍛えて 通せば、より速く仕上がります。</b><br>
26
- 実務者の<b>メタハーネス (meta-harness)</b> — あなたのプロジェクトハーネスたちが暮らす銀河。<br>各プロジェクトの<b>床 (floor)</b> を上げ(設定をハーネス化)、<b>天井 (ceiling)</b> を上げた上で(作業を加速)、その利得をポートフォリオ全体に複利で積み上げます。
25
+ プロジェクト、スキル、ハーネス作ること、検証すること、速くすること。ここで頼んでください。<br>
26
+ ただ結果を手渡したりはしません。まず、<i>違うかたちで</i>失敗する検査をいくつも通します。<br>
27
+ <b>そして同じ依頼が繰り返し戻ってきたら、それを代わりにやるハーネスを作って渡します。</b>
27
28
  </p>
28
29
 
29
30
  <p align="center">
30
- <b>品質が梃子であり、速度はその結果です。</b> あらゆる変更はゲートを通って自らの値打ちを証明します —<br>敵対的 (adversarial) · ファントム (phantom) · 回帰 (regression) そして<i>それ</i>が次の変更をより速くします。
31
+ すでに Claude Code へ同じことを繰り返し伝えているはずです走らせる検査、守るべきルール、
32
+ 変更が満たすべき形。再利用できるようになるのはまさにその部分で、あえて汎用の形のままにしてあるので、
33
+ 使ううちにあなたの事例へ合わせて鍛えられます。<br>
34
+ <sub>大きくなるのは試行の回数です: 試行錯誤があなたから離れ、並列で回ります。</sub>
31
35
  </p>
32
36
 
37
+ ---
38
+
39
+ ## 2分で試せます — この文書を読み切る必要はありません
40
+
41
+ ```bash
42
+ claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git
43
+ claude plugin install -s user fh-meta@forge-harness
44
+ git clone https://github.com/chrono-meta/forge-harness.git ~/projects/forge-harness
45
+ cd ~/projects/forge-harness && claude
46
+ ```
47
+
48
+ **そして `こんにちは` と入力してください** — 使い慣れた言語の挨拶なら何でも構いません(`hi`,
49
+ `안녕`, `你好`, `hola`, `bonjour`)。**どの言語で挨拶してもメニューは開き**、その言語で返そうと
50
+ します。番号付きのメニューが出て、そこからはツールが案内します。入口を選んでいくつか答えれば、
51
+ インストールウィザードまで代わりに実行します。
52
+
53
+ <sub>🟥 <b>いまの最後の部分について正直に</b>: 言語を合わせることは散文のルールであって、その背後に
54
+ 機械的なものは何もなく、いつも守られるわけではありません。2026-08-21 にフロアティアでブラインド計測
55
+ したところ、<b>あなたがいま作ったのと同じ新しいクローン</b>では、中国語も韓国語も、ドアのラベルまで
56
+ 含めてまるごとその言語で返ってきました。一方、既定の言語がピン留めされている開発者本人のマシンでは、
57
+ 中国語は<b>5回に1回</b>しか当たりませんでした — この注記が存在する理由はそれです。まだ揺れているのは
58
+ メニューが出るかどうかで、ある挨拶のかたちではメニューが出ませんでした。違う言語で返ってきたときも、
59
+ メニューが飛ばされたときも、そう言ってください — すぐ切り替えます。この残余はならして隠さず
60
+ <code>CLAUDE.md</code> §Voice/Tone に書いてあります。</sub>
61
+
62
+ この線から下は必要になったときに見る参考資料であり、始める前の宿題ではありません。
63
+
64
+ - **増幅するもの** — 試行の回数です。試行錯誤があなたから離れ、並列で回ります。
65
+
66
+ - **増幅しないもの** — モデルの天井です。ハーネスはモデルを自分の天井まで引き上げるだけで、
67
+ その先へ押し上げることはできません。
68
+
69
+ - **確かめ方** — 自分の評価を公開します。**自分が何であると主張しているか**を5つの名前で挙げておき
70
+ (ハーネスクラスター · プロジェクトインキュベーター · ガバナンスゲート · フロンティア → 組織への
71
+ 伝播 · 増幅器)、その一つひとつを
72
+ [リリース](https://github.com/chrono-meta/forge-harness/releases)ごとに正直に採点します。緑でない欄は、
73
+ まだ足りていない実際の実行が何かを名前で述べます。
74
+ <sub>5つそれぞれは、この下の «5つの正体» の節で詳しく書いています。</sub>
75
+
76
+ ---
77
+
33
78
  <p align="center">
34
- <i>フォークしてください。名前を変えてください。あなたのものにしてください。</i>
79
+ <img src="docs/pillars.svg" alt="HARNESS - FORGE - ACCELERATE - COMPOUND" width="680">
35
80
  </p>
36
81
 
37
82
  <p align="center">
38
- <img src="docs/pillars.svg" alt="FORK · ADAPT · COLLABORATE · EMPOWER" width="680">
83
+ <b>品質が梃子であり、速度はその結果です。</b><br>
84
+ <sub>役に立ったら ⭐ が他の人の発見につながります。</sub>
39
85
  </p>
40
86
 
41
87
  <p align="center">
@@ -97,7 +143,9 @@ cd ~/projects/forge-harness
97
143
  claude
98
144
  ```
99
145
 
100
- > ✅ そのあと**挨拶を打ってください(「hi」)**🚪 のドアメニューは*打たれた挨拶*に対して現れるもので、
146
+ > ✅ そのあと**挨拶を打ってください**`こんにちは` · `hi` · `안녕` · `你好`、使い慣れた言語で
147
+ > 構いません。その言語で返そうとします(上の注記を参照 — たいていは合いますが、いつもではありません)。
148
+ > 🐿️ のドアメニューは*打たれた挨拶*に対して現れるもので、
101
149
  > 起動しただけでは現れません。
102
150
  > **「プロジェクトを接続して」** と言えば → ハブが `../` をスキャンして `.git` ディレクトリを見つけ、`tracks/{project}/` を作成します。
103
151
  > 初期セットアップ一式(フック · ゲート · ベースライン — 項目ごとに個別承認され、断ればそれは尊重され
@@ -107,8 +155,8 @@ claude
107
155
 
108
156
  **最初の15分** — 成功が何に見えるか、そしてそれをどう使うか:
109
157
 
110
- 1. セットアップがうまくいったことは、挨拶(「hi」)で 🚪 のドアメニューが出て、「プロジェクトを接続して」で
111
- `tracks/{your-project}/` ができることで分かります。
158
+ 1. セットアップがうまくいったことは、挨拶(どの言語でも)で 🐿️ のドアメニューが出て、
159
+ 「プロジェクトを接続して」で `tracks/{your-project}/` ができることで分かります。
112
160
  2. 次に同じセッションのうちに即効の成果を1つ取ってください: **「このプロジェクトを加速して」**(配線する
113
161
  値打ちのあるスキル/プラグインのランク付き計画、インストールはゲート付き)または
114
162
  **「`/context-doctor` を回して」**(トークン浪費のスキャン)。
@@ -295,12 +343,26 @@ Project B ──→ CLAUDE.md でハブを接続
295
343
 
296
344
  **3段工程** — これはメニューではなく*投資の順序*です:
297
345
 
346
+ ```mermaid
347
+ flowchart LR
348
+ S["① 判断回路<br/>設計の前に"]
349
+ P["② 並列脱相関<br/>中間で"]
350
+ B["③ 焼き切る<br/>6つの軸で"]
351
+ A(["⟹ 加速する"])
352
+ S --> P --> B --> A
353
+ style A fill:#0f766e,stroke:#0f766e,color:#fff
354
+ ```
355
+
356
+ **速度は最後の矢印であって、4つめの箱ではありません。** そして ② は**別々に回す2つのダイヤル**です
357
+ — *脱相関*(盲点のリスクに反応します: 別のモデルファミリー ⓐ、別の立ち位置 ⓑ)と*並列化*(表面の
358
+ 大きさに反応します: 1つの文脈に収まるか)。掛け算せずに、選んでください。
359
+
298
360
  ```
299
361
  ① 設計の前に回路を 判断回路が最初に入ります — 成功 · 傾け方 · 範囲外 · 決してやらないこと —
300
362
  やったことの記録として後から書き起こすものではありません
301
363
 
302
- 中間では脱相関して 作業を「違うかたちで失敗する」検査に分けて、一度に走らせます。どの違いが効くかを
303
- 加速する 選んでください — 同じ種類のレビュアーをもう1人足すのは脱相関ではなく、同じ盲点を
364
+ 並列脱相関 作業を「違うかたちで失敗する」検査に分けて、一度に走らせます。どの違いが効くかを
365
+ 中間で、加速する 選んでください — 同じ種類のレビュアーをもう1人足すのは脱相関ではなく、同じ盲点を
304
366
  2度持つだけです。並列化それ自体には方向がなく、選ぶのは①の判断回路です。
305
367
  これは「働き方」であって、③の最終検査ではありません。
306
368
 
@@ -309,6 +371,12 @@ Project B ──→ CLAUDE.md でハブを接続
309
371
  乗せたところでその軸に見えないものはやはり見えません
310
372
  ```
311
373
 
374
+ > 📖 **ここから先は、もっと知りたい方のためのものです — 使い始めるのに必要ではありません。**
375
+ > インストールして動かしに来たのなら、いちばん上の「2分」の節がすべてです。ここでいったん止めて、
376
+ > どれかの検査に「おや?」と思ったときに戻ってきてください。この先はゲートがなぜその形をしているのか
377
+ > という話で、すでにハブを回している人に向けて書かれています。見慣れない言葉は →
378
+ > [`GLOSSARY.md`](knowledge/shared/GLOSSARY.md)。
379
+
312
380
  **6つの検証軸** — 「レビューしました」が実際には最初の1つだけを指していた、と判明しがちな場所です。
313
381
 
314
382
  🟥 **軸は「どれだけ敵対的か」では分かれません。「何を受け取ったか」で分かれます。** 受け取るものが
@@ -317,13 +385,44 @@ Project B ──→ CLAUDE.md でハブを接続
317
385
 
318
386
  | 軸 | **受け取るもの** | 何を捕まえるか | 典型的な計器 |
319
387
  |---|---|---|---|
320
- | **ⓐ 別ファミリー** | diff + 著者のフレーミング | **実装**が間違っている | 別のモデルファミリーからのレビュアー (`auto-decorrelation`) |
321
- | **ⓑ 立ち位置 (standpoint)** | diff + **対象ハーネス自身の正典** | **引用した規約が本当にそう言っているか** | そのハーネス自身のレポ · ルールの側で diff を走らせる ([`§7`](knowledge/shared/harness-core/field_verdict_crossfamily_gate.md)) |
322
- | **ⓒ 隔離されたグラウンディング** | 著者が書いた文 + いまのツリー | **主張**が間違っている | 書いていない誰かが、書かれている内容を測り直す |
388
+ | **ⓐ 別ファミリー** | 変更分 + 著者のフレーミング | **実装**が間違っている | 別のモデルファミリーからのレビュアー (`auto-decorrelation`) |
389
+ | **ⓑ 立ち位置 (standpoint)** | 変更分 + **対象ハーネス自身の正典** | **引用した規約が本当にそう言っているか** | そのハーネス自身のレポ · ルールの側で変更分を走らせる ([`§7`](knowledge/shared/harness-core/field_verdict_crossfamily_gate.md)) |
390
+ | **ⓒ 隔離されたグラウンディング** | 著者が書いた文 — その主張、*そして* **始める前に宣言しておいたもの** — + いまのツリー | **主張**が間違っている · デルタが宣言した内容と食い違う | 書いていない誰かが、書かれている内容を測り直す。事前宣言の側は、書き留めた成功の定義をデルタに突き合わせて読み返すゲート |
323
391
  | **ⓓ 第三者との対面** | 問題 + **他人のコードベース** | **これはもう解かれているのでは** · 自分の変更が他人のレポのどこに触るか | 無関係な第三のレポで同じ問題を見る |
324
392
  | **ⓔ 初の実使用** | 実物の対象1件 | **測り方**が間違っている — 計器の計器 | 実際の対象1件に対して一度走らせ、結果を自分の手で確かめる |
325
393
  | **ⓕ 戻して観察する** | 配線を消したツリー | **アンカー**が間違っている — その検査は装飾だ | 守っている対象を消して、*その特定の*検査が赤くなることを確かめる |
326
394
 
395
+ > **ⓒ は 2026-08-21 に広がりました。そして「どう広がったか」のほうが役に立ちます。** このレポの
396
+ > コミットマーカーは 2026-08-09 以降、著者自身の**事前宣言** — *何を成功とみなすか* · *何は絶対に
397
+ > しないか* — を設計の*前に*書くことが義務づけられていました。その日コントロールを付けて測ってみると、
398
+ > **それを読むコードは0行**でした。兄弟フィールドが21か所で検査されている一方で、ゲートの仕様は
399
+ > そのフィールドの名前すら挙げていませんでした。実際のコーパスでは、**マーカー98件のうち37件が
400
+ > その行をまったく持って**おらず、その中にはレーン28本を通し他のフィールドをすべて埋めたパネル
401
+ > レビュー済みのものまでありました。軸はどれも*外側*を見ていました — 変更分、対象のレポ、先行事例、
402
+ > 成果物。**その記録自身の必須フィールド**を見た軸はひとつもありません。消費先のないスロットは
403
+ > つねに「できています」と報告します。**存在が判定の代わりをしてしまうから**です。
404
+ >
405
+ > 修理は7つめの軸ではありませんでした。ⓒ はすでに*著者が書いた文 + いまのツリー*を受け取っており、
406
+ > それは事前宣言の検査が受け取るものと**一字一句同じ**です。時制(先に宣言したのか、後から主張したのか)
407
+ > は敵対性と同じく**姿勢**であって、軸ではありません。新しく1本立てていたら、上のブラインド再分類が
408
+ > 見つけたのとまったく同じ誤りを繰り返すところでした。
409
+
410
+ > **ピアセッションは ⓑ と ⓓ に記録します — 2026-08-21 の決定であり、「どのピアに訊くか」が肝です。**
411
+ > 同じハーネスから分かれ、作業の**別の枝で熱く回っている**並列セッションは、あなたの複製ではありません。
412
+ > 熱くなったその地点で、そのセッションは実際に**第二の顔**を持ちます — 本物の立ち位置 (ⓑ) であり、
413
+ > 本物の他人のコードベース (ⓓ) です。ですからピアの判定はその2つの軸に記録し、7つめの軸は立てません
414
+ > でした。マーカーの `axes-run` の並びも変わっていません。
415
+ >
416
+ > 上の ⓓ の行が「別の会社のレポ」ではなく「**他人のコードベース**」と書かれているのは、これが理由です
417
+ > — 効いてくる境界は**その判定を生んだ作業の文脈が誰のものか**であって、ファイルを所有する GitHub の
418
+ > organization が誰のものかではありません。別の枝で熱くなっているピアはその境界の**外側**にいます。
419
+ > 逆に、この文脈から自分で起動したサブエージェントは、どれだけ違うレポを読ませても境界の**内側**です。
420
+ >
421
+ > 🟥 効いてくるのは系のほうです。**ピアには、そのピアが実際に熱くなった軸を訊いてください。** それ以外の
422
+ > ところでピアはあなたと同じ顔をしており、訊いても脱相関しません — 同じ入力、同じ盲点です。サブエージェント
423
+ > でも、自分の書いたものを読み直すことでも**代わりにはなりません。** 第二の顔は、そのセッションが実際に
424
+ > 別の作業を*したこと*から生まれるのであって、プロンプトで作れるものではありません。
425
+
327
426
  **6つを毎回すべて回すわけではなく、それが設計です** — 掛け算せずに、**選んでください**:
328
427
 
329
428
  ```
@@ -346,7 +445,9 @@ import している)。小さく戻せる変更ではそうした項目は**
346
445
  **なぜこれが基盤モデルの進化で置き換わらないのか** — 軸は*レビュアーの能力*ではなく**入力**で
347
446
  定義されます。モデルが強くなっても、**「受け取っていない情報」は依然として見えません。** スキャフォー
348
447
  ルディングはモデルが良くなれば脱げますが、**入力境界の脱相関は脱げません**。そして単独の著者は定義上
349
- 自分の入力の外へは出られません。🟥 正直な際どさ: エージェントが**ツールで自分から入力を取りに行く**と
448
+ 自分の入力の外へは出られません。
449
+
450
+ 🟥 **正直な際どさ**: エージェントが**ツールで自分から入力を取りに行く**と
350
451
  境界はぼやけます — 実際「ストア全件が使われていない」と「例外の握り潰し」は ⓐ · ⓒ でも捕まえられる、
351
452
  と外部の判定は見ました(自分で grep するからです)。逆に「他人のレポが過去に廃止したルール」は
352
453
  **ツールでも取りに行けません** — そのプロジェクトのレビュー履歴にアクセスする理由がそもそも
@@ -462,23 +563,42 @@ Code をメインオーケストレーターとし、Gemini, Codex, または An
462
563
 
463
564
  ---
464
565
 
465
- ## 鍛冶場 (The forge)
566
+ ## 鍛冶場 (The forge) — 名前はどこから来たか
466
567
 
467
- forge-harness はプロジェクトを鋼のように扱います — そしてこの比喩は装飾ではなく文字通りです。
568
+ forge-harness はプロジェクトを鋼のように扱い、この比喩は装飾ではなく文字通りです。
468
569
  作業は形を与えられ、攻撃で硬くなり、そうして生き延びたからこそ、はじめてより速く出荷されます。
469
570
 
470
- | 工程 | 何が起きるか | コマンド |
571
+ > 🟥 **これは名前の由来であって手順ではありません 数えないでください。** 下の鍛冶屋の言葉は
572
+ > **語彙**であって、段階のリストではありません。上の **3段工程 · 4大エンジン · 4軸ゲート ·
573
+ > 6軸検証とは別の層**であり、そのどの数字とも対応しません。この節が起こしうる唯一の誤解が
574
+ > 「5つめの番号付きの集合」として読まれることなので、ここで先に断っておきます。
575
+
576
+ **金床の上で三つ:**
577
+
578
+ | 鍛冶屋の言葉 | ここでは何を指すか | コマンド |
471
579
  |---|---|---|
472
580
  | **鍛え (Forge)** | 生のプロジェクトをハーネスへ形づくる — その床を上げる | `install-wizard`, "harness-ify this project" |
473
581
  | **焼き入れ (Quench)** | 攻撃で硬くする — 冷静な検討が健全なものだけを残す | `steel-quench` · `phantom-quench` |
474
582
  | **焼き戻し (Temper)** | 硬くなった資産から脆さ (brittleness) を再び抜く | `steel-quench` Wave-T · `templates/temper_check.sh` |
475
- | → **加速 (Accelerate)** | 鍛冶場を生き延びた刃はより速く斬る | `goal-quench` — *Pass → Accelerate* |
476
583
 
477
- 4工程すべてが出荷されます。焼き戻し (Temper) は作られる*前に*名前が先に付けられ — 意図的に(参照:
478
- [`ETHOS.md`](docs/ETHOS.md#the-forge))— 測定実行が検証したのちに出荷されました。鍛冶場の周りで、さらに2つの
479
- シグネチャが回り続けます: `harvest-loop`(各セッションの教訓が恒久スキルになる)と
480
- `agent-composer`(ディスパッチをオーケストレーション)。残りのスキルは必要になるまで待ちます 全リストは
481
- 下に。
584
+ ```mermaid
585
+ flowchart LR
586
+ F["鍛え"] --> Q["焼き入れ"] --> T["焼き戻し"] --> A(["⟹ 加速"])
587
+ style A fill:#0f766e,stroke:#0f766e,color:#fff
588
+ ```
589
+
590
+ **⟹ そして、速くなります。** 鍛冶場を生き延びた刃はより速く斬る — `goal-quench`、
591
+ *Pass → Accelerate*。速度は上の三つが**生み出すもの**であって、四つめにやることではありません。
592
+ これはこのページ冒頭のタグラインを鍛冶屋の言葉で言い直したものと同じです:
593
+ 品質が梃子であり、速度はその結果です。
594
+
595
+ 上で名前を挙げたコマンドはすべて、いま出荷されています。焼き戻し (Temper) は作られる*前に*名前が
596
+ 先に付けられ — 意図的に(参照: [`ETHOS.md`](docs/ETHOS.md#the-forge))— 測定実行が検証したのちに
597
+ 出荷されました。
598
+
599
+ 鍛冶場の周りで、さらに2つのシグネチャが回り続けます: `harvest-loop`(各セッションの教訓が恒久
600
+ スキルになる)と `agent-composer`(ディスパッチをオーケストレーション)。残りのスキルは必要に
601
+ なるまで待ちます — 全リストは下に。
482
602
 
483
603
  ## 40 skills · 8 agents
484
604
 
package/README.ko.md CHANGED
@@ -18,24 +18,67 @@
18
18
  </p>
19
19
 
20
20
  <p align="center">
21
- <sub>도움이 됐다면 하나가 다른 사람이 찾는 데 도움이 됩니다.</sub>
21
+ <b>품질 게이트를 내장한 메타하네스입니다.</b>
22
22
  </p>
23
23
 
24
24
  <p align="center">
25
- <b>당신의 Claude Code 프로젝트를 벼려서 통과시키면, 빠르게 나옵니다.</b><br>
26
- 실무자의 <b>메타하네스</b> 당신의 프로젝트 하네스들이 사는 은하계.<br>각 프로젝트의 <b>바닥(floor)</b>을 올리고(설정을 하네스화) <b>천장(ceiling)</b>을 올린 뒤(작업을 가속), 그 이득을 포트폴리오 전체에 복리로 쌓습니다.
25
+ 프로젝트든 스킬이든 하네스든 만들고, 검증하고, 가속하는 일을 여기서 시킵니다.<br>
26
+ 다만 그냥 내주지 않습니다. 서로 <i>다르게</i> 실패하는 검사 여럿을 통과시킨 뒤에 내줍니다.<br>
27
+ <b>그리고 같은 요청이 반복되면, 그 일을 대신할 하네스를 직접 만들어 냅니다.</b>
27
28
  </p>
28
29
 
29
30
  <p align="center">
30
- <b>품질이 지렛대이고, 속도는 결과입니다.</b> 모든 변경은 게이트를 통과해 값을 증명합니다 —<br>적대(adversarial) · 팬텀(phantom) · 회귀(regression) — 그리고 <i>그것</i>이 다음 변경을 더 빠르게 만듭니다.
31
+ 이미 Claude Code 같은 말을 반복하고 계실 겁니다. 돌려야 검사, 지켜야 규칙,
32
+ 변경이 갖춰야 할 모양. 재사용 가능해지는 것이 바로 그 부분이고, 일부러 범용으로 두어
33
+ 쓰시는 동안 사례에 맞춰 벼립니다.<br>
34
+ <sub>커지는 것은 시도 횟수입니다 — 시행착오가 당신에게서 떨어져 나가 병렬로 돕니다.</sub>
31
35
  </p>
32
36
 
37
+ ---
38
+
39
+ ## 2분이면 됩니다 — 이 문서를 다 읽지 않으셔도 됩니다
40
+
41
+ ```bash
42
+ claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git
43
+ claude plugin install -s user fh-meta@forge-harness
44
+ git clone https://github.com/chrono-meta/forge-harness.git ~/projects/forge-harness
45
+ cd ~/projects/forge-harness && claude
46
+ ```
47
+
48
+ **그리고 `안녕` 이라고 입력하세요.** `hi` · `こんにちは` · `你好` — 편한 말이면 무엇이든 됩니다.
49
+ **어느 쪽으로 인사하든 메뉴가 열리고**, 그 언어로 답하려 합니다. 번호가 붙은 메뉴가 뜨면
50
+ 거기서부터는 도구가 안내합니다. 문을 고르고 몇 가지에 답하면 설치 마법사까지 대신 돌려 줍니다.
51
+
52
+ <sub>🟥 <b>마지막 문장은 정직하게 적습니다</b>: 언어를 맞추는 것은 <b>기계 게이트가 없는 산문
53
+ 규칙</b>이라 늘 지켜지지는 않습니다. 2026-08-21 블라인드 플로어 티어로, <b>방금 하신 것과 같은
54
+ 새 클론</b>에서 재 봤습니다 — 중국어·한국어 인사 모두 <b>문 라벨까지 그 언어로</b> 돌아왔습니다.
55
+ 반면 기본 언어가 핀으로 박힌 개발자 본인 머신에서는 중국어가 <b>5번 중 1번</b>만 맞았고, 이 각주가
56
+ 있는 이유가 그것입니다. 아직 흔들리는 쪽은 <b>메뉴가 뜨는지</b>입니다 — 인사말 한 종류에서는 메뉴가
57
+ 안 떴습니다. 언어가 어긋나거나 메뉴가 안 뜨면 그냥 말씀하세요, 바로 바꿉니다. 이 잔여는 덮지 않고
58
+ <code>CLAUDE.md</code> §Voice/Tone 에 적어 두었습니다.</sub>
59
+
60
+ 이 아래는 필요할 때 찾아보는 참고 자료이고, 시작하기 전에 읽어야 하는 숙제가 아닙니다.
61
+
62
+ - **증폭하는 것** — 시도 횟수입니다. 시행착오가 당신에게서 떨어져 나가 병렬로 돕니다.
63
+
64
+ - **증폭하지 않는 것** — 모델의 천장입니다. 하네스는 모델을 자기 천장까지 끌어올릴 뿐,
65
+ 그 너머로 밀어 올리지는 못합니다.
66
+
67
+ - **확인하는 법** — 자기 등급을 공개합니다. **스스로 무엇이라고 주장하는지를 다섯 가지로
68
+ 이름 붙여 두고**(하네스 클러스터 · 프로젝트 인큐베이터 · 거버넌스 게이트 · 프런티어 → 조직 전파 ·
69
+ 증폭자), 그 각각을 [릴리스](https://github.com/chrono-meta/forge-harness/releases)마다 정직하게
70
+ 채점합니다. 초록이 아닌 칸은 아직 없는 실제 실행이 무엇인지 이름으로 말합니다.
71
+ <sub>다섯 각각은 아래 «다섯 정체성» 절에서 풀어 씁니다.</sub>
72
+
73
+ ---
74
+
33
75
  <p align="center">
34
- <i>포크하세요. 이름을 바꾸세요. 당신의 것으로 만드세요.</i>
76
+ <img src="docs/pillars.svg" alt="HARNESS - FORGE - ACCELERATE - COMPOUND" width="680">
35
77
  </p>
36
78
 
37
79
  <p align="center">
38
- <img src="docs/pillars.svg" alt="FORK · ADAPT · COLLABORATE · EMPOWER" width="680">
80
+ <b>품질이 지렛대이고 속도는 결과입니다.</b><br>
81
+ <sub>도움이 됐다면 ⭐ 하나가 다른 분이 찾는 데 도움이 됩니다.</sub>
39
82
  </p>
40
83
 
41
84
  <p align="center">
@@ -98,7 +141,9 @@ cd ~/projects/forge-harness
98
141
  claude
99
142
  ```
100
143
 
101
- > ✅ 그다음 **인사를 타이핑하세요("hi")**🐿️ 메뉴는 실행만으로가 아니라 타이핑된 인사에 뜹니다.
144
+ > ✅ 그다음 **인사를 타이핑하세요**`안녕` · `hi` · `こんにちは` · `你好`, 편한 언어면 됩니다.
145
+ > 그 언어로 답하려 합니다(위 각주 참고 — 대체로 맞지만 항상은 아닙니다).
146
+ > 🐿️ 문 메뉴는 실행만으로가 아니라 *타이핑된* 인사에 뜹니다.
102
147
  > **"프로젝트 연결해줘"** 라고 하면 → 허브가 `../`를 스캔해 `.git` 디렉터리를 찾고 `tracks/{project}/`를 생성합니다.
103
148
  > 전체 초기 설정(훅 · 게이트 · 베이스라인 — 항목마다 개별 승인하며, 거부해도 존중하고 기록합니다)은
104
149
  > **`/install-wizard`**를 요청하세요.
@@ -107,7 +152,7 @@ claude
107
152
 
108
153
  **처음 15분** — 무엇이 성공이고, 그것으로 무엇을 할 것인가:
109
154
 
110
- 1. 인사("hi")에 🐿️ 문 메뉴가 뜨고, "프로젝트 연결해줘"가 `tracks/{your-project}/`를 만들면 설정이
155
+ 1. 어떤 언어로 인사하든 🐿️ 문 메뉴가 뜨고, "프로젝트 연결해줘"가 `tracks/{your-project}/`를 만들면 설정이
111
156
  된 것입니다.
112
157
  2. 그다음 같은 세션에서 즉시 얻을 수 있는 것을 챙기세요: **"이 프로젝트 가속화해줘"**(배선할 값어치가
113
158
  있는 스킬·플러그인의 순위 계획, 설치는 게이트를 거침) 또는 **"/context-doctor 돌려줘"**(토큰 낭비 스캔).
@@ -293,11 +338,25 @@ Project B ──→ CLAUDE.md에서 허브 연결
293
338
 
294
339
  **3단 공정** — 이것은 메뉴가 아니라 *투자의 순서*입니다:
295
340
 
341
+ ```mermaid
342
+ flowchart LR
343
+ S["① 설계 전에<br/>판단 회로"]
344
+ P["② 중간은<br/>병렬 탈상관"]
345
+ B["③ 마무리<br/>6축 태우기"]
346
+ A(["⟹ 가속된다"])
347
+ S --> P --> B --> A
348
+ style A fill:#0f766e,stroke:#0f766e,color:#fff
349
+ ```
350
+
351
+ **속도는 맨 끝의 화살표지 네 번째 상자가 아닙니다.** 그리고 ②는 **따로 돌리는 두 다이얼**입니다 —
352
+ *탈상관*(사각 위험에 반응 — 다른 모델 계열 ⓐ · 다른 입장 ⓑ)과 *병렬*(표면 크기에 반응 — 한
353
+ 컨텍스트에 담기나). 곱하지 말고 고르세요.
354
+
296
355
  ```
297
356
  ① 설계 전에 회로 판단 회로부터 심을 것 — 무엇이 성공 · 어디로 기움 · 범위 밖 ·
298
357
  절대 안 함. 한 일을 나중에 기록으로 적어두는 게 아님
299
358
 
300
- ② 중간은 탈상관으로 작업을 «다르게 실패하는» 검사들로 쪼개어 한꺼번에 돌릴 것.
359
+ ② 중간은 병렬 탈상관 작업을 «다르게 실패하는» 검사들로 쪼개어 한꺼번에 돌릴 것.
301
360
  가속 어떤 차이가 중요한지 고를 것 — 같은 종류의 리뷰어를 하나 더
302
361
  붙이는 건 탈상관이 아니라 같은 사각을 두 번 보는 것.
303
362
  병렬화 자체엔 방향이 없고, 고르는 것은 ①의 판단 회로.
@@ -308,6 +367,11 @@ Project B ──→ CLAUDE.md에서 허브 연결
308
367
  얹어도 그 축이 못 보는 것은 여전히 못 봅니다
309
368
  ```
310
369
 
370
+ > 📖 **여기서부터는 더 궁금한 분 몫입니다 — 쓰기 시작하는 데는 필요 없습니다.**
371
+ > 설치하고 굴리러 오셨다면 맨 위 2분 절이 전부이고, 여기서 멈추셨다가 어떤 검사가 의아할 때
372
+ > 돌아오시면 됩니다. 아래는 게이트가 왜 그렇게 생겼는지에 대한 이야기라, 이미 허브를 돌리는
373
+ > 분을 향해 쓰여 있습니다. 낯선 말은 → [`GLOSSARY.md`](knowledge/shared/GLOSSARY.md).
374
+
311
375
  **여섯 검증 축** — "리뷰했다"가 실제로는 이 중 첫 번째 하나만 뜻하는 경우가 대부분입니다.
312
376
 
313
377
  🟥 **축은 «얼마나 적대적인가»로 갈리지 않습니다. «무엇을 받았는가»로 갈립니다.** 받는 것이 같으면
@@ -315,13 +379,43 @@ Project B ──→ CLAUDE.md에서 허브 연결
315
379
 
316
380
  | 축 | **받는 것** | 무엇이 틀린 경우를 잡나 | 대표 계기 |
317
381
  |---|---|---|---|
318
- | **ⓐ 다른 패밀리** | diff + 저자의 프레이밍 | **구현**이 틀림 | 다른 모델 패밀리의 리뷰어(`auto-decorrelation`) |
319
- | **ⓑ 입장** | diff + **대상 하네스의 정본** | **인용한 규약이 정말 그렇게 말하나** | 그 하네스 자신의 레포·규칙에서 diff를 돌림 ([`§7`](knowledge/shared/harness-core/field_verdict_crossfamily_gate.md)) |
320
- | **ⓒ 격리 그라운딩** | 저자가 쓴 문장 + 지금의 트리 | **주장**이 틀림 | 그것을 쓰지 않은 쪽이 적힌 내용을 다시 |
382
+ | **ⓐ 다른 패밀리** | 변경분 + 저자의 프레이밍 | **구현**이 틀림 | 다른 모델 패밀리의 리뷰어(`auto-decorrelation`) |
383
+ | **ⓑ 입장** | 변경분 + **대상 하네스의 정본** | **인용한 규약이 정말 그렇게 말하나** | 그 하네스 자신의 레포·규칙에서 변경분을 돌림 ([`§7`](knowledge/shared/harness-core/field_verdict_crossfamily_gate.md)) |
384
+ | **ⓒ 격리 그라운딩** | 저자가 쓴 문장 — 주장 *그리고* **시작 전에 선언해 둔 것** — + 지금의 트리 | **주장**이 틀림 · 델타가 선언한 것과 안 맞음 | 그것을 쓰지 않은 쪽이 적힌 내용을 다시 잼. 사전선언 쪽은, 적어 둔 성공 정의를 델타에 되짚는 게이트 |
321
385
  | **ⓓ 3자 대면** | 문제 + **남의 코드베이스** | **이미 풀린 문제 아닌가** · 내 변경이 남의 레포를 어디서 만지나 | 관련 없는 제3의 레포에서 같은 문제를 봄 |
322
386
  | **ⓔ 첫 실사용** | 실물 대상 한 건 | **재는 방식**이 틀림 — 계기의 계기 | 진짜 대상 하나에 돌리고 결과를 손으로 확인 |
323
387
  | **ⓕ 되돌려 관찰** | 배선을 지운 트리 | **앵커**가 틀림 — 검사가 장식임 | 지키는 대상을 지우고 *바로 그* 검사가 빨개지는지 확인 |
324
388
 
389
+ > **ⓒ가 2026-08-21 에 넓어졌고, «어떻게» 넓어졌는지가 더 쓸모 있습니다.** 이 저장소의 커밋 마커는
390
+ > 2026-08-09 부터 저자 자신의 **사전선언** — *무엇을 성공으로 치나* · *무엇은 절대 안 하나* — 을
391
+ > 설계 *전에* 적도록 의무화돼 있었습니다. 그날 컨트롤을 붙여 재 봤더니 **그걸 읽는 코드가 0줄**
392
+ > 이었습니다. 형제 필드들은 21곳에서 검사되는 동안, 게이트 스펙은 그 필드를 이름조차 부르지
393
+ > 않았습니다. 실제 코퍼스에서는 **마커 98개 중 37개가 그 줄을 아예 안 달고** 있었고, 그중엔 레인
394
+ > 28개에 다른 필드는 전부 채운 패널-리뷰 통과본도 있었습니다. 축들은 전부 *바깥*을 봤습니다
395
+ > — 변경분, 대상 레포, 선행 사례, 산출물. **그 기록 자신의 의무 필드**를 본 축은 없었습니다.
396
+ > 소비처 없는 슬롯은 언제나 「됐다」고 보고합니다. **존재가 판정을 대신하고 있기 때문입니다.**
397
+ >
398
+ > 수리는 일곱 번째 축이 아니었습니다. ⓒ는 이미 *저자가 쓴 문장 + 지금의 트리*를 받고, 그건
399
+ > 사전선언 검사가 받는 것과 **글자 그대로 같습니다**. 시제(먼저 선언했나 / 나중에 주장했나)는
400
+ > 적대성과 마찬가지로 **자세**지 축이 아닙니다. 새로 하나 찍었다면 위 블라인드 재분류가 잡아낸
401
+ > 바로 그 오류를 반복하는 것이었습니다.
402
+
403
+ > **피어 세션은 ⓑ와 ⓓ에 적습니다 — 2026-08-21 결정, 그리고 «어느 피어에게 묻나»가 핵심입니다.**
404
+ > 같은 하네스에서 갈라져 나와 **다른 갈래에서 뜨겁게 돌고 있는** 병렬 세션은 당신의 사본이
405
+ > 아닙니다. 뜨거워진 그 지점에서 그 세션에는 실제로 **두 번째 얼굴**이 생깁니다 — 진짜 다른
406
+ > 입장(ⓑ)이고, 진짜 남의 코드베이스 자리(ⓓ)입니다. 그래서 피어의 판정은 그 두 축에 기록하고,
407
+ > 일곱 번째 축은 만들지 않았습니다. 마커 `axes-run` 배열도 그대로입니다.
408
+ >
409
+ > 위 ⓓ 행이 «다른 회사의 레포»가 아니라 **«남의 코드베이스»**라고 적힌 이유가 여기 있습니다 —
410
+ > 경계는 **그 판정을 만들어낸 작업 맥락이 누구 것인가**이지, GitHub 조직이 누구 것인가가
411
+ > 아닙니다. 다른 갈래에서 뜨거운 피어는 그 경계 **바깥**이고, 이 맥락에서 띄운 서브에이전트는
412
+ > 아무리 다른 레포를 읽어도 그 경계 **안**입니다.
413
+ >
414
+ > 🟥 물리는 지점은 따름정리 쪽입니다. **피어에게는 그 피어가 뜨거워진 축을 물으세요.** 그 밖에서
415
+ > 피어는 당신과 같은 얼굴을 하고 있고, 물어도 탈상관이 안 됩니다 — 같은 입력, 같은 사각.
416
+ > 서브에이전트로도, 자기 글 다시 읽기로도 **대체되지 않습니다.** 두 번째 얼굴은 그 세션이 실제로
417
+ > 다른 일을 *했다는 데서* 나오는 것이지, 프롬프트로 만들어지지 않습니다.
418
+
325
419
  **여섯을 매번 다 돌리지 않으며, 그것이 설계입니다** — 곱하지 말고 **고르세요**:
326
420
 
327
421
  ```
@@ -342,7 +436,8 @@ Project B ──→ CLAUDE.md에서 허브 연결
342
436
  **왜 이것이 기반 모델 발전으로 대체되지 않나** — 축은 *리뷰어의 능력*이 아니라 **입력**으로
343
437
  정의됩니다. 모델이 세져도 **«받지 않은 정보»는 여전히 못 봅니다.** 스캐폴딩은 모델이 좋아지면
344
438
  벗겨지지만 **입력 경계 탈상관은 벗겨지지 않으며**, 단일 저자는 정의상 자기 입력을 벗어날 수 없습니다.
345
- 🟥 정직한 가장자리: 에이전트가 **도구로 스스로 입력을 더 가져오면** 경계는 흐려집니다 — 실제로
439
+
440
+ 🟥 **정직한 가장자리**: 에이전트가 **도구로 스스로 입력을 더 가져오면** 경계는 흐려집니다 — 실제로
346
441
  「저장소 전수 미사용」과 「예외 삼킴」은 ⓐ·ⓒ 도 잡을 수 있다고 외부 판정이 봤습니다(스스로 grep 하니까).
347
442
  반대로 「남의 레포가 과거에 폐기한 규칙」은 **도구로도 가져올 수 없습니다** — 그 프로젝트의 리뷰
348
443
  이력에 접근할 이유가 애초에 없기 때문입니다. 거기가 ⓓ가 남는 자리입니다.
@@ -504,23 +599,41 @@ FH의 degrade-direction 렌즈를 붙이자 오탐 0으로 6/8을 잡았습니
504
599
 
505
600
  ---
506
601
 
507
- ## 대장간(The forge)
602
+ ## 대장간(The forge) — 이름이 어디서 왔나
508
603
 
509
- forge-harness는 프로젝트를 강철처럼 다룹니다 — 그리고 이 은유는 장식이 아니라 문자 그대로입니다.
604
+ forge-harness는 프로젝트를 강철처럼 다루고, 이 은유는 장식이 아니라 문자 그대로입니다.
510
605
  작업은 형태를 잡고, 공격으로 단단해지며, 그렇게 살아남았기에 비로소 더 빠르게 출하됩니다.
511
606
 
512
- | 공정 | 무슨 일이 일어나나 | 명령 |
607
+ > 🟥 **이건 이름의 유래지 절차가 아닙니다 세지 마세요.** 아래 대장장이의 말들은 **어휘**이지
608
+ > 단계 목록이 아닙니다. 위의 **3단 공정 · 4대 엔진 · 4축 게이트 · 6축 검증과는 다른 층**이고,
609
+ > 그 어느 숫자와도 대응하지 않습니다. 이 절이 일으킬 수 있는 유일한 오해가 «다섯 번째 번호 붙은
610
+ > 집합»으로 읽히는 것이라, 여기서 미리 끊어 둡니다.
611
+
612
+ **모루 위에서 셋:**
613
+
614
+ | 대장장이의 말 | 여기서는 무슨 뜻인가 | 명령 |
513
615
  |---|---|---|
514
616
  | **벼림(Forge)** | 날것의 프로젝트를 하네스로 형태 잡기 — 바닥을 올림 | `install-wizard`, "이 프로젝트 하네스화" |
515
617
  | **담금질(Quench)** | 공격으로 단단하게 — 냉정한 검토가 건전한 것만 남김 | `steel-quench` · `phantom-quench` |
516
618
  | **뜨임(Temper)** | 단단해진 자산에서 취성(brittleness)을 다시 빼냄 | `steel-quench` Wave-T · `templates/temper_check.sh` |
517
- | → **가속(Accelerate)** | 대장간을 살아남은 칼날은 더 빠르게 벤다 | `goal-quench` — *Pass → Accelerate* |
518
619
 
519
- 네 공정 모두 출하됩니다. 뜨임(Temper)은 만들어지기 *전에* 이름부터 붙였고 — 의도적으로(참조:
520
- [`ETHOS.md`](docs/ETHOS.md#the-forge)) — 측정 실행이 검증한 뒤에 출하됐습니다. 대장간 주위에서 두
521
- 시그니처가 돌아갑니다: `harvest-loop`(매 세션의 교훈이 영구 스킬이 )
522
- `agent-composer`(디스패치를 오케스트레이션). 나머지 스킬은 필요해질 때까지 기다립니다 — 전체 목록은
523
- 아래에.
620
+ ```mermaid
621
+ flowchart LR
622
+ F["벼림 Forge"] --> Q["담금질 Quench"] --> T["뜨임 Temper"] --> A(["⟹ 가속"])
623
+ style A fill:#0f766e,stroke:#0f766e,color:#fff
624
+ ```
625
+
626
+ **⟹ 그러고 나서 빨라집니다.** 대장간을 살아남은 칼날은 더 빠르게 벱니다 — `goal-quench`,
627
+ *Pass → Accelerate*. 속도는 위 셋이 **만들어내는 것**이지, 네 번째로 하는 일이 아닙니다.
628
+ 이 페이지 맨 위의 한 줄을 대장장이의 말로 옮긴 것과 같습니다 — 품질이 지렛대이고, 속도는 그 결과입니다.
629
+
630
+ 위에 이름을 댄 명령은 전부 지금 출하돼 있습니다. 뜨임(Temper)은 만들어지기 *전에* 이름부터
631
+ 붙였고 — 의도적으로(참조: [`ETHOS.md`](docs/ETHOS.md#the-forge)) — 측정 실행이 검증한 뒤에
632
+ 출하됐습니다.
633
+
634
+ 대장간 주위에서 두 시그니처가 더 돌아갑니다: `harvest-loop`(매 세션의 교훈이 영구 스킬이 됨)와
635
+ `agent-composer`(디스패치를 오케스트레이션). 나머지 스킬은 필요해질 때까지 기다립니다 —
636
+ 전체 목록은 아래에.
524
637
 
525
638
  ## 40 skills · 8 agents
526
639