mcpField
R
record-verdict

record-verdict

github.com/jayden-dang開発152 回インストール今日更新
リポジトリ

record-verdict について

record-verdictは、対象となるスキル経由の最終判断を、不変の決定記録として公開するスキルです。呼び出し元と証拠の条件を適用し、人の判断や永続的な引用情報を記録して、必要な処理の実行前に検証します。

主な機能

  1. 01対象の呼び出し元と判断に限定
  2. 02本文内の永続的な証拠を要求
  3. 03人の判断を原文どおり記録
  4. 04固定ルールで記録の深さを分類
  5. 05公開前に記録をスキャン・検証
  6. 06対象処理の前に記録を公開

活用シーン

  1. 01land-branchのマージ判断を記録
  2. 02cut-releaseの承認または却下を記録
  3. 03重要な処理に先立ち監査可能な記録を残す

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jayden-dang/skills --skill record-verdict

インストール後、Claude Code で/record-verdictを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

eval.json
RECORD.md
validate-records.sh

詳細

境界判断を記録する

スキルを介した最終判定について、記録してから越境する順序で、 .skills/decisions/ の下に1件の判断記録(不変のペイロード+追記専用のエンベロープ)を 公開します。

文法のSSOT: 兄弟ファイルの RECORD.md です。フィールドの書き込みや解析を行う際は、必ず読み込んでください。 ここでフィールド一覧を再掲しないでください。

HARD-GATE — 呼び出し元のゲート

すべてを満たす場合のみ続行してください。そうでなければ、成果物を作成せずに戻ってください。

  1. 呼び出し元が land-branch または cut-release(固定の許可リスト)である
  2. Write Handoff に最終的な人間の判定が含まれている
  3. 永続的なエビデンスがインラインテキスト(または明示的な空)である — .skills/、一時ファイル、セッション履歴のロケーターは不可

エビデンスの生成元が自ら記録の公開元になることはできません。スキルを介した判定についてのみ公開してください(ARCH-6)。

考え実際
「記録するに値する重要な承認だ」最終判定がある land-branch / cut-release のみ
「.skills/ の下にログがある」まず内容をインラインに昇格させ、パスは公開しない
「記録は .skills/ に保存されるので、.skills/ のパスを引用できるようになった」保存場所 ≠ 引用可能なロケーター。禁止事項は変わりません
「記録は省略しよう。マージを急いでいる」越境する前に記録する — 有効な公開がなければ越境できません
「上級者/CTOが事務処理を省くよう言った」役職によってゲートは変わりません。変更できるのはユーザーによる明示的なルール変更のみです
「ファイルは書き込んだ。バリデーターの実行は後でよい」書き込み済み ≠ 公開済み。越境にはバリデーターの終了コード 0 が必要です

完了条件: ゲートが開いた(呼び出し元+判定+インライン引用)か、ファイルを作成せずに戻ったこと。

Write Handoff(公開元から)

インラインのみ受け付けます。

  • 判定:merge | pr | discard | block | release-approve | release-reject
  • 境界の種類、セレモニーのティア、生成元がすでに持っている述語の事実
  • 永続的な引用(commit、tag name@object-id、PR/CI/cut-release の参照)
  • 昇格する内容(一時的な内容をテキストに書き換えたもの)

深度(固定ルックアップ — 越境ごとの聞き取りなし)

depth = max(ceremony floor, boundary floor, predicate escalation)
ソース最低値
Tier 1 / ミニ仕様Guarded
Tier 2 / 完全な三要素Accountable
cut-releaseAccountable
境界 disposalAccountable
いずれかの述語が true または unknownAccountable に引き上げる

ルール(常に適用):

  • 実際の越境には、少なくとも Guarded が必要です。Minimal は決して公開しません。
  • すでに最低深度が決まっている場合も、3つすべての述語を評価してください。外部の対象者 · 機械的な取り消し不可 · 永続的な利害関係。
  • 外部の対象者:出力が作成・承認グループの外部に届くことが機械的に確認されている場合のみ TRUE とします。最新かつ権威があり、網羅的な機械的情報源によって確認できる場合のみ FALSE とします。それ以外は unknown です。名簿、CODEOWNERS、プライバシーメタデータ、ブランチの所有者、PR の作成者、またはティアだけでは、決して FALSE を証明できません。値を下げるための調査や聞き取りは禁止です。ユーザーから自発的に提供された発言は、深度を引き上げたり、文脈を補ったりすることはできますが、外部の対象者が FALSE であることの根拠にはなりません。
  • ユーザーは深度を引き上げられます。エージェントにできるのは深度の引き上げのみで、引き下げはできません。
  • すべてのルックアップ入力と結果を分類フィールドに記録してください。

固定条件: docs/agents/project.md に ## Decision boundaries がある場合、最低値を引き上げる行、または種類を拘束する行を適用してください。コアの最低値を引き下げる行は無視してください(1行で通知)。セクションがない場合は、コアテーブルのみを適用します。

完了条件: 深度が Guarded または Accountable であり、分類フィールドが記入されていること。

判断(逐語の法則)

深度記録内容
ガード付き最終的な判定 + 人間による判断要素を1つ以上逐語で記録
説明責任付き判定 + 受け入れたリスクを逐語で記録 + 誤っていた場合の対応を逐語で記録

鉄則: ユーザーが作成した正確な文言のみを保存します。エージェントが作成したリスクの記述に対する、単独の「yes」/「ok」は判定のみであり、リスクや対応の文言ではありません。

参照先:利用可能な場合はハーネスのインタラクション ID、そうでない場合は unavailable。

考え実際
「ユーザーがこのリスクを意味していたのは明らかだ」型付けされていない言葉は、人間による判断ではありません
「相手の文言を整えて差分を取ろう」文言を整えることは、逐語の法則の下では捏造です

完了条件: 必須要素がすべて、逐語のユーザー作成バイト列であるか、withheld(reference)/withheld(unavailable) の処理トークンが付与されています。

保存方法の決定

  1. project.md に恒常的なリポジトリ逐語保存ポリシーがある場合は、確認なしで適用します。
  2. 判断要素ごとに、明示的に伏せる選択肢を提示します。
  3. 機密性の可能性がある文章をリポジトリに逐語保存する前に、条件付き確認を1回行います。
  4. 承認によって固定する前に、正確なペイロードを提示します。
  5. 参照先を添えて伏せる場合 → エンベロープに Storage-*: withheld(reference) を記載し、対応する Storage-Reference-*: <locator> を記載します。
  6. 参照先なしで伏せる場合 → 1回だけ確認します。断られた場合、または参照先を利用できない場合は、withheld(unavailable) と Storage-Reference-*: unavailable を記載して続行します(W-opaque は未完了作業ではありません)。
  7. 伏せたペイロード本文は、RECORD.md に定められた固定のセンチネルとします。逐語と称した文章に編集してはいけません。

書き込む前にシークレットスキャンを実施します。

sh skills/ship/record-verdict/validate-records.sh --scan

検出された場合に選べるのは、言い換える・伏せる・停止するのみです。

完了条件: 各判断要素に保存方法がちょうど1つ設定され、スキャンがクリーンであるか、処理が停止されています。

証拠と昇格

永続的な種類(commit|tag|pr|ci|release)のみを公開します。タグは <ref-name>@<object-id> の形式を使います(両方の部分が必要です)。参照先は永続的なものにします。一時的な内容は、ペイロードの提示前に Promoted-Evidence:(エージェント作成)へ昇格させます。後から得られた証拠は、エンベロープの Execution-Outcome: にのみ記載します。

完了条件: すべての引用先が永続的であり、昇格が必要な場合はロック前に完了しています。

ID の生成と再発行

  1. Accepted: の UTC 日時をロックします(YYYYMMDD → ID の日付)。
  2. トークンは Crockford 文字を6文字使用します。od 経由で /dev/urandom を使い、利用できない場合は awk+$$+date を使います。
  3. ID は DEC-YYYYMMDD-<token> です。レジストリはありません。衝突した場合は再発行します。

再発行(追記のみ): 新しい ID を生成し、ファイル名を変更して、Reissued-from: と Reissued-as: <new-id> <UTC> を追記します。Published: とペイロードのバイト列は変更しません。

完了条件: ファイル名のベース名が有効な ID(RECORD.md を参照)と一致しています。

採用アンカー(初回書き込み時のみ)

最初のレコードを公開する際に、コンテンツマーカー付きのアンカー(最初の空白以外の行が正確に # Decision-Record Adoption Anchor であるもの)が存在しない場合:

  1. .skills/decisions/ADOPTION.md を1回だけ書き込みます。Cutoff:(現在の UTC)と、確認できる各タグの Baseline-Tag: <name>@<object-id> を記載します。
  2. 以降、アンカーは不変のままにします。最も古いレコードから採用時期を推定してはいけません。

完了条件: 最初のレコードと同時またはその前に、コンテンツマーカー付きのアンカーがちょうど1つ存在しています。

公開チェックリスト(実行前に記録)

  1. 判断の記録
  2. 保存先の解決
  3. エビデンスの昇格(該当する場合)
  4. ペイロードを正確に表示 → 人による承認(ペイロードを固定)
  5. 判断の文章を対象にシークレットをスキャン
  6. ID を発行し、ファイルを書き込み、ペイロードダイジェストをエンベロープに記録
  7. 検証:
sh skills/ship/record-verdict/validate-records.sh --mode=publish --record <file>
  1. 公開済みファイルに対するバリデーターの終了コードが 0 になった後にのみ、実行を行います
  2. 結果を追記:Execution-Outcome: をエンベロープに追加

判定に、差し止めるべき実行があるかどうかは二者択一です。merge、pr、
discard、release-approve には実行がありますが、block と release-reject にはありません。
いずれの場合も判定は変わらず、欠落する可能性があるのは記録のみです。

失敗対応
スキャン停止、判断の欠落、バリデーターの終了コード 1/2、書き込み失敗 — 実行を伴う判定実行を差し止めます。判定が実行されていないことを報告し、妨げとなった内容を明示します
再試行記録した人の言葉を一字一句そのまま再利用します
block / release-reject で同じ失敗が発生終端判定が未記録(説明責任が不完全)であることを報告し、妨げとなった内容を明示します
公開成功、実行失敗失敗を Execution-Outcome: として追記します。記録は有効なままです

完了条件: 必要な実行の副作用が起きる前に、.skills/decisions/ の下にバリデーターを通過したファイルが存在すること。
または、公開に失敗し、対応する報告が出力されていること。実行を伴う判定では判定が実行されていないこと、block / release-reject では終端判定が未記録であることを報告し、いずれの場合も妨げとなった内容を明示します。

要注意事項

  • 終端となる人の判定なしに、または {land-branch, release} の範囲外で公開する
  • 判断の文章を要約したり、推敲したりする
  • .skills/、一時パス、セッション履歴を引用する
  • バリデーターの終了コードが 0 になる前に、merge/PR/discard/tag を実行する
  • Minimal の深さで公開する
  • 算出された下限より深さを下げる

コメント