Files
CursorAi/AGENTS.md
T
2026-07-01 15:56:46 +08:00

76 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Контекст для агента (прочитать в начале сессии)
Этот файл лежит в репозитории **`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** и существующие паттерны репозитория.