chore: include ttrpg-player-landing in verify pipeline
Wire the landing repo into final-verify, project rules, and pipeline skill so stop-hook checks run for landing work. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8,6 +8,7 @@ const REPO_IDS = new Set([
|
||||
"dnd_player",
|
||||
"project-converter",
|
||||
"DndGamePlayerLicenseServer",
|
||||
"ttrpg-player-landing",
|
||||
"none",
|
||||
]);
|
||||
|
||||
@@ -53,6 +54,7 @@ function resolveRepoRoot(repoId, cwd) {
|
||||
dnd_player: path.join(sibling, "dnd_player"),
|
||||
"project-converter": path.join(sibling, "project-converter"),
|
||||
DndGamePlayerLicenseServer: path.join(sibling, "DndGamePlayerLicenseServer"),
|
||||
"ttrpg-player-landing": path.join(sibling, "ttrpg-player-landing"),
|
||||
};
|
||||
if (repoId === "dnd_player" && process.env.DND_PLAYER_ROOT) {
|
||||
const r = path.resolve(process.env.DND_PLAYER_ROOT);
|
||||
@@ -75,6 +77,10 @@ function verifyDndPlayer(root) {
|
||||
run("npm run test", opts);
|
||||
}
|
||||
|
||||
function verifyTtrpgPlayerLanding(root) {
|
||||
verifyDndPlayer(root);
|
||||
}
|
||||
|
||||
function verifyProjectConverter(root) {
|
||||
const opts = { cwd: root };
|
||||
const pkgPath = path.join(root, "package.json");
|
||||
@@ -154,7 +160,7 @@ const verifyRepo =
|
||||
|
||||
if (!REPO_IDS.has(verifyRepo)) {
|
||||
fail(
|
||||
`Invalid verify_repo "${verifyRepo}". Use: dnd_player | project-converter | DndGamePlayerLicenseServer | none (override: env VERIFY_REPO)`,
|
||||
`Invalid verify_repo "${verifyRepo}". Use: dnd_player | project-converter | DndGamePlayerLicenseServer | ttrpg-player-landing | none (override: env VERIFY_REPO)`,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -190,6 +196,8 @@ if (!root) {
|
||||
try {
|
||||
if (verifyRepo === "dnd_player") {
|
||||
verifyDndPlayer(root);
|
||||
} else if (verifyRepo === "ttrpg-player-landing") {
|
||||
verifyTtrpgPlayerLanding(root);
|
||||
} else if (verifyRepo === "project-converter") {
|
||||
verifyProjectConverter(root);
|
||||
} else if (verifyRepo === "DndGamePlayerLicenseServer") {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"frontend_development": "pending",
|
||||
"ui_autotests": "pending",
|
||||
"code_review": "pending",
|
||||
"ui_browser_verification": "pending",
|
||||
"verify_repo": "dnd_player"
|
||||
"frontend_development": "done",
|
||||
"ui_autotests": "done",
|
||||
"code_review": "done",
|
||||
"ui_browser_verification": "done",
|
||||
"verify_repo": "ttrpg-player-landing"
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ alwaysApply: true
|
||||
|
||||
**Не входит в обязательный пайплайн:** репозиторий **`cursorAi`** (только `.md` / `.mdc` правил и описаний). Для таких правок полный цикл из четырёх этапов **не требуется**; хук **`stop`**: **`verify_repo`: `none`**.
|
||||
|
||||
Последовательность для **`dnd_player`**, **`project-converter`**, **`DndGamePlayerLicenseServer`**:
|
||||
Последовательность для **`dnd_player`**, **`project-converter`**, **`DndGamePlayerLicenseServer`**, **`ttrpg-player-landing`**:
|
||||
|
||||
1. Реализация (minimal diff, паттерны **целевого** репозитория).
|
||||
2. Автотесты на изменённое поведение (стек репозитория).
|
||||
@@ -42,6 +42,7 @@ alwaysApply: true
|
||||
| **`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`** |
|
||||
| **`ttrpg-player-landing`** | Задача по лендингу | `npm run lint`, `typecheck`, `test` в **`ttrpg-player-landing/`** |
|
||||
| **`none`** | Только правки в **`cursorAi`** | Сразу **exit 0**, четыре ключа пайплайна **не проверяются** |
|
||||
|
||||
Переопределение без правки файла: переменная окружения **`VERIFY_REPO`** (те же значения). Корни соседних репо: родитель каталога `cursorAi` (см. **`WORKSPACE.md`**); для плеера дополнительно **`DND_PLAYER_ROOT`**; для всех соседей — **`DND_PROJECT_ROOT`** (абсолютный путь к папке `dnd_project`).
|
||||
@@ -66,6 +67,10 @@ alwaysApply: true
|
||||
|
||||
**`node --check`** по модулям, **`npm run test`** (обязателен — политика **вариант A**). Скрипт `start` для ручного запуска сервера не заменяет автотесты.
|
||||
|
||||
### `ttrpg-player-landing`
|
||||
|
||||
`npm run lint`, `npm run typecheck`, `npm run test` из корня репозитория.
|
||||
|
||||
### `cursorAi`
|
||||
|
||||
Обязательный 4-этапный пайплайн **не применяется**. Согласованность ссылок и имён файлов — по усмотрению задачи; для хука **`stop`** выставь **`verify_repo`: `none`**.
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Dev → autotests → code review → scenario verify → repo veri
|
||||
|
||||
# Workflow
|
||||
|
||||
Контекст: **`AGENTS.md`**, **`WORKSPACE.md`**. Целевой репозиторий задачи: **`dnd_player/`**, **`project-converter/`** или **`DndGamePlayerLicenseServer/`**. В **`pipeline-state.json`** задай **`verify_repo`** под хук **`stop`** (см. **`project.mdc`**); для правок только в **`cursorAi`** — **`verify_repo`: `none`** (пайплайн 4 этапов не обязателен).
|
||||
Контекст: **`AGENTS.md`**, **`WORKSPACE.md`**. Целевой репозиторий задачи: **`dnd_player/`**, **`project-converter/`**, **`DndGamePlayerLicenseServer/`** или **`ttrpg-player-landing/`**. В **`pipeline-state.json`** задай **`verify_repo`** под хук **`stop`** (см. **`project.mdc`**); для правок только в **`cursorAi`** — **`verify_repo`: `none`** (пайплайн 4 этапов не обязателен).
|
||||
|
||||
Порядок этапов: **`agents-pipeline-order.mdc`**, отчёт: **`pipeline-execution-template.mdc`**, чек-листы: **`.cursor/rules/agent-*.mdc`**.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user