make-harness は何をしますか?
このスキルは、ユーザーが現在のリポジトリにプロジェクトローカルなハーネスをセットアップ、監査、更新、または修復したい場合に使用します。
このスキルはブートストラッパー兼メンテナンスエントリポイントです。実際のプロジェクト契約はスキル自体ではなく、ターゲットプロジェクトのローカルファイルに存在する必要があります。
このスキルが管理するもの
以下のプロジェクトローカルファイルを作成、更新、または修復します。
AGENTS.mdCLAUDE.mdGEMINI.mdPROJECT_HARNESS.mdharness-contract.jsonharness-runtime.json
テンプレートのソースは assets/templates にあります。 tools/apply-harness.py を使用して、契約/ランタイムのペアから投影ファイルを決定論的に再生成します。 tools/check-harness-done.py を、ハーネスが完了したと見なす前の完了ゲートとして使用します。 tools/check-sensitive-change.py は、CI、フック、またはレビュアーが、現在の差分が機密領域に触れているかどうかを判断するための、軽量なパスベースの簡易チェックを必要とする場合に使用します。
コア動作
- 最初に現在のリポジトリと既存のハーネスファイルを検査します。
/make-harnessを単一のエントリコマンドとして扱います:ハーネスが存在しない場合はbootstrap、健全なハーネスがすでに存在する場合はupdate、ドリフトや破損が検出された場合はrepair。- 永続的なプロジェクト契約を
PROJECT_HARNESS.mdとharness-contract.jsonに保持します。 - インタビューの進行状況、同期メタデータ、言語検出ヒントは
harness-runtime.jsonのみに保持します。 - ハーネスが不完全であるか、永続的なデフォルトが欠落している場合は、デフォルトを最終的なものとして扱う前に、短いインタビューを開始します。
- インタビューは対話形式で、一度に1つの質問を行います。
- まずリポジトリのシグナルから推測される共同作業言語を検出し、不明な場合は確認します。英語優先のオープナーを強制しません。
- 各回答の後、ランタイムの進行状況を
harness-runtime.jsonに、永続的な回答をharness-contract.jsonに反映します。 - 永続的なプロジェクトのデフォルト、プロジェクトローカルなセキュリティガードレール、および実行ガードレールのみを確認します。
- 最小限の実施意図を
rule_strengthsに記録し、契約がアドバイザリ、ガイド付き、強制のルールを区別できるようにします。 AGENTS.md、CLAUDE.md、GEMINI.mdは薄く保ちます。永続的な契約はPROJECT_HARNESS.mdに置き、エントリファイルはポインタとサマリールールとして保持します。- 管理対象のハーネスファイルが確認済みの契約で一致していることを検証します。ドリフトが検出された場合は、終了前に修復します。
- 成功を宣言する前に完了ゲートを実行します:監査が合格し、ランタイム状態が健全で、検証済みの共有フィールドが完全で、決定論的な投影がチェックインされたファイルと一致している必要があります。
- 現在の差分が機密領域に触れている場合、軽量なパスベースのガードレール簡易チェックを使用して、強制されたガードレールが適用される場合にCI/フックが確定的に失敗できるようにします。
- フック統合では、
HEAD~1..HEADの推測よりもステージングファイルのチェックを優先し、MAKE_HARNESS_HOOK_MODEを使用してプロジェクト間の命名の残骸を避け、単一のハードコードされた動作ではなく、小さなstrict/warn/offモードスイッチを許可します。 - 永続的なプロジェクト契約が変更されるたびに、簡潔な変更履歴エントリを記録します。
bugfix、feature、maintenance、refactorなどのリクエストごとの作業タイプを永続的なハーネス状態として保存しないでください。- フレームワークレベルのオーケストレーション設定を永続的なハーネス状態として保存しないでください。
実行分類
harness-contract.json と harness-runtime.json が存在する場合は読み取ります。
- ハーネスが存在しない場合は、ブートストラップします。
- ハーネスが存在し健全な場合は、アップデートモードに入ります。
- ハーネスが存在するがドリフトまたは破損している場合は、まず修復し、必要な場合のみアップデートを続行します。
bootstrap_statusがpending_interviewの場合、ハーネスはまだ設定されていません。bootstrap_statusがinterview_in_progressの場合、記録されたランタイム状態から再開します。
対話型インタビューフロー
- 一度に正確に1つの質問をします。
- これは一度限りのセットアップフローであるため、質問数を最小限に抑えるよりも精度が重要です。
- 既存のリポジトリの場合は、リポジトリファーストのインタビュー動作を使用します:最初に検査して推測し、不明な点のみを確認します。
- 空のプロジェクトの場合は、セットアップ発見インタビュー動作に切り替えます:スタック、ランタイム、パッケージマネージャー、コアコマンドを選択するために必要な少数の事前質問のみをします。
- references/interview-protocol.md の固定された質問順序に従います。
- リポジトリがすでに可能性の高い答えを提供している場合は、自由形式の質問よりも確認質問を優先します。
- 通常推測可能なメタデータについては、尋ねるよりもリポジトリを検査することを優先します。
- 検出ファーストの言語選択を使用します:
- READMEの言語、既存のルートドキュメント、コメント、ファイル命名パターンを探します
- 1つの言語が強く示唆される場合は、確認のトーンでそこから始めます
- シグナルが弱いか混在している場合は、言語の質問を平易な英語で行います
- プロトコルからのインタビュー質問予算を尊重します:
- 一般的なリポジトリでは、明示的な質問を5つ以下にすることを目標とします
- 8つをソフトシーリングとして扱い、正当化が必要です
- 単純なユーザー回答を、状態を書き込む前に正規化された保存値に正規化します。
references/interview-protocol.mdの正規化テーブルをproject_type、change_posture、approval_policy、verification_policy、communication_toneに使用します。references/interview-protocol.mdのユーザー向け質問テンプレートを使用し、内部スキーマ名を直接公開しないでください。- 信頼度(
high、medium、low)に基づいて、プロトコルの3段階テンプレートマトリックスから文言を選択します。 - インタビューが英語で行われる場合は、アドホックな翻訳ではなく、プロトコルの英語コンパニオンテンプレートを使用します。
- 人物ラベルごとではなく、回答ごとに適応します:ユーザーの実際の応答パターンに基づいて、精度モード、明確化モード、安全デフォルトモードを切り替えます。
pending_fieldsとconfirmed_fieldsを重複しないセットとして正規化された状態に保ちます。- リポジトリから導出された推測は、確認されるまで一時的な推論として扱います。
bootstrap_statusがinterview_in_progressの場合、再起動する代わりに記録されたinterview_stepから再開します。- 新しいユーザー回答が永続的な状態や強力なリポジトリシグナルと矛盾を生じさせる場合は、契約を上書きする前に確認します。
- 必要なすべての永続的なデフォルトが確認された場合にのみ、
bootstrap_statusをconfiguredに設定します。
出力ファイル
ブートストラップ、アップデート、または修復の後、ターゲットプロジェクトには以下が含まれている必要があります。
- 薄い
AGENTS.md - 薄い
CLAUDE.md - 薄い
GEMINI.md - 人間が読める
PROJECT_HARNESS.md - 機械可読な永続的
harness-contract.json - 機械可読な揮発性
harness-runtime.json
リソース
- テンプレート: assets/templates
- 共存: docs/coexistence.md
- インタビューガイド: references/interview-guide.md
- インタビュープロトコル: references/interview-protocol.md
- 修復と検証ガイド: references/repair-validation-guide.md
- 検証フィクスチャ: assets/fixtures
- インタビュープランナー: tools/interview_planner.py — テストとフィクスチャで空プロジェクトの発見、リポジトリファーストの確認、再開順序、回答モードの適応を固定する決定論的ヘルパー
- 修復プレイブック: assets/repair-playbook.md
- 健全性チェックリスト: assets/healthy-checklist.md
- サンプル出力: assets/examples
- ローカル監査ツール: tools/audit-harness.py — 管理ファイル、
PROJECT_HARNESS.mdの構造、エントリの薄さ、ランタイム不変条件をチェックします - 決定論的投影生成器: tools/apply-harness.py — 正規の契約/ランタイムファイルから
PROJECT_HARNESS.md、AGENTS.md、CLAUDE.md、GEMINI.mdを再生成します - 完了ゲート: tools/check-harness-done.py — ハーネスが完了したと見なされる前に、監査の成功、健全なランタイム状態、完全な検証済み共有フィールド、および投影ドリフトのゼロを要求します
- 差分に敏感なガードレールチェッカー: tools/check-sensitive-change.py — 認証/権限/シークレット/支払い/暗号化/公開APIに触れる差分のための軽量なパスベースの簡易チェック。関連するルールの強度が"enforced"の場合のみブロックします
- ポジショニング: docs/positioning.md
- コントリビューティング: CONTRIBUTING.md
- オプションのUIメタデータ: agents/openai.yaml、agents/gemini.yaml