--- description: Workspace-wide workflow and conventions (dnd_project) alwaysApply: true --- # DNDGamePlayer / `dnd_project` — правила работы над задачами **Перед первой задачей в сессии по коду, архитектуре или продукту** открой и учти **`AGENTS.md`** в корне репозитория **`cursorAi`** — там обзор экосистемы и карта репозиториев. Детали путей и сборки: **`WORKSPACE.md`**. Эти правила применяются **только** когда запрос пользователя требует **изменений в репозитории** (код/конфиги/тесты). Для чисто текстовых задач (описания, маркетинг, переписка) пайплайн не запускаем. **Корень воркспейса Cursor** — обычно каталог `cursorAi` с единым `.cursor/`. Исходники плеера — в соседнем репозитории **`dnd_player/`** (см. `WORKSPACE.md`). ## Стандарты кода, комментариев и документации Помимо этого файла действуют правила в той же папке: - **`frontend-agent-core.mdc`**, **`frontend-development-standards.mdc`** — стиль кода, UI, формы, модалки, TS, комментарии; **i18n — только в `dnd_player`** (планируются языки **ru** и **en** — см. `frontend-development-standards.mdc`). - **`agent-core-contracts-and-quality.mdc`**, **`agent-test-gates-mandatory.mdc`** — контракты, тестовые гейты, верификация. ## Пайплайн (кодовые репозитории) Порядок этапов: **`agents-pipeline-order.mdc`**. Отчёт по этапу: **`pipeline-execution-template.mdc`**. Чек-листы: **`agent-1-frontend-developer.mdc`** … **`agent-3-ui-tester.mdc`**. Под-агенты: **`.cursor/skills/feature-pipeline/SKILL.md`**. **Не входит в обязательный пайплайн:** репозиторий **`cursorAi`** (только `.md` / `.mdc` правил и описаний). Для таких правок полный цикл из четырёх этапов **не требуется**; хук **`stop`**: **`verify_repo`: `none`**. Последовательность для **`dnd_player`**, **`project-converter`**, **`DndGamePlayerLicenseServer`**: 1. Реализация (minimal diff, паттерны **целевого** репозитория). 2. Автотесты на изменённое поведение (стек репозитория). 3. Ревью кода. 4. Верификация: UI (Electron/браузер) или HTTP-сценарии для сервера. ### `.cursor/pipeline-state.json` Обязательные ключи: `frontend_development`, `ui_autotests`, `code_review`, `ui_browser_verification` — все **`"done"`** перед успешным хуком (кроме режима **`verify_repo`: `none`**). Поле **`verify_repo`** (цель хука **`stop`** и автоматической verify): | Значение | Когда ставить | Что делает хук `final-verify.cjs` | |----------|----------------|-----------------------------------| | **`dnd_player`** | Задача по плееру (по умолчанию) | `npm run lint`, `typecheck`, `test` в **`dnd_player/`** | | **`project-converter`** | Задача по конвертеру | `npm run lint`, `node --check` по `src/`, обязательный **`npm run test`** (скрипт и тесты — по политике A в том же PR, что и правки поведения) | | **`DndGamePlayerLicenseServer`** | Задача по серверу лицензий | `node --check` по `src/`, `lib/`, обязательный **`npm run test`** | | **`none`** | Только правки в **`cursorAi`** | Сразу **exit 0**, четыре ключа пайплайна **не проверяются** | Переопределение без правки файла: переменная окружения **`VERIFY_REPO`** (те же значения). Корни соседних репо: родитель каталога `cursorAi` (см. **`WORKSPACE.md`**); для плеера дополнительно **`DND_PLAYER_ROOT`**; для всех соседей — **`DND_PROJECT_ROOT`** (абсолютный путь к папке `dnd_project`). ## Verify перед ответом (по репозиторию задачи) Перед ответом пользователю все проверки **целевого** репозитория должны быть **зелёными**; не подменять verify другим репо. ### Политика тестов **вариант A** (`project-converter`, `DndGamePlayerLicenseServer`) Любая задача, которая **меняет поведение** этих репозиториев, в **том же PR** обязана: добавить или расширить **`npm test`** в **`package.json`**, добавить автотесты на затронутое поведение и довести **`npm run test`** до green. Откладывать появление скрипта `test` или тестов «отдельным эпиком» после merge **нельзя**. Исключение только при объективной блокировке (тогда — запись в задаче, риск, согласование с владельцем процесса), а не «пока не дошли руки». ### `dnd_player` `npm run lint`, `npm run typecheck`, `npm run test` из корня репозитория. ### `project-converter` `npm run lint`, **`node --check`** по entrypoints в `src/`, **`npm run test`** (обязателен — политика **вариант A**). Реальные lint/typecheck — по мере появления скриптов; до этого не ослаблять требование **тестов в том же PR**, что и изменение поведения. ### `DndGamePlayerLicenseServer` **`node --check`** по модулям, **`npm run test`** (обязателен — политика **вариант A**). Скрипт `start` для ручного запуска сервера не заменяет автотесты. ### `cursorAi` Обязательный 4-этапный пайплайн **не применяется**. Согласованность ссылок и имён файлов — по усмотрению задачи; для хука **`stop`** выставь **`verify_repo`: `none`**. Если что-то упало — исправить и повторить до green. ## Команды **`dnd_player`** (справка) Выполнять из **`../dnd_player`** относительно `cursorAi`, либо из корня клонированного `dnd_player`: - install: `npm install` - dev: `npm run dev` - build: `npm run build` - lint: `npm run lint` - typecheck: `npm run typecheck` - test: `npm run test` Полная карта воркспейса: **`WORKSPACE.md`**.