workflow-ai 1.0.0

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.
@@ -0,0 +1,156 @@
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` — создание плана на основе выводов
@@ -0,0 +1,122 @@
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
+ ### 4. Для каждого gap создать тикет
55
+
56
+ Каждый gap → 1 или несколько тикетов.
57
+
58
+ Критерии хорошего тикета на доработку:
59
+ - **Точечный** — исправляет конкретный недочёт, а не переделывает всё
60
+ - **Атомарный** — одна конкретная работа
61
+ - **С контекстом** — ссылается на отчёт и исходную задачу
62
+ - **Выполнимый** — понятно что делать без дополнительных вопросов
63
+
64
+ ### 5. Определить тип каждого тикета
65
+
66
+ | Тип | Префикс | Когда использовать |
67
+ |-----|---------|-------------------|
68
+ | Исправление | FIX | Результат не соответствует ожиданиям |
69
+ | Реализация | IMPL | Задача была пропущена |
70
+ | Ревью | REVIEW | Нужна дополнительная проверка |
71
+ | Документация | DOCS | Не хватает документации |
72
+
73
+ ### 6. Назначить приоритеты
74
+
75
+ Приоритеты для тикетов-доработок обычно выше, чем для обычных задач:
76
+
77
+ | Приоритет | Значение |
78
+ |-----------|----------|
79
+ | 1 | Critical — блокирует завершение плана |
80
+ | 2 | High — важный пробел |
81
+ | 3 | Medium — мелкий недочёт |
82
+
83
+ ### 7. Создать тикеты
84
+
85
+ 1. Прочитай шаблон: `.workflow/templates/ticket-template.md`
86
+ 2. Для каждого тикета:
87
+ - Определи следующий ID: найди все файлы `{TYPE}-*.md` во всех папках `.workflow/tickets/`, возьми максимальный номер для этого префикса и прибавь 1. Если файлов нет — начни с `{TYPE}-001`.
88
+ - Заполни шаблон
89
+ - В описании укажи: `Доработка по результатам REPORT-{report_id}`
90
+ - Сохрани в `.workflow/tickets/backlog/{TYPE}-{NNN}.md`
91
+
92
+ ### 8. Вывести структурированный результат
93
+
94
+ После создания тикетов **обязательно** выведи блок результата:
95
+
96
+ ```
97
+ ---RESULT---
98
+ status: default
99
+ created_tickets: IMPL-010, FIX-011
100
+ ---RESULT---
101
+ ```
102
+
103
+ ## Пример использования
104
+
105
+ ```
106
+ Декомпозируй недочёты в новые тикеты.
107
+
108
+ Context:
109
+ gaps: Не реализована валидация входных данных; отсутствует обработка ошибок в runner.mjs
110
+ report_id: REPORT-003
111
+ plan_id: PLAN-006
112
+ ```
113
+
114
+ ## Результат
115
+
116
+ - Новые тикеты в `.workflow/tickets/backlog/`
117
+
118
+ ## Связанные skills
119
+
120
+ - `analyze-report` — предшествующий шаг, выявляет gaps
121
+ - `check-conditions` — следующий шаг, проверяет готовность новых тикетов
122
+ - `decompose-plan` — похожий skill, но для декомпозиции всего плана
@@ -0,0 +1,109 @@
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
+ ### 1. Прочитать план
19
+
20
+ ```
21
+ Путь: .workflow/plans/current/PLAN-{NNN}.md
22
+ ```
23
+
24
+ Извлечь:
25
+ - Список высокоуровневых задач
26
+ - Зависимости между ними
27
+ - Приоритеты
28
+ - Контекст проекта
29
+
30
+ ### 2. Для каждой задачи определить тикеты
31
+
32
+ Каждая задача из плана может превратиться в 1+ тикетов.
33
+
34
+ Критерии хорошего тикета:
35
+ - Атомарный (одна конкретная работа)
36
+ - Выполнимый за 1-4 часа
37
+ - Имеет чёткие критерии готовности
38
+ - Понятно что делать без дополнительных вопросов
39
+
40
+ ### 3. Определить тип каждого тикета
41
+
42
+ | Тип | Префикс | Описание |
43
+ |-----|---------|----------|
44
+ | Архитектура | ARCH | Создание планов, архитектуры |
45
+ | Реализация | IMPL | Написание кода |
46
+ | Исправление | FIX | Багфиксы |
47
+ | Ревью | REVIEW | Проверка кода/документации |
48
+ | Документация | DOCS | Написание документации |
49
+ | Администрирование | ADMIN | Настройка, конфигурация |
50
+
51
+ ### 4. Определить зависимости
52
+
53
+ Для каждого тикета:
54
+ - От каких тикетов зависит (`dependencies`)
55
+ - Какие условия должны быть выполнены (`conditions`)
56
+
57
+ Типы условий:
58
+ - `tasks_completed: [IMPL-001, IMPL-002]` — задачи должны быть выполнены
59
+ - `date_after: "2024-01-15"` — не раньше даты
60
+ - `file_exists: "src/config.py"` — файл должен существовать
61
+ - `manual_approval: true` — требуется одобрение человека
62
+
63
+ ### 5. Назначить приоритеты
64
+
65
+ | Приоритет | Значение |
66
+ |-----------|----------|
67
+ | 1 | Critical — блокирует всё |
68
+ | 2 | High — важно для прогресса |
69
+ | 3 | Medium — стандартная работа |
70
+ | 4 | Low — можно отложить |
71
+ | 5 | Someday — когда-нибудь |
72
+
73
+ ### 6. Создать тикеты
74
+
75
+ 1. Прочитай шаблон: `.workflow/templates/ticket-template.md`
76
+ 2. Для каждого тикета:
77
+ - Определи следующий ID: найди все файлы `{TYPE}-*.md` во всех папках `.workflow/tickets/`, возьми максимальный номер для этого префикса и прибавь 1. Если файлов нет — начни с `{TYPE}-001`.
78
+ - Заполни шаблон
79
+ - Сохрани в `.workflow/tickets/backlog/{TYPE}-{NNN}.md`
80
+
81
+ ### 7. Обновить план
82
+
83
+ Добавь в план ссылки на созданные тикеты.
84
+
85
+ ### 8. Вывести структурированный результат
86
+
87
+ После создания тикетов **обязательно** выведи блок результата:
88
+
89
+ ```
90
+ ---RESULT---
91
+ status: default
92
+ ---RESULT---
93
+ ```
94
+
95
+ ## Пример использования
96
+
97
+ ```
98
+ Декомпозируй план .workflow/plans/current/PLAN-001.md на тикеты.
99
+ ```
100
+
101
+ ## Результат
102
+
103
+ - Тикеты в `.workflow/tickets/backlog/`
104
+ - Обновлённый план с ссылками на тикеты
105
+
106
+ ## Связанные skills
107
+
108
+ - `create-plan` — создание плана для декомпозиции
109
+ - `check-conditions` — проверка готовности тикетов
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: execute-task
3
+ description: Выполнить задачу из тикета. Используй когда нужно выполнить конкретный тикет из in-progress. Читает описание задачи, выполняет работу, записывает результат. Перемещение в done/blocked выполняется отдельным stage.
4
+ ---
5
+
6
+ # Выполнение задачи
7
+
8
+ Этот skill выполняет задачу из тикета и записывает результат.
9
+
10
+ ## Когда использовать
11
+
12
+ - Есть тикет в `in-progress/`
13
+ - Нужно выполнить конкретную задачу
14
+ - Перемещение в done/blocked будет выполнено отдельным stage пайплайна
15
+
16
+ ## Шаги выполнения
17
+
18
+ ### 1. Прочитать тикет
19
+
20
+ ID тикета передаётся в промпте как `ticket_id` в секции Context.
21
+
22
+ ```
23
+ Путь: .workflow/tickets/ready/{TICKET-ID}.md
24
+ ```
25
+
26
+ **Важно:** НЕ перемещай тикет — он остаётся в `ready/` на время выполнения. Перемещение выполняется отдельным stage пайплайна.
27
+
28
+ Извлечь:
29
+ - Описание задачи
30
+ - Критерии готовности (Definition of Done)
31
+ - Контекст (файлы, ссылки, заметки)
32
+
33
+ ### 2. Понять задачу
34
+
35
+ Убедиться что понятно:
36
+ - Что нужно сделать
37
+ - Какой результат ожидается
38
+ - Какие есть ограничения
39
+
40
+ Если не хватает информации:
41
+ - Создать подзадачу на уточнение
42
+ - Или вывести `status: blocked` в блоке результата (перемещение выполнит pipeline)
43
+
44
+ ### 3. Выполнить работу
45
+
46
+ В зависимости от типа задачи:
47
+
48
+ | Тип | Действия |
49
+ |-----|----------|
50
+ | IMPL | Написать код |
51
+ | FIX | Исправить баг |
52
+ | DOCS | Написать документацию |
53
+ | REVIEW | Проверить код/документы |
54
+ | PLAN | Создать план |
55
+ | ADMIN | Выполнить настройку |
56
+
57
+ ### 4. Проверить критерии готовности
58
+
59
+ Для каждого критерия из Definition of Done:
60
+ - Выполнен ли он?
61
+ - Если нет — что нужно доделать?
62
+
63
+ ### 5. Записать результат
64
+
65
+ Добавить в тикет секцию Result:
66
+
67
+ ```markdown
68
+ ## Result
69
+
70
+ ### Что сделано
71
+ - ...
72
+
73
+ ### Изменённые файлы
74
+ - ...
75
+
76
+ ### Заметки
77
+ - ...
78
+ ```
79
+
80
+ ### 6. Перемещение выполняется отдельным stage
81
+
82
+ **Важно:** Этот skill НЕ перемещает тикет. НЕ выполняй никаких операций с файлами тикетов кроме записи результата.
83
+
84
+ Запрещено:
85
+ - Перемещать файл тикета в другую папку
86
+ - Обновлять `status` в frontmatter
87
+ - Добавлять `completed_at`
88
+ - Вызывать `move-ticket.js` вручную
89
+
90
+ Всё это выполняется автоматически скриптом перемещения на следующем stage пайплайна.
91
+
92
+ ### 7. Вывести структурированный результат
93
+
94
+ После выполнения **обязательно** выведи блок результата:
95
+
96
+ ```
97
+ ---RESULT---
98
+ status: default
99
+ ---RESULT---
100
+ ```
101
+
102
+ ## Пример использования
103
+
104
+ ```
105
+ Выполни задачу .workflow/tickets/in-progress/IMPL-001.md
106
+ ```
107
+
108
+ ## Результат
109
+
110
+ - Выполненная работа (код, документация и т.д.)
111
+ - Обновлённый тикет с секцией Result
112
+ - Тикет остаётся в `ready/` (перемещение выполняется отдельным stage)
113
+
114
+ ## Связанные skills
115
+
116
+ - `check-conditions` — после выполнения проверить зависимые задачи
117
+ - `create-report` — включить результат в отчёт