Перейти к содержимому

Навыки

chimera-run-the-projects-own-gate-command

Запускайте команду проверки проекта буквально — тот же охват, те же флаги. Почти идентичный вариант, придуманный вами на ходу, врёт в обе стороны.

ПаттернПроисхождение: cleanСостояние: activev0.1.0 · Apache-2.0

Присвоено человеком, который прочитал карточку, а не заявлено файлом о самом себе. Карточка, которую агент выводит во время запуска, поглотившего недоверенное содержимое, рождается заражённой и удерживается на разбор, прежде чем её вообще извлекут.

Когда это вспоминается

  • сейчас запущу линтер или проверку типов
  • проверяю перед коммитом или PR
  • CI упал, а локально прошло
  • дописываю область или флаг строгости
  • отчитываюсь, что гейт зелёный

Ценность обычно лежит в разделах «Избегать» и «Проверить». «Делать» — это раздел, который пишут все.

Текст карточки выше — перевод. Английский оригинал — это то, что импортирует командная строка, что читает агент во время работы и что подтверждает хеш ниже.

Повод

Вы собираетесь запустить контроль качества проекта — линтер, тайпчекер, тесты — и предъявить результат как свидетельство того, что изменение безопасно. Соблазн — сузить («я трогал только chimera/») или ужесточить («--strict наверняка лучше»).

Это не относится к разведке. Запускать pytest tests/test_governed_surfaces.py -x, пока вы итерируете над одним файлом, правильно; правило о том, что после этого можно назвать контролем. Суженный прогон — вспомогательное средство отладки, но никогда не верификация.

Делать

  1. Найдите, где команда записана, и назначьте канонической ОДНУ запись. В Chimera это цель check в Makefilemake check, — потому что цель исполняема, а строка в прозе является её копией. Три проверки, которые она запускает: ruff check ., mypy chimera и pytest -q.
  2. Запускайте каноническую форму байт в байт. Ни добавленного пути, ни добавленного флага, ни подменённого раннера. Учтите, что копия в прозе может отличаться так, что это выглядит косметикой и ею не является: Makefile:21 оборачивает это как uv run --no-sync, CONTRIBUTING.md:105 — как uv run --extra dev --extra desktop. Тот же инструмент, разные окружения — ровно поэтому одна из записей обязана быть источником.
  3. Если два источника расходятся, считайте авторитетным workflow CI, запускайте его и правьте устаревший документ тем же PR: CONTRIBUTING.md какое-то время нёс ошибочную строку mypy --strict, а устаревшая инструкция расходится по всем, кто её прочтёт.
  4. Если каноническая команда не может выполниться в вашем окружении, говорите, что контроль не запускался. На Windows локальный .venv сломан (litellm требует Rust/MSVC), поэтому контроль запускается в WSL: переносить оболочку можно, править команду нельзя.
  5. Приводите команду и её вывод дословно, а не пересказ того, как всё прошло.

Избегать

Два близких промаха, оба настоящие, оба в одной сессии, и заметьте, что врут они в противоположные стороны:

mypy --strict chimera      # WRONG — lies toward failure
mypy chimera               # right

Явный флаг перебивает собственную настройку проекта warn_unused_ignores = false в pyproject.toml и выдаёт около пятнадцати ошибок unused-ignore в файлах, которых никто не трогал. Это едва не превратилось в баг-репорт, поданный на чистый код.

ruff check chimera tests   # WRONG — lies toward success
ruff check .               # right

Суженный охват не сообщает о B023 (замыкание, захватившее переменную цикла), о котором сообщает ruff check ., потому что охват меняет, какие файлы — а значит, какие подиректорные настройки правил — участвуют. CI упал на PR, чей локальный «контроль» был зелёным.

Общий механизм: флаг решает, какая конфигурация побеждает, а охват решает, какие правила срабатывают. Ни то, ни другое не является косметической разницей, и оба варианта достаточно похожи на настоящую команду, чтобы их вывод читался как авторитетный.

Проверить

Укажите файл и строку, где записана ваша команда. Makefile:21, CONTRIBUTING.md:105. Если не можете — вы её сымпровизировали.

Двоичный вопрос: можно ли вставить набранную вами строку в рецепт check без единой правки? Если у вашей команды есть аргумент или флаг, которых в рецепте нет, ответ «нет», и запускали вы другую проверку, случайно носящую то же имя.

Риск

Каноническая команда обычно самая медленная, и правило, запрещающее быстрый вариант, подталкивает не запускать вообще ничего. Это исход хуже, чем суженный прогон, честно помеченный как суженный.

Измерьте цену, прежде чем решать, что правило дешёвое, и перемеряйте по мере роста набора тестов. Первая редакция этой карточки утверждала, что полный набор Chimera идёт «около пятнадцати секунд», — число, верное однажды и уехавшее примерно к 100 секундам по четырём измеренным прогонам к моменту написания карточки. Карточка о том, что команды не выдумывают, — плохое место для публикации цифры, не переживающей запуска этой команды.

И сам рецепт может быть неверен. Следовать ему буквально — значит унаследовать его слепые пятна: make check не скажет вам, что тест читает лежащий в gitignore bench/local_lift/results/paired.json, которого в свежем клоне нет. Лечение плохого контроля — менять рецепт в PR, а не тихо запускать у себя улучшенный: приватное улучшение защищает ровно одного человека и оставляет CI, и всех остальных, на старой команде.

Как применить

Карточка — это данные. Склонируйте репозиторий и импортируйте её по пути: всё, что приходит по сети, считается заражённым и удерживается до одобрения — это и есть желаемое поведение, и поэтому здесь нет установщика в одну строку.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/chimera-run-the-projects-own-gate-command/SKILL.md

Целостность

SHA-256 файла в опубликованном виде. Импортёр может проверить, что полученное совпадает с показанным на этой странице.

12e60e2bbe0fa29b4a242ec429a1897741266f43812148c3a55356f77de227b9

Читать карточку в репозитории