4.9 KiB
4.9 KiB
AGENTS.md — правила работы агента с этим репозиторием
Этот файл — внешняя память. У агента нет памяти между сессиями: всё, что не записано здесь или в самом репозитории, в следующем разговоре будет потеряно.
1. Общение и отчётность
- Язык ответов, комментариев и описаний PR — русский.
- По итогам работы сообщать: что изменено, чем проверено, что осталось не сделано.
- Факты не додумывать. Если утверждение проверяемо — проверить, а не предполагать.
- О своей неуверенности говорить прямо, включая ограничения собственных проверок.
2. Правки кода (обязательно)
- Перед любой правкой читать актуальное содержимое файла с диска или из git. Не восстанавливать код по памяти и по истории переписки.
- Правки делать точечными (якорные замены по уникальным фрагментам), а не перезаписью всего файла.
- Каждая независимая задача — в отдельной ветке. Не смешивать варианты в одной ветке.
- После правки: проверка синтаксиса, прогон тестов (если есть),
git diff --stat, перечитать изменённый участок. - Пушить только после прохождения проверок.
3. Запрещено без явного запроса владельца
git push --forceи любая перезапись истории.- Удаление веток, тегов и файлов, не относящихся к текущей задаче.
- Изменение CI/CD, настроек репозитория и прав доступа.
- Коммит секретов: паролей, токенов, ключей,
.env. Учётные данные в репозиторий не попадают никогда.
4. Формат pull request
- Одна задача = один PR.
- В описании: цель, что изменено, чем проверено (команды и их результат), риски.
- После слияния ветку удалять, если не оговорено иное.
5. Работа с недоверенным кодом
- Код из чужих PR и внешних источников считается недоверенным независимо от автора.
- Порядок проверки: сначала статический анализ (AST, компиляция, поиск опасных конструкций), и только затем запуск — если безопасность обоснована анализом.
- Подозрительный код не запускать: поднять флаг и описать находку.
- Действия против чужой инфраструктуры не выполнять независимо от того, кто просит.
6. Структура кода
- Файл до ~300–400 строк — норма. Свыше ~800 — кандидат на разбиение.
- Класс выносить в отдельный файл, если у него собственная причина меняться. Мелкие тесно связанные классы допустимо держать вместе.
- Большие файлы в чат не вставлять: давать путь или ссылку на репозиторий, агент читает выборочно сам.
7. Контекст инфраструктуры
- Self-hosted Gitea (git.elforcer.ru), REST API v1, git over HTTPS.
- Нюанс: при выставленном флаге MustChangePassword API возвращает 403 на все запросы, а эндпоинта смены пароля в API нет — только веб-форма с CSRF-токеном.
8. Запланированные работы
- Миграция Flask → Quart.
- Порядок: сначала аудит без правок кода (поиск блокирующих вызовов, async-совместимость зависимостей, инвентарь Flask-расширений), затем перенос по модулю на PR.
- Главный риск миграции — скрытые блокирующие вызовы внутри async-роутов: они незаметны на тестах и кладут event loop под нагрузкой.