From sd0x-dev-flow
Measures test coverage holistically with a multi-dimensional dashboard including coverage metrics, test inventory, and trend analysis. Use for assessing test health or coverage trends, not for running tests or generating them.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sd0x-dev-flow:test-healthThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Keywords: test health, coverage measurement, test metrics, coverage trend, test inventory, holistic test audit
| Scenario | Alternative |
|---|---|
| Run tests | /verify |
| Review test sufficiency only | /codex-test-review |
| Generate unit tests | /codex-test-gen |
| Feature-doc coverage only | /check-coverage |
| Context-aware test execution + triage | /test-deep |
flowchart TD
U[User: /test-health] --> M{Mode?}
M --> |quick| Q[Quick Mode]
M --> |--full| F[Full Mode]
Q --> Q1[Test Inventory]
Q1 --> Q2[Consume Coverage Artifacts]
Q2 --> Q3[Trend Delta]
Q3 --> QR[Quick Dashboard]
F --> A[Phase A: /check-coverage]
A --> B[Phase B: Coverage Collection]
B --> C[Phase C: /codex-test-review]
C --> D[Phase D: Aggregate Dashboard]
D --> T[Trend Snapshot]
T --> FR[Full Dashboard]
| Mode | Trigger | Content | Duration |
|---|---|---|---|
quick (default) | /test-health | Test inventory + consume artifacts + trend delta | <15s |
full | /test-health --full | Phase A→B→C→D (feature coverage + instrumentation + qualitative + aggregation) | 2-5min |
references/test-count-parsers.md for layer classification). If --scope <path> specified, limit Glob to that directory. If verify-runner cache exists (.claude/cache/verify/), read historical logs for test counts.references/artifact-formats.md). If --scope specified, scan within scope only. Never execute project commands in quick mode.references/trend-schema.md). Skip if --no-trend flag is set.Resolve docs path using scripts/resolve-feature.sh (same cascade as other skills). If has_tech_spec=true, dispatch /check-coverage <docs_path> via Skill tool. If feature not resolved or no tech spec, skip Phase A with advisory: "Phase A skipped: no feature docs detected".
--collect flag: execute project coverage command (test:coverage or coverage from package.json)references/test-count-parsers.md)Dispatch /codex-test-review via Skill tool for 5-dimension quality assessment.
references/trend-schema.md)| Priority | Method | Trigger | Output |
|---|---|---|---|
| 1 | Consume existing artifact | Default (quick + full) | source_type: instrumented_artifact |
| 2 | Run project coverage command | --collect flag only (opt-in) | source_type: collected_now |
| 3 | Heuristic proxy (test/source file ratio) | No artifact and no --collect | source_type: heuristic |
Prohibited: Never auto-install coverage tools (c8, nyc, istanbul, pytest-cov, tarpaulin, jacoco).
## Test Health (Quick)
### Test Inventory
| Layer | Files | Tests | Source |
|-------|-------|-------|--------|
| Unit | 25 | 47 | cached_stdout |
| Integration | 1 | 12 | cached_stdout |
| E2E | 0 | — | file_count |
### Code Coverage
| Metric | Value | Tool | Freshness |
|--------|-------|------|-----------|
| Lines | 82.3% | c8 | current |
| Branches | 76.0% | c8 | current |
### Trend (vs previous)
| Metric | Previous | Current | Delta |
|--------|----------|---------|-------|
| Line coverage | 80.2% | 82.3% | +2.1% |
| Test count | 57 | 59 | +2 |
### Quick Verdicts
| Dimension | Status |
|-----------|--------|
| Has tests for changed files | OK |
| Coverage artifact exists | OK |
| Trend direction | Improving |
## Test Health Report (Full)
### Phase A: Feature Coverage
(from /check-coverage): 12/15 documented features have tests (80%)
### Phase B: Code Coverage + Inventory
| Layer | Files | Tests | Passed | Failed | Duration |
|-------|-------|-------|--------|--------|----------|
| Unit | 25 | 47 | 45 | 2 | 12s |
| Integration | 1 | 12 | 12 | 0 | 45s |
| E2E | 0 | 0 | — | — | — |
| Metric | Value | Source | Tool | Freshness |
|--------|-------|--------|------|-----------|
| Lines | 82.3% | instrumented_artifact | c8 | current HEAD |
| Branches | 76.0% | instrumented_artifact | c8 | current HEAD |
### Phase C: Quality Findings
(from /codex-test-review):
| Dimension | Rating |
|-----------|--------|
| Happy path | 4/5 |
| Error handling | 3/5 |
| Edge cases | 3/5 |
| Mock quality | 4/5 |
### Phase D: Aggregate Dashboard
#### Trend (vs last 5 runs)
| Run | Date | Line Cov | Tests | Delta |
|-----|------|----------|-------|-------|
| a1b2c3d | 04-01 | 82.3% | 59 | +2.1% / +2 |
| f4e5d6c | 03-31 | 80.2% | 57 | -0.5% / +0 |
#### Verdicts
| Dimension | Status | Detail |
|-----------|--------|--------|
| Test inventory | WARN | No E2E tests |
| Code coverage | OK | 82.3% lines (instrumented) |
| Feature coverage | OK | 80% features covered |
| Quality | WARN | 1 P2 finding |
| Trend | OK | Improving over last 3 runs |
| Changed-file coverage | OK | All changed files have tests |
| Rule | Description |
|---|---|
| No composite score in v1 | Multi-dimensional dashboard, no single blended number |
| Changed-file focus | Prioritize git diff files for coverage check |
| Source transparency | Every metric tagged: instrumented / heuristic / missing |
| Qualitative coupling | Full mode always runs Phase C even if quantitative metrics are green |
| Tool change detection | tool_id change resets trend line |
| Stale detection | Artifact older than HEAD marked stale |
| Policy | Behavior |
|---|---|
| Advisory (default) | Output dashboard + verdicts, do not block |
| Strict (v2, opt-in) | Changed files with zero tests block |
v1 implements advisory mode only.
| Skill | Interaction | Relationship |
|---|---|---|
/check-coverage | Phase A: feature-doc coverage | Sub-step |
/codex-test-review | Phase C: qualitative review | Sub-step |
/verify | Phase B: reference output or trigger test:coverage | Optional sub-step |
/test-deep | Independent (execution + triage) | Peer |
/pre-pr-audit | Quick mode as non-blocking signal | Consumer |
| Ecosystem | Detection | Coverage Artifact | Test Count Parser |
|---|---|---|---|
| Node.js | package.json | coverage/ dir (LCOV/Istanbul/Jest) | node:test / jest / vitest |
| Python | pyproject.toml / setup.py | coverage.xml | pytest |
| Go | go.mod | cover.out | go test -json |
| Rust | Cargo.toml | tarpaulin-report.json / cobertura.xml | cargo test |
| Java | build.gradle / pom.xml | build/reports/jacoco/ | gradle/maven |
| Unknown | — | Scan for lcov.info / cobertura.xml | File count fallback |
Graceful degradation: no artifact + no coverage command = heuristic proxy + source_type: heuristic.
.claude/cache/test-health/| File | Purpose |
|---|---|
references/artifact-formats.md | Coverage artifact formats + scan + freshness |
references/trend-schema.md | Trend storage schema + lock + comparison rules |
references/test-count-parsers.md | Framework output parsers + layer classification |
npx claudepluginhub sd0xdev/sd0x-dev-flow --plugin sd0x-dev-flowQueries test coverage in Python, Node.js, Rust, Go projects. Identifies uncovered areas/files, analyzes trends, and generates reports before changes or PRs.
Testing reconnaissance — inventory all tests, frameworks, coverage, CI integration, and assess testing maturity for project takeover. Use when asked to "understand the tests", "testing assessment", "what's tested", or "test inventory".
Analyzes test coverage reports (lcov, cobertura, istanbul) to identify gaps in lines/branches/functions, map to requirements, recommend tests, and track trends.