Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/s977043/river-review/test-assertion-effectivenessnpx skills add s977043/river-review --skill test-assertion-effectivenessgit clone --depth 1 https://github.com/s977043/river-reviewWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/s977043/river-review/test-assertion-effectiveness)<a href="https://agentmods.dev/skills/s977043/river-review/test-assertion-effectiveness"><img src="https://agentmods.dev/badge/skills/s977043/river-review/test-assertion-effectiveness.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00367 | $0.06278 |
| Opus 5 | $0.00183 | $0.03139 |
| Sonnet 5 | $0.00073 | $0.01256 |
| Haiku 4.5 | $0.00037 | $0.00628 |
Grade A, and why
Test Assertion Effectiveness 常に PASS するテストの検出 scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 226 lines — stays where its author put it; the contents beside it link to each section on GitHub.
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 / 扱わないこと(委譲表)
| 隣接領域 | 委譲先 | 分界 |
|---|---|---|
| テストが存在しない | test-existence |
委譲先は「変更コードに対応するテストが差分に無い」。本 skill は逆にテストがある差分にだけ働く(委譲先はテスト差分があると黙る前提のため) |
| 未テスト経路・分岐・境界の量 | coverage-gap |
委譲先は「その経路のテストが存在しない」。本 skill は「テストは存在するがアサーションが落ちない」 |
| 実行ごとに結果が変わる不安定さ | flaky-test |
委譲先は非決定性。本 skill は決定論的に必ず PASS する構造 |
describe / it の命名・構造 |
test-naming |
命名の明瞭さは対象外。名前が適切でもアサーションが無効なら本 skill が扱う |
JS / TS の un-awaited expect(...).resolves / .rejects |
vitest-mock-isolation |
委譲先が「常に pass する空 assertion」として既に所有する。async-correctness も本番コード側からここへ委譲済みであり、三重管理にしない |
tdd-ledger artifact による RED / GREEN 証跡の検証 |
plangate-tdd-evidence |
委譲先は artifact 駆動(artifact 非供給の adopter では常に NO_REVIEW)。本 skill はartifact に依存しない diff-time 観点 |
| 影響・失敗系・外部依存を調査した証拠の有無 | impact-evidence-coverage |
委譲先は同一 diff のテストを「証拠あり」として充足扱いにする。本 skill はそのテスト自体が有効かを見る(矛盾ではなく補完関係) |
| 本番経路の例外握り潰し・配線切れ | e2e-wiring / logging-observability |
委譲先は src/** 等の本番経路。本 skill が見る握り潰しはテスト本体の中で判定を無効化するものに限る |
.only / .skip / xit / @ts-ignore / 空の catch {} |
src/lib/heuristic-review.mjs の決定論検出器 |
決定論で判定済みのため重複指摘しない(.claude/rules/review-core.md §「カスタム静的解析の False-positive 責務分界(#1070)」) |
What ships with it
6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- fixtures/01-nonexistent-expected-literal-should-detect.md 3.0 KB
- fixtures/02-stale-expected-value-should-detect.md 3.6 KB
- fixtures/03-unscoped-expectation-should-detect.md 3.0 KB
- fixtures/04-vacuous-and-swallowed-should-detect.md 3.7 KB
- fixtures/05-helper-parameterized-deletion-pinning-canary.md 4.0 KB
- fixtures/06-scoped-snapshot-delegated-territory-canary.md 4.6 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 226 lines · 367 tokens per session scan A e561e02e03de
Test Assertion Effectiveness 常に PASS するテストの検出 is a skill published in the GitHub repository s977043/river-review (3 stars, last pushed yesterday), licensed MIT. It adds 367 tokens to every session and 6,278 once invoked, about $0.0018 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
brooks-sweep
Full-sweep mode: runs a unified analysis across all quality dimensions — code decay, architecture, tech debt, and test quality — then applies fixes directly to the codebase. Safe changes are auto-applied; risky changes are confirmed before execution. Drawing on twelve classic engineering books. Triggers when: user…
pre-pr-audit
Pre-PR confidence audit with 5-dimension scoring. Use when: final check before commit/push/PR, evaluating PR readiness, assessing test quality + risk + coverage holistically. Triggers: pre-pr, readiness check, confidence audit, final verification, ready to PR, how confident. Not for: code review (use…
spike-consumer-adversarial
OI-3 spike harness — heavy consumer, ADVERSARIAL arm. Worst-case early-exit test: the mid-workflow Skill call has no continuation guardrail and the guidance skill ends with a final-sounding anchor. Use only when explicitly invoked by the spike harness with a TRIALID and data path.
code-standards
Apply a disciplined engineering workflow to any code change. Use whenever implementing a feature, fixing a bug, or refactoring — before writing code, not after. Walks orient → baseline → smallest change → test → verify → self-review, and enforces language-agnostic hard gates (don't mass-reformat, keep the linter and…
loop-test
Local sandbox for experimenting with Claude Code's /loop command (interval + dynamic/self-paced scheduling) applied to LETS workflows. Use when the user says "loop test", "loop-test", "test the loop skill", "цикл LETS", "ScheduleWakeup experiment", or wants to design a periodic /loop that polls state or babysits a…
fec-component-testing
用于编写或审查靠近 UI 代码的前端单元、组件或轻量集成测试,包括 React Testing Library、Vue Test Utils、hooks/composables、props/emits、回调、可访问查询、user-event 交互、mock、loading/error/empty 状态和回归覆盖。若是测试分层规划、真实浏览器旅程或现有验证失败,优先选择对应测试或验证工作流;中文触发词包括 组件测试、组件单测、单元测试、轻量集成测试。.