Об этом проекте

gha-doctor — это командная утилита, которая диагностирует воркфлоу GitHub Actions на наличие нестабильных jobs, потраченных впустую минут, медленных шагов, проблем с кэшем и антипаттернов одним вызовом без конфигурации. README позиционирует его рядом с actionlint (корректность) и zizmor (безопасность), покрывая скорость, стоимость и надёжность. Он читает .github/workflows для статических проверок и использует существующий GITHUB_TOKEN или аутентификацию gh CLI для анализа истории запусков; режим только для линтинга работает офлайн без аутентификации. Флаг --repo owner/name загружает файлы воркфлоу и историю запусков другого репозитория через API, поэтому клоны не нужны, а --org выполняет Fleet-диагностику в масштабах организации или пользователя. Статический анализ организуется вокруг 21 документируемого правила (D001–D021) с уровнями серьёзности и номерами строк, указывающими на точное расположение в YAML. Они охватывают: отсутствие concurrency с cancel-in-progress на PR-воркфлоу, jobs без timeout-minutes, setup-node/setup-python/setup-java без встроенного input кэша, checkouts полного history, crons чаще раза в 15 минут, macOS и Windows runners на каждом push, docker build-push без cache-from, actions/cache без restore-keys, continue-on-error на уровне jobs, default retention артефактов, крупные matrices, npm install вместо npm ci, unscoped push и pull_request двойные триггеры, cron на нулевой минуте, устаревшие или снятые с эксплуатации лейблы раннеров и версии actions, отсутствие автоматических обновлений pinned-действий, устаревшие workflow-команды, устаревшие Node-рантаймы в публикуемых действиях и scheduled-воркфлоу без repository guard. Найденные проблемы можно заглушить inline-комментарием на указанной строке или глобально через --disable, а каждое правило можно пояснить офлайн с помощью --explain. Анализ истории запусков обнаруживает нестабильные jobs по наличию одновременно failed и passed на одном коммите, отображает success rate, p50 и p95 durations, queue time и стоимость, определяет самые медленные шаги и потраченные минуты, измеряет rate hit/miss кэша и может назвать нестабильные тесты по логам jobs. Всё сводится в детализированный Health Score от 0 до 100, который можно выводить как SVG-бейдж. Форматы вывода включают plain text, машиночитаемый JSON с опубликованными JSON Schemas, Markdown, SARIF 2.1.0, inline-annotation workflow commands и самодостаточный HTML-отчёт с inline-графиками. Режим auto-fix применяет точечные edit'ы строк для исправляемых правил, отдельный diff-режим позволяет посмотреть изменения без записи. Конфигурационный файл в .gha-doctor.yml или .github/gha-doctor.yml задаёт политику: disabled rules, размер sample history, sampling логов и failure thresholds; явные CLI-флаги приоритетнее, а флаг no-config игнорирует конфиг. Exit code 2 сигнализирует об warning, позволяя gate CI, с настраиваемым severity gating и минимальным порогом health score. Проект также поставляется в виде composite GitHub Action, которая устанавливает release binary и поддерживает inputs для args, version, token, job summary, sticky pull-request comments, baseline diffing относительно base branch и failure thresholds; inline annotations включены по умолчанию. GitHub Enterprise Server поддерживается через переменную GH_HOST. Model Context Protocol stdio server mode предоставляет шесть read-only tools (analyze_repo, lint_repo, preview_fixes, run_deep_dive, org_overview, explain_rule), чтобы MCP-клиенты могли опрашивать состояние CI; сервер числится в официальном MCP Registry и может запускаться из container image. Варианты установки включают gh CLI extension, Homebrew, Scoop, distroless multi-arch Docker image, go install, aqua, mise/ubi, asdf, release binaries, deb/rpm/apk пакеты, shell completions и pre-commit hooks. Browser playground запускает линтер и автоисправления client-side через WebAssembly. В README указано, что проект создан и поддерживается AI-агентом, и инструмент читает только из репозиториев; для private-repo нужны права Actions read и Contents read.