test-assertion-effectiveness--pass-listed
Install: claude install-skill s977043/river-review
## Naming / 命名
`skills/README.md` の Naming Q0–Q5 に従って決定した。Q0 では外部プロジェクトの成果物を取り込んでいないため「概念の再実装」に分類され、リネーム(新規命名)が既定となる。Q1 は衝突なし(`assertion` を含む skill id は既存に無い)、Q2・Q3 は参照元の原語が存在しないため適用外、Q4 で既存の `test-*` 命名ファミリ(`test-existence` / `test-naming` / `test-plan-review`)に整合することを確認し、Q5 で「価値(アサーションが有効であること)を名指す」名として `test-assertion-effectiveness` を採用した。機構名(tautology 検出・grep 照合)ではなく価値を名指す点が Q5 の要件である。
## Pattern declaration
Primary pattern: Reviewer
Secondary patterns: Inversion
Why: アサーションの形はパターンとして拾えるが、「そのアサーションが SUT の挙動に依存しているか」の判定は意味的であり、期待値の照合先(テンプレート・コンポーネント)が discover できない差分では実行を止めるゲートが必要である。
## Goal / 目的
テストの「有無」や「粒度」は既存 skill が見るが、**書かれたアサーションが実際に失敗しうるか**は誰も見ていない。アサーションが無効なテストは行を通過するためカバレッジ指標にも現れず、CI が緑であることも有効性の証明にならない(レビュー時点の CI が古い sha で緑だった実例が #1684 に記録されている)。この盲点を diff-time の静的観点として埋める。
次の 6 Check のいずれかに該当し、**そのテストが実装の退行を検知できない**と読み取れる場合に指摘する。report-only(ADR-005)であり、finding / question のみを出力して自動修正はしない。
## Non-goals / 扱わないこと(委譲表)
| 隣接領域 | 委譲先 | 分界 |
| ---------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| テストが存在しない