Use when tests are failing, when investigating flaky or persistent failures, or when a failure signature needs systematic diagnosis through vitest-agent's test_history, test_errors, and failure_signature_get surfaces.
Installs into .claude/skills of the current project.
Are you the author of Debugging?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/spencerbeggs-debugging)
---
name: debugging
description: Use when tests are failing, when investigating flaky or persistent failures, or when a failure signature needs systematic diagnosis through vitest-agent's test_history, test_errors, and failure_signature_get surfaces.
---
# Debugging Test Failures
Systematic approach to diagnosing and fixing test failures using
MCP tools.
## Step 1: Classify the Failure
Use `test_history` to understand the failure pattern:
- **New failure:** First time this test failed. Likely caused by
a recent change
- **Persistent failure:** Failed multiple runs in a row. Likely a
real bug or environment issue
- **Flaky test:** Intermittent pass/fail. Could be timing,
ordering, or shared state
## Step 2: Examine the Error
Use `test_errors` to search for the specific error:
- Search by error name to find similar failures across tests
- Check if the same error appears in other projects
- Look at the diff (expected vs received) for assertion failures
## Step 3: Find Related Tests
Use `test (action: for_file)` to find all tests that cover the file
containing the failure. This helps you:
- Understand the test surface for the affected code
- Find tests that might be affected by the same bug
- Identify missing test coverage
## Step 4: Check Coverage Context
Use `test_coverage` to see:
- Which lines in the failing file are uncovered
- Whether the failure is in a well-tested or poorly-tested area
- Coverage trends (is coverage improving or degrading?)
## Step 5: Document Findings
Use `note (action: create)` to record:
- Root cause analysis
- Steps to reproduce
- Fix strategy
- Any workarounds applied
Pin important notes with `note (action: update)` so they persist across
sessions.
## Step 6: Verify the Fix
1. Run the specific failing test:
`run_tests({ files: ["path/to/failing.test.ts"] })`
2. Run the full suite to check for regressions: `run_tests({})`
3. Check `test_trends` to confirm coverage direction
Always use the `run_tests` MCP tool instead of running vitest via
Bash. It uses Vitest's programmatic API, so results persist to the
database and all query tools reflect the latest run immediately.