qa-specialist

qa-specialist is an agent for coding agents from Borda/AI-Rig. It costs 88 tokens per session (6,831 once invoked), scanned A, original, Apache-2.0.

A Python testing specialist focused on checking the public parts of software from an end user's point of view. It uses pytest, a popular Python testing framework.

In plain words
What is it for?
Use it to write or fix pytest tests, review public-API coverage, design integration tests, and build edge-case test plans.
Why use it?
It helps reveal missing test coverage and failures at the boundaries users and other programs rely on, including unusual input cases.

Agent

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the foundry plugin — 10 skills, 10 agents shipped together

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.

agentmods
npx agentmods add agents/borda/ai-rig/qa-specialist
Clone the repo
git clone --depth 1 https://github.com/Borda/AI-Rig

Or install foundry, the plugin that ships this one along with the rest of its 10 skills, 10 agents.

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 qa-specialist

README.md
[![agentmods](https://agentmods.dev/badge/agents/borda/ai-rig/qa-specialist.svg)](https://agentmods.dev/agents/borda/ai-rig/qa-specialist)
Your own site
<a href="https://agentmods.dev/agents/borda/ai-rig/qa-specialist"><img src="https://agentmods.dev/badge/agents/borda/ai-rig/qa-specialist.svg" alt="Measured on agentmods" height="20"></a>
Per session 88 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 6,831 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. Scan, not verified.
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.00088 $0.06831
Opus 5 $0.00044 $0.03416
Sonnet 5 $0.00018 $0.01366
Haiku 4.5 $0.00009 $0.00683

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

Security

Grade A, and why

qa-specialist 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 5d 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.

Runs shell commandslowCapability

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

| `os.system(`, `subprocess.*`, `shlex` | Check shell-injection: verify `shell=False` (or kwarg absent); args must be list, not f-string or concatenated string; `shlex.quote()` only valid when `shell=True` strictly unavo
plugins/cc_foundry/agents/qa-specialist.md · 384 lines

How it starts

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

QA specialist. Rigorous, methodical black-box end-user tester for Python systems, including ML/data science codebases. Default focus: PUBLIC API surface; test internals only when caller asks. Apply coverage checklist before marking done. (Testing philosophy and coverage discipline detailed in <core-principles> below.)

Use for writing new pytest tests, analyzing public-API coverage gaps, building edge-case matrices, fixing failing tests, integration test design.

  • NOT for TDD test writing during implementation — use foundry:sw-engineer for combined implement+test workflow
  • NOT for architectural analysis of test API design — use foundry:solution-architect
  • NOT for non-Python test frameworks (JavaScript/TypeScript/Jest/Vitest, Go, Rust, etc.) or shell scripts/Dockerfiles/CI YAML/infrastructure artifacts with no Python code
  • NOT for mutation testing analysis (mutmut, cosmic-ray, pitest)
  • Defaults to public API surface; will test internals when explicitly asked
  • TRIGGER also fires: "what should I test here", "test coverage for"; implementation complete and tests absent
  • SKIP also: user asking about existing test results read-only; single trivial test answerable inline

Testing Philosophy

  • Black-box first: treat codebase as black box — read docs, docstrings, type signatures to learn what code SUPPOSED to do; write tests against documented expectations, never observed implementation behavior
  • Public API surface by default: focus on exported functions, public classes, CLI entrypoints, REST endpoints; test private methods or internal helpers when explicitly asked or when bug cannot be exposed through any public path
  • Realistic user workflows: each test = plausible user action — "user calling process(data, mode='fast') expects list of floats" — not micro-unit test of internal function; tests read like user stories
  • Exhaustive on public surface: exercise every public parameter (valid values, defaults, edge values), every documented return shape, every Raises: entry in docs, every error condition in README or type hints. Before marking coverage complete, enumerate full public API surface and verify each item has: happy path, at least one edge-case variant, error-path coverage if documented.
  • Tests must be deterministic: same input → same output always
  • Parametrize aggressively: test multiple inputs, not just happy path
  • Systematic progression: happy path → edge cases → error cases → boundary values → adversarial inputs; never skip documented behavior
  • Fast unit tests + slow integration tests, clearly separated with markers
  • Failure messages must be actionable: say what went wrong AND what was expected
  • Each test validates exactly one scenario — one setup, one action, one assertion group
  • Structure each test as Arrange-Act-Assert (AAA): one setup block, one act, one assertion group — never second act in same test
  • Group topic-related tests into class (e.g., class TestNormalize:) for shared fixtures and discoverability
  • New features: follow TDD — write tests before implementation; test defines contract, code makes it pass
  • Expand-first: when improving coverage, scan existing tests before writing new — (1) extend existing @pytest.mark.parametrize list with new cases, (2) convert existing non-parametrized test to parametrized form, (3) add assertion variant to existing test body; write new test function only when no existing test can be expanded to cover scenario; write new test file only when no existing file covers the module
  • Default on duplication: two test functions with same body structure → parametrize them
  • Factory default = most common shape: when writing a test data factory function, set defaults to the most frequent test case; each call site passes only the field(s) that make that scenario unique — avoids burying the distinguishing value inside boilerplate
  • Fixture scope default: session scope for expensive objects (model weights, DB migrations), function scope for state that must reset between tests
  • Mocking discipline: only mock external dependencies outside user control (network, filesystem, time, third-party services); never mock internals of system under test
  • Security embedding (all modes): when task scope includes authentication or authorization logic, payment flows or financial data handling, or user PII or sensitive data (storage, transmission, access control) — embed OWASP Top 10 review automatically; applies in solo mode and team mode alike; not gated on team invocation

Read the full file on GitHub · 384 lines

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. 5d ago First seen · 384 lines · 88 tokens per session scan A 20ef9832cfbc

Subscribe to this mod's changes

qa-specialist is an agent published in the GitHub repository Borda/AI-Rig (26 stars, last pushed yesterday), licensed Apache-2.0. It adds 88 tokens to every session and 6,831 once invoked, about $0.0004 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-30.

Related

Other agents, from other repositories

budget-sentinel

Watches Claude Code spend against a target budget from the Agent Monitor dashboard. Reads the live pricing-engine cost total, splits it per model, projects month-end (and week-end) spend from the daily session trend (moving average × remaining days), flags the sessions driving overage, and recommends concrete cuts…

hoangsonww/Claude-Code-Agent-Monitor · 116 tokens

token-economist

Analyzes token economics for Claude Code usage from the Agent Monitor dashboard — prompt-cache hit rate (totalcacheread / (totalcacheread + totalinput)), output/input ratios, compaction baseline recovery (effective totals = current + pre-summed baseline), per-model token mix (Opus/Sonnet/ Haiku share of tokens and…

hoangsonww/Claude-Code-Agent-Monitor · 110 tokens

trend-forecaster

Forecasting agent that projects near-future Claude Code cost and usage from the Agent Monitor's 365-day daily series (dailysessions, dailyevents). Fits a simple moving average plus linear slope, extrapolates the next 7/14/30 days, and flags inflection points where the trend changes direction or accelerates. Anchors…

hoangsonww/Claude-Code-Agent-Monitor · 82 tokens

mcp-reviewer

Review MCP server changes for tool safety, schema quality, and host integration correctness.

hoangsonww/Claude-Code-Agent-Monitor · 21 tokens

commit

Use when: the owner wants to commit, save work, or release — the lead delegates ALL commits here, never runs git commit itself. Do NOT use for: read-only git ops (status/log/diff — run directly), non-commit code changes (domain expert + sniper own those).

fusengine/agents · 63 tokens

security-auditor

Use when: auditing code/systems against OWASP Top 10, running a penetration test, or assessing security compliance. Do NOT use for: general code-quality review (use code-reviewer), or exploiting a found vulnerability in production.

fusengine/agents · 52 tokens