TDD Guide
alirezarezvani/claude-skills
Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and…
Analyze existing test suites and source code to suggest additional unit tests that improve test coverage.
$ npx skills add ArabelaTso/Skills-4-SE --skill coverage-enhancer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ArabelaTso/Skills-4-SE coverage-enhancer --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/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/coverage-enhancer .claude/skills/coverage-enhancer && 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 "coverage-enhancer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/coverage-enhancer into .claude/skills/coverage-enhancer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-enhancer", 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/ArabelaTso/Skills-4-SE/tree/main/skills/coverage-enhancerType 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 ArabelaTso/Skills-4-SE --skill coverage-enhancer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ArabelaTso/Skills-4-SE coverage-enhancer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/coverage-enhancer .agents/skills/coverage-enhancer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "coverage-enhancer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/coverage-enhancer into .agents/skills/coverage-enhancer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-enhancer", 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 ArabelaTso/Skills-4-SE --skill coverage-enhancer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ArabelaTso/Skills-4-SE coverage-enhancer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/coverage-enhancer .cursor/skills/coverage-enhancer && 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 "coverage-enhancer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/coverage-enhancer into .cursor/skills/coverage-enhancer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-enhancer", 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/ArabelaTso/Skills-4-SE.git --path skills/coverage-enhancer--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 ArabelaTso/Skills-4-SE --skill coverage-enhancer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ArabelaTso/Skills-4-SE coverage-enhancer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/coverage-enhancer .gemini/skills/coverage-enhancer && 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 "coverage-enhancer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/coverage-enhancer into .gemini/skills/coverage-enhancer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-enhancer", 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 ArabelaTso/Skills-4-SE coverage-enhancerInstalls 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 ArabelaTso/Skills-4-SE --skill coverage-enhancer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/coverage-enhancer .github/skills/coverage-enhancer && 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 "coverage-enhancer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/coverage-enhancer into .github/skills/coverage-enhancer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-enhancer", 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 ArabelaTso/Skills-4-SE --skill coverage-enhancer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ArabelaTso/Skills-4-SE coverage-enhancer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/coverage-enhancer .opencode/skills/coverage-enhancer && 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 "coverage-enhancer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/coverage-enhancer into .opencode/skills/coverage-enhancer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coverage-enhancer", 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.
coverage-enhancerAnalyze existing test suites and source code to suggest additional unit tests that improve test coverage.
Coverage Enhancer is an agent skill from ArabelaTso/Skills-4-SE. Analyze existing test suites and source code to suggest additional unit tests that improve test coverage. Use this skill when working with test files and source code to identify untested code paths, missing edge cases, uncovered branches, untested error conditions, and gaps in test coverage. Supports major testing frameworks (pytest, Jest, JUnit, Go testing, etc.) and generates targeted test suggestions based on coverage analysis.
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Unit testing, Test coverage and Test generation. It works with Jest, JUnit and pytest. The repository describes itself as: A curated list of 180+ useful Claude Skills for Software Engineering and resources for customizing AI for SE workflows. The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4f38503. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gopytestnpmmvnFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, 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.
Coverage Enhancer loads about 4.4k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 629 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); files beside SKILL.md are not scanned.
The full file from ArabelaTso/Skills-4-SE at commit 4f38503, republished under its Apache-2.0 licence (© ArabelaTso). 629 words, ~4,444 tokens.
.claude/skills/coverage-enhancer/SKILL.md (or your agent's skills folder).Analyze existing tests and source code to identify coverage gaps, then suggest specific additional tests to improve overall test coverage and code quality.
Identify untested areas in source code:
Understand current test coverage by:
Generate specific, actionable test recommendations:
Read and understand the current test suite:
Identify test framework:
# pytest
def test_something():
assert result == expected
# unittest
class TestSomething(unittest.TestCase):
def test_method(self):
self.assertEqual(result, expected)Map tested functionality:
Identify test patterns:
Examine the implementation to find gaps:
Identify code paths:
def process(value):
if value < 0: # Branch 1
raise ValueError
elif value == 0: # Branch 2
return None
else: # Branch 3
return value * 2Find untested branches:
Identify uncovered functions:
Focus on high-value additions:
Priority 1: Critical paths
Priority 2: Complex logic
Priority 3: Completeness
Create specific, ready-to-use tests:
Format:
# Suggested test for uncovered branch: negative input validation
def test_process_negative_input():
"""Test that negative values raise ValueError."""
with pytest.raises(ValueError):
process(-1)
# Reason: This tests the value < 0 branch which is currently uncovered
# Coverage impact: +5 lines, +1 branchInclude:
Recommend running coverage analysis:
# Python
pytest --cov=mymodule --cov-report=html
# JavaScript
npm test -- --coverage
# Java
mvn test jacoco:report
# Go
go test -coverprofile=coverage.out
go tool cover -html=coverage.outUncovered code:
def calculate_discount(price, customer_type):
if customer_type == "premium":
return price * 0.8
elif customer_type == "regular":
return price * 0.9
else:
return priceExisting test:
def test_calculate_discount_premium():
assert calculate_discount(100, "premium") == 80Suggested additions:
def test_calculate_discount_regular():
"""Test discount calculation for regular customers."""
assert calculate_discount(100, "regular") == 90
# Coverage: Tests the 'regular' branch
def test_calculate_discount_no_discount():
"""Test that unknown customer types get no discount."""
assert calculate_discount(100, "guest") == 100
# Coverage: Tests the else branch
def test_calculate_discount_edge_cases():
"""Test discount calculation with edge case prices."""
assert calculate_discount(0, "premium") == 0
assert calculate_discount(0.01, "premium") == 0.008
# Coverage: Tests edge cases within covered branchesUncovered code:
def divide(a, b):
if b == 0:
raise ValueError("Cannot divide by zero")
return a / bExisting test:
def test_divide_normal():
assert divide(10, 2) == 5Suggested addition:
def test_divide_by_zero():
"""Test that dividing by zero raises ValueError."""
with pytest.raises(ValueError, match="Cannot divide by zero"):
divide(10, 0)
# Coverage: Tests the exception path (b == 0 branch)
# Impact: +2 lines, +1 branchUncovered code:
def find_max(numbers):
if not numbers:
return None
max_val = numbers[0]
for num in numbers[1:]:
if num > max_val:
max_val = num
return max_valExisting test:
def test_find_max_normal():
assert find_max([1, 5, 3, 2]) == 5Suggested additions:
def test_find_max_empty():
"""Test that empty list returns None."""
assert find_max([]) is None
# Coverage: Tests the 'if not numbers' branch
def test_find_max_single_element():
"""Test with single element (zero loop iterations)."""
assert find_max([42]) == 42
# Coverage: Tests loop with zero iterations
def test_find_max_all_equal():
"""Test with all identical elements."""
assert find_max([5, 5, 5, 5]) == 5
# Coverage: Tests loop where condition never true
def test_find_max_negative_numbers():
"""Test with negative numbers."""
assert find_max([-5, -1, -10, -3]) == -1
# Coverage: Edge case for comparison logicUncovered code:
def load_config(filename):
try:
with open(filename) as f:
return json.load(f)
except FileNotFoundError:
return {}
except json.JSONDecodeError as e:
raise ValueError(f"Invalid JSON in {filename}: {e}")
except Exception as e:
raise RuntimeError(f"Unexpected error loading {filename}: {e}")Existing test:
def test_load_config_success(tmp_path):
config_file = tmp_path / "config.json"
config_file.write_text('{"key": "value"}')
assert load_config(str(config_file)) == {"key": "value"}Suggested additions:
def test_load_config_file_not_found():
"""Test that missing file returns empty dict."""
assert load_config("nonexistent.json") == {}
# Coverage: Tests FileNotFoundError exception path
def test_load_config_invalid_json(tmp_path):
"""Test that invalid JSON raises ValueError."""
config_file = tmp_path / "bad.json"
config_file.write_text("{invalid json}")
with pytest.raises(ValueError, match="Invalid JSON"):
load_config(str(config_file))
# Coverage: Tests JSONDecodeError exception path
def test_load_config_permission_error(tmp_path):
"""Test that permission errors raise RuntimeError."""
config_file = tmp_path / "protected.json"
config_file.write_text('{"key": "value"}')
config_file.chmod(0o000)
with pytest.raises(RuntimeError, match="Unexpected error"):
load_config(str(config_file))
# Coverage: Tests generic Exception handlerUncovered code:
class Connection:
def __init__(self):
self.state = "closed"
def connect(self):
if self.state == "connected":
raise RuntimeError("Already connected")
self.state = "connected"
def disconnect(self):
if self.state == "closed":
raise RuntimeError("Not connected")
self.state = "closed"Existing test:
def test_connection_happy_path():
conn = Connection()
conn.connect()
assert conn.state == "connected"Suggested additions:
def test_connection_double_connect():
"""Test that connecting twice raises error."""
conn = Connection()
conn.connect()
with pytest.raises(RuntimeError, match="Already connected"):
conn.connect()
# Coverage: Tests invalid state transition
def test_connection_disconnect_when_not_connected():
"""Test that disconnecting when closed raises error."""
conn = Connection()
with pytest.raises(RuntimeError, match="Not connected"):
conn.disconnect()
# Coverage: Tests disconnect precondition check
def test_connection_full_lifecycle():
"""Test complete connect-disconnect cycle."""
conn = Connection()
assert conn.state == "closed"
conn.connect()
assert conn.state == "connected"
conn.disconnect()
assert conn.state == "closed"
# Coverage: Tests all valid state transitionsPercentage of code lines executed by tests:
Total lines: 100
Covered lines: 75
Coverage: 75%Target: 80%+ for critical code, 60%+ overall
Percentage of conditional branches tested:
if condition: # Branch 1
do_something()
else: # Branch 2
do_other()
# 100% branch coverage requires testing both pathsTarget: 70%+ for complex logic
Percentage of functions with at least one test:
Target: 90%+ for public APIs
All possible execution paths tested:
def complex(a, b, c):
if a: # 2 branches
if b: # 2 branches
if c: # 2 branches
return "all true"Total paths: 2³ = 8 paths
Target: Cover critical paths, not necessarily all combinations
Run coverage:
pytest --cov=mymodule --cov-report=term-missing --cov-report=htmlRead coverage report:
# Look for:
# - Missing lines (shown in report)
# - Uncovered branches (with --cov-branch)
# - Files with low coverage (<80%)Suggest tests based on missing lines
Run coverage:
npm test -- --coverage --verboseRead coverage output:
// coverage/lcov-report/index.html shows:
// - Uncovered lines (highlighted in red)
// - Uncovered branches
// - Function coverageRun coverage:
mvn test jacoco:reportRead report:
target/site/jacoco/index.htmlRun coverage:
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.outWhen suggesting tests, use this format:
## Coverage Gap: [Description]
**Location:** [file:line or function name]
**Current Coverage:** [X%]
**Impact:** +[N] lines, +[M] branches
### Suggested Test:
[Complete test code]
**Explanation:**
[What this test covers and why it's important]
**Where to add:**
[In which test file, near which existing test]## Coverage Gap: Error handling for invalid input
**Location:** src/validator.py:45-48
**Current Coverage:** 60% (missing exception path)
**Impact:** +3 lines, +1 branch
### Suggested Test:
```python
def test_validate_email_invalid_format():
"""Test that invalid email format raises ValueError."""
with pytest.raises(ValueError, match="Invalid email format"):
validate_email("not-an-email")
# Additional invalid cases
with pytest.raises(ValueError):
validate_email("")
with pytest.raises(ValueError):
validate_email("@example.com")Explanation: This test covers the exception path when email validation fails. Currently, only the happy path (valid emails) is tested. This improves branch coverage and ensures proper error messages.
Where to add: In tests/test_validator.py, after test_validate_email_valid
## Best Practices
1. **Start with existing tests** - Always read current tests first to understand patterns
2. **Match the style** - Use same framework, naming, and structure as existing tests
3. **Focus on value** - Prioritize high-impact coverage gaps over achieving 100%
4. **Test behavior, not implementation** - Focus on what the code does, not how
5. **Keep tests isolated** - Each test should be independent
6. **Use descriptive names** - Test names should explain what's being verified
7. **Add explanations** - Comment why each test is needed for coverage
8. **Suggest coverage tools** - Help users measure and track coverage
9. **Consider mutation testing** - Suggest tests that would catch actual bugs
10. **Balance coverage and maintainability** - Don't over-test trivial code
## Common Coverage Gaps
### Gap 1: Error Cases Not Tested
```python
# Often only happy path is tested
def parse_int(s):
return int(s) # ValueError not tested
# Suggest:
def test_parse_int_invalid():
with pytest.raises(ValueError):
parse_int("not a number")# Common values tested, boundaries ignored
def clamp(value, min_val, max_val):
return max(min_val, min(max_val, value))
# Need tests for:
# - value == min_val
# - value == max_val
# - value < min_val
# - value > max_valif condition:
# Tested
do_something()
else:
# Never tested!
do_other()for item in collection:
process(item)
# Need tests for:
# - Empty collection
# - Single item
# - Many itemstry:
risky_operation()
finally:
cleanup() # Often not verified
# Suggest test that verifies cleanup happensFor language-specific coverage patterns and testing approaches:
Source code:
def calculate_grade(score):
"""Calculate letter grade from numeric score."""
if score < 0 or score > 100:
raise ValueError("Score must be between 0 and 100")
if score >= 90:
return 'A'
elif score >= 80:
return 'B'
elif score >= 70:
return 'C'
elif score >= 60:
return 'D'
else:
return 'F'Existing tests:
def test_calculate_grade_a():
assert calculate_grade(95) == 'A'
def test_calculate_grade_c():
assert calculate_grade(75) == 'C'Coverage analysis:
Suggested tests:
def test_calculate_grade_invalid_negative():
"""Test that negative scores raise ValueError."""
with pytest.raises(ValueError, match="between 0 and 100"):
calculate_grade(-1)
# Coverage: +2 lines (score < 0 branch)
def test_calculate_grade_invalid_too_high():
"""Test that scores above 100 raise ValueError."""
with pytest.raises(ValueError, match="between 0 and 100"):
calculate_grade(101)
# Coverage: +0 lines (same as above, but tests second condition)
def test_calculate_grade_b():
"""Test B grade threshold."""
assert calculate_grade(85) == 'B'
# Coverage: +1 line (score >= 80 branch)
def test_calculate_grade_d():
"""Test D grade threshold."""
assert calculate_grade(65) == 'D'
# Coverage: +1 line (score >= 60 branch)
def test_calculate_grade_f():
"""Test F grade for failing scores."""
assert calculate_grade(45) == 'F'
# Coverage: +1 line (else branch)
def test_calculate_grade_boundaries():
"""Test exact boundary values."""
assert calculate_grade(90) == 'A' # Exact boundary
assert calculate_grade(89) == 'B' # Just below
assert calculate_grade(80) == 'B' # Exact boundary
assert calculate_grade(79) == 'C' # Just below
assert calculate_grade(70) == 'C' # Exact boundary
assert calculate_grade(60) == 'D' # Exact boundary
assert calculate_grade(0) == 'F' # Lower bound
assert calculate_grade(100) == 'A' # Upper bound
# Coverage: Ensures all boundaries work correctlyResult: 100% line coverage, 100% branch coverage
© ArabelaTso, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/coverage-enhancer of ArabelaTso/Skills-4-SE.
Open the folder on GitHubat commit 4f38503
Coverage Enhancer 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 |
|---|---|---|---|---|---|---|
| Coverage Enhancer this skillArabelaTso/Skills-4-SE | 253 | — | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| TDD Guidealirezarezvani/claude-skills | 28k | — | ~3.4k | Automated safety check: Pass | MIT | |
| TDD GuideLeoYeAI/openclaw-master-skills | 2.2k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Code Testing Agentmicrosoft/testfx | 1k | — | ~2.7k | Automated safety check: Pass | MIT | |
| Test Taggingmicrosoft/testfx | 1k | — | ~4.3k | Automated safety check: Pass | MIT | |
| TDD Guideborghei/Claude-Skills | 881 | — | ~1.7k | Automated safety check: Pass | MIT |
alirezarezvani/claude-skills
Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and…
LeoYeAI/openclaw-master-skills
Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and…
microsoft/testfx
Generates and writes new unit tests for any programming language — scaffolds .NET test projects, pytest suites, Vitest/Jest suites, Go test files, and JUnit suites, and configures coverage tooling…
microsoft/testfx
Analyzes test suites in any language and tags each test with a standardized set of traits (positive, negative, critical-path, boundary, smoke, regression, integration, performance, security).
borghei/Claude-Skills
Guide red-green-refactor TDD with test generation, coverage-gap analysis, and multi- framework support.
aAAaqwq/AGI-Super-Team
Test-driven development workflow with test generation, coverage analysis, and multi-framework support
ArabelaTso/Skills-4-SE
Generate prioritized CVE watchlists and actionable security recommendations for repositories.
ArabelaTso/Skills-4-SE
Automatically migrate Python web applications between frameworks (Flask → FastAPI, Django → FastAPI).
ArabelaTso/Skills-4-SE
Generate test cases using metamorphic testing by applying transformations based on metamorphic properties.
ArabelaTso/Skills-4-SE
Instruments programs to capture execution traces specifically for reproducing reported bugs, enabling consistent replay and diagnosis of failures.
ArabelaTso/Skills-4-SE
Automatically migrate Spring MVC applications to Spring Boot.
ArabelaTso/Skills-4-SE
Instrument programs (Python, C/C++, Java) to capture snapshots of key program states at runtime, including variables, memory, and call stacks.
Categories
Analyze existing test suites and source code to suggest additional unit tests that improve test coverage. Coverage Enhancer is an agent skill from ArabelaTso/Skills-4-SE. Analyze existing test suites and source code to suggest additional unit tests that improve test coverage.
Coverage Enhancer fits situations like: working with test files and source code to identify untested code paths; missing edge cases; uncovered branches; untested error conditions.
Run `npx skills add ArabelaTso/Skills-4-SE --skill coverage-enhancer -a claude-code`. Or copy the skill folder (skills/coverage-enhancer in ArabelaTso/Skills-4-SE) into .claude/skills/coverage-enhancer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ArabelaTso/Skills-4-SE --skill coverage-enhancer -a codex`. Or copy the skill folder (skills/coverage-enhancer in ArabelaTso/Skills-4-SE) into .agents/skills/coverage-enhancer 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 ArabelaTso/Skills-4-SE --skill coverage-enhancer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/coverage-enhancer, .gemini/skills/coverage-enhancer, .github/skills/coverage-enhancer and .opencode/skills/coverage-enhancer in your project.
Going by SKILL.md and its folder, Coverage Enhancer needs the command-line tools its instructions call (go, pytest, npm and mvn). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use npm, 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. Review the folder before installing.
Coverage Enhancer is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Coverage Enhancer: TDD Guide (alirezarezvani/claude-skills, 28k stars), TDD Guide (LeoYeAI/openclaw-master-skills, 2.2k stars), Code Testing Agent (microsoft/testfx, 1k stars) and Test Tagging (microsoft/testfx, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ArabelaTso (a GitHub user) maintains it in ArabelaTso/Skills-4-SE, which has 253 GitHub stars. The repository holds 150 skills in this directory. The repository was last updated on August 21, 2026.
Source: ArabelaTso/Skills-4-SE on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.