decodie-verify について
decodie-verify は、リポジトリ内の `.decodie/index.json` にある学習エントリーと参照先のソースコードが一致するか確認するスキルです。不一致を古い状態として示し、検証済みのエントリーには現在のコミット SHA を記録します。
主な機能
- 01参照ファイルとアンカーの確認
- 02不一致エントリーの古い状態への更新
- 03検証済みコミット SHA の記録
- 04パスによる対象の絞り込み
- 05インデックスの指定フィールドのみ更新
活用シーン
- 01コード変更後の学習参照の確認
- 02指定ディレクトリに関するエントリーの検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ owenbush/ decodie-skill --skill decodie-verifyインストール後、Claude Code で/decodie-verifyを入力して読み込まれたか確認します。
詳細
Decodie — 検証モード
.decodie/index.json 内のすべての学習エントリーについて、参照先のソースコードと一致していることを確認し、一致しないエントリーを古いものとしてマークします。確認済みのエントリーには現在のコミット SHA を記録します。
このモードでは .decodie/index.json のみを変更します。セッションファイル、ソースコード、.decodie/ 外のファイルは変更しません。
有効化
任意のパス引数を解析します。
- パスが指定されていない場合は、すべてのエントリーを検証します。
- パスが指定されている場合は、
sources(またはreferences[].file)がそのパスと重なるエントリーのみを検証します。ディレクトリの場合、そのディレクトリで始まるソースファイルがあるエントリーが対象になります。 - パスが存在しない場合は、エラーを報告して停止します。
セットアップ
.decodie/が存在することを確認します。存在しない場合は、「.decodie/ディレクトリが見つかりません — 検証するものはありません。」と表示して停止します。.decodie/index.jsonを読み込みます。空の場合は、「検証するエントリーがありません。」と表示して停止します。- 現在のコミット SHA を取得します。
Git リポジトリでない場合は警告を表示して続行します(アンカーのチェックは実行しますが、git rev-parse HEADverified_shaは設定できません)。
検証プロセス
対象の各エントリーについて:
-
ソースファイルを解決します。
sourcesを優先し、なければ一意なreferences[].fileの値を使用します。後者の場合は、sourcesフィールドを補完します。 -
各参照
{ file, anchor, anchor_hash }を確認します。- ファイルが見つからない場合 → 参照は失敗です。
- ファイルが存在する場合 → リテラル文字列
anchorを検索します。見つかった場合は SHA-256 ハッシュを再計算し、先頭 8 桁の 16 進数がanchor_hashと一致することを確認します。
-
結果を判定します。
- すべての参照が解決できた場合 →
stale: false、verified_sha= HEAD SHA。 - いずれかの参照が失敗した場合 →
stale: true、verified_shaは変更しません。
- すべての参照が解決できた場合 →
-
index.jsonに書き戻します。 その他のフィールドと並び順は保持します。
レポート
Decodie verify
Verified: N entries (verified_sha -> <short-sha>)
Stale: M entries
Skipped: K entries (out of scope)
Backfilled sources on: B entries
古いエントリーがある場合は、一覧表示します。
Stale entries:
- entry-1711540000-a1b2 -- references/0: src/lib/foo.ts (anchor not found)
- entry-1711540123-c3d4 -- references/1: src/lib/bar.ts (file missing)
重要な注意事項
- エントリー内容は追記のみです。 更新できるのは
sources、verified_sha、staleのみです。 - 冪等です。 変更がない状態で 2 回実行すると、何も変更されません。
- パスはフィルターです。 対象外のエントリーはスキップされ、クリアされません。
- Git の履歴は書き換えません。
git rev-parseで HEAD を読み取るだけです。
コメント
Markdown 対応