test-quality
Skill0 starsChanged 3 months agoMITView on GitHub
Reviews test code for meaningful behavioral coverage — detects trivial assertions, mock-everything patterns, missing edge cases, and coverage-padding. Load when reviewing pull requests containing test files, writing tests, or planning test strategy. Designed for use by review, build, and plan agents.
12 other projects use a version of this.
Adopted by
Most recently taken up by
- AhmedAbdelfattah0/AI-Skillstheir own version, first seen Nov 4, 2026
- decebals/claude-code-javatheir own version, first seen Nov 1, 2026
- assistant-ui/assistant-uitheir own version, first seen Oct 25, 2026
- hams-ollo/zen-agent-skillstheir own version, first seen Oct 20, 2026
- techygarg/latticetheir own version, first seen Oct 13, 2026
- modelcontextprotocol/python-sdktheir own version, first seen Oct 12, 2026
Used with
Projects with it also use clean-code and security-audit.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
xenitV1Skillclean-code
Pragmatic coding standards - concise, direct, no over-engineering, no unnecessary comments
Also in 3 projects that use this
CloudflareSkillsecurity-audit
Security guidance and vulnerability review for codebases, APIs, services, CLI tools, libraries, and daemons. Use for security questions, focused reviews, vulnerability research, security audits, or pen tests. Run the complete workflow only for explicit codebase audit or pen-test requests, full/comprehensive/end-to-end reviews, or requested report artifacts.
Also in 3 projects that use this
Other versions12 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 12
- modelcontextprotocol/python-sdk★ 25ksame name
- assistant-ui/assistant-ui★ 13ksame name
- cataclysmbn/Cataclysm-BN★ 1.3ksame name
- cataclysmbnteam/Cataclysm-BN★ 1.3ksame name
- decebals/claude-code-java★ 763same name
- techygarg/lattice★ 209same name
- rcore-os/tgoskits★ 76same name
- rollinsio/beyond-test-coverage★ 52same name
- AhmedAbdelfattah0/AI-Skills★ 4same name
- hams-ollo/zen-agent-skills★ 2same name
2 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.md
- data-workSkill
- frontend-designSkill
- geospatialSkill
- git-workflowSkill
- project-contractSkill
- python-devops-stackSkill
- research-protocolSkill
- review-protocolSkill
- setupSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 11 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Check each changed or new test file against these anti-patterns:
- Distinctive: line 62
Not just the happy path — what are the real failure modes?
- Distinctive: line 63
Not just a single input — what are the input variations?
- Distinctive: line 66
If a dev introduced a subtle logic error, would this test catch it?
- Distinctive: line 74
Check each test function against the Anti-Pattern Detection checklist
- Distinctive: line 75
Run the Test-Relevanz-Check for the corresponding implementation changes
- Distinctive: line 88
Before writing: review the implementation to identify critical paths and edge cases
- Distinctive: line 89
Write tests that cover: happy path, error path, empty/null input, boundary values
- Distinctive: line 90
After writing: self-check against Anti-Pattern Detection
- Distinctive: line 91
Do not submit tests that trigger any of the anti-patterns
- Distinctive: line 99
Use the project's delivery profile to determine baseline: quick/standard may have no tests.
“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Test Quality
Reviews whether tests actually verify meaningful behavior, not just pass. Designed to catch the common AI anti-pattern: many tests that look good but don't find real bugs.
Anti-Pattern Detection
Check each changed or new test file against these anti-patterns:
Trivial Assertions
assert True/assert False— always passes, tests nothingassert result is not Nonewithout further assertions on the valueassert len(results) > 0without checking content- Assertions that duplicate what the setup/fixture already guarantees (e.g., fixture sets
name="test", test assertsname == "test") - No assertion at all — test body has only setup, mocks, or no-ops
Mock-Everything Pattern
- Every external dependency mocked, no path exercises real integration
- Mocked function returns a hardcoded value that makes the assertion trivially pass
- Mocked database/API returns a perfect response — no error paths tested
- Critical business logic is inside a mocked module, so the test covers only a thin shell
Missing Edge Cases
- No test for
None,null, or empty input - No test for boundary values (0, max, min, empty string, empty list)
- No test for error paths (exception thrown, timeout, network failure, auth denied)
- No test for duplicate/conflicting data
- No test for concurrent access or race conditions (when relevant)
Coverage Padding
- High line coverage but trivial logic — many tests for getters, setters, constructors
- 5+ tests for a single simple function where 1-2 would suffice
- Test file is significantly larger than the implementation file but tests only surface behavior
- Every public method has a test but none test interactions between methods
Implementation Detail Tests
- Tests reference private/internal functions (prefixed with
_,__, orprivate) - Tests assert on internal state rather than observable behavior
- Test breaks on refactoring that doesn't change behavior
- Testing that a specific mock was called — instead of testing the resulting behavior
Shallow Seam Tests
- Regression test for a real bug exercises only a single-caller path when the bug requires multi-caller interaction
- Unit test mocks away the layer where the actual failure hides, giving false confidence
- Test asserts on intermediate state rather than the end-to-end behavioral seam
- Test setup bypasses the real entry point the bug was reached through
Test-Relevanz-Check
For each changed function/class in the implementation diff, identify the corresponding tests. Then evaluate:
- Does the test exercise the critical behavior?
- The function handles a complex transformation → test verifies the output
- The function reads from a database → test verifies the query + response handling
- The function calls an API → test verifies error handling, retries, and data transformation
- Does the test cover realistic scenarios?
- Not just the happy path — what are the real failure modes?
- Not just a single input — what are the input variations?
- Does the test find real bugs?
- If a dev introduced a subtle logic error, would this test catch it? If no: flag as weak coverage.
- Count of "would catch" vs "would miss" scenarios.
Review Flow
For auto-review: When tests are in the diff
- Collect all modified and new test files from the diff
- Check each test function against the Anti-Pattern Detection checklist
- Run the Test-Relevanz-Check for the corresponding implementation changes
- Report findings:
Test Quality Notes
- Coverage: <list of anti-patterns found, with file:line refs>
- [Critical] file:line — trivial test that asserts nothing real → add meaningful assertions
- [High] file:line — mock-everything, no error path tested → add integration test
- [Medium] file:line — missing edge case (None input) → add testFor build: When writing new tests
- Before writing: review the implementation to identify critical paths and edge cases
- Write tests that cover: happy path, error path, empty/null input, boundary values
- After writing: self-check against Anti-Pattern Detection
- Do not submit tests that trigger any of the anti-patterns
For plan: When discussing test strategy
- Identify which parts of the system have the highest risk of failure (complex transformations, error handling, external integrations)
- Recommend targeted tests for identified risks — not blanket coverage
- Set quality gates: no trivial assertions, at least one meaningful test per identified risk
- Explicitly state when no new test is justified (low-risk change, existing coverage sufficient)
- Use the project's delivery profile to determine baseline: quick/standard may have no tests; production/published require risk-based coverage
Common Anti-Pattern Examples
Bad: Trivial Assertion
# This test always passes — it only checks the fixture value
def test_user_name():
user = UserFactory(name="Alice")
assert user.name == "Alice"Good: Meaningful Behavior
# This test checks actual behavior
def test_user_name_change_propagates():
user = UserFactory(name="Alice")
user.change_name("Bob")
assert user.name == "Bob"
# Also check that a notification was created
assert Notification.objects.filter(user=user, event="name_change").exists()Bad: Mock-Everything
@patch("myapp.services.stripe")
def test_payment(self, mock_stripe):
mock_stripe.Charge.create.return_value = {"status": "succeeded"}
# Everything is mocked, nothing real is tested
result = process_payment(100)
assert result["status"] == "succeeded"Good: Realistic Test
def test_payment_failure_logged():
"""Test that payment failures are properly logged and handled."""
# Use a test gateway or real integration test
result = process_payment(999999) # known-failing amount
assert result["status"] == "failed"
assert Log.objects.filter(event="payment_failure").exists()Bad: No Edge Cases
def test_divide():
assert divide(10, 2) == 5Good: Edge Cases Covered
def test_divide_happy_path():
assert divide(10, 2) == 5
def test_divide_by_zero():
with pytest.raises(ZeroDivisionError):
divide(10, 0)
def test_divide_with_negative():
assert divide(-10, 2) == -5
assert divide(10, -2) == -5
def test_divide_floor():
assert divide(10, 3) == 3 # if integer divisionSeverity Ratings
- Critical — test that cannot find bugs (no meaningful assertions, always-pass, setup-only)
- High — significant blind spot (no error path testing, zero edge cases, mock-everything)
- Medium — missing coverage for important scenarios (missing boundary check, missing failure mode)
- Low — minor gaps (missing one trivial edge case, slightly brittle mock setup)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

