test-coverage-analyzer
Analyzes test coverage gaps and suggests test cases for untested code paths. Use when user requests test improvements, coverage analysis, or wants to increase test coverage.
What this skill does
# Test Coverage Analyzer
This skill helps identify gaps in test coverage and suggests specific test cases to improve code quality.
## When to Use This Skill
- User asks to analyze test coverage
- User wants to improve test coverage
- User requests suggestions for missing tests
- Working on increasing code coverage percentage
- User mentions "coverage gaps", "untested code", or "test suggestions"
## Instructions
### 1. Detect Testing Framework
Identify the testing framework(s) used in the project:
**JavaScript/TypeScript:**
- Jest: `jest` in package.json or `jest.config.js`
- Mocha: `mocha` in package.json or `.mocharc`
- Vitest: `vitest` in package.json or `vitest.config.js`
- Jasmine: `jasmine` in package.json
**Python:**
- pytest: `pytest` in requirements.txt or `pytest.ini`
- unittest: Standard library, check for test files
- coverage.py: `coverage` in requirements.txt
**Ruby:**
- RSpec: `rspec` in Gemfile
- Minitest: Standard library
**Go:**
- Built-in: `go test` (coverage via `go test -cover`)
**Java:**
- JUnit: Look for JUnit in pom.xml or build.gradle
- JaCoCo: Coverage tool configuration
Use Glob and Grep to find configuration files.
### 2. Locate Coverage Reports
Find existing coverage reports:
**Common locations:**
- `coverage/` directory
- `.nyc_output/` (NYC for Node.js)
- `htmlcov/` (coverage.py for Python)
- `target/site/jacoco/` (JaCoCo for Java)
- Coverage files: `lcov.info`, `coverage.json`, `.coverage`
**If no coverage report exists:**
- Guide user to run coverage: `npm test -- --coverage`, `pytest --cov`, etc.
- Wait for report generation before analyzing
### 3. Parse Coverage Data
Extract coverage information:
**From lcov.info:**
- Lines covered vs total
- Functions covered vs total
- Branches covered vs total
- Uncovered line numbers by file
**From coverage.json (Jest):**
- Statement coverage percentage
- Branch coverage percentage
- Function coverage percentage
- Line coverage percentage
- Uncovered lines per file
**From .coverage (Python):**
- Use `coverage report` or `coverage json`
- Missing line ranges
- Excluded lines
**From HTML reports:**
- Read summary statistics
- Identify files with low coverage
### 4. Identify Coverage Gaps
Prioritize files/functions that need testing:
**High priority:**
- Business logic with 0% coverage
- Public APIs and exported functions
- Error handling paths (catch blocks, error callbacks)
- Edge cases and boundary conditions
- Critical paths (authentication, payment, data validation)
**Medium priority:**
- Utility functions with partial coverage
- Private functions called by public APIs
- Configuration and initialization code
**Lower priority:**
- Simple getters/setters
- Type definitions
- Auto-generated code
- Third-party code
### 5. Analyze Untested Code Paths
For each file with coverage gaps:
1. **Read the source file** to understand the code structure
2. **Identify untested code**:
- Uncovered lines and line ranges
- Untested conditional branches (if/else)
- Uncovered error handlers
- Missing function coverage
3. **Categorize missing tests**:
- Happy path tests
- Error/exception tests
- Edge case tests
- Integration tests
### 6. Generate Test Suggestions
For each coverage gap, suggest specific test cases:
**Format:**
```
File: src/utils/validator.js (42% coverage)
Missing Coverage:
- Lines 15-18: Email validation error path
- Lines 23-25: Empty input handling
- Lines 30-35: Edge case for special characters
Suggested Tests:
1. Test email validation with invalid format (covers lines 15-18)
2. Test validator with empty string input (covers lines 23-25)
3. Test special character handling in names (covers lines 30-35)
```
**Test case details should include:**
- Test description
- Input data
- Expected output/behavior
- Lines/branches covered
### 7. Create Test Stubs (Optional)
If user wants, generate test file stubs:
- Use appropriate test framework syntax
- Include describe/test blocks with TODO comments
- Add example test structure
- Reference the template in `templates/test-template.js` (or appropriate extension)
**Example (Jest):**
```javascript
describe('Validator', () => {
describe('validateEmail', () => {
it('should reject invalid email format', () => {
// TODO: Test email validation error path (lines 15-18)
const result = validateEmail('invalid-email');
expect(result.valid).toBe(false);
});
it('should handle empty string input', () => {
// TODO: Test empty input handling (lines 23-25)
});
});
});
```
### 8. Calculate Coverage Metrics
Provide summary statistics:
- Overall coverage percentage
- Coverage by file/directory
- Functions/methods without tests
- Critical files with low coverage
- Coverage trend (if historical data available)
### 9. Prioritize Recommendations
Order suggestions by:
1. **Impact**: Critical business logic first
2. **Risk**: High-risk areas (security, data integrity)
3. **Complexity**: Complex logic needs more tests
4. **Ease**: Quick wins (simple tests for high coverage gain)
### 10. Output Format
Present findings in a clear, actionable format:
```
Coverage Analysis Summary
=========================
Overall Coverage: 67%
- Statements: 65%
- Branches: 58%
- Functions: 72%
- Lines: 67%
Files Needing Attention (sorted by priority):
1. src/payment/processor.js (23% coverage) - HIGH PRIORITY
- Missing: Error handling for payment failures
- Missing: Retry logic tests
- Missing: Transaction validation
2. src/auth/validator.js (45% coverage) - MEDIUM PRIORITY
- Missing: Invalid token handling
- Missing: Expired session tests
Suggested Test Cases:
[Detailed suggestions for each file]
```
## Best Practices
1. **Focus on meaningful coverage**: 100% coverage isn't always necessary
2. **Test behavior, not implementation**: Suggest tests that verify functionality
3. **Prioritize critical paths**: Authentication, payments, data validation first
4. **Consider test types**: Unit, integration, and e2e where appropriate
5. **Check existing tests**: Don't suggest tests that already exist
6. **Realistic test data**: Use plausible inputs in examples
7. **Coverage thresholds**: Suggest minimum coverage targets (e.g., 80%)
## Running Coverage Reports
Provide commands based on detected framework:
**Jest:** `npm test -- --coverage` or `jest --coverage`
**Vitest:** `npm test -- --coverage` or `vitest run --coverage`
**Mocha + NYC:** `nyc mocha`
**pytest:** `pytest --cov=src --cov-report=html`
**Go:** `go test -cover ./...` or `go test -coverprofile=coverage.out`
**JUnit + JaCoCo:** `mvn test jacoco:report`
## Supporting Files
- `scripts/parse-coverage.sh`: Helper script to extract coverage data
- `templates/test-template.js`: Test file template for JavaScript
- `templates/test-template.py`: Test file template for Python
- `templates/test-template.go`: Test file template for Go
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.