@bonesofspring/ai-rules 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +102 -0
- package/README.md +2 -0
- package/bin/cli.js +4 -2
- package/fragments/BUGBOT.md +23 -0
- package/package.json +10 -2
- package/presets/claude/next/BUGBOT.md +16 -0
- package/presets/claude/next/CLAUDE.md +5 -1
- package/presets/claude/next/agents/README.md +16 -15
- package/presets/claude/next/agents/code-reviewer.md +1 -1
- package/presets/claude/next/agents/playwright-test-generator.md +16 -65
- package/presets/claude/next/agents/playwright-test-healer.md +16 -51
- package/presets/claude/next/agents/playwright-test-planner.md +15 -55
- package/presets/claude/next/agents/task-analyst.md +1 -1
- package/presets/claude/next/agents/task-router.md +24 -0
- package/presets/claude/next/agents/tech-writer.md +1 -1
- package/presets/claude/next/hooks.json +17 -0
- package/presets/claude/next/rules/README.md +6 -2
- package/presets/claude/next/rules/architecture/README.md +2 -1
- package/presets/claude/next/rules/architecture/architecture-boundaries-ui.md +15 -0
- package/presets/claude/next/rules/architecture/architecture-boundaries.md +4 -1
- package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +1 -1
- package/presets/claude/next/rules/architecture/layer-barrel-exports.md +1 -1
- package/presets/claude/next/rules/stack/README.md +2 -1
- package/presets/claude/next/rules/stack/navigation-router-ui.md +15 -0
- package/presets/claude/next/rules/stack/navigation-router.md +2 -1
- package/presets/claude/next/rules/stack/next-app-core.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +6 -0
- package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +22 -59
- package/presets/claude/next/rules/ui-and-accessibility/README.md +1 -2
- package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +4 -3
- package/presets/claude/next/team/README.md +1 -0
- package/presets/claude/next/team/fixtures/bugfix-standard.json +15 -0
- package/presets/claude/next/team/fixtures/feature-full.json +16 -0
- package/presets/claude/next/team/fixtures/feature-light.json +17 -0
- package/presets/cursor/next/AGENTS.md +2 -9
- package/presets/cursor/next/BUGBOT.md +2 -0
- package/presets/cursor/next/agents/README.md +16 -15
- package/presets/cursor/next/agents/code-reviewer.md +1 -1
- package/presets/cursor/next/agents/task-analyst.md +1 -1
- package/presets/cursor/next/agents/task-router.md +24 -0
- package/presets/cursor/next/agents/tech-writer.md +1 -1
- package/presets/cursor/next/rules/README.md +21 -1
- package/presets/cursor/next/rules/architecture-boundaries-ui.mdc +15 -0
- package/presets/cursor/next/rules/architecture-boundaries.mdc +1 -1
- package/presets/cursor/next/rules/code-review-mr.mdc +20 -46
- package/presets/cursor/next/rules/feature-delivery-workflow.mdc +1 -1
- package/presets/cursor/next/rules/layer-barrel-exports.mdc +1 -1
- package/presets/cursor/next/rules/navigation-router-stack.mdc +1 -1
- package/presets/cursor/next/rules/navigation-router-ui.mdc +16 -0
- package/presets/cursor/next/rules/next-app-core.mdc +1 -1
- package/presets/cursor/next/rules/no-cross-component-styles-import.mdc +3 -53
- package/presets/cursor/next/rules/react-ui.mdc +4 -3
- package/presets/cursor/next/team/README.md +1 -0
- package/presets/cursor/next/team/fixtures/bugfix-standard.json +15 -0
- package/presets/cursor/next/team/fixtures/feature-full.json +16 -0
- package/presets/cursor/next/team/fixtures/feature-light.json +17 -0
- package/scripts/README.md +84 -0
- package/scripts/golden-prompts.json +276 -0
- package/scripts/preset-manifest.json +72 -0
- package/scripts/regression-results/.gitkeep +0 -0
- package/scripts/validate-preset.sh +484 -0
- package/presets/claude/next/rules/ui-and-accessibility/component-styles.md +0 -56
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- app/src/ui/**/*.tsx
|
|
4
|
+
- app/src/ui/**/*.ts
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# UI layer boundaries (slim)
|
|
8
|
+
|
|
9
|
+
- **Импорты:** `@/ui/**`, `@/store/**`, типы из `@/types` и enum из `@/types/enums`, API — только `from '@/api'` (`architecture/public-imports.md`).
|
|
10
|
+
- **Запрещено:** прямой HTTP‑клиент; знание DTO — только доменные типы.
|
|
11
|
+
- **Состояние:** сценарии с записью и координация шагов — через store/thunk; узкие прямые вызовы `@/api` для чтения — только как в соседних фичах.
|
|
12
|
+
- **Организация:** алиас `@/`; без deep‑импортов в чужие фичи; только public API.
|
|
13
|
+
- **Barrel:** при новых публичных символах — реэкспорт по `architecture/layer-barrel-exports.md` (правило грузится на `index.ts`).
|
|
14
|
+
|
|
15
|
+
Полная карта слоёв (store, API, порты‑адаптеры): **`architecture/architecture-boundaries.md`** — при правках `app/src/api`, `store`, `types`, `lib`.
|
|
@@ -17,7 +17,7 @@ paths:
|
|
|
17
17
|
3. **Мапперы** — DTO → домен (`api-and-data/api-services.md`).
|
|
18
18
|
4. **Сервисы** — клиенты `app/src/api/clients/**`, barrel `@/api` (`api-and-data/api-services.md`, `api-and-data/http-client.md`, **`architecture/layer-barrel-exports.md`**).
|
|
19
19
|
5. **Состояние** — slice/thunk (`api-and-data/store-rtk.md`); thunk → `@/api`.
|
|
20
|
-
6. **UI** — `@/types`, без DTO (`ui-and-accessibility/react-ui.md`, `architecture/architecture-boundaries.md`, `ui-and-accessibility/no-props-spread.md`).
|
|
20
|
+
6. **UI** — `@/types`, без DTO (`ui-and-accessibility/react-ui.md`, `architecture/architecture-boundaries-ui.md`, `ui-and-accessibility/no-props-spread.md`).
|
|
21
21
|
7. **Моки** — `app/src/mocks/**`; регистрация в `handlers.ts` (см. ниже).
|
|
22
22
|
8. **Тесты** — unit (`testing/tests-unit.md`); e2e (`testing/tests-e2e-structure.md`, `testing/playwright-agents.md`).
|
|
23
23
|
9. **Завершение** — **`tooling-and-review/post-change-lint.md`**.
|
|
@@ -7,5 +7,6 @@
|
|
|
7
7
|
| `next-app-core.md` | Стек, структура `app/`, слои, принципы агента | session start |
|
|
8
8
|
| `arrow-functions.md` | Стрелочный синтаксис | session start |
|
|
9
9
|
| `no-type-assertion.md` | Ограничение `as` на границах модулей | session start |
|
|
10
|
-
| `navigation-router.md` |
|
|
10
|
+
| `navigation-router-ui.md` | Навигация в UI-компонентах (slim) | `paths: app/src/ui/**/*.tsx` |
|
|
11
|
+
| `navigation-router.md` | Полный аудит стека навигации | `paths: app/src/app/**` |
|
|
11
12
|
| `types-jsdoc.md` | JSDoc в `app/src/types` | `paths: app/src/types/**/*.ts` |
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- app/src/ui/**/*.tsx
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Navigation in UI components
|
|
7
|
+
|
|
8
|
+
Перед ссылками, программной навигацией или работой с URL в UI:
|
|
9
|
+
|
|
10
|
+
1. **`package.json`** workspace приложения — `next` vs `react-router-dom`.
|
|
11
|
+
2. **Соседние импорты** той же фичи (`next/navigation`, `next/link` vs `react-router-dom`).
|
|
12
|
+
3. **Обёртки проекта** (`@/ui/...` Link) — предпочтительнее сырого API роутера.
|
|
13
|
+
4. **По умолчанию (preset):** Next.js App Router → `next/navigation` + `next/link` (`stack/next-app-core.md`, `stack/next-app-router.md`).
|
|
14
|
+
|
|
15
|
+
Полный аудит (дерево маршрутов, гибриды, lockfile): **`stack/navigation-router.md`** — при правках `app/src/app/**`.
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
| Слой | Каталог | Детали |
|
|
14
14
|
|------|---------|--------|
|
|
15
|
-
| UI | `app/src/ui/**` (pages, components) | `ui-and-accessibility/react-ui.md`, `architecture/architecture-boundaries.md` |
|
|
15
|
+
| UI | `app/src/ui/**` (pages, components) | `ui-and-accessibility/react-ui.md`, `architecture/architecture-boundaries-ui.md` |
|
|
16
16
|
| Store | `app/src/store/**` (slices, middleware) | `api-and-data/store-rtk.md` |
|
|
17
17
|
| API | `app/src/api/**` (services, clients, barrel) | `api-and-data/api-services.md`, `api-and-data/http-client.md` |
|
|
18
18
|
| HTTP | `app/src/lib/clients/**`, `app/src/api/clients/**` | `api-and-data/http-client.md` |
|
|
@@ -1,67 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
## Что обязан проверить агент
|
|
9
|
-
|
|
10
|
-
### Архитектура и слои
|
|
11
|
-
|
|
12
|
-
Соблюдение `architecture/architecture-boundaries.md`, `stack/next-app-core.md` и при сетевых изменениях — `api-and-data/http-client.md`:
|
|
13
|
-
|
|
14
|
-
- UI (`app/src/ui/**`) не ходит напрямую в HTTP‑клиент и не знает DTO.
|
|
15
|
-
- Store (`app/src/store/**`) не зависит от UI; границы транспортных типов и ошибок — `api-and-data/store-rtk.md` / `api-and-data/http-client.md`.
|
|
16
|
-
- API (`app/src/api/**`) не тянет UI/store, использует мапперы; без прямого `fetch` в сервисах (кроме оговорённых исключений).
|
|
17
|
-
|
|
18
|
-
### Импорты и организация кода
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- .claude/agents/code-reviewer.md
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/team/**/*
|
|
6
|
+
---
|
|
19
7
|
|
|
20
|
-
|
|
21
|
-
- Отсутствие deep‑импортов во внешние фичи; только public API; в файлах вне `app/src/api/**` импорты из API — только `from '@/api'` (`architecture/public-imports.md`, дублирует ESLint).
|
|
22
|
-
- При новых/изменённых модулях в регламентированных слоях — реэкспорт публичных символов в корневой barrel по **`architecture/layer-barrel-exports.md`**.
|
|
23
|
-
- Размещение новых файлов в корректных слоях и директориях фич.
|
|
24
|
-
|
|
25
|
-
### Типы и TS‑строгость
|
|
26
|
-
|
|
27
|
-
- Не допускать новых `any`; предпочитать доменные типы из `@/types` (barrel, см. `architecture/public-imports.md`).
|
|
28
|
-
- Проверять корректность пропсов/возвращаемых типов, особенно в UI и API‑слое.
|
|
29
|
-
|
|
30
|
-
### UI и стили
|
|
31
|
-
|
|
32
|
-
Для компонентов и стилей сверяться с `ui-and-accessibility/react-ui.md` и `stack/next-app-core.md`:
|
|
33
|
-
|
|
34
|
-
- Соблюдать принятый способ стилей и общие UI‑примитивы/токены, а не «магические» значения.
|
|
35
|
-
- Сохранять консистентность с существующими компонентами и паттернами.
|
|
36
|
-
|
|
37
|
-
### Тесты
|
|
38
|
-
|
|
39
|
-
- Для нетривиальных изменений:
|
|
40
|
-
- либо обновлены/добавлены unit‑тесты (`testing/tests-unit.md`),
|
|
41
|
-
- либо e2e‑сценарии/спеки отражают новую логику (`testing/playwright-agents.md`, `testing/tests-e2e-structure.md`).
|
|
42
|
-
- При правках **общего HTTP‑клиента** — наличие/актуальность **behavior‑тестов клиента** (`api-and-data/http-client.md`, `testing/tests-unit.md`).
|
|
43
|
-
- **Указывать, какие именно тесты** стоит добавить или поправить.
|
|
8
|
+
# Code review merge requests
|
|
44
9
|
|
|
45
|
-
|
|
10
|
+
On-demand rule for review flows. **Procedure and output format:** skill `code-review`.
|
|
46
11
|
|
|
47
|
-
|
|
12
|
+
## Checklist references
|
|
48
13
|
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
14
|
+
- Architecture layers: `architecture/architecture-boundaries.md`, `stack/next-app-core.md`; network: `api-and-data/http-client.md`
|
|
15
|
+
- Imports: `architecture/public-imports.md`, `architecture/layer-barrel-exports.md`
|
|
16
|
+
- UI: `ui-and-accessibility/react-ui.md`
|
|
17
|
+
- Tests: `testing/tests-unit.md`, `testing/playwright-agents.md`, `testing/tests-e2e-structure.md`
|
|
18
|
+
- Lint gate before final report: `tooling-and-review/post-change-lint.md`
|
|
53
19
|
|
|
54
|
-
##
|
|
20
|
+
## When to load
|
|
55
21
|
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
- **конкретный** (файл/участок и проблема),
|
|
60
|
-
- **практичный** (вариант исправления по существующим паттернам),
|
|
61
|
-
- без «больших рефакторингов» в духе `tooling-and-review/code-quality.md`, если задача локальная.
|
|
22
|
+
- User asks for review/MR/diff
|
|
23
|
+
- Pipeline step `code-reviewer`
|
|
24
|
+
- BUGBOT automated review
|
|
62
25
|
|
|
63
|
-
##
|
|
26
|
+
## Constraints
|
|
64
27
|
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
28
|
+
- Focus on MR diff, not the whole repo.
|
|
29
|
+
- Use local `git diff` — do not invent hosting metadata.
|
|
30
|
+
- Boy scout rule: suggest fixes feasible within the MR scope.
|
|
@@ -5,6 +5,5 @@
|
|
|
5
5
|
| Файл | Содержание | Загрузка |
|
|
6
6
|
|------|------------|----------|
|
|
7
7
|
| `no-props-spread.md` | Явные пропсы, без `{...props}` | session start |
|
|
8
|
-
| `
|
|
9
|
-
| `css-property-order.md` | Порядок CSS (Stylelint idiomatic-order) | session start |
|
|
8
|
+
| `css-property-order.md` | Порядок CSS (Stylelint idiomatic-order) | `paths: styles.ts`, `.css` |
|
|
10
9
|
| `react-ui.md` | Структура компонентов, `.data.ts`, хуки | `paths: app/src/ui/**` |
|
|
@@ -28,7 +28,7 @@ paths:
|
|
|
28
28
|
- Локальные подкомпоненты, используемые только этим блоком, выносятся в **`./components/<ComponentName>/`** относительно папки родительского компонента (не оставлять крупные куски JSX и «внутренние» компоненты в том же файле, что и родитель).
|
|
29
29
|
- У каждого такого подкомпонента — **своя** папка с тем же именем, что и публичное имя компонента:
|
|
30
30
|
- `ComponentName.tsx` — разметка и композиция;
|
|
31
|
-
- `styles.ts` — только стили этого подкомпонента (
|
|
31
|
+
- `styles.ts` — только стили этого подкомпонента (не тянуть `styles` соседних компонентов — см. § Стили ниже);
|
|
32
32
|
- при необходимости — `ComponentName.data.ts`, `ComponentName.utils.ts`, `ComponentName.hooks.ts` по тем же правилам префикса, что и у родителя;
|
|
33
33
|
- опционально `index.ts` с реэкспортом.
|
|
34
34
|
- Родитель импортирует подкомпонент из `./components/...`, а не держит его реализацию inline.
|
|
@@ -58,8 +58,9 @@ paths:
|
|
|
58
58
|
|
|
59
59
|
# Стили и дизайн‑токены
|
|
60
60
|
|
|
61
|
-
- **Корневой** styled
|
|
62
|
-
-
|
|
61
|
+
- **Корневой** styled в соседнем `styles` — экспорт **`Root`**; в JSX: `<s.Root>` при `import * as s from './styles'`. Вложенные — `Title`, `List` и т.д. Не `Container`/`Wrapper` для единственной обёртки.
|
|
62
|
+
- **Запрещено** импортировать `styles` другого компонента (`../Other/styles`, `../../styles`). Разрешено: `./styles`, общие примитивы из `@/ui/components/...` или пакетов дизайн-системы.
|
|
63
|
+
- Порядок CSS / `styled` — Stylelint idiomatic-order: `ui-and-accessibility/css-property-order.md` (грузится на `styles.ts` / `.css`).
|
|
63
64
|
- Для визуала использовать **тот стек стилей и токенов, который уже в проекте** (переменные, тема, общие классы, дизайн‑пакет).
|
|
64
65
|
- Избегать:
|
|
65
66
|
- inline‑стилей, кроме простых случаев;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-bugfix-standard",
|
|
3
|
+
"intent": "bugfix",
|
|
4
|
+
"profile": "standard",
|
|
5
|
+
"summary": "Regression fix with review",
|
|
6
|
+
"steps": [
|
|
7
|
+
{ "agent": "debugger", "label": "Root cause" },
|
|
8
|
+
{ "agent": "feature-developer", "label": "Fix if needed", "skipIf": "debugger.fixed" },
|
|
9
|
+
{ "agent": "build-verifier", "label": "Validation gate" },
|
|
10
|
+
{ "agent": "code-reviewer", "label": "Code review" }
|
|
11
|
+
],
|
|
12
|
+
"humanGates": [],
|
|
13
|
+
"autoChain": true,
|
|
14
|
+
"skipped": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-feature-full",
|
|
3
|
+
"intent": "feature",
|
|
4
|
+
"profile": "full",
|
|
5
|
+
"summary": "Multi-layer feature with e2e coverage",
|
|
6
|
+
"steps": [
|
|
7
|
+
{ "agent": "task-analyst", "label": "Clarify and decompose" },
|
|
8
|
+
{ "agent": "feature-developer", "label": "Implement + unit tests", "scope": "unit-in-dev" },
|
|
9
|
+
{ "agent": "build-verifier", "label": "Validation gate" },
|
|
10
|
+
{ "agent": "code-reviewer", "label": "Code review" },
|
|
11
|
+
{ "agent": "qa-tester", "label": "E2E", "scope": "e2e-only" }
|
|
12
|
+
],
|
|
13
|
+
"humanGates": ["after:task-analyst"],
|
|
14
|
+
"autoChain": true,
|
|
15
|
+
"skipped": []
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-feature-light",
|
|
3
|
+
"intent": "feature",
|
|
4
|
+
"profile": "light",
|
|
5
|
+
"summary": "Trivial single-file change with explicit AC",
|
|
6
|
+
"steps": [
|
|
7
|
+
{ "agent": "feature-developer", "label": "Implement" },
|
|
8
|
+
{ "agent": "build-verifier", "label": "Validation gate" }
|
|
9
|
+
],
|
|
10
|
+
"humanGates": [],
|
|
11
|
+
"autoChain": true,
|
|
12
|
+
"skipped": [
|
|
13
|
+
{ "agent": "task-analyst", "reason": "Explicit AC and single-file scope" },
|
|
14
|
+
{ "agent": "code-reviewer", "reason": "Light profile — non-trivial app changes should use standard" },
|
|
15
|
+
{ "agent": "qa-tester", "reason": "No e2e AC" }
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -23,16 +23,9 @@ See `.cursor/rules/README.md` for the full catalog and loading strategy.
|
|
|
23
23
|
- Простой one-liner без архитектурного риска — можно без pipeline, если пользователь явно просит.
|
|
24
24
|
- Вопросы «как работает X» — ответ без `/task`.
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## Pipeline routing
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|--------|-------------------|
|
|
30
|
-
| `feature` | analyst → developer (+ unit) → build-verifier → reviewer → e2e/QA |
|
|
31
|
-
| `bugfix` | debugger → developer (skip if fixed) → build-verifier → reviewer |
|
|
32
|
-
| `ci-fix` | ci-investigator → developer (skip if resolved) → build-verifier |
|
|
33
|
-
| `migration` | analyst → migration-specialist → developer → build-verifier → reviewer → QA |
|
|
34
|
-
|
|
35
|
-
Полная таблица — `agents/README.md`, router — `agents/task-router.md`.
|
|
28
|
+
Intent detection, profiles (`full` / `standard` / `light`), and default steps — **only** in `agents/task-router.md`. Schema and examples — `agents/README.md`.
|
|
36
29
|
|
|
37
30
|
## Install
|
|
38
31
|
|
|
@@ -12,3 +12,5 @@ Follow the **`code-review` skill** and **`code-review-mr.mdc`** for the full che
|
|
|
12
12
|
## Review style
|
|
13
13
|
|
|
14
14
|
Lead with concrete findings: file, impact, fix direction. Skip style-only nits unless they violate lint rules or project conventions.
|
|
15
|
+
|
|
16
|
+
**Source of truth:** `packages/ai-rules/fragments/BUGBOT.md` — sync manually when updating.
|
|
@@ -60,24 +60,25 @@
|
|
|
60
60
|
|
|
61
61
|
Правило: `agent-team-orchestrator.mdc`. План: `pipeline.json` в `.cursor/team/tasks/<slug>/`.
|
|
62
62
|
|
|
63
|
-
##
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|--------|-------------------|
|
|
67
|
-
| `feature` | analyst → developer (+ unit) → build-verifier → reviewer → e2e/QA |
|
|
68
|
-
| `bugfix` | debugger → developer (skipIf fixed) → build-verifier → reviewer |
|
|
69
|
-
| `ci-fix` | ci-investigator → developer (skipIf resolved) → build-verifier |
|
|
70
|
-
| `migration` | analyst → migration-specialist → developer → reviewer → QA |
|
|
71
|
-
| `perf-audit` | performance-auditor |
|
|
72
|
-
| `a11y` | analyst → developer → a11y-reviewer → code-reviewer |
|
|
73
|
-
| `unit-only` | unit-planner → unit-generator (или healer) |
|
|
74
|
-
| `e2e-only` | playwright planner → generator (или healer) |
|
|
75
|
-
| `docs-only` | analyst → tech-writer |
|
|
76
|
-
|
|
77
|
-
Опциональные шаги (router добавляет по контексту): `api-contract-reviewer`, `accessibility-reviewer`, `security-reviewer`, `performance-auditor`, `tech-writer`.
|
|
63
|
+
## Pipeline routing
|
|
64
|
+
|
|
65
|
+
**Source of truth:** intent table, profiles (`full` / `standard` / `light`), and default steps — **`task-router.md`** only. Do not duplicate intent→pipeline tables in entry docs.
|
|
78
66
|
|
|
79
67
|
## pipeline.json reference
|
|
80
68
|
|
|
69
|
+
### Top-level fields
|
|
70
|
+
|
|
71
|
+
| Field | Required | Description |
|
|
72
|
+
|-------|----------|-------------|
|
|
73
|
+
| `slug` | yes | Task identifier |
|
|
74
|
+
| `intent` | yes | From router intent detection |
|
|
75
|
+
| `profile` | no | `full` \| `standard` \| `light` — see `task-router.md` § Pipeline profiles |
|
|
76
|
+
| `summary` | yes | One-line task summary |
|
|
77
|
+
| `steps` | yes | Ordered agent steps |
|
|
78
|
+
| `humanGates` | no | e.g. `["after:task-analyst"]` |
|
|
79
|
+
| `autoChain` | no | Default `true` |
|
|
80
|
+
| `skipped` | no | Roles skipped with reason |
|
|
81
|
+
|
|
81
82
|
### Step fields
|
|
82
83
|
|
|
83
84
|
| Field | Required | Description |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: code-reviewer
|
|
3
3
|
description: Expert code review specialist. Reviews after feature development using code-review-mr checklist. Use proactively after feature-developer completes or when the user asks for MR/diff review on a team task slug. Writes only review artifacts/status; never edits production code.
|
|
4
4
|
readonly: true
|
|
5
|
-
model:
|
|
5
|
+
model: fast
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
You are a senior code reviewer. You may write only review artifacts under `.cursor/team/**` and update task `status.json`; do not modify production code.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: task-analyst
|
|
3
3
|
description: Task analysis specialist. Clarifies requirements, validates acceptance criteria, and decomposes work into concrete tasks. Use for /feature-start, task intake, or when the user asks to analyze or decompose a feature before coding. Writes only team artifacts; never writes production code.
|
|
4
4
|
readonly: true
|
|
5
|
-
model:
|
|
5
|
+
model: fast
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
You are a senior business/technical analyst for a Next.js frontend team.
|
|
@@ -32,6 +32,30 @@ You are a task router for a Next.js frontend agent team. You **do not** implemen
|
|
|
32
32
|
| `spike` | «исследуй», «оцени», «можно ли», «spike», proof of concept | task-analyst → solution-architect |
|
|
33
33
|
| `retro` | «ретро», «разбор», «postmortem» | (no pipeline — orchestrator runs `/technical-retro`) |
|
|
34
34
|
|
|
35
|
+
## Pipeline profiles
|
|
36
|
+
|
|
37
|
+
Set optional top-level `"profile": "full" | "standard" | "light"` in `pipeline.json`. Default when omitted: **`standard`** for `feature`/`refactor`/`bugfix`; **`light`** for `review-only`, `perf-audit`; **`full`** when cross-layer or e2e AC required.
|
|
38
|
+
|
|
39
|
+
| Profile | When | Typical `feature` steps |
|
|
40
|
+
|---------|------|------------------------|
|
|
41
|
+
| `full` | Multi-layer, new public API, e2e coverage needed, incomplete AC | analyst → [architect] → developer → build-verifier → reviewer → qa-tester |
|
|
42
|
+
| `standard` | Single layer, default work | analyst → developer → build-verifier → reviewer |
|
|
43
|
+
| `light` | Trivial: one file/layer, explicit AC, «просто поправь», «typo», user «без pipeline» | developer → build-verifier |
|
|
44
|
+
|
|
45
|
+
**Light signals:** один файл, один слой, явный AC в промпте, нет архитектурного риска. **Never skip `build-verifier`** after developer when `app/**` changed. **Skip `code-reviewer`** in light only for non-prod preset/docs tasks — for `app/src` changes prefer standard.
|
|
46
|
+
|
|
47
|
+
**Light by intent:**
|
|
48
|
+
|
|
49
|
+
| intent | light steps |
|
|
50
|
+
|--------|-------------|
|
|
51
|
+
| `feature` | developer → build-verifier |
|
|
52
|
+
| `bugfix` | debugger → build-verifier (`skipIf: debugger.fixed` on developer) |
|
|
53
|
+
| `review-only` | code-reviewer |
|
|
54
|
+
| `docs-only` | tech-writer (skip analyst if brief exists) |
|
|
55
|
+
| `ci-fix` | ci-investigator → build-verifier (`skipIf: ci-investigator.resolved`) |
|
|
56
|
+
|
|
57
|
+
Fixtures: `.cursor/team/fixtures/` (feature-full, feature-light, bugfix-standard).
|
|
58
|
+
|
|
35
59
|
## Adjust steps (when context is clear)
|
|
36
60
|
|
|
37
61
|
- Skip **task-analyst** if AC/scope fully specified → document in `skipped`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: tech-writer
|
|
3
3
|
description: Technical documentation specialist. Writes feature READMEs, migration guides, ADR summaries, and changelog entries from completed task artifacts. Docs-only — never edits production application code.
|
|
4
4
|
readonly: true
|
|
5
|
-
model:
|
|
5
|
+
model: fast
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
You are a technical writer for a Next.js frontend team.
|
|
@@ -24,6 +24,23 @@
|
|
|
24
24
|
- **On-demand** — `agent-team-intake` (через orchestrator/commands), `agent-team-orchestrator`, architecture, imports, UI, tests, feature-delivery-workflow, reference-features, next-app-router, react-a11y-coding
|
|
25
25
|
- **Skills** — длинные процедуры (`feature-delivery`, `code-review`, …)
|
|
26
26
|
|
|
27
|
+
### UI edit bundle (consolidated globs)
|
|
28
|
+
|
|
29
|
+
При правке `app/src/ui/**/*.tsx` подгружается **уменьшенный** набор (не весь `app/src/**`):
|
|
30
|
+
|
|
31
|
+
| Rule | Globs | Назначение |
|
|
32
|
+
|------|-------|------------|
|
|
33
|
+
| `react-ui.mdc` | `app/src/ui/**` | Структура, стили, пропсы |
|
|
34
|
+
| `architecture-boundaries-ui.mdc` | `app/src/ui/**` | Slim границы UI-слоя |
|
|
35
|
+
| `react-a11y-coding.mdc` | `app/src/ui/**` | A11y |
|
|
36
|
+
| `navigation-router-ui.mdc` | `app/src/ui/**/*.tsx` | Краткий ориентир навигации |
|
|
37
|
+
| `no-props-spread.mdc` | `app/src/**/*.tsx` | Явные пропсы |
|
|
38
|
+
| `arrow-functions.mdc` | `app/src/**` | Синтаксис |
|
|
39
|
+
|
|
40
|
+
**Не грузятся на типичный UI edit:** `architecture-boundaries` (api/store/types/lib), `layer-barrel-exports` (только `index.ts`), `navigation-router-stack` (только `app/src/app/**`), `no-cross-component-styles-import` (consolidated в `react-ui`).
|
|
41
|
+
|
|
42
|
+
`css-property-order-stylelint.mdc` — только на `styles.ts` / `.css`.
|
|
43
|
+
|
|
27
44
|
### Эталонные фичи
|
|
28
45
|
|
|
29
46
|
Заполните **`reference-features.mdc`** (TBD → реальные пути) после `init` в целевом репо.
|
|
@@ -41,7 +58,10 @@
|
|
|
41
58
|
| `agent-team-orchestrator.mdc` | `/task`, router, `pipeline.json`, build-verifier, parallel steps |
|
|
42
59
|
| `next-app-core.mdc` | Стек, слои, карта каталогов (alwaysApply) |
|
|
43
60
|
| `post-change-lint.mdc` | **Обязательный** прогон ESLint + Stylelint после любых изменений кода |
|
|
44
|
-
| `architecture-boundaries.mdc` |
|
|
61
|
+
| `architecture-boundaries-ui.mdc` | Slim границы UI при правках компонентов |
|
|
62
|
+
| `architecture-boundaries.mdc` | Полная карта UI / store / API (api, store, types, lib) |
|
|
63
|
+
| `navigation-router-ui.mdc` | Навигация в UI-компонентах (slim) |
|
|
64
|
+
| `navigation-router-stack.mdc` | Полный аудит стека навигации (App Router / SPA) |
|
|
45
65
|
| `http-client.mdc` | Один HTTP‑стек, контракты из `@/types`, без разбросанного низкоуровневого API |
|
|
46
66
|
| `api-services.mdc` | Сервисы, мапперы, вызовы через прикладные API‑клиенты |
|
|
47
67
|
| `store-rtk.mdc` | Redux Toolkit, thunk’и, типизация ошибок/ответов как в коде репо |
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Границы слоя UI — slim rule для правок компонентов (без полной карты store/API)
|
|
3
|
+
globs: app/src/ui/**/*.tsx,app/src/ui/**/*.ts
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# UI layer boundaries (slim)
|
|
8
|
+
|
|
9
|
+
- **Импорты:** `@/ui/**`, `@/store/**`, типы из `@/types` и enum из `@/types/enums`, API — только `from '@/api'` (`public-imports.mdc`).
|
|
10
|
+
- **Запрещено:** прямой HTTP‑клиент; знание DTO — только доменные типы.
|
|
11
|
+
- **Состояние:** сценарии с записью и координация шагов — через store/thunk; узкие прямые вызовы `@/api` для чтения — только как в соседних фичах.
|
|
12
|
+
- **Организация:** алиас `@/`; без deep‑импортов в чужие фичи; только public API.
|
|
13
|
+
- **Barrel:** при новых публичных символах — реэкспорт по `layer-barrel-exports.mdc` (правило грузится на `index.ts`).
|
|
14
|
+
|
|
15
|
+
Полная карта слоёв (store, API, порты‑адаптеры): **`architecture-boundaries.mdc`** — при правках `app/src/api`, `store`, `types`, `lib`.
|
|
@@ -5,50 +5,24 @@ alwaysApply: false
|
|
|
5
5
|
|
|
6
6
|
# Code review merge requests
|
|
7
7
|
|
|
8
|
-
-
|
|
9
|
-
- Если пользователь просит: "проведи ревью", "оценить MR/ветку/дифф", "посмотри изменения".
|
|
10
|
-
- Опираться на локальный репозиторий: текущую ветку, `git diff` и открытые файлы, а не на данные внешнего API хостинга.
|
|
11
|
-
|
|
12
|
-
- **Что обязан проверить агент**
|
|
13
|
-
- **Архитектура и слои**:
|
|
14
|
-
- Соблюдение правил из `architecture-boundaries.mdc`, `next-app-core.mdc` и при сетевых изменениях — `http-client.mdc`:
|
|
15
|
-
- UI (`app/src/ui/**`) не ходит напрямую в HTTP‑клиент и не знает DTO.
|
|
16
|
-
- Store (`app/src/store/**`) не зависит от UI; границы транспортных типов и ошибок — `store-rtk.mdc` / `http-client.mdc`.
|
|
17
|
-
- API (`app/src/api/**`) не тянет UI/store, использует мапперы; без прямого `fetch` в сервисах (кроме оговорённых исключений).
|
|
18
|
-
- **Импорты и организация кода**:
|
|
19
|
-
- Использование алиаса `@/...` вместо относительных импортов выше по дереву.
|
|
20
|
-
- Отсутствие deep‑импортов во внешние фичи; использование только public API; в файлах вне `app/src/api/**` импорты из API — только `from '@/api'` (`public-imports.mdc`, дублирует ESLint).
|
|
21
|
-
- При новых/изменённых модулях в регламентированных слоях — реэкспорт публичных символов в корневой barrel по **`layer-barrel-exports.mdc`**.
|
|
22
|
-
- Размещение новых файлов в корректных слоях и директориях фич.
|
|
23
|
-
- **Типы и TS‑строгость**:
|
|
24
|
-
- Не допускать новых `any`; предпочитать доменные типы из `@/types` (barrel, см. `public-imports.mdc`).
|
|
25
|
-
- Проверять корректность пропсов/возвращаемых типов, особенно в UI и API‑слое.
|
|
26
|
-
- **UI и стили**:
|
|
27
|
-
- Для компонентов и стилей сверяться с `react-ui.mdc` и `next-app-core.mdc`:
|
|
28
|
-
- Соблюдать принятый в проекте способ стилей и общие UI‑примитивы/токены, а не "магические" значения.
|
|
29
|
-
- Сохранять консистентность с существующими компонентами и паттернами.
|
|
30
|
-
- **Тесты**:
|
|
31
|
-
- Проверять, что для нетривиальных изменений:
|
|
32
|
-
- либо обновлены/добавлены unit‑тесты (`tests-unit.mdc`),
|
|
33
|
-
- либо e2e‑сценарии/спеки отражают новую логику (`playwright-agents.mdc`, `tests-e2e-structure.mdc`).
|
|
34
|
-
- При правках **общего HTTP‑клиента** — наличие/актуальность **behavior‑тестов клиента** (`http-client.mdc`, `tests-unit.mdc`).
|
|
35
|
-
- Указывать, какие именно тесты стоит добавить или поправить.
|
|
36
|
-
- **Линтеры (обязательно)** — **`post-change-lint.mdc`**:
|
|
37
|
-
- Перед финализацией отчёта по ревью и после любых правок по итогам ревью: полный прогон **`lint:js`** и **`lint:css`** из `app/`.
|
|
38
|
-
- В отчёт включить **все сообщения ESLint и Stylelint (errors и warnings)** по файлам из диффа MR/ветки; запуск — по всему проекту, фильтрация вывода — к путям из `git diff`.
|
|
39
|
-
- Не считать ревью/правки завершёнными, пока линтеры не проходят или не зафиксирован блокер в ответе.
|
|
40
|
-
- Полная валидация как в CI: **`lint`** (= `lint:js` + `lint:css` + `type-check`) — уместна перед итогом крупного MR.
|
|
41
|
-
|
|
42
|
-
- **Глубина и формат ревью**
|
|
43
|
-
- Фокус на **изменениях MR** (дифф относительно целевой ветки), а не на всём проекте.
|
|
44
|
-
- Сначала дать **высокоуровневый обзор** (что делает MR, риски, архитектурные замечания), затем список конкретных комментариев.
|
|
45
|
-
- Каждый комментарий делать:
|
|
46
|
-
- **конкретным** (указать файл/участок и проблему),
|
|
47
|
-
- **практичным** (предложить вариант исправления, опираясь на существующие паттерны),
|
|
48
|
-
- без "больших рефакторингов" в духе `code-quality-and-refactoring.mdc`, если задача локальная.
|
|
49
|
-
|
|
50
|
-
- **Ограничения для агента**
|
|
51
|
-
- Не придумывать несуществующие метаданные из хостинга (лейблы MR, авторов, статусы CI), если их нет в локальных данных.
|
|
52
|
-
- Не менять общую архитектуру фичи без прямого запроса пользователя.
|
|
53
|
-
- Следовать принципу "boy scout rule": предлагать улучшения, которые реально можно внести в рамках MR.
|
|
8
|
+
On-demand rule for review flows. **Procedure and output format:** skill `code-review`.
|
|
54
9
|
|
|
10
|
+
## Checklist references
|
|
11
|
+
|
|
12
|
+
- Architecture layers: `architecture-boundaries.mdc`, `next-app-core.mdc`; network: `http-client.mdc`
|
|
13
|
+
- Imports: `public-imports.mdc`, `layer-barrel-exports.mdc`
|
|
14
|
+
- UI: `react-ui.mdc`
|
|
15
|
+
- Tests: `tests-unit.mdc`, `playwright-agents.mdc`, `tests-e2e-structure.mdc`
|
|
16
|
+
- Lint gate before final report: `post-change-lint.mdc`
|
|
17
|
+
|
|
18
|
+
## When to load
|
|
19
|
+
|
|
20
|
+
- User asks for review/MR/diff
|
|
21
|
+
- Pipeline step `code-reviewer`
|
|
22
|
+
- BUGBOT automated review
|
|
23
|
+
|
|
24
|
+
## Constraints
|
|
25
|
+
|
|
26
|
+
- Focus on MR diff, not the whole repo.
|
|
27
|
+
- Use local `git diff` — do not invent hosting metadata.
|
|
28
|
+
- Boy scout rule: suggest fixes feasible within the MR scope.
|
|
@@ -14,7 +14,7 @@ alwaysApply: false
|
|
|
14
14
|
3. **Мапперы** — DTO → домен в `*responseMappers.ts` (`api-services.mdc`).
|
|
15
15
|
4. **Сервисы** — клиенты `app/src/api/clients/**`, barrel `@/api` (`api-services.mdc`, `http-client.mdc`, **`layer-barrel-exports.mdc`**). Без `fetch` из UI/store.
|
|
16
16
|
5. **Состояние** — `createSlice` / `createAsyncThunk` (`store-rtk.mdc`); thunk → сервисы из `@/api`.
|
|
17
|
-
6. **UI** — типы из `@/types`, без DTO (`react-ui.mdc`, `architecture-boundaries.mdc`, `no-props-spread.mdc`).
|
|
17
|
+
6. **UI** — типы из `@/types`, без DTO (`react-ui.mdc`, `architecture-boundaries-ui.mdc`, `no-props-spread.mdc`).
|
|
18
18
|
7. **Моки** — по схеме репо; регистрация в `app/src/mocks/handlers.ts` (см. ниже).
|
|
19
19
|
8. **Тесты** — unit для мапперов (`tests-unit.mdc`); e2e по `*.cases.md` (`tests-e2e-structure.mdc`, `playwright-agents.mdc`).
|
|
20
20
|
9. **Завершение** — **`post-change-lint.mdc`**: `lint:js` + `lint:css` + `type-check`; менеджер — `package-manager.mdc`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Навигация в UI-компонентах — краткий ориентир (полный аудит стека — navigation-router-stack.mdc)
|
|
3
|
+
globs: app/src/ui/**/*.tsx
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Navigation in UI components
|
|
8
|
+
|
|
9
|
+
Перед ссылками, программной навигацией или работой с URL в UI:
|
|
10
|
+
|
|
11
|
+
1. **`package.json`** workspace приложения — `next` vs `react-router-dom`.
|
|
12
|
+
2. **Соседние импорты** той же фичи (`next/navigation`, `next/link` vs `react-router-dom`).
|
|
13
|
+
3. **Обёртки проекта** (`@/ui/...` Link) — предпочтительнее сырого API роутера.
|
|
14
|
+
4. **По умолчанию (preset):** Next.js App Router → `next/navigation` + `next/link` (`next-app-core.mdc`, `next-app-router.mdc`).
|
|
15
|
+
|
|
16
|
+
Полный аудит (дерево маршрутов, гибриды, lockfile): **`navigation-router-stack.mdc`** — при правках `app/src/app/**`.
|