record-verdict について
record-verdictは、対象となるスキル経由の最終判断を、不変の決定記録として公開するスキルです。呼び出し元と証拠の条件を適用し、人の判断や永続的な引用情報を記録して、必要な処理の実行前に検証します。
主な機能
- 01対象の呼び出し元と判断に限定
- 02本文内の永続的な証拠を要求
- 03人の判断を原文どおり記録
- 04固定ルールで記録の深さを分類
- 05公開前に記録をスキャン・検証
- 06対象処理の前に記録を公開
活用シーン
- 01land-branchのマージ判断を記録
- 02cut-releaseの承認または却下を記録
- 03重要な処理に先立ち監査可能な記録を残す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jayden-dang/ skills --skill record-verdictインストール後、Claude Code で/record-verdictを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
eval.jsonRECORD.mdvalidate-records.sh詳細
境界判断を記録する
スキルを介した最終判定について、記録してから越境する順序で、
.skills/decisions/ の下に1件の判断記録(不変のペイロード+追記専用のエンベロープ)を
公開します。
文法のSSOT: 兄弟ファイルの RECORD.md です。フィールドの書き込みや解析を行う際は、必ず読み込んでください。
ここでフィールド一覧を再掲しないでください。
HARD-GATE — 呼び出し元のゲート
すべてを満たす場合のみ続行してください。そうでなければ、成果物を作成せずに戻ってください。
- 呼び出し元が
land-branchまたはcut-release(固定の許可リスト)である - Write Handoff に最終的な人間の判定が含まれている
- 永続的なエビデンスがインラインテキスト(または明示的な空)である —
.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-release | Accountable |
境界 disposal | Accountable |
| いずれかの述語が true または unknown | Accountable に引き上げる |
ルール(常に適用):
- 実際の越境には、少なくとも 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) の処理トークンが付与されています。
保存方法の決定
project.mdに恒常的なリポジトリ逐語保存ポリシーがある場合は、確認なしで適用します。- 判断要素ごとに、明示的に伏せる選択肢を提示します。
- 機密性の可能性がある文章をリポジトリに逐語保存する前に、条件付き確認を1回行います。
- 承認によって固定する前に、正確なペイロードを提示します。
- 参照先を添えて伏せる場合 → エンベロープに
Storage-*: withheld(reference)を記載し、対応するStorage-Reference-*: <locator>を記載します。 - 参照先なしで伏せる場合 → 1回だけ確認します。断られた場合、または参照先を利用できない場合は、
withheld(unavailable)とStorage-Reference-*: unavailableを記載して続行します(W-opaque は未完了作業ではありません)。 - 伏せたペイロード本文は、
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 の生成と再発行
Accepted:の UTC 日時をロックします(YYYYMMDD→ ID の日付)。- トークンは Crockford 文字を6文字使用します。
od経由で/dev/urandomを使い、利用できない場合はawk+$$+dateを使います。 - ID は
DEC-YYYYMMDD-<token>です。レジストリはありません。衝突した場合は再発行します。
再発行(追記のみ): 新しい ID を生成し、ファイル名を変更して、Reissued-from: と Reissued-as: <new-id> <UTC> を追記します。Published: とペイロードのバイト列は変更しません。
完了条件: ファイル名のベース名が有効な ID(RECORD.md を参照)と一致しています。
採用アンカー(初回書き込み時のみ)
最初のレコードを公開する際に、コンテンツマーカー付きのアンカー(最初の空白以外の行が正確に # Decision-Record Adoption Anchor であるもの)が存在しない場合:
.skills/decisions/ADOPTION.mdを1回だけ書き込みます。Cutoff:(現在の UTC)と、確認できる各タグのBaseline-Tag: <name>@<object-id>を記載します。- 以降、アンカーは不変のままにします。最も古いレコードから採用時期を推定してはいけません。
完了条件: 最初のレコードと同時またはその前に、コンテンツマーカー付きのアンカーがちょうど1つ存在しています。
公開チェックリスト(実行前に記録)
- 判断の記録
- 保存先の解決
- エビデンスの昇格(該当する場合)
- ペイロードを正確に表示 → 人による承認(ペイロードを固定)
- 判断の文章を対象にシークレットをスキャン
- ID を発行し、ファイルを書き込み、ペイロードダイジェストをエンベロープに記録
- 検証:
sh skills/ship/record-verdict/validate-records.sh --mode=publish --record <file>
- 公開済みファイルに対するバリデーターの終了コードが 0 になった後にのみ、実行を行います
- 結果を追記:
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 の深さで公開する
- 算出された下限より深さを下げる