agentsclimarketplace

Orchestrator

Skill aleksandr-chaika/flutter-clean-arch-skills/skills/orchestrator

Complete Flutter development pipeline — Clean Architecture + BLoC + Maestro QE. Autonomous agents for PM, dev, review, testing

Install
npx -y skills add aleksandr-chaika/flutter-clean-arch-skills --skill orchestrator

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

FULLY AUTONOMOUS Flutter development pipeline orchestrator. Smart routing: PM analyzes -> creates targeted tasks -> Orchestrator executes only needed agents. Supports Asana task URLs. Includes QE verification via Maestro E2E tests. 7-phase flow: PM -> TodoWrite -> Execute -> Review -> Tests -> QE E2E -> Close.

SKILL.md

10.7 KB, as published. Nobody here has run it

Flutter Autonomous Development Orchestrator

CRITICAL: MANDATORY EXECUTION RULES

Orchestrator MUST execute ALL phases from PM plan. Skipping phases is FORBIDDEN.

  1. DO NOT ASK for confirmation to proceed
  2. DO NOT ASK for permission to create/edit files
  3. EXECUTE the pipeline automatically --- ALL STAGES are MANDATORY
  4. ONLY STOP if blocked by missing critical information
  5. NEVER SKIP review, tests, or QE verification

CORE FLOW

USER REQUEST -> PHASE 1: PM -> PHASE 2: TodoWrite -> PHASE 3: Execute ->
-> PHASE 4: Review -> PHASE 5: Tests -> PHASE 6: QE E2E -> PHASE 7: Close & Registry

PIPELINE STATUS TRACKING

BEFORE each agent call, update .tasks/.pipeline-status file via Bash:

mkdir -p .tasks
cat > .tasks/.pipeline-status << 'PSTATUS'
REQUEST=краткое описание запроса
PHASE=текущая фаза (PM|Execute|Review|Tests|QE|Close)
CURRENT_TASK=TASK-XXX
CURRENT_DESC=краткое описание задачи
CURRENT_AGENT=имя агента
PSTATUS

This file is read by Telegram notification hooks to provide context in messages.

Update this file EVERY TIME before invoking a new agent.


PHASE 1: PM ANALYSIS (ALWAYS FIRST)

Update pipeline status:

cat > .tasks/.pipeline-status << 'PSTATUS'
REQUEST=[user request summary]
PHASE=PM
CURRENT_TASK=
CURRENT_DESC=Анализ и декомпозиция задачи
CURRENT_AGENT=flutter-pm
PSTATUS

Invoke PM agent:

Task(subagent_type="flutter-pm", prompt="[user request + context]")

PM accepts:

  • Plain text requirements
  • Asana task URLs (PM uses Asana MCP to read them)
  • Multiple tasks (PM groups them into execution plan)

PM returns:

  • Registry lookup result (similar past tasks)
  • Task type (bug/feature/fix/refactor)
  • Numbered tasks with execution order
  • Required reviews and tests
  • Maestro test cases (for Flutter UI tasks)

If PM found similar past task:

Show to user: "Found similar task TASK-XXX. It was resolved by [resolution]."


PHASE 2: BUILD TODOWRITE FROM PM PLAN

Create TodoWrite checklist based on PM's plan (NOT a fixed template).

Example for FEATURE:

TodoWrite([
  { content: "PM Analysis", status: "completed" },
  { content: "Dev: flutter-dev -> TASK-050 (domain)", status: "pending" },
  { content: "Dev: flutter-dev -> TASK-051 (data)", status: "pending" },
  { content: "Dev: flutter-dev -> TASK-052 (presentation)", status: "pending" },
  { content: "Review: flutter-reviewer -> all changes", status: "pending" },
  { content: "Tests: flutter-tester -> full coverage", status: "pending" },
  { content: "QE: maestro-tester -> E2E verify", status: "pending" },
  { content: "Close: registry + report", status: "pending" }
])

Only include stages that PM specified.


PHASE 3: EXECUTE TASKS

For each task in PM's execution order:

  1. TodoWrite: mark task in_progress
  2. Update pipeline status (.tasks/.pipeline-status) with current TASK-ID, description, agent
  3. Read task file from .tasks/flutter/
  4. Invoke agent via Task tool:
Task(subagent_type="flutter-dev", prompt="Read and implement: .tasks/flutter/TASK-050-domain.md\n\n[task file content]")
  1. Collect agent result --- save status (SUCCESS/FAILURE), files changed, errors encountered
  2. Verify agent output (files exist, no errors)
  3. TodoWrite: mark task completed

PHASE 4: REVIEW (after dev tasks)

Update pipeline status, then invoke:

Task(subagent_type="flutter-reviewer", prompt="Review all Flutter changes for [task description]. Fix issues found.\n\nFiles changed:\n[file list]")

Reviewer FIXES issues, not just reports them. Max 3 review-fix cycles. Collect: issues found count, issues fixed count.


PHASE 5: TESTS --- MANDATORY

TESTS MANDATORY FOR ALL TASK TYPES. SKIPPING FORBIDDEN.
Task TypeTest Scope
featureFull: unit + BLoC + widget + flow tests
bugRegression test reproducing and verifying the fix
fixUnit test covering the changed behavior
refactorTests verifying no behavior change

Update pipeline status, then invoke:

Task(subagent_type="flutter-tester", prompt="Write tests for [task description]. Include flow tests for CRUD.\n\nTest scenarios from PM:\n[test scenarios]\n\nSource files:\n[file list]")

If tests fail -> fix and re-run (max 3 cycles). Collect: test count, pass/fail, coverage %.


PHASE 6: QE E2E VERIFICATION --- MANDATORY

QE MANDATORY FOR ALL FLUTTER UI TASKS. SKIPPING FORBIDDEN.

After unit/widget tests pass, verify user journeys via Maestro E2E tests.

Update pipeline status, then invoke:

Task(subagent_type="maestro-tester", prompt="QE E2E verification.\n\nMaestro test cases from PM:\n[paste test cases]\n\nVerify all test cases pass on emulator.")

If QE tests fail:

  1. UI bug -> send back to flutter-dev for fix
  2. Test issue -> maestro-tester self-fixes (up to 2 retries)
  3. Still failing -> report in final summary as PARTIAL

Skip QE if:

  • PM explicitly marks task as "no UI changes"
  • Task is pure domain/data refactor with no presentation changes

PHASE 7: CLOSE & UPDATE REGISTRY

  1. Verify all PM tasks completed
  2. Update .tasks/REGISTRY.md: status open -> done, fill Resolution column
  3. Update pipeline status: PHASE=Close
  4. Output final summary in Russian (MANDATORY FORMAT below)

MANDATORY FINAL OUTPUT FORMAT (Russian)

## Задача выполнена

### Запрос
[оригинальный запрос пользователя]

### Источник
[Asana URL / прямой запрос]

### Тип
[bug | feature | fix | refactor]

---

### Реестр задач
- Созданные задачи: TASK-050, TASK-051, TASK-052
- Похожие задачи в истории: [TASK-XXX / не найдено]
- **Статус реестра: ОБНОВЛЁН** (все задачи закрыты)

---

### Выполненная работа

| # | Задача | Агент | Статус | Что сделано |
|---|--------|-------|--------|-------------|
| 1 | TASK-050 | flutter-dev | ВЫПОЛНЕНО | Создан домен: entities, use cases |
| 2 | TASK-051 | flutter-dev | ВЫПОЛНЕНО | Создан data layer: repo, API |
| 3 | TASK-052 | flutter-dev | ВЫПОЛНЕНО | Создан UI: BLoC, экраны, виджеты |

---

### Код-ревью

| Ревьюер | Статус | Найдено проблем | Исправлено |
|---------|--------|----------------|------------|
| flutter-reviewer | ВЫПОЛНЕНО | 3 | 3 |

---

### Тестирование

| Тестер | Статус | Кол-во тестов | Покрытие | Результат |
|--------|--------|--------------|----------|-----------|
| flutter-tester | ВЫПОЛНЕНО | 18 | 85% | ВСЕ ПРОЙДЕНЫ |

---

### QE E2E (Maestro)

| Статус | Всего TC | Пройдено | Провалено |
|--------|----------|----------|-----------|
| ВЫПОЛНЕНО | 5 | 5 | 0 |

---

### Ошибки и проблемы

- [Список ошибок, которые возникли в процессе работы]
- [Как каждая ошибка была решена]
- [Если ошибок не было: "Ошибок не обнаружено"]

---

### Изменённые файлы

| Файл | Действие | Описание |
|------|----------|----------|
| lib/features/auth/domain/ | создан | Entities, use cases |
| lib/features/auth/data/ | создан | Repository, API models |
| lib/features/auth/presentation/ | создан | BLoC, экраны |
| test/features/auth/ | создан | 18 тестов |

---

### Итог
- Все задачи: ВЫПОЛНЕНЫ / ЧАСТИЧНО / С ОШИБКАМИ
- Реестр: ОБНОВЛЁН
- Тесты: ПРОЙДЕНЫ
- QE E2E: ПРОЙДЕНЫ / Н/Д

IMPORTANT: Fill in ACTUAL data from each agent's results, not placeholders. All text MUST be in Russian. Use data collected during phases 3-6.


SMART ROUTING EXAMPLES

Bug: PM -> flutter-dev (fix) -> flutter-reviewer -> flutter-tester -> maestro-tester -> registry Feature: PM -> flutter-dev (domain) -> flutter-dev (data) -> flutter-dev (UI) -> flutter-reviewer -> flutter-tester -> maestro-tester -> registry Fix: PM -> flutter-dev (fix) -> flutter-reviewer -> flutter-tester -> maestro-tester -> registry Refactor (no UI): PM -> flutter-dev -> flutter-reviewer -> flutter-tester -> registry (no QE)


Autonomy Rules

DO Automatically:

  • Start with PM (registry lookup + task classification)
  • Parse Asana URLs via PM
  • Build TodoWrite from PM's plan
  • Execute only agents PM specified
  • Update .tasks/.pipeline-status before EVERY agent call
  • Run reviews after dev work
  • Run tests ALWAYS
  • Run QE E2E when Flutter UI tasks exist
  • Update registry after completion
  • Output final summary in Russian

ONLY Ask If:

  • PM flagged ambiguity
  • Critical security decision
  • Conflicting requirements
  • Asana task has no description

NEVER Skip:

  • PM analysis phase
  • Registry lookup
  • Pipeline status updates
  • Code review after development
  • Tests after development
  • QE E2E after Flutter UI development
  • Registry update after completion
  • Russian final summary output

Error Handling

Build Errors

flutter clean && flutter pub get
flutter pub run build_runner build --delete-conflicting-outputs

Test Errors

  1. Read error message carefully
  2. Check if mock is missing
  3. Verify test setup
  4. Fix and re-run

Unresolvable Issues

If stuck after 3 iterations:

## Заблокировано: [Проблема]

**Попытки исправления:**
1. Попытка 1 --- результат
2. Попытка 2 --- результат
3. Попытка 3 --- результат

**Требуется решение пользователя:**
- Вопрос или решение

Quality Gates

ЭтапПроверкаКритерий
DEVELOPBuildflutter build succeeds
REVIEWCriticalZero [CRITICAL] issues
TESTPassAll tests pass
TESTCoverage>80% on new code
QE E2EPassAll Maestro flows pass
QE E2EScreenshotsScreenshots captured at key points

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.