workflow-ai 1.0.40 → 1.0.42

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 (43) hide show
  1. package/agent-templates/CLAUDE.md.tpl +10 -1
  2. package/agent-templates/QWEN.md.tpl +18 -1
  3. package/package.json +3 -1
  4. package/src/cli.mjs +79 -1
  5. package/src/global-dir.mjs +90 -0
  6. package/src/init.mjs +23 -36
  7. package/src/junction-manager.mjs +188 -0
  8. package/src/runner.mjs +26 -7
  9. package/src/scripts/archive-plan-tickets.js +0 -102
  10. package/src/scripts/check-anomalies.js +0 -161
  11. package/src/scripts/check-conditions.js +0 -254
  12. package/src/scripts/check-plan-decomposed.js +0 -179
  13. package/src/scripts/move-ticket.js +0 -228
  14. package/src/scripts/move-to-ready.js +0 -115
  15. package/src/scripts/move-to-review.js +0 -96
  16. package/src/scripts/pick-next-task.js +0 -723
  17. package/src/skills/analyze-report/SKILL.md +0 -110
  18. package/src/skills/check-relevance/SKILL.md +0 -236
  19. package/src/skills/coach/README.md +0 -100
  20. package/src/skills/coach/SKILL.md +0 -109
  21. package/src/skills/coach/algorithms/gap-analysis.md +0 -69
  22. package/src/skills/coach/algorithms/improvement-prioritization.md +0 -62
  23. package/src/skills/coach/algorithms/skill-scoring.md +0 -79
  24. package/src/skills/coach/knowledge/backlog-management.md +0 -71
  25. package/src/skills/coach/knowledge/common-antipatterns.md +0 -56
  26. package/src/skills/coach/knowledge/prompt-engineering.md +0 -86
  27. package/src/skills/coach/knowledge/skill-anatomy.md +0 -71
  28. package/src/skills/coach/templates/audit-report.md +0 -54
  29. package/src/skills/coach/templates/coach-backlog-init.yaml +0 -10
  30. package/src/skills/coach/templates/improvement-plan.md +0 -54
  31. package/src/skills/coach/templates/new-skill.md +0 -137
  32. package/src/skills/coach/workflows/analyze.md +0 -73
  33. package/src/skills/coach/workflows/audit.md +0 -68
  34. package/src/skills/coach/workflows/create.md +0 -66
  35. package/src/skills/coach/workflows/improve.md +0 -70
  36. package/src/skills/coach/workflows/research.md +0 -55
  37. package/src/skills/coach/workflows/review.md +0 -74
  38. package/src/skills/create-plan/SKILL.md +0 -98
  39. package/src/skills/create-report/SKILL.md +0 -156
  40. package/src/skills/decompose-gaps/SKILL.md +0 -161
  41. package/src/skills/decompose-plan/SKILL.md +0 -168
  42. package/src/skills/execute-task/SKILL.md +0 -161
  43. package/src/skills/review-result/SKILL.md +0 -285
@@ -1,156 +0,0 @@
1
- ---
2
- name: create-report
3
- description: Сформировать отчёт о выполненных задачах. Используй по завершении итерации для документирования прогресса. Собирает информацию из done/ тикетов и создаёт отчёт в .workflow/reports/.
4
- ---
5
-
6
- # Создание отчёта
7
-
8
- Этот skill формирует отчёт о выполненных задачах на основе завершённых тикетов.
9
-
10
- ## Когда использовать
11
-
12
- - Завершилась итерация работ
13
- - Накопились выполненные задачи в done/
14
- - Нужно зафиксировать прогресс
15
- - Перед принятием решений о следующих шагах
16
-
17
- ## Шаги выполнения
18
-
19
- ### 1. Собрать информацию
20
-
21
- Прочитать все тикеты из:
22
- - `.workflow/tickets/done/` — выполненные
23
- - `.workflow/tickets/blocked/` — заблокированные
24
- - `.workflow/tickets/in-progress/` — в работе
25
-
26
- ### 1.5. Проверка аномалий: in-progress тикеты с заполненным результатом
27
-
28
- **Важно:** Перед формированием отчёта проверить in-progress тикеты на наличие заполненных результатов.
29
-
30
- **Автоматическая проверка (рекомендуется):**
31
-
32
- Использовать скрипт `.workflow/src/scripts/check-anomalies.js`:
33
-
34
- ```bash
35
- node .workflow/src/scripts/check-anomalies.js
36
- ```
37
-
38
- Скрипт выводит результат в формате:
39
- ```
40
- ---RESULT---
41
- status: ok|anomalies_found|error
42
- anomalies_count: N
43
- anomalies: [{"id": "IMPL-001", "title": "...", "recommendation": "..."}]
44
- ---RESULT---
45
- ```
46
-
47
- **Ручная проверка (если скрипт недоступен):**
48
-
49
- Для каждого тикета в `.workflow/tickets/in-progress/`:
50
- 1. Прочитать содержимое файла
51
- 2. Найти раздел `## Результат выполнения` (или `## Result`)
52
- 3. Проверить подраздел `### Summary` (или `### Что сделано`)
53
- 4. Если подраздел содержит непустой текст (не только `<!-- ... -->` комментарии) — это аномалия
54
-
55
- **Критерии заполнения:**
56
- - Раздел содержит текст, отличный от шаблонов `<!-- ... -->`
57
- - Есть конкретное описание выполненной работы
58
- - Указаны изменённые файлы или конкретные результаты
59
-
60
- **Действия при обнаружении аномалии:**
61
- - Добавить тикет в секцию "Аномалии" отчёта
62
- - Указать рекомендацию: "Проверьте тикет и переместите в done/ или review/ если выполнен"
63
-
64
- ### 2. Определить период
65
-
66
- ```
67
- Период: от последнего отчёта до сейчас
68
-
69
- Если отчётов нет — от создания первого тикета
70
- ```
71
-
72
- ### 3. Для каждой выполненной задачи
73
-
74
- Извлечь:
75
- - ID и название
76
- - Время выполнения (created_at → completed_at)
77
- - Результат (из секции Result)
78
- - Проблемы (если были)
79
-
80
- ### 4. Сформировать статистику
81
-
82
- ```
83
- Выполнено: N задач
84
- В работе: M задач
85
- Заблокировано: K задач
86
- В очереди: L задач
87
-
88
- По типам:
89
- - IMPL: X
90
- - FIX: Y
91
- - DOCS: Z
92
- ```
93
-
94
- ### 5. Выделить проблемы и аномалии
95
-
96
- **Проблемы:**
97
-
98
- Для каждой заблокированной задачи:
99
- - Причина блокировки
100
- - Как разблокировать
101
-
102
- Для задач с problems:
103
- - Описание проблемы
104
- - Как была решена
105
-
106
- **Аномалии:**
107
-
108
- Если на шаге 1.5 найдены in-progress тикеты с заполненным результатом:
109
- - Создать подсекцию "Аномалии"
110
- - Для каждого тикета указать:
111
- - ID и название
112
- - Рекомендацию: "Проверьте тикет и переместите в done/ или review/ если выполнен"
113
-
114
- ### 6. Связать с планом
115
-
116
- Если есть активный план:
117
- - Какой процент выполнен
118
- - Какие задачи из плана закрыты
119
- - Что осталось
120
-
121
- ### 7. Сохранить отчёт
122
-
123
- 1. Прочитай шаблон: `.workflow/templates/report-template.md`
124
- 2. Определи следующий ID: найди все файлы `REPORT-*.md` в `.workflow/reports/`, возьми максимальный номер и прибавь 1. Если файлов нет — начни с `REPORT-001`.
125
- 3. Сохрани в: `.workflow/reports/REPORT-{NNN}.md`
126
-
127
- ### 8. Вывести структурированный результат
128
-
129
- После сохранения **обязательно** выведи блок результата:
130
-
131
- ```
132
- ---RESULT---
133
- status: default
134
- report_id: REPORT-001
135
- ---RESULT---
136
- ```
137
-
138
- ## Пример использования
139
-
140
- ```
141
- Создай отчёт о выполненных задачах за последнюю неделю.
142
- ```
143
-
144
- ## Результат
145
-
146
- Файл `.workflow/reports/REPORT-001.md` содержащий:
147
- - Период отчёта
148
- - Список выполненных задач с результатами
149
- - Статистику
150
- - Проблемы и их решения
151
- - Прогресс по плану
152
-
153
- ## Связанные skills
154
-
155
- - `analyze-report` — анализ отчёта
156
- - `create-plan` — создание плана на основе выводов
@@ -1,161 +0,0 @@
1
- ---
2
- name: decompose-gaps
3
- description: Декомпозировать недочёты (gaps) из анализа отчёта в новые тикеты. Используй после analyze-report когда план выполнен не полностью. Создаёт тикеты в .workflow/tickets/backlog/ на основе выявленных пробелов, а не на основе исходного плана.
4
- ---
5
-
6
- # Декомпозиция недочётов в тикеты
7
-
8
- Этот skill создаёт новые тикеты на основе **недочётов (gaps)**, выявленных при анализе отчёта. В отличие от `decompose-plan`, он работает не с исходным планом, а с конкретными пробелами — что не было сделано, что сделано некорректно, что требует доработки.
9
-
10
- ## Когда использовать
11
-
12
- - Анализ отчёта выявил пробелы (`status: has_gaps`)
13
- - Нужно создать точечные задачи на доработку
14
- - Требуется закрыть конкретные недочёты, а не декомпозировать весь план заново
15
-
16
- ## Входные данные (из context)
17
-
18
- | Параметр | Описание |
19
- |----------|----------|
20
- | `gaps` | Описание недочётов из analyze-report |
21
- | `report_id` | ID отчёта, в котором выявлены недочёты |
22
- | `plan_id` | ID исходного плана (для ссылки) |
23
-
24
- ## Шаги выполнения
25
-
26
- ### 1. Прочитать описание недочётов
27
-
28
- Из context-переменной `gaps` извлечь:
29
- - Какие задачи не были выполнены
30
- - Какие результаты не соответствуют ожиданиям
31
- - Какие доработки требуются
32
-
33
- ### 2. Прочитать отчёт для полного контекста
34
-
35
- ```
36
- Путь: .workflow/reports/REPORT-{report_id}.md
37
- ```
38
-
39
- Извлечь:
40
- - Что было выполнено (для понимания текущего состояния)
41
- - Какие проблемы возникли
42
- - Какие файлы были затронуты
43
-
44
- ### 3. Прочитать исходный план (опционально)
45
-
46
- ```
47
- Путь: .workflow/plans/current/PLAN-{plan_id}.md
48
- ```
49
-
50
- Сверить gaps с исходными требованиями плана, чтобы понять:
51
- - Задача была пропущена или выполнена некорректно?
52
- - Нужна доработка или переделка?
53
-
54
- ### 3.5. Проверить scope каждого gap
55
-
56
- **ОБЯЗАТЕЛЬНО** перед созданием тикетов выполнить три проверки:
57
-
58
- #### Проверка 1: Источник gap
59
-
60
- Gap — это исключительно то, что **не выполнено или выполнено некорректно** из явного списка задач плана. Источник gap — только эти секции отчёта:
61
- - «Выполненные задачи» — задачи со статусом failed/skipped где DoD не выполнен
62
- - «Заблокированные задачи» — задачи, заблокированные по техническим причинам (не по внешним зависимостям)
63
- - «Риски и проблемы» — только конкретные сбои в выполненных задачах
64
-
65
- **НЕ являются источником gaps следующие секции отчёта:**
66
- - «Рекомендации для Architect» — это советы, не пробелы
67
- - «План на следующий период» — это новые инициативы, не пробелы
68
- - «Потенциальные риски» — это гипотезы, не пробелы
69
- - Любые упоминания будущих задач (GML-005, стратегия, следующий этап и т.п.)
70
-
71
- #### Проверка 2: Принадлежность к scope исходного плана
72
-
73
- **Gap в scope (создавать тикет):**
74
- - Задача была в исходном плане, но не выполнена или выполнена некорректно
75
- - Доработка существующего результата, который не соответствует DoD плана
76
- - Исправление ошибки в уже сделанной работе по плану
77
-
78
- **Gap вне scope (НЕ создавать тикет):**
79
- - Новая работа, которой не было в исходном плане
80
- - Расширение scope за рамки первоначальных требований
81
- - Задачи, созданные другими тикетами как часть их DoD (например, quick win тикеты созданные GML-004 — это deliverables, не gaps)
82
- - Задачи из секций «Рекомендации», «План на следующий период», «Следующие шаги»
83
-
84
- #### Проверка 3: Статус плана
85
-
86
- Если план завершён (`status: completed`) или все его ключевые задачи выполнены — decompose-gaps **не создаёт тикеты**. Gaps в завершённом плане = новые инициативы для следующего плана.
87
-
88
- **Для gap вне scope:** НЕ создавать тикет. Вместо этого записать в секцию «Новые требования» в результате выполнения:
89
-
90
- ```markdown
91
- ### Новые требования (вне scope плана)
92
- - [описание gap] — причина: [почему это вне scope]
93
- ```
94
-
95
- Эти требования будут рассмотрены при создании следующего плана.
96
-
97
- ### 4. Для каждого gap создать тикет
98
-
99
- Каждый gap → 1 или несколько тикетов.
100
-
101
- Критерии хорошего тикета на доработку:
102
- - **Точечный** — исправляет конкретный недочёт, а не переделывает всё
103
- - **Атомарный** — одна конкретная работа
104
- - **С контекстом** — ссылается на отчёт и исходную задачу
105
- - **Выполнимый** — понятно что делать без дополнительных вопросов
106
-
107
- ### 5. Определить тип каждого тикета
108
-
109
- Прочитай актуальные типы задач из `.workflow/config/config.yaml` (секция `task_types`). Используй **только** префиксы, определённые в конфиге. Не используй типы, которых нет в конфиге.
110
-
111
- ### 6. Назначить приоритеты
112
-
113
- Приоритеты для тикетов-доработок обычно выше, чем для обычных задач:
114
-
115
- | Приоритет | Значение |
116
- |-----------|----------|
117
- | 1 | Critical — блокирует завершение плана |
118
- | 2 | High — важный пробел |
119
- | 3 | Medium — мелкий недочёт |
120
-
121
- ### 7. Создать тикеты
122
-
123
- 1. Прочитай шаблон: `.workflow/templates/ticket-template.md`
124
- 2. Для каждого тикета:
125
- - Определи следующий ID: найди все файлы `{TYPE}-*.md` во всех папках `.workflow/tickets/`, возьми максимальный номер для этого префикса и прибавь 1. Если файлов нет — начни с `{TYPE}-001`.
126
- - Заполни шаблон
127
- - **Если доработка относится к плану** — заполни `parent_plan: "plans/current/PLAN-{plan_id}.md"`. Это обязательно, если `plan_id` передан в context.
128
- - В описании укажи: `Доработка по результатам REPORT-{report_id}`
129
- - Сохрани в `.workflow/tickets/backlog/{TYPE}-{NNN}.md`
130
-
131
- ### 8. Вывести структурированный результат
132
-
133
- После создания тикетов **обязательно** выведи блок результата:
134
-
135
- ```
136
- ---RESULT---
137
- status: default
138
- created_tickets: IMPL-010, FIX-011
139
- ---RESULT---
140
- ```
141
-
142
- ## Пример использования
143
-
144
- ```
145
- Декомпозируй недочёты в новые тикеты.
146
-
147
- Context:
148
- gaps: Не реализована валидация входных данных; отсутствует обработка ошибок в runner.mjs
149
- report_id: REPORT-003
150
- plan_id: PLAN-006
151
- ```
152
-
153
- ## Результат
154
-
155
- - Новые тикеты в `.workflow/tickets/backlog/`
156
-
157
- ## Связанные skills
158
-
159
- - `analyze-report` — предшествующий шаг, выявляет gaps
160
- - `check-conditions` — следующий шаг, проверяет готовность новых тикетов
161
- - `decompose-plan` — похожий skill, но для декомпозиции всего плана
@@ -1,168 +0,0 @@
1
- ---
2
- name: decompose-plan
3
- description: Декомпозировать план на исполняемые тикеты. Используй после создания плана для разбиения высокоуровневых задач на конкретные тикеты с зависимостями и условиями. Создаёт тикеты в .workflow/tickets/backlog/.
4
- ---
5
-
6
- # Декомпозиция плана на тикеты
7
-
8
- Этот skill разбивает высокоуровневый план на исполняемые тикеты для канбан-доски.
9
-
10
- ## Когда использовать
11
-
12
- - Создан новый план
13
- - Нужно разбить крупную задачу на подзадачи
14
- - Требуется детальная декомпозиция
15
-
16
- ## ⛔ Какой план декомпозировать
17
-
18
- Декомпозируй план, указанный в секции Instructions твоего промпта. Открой этот файл и сразу переходи к шагу 1. Не сканируй папку plans/current/. Не проверяй статус плана. Не читай другие планы.
19
-
20
- ## Шаги выполнения
21
-
22
- ### 1. Прочитать план
23
-
24
- ```
25
- Путь: .workflow/plans/current/PLAN-{NNN}.md
26
- ```
27
-
28
- Извлечь:
29
- - Список высокоуровневых задач
30
- - Зависимости между ними
31
- - Приоритеты
32
- - Контекст проекта
33
-
34
- ### 2. Для каждой задачи определить тикеты
35
-
36
- Каждая задача из плана может превратиться в 1+ тикетов.
37
-
38
- Критерии хорошего тикета:
39
- - Атомарный (одна конкретная работа)
40
- - Выполнимый за 1-4 часа
41
- - Имеет чёткие критерии готовности
42
- - Понятно что делать без дополнительных вопросов
43
-
44
- ### 2.5. Оценить автономность каждой задачи
45
-
46
- Для каждой задачи из плана определи: **может ли агент выполнить её полностью автономно?**
47
-
48
- | Категория | Критерий | Действие |
49
- |-----------|----------|----------|
50
- | **Полностью автономная** | Агент может выполнить все шаги без участия человека (написание кода, документации, анализ данных через WebSearch/WebFetch) | Создать 1 тикет с `executor_type: agent` |
51
- | **Полностью ручная** | Требует действий, недоступных агенту (доступ к приватным аккаунтам, физические действия, аутентифицированные сервисы) | Создать 1 тикет `type: human` с `executor_type: human` и явными инструкциями для человека |
52
- | **Гибридная** | Часть работы может сделать агент, часть — только человек | Разбить на 2 тикета: (a) агентский тикет с `executor_type: agent` и (b) HUMAN-тикет с `executor_type: human`, с зависимостью между ними |
53
-
54
- **Для HUMAN-тикетов обязательно:**
55
- - Явные пошаговые инструкции что именно должен сделать человек
56
- - DoD-критерий: «Результаты внесены непосредственно в файл тикета»
57
- - Указание в каком формате ожидается результат
58
-
59
- **⛔ НЕ создавать conditional/fallback HUMAN-тикеты заранее.**
60
- Если HUMAN-тикет нужен только при провале агентского тикета (например, «выполнить вручную, если агент не смог пройти auth») — **не создавай его на этапе декомпозиции**. Такие тикеты создаёт `decompose-gaps` когда проблема реально возникла. Иначе они висят в backlog вечно и засоряют доску.
61
-
62
- **Пример разбиения гибридной задачи:**
63
-
64
- Задача из плана: «Провести конкурентный анализ и настроить трекинг конкурентов в аналитике»
65
-
66
- → Тикет 1 (agent): `PMA-005` — Провести конкурентный анализ через публичные источники (WebSearch: цены, позиционирование, отзывы, ASO). `executor_type: agent`
67
-
68
- → Тикет 2 (human): `HUMAN-010` — Настроить трекинг конкурентов в SimilarWeb Pro (требует auth). `executor_type: human`, `dependencies: [PMA-005]`. Инструкции: «1. Войти в SimilarWeb Pro. 2. Добавить домены конкурентов из PMA-005. 3. Настроить еженедельный отчёт. 4. Вставить ссылку на дашборд в результат тикета.»
69
-
70
- ### 3. Определить тип каждого тикета
71
-
72
- Прочитай актуальные типы задач из `.workflow/config/config.yaml` (секция `task_types`). Используй **только** префиксы, определённые в конфиге. Не используй типы, которых нет в конфиге.
73
-
74
- ### 4. Определить зависимости
75
-
76
- Для каждого тикета:
77
- - От каких тикетов зависит (`dependencies`)
78
- - Какие условия должны быть выполнены (`conditions`)
79
-
80
- Типы условий:
81
- - `tasks_completed: [IMPL-001, IMPL-002]` — задачи должны быть выполнены
82
- - `date_after: "2024-01-15"` — не раньше даты
83
- - `file_exists: "src/config.py"` — файл должен существовать
84
- - `manual_approval: true` — требуется одобрение человека
85
-
86
- ### 4.5. Scope-guard: проверка принадлежности к плану
87
-
88
- **ОБЯЗАТЕЛЬНО** перед созданием каждого тикета выполнить проверку scope.
89
-
90
- #### Правило: тикеты создаются ТОЛЬКО на работу внутри scope плана
91
-
92
- Прочитай секции плана «Scope (Границы)» → «Включено в scope» и «Исключено из scope». Каждый создаваемый тикет **должен** относиться к работе из «Включено в scope».
93
-
94
- **Тикет в scope (создавать):**
95
- - Задача явно описана в высокоуровневых задачах плана
96
- - Задача является декомпозицией конкретного пункта плана
97
- - Задача необходима для достижения критериев успеха плана
98
-
99
- **Тикет вне scope (НЕ создавать):**
100
- - Задача относится к работе из «Исключено из scope»
101
- - Задача является follow-up после завершения плана (стратегия, запуск кампаний и т.д.)
102
- - Задача появляется из DoD другого тикета как «создать тикеты для команды» — это рекомендация для следующего плана, а не тикет текущего
103
- - Задача с условием `date_after` за пределами горизонта текущего плана
104
-
105
- **Для работы вне scope:** НЕ создавать тикет. Вместо этого записать в секцию «Рекомендации для следующего плана» в результате выполнения:
106
-
107
- ```markdown
108
- ### Рекомендации для следующего плана (вне scope)
109
- - [описание задачи] — причина: [почему это следующий этап]
110
- ```
111
-
112
- Эти рекомендации будут учтены при создании следующего плана.
113
-
114
- #### Чеклист самопроверки перед созданием тикета
115
-
116
- - [ ] Задача входит в «Включено в scope» плана?
117
- - [ ] Задача НЕ входит в «Исключено из scope»?
118
- - [ ] `parent_plan` заполнен и указывает на текущий план?
119
- - [ ] Задача необходима для критериев успеха текущего плана?
120
-
121
- ### 5. Назначить приоритеты
122
-
123
- | Приоритет | Значение |
124
- |-----------|----------|
125
- | 1 | Critical — блокирует всё |
126
- | 2 | High — важно для прогресса |
127
- | 3 | Medium — стандартная работа |
128
- | 4 | Low — можно отложить |
129
- | 5 | Someday — когда-нибудь |
130
-
131
- ### 6. Создать тикеты
132
-
133
- 1. Прочитай шаблон: `.workflow/templates/ticket-template.md`
134
- 2. Для каждого тикета:
135
- - Определи следующий ID: найди все файлы `{TYPE}-*.md` во всех папках `.workflow/tickets/`, возьми максимальный номер для этого префикса и прибавь 1. Если файлов нет — начни с `{TYPE}-001`.
136
- - Заполни шаблон
137
- - **Обязательно** заполни `parent_plan: "plans/current/PLAN-{NNN}.md"` — путь к плану, из которого создан тикет
138
- - Сохрани в `.workflow/tickets/backlog/{TYPE}-{NNN}.md`
139
-
140
- ### 7. Обновить план
141
-
142
- Добавь в план ссылки на созданные тикеты.
143
-
144
- ### 8. Вывести структурированный результат
145
-
146
- После создания тикетов **обязательно** выведи блок результата:
147
-
148
- ```
149
- ---RESULT---
150
- status: default
151
- ---RESULT---
152
- ```
153
-
154
- ## Пример использования
155
-
156
- ```
157
- Декомпозируй план .workflow/plans/current/PLAN-001.md на тикеты.
158
- ```
159
-
160
- ## Результат
161
-
162
- - Тикеты в `.workflow/tickets/backlog/`
163
- - Обновлённый план с ссылками на тикеты
164
-
165
- ## Связанные skills
166
-
167
- - `create-plan` — создание плана для декомпозиции
168
- - `check-conditions` — проверка готовности тикетов
@@ -1,161 +0,0 @@
1
- ---
2
- name: execute-task
3
- description: Выполнить задачу из тикета. Используй когда нужно выполнить конкретный тикет из in-progress. Читает описание задачи, выполняет работу, записывает результат. Перемещение в done/blocked выполняется отдельным stage.
4
- ---
5
-
6
- # Выполнение задачи
7
-
8
- Этот skill выполняет задачу из тикета и записывает результат.
9
-
10
- ## ⛔ КРИТИЧЕСКИЕ ОГРАНИЧЕНИЯ (прочитай ПЕРЕД выполнением)
11
-
12
- **Execute-task — скил ИСПОЛНЕНИЯ. Он НЕ создаёт артефакты workflow.**
13
-
14
- При выполнении задачи **КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО:**
15
-
16
- 1. **Создавать файлы тикетов** в `.workflow/tickets/` (любая папка: backlog, ready, in-progress)
17
- 2. **Создавать файлы планов** в `.workflow/plans/`
18
- 3. **Вызывать скилы** `decompose-plan`, `decompose-gaps`, `create-plan`
19
- 4. **Интерпретировать DoD буквально**, если DoD содержит «создать тикеты» или «декомпозировать в тикеты» — это рекомендация для следующего плана, а НЕ инструкция к действию
20
-
21
- **Если задача требует создания тикетов/планов как deliverable:**
22
- → Зафиксируй рекомендации в секции `### Рекомендации для следующего плана` результата тикета
23
- → Человек решит, создавать ли следующий план
24
-
25
- **Почему:** Без этого ограничения возникает каскад: execute-task создаёт план → decompose-plan создаёт тикеты → backlog разрастается без контроля человека. Это уже происходило дважды.
26
-
27
- ---
28
-
29
- ## Когда использовать
30
-
31
- - Есть тикет в `in-progress/`
32
- - Нужно выполнить конкретную задачу
33
- - Перемещение в done/blocked будет выполнено отдельным stage пайплайна
34
-
35
- ## Шаги выполнения
36
-
37
- ### 1. Прочитать тикет
38
-
39
- **ОБЯЗАТЕЛЬНО:** Используй ТОЛЬКО `ticket_id` из секции Context промпта. Запрещено выбирать другой тикет.
40
-
41
- ```
42
- Путь: .workflow/tickets/in-progress/{TICKET-ID}.md
43
- ```
44
-
45
- Если тикет не найден в `in-progress/`, проверь `review/` (при повторном выполнении тикет может быть там).
46
-
47
- **Важно:** НЕ перемещай тикет. Перемещение выполняется отдельным stage пайплайна.
48
-
49
- Извлечь:
50
- - Описание задачи
51
- - Критерии готовности (Definition of Done)
52
- - Контекст (файлы, ссылки, заметки)
53
-
54
- ### 2. Понять задачу
55
-
56
- Убедиться что понятно:
57
- - Что нужно сделать
58
- - Какой результат ожидается
59
- - Какие есть ограничения
60
-
61
- Если не хватает информации:
62
- - Создать подзадачу на уточнение
63
- - Или вывести `status: blocked` в блоке результата (перемещение выполнит pipeline)
64
-
65
- ### 3. Выполнить работу
66
-
67
- В зависимости от типа задачи:
68
-
69
- | Тип | Действия |
70
- |-----|----------|
71
- | IMPL | Написать код |
72
- | FIX | Исправить баг |
73
- | DOCS | Написать документацию |
74
- | REVIEW | Проверить код/документы |
75
- | PLAN | Создать план |
76
- | ADMIN | Выполнить настройку (см. 3.1) |
77
-
78
- #### 3.1. Специальные правила для `type: admin`
79
-
80
- Admin-задачи требуют **реального изменения файлов**. Цикл выполнения:
81
-
82
- 1. **Read** — прочитать все файлы из `context.files` инструментом Read
83
- 2. **Edit/Write** — внести требуемые изменения инструментом Edit или Write
84
- 3. **Verify** — перечитать изменённые файлы для верификации результата
85
-
86
- **Запрещено для admin-задач:**
87
- - Завершать задачу без реального изменения файлов
88
- - Оставлять секцию «Результат выполнения» пустой или с заглушкой
89
- - Описывать изменения только в Summary без внесения их в целевые файлы
90
-
91
- **Чеклист самопроверки перед завершением admin-задачи:**
92
- - [ ] Все файлы из `context.files` прочитаны?
93
- - [ ] Изменения внесены инструментом Edit/Write (не просто описаны)?
94
- - [ ] Изменённые файлы перечитаны и верифицированы?
95
- - [ ] Секция «Результат выполнения» содержит конкретный результат (не заглушку)?
96
-
97
- ### 4. Проверить критерии готовности
98
-
99
- Для каждого критерия из Definition of Done:
100
- - Выполнен ли он?
101
- - Если нет — что нужно доделать?
102
-
103
- ### 5. Записать результат
104
-
105
- Добавить в тикет секцию Result:
106
-
107
- ```markdown
108
- ## Result
109
-
110
- ### Что сделано
111
- - ...
112
-
113
- ### Изменённые файлы
114
- - ...
115
-
116
- ### Заметки
117
- - ...
118
- ```
119
-
120
- ### 6. Перемещение выполняется отдельным stage
121
-
122
- **Важно:** Этот skill НЕ перемещает тикет. НЕ выполняй никаких операций с файлами тикетов кроме записи результата.
123
-
124
- Запрещено:
125
- - Перемещать файл тикета в другую папку
126
- - Обновлять `status` в frontmatter
127
- - Добавлять `completed_at`
128
- - Вызывать `move-ticket.js` вручную
129
-
130
- Всё это выполняется автоматически скриптом перемещения на следующем stage пайплайна.
131
-
132
- ### 7. Закрыть внешние ресурсы
133
-
134
- Если задача использовала **MCP-browser (Playwright)** — **обязательно** вызови `browser_close` перед выводом результата. Незакрытый браузер блокирует профиль и мешает следующему запуску.
135
-
136
- ### 8. Вывести структурированный результат
137
-
138
- После выполнения **обязательно** выведи блок результата:
139
-
140
- ```
141
- ---RESULT---
142
- status: default
143
- ---RESULT---
144
- ```
145
-
146
- ## Пример использования
147
-
148
- ```
149
- Выполни задачу .workflow/tickets/in-progress/IMPL-001.md
150
- ```
151
-
152
- ## Результат
153
-
154
- - Выполненная работа (код, документация и т.д.)
155
- - Обновлённый тикет с секцией Result
156
- - Тикет остаётся на месте (перемещение выполняется отдельным stage)
157
-
158
- ## Связанные skills
159
-
160
- - `check-conditions` — после выполнения проверить зависимые задачи
161
- - `create-report` — включить результат в отчёт