decodie-flag-stale について
Decodie Flag Staleは、Gitのファイル名変更を基に`.decodie/index.json`の検証済みエントリーを調べ、影響を受けた項目をstaleにするCI向けモードです。ソースファイルの読み込みやハッシュの再計算は行いません。
主な機能
- 01ソースファイル名とGit変更の比較
- 02変更された項目をstaleに設定
- 03`.decodie/index.json`のみ更新
- 04未検証またはソースなしの項目を除外
- 05アンカーハッシュを再計算せず実行
活用シーン
- 01ファイル変更の影響を受ける検証済み項目の特定
- 02CIでの軽量なstaleチェック
- 03stale項目と未検証項目数の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ owenbush/ decodie-skill --skill decodie-flag-staleインストール後、Claude Code で/decodie-flag-staleを入力して読み込まれたか確認します。
詳細
Decodie — 古い状態のフラグ付け
verify モードに代わる、高速で CI に適したモードです。verified_sha がある各エントリーについて、その SHA 以降にソースファイルが変更されているかを確認し、変更されているエントリーに stale: true を設定します。ソースファイルを読み込んだり、アンカーハッシュを再計算したりせず、ファイル名と Git 履歴を照合するだけです。
このモードで変更されるのは .decodie/index.json のみです。
有効化
引数は不要です。常にインデックス全体を対象にします。
セットアップ
.decodie/が存在することを確認します。存在しない場合:「.decodie/ディレクトリが見つかりません — 確認するものはありません。」と表示して終了します。- Git リポジトリであることを確認します。
Git リポジトリでない場合:「Git リポジトリではありません —git rev-parse --git-dirflag-staleには Git 履歴が必要です。代わりに verify モードを実行してください。」と表示して終了します。 .decodie/index.jsonを読み込みます。エントリーがない場合:「確認するエントリーはありません。」と表示して終了します。
検出プロセス
各エントリーについて:
verified_shaがないエントリーはスキップします。unverifiedとして報告します。sourcesがなく、references[].fileにも代替情報がないエントリーはスキップします。no-sourcesとして報告します。- 変更されたファイルを計算します。
Git が SHA を認識できない場合(履歴が書き換えられている場合)は、古い状態として扱います。git diff --name-only <verified_sha>..HEAD - 照合します。 変更されたファイルとエントリーのソースファイルを比較します。一致するものがあれば、そのエントリーは古い状態です。
- 更新します。
- 新たに古い状態になった場合 →
stale: trueを設定します。verified_shaは変更しません。 - すでに古い状態の場合 → 変更しません(件数には引き続き含めます)。
- 差分にソースファイルがない場合 →
staleはそのままにします。古い状態を解除して最新の状態に戻してはいけません。それができるのは verify モードだけです。
- 新たに古い状態になった場合 →
更新内容を index.json に書き戻します。
レポート
Decodie flag-stale
Newly stale: N entries
Already stale: M entries
Fresh: F entries
Unverified: U entries (no verified_sha -- run verify mode)
No sources: K entries
新たに古い状態になったエントリーがある場合は、一覧表示します。
Newly stale:
- entry-1711540000-a1b2 -- src/lib/foo.ts
- entry-1711540123-c3d4 -- src/lib/bar.ts, src/lib/baz.ts
重要な注意事項
- フラグは一方向です。
staleをtrueにするだけです。解除するには verify モードが必要です。 - ソースファイルは読み込みません。
git diff --name-onlyの結果だけに基づきます。これにより、CI で十分な速さを実現しています。 - 終了コードのポリシーはありません。 古い状態のエントリーによって PR をブロックするかどうかは、リポジトリごとに決めます。
- Git 履歴は書き換えません。 読み取り専用の Git コマンドのみを使用します。
コメント
Markdown 対応