a58732f78a
Co-authored-by: Cursor <cursoragent@cursor.com>
87 lines
7.3 KiB
Plaintext
87 lines
7.3 KiB
Plaintext
---
|
||
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`**.
|