diff --git a/.cursor/rules/project.mdc b/.cursor/rules/project.mdc index 64d6d06..97aa829 100644 --- a/.cursor/rules/project.mdc +++ b/.cursor/rules/project.mdc @@ -5,6 +5,8 @@ alwaysApply: true # DNDGamePlayer / `dnd_project` — правила работы над задачами (future-pipeline) +**Перед первой задачей в сессии по коду, архитектуре или продукту** открой и учти **`AGENTS.md`** в корне репозитория **`cursorAi`** — там обязательный обзор экосистемы и карта репозиториев. Детали путей и сборки: **`WORKSPACE.md`**. + Эти правила применяются **только** когда запрос пользователя требует **изменений в репозитории** (код/конфиги/тесты). Для чисто текстовых задач (описания, маркетинг, переписка) pipeline не запускаем. **Корень воркспейса Cursor** — обычно каталог `cursorAi` с единым `.cursor/`. Исходники плеера — в соседнем репозитории **`dnd_player/`** (см. `WORKSPACE.md`). diff --git a/.cursor/skills/feature-pipeline/SKILL.md b/.cursor/skills/feature-pipeline/SKILL.md index 517e9ec..1cb9465 100644 --- a/.cursor/skills/feature-pipeline/SKILL.md +++ b/.cursor/skills/feature-pipeline/SKILL.md @@ -5,7 +5,7 @@ description: Implementation → Review → Tests → Verify # Workflow -Контекст воркспейса: **`WORKSPACE.md`**. Основной код плеера — репозиторий **`dnd_player/`** (рядом с корнем воркспейса `cursorAi`). +Контекст воркспейса: **`AGENTS.md`** (обзор продукта), затем **`WORKSPACE.md`** (пути, сборка, junction). Основной код плеера — репозиторий **`dnd_player/`** (рядом с корнем воркспейса `cursorAi`). ## Stage 1 — Implementation diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..0186250 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,62 @@ +# Контекст для агента (прочитать в начале сессии) + +Этот файл лежит в репозитории **`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`). | +| **`cursorAi` (текущий репо)** | Документация воркспейса, **`AGENTS.md`**, **`WORKSPACE.md`**, единый **`.cursor/`** (правила, MCP-напоминания, пайплайн, агенты, хук verify). | + +Удалённые копии (Gitea, пример): `CursorAi`, `DndGamePlayer`, `GameConverter`, `DndGamePlayerLicenseServer` под пользователем **`ifontosh`** на **`git.mailib.ru`** — актуальные URL смотри в `git remote` каждого репозитория. + +--- + +## Где по умолчанию править код + +- **Фичи, баги, 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 там и в клиенте. + +Хук Cursor **`stop`** (`.cursor/hooks/final-verify.cjs`) при полном пайплайне гоняет **lint / typecheck / test** в каталоге **`dnd_player`** (поиск корня: `DND_PLAYER_ROOT` или соседний `../dnd_player`). + +--- + +## Как мы работаем (кратко) + +1. **Правила по умолчанию:** `.cursor/rules/project.mdc` (**alwaysApply**) — future-pipeline: implementation → review → tests → verify для изменений в коде. +2. **Сценарий по шагам:** `.cursor/skills/feature-pipeline/SKILL.md`. +3. **Под-агенты:** `.cursor/agents/` (`frontend-senior`, `reviewer`, `unit-tests`). +4. **Чеклисты под тип задач:** `.cursor/pr-checklists/` (пути к файлам кода — от **`dnd_player/`**). + +Подробности путей на диске, сборки и junction: **`WORKSPACE.md`**. + +--- + +## Что не путать + +- **`cursorAi`** — не приложение; это **точка сборки правил и документации** для всей «песочницы» репозиториев. +- **`project-converter`** — не часть `npm run build` основного плеера; отдельный продукт/утилита. +- Контракт **лицензии**: публичный ключ в клиенте и приватный/сервер в **`DndGamePlayerLicenseServer`** должны соответствовать друг другу (см. README сервера). + +--- + +## Итог для новой сессии + +1. Прочитай **`AGENTS.md`** (этот файл) и при необходимости **`WORKSPACE.md`**. +2. Определи, в каком из четырёх репозиториев живёт задача. +3. Для **`dnd_player`** после существенных правок прогоняй **lint, typecheck, test** (и учитывай хук **`stop`**). +4. Соблюдай **минимальный diff** и существующие паттерны репозитория. diff --git a/WORKSPACE.md b/WORKSPACE.md index 773d157..6ab438d 100644 --- a/WORKSPACE.md +++ b/WORKSPACE.md @@ -1,6 +1,6 @@ # Воркспейс `dnd_project` (корень: `cursorAi`) -Этот каталог — **единая точка входа** в Cursor для всей экосистемы DNDGamePlayer: общие правила, агенты, пайплайн и чеклисты лежат в **`.cursor/`** здесь, а не в отдельных репозиториях. +Этот каталог — **единая точка входа** в Cursor для всей экосистемы DNDGamePlayer: общие правила, агенты, пайплайн и чеклисты лежат в **`.cursor/`** здесь, а не в отдельных репозиториях. **Обзор продукта и карта репозиториев для агентов:** **`AGENTS.md`** (читать в начале сессии). Родительская папка на диске: **`D:\Work\my_projects\dnd_project`** (рядом с `cursorAi` лежат остальные репозитории).