vulture-dead-code — скилл для Claude Code: поиск мёртвого Python-кода
Скилл учит агента искать неиспользуемые функции, классы, переменные и импорты в Python через vulture и deadcode. Пригодится при чистке старой кодовой базы.
npx skills add laurigates/claude-plugins --skill vulture-dead-code -a claude-codeЧто делает vulture-dead-code
Скилл описывает два инструмента и разницу между ними. Vulture работает на статическом анализе и выдаёт оценки уверенности от 60 до 100%, поэтому часть находок придётся отсеивать вручную. deadcode разбирает AST, ложных срабатываний меньше, и он умеет находить недостижимый код. Внутри — таблицы, когда что брать, готовые команды и примеры конфигурации в pyproject.toml для обоих.
Ставится через uv add --dev vulture или uv add --dev deadcode. Для vulture есть порог --min-confidence, исключения по маскам и генерация whitelist-файла, куда попадают текущие находки. deadcode настраивается через TOML и поддерживает режим --dry-run, который ничего не удаляет, а только показывает кандидатов.
Если в проекте много динамики — getattr, exec, декораторы вроде @app.route — vulture будет ругаться на живой код. Это повод сразу заполнить ignore_decorators и ignore_names, иначе проверка в CI превратится в шум. Для нового проекта с жёсткими требованиями автор советует deadcode, для крупной старой базы — vulture с порогом 80.
Какие задачи решает
- найти функции и классы, которые больше никто не вызывает
- вычистить неиспользуемые импорты и переменные перед релизом
- собрать whitelist из текущих находок, чтобы не тонуть в них потом
- поймать недостижимый код после крупного рефакторинга
- встроить проверку на мёртвый код в CI
Примеры запросов агенту
- прогони vulture по проекту с порогом уверенности 80 и покажи, что нашлось
- сгенерируй whitelist для vulture и сохрани его в файл
- запусти deadcode с --show-unreachable и разбери недостижимые ветки
Как установить vulture-dead-code
1Через Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill vulture-dead-code -a claude-code2Вручную: положить файлы
~/.claude/skills/vulture-dead-code/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/vulture-dead-code/
1Через Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill vulture-dead-code -a codex2Вручную: положить файлы
.agents/skills/vulture-dead-code/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill vulture-dead-code -a cursor2Вручную: положить файлы
.cursor/skills/vulture-dead-code/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install laurigates/claude-plugins vulture-dead-code2Вручную: положить файлы
.github/skills/vulture-dead-code/SKILL.md1Через Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill vulture-dead-code -a gemini-cli2Командой платформы
gemini skills install https://github.com/laurigates/claude-plugins --path python-plugin/skills/vulture-dead-codeВручную: положить файлы
.devin/skills/vulture-dead-code/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill vulture-dead-code -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора5
Похожие
Рядом в теме «Код-ревью и рефакторинг»
Всё по теме «Код-ревью и рефакторинг» →Вопросы о vulture-dead-code
Как установить vulture-dead-code в Claude?
Выполните npx skills add laurigates/claude-plugins --skill vulture-dead-code -a claude-code. После этого файл скилла лежит в ~/.claude/skills/vulture-dead-code/SKILL.md.
Что делает vulture-dead-code?
Даёт агенту инструкции по двум инструментам поиска мёртвого Python-кода: vulture с оценками уверенности и deadcode на разборе AST. Плюс команды, флаги и примеры конфигурации.
Чем vulture отличается от deadcode?
Vulture старше и работает через оценки уверенности, поэтому находки надо фильтровать. deadcode новее, разбирает AST, даёт меньше ложных срабатываний и умеет искать недостижимый код.
Исходный текст
SKILL.md · MIT
---
created: 2025-12-16
modified: 2026-05-09
reviewed: 2025-12-16
name: vulture-dead-code
description: Vulture and deadcode tools for detecting unused Python code (functions, classes, imports). Use when cleaning up codebases or removing dead code. Triggers vulture, deadcode.
user-invocable: false
allowed-tools: Bash, Read, Grep, Glob
---
# Vulture and deadcode - Dead Code Detection
Tools for finding unused Python code including functions, classes, variables, imports, and attributes.
## When to Use This Skill
| Use this skill when... | Use another tool instead when... |
|------------------------|----------------------------------|
| Detecting unused functions, classes, variables | Finding unused imports only (use `ruff --select F401`) |
| Cleaning up dead code in a codebase | Checking type correctness (use basedpyright) |
| Enforcing code hygiene in CI | Formatting code (use ruff format) |
| Generating whitelists for false positives | Running general linting (use ruff check) |
## 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)
```toml
[tool.vulture]
min_confidence = 80
paths = ["src", "tests"]
exclude = [
"**/migrations/*",
"**/__pycache__/*",
".venv/*"
]
ignore_decorators = [
"@app.route",
"@pytest.fixture",
"@property",
"@staticmethod",
"@classmethod"
]
ignore_names = [
"test_*",
"setUp*",
"tearDown*",
]
```
## deadcode - AST-Based Detection
### Basic Usage
```bash
# Check entire project
deadcode .
# Check specific files/directories
deadcode src/
# Verbose output
deadcode --verbose .
# Dry run (show what would be removed)
deadcode --dry-run .
# Show unreachable code
deadcode --show-unreachable .
# Generate configuration
deadcode --init
```
### Configuration (pyproject.toml)
```toml
[tool.deadcode]
paths = ["src"]
exclude = [
"tests/*",
"**/__pycache__/*",
"**/migrations/*",
]
ignore_names = [
"test_*",
"setUp",
"tearDown",
"main",
]
ignore_decorators = [
"app.route",
"pytest.fixture",
"property",
"staticmethod",
"classmethod",
"abstractmethod"
]
show_unreachable = false
```
## Choosing Between Tools
| Choose Vulture when... | Choose deadcode when... |
|------------------------|------------------------|
| Large, mature codebases | New projects |
| Need confidence-based filtering | Want fewer false positives |
| Need whitelist file approach | Prefer TOML configuration |
| Dynamic code (getattr, exec) | Need unreachable code detection |
### Hybrid Approach
```bash
# Run both for comprehensive detection
vulture --min-confidence 80 .
deadcode .
```
## Agentic Optimizations
| Context | Command |
|---------|---------|
| Quick vulture check | `vulture --min-confidence 90 .` |
| Quick deadcode check | `deadcode .` |
| Generate whitelist | `vulture . --make-whitelist > vulture_whitelist.py` |
| CI enforcement | `vulture --min-confidence 80 . vulture_whitelist.py` |
| Unreachable code | `deadcode --show-unreachable .` |
| Combined check | `vulture --min-confidence 80 . && deadcode .` |
## Quick Reference
### Vulture Flags
| Flag | Description |
|------|-------------|
| `--min-confidence N` | Minimum confidence (60-100%) |
| `--exclude PATTERN` | Exclude glob patterns |
| `--sort-by-size` | Sort results by size |
| `--make-whitelist` | Generate whitelist file |
### deadcode Flags
| Flag | Description |
|------|-------------|
| `--verbose` | Verbose output |
| `--dry-run` | Show without modifying |
| `--show-unreachable` | Detect unreachable code |
| `--init` | Generate configuration |
| `--strict` | Strict enforcement mode |
For detailed examples, advanced patterns, and best practices, see [REFERENCE.md](REFERENCE.md).
© laurigates · MIT · laurigates/claude-plugins