@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.
Files changed (62) hide show
  1. package/CONTRIBUTING.md +102 -0
  2. package/README.md +2 -0
  3. package/bin/cli.js +4 -2
  4. package/fragments/BUGBOT.md +23 -0
  5. package/package.json +10 -2
  6. package/presets/claude/next/BUGBOT.md +16 -0
  7. package/presets/claude/next/CLAUDE.md +5 -1
  8. package/presets/claude/next/agents/README.md +16 -15
  9. package/presets/claude/next/agents/code-reviewer.md +1 -1
  10. package/presets/claude/next/agents/playwright-test-generator.md +16 -65
  11. package/presets/claude/next/agents/playwright-test-healer.md +16 -51
  12. package/presets/claude/next/agents/playwright-test-planner.md +15 -55
  13. package/presets/claude/next/agents/task-analyst.md +1 -1
  14. package/presets/claude/next/agents/task-router.md +24 -0
  15. package/presets/claude/next/agents/tech-writer.md +1 -1
  16. package/presets/claude/next/hooks.json +17 -0
  17. package/presets/claude/next/rules/README.md +6 -2
  18. package/presets/claude/next/rules/architecture/README.md +2 -1
  19. package/presets/claude/next/rules/architecture/architecture-boundaries-ui.md +15 -0
  20. package/presets/claude/next/rules/architecture/architecture-boundaries.md +4 -1
  21. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +1 -1
  22. package/presets/claude/next/rules/architecture/layer-barrel-exports.md +1 -1
  23. package/presets/claude/next/rules/stack/README.md +2 -1
  24. package/presets/claude/next/rules/stack/navigation-router-ui.md +15 -0
  25. package/presets/claude/next/rules/stack/navigation-router.md +2 -1
  26. package/presets/claude/next/rules/stack/next-app-core.md +1 -1
  27. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +6 -0
  28. package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +22 -59
  29. package/presets/claude/next/rules/ui-and-accessibility/README.md +1 -2
  30. package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +4 -3
  31. package/presets/claude/next/team/README.md +1 -0
  32. package/presets/claude/next/team/fixtures/bugfix-standard.json +15 -0
  33. package/presets/claude/next/team/fixtures/feature-full.json +16 -0
  34. package/presets/claude/next/team/fixtures/feature-light.json +17 -0
  35. package/presets/cursor/next/AGENTS.md +2 -9
  36. package/presets/cursor/next/BUGBOT.md +2 -0
  37. package/presets/cursor/next/agents/README.md +16 -15
  38. package/presets/cursor/next/agents/code-reviewer.md +1 -1
  39. package/presets/cursor/next/agents/task-analyst.md +1 -1
  40. package/presets/cursor/next/agents/task-router.md +24 -0
  41. package/presets/cursor/next/agents/tech-writer.md +1 -1
  42. package/presets/cursor/next/rules/README.md +21 -1
  43. package/presets/cursor/next/rules/architecture-boundaries-ui.mdc +15 -0
  44. package/presets/cursor/next/rules/architecture-boundaries.mdc +1 -1
  45. package/presets/cursor/next/rules/code-review-mr.mdc +20 -46
  46. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +1 -1
  47. package/presets/cursor/next/rules/layer-barrel-exports.mdc +1 -1
  48. package/presets/cursor/next/rules/navigation-router-stack.mdc +1 -1
  49. package/presets/cursor/next/rules/navigation-router-ui.mdc +16 -0
  50. package/presets/cursor/next/rules/next-app-core.mdc +1 -1
  51. package/presets/cursor/next/rules/no-cross-component-styles-import.mdc +3 -53
  52. package/presets/cursor/next/rules/react-ui.mdc +4 -3
  53. package/presets/cursor/next/team/README.md +1 -0
  54. package/presets/cursor/next/team/fixtures/bugfix-standard.json +15 -0
  55. package/presets/cursor/next/team/fixtures/feature-full.json +16 -0
  56. package/presets/cursor/next/team/fixtures/feature-light.json +17 -0
  57. package/scripts/README.md +84 -0
  58. package/scripts/golden-prompts.json +276 -0
  59. package/scripts/preset-manifest.json +72 -0
  60. package/scripts/regression-results/.gitkeep +0 -0
  61. package/scripts/validate-preset.sh +484 -0
  62. 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`.
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  paths:
3
- - app/src/**/*
3
+ - app/src/api/**/*
4
+ - app/src/store/**/*
5
+ - app/src/types/**/*
6
+ - app/src/lib/**/*
4
7
  ---
5
8
 
6
9
  # Границы между слоями
@@ -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`**.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  paths:
3
- - app/src/**/*
3
+ - app/src/**/index.ts
4
4
  ---
5
5
 
6
6
  # Barrel-экспорты слоёв с public API
@@ -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` | Next vs React Router — выбор по репозиторию | session start |
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/**`.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  paths:
3
- - app/src/ui/**/*
3
+ - app/src/app/**/*
4
+ - app/**/app/**/*
4
5
  ---
5
6
 
6
7
  # Навигация и роутинг: сначала стек проекта
@@ -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,3 +1,9 @@
1
+ ---
2
+ paths:
3
+ - .claude/commands/**/*
4
+ - .claude/team/**/*
5
+ ---
6
+
1
7
  # Agent team orchestrator
2
8
 
3
9
  Parent agent = **manager**. Router plans; specialists execute. Artifacts: `.claude/team/tasks/<slug>/`.
@@ -1,67 +1,30 @@
1
- # Code review merge requests
2
-
3
- ## Когда применять
4
-
5
- - Пользователь просит: «проведи ревью», «оценить MR/ветку/дифф», «посмотри изменения».
6
- - Опираться на локальный репозиторий: текущую ветку, `git diff` и открытые файлы, а не на данные внешнего API хостинга.
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
- **`tooling-and-review/post-change-lint.md`**:
12
+ ## Checklist references
48
13
 
49
- - Перед финализацией отчёта по ревью и после любых правок по итогам ревью: полный прогон **`lint:js`** и **`lint:css`** из `app/`.
50
- - В отчёт включить **все сообщения ESLint и Stylelint (errors и warnings)** по файлам из диффа MR/ветки; запуск — по всему проекту, **фильтрация вывода — к путям из `git diff`**.
51
- - Не считать ревью/правки завершёнными, пока линтеры не проходят или не зафиксирован блокер в ответе.
52
- - Полная валидация как в CI: **`lint`** (= `lint:js` + `lint:css` + `type-check`) — уместна перед итогом крупного MR.
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
- - Фокус на **изменениях MR** (дифф относительно целевой ветки), а не на всём проекте.
57
- - Сначала **высокоуровневый обзор** (что делает MR, риски, архитектурные замечания), затем список конкретных комментариев.
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
- - Не придумывать несуществующие метаданные из хостинга (лейблы MR, авторов, статусы CI), если их нет в локальных данных.
66
- - Не менять общую архитектуру фичи без прямого запроса пользователя.
67
- - Следовать принципу «boy scout rule»: предлагать улучшения, которые реально можно внести в рамках MR.
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
- | `component-styles.md` | Колокация стилей, `Root` | session start |
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` — только стили этого подкомпонента (см. `ui-and-accessibility/component-styles.md`: не тянуть `styles` соседних компонентов);
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-элемент компонента в соседнем `styles` — **`Root`** (`<s.Root>`). Подробнее: `ui-and-accessibility/component-styles.md`.
62
- - Порядок объявлений в CSS / `styled` как требует Stylelint: см. `ui-and-accessibility/css-property-order.md`.
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‑стилей, кроме простых случаев;
@@ -7,6 +7,7 @@
7
7
  ```
8
8
  .claude/team/
9
9
  active-task.json
10
+ fixtures/ # pipeline profile examples (feature-full, feature-light, bugfix-standard)
10
11
  tasks/
11
12
  <slug>/
12
13
  pipeline.json
@@ -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
- ## Intent → pipeline (кратко)
26
+ ## Pipeline routing
27
27
 
28
- | intent | Типичный pipeline |
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
- ## Intent → pipeline (кратко)
64
-
65
- | intent | Типичный pipeline |
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: inherit
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: inherit
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: inherit
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` | Границы UI / store / API, импорты (`@/types`, `@/api`), порты‑адаптеры, фича как срез |
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`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Архитектурные границы и правила импортов
3
- globs: app/src/**/*
3
+ globs: app/src/api/**/*,app/src/store/**/*,app/src/types/**/*,app/src/lib/**/*
4
4
  alwaysApply: false
5
5
  ---
6
6
 
@@ -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`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Двухуровневые barrel-экспорты для слоёв с регламентированным public API
3
- globs: app/src/**/*
3
+ globs: app/src/**/index.ts
4
4
  alwaysApply: false
5
5
  ---
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Выбор API навигации по стеку проекта (Next.js vs React Router)
3
- globs: app/src/ui/**/*
3
+ globs: app/src/app/**/*,app/**/app/**/*
4
4
  alwaysApply: false
5
5
  ---
6
6
 
@@ -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/**`.