Репозиторий редко проваливается по коду — он проваливается по документации: в README нет раздела установки, в CHANGELOG нет дат, вики из трёх страниц без навигации, баннер не отображается, описание состоит из одного слова. git push при этом проходит успешно, поэтому дефект живёт годами. Гигиена репозитория — это попытка превратить такие дефекты в проверяемый контракт: github-agent (команда ghagent, версия 1.2.2) даёт по одной команде на каждую повторяющуюся задачу и возвращает код 0, 1 или 2 вместо абзаца рассуждений. Ниже — разбор по установленной версии: я поставил пакет, прогнал проверки на подготовленной песочнице и получил свои числа, включая одно место, где инструмент ведёт себя не так, как ожидает рука.

TL;DR: что это и как проверить за десять минут
- Что это. Python-CLI без зависимостей для проверки и приведения в порядок репозитория и его вики.
- Что проверяет. Обязательные файлы, контракт README и CHANGELOG, markdown, ссылки и якоря, секреты и машинные пути, картинки, метаданные.
- Оценка.
auditсчитает процент гигиены по весам: у отсутствующей лицензии вес 8, у ссылки на соцпревью — 4. - Коды возврата.
0— ошибок нет,1— есть находки уровня error,2— ошибка вызова или окружения. - Главное ограничение. Колесо с PyPI несёт только CLI:
selftestиinstallв такой установке отказывают — для них нужен клон.
uv tool install github-agent-cli # или pipx, или pip
ghagent --version # github-agent 1.2.2
ghagent audit . # оценка гигиены, код 1 при ошибках
ghagent doc --root . # markdown, ссылки, якоря, оглавление
Проблема, которую это решает
Проверки качества кода стали нормой: линтер, тесты, CI. Проверки качества документации — почти нет, хотя именно документация определяет, воспользуются ли проектом. Причины понятны: «хороший README» плохо формализуется, а «нет раздела установки» не ломает сборку.
В результате накапливается типовой набор: README без установки и без лицензии, CHANGELOG с версиями без дат, CONTRIBUTING, которого нет, SECURITY, о котором вспоминают после первого отчёта об уязвимости, вики, где страницы не связаны ссылками, и социальное превью, которое GitHub показывает как пустую карточку.
github-agent формализует это как измеримый набор пунктов с весами и печатает находки в виде файл:строка плюс идентификатор правила. Практическая ценность не в проценте как таковом, а в том, что процент можно поставить в CI и не давать ему падать, а находки — разбирать машинно.
Что такое github-agent и из чего он состоит
| Компонент | Значение |
|---|---|
| Имя дистрибутива / команды | github-agent / ghagent |
| Версия в замерах | 1.2.2 (сборка на PyPI с 2026-10-30) |
| Требуется | Python 3.11 или новее; CI гоняет 3.11 и 3.13 |
| Зависимости при запуске | ноль (dependencies = []) |
| Необязательное | Pillow через extras png — только для PNG вместо SVG |
| Команд в CLI | 13 |
| Модулей библиотеки | 11 (tools/ghalib/*.py) |
| Самопроверок в наборе | 173 |
flowchart TB
CLI["ghagent: 13 команд, Python 3.11+, без зависимостей"] --> CHECK["проверки: audit, doc, privacy, assets, wiki, changelog, meta"]
CLI --> ACT["действия: changelog release, meta apply, assets render, wiki publish"]
CLI --> PACK["упаковка навыка: install, verify-install, uninstall, snippet"]
CLI --> SELF["selftest и report"]
CHECK --> OUT["file:line плюс идентификатор правила, ключ --json"]
ACT --> REPO["дерево репозитория и API GitHub"]
PACK --> SKILL["каталог навыка агента"]
OUT --> CODE{"код возврата"}
CODE -- 0 --> OK["ошибок уровня error нет"]
CODE -- 1 --> ERR["есть ошибки, каждая с адресом"]
CODE -- 2 --> USAGE["ошибка вызова или окружения"]Лицензия — MIT, одна строка, как и договаривались.
Тринадцать команд делятся на три группы: проверки (audit, doc, privacy, assets, wiki, changelog, meta), действия (changelog release, meta apply, assets render, wiki publish) и упаковка навыка (install, verify-install, uninstall, snippet). Отдельно стоят report — сводный markdown по всем проверкам — и selftest.
Возможности: что проверяется и что правится
Проверки: обязательные файлы и контракт README
| Пункт | Вес | Что требуется |
|---|---|---|
readme |
10 | README.md существует |
readme.h1 |
8 | один H1 |
readme.summary |
6 | лид-абзац |
readme.badges |
5 | значки: CI, релиз, лицензия, среда |
readme.install |
6 | раздел установки |
readme.usage |
6 | раздел использования |
readme.license |
5 | упоминание лицензии |
readme.toc |
4 | оглавление (предупреждение, не ошибка) |
license |
8 | LICENSE |
changelog |
6 | CHANGELOG.md |
contributing |
6 | CONTRIBUTING.md |
security |
6 | SECURITY.md |
code-of-conduct |
4 | CODE_OF_CONDUCT.md |
support |
2 | SUPPORT.md |
agents |
5 | AGENTS.md |
ci |
6 | workflow CI |
issue-forms |
4 | формы задач |
pr-template |
3 | шаблон пул-реквеста |
codeowners, dependabot, citation, editorconfig, gitattributes, gitignore |
от 2 до 3 | соответствующие файлы |
wiki-source |
3 | каталог исходников вики |
assets.banner, assets.social-preview |
4 и 4 | картинка в README и превью |
Веса — не украшение: из них складывается процент, и по таблице видно, что дешевле всего закрыть (support, citation, codeowners), а что даёт больше всего очков (README с H1 и установкой, лицензия, CI).
Проверки документов, ссылок и приватности
| Группа | Правила |
|---|---|
| Текст | UTF-8 без BOM, LF вместо CRLF, завершающий перевод строки, без табов |
| Структура | один H1, без пропущенных уровней, закрытые блоки кода, язык у каждого блока |
| Таблицы | число ячеек в каждой строке совпадает с заголовком и разделителем |
| Ссылки | относительный файл существует, якорь существует, включая кириллический |
| Оглавление | каждый пункт разрешается, ни один H2 не забыт |
| Разметка | пять типов alert-блоков, alt-текст у картинок, нет картинок по http:// |
| Приватность | токены, приватные ключи, абсолютные пути машины, личные адреса |
| Картинки | баннер подключён, превью PNG/JPG/GIF, до 1 МБ, не меньше 640×320 |
| Вики | манифест и файлы согласованы, Home/_Sidebar/_Footer, ссылки без .md |
| CHANGELOG | SemVer и ISO-дата у версии, новые сверху, ссылки сравнения |
| AGENTS.md | остаётся картой: больше 120 строк — предупреждение |
| Метаданные | описание до 200 символов, 8–20 тем в нижнем регистре через дефис |
Действия и упаковка
| Задача | Команда |
|---|---|
| Собрать, проверить и опубликовать вики | ghagent wiki build, verify, publish --push |
| Выпустить версию | ghagent changelog release 1.2.0 --write |
| Привести описание и темы | ghagent meta apply --repo owner/name --write |
| Нарисовать баннер и превью | ghagent assets render --write |
| Поставить навык другому агенту | ghagent install --profile harness --write |
Как это устроено внутри
Каждая проверка — это проход по текстовым файлам дерева с набором правил. Правило, которое не осмотрело ни одного объекта, попадает в coverage.skipped и не считается пройденным: пустое дерево даёт отдельную находку doc.no-text-files. Это важное проектное решение, и оно прямо названо в правилах: ложный PASS хуже ложного FAIL.
Второе проектное решение — отказ от сети. Линтер не ходит по внешним адресам: проверяются относительные пути, якоря и структура. Сетевая проверка ссылок — отдельная задача со своими проблемами (таймауты, антибот-защита, ложные отказы), и встраивать её в линтер значило бы сделать прогон недетерминированным. Из этого же следует, что зелёный doc не означает «все ссылки живые»: он означает «все локальные ссылки разрешаются».
flowchart LR
ARGS["аргументы: --root, пути, --json"] --> LOAD["чтение дерева: только текстовые файлы"]
LOAD --> RULES["набор правил: текст, структура, ссылки, приватность, метаданные"]
RULES --> SKIP{"правило осмотрело хоть один объект?"}
SKIP -- нет --> COV["coverage.skipped: не считается пройденным"]
SKIP -- да --> FIND["находка: уровень, идентификатор, файл:строка"]
COV --> REPORT["отчёт: текст или JSON"]
FIND --> REPORT
REPORT --> SCORE["оценка гигиены в процентах по весам"]Коды возврата одинаковы для всех проверок, и это делает инструмент пригодным для CI без разбора текста:
| Код | Значение | Что делать |
|---|---|---|
0 |
находок уровня error нет | можно закрывать задачу |
1 |
есть находки error | каждая печатается как файл:строка с идентификатором правила |
2 |
ошибка вызова или окружения | проверить путь, наличие файла, доступность gh или токена |
flowchart TD ROOT["--root: каталог проверки"] --> BEH["поведение команды"] JSON["--json: машиночитаемый вывод"] --> BEH IGNORE["--ignore: список идентификаторов правил"] --> BEH WIKI["--include-wiki: осматривать исходники вики"] --> BEH NOPRIV["--no-privacy, --no-toc"] --> BEH PILLOW["Pillow: только PNG, ставится extras png"] --> PNG["assets render пишет SVG или PNG"] WHEEL["установка из колеса"] --> LIM["нет tests/ и шаблонов: selftest и install отказывают"]
Отдельного разговора заслуживают три команды, которые не проверяют ничего, но связывают набор с практикой. report собирает все проверки в один markdown-файл — его удобно положить в задачу или приложить к ревью, потому что человеку нужен один документ, а не шесть экранов вывода. snippet печатает готовый блок для AGENTS.md, который указывает другому агенту на этот набор: то есть передача знаний делается копированием одного блока, а не пересказом. install копирует сам набор — шаблоны, SKILL.md, тесты — в каталог навыков агента, с профилями под разные среды; работает только из клона, потому что в колесе этих файлов нет.
Из этого видна общая идея: инструмент рассчитан на то, что работу делает агент, а человек читает итог. Поэтому вывод любой проверки начинается с файл:строка и идентификатора правила, любая проверка умеет --json, а действия по умолчанию ничего не меняют — сначала отчёт, потом решение.
Замеры и цифры
Числа ниже — мои, получены на этой машине при установленном пакете 1.2.2: pip install --user github-agent-cli, затем запуск команд на подготовленной песочнице (каталог во временной папке, один README на три строки).
| Что измерено | Значение | Как измерено |
|---|---|---|
| Версия установленного пакета | github-agent 1.2.2 |
ghagent --version |
| Команд в CLI | 13 | ghagent --help, список подкоманд |
| Оценка гигиены минимальной песочницы | 22,4 % | ghagent audit <sandbox> |
| Пунктов в оценке | 27 (0 пропущено) | там же |
| Находок на песочнице | 12 error, 13 warn, 10 info | ghagent audit <sandbox> --json, поле counts |
Код возврата audit на песочнице |
1 | запуск без --json |
| Правил документов, осмотревших ноль объектов | 10 | ghagent doc --root <sandbox> |
Находка doc на песочнице |
1 error doc.crlf |
там же |
Код возврата doc |
1 | там же |
Код возврата privacy на чистом дереве |
0 | ghagent privacy --root <sandbox> |
selftest из колеса |
отказ, код 2 | ghagent selftest |
Оговорка о границах: замеры сделаны на одной машине (Windows, Python 3.13) и на намеренно бедном дереве. Процент гигиены — не свойство инструмента, а свойство проверяемого репозитория; здесь он показывает, как выглядит «пустой» проект в его глазах: 22,4 % при наличии одного README.
Почему это круто
- Один контракт вместо вкусовщины. «Хороший README» превращается в список пунктов с весами, и спор идёт про пункт, а не про вкус.
- Находки машинночитаемы.
файл:строкаплюс идентификатор правила и ключ--json— можно разбирать и ставить в CI без регулярных выражений по тексту. - Ложный PASS наказан. Правило, осмотревшее ноль объектов, отмечается, а пустое дерево даёт отдельную ошибку.
- Ноль зависимостей. Ставится в любое окружение, работает без сети и без
ghдля большинства проверок. - Вики — часть репозитория.
wiki build,verifyиpublishработают с исходниками вики в дереве, а не с веб-интерфейсом. - Публикация по явному флагу.
wiki publishбез--push— сухой прогон,--pruneотдельно: удаление страниц остаётся решением человека. - Три кода возврата. Ровно столько, сколько нужно CI, и ни одной двусмысленности.
- Готовые шаблоны файлов. В клоне лежит
reference/с шаблонами CONTRIBUTING, SECURITY, SCHEDULED и прочих — не надо сочинять заново.
Установка
Путей четыре, и они не взаимозаменяемы: пакетные менеджеры ставят только CLI, клон нужен для команд, работающих с шаблонами и тестами.
| Путь | Что даёт | Когда выбирать |
|---|---|---|
uv tool install github-agent-cli |
изолированное окружение инструмента | повседневное использование |
pipx install github-agent-cli |
изолированное виртуальное окружение | если нет uv |
pip install github-agent-cli |
ставит в текущее окружение | скрипты и контейнеры |
pip install "github-agent-cli[png]" |
плюс Pillow для PNG | когда нужно социальное превью в PNG |
клон + pip install -e . |
tests/, skills/, reference/, шаблоны вики |
install, verify-install, snippet, selftest |
pip install --user github-agent-cli
ghagent --version
# github-agent 1.2.2
Проверка установки — не «команда запустилась», а «команда отвечает на своём дереве»:
ghagent audit .
ghagent doc --root .
Если оба вернули 0, установка рабочая. Код 2 означает, что проблема в вызове, а не в репозитории.
Настройка
Файла конфигурации нет: всё задаётся аргументами. Это осознанно — инструмент должен работать в чужом репозитории, ничего там не создавая.
| Флаг | Что делает | Где полезен |
|---|---|---|
--root |
каталог проверки для doc, privacy, wiki |
в CI, где рабочий каталог выше репозитория |
--json |
машиночитаемый вывод | разбор в скрипте |
--ignore |
список идентификаторов правил через запятую | отключить конкретное правило, а не всю группу |
--include-wiki |
осматривать и исходники вики | когда вики ведётся в репозитории |
--no-privacy, --no-toc |
отключить группу | когда приватность проверяется отдельным шагом |
--write |
применить изменения в командах действий | по умолчанию действия не пишут |
--push, --prune |
публикация вики и удаление страниц | только осознанно, вручную |
Порог в CI собирается из JSON без разбора текста: ghagent audit . --json отдаёт ключи counts (по уровням error, warn, info), data.score и data.rules_examined. Этого достаточно, чтобы валить сборку при появлении новой ошибки или при падении процента ниже зафиксированного.
# пример шага CI: код возврата уже говорит о находках уровня error
ghagent doc --root .
ghagent audit .
Проверка после установки
| Проверка | Ожидание |
|---|---|
ghagent --version |
github-agent 1.2.2 |
ghagent --help |
13 подкоманд |
ghagent audit . |
код 0 либо список находок с файл:строка |
ghagent doc --root . |
код 0 или находки, coverage.skipped виден |
ghagent privacy --root . |
код 0 на дереве без секретов |
ghagent selftest |
из колеса — отказ с объяснением, из клона — прогон тестов |
Вики как часть репозитория
Вики в этом наборе ведётся не через веб-интерфейс, а из самого репозитория: страницы лежат в каталоге wiki/, порядок задаёт wiki/wiki.json, а wiki build переписывает ссылки под плоское пространство имён — внутренние теряют .md, ссылки в дерево репозитория становятся абсолютными. Относительная картинка считается ошибкой, и это логично: вики-репозиторий не видит дерево проекта, поэтому такой путь не разрешится никогда.
| Команда | Что делает | Что можно сломать |
|---|---|---|
wiki build |
собирает страницы и переписывает ссылки | ничего: пишет в рабочую копию |
wiki verify |
проверяет, что каждая внутренняя ссылка разрешается | ничего |
wiki publish |
публикует; без --push — сухой прогон |
при --push публикует, при --prune удаляет страницы |
wiki init |
создаёт каркас страниц | создаёт файлы в дереве |
Первая публикация упирается в особенность GitHub, о которой легко не знать: репозиторий <owner>/<repo>.wiki.git не существует, пока в веб-интерфейсе не сохранена хотя бы одна страница, и git push его не создаёт. В этом случае wiki publish возвращает отдельную ошибку wiki.remote-missing с указанием на этот шаг — то есть инструмент не делает вид, что проблема в сети.
Границы: что инструмент не проверяет
| Ограничение | Что это значит на практике |
|---|---|
| Внешние ссылки не запрашиваются | проверяются относительные пути, якоря и структура; сетевой обход — отдельное решение, а не побочный эффект линтера |
audit --repo и meta требуют gh или GITHUB_TOKEN |
без них — ошибка, а не пустой успех |
changelog suggest — только черновик |
он не знает, что важно пользователю; пишет человек |
| PNG требует Pillow | без него выпускается SVG, а проверка говорит, почему PNG нет |
| Вики плохо индексируется поисковиками | по документации GitHub в поиск попадают только вики с 500+ звёзд и запретом публичного редактирования |
Последний пункт стоит проговорить: если документация должна находиться поиском, вики — не тот носитель. Для выдачи нужен GitHub Pages, и это решение уровня проекта, а не настройка линтера.
Подводные камни
docс каталогом в позиционном аргументе падает. Проверено:ghagent doc <путь-к-каталогу>даёт[ERROR] doc.unreadable … Permission deniedи код 1, потому что позиционные аргументы — это файлы. Каталог передаётся через--root. Список правил при этом печатается, поэтому легко принять ошибку за «файл не тот».selftestиз колеса не работает и не должен. Колесо несёт только CLI; команда завершается кодом 2 и предлагает клонировать репозиторий. Это не поломка, а честный отказ.privacyможет вернуть 0 при полностью пустом результате. Правила, осмотревшие ноль объектов, попадают вcoverage.skippedи печатаются какnote: отсутствие находок ещё не означает, что проверка что-то смотрела.- Оценка зависит от весов, а не от тяжести. Отсутствие лицензии стоит 8 пунктов, отсутствие CI — 6: проект без лицензии и без CI получит почти тот же минус, хотя юридические последствия разные.
- Действия без
--writeничего не меняют. Это защита, но её легко принять за «команда не работает»:meta applyбез флага — это отчёт о плане. - Вики живёт в плоском пространстве. В ссылках нет
.md, картинки — по абсолютным адресам; перенос обычных markdown-ссылок не работает, для этого и нуженwiki build. --pruneудаляет страницы на сервере. Это единственная разрушительная операция в наборе, и она вынесена в отдельный флаг не случайно.- PNG не появится без Pillow.
assets renderвсегда пишет SVG; без extraspngкоманда скажет, почему PNG нет, вместо того чтобы выдать SVG за готовое превью.
Чек-лист внедрения
- Поставить пакет и зафиксировать версию:
pip install --user github-agent-cli, затемghagent --version.2. Запуститьghagent audit .и сохранить исходный процент — это база для сравнения. - Разобрать находки
errorсверху вниз по весам: сначала README, лицензия, CI. - Прогнать
ghagent doc --root .и посмотреть не только находки, но иcoverage.skipped. - Проверить
ghagent privacy --root .— отдельно от документации, у неё своя область. - Поставить порог в CI:
ghagent audit . --jsonплюс скрипт, который валит сборку при падении процента ниже зафиксированного. - Для вики:
wiki build→wiki verify→ прочитать сухой прогонpublish→ только потом--push.
Критерий «работает»: audit, doc и privacy возвращают 0 на вашем дереве, процент гигиены не падает между прогонами, а в CI красный статус появляется раньше, чем дефект документации дойдёт до читателя.
FAQ
Это линтер markdown или что-то большее?
Больше: markdown-проверки — одна из групп правил. Кроме них есть контракт файлов репозитория с весами и оценкой, поиск секретов и машинных путей, проверка картинок, контракт CHANGELOG и работа с вики.
Почему ghagent doc <каталог> падает с Permission denied?
Потому что позиционные аргументы doc — это файлы, а не каталоги: инструмент пытается прочитать каталог как файл. Каталог передаётся через --root.
Что означает пустой список находок при коде 0?
Что ошибок уровня error нет. Но правила, осмотревшие ноль объектов, печатаются как coverage.skipped и не считаются пройденными — на пустом дереве это видно сразу.
Можно ли поставить инструмент в CI и валить сборку по проценту?
Да: ghagent audit . --json отдаёт counts и data.score, а код возврата 1 уже означает наличие ошибок. Порог по проценту добавляется своим шагом — в самом инструменте его нет.
Нужен ли токен GitHub?
Для проверок — нет, они работают с локальным деревом. Токен и gh нужны командам, которые обращаются к API: например, применение метаданных или публикация вики.
Чем install отличается от установки пакета?
install копирует навык (шаблоны, SKILL.md, тесты) в каталог навыков агента — это про оснащение другого агента, а не про CLI. Работает только из клона и не имеет отношения к pip install.
Что будет, если запустить wiki publish --prune?
Будут удалены страницы на сервере, которых нет в локальных исходниках. Это единственная разрушительная операция набора, и по правилам проекта она остаётся решением человека, а не привычкой.
Что показывает процент гигиены на практике?
На минимальном дереве с одним README инструмент дал 22,4 % — почти всё потеряно на отсутствующих файлах. Для сравнения, в собственном репозитории проекта audit оценивает результат в 100,0 %: там закрыты и метаданные, и сообщество, и картинки. Разница между двумя числами и есть та работа, которую приходится делать, когда репозиторий впервые сталкивается с проверкой.
Итог
github-agent решает узкую, но недооценённую задачу: делает документацию репозитория проверяемой. Тринадцать команд, ноль зависимостей, три кода возврата и находки с адресом — этого достаточно, чтобы поставить гигиену в CI и перестать обнаруживать дефекты документации через год после публикации. Главное, что стоит помнить при внедрении: процент — это сумма весов, а не оценка качества, doc принимает каталог только через --root, а coverage.skipped нужно читать так же внимательно, как сами находки.
Цитата: Репозиторий не падает из-за плохого README — он просто остаётся незамеченным, и именно поэтому проверку документации нужно ставить в CI рядом с тестами.
Связанные материалы
- github-agent — репозиторий — код, правила, шаблоны и документация.
- Релиз v1.2.2 — событийная публикация на PyPI и состав артефактов.
- github-agent-cli на PyPI — установка пакетными менеджерами.
- Плоская сеть и блокировка SMB — пример статьи, где проверки идут по шагам с критерием результата.
- Пакет включения Windows 11: переход на 25H2 и 26H2 — разбор скриптов, где гейты стоят до изменения системы.
LLM Summary
- Тема:
github-agent1.2.2 — Python-CLIghagentдля проверки и приведения в порядок репозитория GitHub и его вики; лицензия MIT, ноль зависимостей при запуске. - Что проверяет: обязательные файлы с весами, контракт README и CHANGELOG, markdown-структуру, ссылки и якоря, оглавление, секреты и машинные пути, картинки, метаданные.
- Команды: 13 подкоманд —
audit,doc,privacy,assets,wiki,changelog,meta,install,verify-install,uninstall,snippet,report,selftest. - Коды возврата:
0— ошибок нет,1— есть находки уровня error сфайл:строка,2— ошибка вызова или окружения. - Мои замеры: установлен 1.2.2; на минимальной песочнице
auditдал 22,4 % при 27 пунктах, 12 error / 13 warn / 10 info, код 1;doc --rootдал 1 ошибкуdoc.crlfи 10 правил вcoverage.skipped;privacyвернул 0;selftestиз колеса отказал с кодом 2. - Грабли:
docс каталогом в позиционном аргументе падает (doc.unreadable), каталог передаётся--root; действия без--writeничего не меняют;--pruneудаляет страницы на сервере; без Pillow PNG не создаётся. - Установка:
uv tool install,pipx,pip,brew,scoop; extraspngдобавляет Pillow; клон нужен дляinstall,verify-install,snippetиselftest. - Ограничение: колесо несёт только CLI, поэтому набор шаблонов и тестов доступен лишь из клона; порог по проценту в CI настраивается своим шагом, встроенного нет.
- Ссылки: https://github.com/paulmann/github-agent, https://pypi.org/project/github-agent-cli/
Промт для агента (установка и настройка)
Готовый промт для AI-агента: скопируйте блок целиком кнопкой и отдайте своему ассистенту. Шаги и формулировки взяты из AGENTS.md репозитория — это инструкция автора для агентов, а не пересказ; проверки дополнены моими замерами из раздела «Замеры и цифры».
Задача: привести репозиторий GitHub и его вики к проверяемому состоянию гигиены с помощью github-agent, не меняя ничего без явного флага.
Материалы:
- репозиторий: https://github.com/paulmann/github-agent
- релиз: https://github.com/paulmann/github-agent/releases/tag/v1.2.2
- контракт исполнителя (прочитать первым): https://github.com/paulmann/github-agent/blob/main/AGENTS.md
- правила целиком: docs/RULES.md, вики: docs/WIKI.md
Установка (одна из):
uv tool install github-agent-cli
pipx install github-agent-cli
pip install github-agent-cli
pip install "github-agent-cli[png]" # только если нужен PNG
ghagent --version # ожидается github-agent 1.2.2
Клон нужен для install, verify-install, snippet и selftest:
git clone https://github.com/paulmann/github-agent.git
python tools/ghagent.py install --profile autoclaw --write
Проверка (все шесть должны вернуть 0):
ghagent selftest # только из клона, из колеса отказ с кодом 2
ghagent doc --root .
ghagent audit .
ghagent changelog check
ghagent assets check
ghagent privacy --root .
Одна команда на задачу:
ghagent audit . # гигиена и оценка, код 1 при ошибках
ghagent doc --root . # markdown, ссылки, якоря, таблицы, оглавление
ghagent privacy --root . # токены, машинные пути, личные адреса
ghagent assets render --write # баннер и социальное превью
ghagent wiki build && ghagent wiki verify
ghagent changelog release X.Y.Z --write
ghagent meta apply --repo owner/name --write
Непреложные правила из AGENTS.md:
- только измеренные числа, у каждой цифры назван источник;
- ни секретов, ни машинных путей, ни личных адресов в дереве, включая примеры;
- один H1 на документ и язык у каждого блока кода;
- вики — плоское пространство: без .md в ссылках, картинки по абсолютным адресам, есть sidebar и footer;
- публикация только по явному флагу: wiki publish без --push — сухой прогон, --prune удаляет страницы и это решение человека;
- CHANGELOG по Keep a Changelog 2.0.0: ISO-даты, новые сверху, ссылки сравнения;
- AGENTS.md остаётся картой до 120 строк, детали живут в docs/;
- ложный PASS хуже ложного FAIL: правило, осмотревшее ноль объектов, идёт в coverage.skipped, а пустое дерево даёт doc.no-text-files.
Запрещено:
- публиковать вики без wiki verify и без чтения сухого прогона;
- переписывать CHANGELOG из журнала коммитов: changelog suggest черновик, пишет человек;
- добавлять зависимость времени выполнения;
- править только .ru.md, оставляя английский оригинал позади;
- подписывать коммит именем агента;
- передавать каталог в ghagent doc позиционным аргументом: падает с doc.unreadable, каталог идёт через --root.
Что считать успехом: audit, doc и privacy возвращают 0, в CI процент гигиены не падает между прогонами, находки разбираются по file:line и идентификатору правила, а wiki publish выполнен только после verify.