test-unslop
Supports auditing and running Dart tests, detecting test slop and missing tests.
Supports auditing and running Flutter/Dart tests, detecting test slop and missing tests.
Audits git working-tree changes by default and maps changed source files to their conventional test files.
Detects and runs Gradle test tasks, auditing for fake or fragile tests and reporting zero-test runs as failures.
Detects and runs Jest test suites, auditing for fake or fragile tests and reporting zero-test runs as failures.
Supports auditing Kotlin/Java test files and running their tests via Gradle or other runners.
Can be used as a pre-commit hook to run the test audit and fail on errors before commit.
Detects and runs pytest test suites, auditing for fake or fragile tests and reporting zero-test runs as failures.
Supports auditing Python test files and running pytest, detecting test slop and missing tests.
Detects and runs cargo test, auditing Rust test files for fake or fragile tests.
Detects and runs swift test, auditing Swift test files for fake or fragile tests.
Detects and runs Vitest test suites, auditing for fake or fragile tests and reporting zero-test runs as failures.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@test-unslopaudit my changed test files for fake tests and run the suite"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
test-unslop-mcp
Stop fake AI-written tests: skill + MCP verifier that catches tests that cannot fail, runs your real test runner, and refuses to call a zero-test run a pass. JS/TS, Python, Go, Rust, Swift, Kotlin/Java.
An agent skill plus an MCP server in one package. The skill tells your coding agent what slop to avoid; the MCP tools then deterministically verify the result, so the agent can't just claim it's done.
Works with Claude Code, Claude Desktop, Codex and Antigravity.
What it catches
Rule | Severity | Catches |
| ERROR | .only / fit silently skips the rest of the suite in CI. Remove it. |
| WARN | Skipped test without a reason. Fix it, delete it, or skip with a linked reason. |
| ERROR | Test never asserts anything: it passes as long as nothing throws. Assert on the result or side effect. |
| ERROR | Assertion that can never fail (compares a value with itself or a literal with the same literal). |
| ERROR | Failure can't surface: an empty catch swallows assertion errors, or a rejects/resolves assertion is not awaited and never runs. |
| WARN | Existence-only assertion passes for almost any output. Assert the actual value or shape. |
| WARN | Fixed sleep makes tests slow and flaky. Use fake timers, waitFor/findBy, polling with a timeout, or an awaited event. |
| WARN | Every assertion in this file is a snapshot: reviewers rubber-stamp snapshot diffs. Assert the behaviour that matters explicitly. |
| WARN | Too many mocks. |
| WARN | Unit test hits a real external URL: slow, flaky and non-hermetic. Stub with MSW/nock/respx/httptest or a local server. |
| WARN | Unseeded random test data makes failures irreproducible. Use fixed values or seed the generator. |
| WARN | Debug output left in tests. Assert on the value instead of printing it. |
run_tests auto-detects vitest, jest, node --test, npm test, pytest, go test, cargo test, swift test, flutter/dart and Gradle. Exiting 0 with zero tests executed is reported as FAIL.
Rules marked ERROR make the audit return status: "FAIL"; WARN is reported but does not fail.
Related MCP server: testing-toolkit-mcp
Quick start
1. Add the MCP server
# Claude Code
claude mcp add test-unslop -s user -- npx -y test-unslop-mcp
# Codex
codex mcp add test-unslop -- npx -y test-unslop-mcpClaude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) and Antigravity (~/.gemini/config/mcp_config.json):
{
"mcpServers": {
"test-unslop": {
"command": "npx",
"args": ["-y", "test-unslop-mcp"]
}
}
}Restart the app afterwards.
2. Install the bundled skill
npx -y test-unslop-mcp install-skills # clients that are installed
npx -y test-unslop-mcp install-skills --all # every locationClient | Location |
Claude Code |
|
Codex |
|
Antigravity |
|
Claude Desktop has no skills folder, so it receives the rules through the MCP prompt and the load_*_rules tool.
MCP surface
Kind | Name | Purpose |
Prompt |
| The full skill text, for GUI clients |
Tool |
| Returns the full test-unslop ruleset. Call before writing code if the test-unslop skill is not already loaded. |
Tool |
| Deterministically scans test files for fake or fragile tests: tests with no assertion, tautological assertions, swallowed failures and un-awaited rejects, .only, reasonless skips, existence-only assertions, fixed sleeps, snapshot-only files, mock-heavy files, real network calls, unseeded randomness and debug output. Accepts files or directories; with no files it audits the git working-tree changes. Suppress a verified false positive with a |
Tool |
| Detects and runs the project's test runner (vitest, jest, node --test, npm test, pytest, go test, cargo test, swift test, flutter/dart test, gradle) and returns PASS/FAIL with the output tail. Treats 'exit 0 but zero tests ran' as FAIL. Run before claiming tests pass. |
Tool |
| Maps changed source files (default: git changes) to their conventional test files (.test.ts, tests/, test_.py, *_test.go, *Tests.swift, *Test.kt) and lists source files with no test. |
File paths resolve against the server's working directory and cannot escape it. Directories honour .gitignore and skip node_modules, build output and minified files.
CLI and CI
The same audit runs without an agent. It exits 1 on any ERROR, so it works as a pre-commit hook or CI step:
npx -y test-unslop-mcp audit # git working-tree changes
npx -y test-unslop-mcp audit src app # files or directories
npx -y test-unslop-mcp audit src --json # machine-readable
npx -y test-unslop-mcp rules # list every ruleSuppressing a false positive
The checks are regex and structure based: fast, offline and predictable, but heuristic. For a verified false positive, add a comment on the line or the line above, with a reason:
// unslop-ignore FOCUSED_TEST -- why this is safe hereSuppressions without a reason are reported as SUPPRESSION_WITHOUT_REASON errors, and every honoured suppression is listed in the audit output so reviewers can see it.
How it works
The agent loads the skill and writes code under its constraints.
Before finishing, the skill requires the audit and verification tools.
On
FAIL, the agent fixes every finding and re-runs untilPASS. Missing toolchains are reported asSKIPPED, never as passing.
The unslop family
All share the engine in unslop-core.
Development
git clone https://github.com/fikrifirmanf/test-unslop-mcp
cd test-unslop-mcp && npm install
npm test # every rule is checked against its good/bad examples
node src/server.mjs # speaks MCP over stdioLicense
MIT © Fikri Firman Fadilah
This server cannot be deployed
Maintenance
Related MCP Connectors
Writes adversarial test suites for AI-built code. Your agent's test engineer.
Enforces architectural invariants and code quality rules inside your AI agent's edit loop.
QA platform for agents: coverage signals, in-repo test plans, verified tests and release governance.
Change-aware CI validation and affected-test guidance for coding agents.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides structured, sandboxed test and lint feedback for coding agents, returning compact typed verdicts with failure fingerprints instead of raw runner output. It enables impact-selected test execution in isolated containers, distinguishing pre-existing failures from regressions.427 PyPIApache 2.0
- AlicenseAqualityAmaintenanceProvides coding agents with visibility into test health through tools for flaky test detection, test quality linting, and LLM evaluation harness, enabling them to triage failures, review test quality, and check prompt changes for regressions.9Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to run deterministic completeness audits on code before declaring 'done'—catching unwired modules, placebo tests, swallowed errors, and stubs via AST analysis, entirely offline and free.MIT
- AlicenseNot gradedqualityCmaintenanceExposes 11 agent-native QA tools over stdio so coding agents can discover a project, analyze risk, select the smallest relevant test set, generate and dry-run tests, triage failures, propose tiered heals, analyze flakes, generate quality reports, and evaluate release readiness. Planning and healing tools stay read-only or propose-only, while execution defaults to dry-run, keeping agent actions safe and evidence-backed.MIT