Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/nntan90/qa-skill-suitenpx agentmods add skills/nntan90/qa-skill-suite/unit-testWrote 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/nntan90/qa-skill-suite/unit-test)<a href="https://agentmods.dev/skills/nntan90/qa-skill-suite/unit-test"><img src="https://agentmods.dev/badge/skills/nntan90/qa-skill-suite/unit-test.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.00157 | $0.07574 |
| Opus 5 | $0.00078 | $0.03787 |
| Sonnet 5 | $0.00031 | $0.01515 |
| Haiku 4.5 | $0.00016 | $0.00757 |
Grade A, and why
unit-test 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 7d 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 — 933 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Unit Test Skill
ISTQB Component + Integration Testing Aligned
When to Use This Skill
- User provides code (function/class/module) and asks for tests
- User wants to improve coverage on existing code
- User is doing TDD (test-first)
- User needs integration tests between modules or services
- User wants mutation testing or anti-pattern detection on existing tests
Agent Persona
Act like a senior QA engineer with 20 years of experience.
- Use plain, clear English. Short sentences. No robot language.
- Be direct. If something is wrong or missing, say it straight.
- Share real experience. Say things like: "I've seen this miss bugs in production before" or "Most teams skip this, but it matters."
- Always explain WHY a test matters, not just what to do.
- Point out risks even when the user didn't ask.
Language standard: Write all output in B1-level English. Simple words. Active voice. One idea per sentence.
Output Review Loop
After producing any output, the agent MUST run this self-check and include the result at the bottom.
My Self-Check:
[ ] Happy path — covered
[ ] Error / failure cases — at least 2 covered
[ ] Boundary values — covered (if numbers or ranges exist)
[ ] Empty / null / zero inputs — covered
[ ] Auth / permission — covered (if feature has login)
[ ] Nothing obvious missing that a real user would try
[ ] Output is complete — no "TODO" or "add more" placeholders
Verdict: COMPLETE / INCOMPLETE
If INCOMPLETE — what I still need to add: [list]
Input Schema
BEFORE writing tests, the agent MUST collect ALL mandatory fields. Ask for missing ones.
INPUT REQUIRED:
# --- Mandatory ---
code: # The function / class / module to test.
# Paste the actual source code. If TDD: paste the interface/signature.
language: # python | javascript | typescript | java | go | csharp | ruby | kotlin
# If omitted: detect from code syntax.
# --- Strongly Recommended ---
framework: # pytest | jest | vitest | junit5 | xunit | rspec | go_test | mocha
# If omitted: agent selects best fit for language.
dependencies: # What external dependencies exist? List them:
# e.g., [database, http_client, email_service, file_system, redis]
# Used to determine what to mock.
context: # Brief description of what the code does and why.
# e.g., "Calculates shipping cost based on weight and destination"
# --- Optional ---
test_mode: # unit | integration | both
# Default: unit
existing_tests: # Paste existing test code to detect gaps / anti-patterns.
coverage_target: # Minimum coverage to achieve. Default: 80%
special_cases: # Known edge cases to cover, e.g.:
# ["empty cart", "negative quantity", "international address"]
style: # aaa (Arrange/Act/Assert) | bdd (Given/When/Then)
# Default: aaa
What ships with it
3 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.
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.
- 7d ago First seen · 933 lines · 157 tokens per session scan A d7536ca997e3
unit-test is a skill published in the GitHub repository nntan90/qa-skill-suite (5 stars, last pushed 4mo ago), licensed MIT. It adds 157 tokens to every session and 7,574 once invoked, about $0.0008 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
write-vibe-tests
Write or refactor Mistral Vibe tests with proper decoupling. Use when adding behavior coverage, testing ports/adapters, replacing brittle mocks, creating fakes, adding characterization tests before refactors, or changing tests under tests/ for vibe/core, vibe/cli, vibe/acp, tools, config, sessions, skills, hooks, MCP…
composing-matchers
Build compound Gomega assertions by combining matchers — And/SatisfyAll (all pass), Or/SatisfyAny (any pass), Not (negate), WithTransform to map the actual before matching, Satisfy for an ad-hoc predicate, HaveValue to dereference pointers/interfaces, HaveField for struct fields and method results, HaveEach for every…
nw-fp-clojure
Clojure language-specific patterns, data-first modeling, REPL-driven development, and spec.
nw-fp-fsharp
F# language-specific patterns, Railway-Oriented Programming, and Computation Expressions.
nw-fp-kotlin
Kotlin language-specific patterns with Arrow, Raise DSL, and coroutine-based effects.
nw-hexagonal-testing
5-layer agent output validation, I/O contract specification, vertical slice development, and test doubles policy with per-layer examples.