Co-authored-by: Cursor <cursoragent@cursor.com>
7.1 KiB
Воркспейс dnd_project (корень: cursorAi)
Этот каталог — единая точка входа в Cursor для всей экосистемы DNDGamePlayer: общие правила, агенты, пайплайн и чеклисты лежат в .cursor/ здесь, а не в отдельных репозиториях. Обзор продукта и карта репозиториев для агентов: AGENTS.md (читать в начале сессии).
Родительская папка на диске: D:\Work\my_projects\dnd_project (рядом с cursorAi лежат остальные репозитории).
Каталог dnd_player/.cursor на Windows — это junction (символическая связь каталога) на cursorAi/.cursor: один источник правил и хуков, без дублирования. Клонировать репозитории лучше в соседние папки с тем же относительным расположением; после клона только dnd_player junction нужно создать заново (или держать .cursor только в cursorAi и не коммитить его в dnd_player).
Репозитории
| Каталог | Репозиторий | Назначение |
|---|---|---|
cursorAi |
воркспейс Cursor | Документация (этот файл), единые настройки .cursor/. Отдельного приложения нет. |
../dnd_player |
DNDGamePlayer | Electron: редактор и проигрыватель игр (React, Pixi.js, .dnd.zip, лицензирование). Основной код и полный CI-набор: lint, typecheck, test, build. |
../project-converter |
dnd-project-converter | Утилита: конвертация .dnd.zip, добавление превью сцен (WebP). Свой package.json, отдельный Electron-пакет. |
../DndGamePlayerLicenseServer |
dndgameplayer-license-server | HTTP-сервис лицензий (Ed25519, активация, отзыв). Node ≥20, без npm-зависимостей в манифесте. |
../ttrpg-player-landing |
ttrpg-player-landing | Статический маркетинговый лендинг НРИ Плеер (React + Vite + TypeScript). Не входит в сборку плеера. |
Связь клиента и сервера лицензий описана в README сервера и в коде плеера (bundledPublicKey и переменные окружения).
Публичные домены (продакшен)
| Сервис | Домен | Репозиторий / путь на VPS |
|---|---|---|
| Лендинг | https://ttrpgplayer.ru/ |
ttrpg-player-landing → /var/www/ttrpgplayer_ru/www |
| Автообновления | https://updates.ttrpgplayer.ru/ |
артефакты в /var/www/updates_mailib_ru |
| Лицензии | https://license.ttrpgplayer.ru/ |
DndGamePlayerLicenseServer → /var/www/license_mailib_ru (PM2 dnd-license, порт 3847) |
| API | https://api.ttrpgplayer.ru/ |
PM2 mailib, порт 3000 |
Git: git.mailib.ru — без изменений.
Сборка и проверки
dnd_player: из каталога репозитория —npm install,npm run dev,npm run build,npm run lint,npm run typecheck,npm run test.project-converter: отдельногоbuildнет;npm install,npm run dev. Синтаксис:node --checkпо файлам вsrc/.npm run test— обязателен после появления скриптаtest(вариант A, см.project.mdc).DndGamePlayerLicenseServer:npm start(илиnode src/server.mjs);node --checkдляsrc/иlib/.npm run test— обязателен после появления скриптаtest(вариант A).ttrpg-player-landing:npm install,npm run dev,npm run build,npm run lint,npm run typecheck,npm run test.
Хук stop (.cursor/hooks/final-verify.cjs): читает .cursor/pipeline-state.json. Если verify_repo = none (правки только в cursorAi), хук сразу завершается успехом. Иначе при четырёх done пайплайна запускает проверки целевого репо: dnd_player / ttrpg-player-landing — lint / typecheck / test; project-converter — npm run lint, node --check по src/, обязательный npm run test; DndGamePlayerLicenseServer — node --check по src/ и lib/, обязательный npm run test. Переопределение репо для хука: VERIFY_REPO; корень соседних репозиториев: DND_PROJECT_ROOT; для плеера: DND_PLAYER_ROOT.
Пайплайн и правила
- Правила агента по умолчанию:
.cursor/rules/project.mdc, порядок этапов:agents-pipeline-order.mdc, стандарты:frontend-agent-core.mdc,frontend-development-standards.mdc, гейты:agent-test-gates-mandatory.mdc. - Пошаговый сценарий с под-агентами:
.cursor/skills/feature-pipeline/SKILL.md. - Под-агенты:
.cursor/agents/(frontend-developer,ui-test-developer,code-reviewer,ui-tester). - PR-чеклисты:
.cursor/pr-checklists/(пути к файлам в чеклистах заданы относительно репозиторияdnd_player/).
Для project-converter и DndGamePlayerLicenseServer действуют те же требования пайплайна и гейтов, что и для dnd_player (см. project.mdc, agents-pipeline-order.mdc). ttrpg-player-landing — полный набор lint / typecheck / test как у плеера. Политика тестов — вариант A: любое изменение поведения в том же PR добавляет/обновляет npm test и сами тесты; откладывать на отдельный эпик нельзя. Запуск проверок из dnd_player при задаче только в другом репо не заменяет verify целевого репозитория.
Multi-root в Cursor (по желанию)
Чтобы видеть все папки в одном окне, можно добавить в файл *.code-workspace блок folders с путями к cursorAi, dnd_player, project-converter, DndGamePlayerLicenseServer. Корнем с правилами остаётся папка, где лежит актуальный .cursor/ (рекомендуется cursorAi).