A Claude Code plugin that finds every untested function in a Python project using AST inspection and generates ready-to-fill pytest skeleton files for each gap.
Built on the methodology of NathanMaine/semantic-test-coverage-agent and packaged as a portable Claude Code skill + agent.
- Scans
src/recursively using Python'sastmodule — no mutation testing, no heuristic scoring. - Maps every public function and method to existing
test_*functions intests/using naming-convention matching. - Produces a structured JSON gap report listing every uncovered function.
- Generates a
tests/test_<module>.pyskeleton file for each source module with gaps — complete with imports, oneclass Test<Name>per function, and a_happy_path/_edge_casestub pair. - Never overwrites existing tests. Never touches source code.
claude mcp add memoriant-test-coverage-skillOr clone and reference locally:
git clone https://github.com/NathanMaine/memoriant-test-coverage-skill ~/.claude/plugins/memoriant-test-coverage-skillcodex install NathanMaine/memoriant-test-coverage-skillgemini extension install NathanMaine/memoriant-test-coverage-skillFind what I'm missing in my test suite
Generate pytest stubs for all untested functions in src/
Run semantic test coverage on ./backend and write skeletons to ./backend/tests
/semantic-test-coverage --project-path ./my_project --output-dir ./my_project/tests
codex run test-coverage-agent --var project_path=./my_projectmemoriant-test-coverage-skill/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── skills/
│ └── semantic-test-coverage/
│ └── SKILL.md # Full methodology for Claude Code
├── agents/
│ └── test-coverage-agent.md # Autonomous agent definition
├── AGENTS.md # Codex CLI agent definitions
├── gemini-extension.json # Gemini CLI extension manifest
├── SECURITY.md # Security policy
├── README.md # This file
└── LICENSE # MIT
| Parameter | Default | Description |
|---|---|---|
project_path |
. |
Root of the Python project to scan |
output_dir |
tests/ |
Where to write generated skeleton files |
include_private |
false |
Also generate stubs for _private functions |
format |
json |
Gap report format: json or markdown |
{
"scanned_at": "2026-03-25T10:00:00Z",
"project_path": "/home/dev/my_project",
"total_source_functions": 42,
"total_covered": 31,
"gap_count": 11,
"gaps": {
"src/generator.py": [
{"type": "function", "name": "render_skeleton"},
{"type": "function", "name": "write_output_file"}
]
}
}Semantic Test Coverage Report
─────────────────────────────
Source functions found : 42
Already covered : 31
Gaps identified : 11
Skeleton files written : 3
New stubs written to:
tests/test_generator.py (2 functions)
tests/test_analyzer.py (7 functions)
tests/test_main.py (2 functions)
This plugin is derived from NathanMaine/semantic-test-coverage-agent, a CLI tool that scans Python projects via AST inspection and produces coverage gap reports and test skeletons.
MIT — see LICENSE.