🛡️ Plankton Code Quality — Обзор навыка
Этот навык превращает Claude Code в среду для непрерывной проверки качества кода во время редактирования, а не после коммита. Plankton Code Quality (создан @alxfazio) автоматически форматирует и линтит файлы при каждом их изменении, а если авто-исправление невозможно — запускает отдельные дочерние процессы Claude, чтобы исправить нарушения без участия основного агента.
Навык особенно полезен, если вы:
- Хотите поймать проблемы с кодом в момент написания, а не в CI.
- Хотите защитить конфигурацию линтеров (
ruff.toml, biome.json) от случайного или намеренного отключения правил агентом.
- Используете несколько языков (Python, TypeScript, Shell, YAML, JSON, Dockerfile и др.).
⚙️ Как работает
Plankton состоит из набора хуков Claude Code, которые срабатывают в три этапа после каждой операции Write или Edit файла.
Фаза 1: Автоматическое форматирование (беззвучно)
Сразу после редактирования запускаются форматтеры:
- Python:
ruff format
- TypeScript/JS:
biome format
- Shell:
shfmt
- TOML:
taplo
- Markdown:
markdownlint-cli2
Эта фаза исправляет ~40–50% проблем (пробелы, кавычки, пустые строки) и не выводит ничего в лог основного агента — всё чинится незаметно.
Фаза 2: Сбор нарушений (JSON)
Линтеры собирают оставшиеся нарушения в структурированный JSON:
{
"line": 42,
"column": 10,
"code": "F401",
"message": "module imported but unused",
"linter": "ruff"
}
Нарушения не выводятся напрямую основному агенту — они передаются в фазу 3.
Фаза 3: Дочерние процессы Claude с маршрутизацией по сложности
Система запускает claude -p (дочерний процесс), передавая ему JSON с нарушениями и контекст. Модель выбирается по типу ошибки:
| Уровень |
Модель |
Таймаут |
Тип нарушений |
| 🟢 Лёгкий |
Haiku |
120 с |
Стиль, импорты, форматирование (E, W, F) |
| 🟡 Средний |
Sonnet |
300 с |
Сложность, рефакторинг (C901, PLR) |
| 🔴 Сложный |
Opus |
600 с |
Система типов, глубокие ошибки (unresolved-attribute) |
Если нарушений больше порога volume_threshold (по умолчанию 5), задача автоматически передаётся на уровень выше. После исправления фазы 1 и 2 запускаются повторно для верификации.
Что видит основной агент
- Всё чисто — агент не видит ничего, работа продолжается, exit code = 0.
- Ошибки исправлены дочерней моделью — exit code = 0, нарушений нет.
- Неисправимые нарушения остались — агент получает сообщение
[hook] N violation(s) remain, exit code = 2.
- Рекомендации (например, устаревший инструмент) —
[hook:advisory], exit code = 0.
🛡️ Защита конфигурации линтеров
LLM нередко пытаются изменить файлы линтеров, чтобы пройти проверку, вместо того чтобы чистить код. Plankton использует три уровня защиты:
- PreToolUse Hooks (
protect_linter_configs.sh) — блокируют редактирование файлов .ruff.toml, biome.json, .shellcheckrc, .hadolint.yaml и др. до того, как изменение произойдёт.
- Stop Hooks (
stop_config_guardian.sh) — при завершении сессии проверяют git diff на предмет несанкционированных изменений конфигов.
- Список защищённых файлов — задаётся в коде хука, его тоже нельзя поменять из chat.
📦 Принуждение к современным менеджерам пакетов
Дополнительный PreToolUse хук блокирует вызовы устаревших пакетных менеджеров и предлагает современные альтернативы:
pip, pip3, poetry, pipenv → заблокированы, используйте uv
npm, yarn, pnpm (кроме npm audit, npm view, npm publish) → заблокированы, используйте bun
🗂️ Когда использовать
- Каждый день — как часть основного процесса разработки с Claude Code, чтобы не отвлекаться на качество кода во время работы.
- Проекты на нескольких языках — Plankton покрывает 8 популярных языков и форматов.
- Команды, которые хотят жёсткие стандарты кодирования — защита от «ленивых» правок конфигов и автоматический многоуровневый фикс.
- В паре с ECC (Expert Coding Companion) — ECC даёт команды, плагины и правила, а Plankton — автоматическую проверку на уровне хуков. ECC берёт на себя Prettier/tsc, а Plankton — 20+ линтеров и исправление дочерними процессами.
⚡ Важно знать
- Установка — склонируйте репозиторий
git clone https://github.com/alexfazio/plankton.git, установите зависимости (brew install jaq ruff uv, uv sync --all-extras), запустите claude — хуки подхватятся автоматически.
- Конфигурация — файл
.claude/hooks/config.json позволяет отключать языки, менять таймауты и пороги сложности.
- Конфликты с ECC — если оба навыка используют PostToolUse хуки, Plankton рекомендует отключить Prettier-хук ECC, так как
biome от Plankton покрывает те же языки и более полный.
- Переменные окружения —
HOOK_SKIP_SUBPROCESS=1 (пропустить фазу исправления), HOOK_SUBPROCESS_TIMEOUT=N (переопределить таймауты), HOOK_DEBUG_MODEL=1 (логировать выбор модели).
Комментарии
Комментариев пока нет. Будьте первым.