auto-sync: 2026-05-15 01:50:01
This commit is contained in:
@@ -33,6 +33,7 @@ related:
|
||||
| Developer | Claude Code CLI | Пишет код, тесты, открывает PR |
|
||||
| Reviewer | Claude Code CLI | Проверяет код на соответствие ТЗ/ADR |
|
||||
| Tester | Claude Code CLI | Запускает e2e/регресс, оформляет отчёт |
|
||||
| Deployer | Claude Code CLI | Деплой в test/prod, smoke-тест, rollback |
|
||||
|
||||
## 3. Scope
|
||||
|
||||
@@ -41,13 +42,12 @@ related:
|
||||
- Claude Code CLI на mva154: установка, авторизация, headless mode
|
||||
- Gitea: репо Enduro Trails, branch protection, CI (Gitea Actions)
|
||||
- Plane: шаблоны Work Item, webhooks, лейблы, custom fields
|
||||
- Агенты: Architect, Developer, Reviewer, Tester (через Claude Code CLI)
|
||||
- Агенты: Architect, Developer, Reviewer, Tester, Deployer (через Claude Code CLI)
|
||||
- Quality Gates: QG-0 → QG-7 (полный конвейер)
|
||||
- Пилотный проект: Enduro Trails
|
||||
|
||||
### Вне скоупа (v1)
|
||||
- Designer-агент (UI-дизайн пока ручной)
|
||||
- Deployer-агент (деплой ручной или через простой CI)
|
||||
- Ephemeral preview-окружения
|
||||
- Visual regression / a11y тесты
|
||||
- Масштабирование на другие проекты
|
||||
@@ -150,7 +150,7 @@ related:
|
||||
4. **Разработка** — Claude Code CLI (код + unit-тесты + PR)
|
||||
5. **Code Review** — Claude Code CLI (другой запуск, проверка соответствия ТЗ/ADR)
|
||||
6. **Тестирование** — Claude Code CLI (e2e, регресс, отчёт)
|
||||
7. **Внедрение** — merge + deploy (CI или ручной)
|
||||
7. **Внедрение** — Claude Code CLI (merge, deploy, smoke-тест)
|
||||
|
||||
Пропущен на пилоте: Дизайн (UI-макеты пока ручные).
|
||||
|
||||
@@ -352,13 +352,18 @@ claude -p "Прочитай CLAUDE.md. Прочитай docs/work-items/<plane-i
|
||||
|
||||
**Цель:** всё готово для ручного запуска агентов.
|
||||
|
||||
- [ ] Node.js на mva154
|
||||
- [ ] Claude Code CLI установлен + авторизован через Max
|
||||
- [ ] Git repo Enduro Trails в Gitea (структура по канону)
|
||||
- [ ] Service account `claude-bot` в Gitea (PAT, без push в main)
|
||||
- [ ] CLAUDE.md в корне репо
|
||||
- [ ] Базовый CI (Gitea Actions: lint + build)
|
||||
- [ ] Branch protection на main (только через PR)
|
||||
**Фичи:**
|
||||
|
||||
| ID | Фича | Описание |
|
||||
|----|------|----------|
|
||||
| F0-1 | Установка Node.js | Установить Node.js LTS на mva154 (для Claude Code CLI) |
|
||||
| F0-2 | Установка Claude Code CLI | `npm install -g @anthropic-ai/claude-code`, авторизация через Max |
|
||||
| F0-3 | Git repo Enduro Trails | Создать репо в Gitea, структура по канону (src/, tests/, docs/, scripts/) |
|
||||
| F0-4 | Service account claude-bot | Создать пользователя в Gitea, PAT-токен, без права push в main |
|
||||
| F0-5 | CLAUDE.md | Паспорт проекта: стек, команды, конвенции, правила для агентов |
|
||||
| F0-6 | Gitea Actions CI | Workflow: lint + build + unit tests на каждый push/PR |
|
||||
| F0-7 | Branch protection | main: только через PR, require CI green, require 1 review |
|
||||
| F0-8 | System prompts агентов | `.openclaw/agents/{architect,developer,reviewer,tester,deployer}.md` |
|
||||
|
||||
**Критерий выхода:** `claude -p "Прочитай CLAUDE.md и выведи стек проекта"` — работает.
|
||||
|
||||
@@ -366,14 +371,20 @@ claude -p "Прочитай CLAUDE.md. Прочитай docs/work-items/<plane-i
|
||||
|
||||
**Цель:** убедиться что агенты справляются с задачами. Всё руками, без автоматизации.
|
||||
|
||||
- [ ] Стрим пишет ТЗ → коммитит в ветку
|
||||
- [ ] Слава ставит :approved: в Plane
|
||||
- [ ] Стрим вручную запускает Architect (ssh → `claude -p "..." --systemPrompt ...`)
|
||||
- [ ] Стрим вручную запускает Developer
|
||||
- [ ] CI проходит (lint + test + build)
|
||||
- [ ] Стрим вручную запускает Reviewer
|
||||
- [ ] Стрим вручную запускает Tester
|
||||
- [ ] PR мержится, деплой
|
||||
**Фичи:**
|
||||
|
||||
| ID | Фича | Описание |
|
||||
|----|------|----------|
|
||||
| F1-1 | Тестовая задача в Plane | Создать Feature в Plane, описать бизнес-требование |
|
||||
| F1-2 | BRD/ТЗ/AC | Стрим пишет артефакты анализа, коммитит в ветку |
|
||||
| F1-3 | Ручной запуск Architect | SSH на хост → `claude -p` с system prompt architect.md → ADR + требования |
|
||||
| F1-4 | Ручной запуск Developer | `claude -p` с developer.md → код + unit-тесты + PR |
|
||||
| F1-5 | CI прогон | Gitea Actions: lint + test + build на PR |
|
||||
| F1-6 | Ручной запуск Reviewer | `claude -p` с reviewer.md → review comments / approve |
|
||||
| F1-7 | Ручной запуск Tester | `claude -p` с tester.md → e2e тесты + test-report |
|
||||
| F1-8 | Ручной запуск Deployer | `claude -p` с deployer.md → merge PR, deploy, smoke-тест |
|
||||
| F1-9 | Merge и проверка | Проверка что deploy прошёл, smoke OK |
|
||||
| F1-10 | Ретроспектива | Оценка: справились ли агенты, где застряли, что доработать в промптах |
|
||||
|
||||
**Критерий выхода:** одна фича прошла полный цикл (Analyst → Architect → Developer → Reviewer → Tester → merge). Код рабочий, тесты зелёные.
|
||||
|
||||
@@ -381,13 +392,20 @@ claude -p "Прочитай CLAUDE.md. Прочитай docs/work-items/<plane-i
|
||||
|
||||
**Цель:** автоматизировать запуск агентов после CI/review событий.
|
||||
|
||||
- [ ] FastAPI скрипт в Docker (~500 строк)
|
||||
- [ ] Слушает webhooks от Gitea (push, PR opened, CI result, review submitted)
|
||||
- [ ] Автоматически запускает Reviewer после CI green
|
||||
- [ ] Автоматически запускает Tester после review approve
|
||||
- [ ] FIFO-очередь (один агент одновременно)
|
||||
- [ ] Lock по plane_id + stage (идемпотентность)
|
||||
- [ ] Журнал запусков (SQLite: when, agent, task, status, duration)
|
||||
**Фичи:**
|
||||
|
||||
| ID | Фича | Описание |
|
||||
|----|------|----------|
|
||||
| F2-1 | Orchestrator skeleton | FastAPI приложение, Docker-контейнер, healthcheck endpoint |
|
||||
| F2-2 | Gitea webhook receiver | Эндпоинт `/webhook/git`, парсинг событий push/PR/CI/review |
|
||||
| F2-3 | Agent launcher | Модуль запуска Claude Code CLI: subprocess, timeout, stdout capture |
|
||||
| F2-4 | Auto-Reviewer | При CI green на PR → автоматический запуск Reviewer |
|
||||
| F2-5 | Auto-Tester | При review approve → автоматический запуск Tester |
|
||||
| F2-5a | Auto-Deployer | При QG-6 green → автоматический запуск Deployer (merge + deploy + smoke) |
|
||||
| F2-6 | FIFO-очередь | Один агент одновременно, задачи в очереди по приоритету |
|
||||
| F2-7 | Идемпотентность | Lock по plane_id + stage, дедупликация webhook-событий (event_id) |
|
||||
| F2-8 | Журнал запусков | SQLite: timestamp, agent_role, plane_id, status, duration_sec, tokens_est |
|
||||
| F2-9 | Error handling | Retry ≤3 при crash/timeout, уведомление при исчерпании попыток |
|
||||
|
||||
**Критерий выхода:** после push в ветку — Reviewer и Tester запускаются автоматически без участия Стрим.
|
||||
|
||||
@@ -395,13 +413,19 @@ claude -p "Прочитай CLAUDE.md. Прочитай docs/work-items/<plane-i
|
||||
|
||||
**Цель:** Plane как единая витрина, approve через reactions.
|
||||
|
||||
- [ ] Webhooks Plane → Orchestrator
|
||||
- [ ] Автоматическое создание подзадач (7 шт) при новом Feature
|
||||
- [ ] Автоматическое создание ветки `feature/<id>-<slug>`
|
||||
- [ ] Reactions (:approved:) триггерят QG-переходы
|
||||
- [ ] Лейблы `stage:*` обновляются автоматически
|
||||
- [ ] Custom fields (qg_status, repo_branch, repo_pr) заполняются
|
||||
- [ ] Эскалация → уведомление Славе через Стрим
|
||||
**Фичи:**
|
||||
|
||||
| ID | Фича | Описание |
|
||||
|----|------|----------|
|
||||
| F3-1 | Plane webhook receiver | Эндпоинт `/webhook/plane`, парсинг событий work_item/comment |
|
||||
| F3-2 | QG-0: auto-bootstrap | При `work_item.created` → создать ветку + 7 подзадач + папку docs/ |
|
||||
| F3-3 | Reaction listener | Парсинг `:approved:` / `:rejected:` → триггер QG-перехода |
|
||||
| F3-4 | Auto-Architect | При :approved: на подзадаче «Анализ» → QG-1 → запуск Architect |
|
||||
| F3-5 | Stage labels | Автоматическое обновление `stage:*` лейблов при переходах |
|
||||
| F3-6 | Custom fields sync | Заполнение qg_status, repo_branch, repo_pr через Plane API |
|
||||
| F3-7 | Progress checklist | Обновление чек-боксов в description Feature при прохождении QG |
|
||||
| F3-8 | Эскалация | При 3x back-to или timeout → лейбл `escalation:*` + уведомление Славе |
|
||||
| F3-9 | Plane → Стрим notify | Уведомление Стрим (через OpenClaw) когда нужен approve или эскалация |
|
||||
|
||||
**Критерий выхода:** Слава создаёт Feature в Plane → ставит :approved: на ТЗ → дальше всё автоматически до "Готово, проверь".
|
||||
|
||||
@@ -409,13 +433,20 @@ claude -p "Прочитай CLAUDE.md. Прочитай docs/work-items/<plane-i
|
||||
|
||||
**Цель:** автономная работа с обратной связью и самовосстановлением.
|
||||
|
||||
- [ ] QG-0 → QG-7 полностью автоматические
|
||||
- [ ] Back-to: Reviewer → Dev (≤3 итерации), Tester → Dev, Architect → Analyst
|
||||
- [ ] Architect запускается автоматически после QG-1
|
||||
- [ ] Retry при ошибках CLI (rate limit, timeout) с exponential backoff
|
||||
- [ ] Метрики: lead time, cost per task, intervention rate
|
||||
- [ ] Дашборд в Plane (текущая работа, health, backlog)
|
||||
- [ ] Graceful degradation (если CLI недоступен — задача в очередь, не теряется)
|
||||
**Фичи:**
|
||||
|
||||
| ID | Фича | Описание |
|
||||
|----|------|----------|
|
||||
| F4-1 | Back-to: Reviewer→Dev | При request-changes → лейбл back-to:dev, перезапуск Developer (≤3) |
|
||||
| F4-2 | Back-to: Tester→Dev | При failed tests → issue в Plane, перезапуск Developer |
|
||||
| F4-3 | Back-to: Architect→Analyst | При противоречии в ТЗ → уведомление Стрим, ожидание правки |
|
||||
| F4-4 | Exponential backoff | При rate limit / timeout CLI → retry с 30s, 60s, 120s |
|
||||
| F4-5 | Метрики collection | Сбор: lead_time, tokens_spent, cost_usd, iterations_count |
|
||||
| F4-6 | Метрики в Plane | Обновление custom fields tokens_spent_usd, lead_time_hours |
|
||||
| F4-7 | Health dashboard | Plane View: blocked >24h, cost > threshold, back-to >2 |
|
||||
| F4-8 | Graceful degradation | CLI недоступен → задача в очередь (не теряется), алерт |
|
||||
| F4-9 | QG-override | Поддержка `:break-glass:` от Owner для аварийного обхода QG |
|
||||
| F4-10 | Audit log | Полный журнал: запуски, QG-вердикты, overrides, эскалации |
|
||||
|
||||
**Критерий выхода:** 5 фич подряд проходят конвейер без человеческого вмешательства (кроме постановки и финального approve).
|
||||
|
||||
@@ -423,14 +454,20 @@ claude -p "Прочитай CLAUDE.md. Прочитай docs/work-items/<plane-i
|
||||
|
||||
**Цель:** масштабирование и расширение возможностей.
|
||||
|
||||
- [ ] Designer-агент (Figma MCP или генерация макетов)
|
||||
- [ ] Deployer-агент (автоматический deploy в prod с canary)
|
||||
- [ ] Visual regression (Playwright screenshots + diff)
|
||||
- [ ] a11y тесты (axe-core)
|
||||
- [ ] Performance / security scan
|
||||
- [ ] Параллельные задачи (второй аккаунт Max или API)
|
||||
- [ ] Масштабирование на другие проекты (fr24-noisemap, snowbike-rag)
|
||||
- [ ] Plane MCP-сервер (вместо прямых API-вызовов)
|
||||
**Фичи:**
|
||||
|
||||
| ID | Фича | Описание |
|
||||
|----|------|----------|
|
||||
| F5-1 | Designer-агент | Генерация UI-макетов (Figma MCP или HTML/CSS прототипы) |
|
||||
| F5-2 | Deployer: canary + rollback | Расширенный deploy: canary %, авто-rollback при ошибках |
|
||||
| F5-3 | Visual regression | Playwright screenshots + pixel diff, порог допустимых отклонений |
|
||||
| F5-4 | a11y тесты | axe-core интеграция в Tester, блокирующие нарушения = fail |
|
||||
| F5-5 | Performance scan | Lighthouse CI, бюджет метрик (LCP, CLS, FID) |
|
||||
| F5-6 | Security scan | Dependency audit + SAST (semgrep), блокирующие findings = fail |
|
||||
| F5-7 | Параллельные задачи | Второй аккаунт Max или API-ключ, 2 агента одновременно |
|
||||
| F5-8 | Multi-project | Поддержка нескольких репо (fr24-noisemap, snowbike-rag) |
|
||||
| F5-9 | Plane MCP-сервер | Обёртка над Plane REST API как MCP-tools для агентов |
|
||||
| F5-10 | Ephemeral preview | Docker-based preview env на каждый PR, auto-cleanup |
|
||||
|
||||
**Критерий выхода:** система обслуживает 3+ проекта одновременно.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user