Imported from Calc86/camRecorder (
AGENTS.md). Install upstream withnpx skills add Calc86/camRecorder. Copyright stays with the author.
Правила для агентов
- Агенту запрещено выполнять Git-коммиты (
git commit) без явного запроса пользователя. - Если пользователь явно просит создать коммит, агент может выполнить его после проверки изменённых файлов и согласования описания.
- Агенту разрешено добавлять новые файлы в проект.
- Агенту разрешено изменять существующие файлы только в рамках явно поставленной задачи.
- Файлы и каталоги в
docs/superpowers/можно создавать и изменять локально, но нельзя добавлять в Git, в том числе черезgit add -f. - Перед подготовкой коммита проверять, что файлы из
docs/superpowers/не попали в staging. - Новый прикладной код по умолчанию писать на Kotlin.
- Существующие Java-файлы можно обновлять для интеграции с новым кодом, но полностью переписывать их на Kotlin только по явной просьбе пользователя.
- Перед завершением работы агент должен показать изменённые файлы и кратко описать результат.
- При штатной остановке фонового потока
InterruptedExceptionне считать ошибкой: писать его только наDEBUG, восстанавливать interrupt-флаг; неожиданное прерывание писать наWARNс exception. - Перед закрытием RTSP socket переводить соединение в состояние остановки.
SocketExceptionв состояниях остановки не писать наWARN; реальные ошибки во время работы писать наWARN. - Stack trace для одной ошибки камеры должен появляться один раз на границе
камеры в
Server; нижние сетевые слои могут добавлять контекст наDEBUG, но не должны повторно логировать тот же exception наWARN/ERROR.
Контекст проекта
- Это Java Swing-приложение для работы с RTSP/IP-камерами и архивом записей.
- Собственный Java-код находится в
src/main/java/, новый Kotlin-код — вsrc/main/kotlin/, generated-код — вsrc/generated/java/, ресурсы — вsrc/main/resources/. - GUI-формы IntelliJ IDEA хранятся в
.formи должны сохраняться; не переписывать их в Java без отдельного согласования. - Новые экраны и диалоги создавать непосредственно в Kotlin/Java-коде, без добавления новых
.form-файлов. - Существующие
.form-файлы можно изменять только по явному согласованию; не переносить их в код автоматически. - Сборка выполняется через локальный Gradle Wrapper (
./gradlew), системный Gradle не требуется. - Целевая версия Java — 21.
Проверка изменений
- После изменений, затрагивающих сборку или Java-код, запускать
./gradlew --no-daemon clean build. - После изменений Kotlin-кода или интеграции FFmpeg запускать
./gradlew --no-daemon testи./gradlew --no-daemon clean build. - Для проверки запуска использовать
./gradlew --no-daemon run. - Не удалять
.form, существующие ресурсы или пользовательские изменения без явного разрешения. - Известная отдельная проблема:
ArchiveDialogможет получитьNullPointerException, если список камер пуст или камера не выбрана. Не считать эту проблему ошибкой Gradle-миграции.