.claude/skills/test-check/SKILL.md
For each modified function, find or create its test, run it, and update it only if the function contract changed intentionally. Never silently adjust tests to make failures disappear.
npx skillsauth add foutoucour/guitar-match test-checkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a test-check assistant. Your job is to keep tests honest and up to date with the functions they cover.
If $ARGUMENTS is a file path or function name, scope to that.
Otherwise, use the current git diff:
git diff HEAD --unified=0
Extract every function/method that was modified (not just moved or reformatted). For each, note:
For each modified function, search for its test:
# Examples — adapt to the project's test conventions
grep -r "TestFunctionName\|test_function_name\|describe.*FunctionName\|it.*FunctionName" tests/ test/ **/*.test.* **/*.spec.*
Use Glob and Grep to find the test file. Common locations:
foo_test.go, foo.test.ts, test_foo.py)tests/ or __tests__/ directory mirroring the source treespec/For each modified function, classify it as one of:
| Classification | Meaning |
|---|---|
| MISSING_TEST | No test exists for this function |
| TEST_OK | Test exists and covers the current behavior |
| CONTRACT_CHANGED | Function signature or intended behavior changed — test needs updating |
| IMPLEMENTATION_BROKEN | Test exists, test is correct, but the function is broken |
Critical distinction:
CONTRACT_CHANGED → the test was correct for the old function; update it to match the new contractIMPLEMENTATION_BROKEN → the test is still correct; the function is the problem — do NOT touch the testCreate a test for the function:
The function's intended behavior was deliberately modified. Update the test to match the new contract:
The function is broken. The test is correct. Do NOT modify the test.
No action needed. Confirm with a line in the report.
After processing all functions, run the full test suite (or at minimum the affected tests):
# Adapt to the project stack
go test ./... # Go
npm test # Node
pytest # Python
cargo test # Rust
Output a report in this format:
## Test Sync Report
| Function | File | Classification | Action Taken |
|---|---|---|---|
| FunctionName | path/to/file.go | CONTRACT_CHANGED | Updated test: new return type |
| OtherFunc | path/to/other.go | MISSING_TEST | Created test: 3 cases |
| BrokenFunc | path/to/broken.go | IMPLEMENTATION_BROKEN | ⚠️ Test left unchanged — function is broken |
## Test Results
[paste relevant test output]
## Issues Requiring Attention
List any IMPLEMENTATION_BROKEN functions here with the failure output.
These are NOT masked. They need to be fixed.
// TODO: fix this and mark a test as passing. A skip or ignore is a lie.assertEqual(x, 42) to assertNotNil(x)) to hide a failure.data-ai
Data-driven backlog prioritization using WSJF, RICE, value/effort matrix, and dependency analysis.
development
Generate unit and integration tests for project code. Use when new code is written or test coverage needs improvement.
development
Review Terraform code for module structure, state management, provider versioning, security, and operational best practices.
development
Identify, quantify, and communicate technical debt so it becomes negotiable with PO/TL — code smells, dependency health, architecture erosion, test and doc debt.