skills/test-only-dead-code-detector/SKILL.md
Detect Python dead-code candidates that are referenced only from tests by running Vulture twice and diffing results (production paths vs production+test paths). Use when auditing cleanup targets, reviewing unused-code reports, or validating whether symbols are reachable only through tests.
npx skillsauth add mullzhang/skills test-only-dead-code-detectorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run vulture in two passes and compare findings to isolate test-only references.
$CODEX_HOME/skills/... (fallback: ~/.codex/skills/...).TEST-ONLY CANDIDATES as "used only by tests" cleanup targets.UNUSED EVEN WITH TESTS as stronger dead-code candidates.DETECTOR_SCRIPT="${CODEX_HOME:-$HOME/.codex}/skills/test-only-dead-code-detector/scripts/find_test_only_dead_code.py"
python "$DETECTOR_SCRIPT" \
--vulture-bin ./.venv/bin/vulture \
--prod-path src \
--prod-path experiments \
--test-path tests \
--config pyproject.toml \
--min-confidence 60 \
--exclude "*/conftest.py,*/__init__.py"
TEST-ONLY CANDIDATES
UNUSED EVEN WITH TESTS
ONLY IN WITH-TESTS SCAN
--prod-path: Add a production path (repeatable). Default: src.--test-path: Add a test path (repeatable). Default: tests.--config: Pass pyproject.toml or another vulture config.--exclude, --ignore-names, --ignore-decorators, --min-confidence, --sort-by-size: Forwarded to both runs.--json-output: Write machine-readable report.--fail-on-test-only: Exit 1 if test-only candidates are found.--fail-on-unused-with-tests: Exit 1 if findings remain unused with tests included.DETECTOR_SCRIPT="${CODEX_HOME:-$HOME/.codex}/skills/test-only-dead-code-detector/scripts/find_test_only_dead_code.py"
python "$DETECTOR_SCRIPT" \
--vulture-bin ./.venv/bin/vulture \
--prod-path src \
--test-path tests \
--config pyproject.toml \
--fail-on-test-only
development
Create a finite Markdown questionnaire file that contains grouped questions, recommended options, answer fields, and optional rationale fields, then read the completed file and continue from the user's answers. Use when Codex needs to ask multiple questions for requirements, specifications, acceptance criteria, product decisions, design choices, implementation tradeoffs, or any situation where conversational back-and-forth would fatigue the user or make the remaining question count unclear.
testing
Generate synthetic data with SDV (Synthetic Data Vault). Learn patterns from real data with machine learning and produce privacy-preserving synthetic data. Use cases: (1) single-table synthetic data generation, (2) multi-table (relational DB) synthetic data generation, (3) time-series synthetic data generation, (4) synthetic data quality evaluation, and (5) metadata and constraint setup
development
Parse PuLP and solver logs (CBC, HiGHS, Gurobi, CPLEX) to diagnose infeasible/unbounded/time-limit/execution failures, extract key metrics, and propose prioritized next debugging actions. Use when given optimization run logs, solver stdout/stderr, or LP/MPS export errors and you need root-cause clues that generalize across optimization problems. When LP/MPS/log artifacts exist, include all of them in the analysis.
development
For early development phases. Prevent excessive fallbacks, backward compatibility code, and duplication during code generation. Use when generating, modifying, or refactoring code.