ca9e7cbcc0
Co-authored-by: Cursor <cursoragent@cursor.com>
76 lines
7.2 KiB
Markdown
76 lines
7.2 KiB
Markdown
# Контекст для агента (прочитать в начале сессии)
|
||
|
||
Этот файл лежит в репозитории **`cursorAi`** — **канонический корень** воркспейса Cursor для экосистемы **DNDGamePlayer**. Правила, хуки и под-агенты: **`.cursor/`** в этом же репозитории (у **`dnd_player`** каталог `.cursor` — это junction сюда, см. `WORKSPACE.md`).
|
||
|
||
---
|
||
|
||
## Над чем мы работаем
|
||
|
||
**DNDGamePlayer** — десктопное приложение (Electron): **редактор и проигрыватель** настольных сценариев/игр в формате проекта **`.dnd.zip`** (граф сцен, медиа, превью, эффекты, лицензирование и т.д.). Цель команды — развивать клиент, утилиты и сервер лицензий как связанный продукт, а не разрозненные скрипты.
|
||
|
||
---
|
||
|
||
## Карта репозиториев (одна родительская папка на диске)
|
||
|
||
На машине разработчика все репозитории обычно лежат **рядом** в каталоге вроде **`…/dnd_project/`**. Относительно **`cursorAi/`**:
|
||
|
||
| Путь от `cursorAi` | Назначение |
|
||
|--------------------|------------|
|
||
| **`../dnd_player`** | **Основной код** DNDGamePlayer (Electron + React + TypeScript + Vite, Pixi.js, Sharp, ffmpeg-static и др.). Сюда уходит большинство задач по UI, логике игры, IPC, пакетам проектов. |
|
||
| **`../project-converter`** | Отдельное Electron-приложение: **миграция/конвертация** `.dnd.zip` (добавление превью сцен WebP и правки `project.json`). Не входит в артефакт сборки плеера. |
|
||
| **`../DndGamePlayerLicenseServer`** | **HTTP-сервис лицензий** для плеера (ключ → подписанный токен Ed25519, админ-эндпоинты, статус для клиента). Node (без тяжёлых зависимостей в `package.json`). |
|
||
| **`../ttrpg-player-landing`** | **Маркетинговый лендинг** НРИ Плеер (React + Vite + TypeScript). Статический сайт, не входит в сборку плеера. |
|
||
| **`cursorAi` (текущий репо)** | Документация воркспейса, **`AGENTS.md`**, **`WORKSPACE.md`**, единый **`.cursor/`** (правила, MCP-напоминания, пайплайн, агенты, хук verify). |
|
||
|
||
Удалённые копии (Gitea, пример): `CursorAi`, `DndGamePlayer`, `GameConverter`, `DndGamePlayerLicenseServer` под пользователем **`ifontosh`** на **`git.mailib.ru`** — актуальные URL смотри в `git remote` каждого репозитория.
|
||
|
||
**Публичные домены продукта** (с июля 2026, git остаётся на `git.mailib.ru`):
|
||
|
||
| Домен | Назначение |
|
||
|-------|------------|
|
||
| `https://ttrpgplayer.ru/` | Лендинг (`ttrpg-player-landing`) |
|
||
| `https://updates.ttrpgplayer.ru/` | Фид автообновлений Electron |
|
||
| `https://license.ttrpgplayer.ru/` | API лицензий (`DndGamePlayerLicenseServer`) |
|
||
| `https://api.ttrpgplayer.ru/` | Backend API (PM2 `mailib`, порт 3000) |
|
||
|
||
Старые `license.mailib.ru` и `updates.mailib.ru` отключены; `mailib.ru`, `api.mailib.ru`, `git.mailib.ru` — без изменений.
|
||
|
||
---
|
||
|
||
## Где по умолчанию править код
|
||
|
||
- **Фичи, баги, UI, тесты плеера** → репозиторий **`dnd_player`**, команды из его корня: `npm run dev`, `npm run build`, `npm run lint`, `npm run typecheck`, `npm run test`.
|
||
- **Конвертер проектов** → **`project-converter`**: `npm run dev` и т.д. (отдельного production `build` в `package.json` может не быть).
|
||
- **Лицензии** → **`DndGamePlayerLicenseServer`**: `npm start`, переменные окружения см. README там и в клиенте.
|
||
- **Лендинг продукта** → **`ttrpg-player-landing`**: `npm run dev`, `npm run build`, `npm run lint`, `npm run typecheck`, `npm run test`.
|
||
|
||
Хук Cursor **`stop`** (`.cursor/hooks/final-verify.cjs`) после четырёх этапов в **`pipeline-state.json`** гоняет **lint / typecheck / test** в каталоге **`dnd_player`** (поиск корня: `DND_PLAYER_ROOT` или соседний `../dnd_player`).
|
||
|
||
---
|
||
|
||
## Как мы работаем (кратко)
|
||
|
||
1. **Правила по умолчанию:** `.cursor/rules/project.mdc` (**alwaysApply**) — пайплайн и verify для изменений в коде; детали этапов: `agents-pipeline-order.mdc`, стандарты в `frontend-*.mdc` и `agent-*.mdc`.
|
||
2. **Сценарий по шагам:** `.cursor/skills/feature-pipeline/SKILL.md`.
|
||
3. **Под-агенты:** `.cursor/agents/` (`frontend-developer`, `ui-test-developer`, `code-reviewer`, `ui-tester`).
|
||
4. **Чеклисты под тип задач:** `.cursor/pr-checklists/` (пути к файлам кода — от **`dnd_player/`**).
|
||
|
||
Подробности путей на диске, сборки и junction: **`WORKSPACE.md`**.
|
||
|
||
---
|
||
|
||
## Что не путать
|
||
|
||
- **`cursorAi`** — не приложение; это **точка сборки правил и документации** для всей «песочницы» репозиториев. Обязательный 4-этапный пайплайн к нему **не применяется**; для хука **`stop`** при работе только здесь — **`verify_repo`: `none`**.
|
||
- **`project-converter`** — не часть `npm run build` основного плеера; отдельный продукт/утилита.
|
||
- Контракт **лицензии**: публичный ключ в клиенте и приватный/сервер в **`DndGamePlayerLicenseServer`** должны соответствовать друг другу (см. README сервера).
|
||
|
||
---
|
||
|
||
## Итог для новой сессии
|
||
|
||
1. Прочитай **`AGENTS.md`** (этот файл) и при необходимости **`WORKSPACE.md`**.
|
||
2. Определи, в каком из репозиториев живёт задача (**`dnd_player`**, **`project-converter`**, **`DndGamePlayerLicenseServer`**, **`ttrpg-player-landing`**, **`cursorAi`**).
|
||
3. Для кода приложений: полный пайплайн и хук **`stop`**; в **`pipeline-state.json`** выставь **`verify_repo`** на целевой репо (**`none`** — только правки в **`cursorAi`**, тогда хук не гоняет `npm` в других репо). Для **`dnd_player`** — также **lint, typecheck, test**; планируется i18n **ru**/**en** (отдельная задача).
|
||
4. Соблюдай **минимальный diff** и существующие паттерны репозитория.
|