canary-cassandra

canary-cassandra is a skill for Claude Code, Codex from bop-clocktower/canary. It costs 178 tokens per session (2,196 once invoked), scanned A, original, MIT.

A deterministic checker for tests that appear to pass but do not actually prove the target code works. It detects self-comparisons, tests that never call their stated target, and assertions about unrelated absences.

In plain words
What is it for?
Use it to inspect a test suite for vacuous assertions and tests that fail to exercise or observe the code they claim to cover.
Why use it?
It catches misleading green tests that can remain successful even when the implementation is broken. The checks use no network, language model, or test execution.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Part of the canary plugin — 22 skills, 13 commands, 8 agents, 4 hooks shipped together

Good fit Use it to inspect a test suite for vacuous assertions and tests that fail to exercise or observe the code they claim to cover.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/bop-clocktower/canary/canary-cassandra
Install

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.

Any agent
npx skills add bop-clocktower/canary --skill canary-cassandra
Clone the repo
git clone --depth 1 https://github.com/bop-clocktower/canary

Made for: Claude Code, Codex.

Or install canary, the plugin that ships this one along with the rest of its 22 skills, 13 commands, 8 agents, 4 hooks.

Wrote 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.

agentmods badge for canary-cassandra

README.md
[![agentmods](https://agentmods.dev/badge/skills/bop-clocktower/canary/canary-cassandra/github.svg)](https://agentmods.dev/skills/bop-clocktower/canary/canary-cassandra)
Your own site
<a href="https://agentmods.dev/skills/bop-clocktower/canary/canary-cassandra"><img src="https://agentmods.dev/badge/skills/bop-clocktower/canary/canary-cassandra/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for canary-cassandra

Your own site · 80×15
<a href="https://agentmods.dev/skills/bop-clocktower/canary/canary-cassandra"><img src="https://agentmods.dev/badge/skills/bop-clocktower/canary/canary-cassandra.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 178 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,196 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00178 $0.02196
Opus 5 $0.00089 $0.01098
Sonnet 5 $0.00036 $0.00439
Haiku 4.5 $0.00018 $0.00220

Measured 4d ago against content hash beeddae6dfb7, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

canary-cassandra scanned grade A with 1 finding 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 4d ago.

The scan reads SKILL.md. This mod also ships 2 executable files (scripts/cli.mjs, scripts/engine.mjs), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

first-party **script path** that a `spawnSync`/`execFileSync`-family call then
agents/skills/claude-code/canary-cassandra/SKILL.md · 181 lines

How it starts

The opening of the file, as written. The whole thing — 181 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Canary Cassandra

Cassandra Cain reads the fake. So does this skill.

A test with no assertions is easy to find and everybody already looks for it. The dangerous test is the one with assertions that cannot fail — it has coverage, it goes green, and it goes green identically against the bug it was written to catch. Three of those shipped in this project in a single cycle (recorded in [#486]) and every gate the repo owned read all three as healthy.

Cassandra is Tier-0: deterministic, no LLM, no network, no execution.

What it finds

Rule Severity Fires on
VAC-001 critical An assertion whose expectation is identical to the value it checks — expect(true).toBe(true), assert x == x
VAC-002 warning The test never references the target it claims to cover
VAC-003 warning Every assertion in the test asserts an absence, and none of them observes the target — so nothing proves it ran

VAC-001 is deterministic, hence critical: no implementation can fail it. VAC-002 and VAC-003 depend on resolving a target, which is inference, so they are warning and carry a fidelity tier.

Run it

Two doors, one detector. Both run the same engine rules, so they cannot disagree about a finding or about the denominator.

canary vacuity-check tests/            # human-readable
canary vacuity-check tests/ --json     # verdict + denominator + skips
canary vacuity-check tests/a.test.ts   # one file

As a skill, for an orchestrator or a CI step composing all four Tier-0 detectors:

canary skills run canary-cassandra -- tests/
canary skills run canary-cassandra -- tests/ --json --strict

Usage, flags, and the full rule list — this one is runnable verbatim, needs no fixtures, and is what CI executes to prove the doc still matches the CLI:

Read the full file on GitHub · 181 lines

Files

What ships with it

2 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.

Changes

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.

  1. 4d ago Changed · +38 lines beeddae6dfb7
  2. 10d ago First seen · 143 lines · 178 tokens per session scan A f9d4e3bc221a

Subscribe to this mod's changes

canary-cassandra is a skill published in the GitHub repository bop-clocktower/canary (4 stars, last pushed today), licensed MIT. It adds 178 tokens to every session and 2,196 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

systematic-debugging

4-phase root cause debugging: understand bugs before fixing.

NousResearch/hermes-agent · 16 tokens

langsmith-observability

LLM observability platform for tracing, evaluation, and monitoring. Use when debugging LLM applications, evaluating model outputs against datasets, monitoring production systems, or building systematic testing pipelines for AI applications.

davila7/claude-code-templates · 45 tokens

experimental-code-coverage-local-debugger

Runs code coverage locally via Universal Test Runner (UTR) or helper scripts, mimicking LUCI trybots. Activate when CQ tryjobs fail or underreport coverage, to test local GN/recipe repairs before uploading, or to debug hermetic crashes.

chromium/chromium · 59 tokens

adversarial-reviewer

Adversarial code review that assumes bugs exist and hunts for them. Use when asked to review code, find bugs, audit for correctness, stress-test a PR, or when someone says "tear this apart" or "what's wrong with this". Give no benefit of the doubt — every line is guilty until proven innocent.

emdash-cms/emdash · 71 tokens

cli-e2e

Write, modify, or debug Docker-based Composio CLI end-to-end tests under ts/e2e-tests/cli, including binary invocation, fixture isolation, output assertions, and package manifests. Use for CLI E2E test suites only; use cli-command for CLI source implementation.

ComposioHQ/composio · 62 tokens

ios-simulator

Verify and debug native, React Native, Expo, or Flutter apps on an iOS Simulator with agent-device. Use when an agent needs to launch an app, inspect its live UI, tap, type, scroll, validate a code change, collect failure evidence, or reproduce a workflow on an iPhone or iPad Simulator.

callstack/agent-device · 69 tokens