Communityコーディング&開発github.com

make-harness

プロジェクトローカルなAIハーネスを静かにセットアップし、永続的なプロジェクト契約を維持するためのスターターです。

make-harness とは?

このスキルは、現在のリポジトリ内でプロジェクトローカルなAIハーネス(AGENTS.md、CLAUDE.md、GEMINI.md、PROJECT_HARNESS.md、harness-contract.json、harness-runtime.json)を初期化、監査、更新、修復するためのブートストラッパー兼メンテナンスエントリポイントです。ユーザーが「/make-harness」コマンドを実行すると、ハーネスの有無や健全性を自動判別し、bootstrap・update・repairのいずれかのモードで動作します。対話型のインタビューフローではリポジトリのシグナル(READMEの言語、既存のドキュメント、コメント、ファイル命名パターン)を優先して推測し、不明な点だけを確認するため、質問数を最小限に抑えられます。Claude Code・Cursor・Codexなど、エージェントが利用可能な任意のプラットフォームで使用でき、テンプレートやツール(apply-harness.py、check-harness-done.py、check-sensitive-change.py)を活用して、決定論的な生成と整合性検証を行います。

対応✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add parkjangwon/make-harness

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

make-harness は何をしますか?

このスキルは、ユーザーが現在のリポジトリにプロジェクトローカルなハーネスをセットアップ、監査、更新、または修復したい場合に使用します。

このスキルはブートストラッパー兼メンテナンスエントリポイントです。実際のプロジェクト契約はスキル自体ではなく、ターゲットプロジェクトのローカルファイルに存在する必要があります。

このスキルが管理するもの

以下のプロジェクトローカルファイルを作成、更新、または修復します。

  • AGENTS.md
  • CLAUDE.md
  • GEMINI.md
  • PROJECT_HARNESS.md
  • harness-contract.json
  • harness-runtime.json

テンプレートのソースは assets/templates にあります。 tools/apply-harness.py を使用して、契約/ランタイムのペアから投影ファイルを決定論的に再生成します。 tools/check-harness-done.py を、ハーネスが完了したと見なす前の完了ゲートとして使用します。 tools/check-sensitive-change.py は、CI、フック、またはレビュアーが、現在の差分が機密領域に触れているかどうかを判断するための、軽量なパスベースの簡易チェックを必要とする場合に使用します。

コア動作

  1. 最初に現在のリポジトリと既存のハーネスファイルを検査します。
  2. /make-harness を単一のエントリコマンドとして扱います:ハーネスが存在しない場合は bootstrap、健全なハーネスがすでに存在する場合は update、ドリフトや破損が検出された場合は repair。
  3. 永続的なプロジェクト契約を PROJECT_HARNESS.md と harness-contract.json に保持します。
  4. インタビューの進行状況、同期メタデータ、言語検出ヒントは harness-runtime.json のみに保持します。
  5. ハーネスが不完全であるか、永続的なデフォルトが欠落している場合は、デフォルトを最終的なものとして扱う前に、短いインタビューを開始します。
  6. インタビューは対話形式で、一度に1つの質問を行います。
  7. まずリポジトリのシグナルから推測される共同作業言語を検出し、不明な場合は確認します。英語優先のオープナーを強制しません。
  8. 各回答の後、ランタイムの進行状況を harness-runtime.json に、永続的な回答を harness-contract.json に反映します。
  9. 永続的なプロジェクトのデフォルト、プロジェクトローカルなセキュリティガードレール、および実行ガードレールのみを確認します。
  10. 最小限の実施意図を rule_strengths に記録し、契約がアドバイザリ、ガイド付き、強制のルールを区別できるようにします。
  11. AGENTS.md、CLAUDE.md、GEMINI.md は薄く保ちます。永続的な契約は PROJECT_HARNESS.md に置き、エントリファイルはポインタとサマリールールとして保持します。
  12. 管理対象のハーネスファイルが確認済みの契約で一致していることを検証します。ドリフトが検出された場合は、終了前に修復します。
  13. 成功を宣言する前に完了ゲートを実行します:監査が合格し、ランタイム状態が健全で、検証済みの共有フィールドが完全で、決定論的な投影がチェックインされたファイルと一致している必要があります。
  14. 現在の差分が機密領域に触れている場合、軽量なパスベースのガードレール簡易チェックを使用して、強制されたガードレールが適用される場合にCI/フックが確定的に失敗できるようにします。
  15. フック統合では、HEAD~1..HEAD の推測よりもステージングファイルのチェックを優先し、MAKE_HARNESS_HOOK_MODE を使用してプロジェクト間の命名の残骸を避け、単一のハードコードされた動作ではなく、小さな strict / warn / off モードスイッチを許可します。
  16. 永続的なプロジェクト契約が変更されるたびに、簡潔な変更履歴エントリを記録します。
  17. bugfix、feature、maintenance、refactor などのリクエストごとの作業タイプを永続的なハーネス状態として保存しないでください。
  18. フレームワークレベルのオーケストレーション設定を永続的なハーネス状態として保存しないでください。

実行分類

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

リソース

関連スキル