Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Defines testing quality metrics, coverage thresholds, and anti-patterns. Use when establishing test gates or validating a test suite's coverage targets.
.claude/skills/athola-testing-quality-standards/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 54% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -15% | 0% |
Shared quality standards and metrics for testing across all plugins in the Claude Night Market ecosystem.
| Level | Coverage | Use Case | |-------|----------|----------| | Minimum | 60% | Legacy code | | Standard | 80% | Normal development | | High | 90% | Critical systems | | detailed | 95%+ | Safety-critical |
For implementation patterns and examples:
This skill provides foundational standards referenced by:
pensive:test-review - Uses coverage thresholds and quality metricsparseltongue:python-testing - Uses anti-patterns and best practicessanctum:test-* - Uses quality checklist and content assertion levels for test validationimbue:proof-of-work - Uses content assertion levels to enforce Iron Law on execution markdownReference in your skill's frontmatter:
yamldependencies: [leyline:testing-quality-standards]
Verification: Run pytest -v to verify tests pass.
Tests not discovered Ensure test files match pattern test_*.py or *_test.py. Run pytest --collect-only to verify.
Import errors Check that the module being tested is in PYTHONPATH or install with pip install -e .
Async tests failing Install pytest-asyncio and decorate test functions with @pytest.mark.asyncio
legacy code, 80% for normal development, 90% for critical systems, 95%+ for safety-critical; measured with pytest --cov and threshold enforced in pyproject.toml
organization, meaningful names, setup/teardown, isolation), Coverage (critical paths, edge cases, error conditions, integration points), Maintainability (DRY fixtures, clear assertions, minimal mocking), Reliability (no flaky tests, deterministic execution, no order dependencies)
test_*.py or *_test.pyconfirmed by pytest --collect-only returning no errors
maps, timestamps, UUIDs); any found flagged as anti-patterns per modules/anti-patterns.md
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-12 | pass→pass | 15,293 | 8,705 | -43% | 1 | 1 | 0% | 2,364 | 2,249 | -5% | 0 | 0 | — |
case-13 | pass→pass | 14,005 | 8,618 | -38% | 1 | 1 | 0% | 2,164 | 2,252 | +4% | 0 | 0 | — |
case-01 | fail→pass | 23,991 | 14,925 | -38% | 1 | 1 | 0% | 3,990 | 3,479 | -13% | 0 | 0 | — |
case-02 | fail→pass | 22,174 | 13,543 | -39% | 1 | 1 | 0% | 3,852 | 3,296 | -14% | 0 | 0 | — |
case-03 | fail→pass | 13,346 | 13,399 | +0% | 1 | 1 | 0% | 2,124 | 3,269 | +54% | 0 | 0 | — |
case-04 | fail→pass | 10,889 | 4,020 | -63% | 1 | 1 | 0% | 1,732 | 1,521 | -12% | 0 | 0 | — |
case-05 | pass→pass | 12,572 | 3,964 | -68% | 1 | 1 | 0% | 1,917 | 1,518 | -21% | 0 | 0 | — |
case-06 | pass→pass | 13,104 | 3,215 | -75% | 1 | 1 | 0% | 2,158 | 1,351 | -37% | 0 | 0 | — |
case-07 | fail→pass | 9,725 | 2,495 | -74% | 1 | 1 | 0% | 1,594 | 1,347 | -15% | 0 | 0 | — |
case-08 | pass→pass | 9,090 | 3,627 | -60% | 1 | 1 | 0% | 1,642 | 1,482 | -10% | 0 | 0 | — |
case-09 | pass→pass | 7,196 | 2,977 | -59% | 1 | 1 | 0% | 1,174 | 1,304 | +11% | 0 | 0 | — |
case-10 | fail→pass | 13,558 | 2,955 | -78% | 1 | 1 | 0% | 2,337 | 1,357 | -42% | 0 | 0 | — |
case-11 | pass→pass | 9,749 | 7,034 | -28% | 1 | 1 | 0% | 1,545 | 2,085 | +35% | 0 | 0 | — |
case-14 | pass→pass | 10,563 | 1,952 | -82% | 1 | 1 | 0% | 1,730 | 1,181 | -32% | 0 | 0 | — |
case-15 | pass→pass | 3,102 | 2,532 | -18% | 1 | 1 | 0% | 495 | 1,232 | +149% | 0 | 0 | — |
case-16 | pass→pass | 6,882 | 2,816 | -59% | 1 | 1 | 0% | 1,252 | 1,349 | +8% | 0 | 0 | — |
case-17 | fail→pass | 13,438 | 7,943 | -41% | 1 | 1 | 0% | 2,270 | 2,252 | -1% | 0 | 0 | — |
case-18 | fail→pass | 12,509 | 2,139 | -83% | 1 | 1 | 0% | 2,056 | 1,217 | -41% | 0 | 0 | — |
case-19 | pass→pass | 9,774 | 3,634 | -63% | 1 | 1 | 0% | 1,557 | 1,409 | -10% | 0 | 0 | — |
case-20 | pass→pass | 11,421 | 3,786 | -67% | 1 | 1 | 0% | 1,665 | 1,511 | -9% | 0 | 0 | — |
case-21 | pass→pass | 11,731 | 11,824 | +1% | 1 | 1 | 0% | 1,816 | 2,704 | +49% | 0 | 0 | — |
case-22 | pass→pass | 12,381 | 1,942 | -84% | 1 | 1 | 0% | 1,979 | 1,179 | -40% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.