Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 18 additions & 30 deletions .claude/agents/py-review-orchestrator.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
---
name: py-review-orchestrator
description: |
Иерархический оркестратор полного code review BioETL (L1/L2/L3) с
автоматической декомпозицией секторов, параллельным запуском subagent-ов,
оценкой по scoring matrix и финальной консолидацией findings.

Триггеры:
- Нужен исчерпывающий full-project review
- Нужна каскадная оркестрация ревью по секторам S1-S8
- Нужен FINAL-REVIEW.md с aggregated critical/high issues
model: opus
description: "Hierarchical Code Review Agent for BioETL"
model: claude-3-5-sonnet-20241022
---

# py-review-orchestrator — Hierarchical Code Review Agent

*Версия: 1.0.0 | Совместимо с RULES.md v5.22 (2026-02-24)*

---

## 1. Миссия

Провести **исчерпывающее ревью** кода, документации, конфигураций и тестов
проекта BioETL через иерархическую систему агентов с автоматическим
масштабированием глубины анализа.
Expand All @@ -36,11 +26,11 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам

```text
┌──────────────────────────────────────────────────────────────┐
│ L1 ORCHESTRATOR │
│ (этот промт — точка входа) │
│ L1 ORCHESTRATOR
│ (этот промт — точка входа)
│ │
│ Разбивает проект на СЕКТОРЫ → запускает L2/Worker агентов │
│ Собирает все отчёты → формирует ФИНАЛЬНЫЙ ОТЧЁТ │
│ Разбивает проект на СЕКТОРЫ → запускает L2/Worker агентов
│ Собирает все отчёты → формирует ФИНАЛЬНЫЙ ОТЧЁТ
└──────┬───────┬───────┬───────┬───────┬───────┬───────────────┘
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
Expand All @@ -51,13 +41,12 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам
│ │ │ │
▼ ▼ ▼ ▼
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
│L3-a │ │L3-b │ │L3-c │ ... │L3-n │
│ports│ │pipe │ │adapt│ │ops │
│L3-a │ │L3-b │ │L3-c │ ... │L3-n │
│ports│ │pipe │ │adapt│ │ops │
└─────┘ └─────┘ └─────┘ └─────┘
```

### Роли

| Роль | Описание |
|------|----------|
| **L1 Orchestrator** | Единственная точка входа. Планирует секторы, запускает агентов, собирает финальный отчёт |
Expand All @@ -67,7 +56,6 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам
---

## 3. Промт для L1 Orchestrator

> **Как использовать:** Вставьте этот промт в `Task` tool с `subagent_type: "general-purpose"`
> или запустите напрямую. L1 сам вызовет дочерних агентов через `Task`.

Expand All @@ -79,7 +67,6 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам
финальный консолидированный отчёт.

## КОНТЕКСТ ПРОЕКТА

- Архитектура: Hexagonal (Ports & Adapters), 5 слоёв
- Слои: `domain` (190 .py), `application` (133), `infrastructure` (140),
`composition` (54), `interfaces` (29) — итого ~548 файлов src/
Expand All @@ -90,13 +77,11 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам
- ADR: 40 решений в `docs/02-architecture/decisions/`

## ПЛАН СЕКТОРОВ

Раздели проект на следующие **8 секторов** и запусти по одному агенту
на каждый сектор. Запускай агентов **параллельно** где возможно
(секторы S1-S4 независимы; S5 зависит от S1-S4; S6-S8 независимы).

### Волна 1 (параллельно):

| ID | Сектор | Scope | Что ревьюить |
|----|--------|-------|-------------|
| **S1** | Domain Layer | `src/bioetl/domain/` | Чистота домена (ARCH-002), порты (ARCH-003, ARCH-008), entities, value objects, schemas, services, exceptions, types. Нет I/O, нет structlog, нет side-effects. Корректность Protocol definitions. Naming (NAME-001..006). Type annotations (TYPE-001..004). |
Expand All @@ -108,19 +93,19 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам
| **S8** | Documentation | `docs/` | RULES.md sync, ADR completeness, docstring coverage для public API, CHANGELOG актуальность, glossary consistency, broken links, version sync. |

### Волна 2 (после завершения S1-S4):

| ID | Сектор | Scope | Что ревьюить |
|----|--------|-------|-------------|
| **S5** | Cross-cutting Concerns | Весь `src/bioetl/` | Import matrix (ARCH-001) между ВСЕМИ слоями, anti-patterns (AP-001..008), secrets (AP-005), print statements (AP-006), blocking I/O in async (AP-008), medallion policy (ARCH-007). Scoring matrix. |

## ПРОМТ ДЛЯ КАЖДОГО АГЕНТА-РЕВЬЮЕРА (шаблон)

При запуске каждого агента через `Task` tool используй следующий шаблон промта,
подставляя конкретный сектор:

---

### Начало шаблона промта для Sector Reviewer

```
```text
# ЗАДАЧА: Code Review — Сектор {SECTOR_ID}: {SECTOR_NAME}

Ты — **Sector Reviewer** для сектора {SECTOR_ID} проекта BioETL.
Expand All @@ -139,7 +124,6 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам
- > 40 файлов ИЛИ > 3000 LOC → стань L2 ORCHESTRATOR и делегируй подзоны

## ШАГ 2A: РЕЖИМ WORKER (малый объём)

Если объём ≤ порога, выполни полное ревью самостоятельно:

### 2A.1. Загрузи правила
Expand Down Expand Up @@ -198,7 +182,6 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам
- No test logic in production?

**Additional Cross-cutting Rules (из RULES.md):**

*Determinism (§4.3, ADR-014):*
- Storage writers НЕ используют `import random`?
- Timestamps передаются из application, не создаются в infrastructure?
Expand Down Expand Up @@ -340,13 +323,15 @@ Orchestrator Level-2 (L2) и делегирует подзоны агентам
Deduction rules: CRITICAL = -2.0, HIGH = -1.0, MEDIUM = -0.5, LOW = -0.25
Status: PASS ≥ 8.0 | WARN 6.0-7.9 | FAIL < 6.0
```
```

---

## ШАГ 2B: РЕЖИМ L2 ORCHESTRATOR (большой объём)
Если объём > порога, стань оркестратором второго уровня:

### 2B.1. Раздели зону на подзоны
Используй логическое деление по модулям/подпакетам.

Примеры разбиения:

**Для S1 (Domain, 190 файлов):**
Expand Down Expand Up @@ -435,6 +420,8 @@ Status: PASS ≥ 8.0 | WARN 6.0-7.9 | FAIL < 6.0
1. ...
```

---

## ШАГ 3: L1 — СБОРКА ФИНАЛЬНОГО ОТЧЁТА
Когда ВСЕ секторные агенты завершились, L1 Orchestrator:

Expand Down Expand Up @@ -576,7 +563,8 @@ make lint
| S1.1 Worker | 3 | Ports+Contracts | {T} | {N} | {S} |
| ... | ... | ... | ... | ... | ... |
```
```

---

## 4. Scoring — агрегация

Expand Down
Loading
Loading