| name | orchestrator |
| description | Оркестратор субагентов для анализа данных и кода. Паттерн "менеджер + работники" — агент-аналитик данных + агент-аналитик кода работают параллельно, менеджер собирает результаты и формирует ТЗ. Используй когда нужно проанализировать файл данных (CSV, XML, JSON, Excel) и одновременно найти точки входа в коде, а затем получить готовое техническое задание на доработку. |
| allowed-tools | Agent, Read, AskUserQuestion |
| argument-hint | [путь_к_файлу_данных] [модуль_или_обработка] |
Оркестратор: анализ данных + анализ кода -> ТЗ
Скилл для параллельного анализа файлов данных и исходного кода с автоматическим формированием технического задания.
Когда использовать
- Нужно загрузить/обработать файл данных (CSV, XML, JSON, Excel, DBF) в программе
- Нужно понять структуру входных данных И найти где в коде их обрабатывать
- Нужно сформировать ТЗ на доработку обработки/загрузки/выгрузки
- Задача затрагивает и данные и код одновременно
Когда НЕ использовать
- Задача только про код без внешних данных — используй обычный анализ
- Задача только про данные без изменений в коде — просто проанализируй файл
- Простая правка в одном месте — субагенты избыточны
Архитектура
МЕНЕДЖЕР (ты)
|
|-- параллельно --> СУБАГЕНТ 1: Аналитик данных
| СУБАГЕНТ 2: Аналитик кода
|
|<-- результаты --
|
+--> СИНТЕЗ --> ТЗ --> пользователь
Протокол работы
Шаг 0: Получить задачу
Извлеки из описания пользователя (или из $ARGUMENTS):
| Параметр | Что выяснить | Пример |
|---|
| Файл данных | Путь к файлу с данными | /data/prices.csv |
| Код/модуль | Где искать точки входа | Обработка ЗагрузкаЦен, модуль РаботаСФайлами |
| Цель | Что нужно получить в итоге | Загрузить цены в справочник Номенклатура |
| Ограничения | Особые требования | Не трогать существующие цены, только добавлять новые |
Если чего-то не хватает — спросить пользователя через AskUserQuestion до запуска субагентов.
Шаг 1: Запустить субагентов параллельно
Запустить оба субагента одновременно через инструмент Agent (два вызова Agent в одном сообщении).
Субагент 1: Аналитик данных
Используй subagent_type: "general-purpose". Задание:
Проанализируй файл данных: {путь_к_файлу}
Контекст задачи: {цель пользователя}
Выполни анализ и верни результат строго в следующем формате:
## Структура файла
- Формат: (CSV/XML/JSON/Excel/DBF)
- Кодировка: (UTF-8/Windows-1251/CP866/...)
- Разделитель: (для CSV — запятая, точка с запятой, табуляция)
- Количество записей: N
- Размер файла: N КБ/МБ
## Колонки/поля
| # | Имя поля | Тип данных | Пример значения | Пустых значений | Примечание |
|---|----------|-----------|-----------------|-----------------|------------|
| 1 | ... | ... | ... | N из M | ... |
## Особенности данных
- Уникальные ключи: какие поля могут служить идентификатором
- Связи: какие поля ссылаются на внешние справочники
- Аномалии: дубликаты, пустые обязательные поля, некорректные форматы
- Диапазоны: мин/макс значений числовых и дат
## Готовность к загрузке
- Что нужно преобразовать (формат дат, разделители, кодировка)
- Какие поля нужно маппить на справочники
- Потенциальные проблемы при загрузке
Субагент 2: Аналитик кода
Используй subagent_type: "Explore". Задание:
Проанализируй код для задачи: {цель пользователя}
Где искать: {модуль/обработка/файл}
Выполни анализ и верни результат строго в следующем формате:
## Точки входа
Для каждой точки входа:
- Файл и строка: путь:номер_строки
- Сигнатура: первая строка функции/процедуры
- Назначение: одна фраза что делает
## Цепочки вызовов
От каждой точки входа — вглубь:
- функция1 -> функция2 -> функция3
- с указанием файлов и строк
## Модели данных
- Какие структуры/объекты/таблицы задействованы
- Поля и типы
- Связи между объектами
## Текущая логика обработки
- Как сейчас работает загрузка/обработка (если есть)
- Какие проверки выполняются
- Как обрабатываются ошибки
## Точки расширения
- Где именно нужно вносить изменения
- Какие функции затрагиваются
- Какие зависимости нужно учесть
Шаг 2: Собрать результаты
Дождаться завершения обоих субагентов. Прочитать оба отчёта.
Шаг 3: Синтезировать ТЗ
На основе обоих отчётов сформировать техническое задание:
# Техническое задание: {название задачи}
## Исходные данные
### Файл данных
{Краткая выжимка из отчёта Субагента 1}
- формат, объём, ключевые поля
- особенности и аномалии
### Текущий код
{Краткая выжимка из отчёта Субагента 2}
- точки входа
- текущая логика
## Маппинг: данные -> код
| Поле в файле | Куда загружается | Преобразование | Примечание |
|-------------|------------------|----------------|------------|
| ... | ... | ... | ... |
## Что нужно сделать
### Изменения в коде
Для каждого изменения:
1. **Где**: файл:строка, функция
2. **Что**: описание изменения
3. **Почему**: зачем это нужно
4. **Зависимости**: от чего зависит это изменение
### Новый код (если нужен)
- Какие новые функции/модули создать
- Что они должны делать
### Порядок реализации
1. Фаза 1: ...
2. Фаза 2: ...
## Проверка
- Как убедиться что всё работает
- Тестовые сценарии
- Граничные случаи
## Риски и ограничения
- Что может пойти не так
- На что обратить внимание
Шаг 4: Показать пользователю
Показать готовое ТЗ и спросить:
- Всё ли учтено?
- Нужно ли что-то добавить/убрать?
- Можно ли приступать к реализации?
Не начинать реализацию без одобрения пользователя.
Правила менеджера
- Не делать работу субагентов — менеджер только координирует и синтезирует
- Параллельность — всё что можно запустить одновременно, запускать одновременно
- Только факты — в ТЗ только то что нашли субагенты, никаких домыслов
- Спрашивать — если данных недостаточно, спросить пользователя
- Минимальное ТЗ — описывать только необходимые изменения, без "заодно улучшим"
- Полные отчёты субагентов — сохранять оригинальные отчёты, не терять детали при синтезе