<What this skill does>
日本語の概要は準備中です。原文の説明を表示しています。
検査器(linter / ガード / CI ゲート / バリデータ / フィルタ)そのものの検出力が差分で静かに落ちていないか、また新設した検査が実際に検出できることが実証されているかを diff-time で検出する。
Check 1 unverified detection reduction(検査器の検出ロジック(正規表現・除外パターン・解決集合・allowlist・baseline)を変更して検出件数が減ったのに、減った 1 件ずつが誤検出であった根拠が示されないまま「誤検出を潰した」「N → M 件に減少」と改善として主張している)、Check 2 unproven guard detection power(新しい検査ロジック・CI ゲート・バリデーションを追加・変更したのに、検出すべき入力を注入して検出されること/検出すべきでない入力で黙ることを示す変異注入の証跡が無く、「追加した」「CI が緑」を検出力の証拠として扱っている)、の 2 Check を対象とする report-only。
テスト自身のアサーションが実質何も検証していない構造は test-assertion-effectiveness、レビュー基準・品質ゲートの明示的な弱体化(ルールの削除・閾値の引き下げ・suppression entry 追加・lint ルールの無効化)は review-criteria-integrity、リファクタ完了主張一般の検証は refactor-claim-audit、workflow の permissions と action pin は gha-workflow-security、設定ファイルの構文・型の妥当性は config-json へ委譲する
インストールする前に、エージェントに与えられる指示の中身を確認できます。
skills/README.md の Naming Q0–Q5 に従って決定した。本 skill は外部プロジェクトの成果物・技術の取り込みではなく、リポジトリ内の運用振り返りから起こした観点であるため Q0 の入力分類(artifact / concept reimplementation)は適用外であり、Q1–Q4 の「原語」も存在しない。したがって Q5 に落ち、役割を名指す新規命名として detector-detection-power を採用した。機構名(件数比較・変異注入)ではなく「検査器が持つべき価値=検出力」を名指す点が Q5 の要件である。既存の test-assertion-effectiveness(テストの有効性)と語形をそろえ、対象が テスト ではなく 検査器 であることを detector- の接頭で区別している。
Primary pattern: Reviewer Secondary patterns: Inversion Why: 検出ロジックの変更はパターンとして拾えるが、「その変更が誤検出の除去か検出力の低下か」は件数からは決定できず、比較の根拠(減った項目の内訳・変異注入の証跡)が discover できない差分では実行を止めるゲートが必要である。
検査器(linter / ガード / CI ゲート / バリデータ / フィルタ)は、それ自身がレビューされないまま「安全網がある」という前提を支えてしまう。検査器の検出力が落ちたことは、失敗として現れない。件数は減り、CI は緑になり、指標はむしろ改善したように見える。この非対称性が本 skill の対象である。
具体的には次の 2 つの盲点を diff-time の静的観点として埋める。
report-only(ADR-005)であり、finding / question のみを出力して自動修正はしない。
| 隣接領域 | 委譲先 | 分界 |
|---|---|---|
| テストのアサーションが実質何も検証しておらず常に PASS する | test-assertion-effectiveness | 委譲先の対象はテストコードであり、その中のアサーションが失敗しうるかを見る。本 skill の対象は検査器そのもの(linter / ガード / CI ゲート / バリデータ / フィルタ)であり、その検出ロジックが検出すべきものを検出できるかを見る。検査器に付随するテストの書きぶりは委譲先、検査器本体の検出力は本 skill。この分界は frontmatter の exclude(テストのパス・命名規約を除外)で機構的にも担保している |
レビュー基準・品質ゲートの明示的な弱体化(ルール削除・閾値引き下げ・suppression entry 追加・lint ルールの off 化) | review-criteria-integrity | 委譲先は「基準そのものを外した・緩めた」差分を見る。本 skill は基準・検査器が残ったまま、その内部ロジックの検出力だけが変わった/未実証であるケースを見る。設定値の無効化は委譲先、検出ロジック(正規表現・解決集合・除外パターン・baseline)の変更は本 skill |
| リファクタ完了主張一般(「全部置換した」「-N% 削減」)の反証 | refactor-claim-audit | 委譲先は主張と実装の一致を grep で反証する汎用監査。本 skill は検査器の検出件数に関する主張に限定し、かつ「一致しているか」ではなく「減少が誤検出由来か見逃し由来か」を見る |
workflow の permissions 拡大・third-party action の未 pin・トリガーの危険な組合せ | gha-workflow-security | 委譲先は供給網と権限。本 skill が workflow を見るのは検査 job / step の検出力という文脈のみ |
| 設定ファイル(JSON / YAML)の構文・型・一般的ベストプラクティス | config-json | 委譲先は設定の妥当性一般。本 skill は allowlist / baseline を検出力を左右するデータとしてのみ見る |
.only / .skip / xit / @ts-ignore / @ts-nocheck / 空の catch {} | src/lib/heuristic-review.mjs の決定論検出器 | 決定論で判定済みのため重複指摘しない(.claude/rules/review-core.md §「カスタム静的解析の False-positive 責務分界(#1070)」) |
| 影響・失敗系を調査した証拠の有無一般 | impact-evidence-coverage | 委譲先は証拠の充足性一般。本 skill が求める証拠は変異注入(検出されること/黙ること)の 1 種類に限定する |
さらに次はスコープ外とする。
検査器はコード上の型や継承関係では識別できず、置かれる場所と名前が担う役割で識別するのが最も精度が高い。テンプレートの「できるだけ絞り込む」要求に対し、次の 3 群だけに限定した。
scripts/** / tools/** / .github/scripts/** / .github/workflows/**): 検査器・CI ゲートの一次的な置き場。src/** をディレクトリとして丸ごと含めないのは、本番コードのバリデーション(入力検証・ドメイン制約)まで拾うと対象が製品コード全体に広がり、security-basic や nullability-contract の領分と重複するため。*lint* / *guard* / *validat* / *check* / *detect* / *scan* / *audit*): 上記ディレクトリ外に置かれた検査器を拾う。この群はディレクトリを問わないため、src/lib/plan-review/approval-scan.mjs のように src/** 配下でも役割を名乗るファイルは対象に入る。第 1 群で src/** を外したのは「製品コード全体を対象化しない」という意味であり、役割名を持つ個別の検査器まで対象外にする意図ではない。拡張子を実行可能なスクリプト言語に限定し、同名の Markdown ドキュメントやテストデータを除外している。*baseline* / *allowlist* / *ignorelist*): 検出ロジックを 1 行も変えずに検出力を落とせる経路であり、ロジック本体と同じ観点で見る必要がある。**/*check* は語として一般的だが、拡張子制約と Pre-execution Gate(検出ロジックの変更を含むこと)の二段で絞られるため、ドキュメントや無関係なユーティリティで発火しない。
第 2 群のファイル名パターンは、tests/check-doc-links.test.mjs のような検査器のテストにも一致してしまう。テストコードは委譲表のとおり test-assertion-effectiveness の領分であり(同 skill の applyTo は tests/**/* を含む)、applyTo をそのままにすると同一ファイルに対して 2 つの skill が発火する。そこで frontmatter の exclude でテストのパス・命名規約を除外し、本 skill の対象を検査器本体とそのデータファイルに限定した。
除外は applyTo の否定パターン(!tests/**)ではなく exclude フィールドで表現する。dispatcher の一致判定は applyTo の各パターンの OR(Array.prototype.some)であり、否定パターンを混ぜると「tests/ 以外の全ファイルに一致する 1 パターン」として働き、絞り込みが逆に消えるためである。
このスキルは以下の条件がすべて満たされない限り NO_REVIEW を返す。
diff が含まれている。ゲート不成立時の出力: NO_REVIEW: detector-detection-power — 検査器の検出ロジックの追加・変更を含む差分が無い
Gate を通過したうえで、次に該当する個別の指摘は抑制する(黙る)。
expect(true).toBe(true) のような空虚な検証でないか)は判定しない。テスト内容の有効性は test-assertion-effectiveness の領分であり、「テストが空虚だから証跡として不十分」という理由で Check 2 を出すことは禁じる。テストの中身を理由に発火してよいのは委譲先だけである。river suppression add 相当)への entry 追加・lint ルールの無効化は本 skill から出力しない。なお検査器自身が持つ allowlist / ignorelist / baseline データの拡大は委譲先ではなく本 skill の Check 1 の対象である(検出ロジックの一部として扱う)。diff / prDescription / fullFile であり、コミットメッセージは供給されない。根拠の主たる出所は PR 本文と差分内(コメント・テスト・fixture)である。抑制時の出力: 該当する指摘を出力しない(黙る)。
差分が検査器の検出ロジック(正規表現・除外パターン・解決集合 / キー集合・allowlist・baseline・閾値・走査対象)を変更しており、かつ PR 本文が「誤検出を減らした」「誤検出を潰した」「N → M 件に減少」といった改善としての主張を行っているのに、減った 1 件ずつが誤検出であった根拠が示されていない場合に指摘する。
判定の中核は次の一点である。**検出件数の減少は、誤検出の除去と検出力の低下のどちらでも起こる。**したがって件数の変化それ自体は、どちらであるかの証拠にならない。特に注意すべき変更の型を挙げる。
差分が新しい検査ロジック・CI ゲート・バリデーションを追加している、または既存検査の検出条件を拡張しているのに、変異注入の証跡が示されていない場合に指摘する。
変異注入の証跡とは、次の両方向を示すものをいう。
「追加した」「CI が緑になった」は、いずれも陽性方向の証拠にならない。検査が何も見ていなくても、対象が 0 件でも、条件式が常に真でも、CI は緑になる。特に次の形が典型的な未実証パターンである。
prDescription)から、検出件数・改善・修正完了に関する主張を抜き出す。コミットメッセージは実行時に供給されないため根拠源にしない。Check 1 は主張が存在する場合にのみ成立する(主張が無ければ指摘しない)。fullFile・code_search で探す。到達できない場合は question に落とす。blocker。warning。nit。info 相当)。file:line は差分内の検出ロジックの変更行(正規表現・除外パターン・キー追加・baseline 行・走査対象の宣言)にアンカーする。PR 本文の主張だけを根拠に、差分外へ指摘しない。.claude/rules/review-core.md)。すべて日本語。標準の finding フォーマットに従い、各指摘に check(1 または 2)と resolution を含める。
(detector-detection-power):1: [要約] 検出力に関する最大の懸念は〈1文〉
<file>:<line>: [Detection power] <タイトル>
check: 1 | 2
Finding: 検出力がどう変わりうるか(1文)
Evidence: 差分の該当行と、PR 本文の主張/根拠が無いという事実
Counterexample: この変更後に検出されなくなる(または検出されたか確認できない)具体的な入力
Impact: どの見逃しが起こるか(1文)
Fix: <最小の次アクション>
Confidence: high | medium | low
Severity: blocker | warning | nit(較正基準に従う)
resolution: <解消手順>
scripts/check-doc-links.mjs:22: [Detection power] 解決キーの拡張で、実ツールが解決しない参照まで解決済みとして黙る
check: 1
Finding: 参照の解決集合に小文字化・basename・slug 形式を追加したため、実際のリンク解決規則が受理しない表記でも「解決済み」と判定される
Evidence: 同行のキー追加 3 件。PR 本文は「誤検出を除去し 79 → 42 件に減少」と述べるが、減った 37 件の内訳と各件が誤検出である理由は示されていない
Counterexample: 実在しないページを大文字混じりの表記で参照した場合、小文字化キーが偶然一致して検出されない
Impact: 壊れた参照が検出されないまま残り、検査器が緑を返し続ける
Fix: 減った 37 件を列挙し、1 件ずつ誤検出である理由を示す。または追加キーを実際の解決規則と一致するものだけに絞る
Confidence: medium
Severity: warning
resolution: 減少分の内訳を PR 本文に添付し、真の検出であったものは検出対象へ戻す
このガードは意味がないかもしれません
(Check の特定なし、差分へのアンカーなし、検出されなくなる具体入力の提示なし、resolution なし)
test-assertion-effectiveness の領分)、review-criteria-integrity の領分(ルール削除・閾値引き下げ・river の suppression store への entry 追加)を重複指摘している、具体的な反例も question への降格も無い、resolution が無い。skills/downstream/test-assertion-effectiveness/SKILL.md — テストのアサーションの有効性(対象がテストである点で分界)skills/midstream/review-criteria-integrity/SKILL.md — レビュー基準・品質ゲートの明示的な弱体化(委譲先)skills/midstream/refactor-claim-audit/SKILL.md — 完了主張一般の反証(委譲先)skills/downstream/gha-workflow-security/SKILL.md — workflow の権限・供給網(委譲先)skills/midstream/config-json/SKILL.md — 設定ファイルの妥当性(委譲先)skills/midstream/impact-evidence-coverage/SKILL.md — 証拠の充足性一般(補完関係).claude/rules/review-core.md §「カスタム静的解析の False-positive 責務分界(#1070)」 — 決定論と意味的判断の分界docs/review/output-format.md — 重要度ラベルと出力形式(SSoT)まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
<What this skill does>
日本語の概要は準備中です。原文の説明を表示しています。
画像・ボタン・フォーム要素に適切なアクセシブルネームがあるか確認する。
Ensure ADRs capture context, decision, alternatives, tradeoffs, and follow-ups in a way that prevents future drift.
日本語の概要は準備中です。原文の説明を表示しています。
敵対的分析手法を統合したレビューの entry skill。認知バイアス対策の3手法 (Pre-mortem / War Game / Logic Torturing)と、宣言・主張と実態の乖離を突く claim-vs-actual 検出3パターン(Self-Contradiction / Refactor-Claim Audit / Cross-File Leakage)へルーティングし、通常のレビューでは見えない設計の盲点・ 防御の穴・論理の弱点・宣言と実装のズレを可視化する。
Review changes to the Agent Skills import/export bridge for path safety, round-trip fidelity, and validation correctness.
日本語の概要は準備中です。原文の説明を表示しています。
Checks whether AI-assisted work defines review criteria, accessible context, explicit review loop, human judgment boundary, and feedback capture before delegating to an agent.
日本語の概要は準備中です。原文の説明を表示しています。