E2E Test Thinker
UniClipboard/UniClipboard
Analyze the current branch's diff against main and determine which changes are testable via CLI-based end-to-end tests.
Holistic test coverage measurement. An agent skill from sd0xdev/sd0x-harness.
$ npx skills add sd0xdev/sd0x-harness --skill test-health -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sd0xdev/sd0x-harness test-health --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/test-health .claude/skills/test-health && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "test-health" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/test-health into .claude/skills/test-health/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-health", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/sd0xdev/sd0x-harness/tree/main/skills/test-healthType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add sd0xdev/sd0x-harness --skill test-health -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sd0xdev/sd0x-harness test-health --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/test-health .agents/skills/test-health && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "test-health" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/test-health into .agents/skills/test-health/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-health", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sd0xdev/sd0x-harness --skill test-health -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sd0xdev/sd0x-harness test-health --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/test-health .cursor/skills/test-health && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "test-health" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/test-health into .cursor/skills/test-health/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-health", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/sd0xdev/sd0x-harness.git --path skills/test-health--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add sd0xdev/sd0x-harness --skill test-health -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sd0xdev/sd0x-harness test-health --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/test-health .gemini/skills/test-health && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "test-health" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/test-health into .gemini/skills/test-health/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-health", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install sd0xdev/sd0x-harness test-healthInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add sd0xdev/sd0x-harness --skill test-health -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/test-health .github/skills/test-health && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "test-health" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/test-health into .github/skills/test-health/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-health", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sd0xdev/sd0x-harness --skill test-health -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sd0xdev/sd0x-harness test-health --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/test-health .opencode/skills/test-health && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "test-health" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/test-health into .opencode/skills/test-health/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-health", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
test-healthHolistic test coverage measurement. An agent skill from sd0xdev/sd0x-harness.
Test Health is an agent skill from sd0xdev/sd0x-harness. Holistic test coverage measurement. Use when: assessing test health, measuring coverage trends, quantitative + qualitative test audit. Not for: running tests (use verify), reviewing test sufficiency only (use codex-test-review), generating tests (use codex-test-gen). Output: multi-dimensional dashboard with coverage metrics + test inventory + trend.
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `references/artifact-formats.md`, `references/test-count-parsers.md` and `references/trend-schema.md`).
It sits in Testing & QA, covering Test generation and Test coverage. The repository describes itself as: The harness layer for Claude Code — a reference implementation of harness engineering with hook-enforced dual review, state-machine gates that survive context compaction, and… The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit a4d4bc1. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadGrepGlobBash(bash:*)Bash(git:*)Bash(node:*)Bash(npm:*)Bash(pnpm:*)Bash(yarn:*)Bash(npx:*)…and 8 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
bashgitgoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Test Health loads about 2.5k tokens when it runs, and up to ~5k if it reads all its reference files. Until then it costs about 91 tokens; SKILL.md has 759 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from sd0xdev/sd0x-harness at commit a4d4bc1, republished under its MIT licence (© sd0xdev). 759 words, ~2,531 tokens.
.claude/skills/test-health/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.| 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 bash scripts/resolve-feature.sh (same cascade as other skills) — the shim over the wrapper, which emits the full shape with scan_error: true rather than a bare {} however the CLI fails: nonzero exit, signal, partial write, or a payload that is not the agreed shape. It cannot cover node itself being unavailable — the shim would exit 127 with no JSON — so treat an empty or non-JSON reply as a failure too. Gate on scan_error !== false before reading anything else — never on === true, because an
empty or non-JSON reply carries no such field at all and the stricter test is false for it. Only once
the flag is exactly false does any other field mean what it says: the failure payload sets
has_tech_spec false along with everything else, so branching on that field first reports an
unreadable corpus as a feature with no documents, and the coverage of a real feature disappears
behind a reassuring advisory.
| Payload | Phase A |
|---|---|
scan_error !== false (including an empty or non-JSON reply) | Skip, advisory "Phase A skipped: feature docs could not be read (scan_error) — coverage is unknown, not absent" |
scan_error: false, has_tech_spec: true | Dispatch /check-coverage <docs_path> via Skill tool |
scan_error: false, feature unresolved or no tech spec | Skip, 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 |
© sd0xdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in skills/test-health of sd0xdev/sd0x-harness.
Open the folder on GitHubat commit a4d4bc1
Test Health next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Test Health this skillsd0xdev/sd0x-harness | 192 | — | ~2.5k | Automated safety check: Pass | MIT | |
| E2E Test ThinkerUniClipboard/UniClipboard | 1.9k | — | ~1.7k | Automated safety check: Pass | AGPL-3.0 | |
| Ralph Coveragejvm-skills/jvm-skills | 140 | — | ~683 | Automated safety check: Pass | Apache-2.0 | |
| Designing TestsCloudAI-X/opencode-workflow | 275 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Mutation Testingproffesor-for-testing/agentic-qe | 494 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Write Testsgnomeria/usbtree | 690 | — | ~622 | Automated safety check: Pass | MIT |
UniClipboard/UniClipboard
Analyze the current branch's diff against main and determine which changes are testable via CLI-based end-to-end tests.
jvm-skills/jvm-skills
Run Ralph in coverage mode — iteratively write tests for untested classes until coverage targets are met.
CloudAI-X/opencode-workflow
Guides test strategy, TDD/BDD approaches, test coverage planning, and testing best practices.
proffesor-for-testing/agentic-qe
Test quality validation through mutation testing, assessing test suite effectiveness by introducing code mutations and measuring kill rate.
gnomeria/usbtree
Author tests that match the repo's stack and existing test style, at the cheapest level that catches the regression.
jmagly/aiwg
Run mutation testing to validate test quality beyond code coverage.
sd0xdev/sd0x-harness
Write an Architecture Decision Record (ADR) for a feature — Context / Decision / Status / Consequences / Alternatives, filed as docs/features/<feature/adr-<NNN-<title.md with a 3-digit zero-padded…
sd0xdev/sd0x-harness
Load GitHub PR review comments into AI session — analyze, triage, plan.
sd0xdev/sd0x-harness
Change-aware next step advisor. An agent skill from sd0xdev/sd0x-harness.
sd0xdev/sd0x-harness
Obsidian vault integration via official CLI. An agent skill from sd0xdev/sd0x-harness.
sd0xdev/sd0x-harness
Agent-driven workflow orchestration (v1 report-only). An agent skill from sd0xdev/sd0x-harness.
sd0xdev/sd0x-harness
Post friendly review comments to a GitHub PR — prepare locally, preview, then submit as atomic review.
Categories
Holistic test coverage measurement. An agent skill from sd0xdev/sd0x-harness. Test Health is an agent skill from sd0xdev/sd0x-harness. Holistic test coverage measurement.
Test Health fits situations like: : assessing test health; measuring coverage trends; quantitative + qualitative test audit.
Run `npx skills add sd0xdev/sd0x-harness --skill test-health -a claude-code`. Or copy the skill folder (skills/test-health in sd0xdev/sd0x-harness) into .claude/skills/test-health in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sd0xdev/sd0x-harness --skill test-health -a codex`. Or copy the skill folder (skills/test-health in sd0xdev/sd0x-harness) into .agents/skills/test-health in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sd0xdev/sd0x-harness --skill test-health -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-health, .gemini/skills/test-health, .github/skills/test-health and .opencode/skills/test-health in your project.
Going by SKILL.md and its folder, Test Health needs JavaScript for the scripts in its folder and the command-line tools its instructions call (bash, git and go). Our summary lists: Python 3; Node.js. Its frontmatter pre-approves these tools: Read, Grep, Glob, Bash(bash:*), Bash(git:*), Bash(node:*), Bash(npm:*), Bash(pnpm:*), Bash(yarn:*), Bash(npx:*), Bash(stat:*), Bash(find:*), Bash(python*:*), Bash(pytest:*), Bash(cargo:*), Bash(go:*), Skill, Agent.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Test Health is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Test Health: E2E Test Thinker (UniClipboard/UniClipboard, 1.9k stars), Ralph Coverage (jvm-skills/jvm-skills, 140 stars), Designing Tests (CloudAI-X/opencode-workflow, 275 stars) and Mutation Testing (proffesor-for-testing/agentic-qe, 494 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sd0xdev (a GitHub user) maintains it in sd0xdev/sd0x-harness, which has 192 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on October 8, 2026.
Source: sd0xdev/sd0x-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.