Vulture and deadcode tools for detecting unused Python code (functions, classes, variables, imports). Use when cleaning up codebases, removing unused code, or enforcing code hygiene in CI. Triggered by: vulture, deadcode, dead code detection, unused code, code cleanup, remove unused.
View on GitHublaurigates/claude-plugins
python-plugin
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/laurigates/claude-plugins/blob/main/python-plugin/skills/vulture-dead-code/SKILL.md -a claude-code --skill vulture-dead-codeInstallation paths:
.claude/skills/vulture-dead-code/# Vulture and deadcode - Dead Code Detection
Tools for finding unused Python code including functions, classes, variables, imports, and attributes.
## Overview
**Vulture** (mature, confidence-based) and **deadcode** (newer, AST-based) both detect unused code but with different approaches:
| Feature | Vulture | deadcode |
|---------|---------|----------|
| **Approach** | Static analysis + confidence scores | AST-based detection |
| **Accuracy** | Confidence scores (60-100%) | High accuracy, fewer false positives |
| **Speed** | Fast | Very fast |
| **Configuration** | Whitelist files | TOML configuration |
| **Maturity** | Mature (2012) | Newer (2023+) |
| **Best For** | Large codebases, gradual cleanup | New projects, strict enforcement |
## Installation
```bash
# Install vulture
uv add --dev vulture
# Install deadcode (newer alternative)
uv add --dev deadcode
# Install both for comparison
uv add --dev vulture deadcode
```
## Vulture - Confidence-Based Detection
### Basic Usage
```bash
# Check entire project
vulture .
# Check specific files/directories
vulture src/ tests/
# Minimum confidence threshold (60-100%)
vulture --min-confidence 80 .
# Exclude patterns
vulture . --exclude "**/migrations/*,**/tests/*"
# Sort by confidence
vulture --sort-by-size .
# Generate whitelist of current issues
vulture . --make-whitelist > vulture_whitelist.py
```
### Configuration
#### pyproject.toml Configuration
```toml
[tool.vulture]
# Minimum confidence to report (60-100%)
min_confidence = 80
# Paths to scan
paths = ["src", "tests"]
# Exclude patterns (glob)
exclude = [
"**/migrations/*",
"**/__pycache__/*",
"**/node_modules/*",
".venv/*"
]
# Ignore decorators (marks functions as used)
ignore_decorators = [
"@app.route",
"@pytest.fixture",
"@property",
"@staticmethod",
"@classmethod"
]
# Ignore names matching patterns
ignore_names = [
"test_*", # Test functions
"setUp*", # Test setup
"tearDown*", #