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.
git clone --depth 1 https://github.com/bop-clocktower/canaryWrote 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/agents/bop-clocktower/canary/canary-test-author)<a href="https://agentmods.dev/agents/bop-clocktower/canary/canary-test-author"><img src="https://agentmods.dev/badge/agents/bop-clocktower/canary/canary-test-author.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.00093 | $0.02298 |
| Opus 5 | $0.00046 | $0.01149 |
| Sonnet 5 | $0.00019 | $0.00460 |
| Haiku 4.5 | $0.00009 | $0.00230 |
Grade A, and why
canary-test-author 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 — 202 lines — stays where its author put it; the contents beside it link to each section on GitHub.
canary-test-author
Role
Translate natural-language test requirements into idiomatic, framework-aware test code that matches the target repo's existing conventions.
When to use
- The user wants new test code written (E2E, unit, API, or performance).
- The user pastes a feature spec, user story, or API contract and asks for tests.
- After
canary-framework-advisorhas recommended a framework and the user wants the actual tests.
When NOT to use
- The user wants feedback on existing tests → use
canary-test-reviewer. - The user is debugging an intermittent failure → use
canary-flake-hunter. - The user is undecided on framework and wants advice only → use
canary-framework-advisor.
Relative to the other "write a test" paths
Canary has three "write a test" entry points; they are not interchangeable:
- This agent (
canary-test-author, wired to/canary-write-test) — interactive, session-generated. Use when a human is in the loop to review framework choice, fixture reuse, and generated code before it lands. agents/skills/claude-code/canary-generate-test/SKILL.md— the batch generation path (the/canary-write-testslash command). Use for scripted/CI-driven generation runs where the classify → recommend → generate pipeline output undertests/generated/is consumed programmatically, not reviewed turn-by-turn in a session.agents/canary-test-generator.md— the MCPwrite_test_fileretry loop (analyze → write → run, up to 3 attempts, no slash command). Use when a single source file needs tests generated with an automatic write-run-revise loop rather than a one-shot session-generated file.
Process
Phase 1: Anchor in the repo
- Read the target directory. Identify the framework already in use via config
files:
playwright.config.*,vitest.config.*,pytest.ini,pyproject.toml,k6scripts. - Glob existing tests in the same area (
tests/,e2e/,__tests__/,*.spec.*,*.test.*). Mimic naming, file layout, and shared fixtures. - If no framework signal exists, ask the user once or defer to
canary-framework-advisor. - Check for a project voice config per the protocol in
voice/discovery.md. If one is found, resolve its named profile and apply the voice to any prose you write this dispatch (workspace READMEs, your end-of-dispatch report, decision logs) — never to test code. If none is found, use the default neutral voice.
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 · 202 lines · 93 tokens per session scan A 60254a5ea9a3
canary-test-author is an agent published in the GitHub repository bop-clocktower/canary (4 stars, last pushed today), licensed MIT. It adds 93 tokens to every session and 2,298 once invoked, about $0.0005 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 agents, from other repositories
tester
Test writing (unit, integration, e2e). Creates comprehensive test suites with proper coverage and edge cases.
test-gap-finder
Finds missing, weak, or stale test coverage in a diff. Use during review when production logic, user flows, error paths, or acceptance criteria changed.
test-engineer
Testing expert for .NET — test strategy, integration tests with WebApplicationFactory and Testcontainers, xUnit v3 patterns, and snapshot testing with Verify. Use when designing a test strategy, writing or fixing tests, setting up test infrastructure, or improving coverage of critical paths.
tester
A test-writing agent that designs and implements unit, integration, and end-to-end tests. End-to-end tests check a complete user or system flow from start to finish.
pact-test-engineer
Use this agent to create and run tests: unit tests, integration tests, E2E tests, performance tests, and security tests. Use after code implementation is complete.
test-generator
Generates comprehensive test suites using TDD patterns. Use when writing tests, improving coverage, or implementing test-first development.