Ralph Coverage
SkillDev toolsRun Ralph in coverage mode — iteratively write tests for untested classes until coverage targets are met. Use when user wants to improve test coverage autonomously.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Ralph Coverage skill
What this skill tells your AI
The instructions your AI receives, as published by jvm-skills/jvm-skills in .junie/skills/ralph-coverage/SKILL.md and read by ahel’s review.
Autonomously improve test coverage by iterating through untested classes, writing tests, and committing. Each iteration picks one class, writes meaningful tests for it, runs them, and commits.
Prerequisites
- A coverage skill that generates a prioritized improvement plan (e.g.
coverage-kover-gradle) claudeCLI on PATH- Clean working tree (the loop commits after every iteration)
Scripts (scripts/ subfolder)
| Script | Purpose |
|---|---|
ralph-once.sh | Single iteration, foreground. Use to try the loop before committing to a long run. |
afk-ralph.sh <iterations> | Headless loop with retry and error handling. Stops early on <promise>COMPLETE</promise>. Depends on ralph-lib.sh from a ralph-plan skill if you use one — otherwise inline the helpers. |
Both scripts cd to the project root and read PRD.md + progress.txt inside this skill's directory.
Files
PRD.md— coverage priorities, target thresholds, rules, and which test base classes / skip patterns to follow. Customize per project.progress.txt— append-only log of completed coverage iterations. Created on first run.
Process (each iteration)
- Run the coverage skill to generate coverage report and improvement plan
- Read the generated improvement document
- Read
progress.txtto see which classes already have tests written - Pick the highest-priority untested class (lowest coverage, not already in progress.txt)
- Read the source class and any existing tests for it
- Write meaningful tests — not just line coverage, but real behavior/edge case tests
- Run the test filter for the new test class to verify tests pass
- Compile to check for syntax errors
- Commit:
git add -A && git commit -m "test: add tests for ClassName" - Update
progress.txtwith class name, previous coverage %, and what was tested
Rules
- ONLY ONE CLASS PER ITERATION
- Follow the project's existing test patterns (see
PRD.md) - Use descriptive test names (e.g.
`should do something specific`) - Skip generated code and framework boilerplate (see
PRD.md) - If all priority classes are covered above the target threshold, output
<promise>COMPLETE</promise>
Project Customization
Customize PRD.md in this skill's directory:
- Test base classes and when to use each (e.g.
DataBaseTest,S3Test) - Skip patterns (generated code, view-context data classes, etc.)
- Coverage target threshold (e.g. 80%)
- Commit message style
- Project-specific exclusions
Signals
- GitHub stars
- 138
- Forks
- 26
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
ralph-coverage- Source
- github.com/jvm-skills/jvm-skills