workflow-ai 1.0.41 → 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 (54) hide show
  1. package/package.json +1 -1
  2. package/src/init.mjs +8 -6
  3. package/src/junction-manager.mjs +8 -4
  4. package/src/scripts/archive-plan-tickets.js +0 -102
  5. package/src/scripts/check-anomalies.js +0 -161
  6. package/src/scripts/check-conditions.js +0 -254
  7. package/src/scripts/check-plan-decomposed.js +0 -179
  8. package/src/scripts/move-ticket.js +0 -228
  9. package/src/scripts/move-to-ready.js +0 -115
  10. package/src/scripts/move-to-review.js +0 -100
  11. package/src/scripts/pick-next-task.js +0 -723
  12. package/src/skills/analyze-report/SKILL.md +0 -110
  13. package/src/skills/check-relevance/SKILL.md +0 -236
  14. package/src/skills/coach/README.md +0 -100
  15. package/src/skills/coach/SKILL.md +0 -119
  16. package/src/skills/coach/algorithms/gap-analysis.md +0 -69
  17. package/src/skills/coach/algorithms/improvement-prioritization.md +0 -62
  18. package/src/skills/coach/algorithms/skill-scoring.md +0 -79
  19. package/src/skills/coach/knowledge/backlog-management.md +0 -71
  20. package/src/skills/coach/knowledge/common-antipatterns.md +0 -56
  21. package/src/skills/coach/knowledge/prompt-engineering.md +0 -86
  22. package/src/skills/coach/knowledge/skill-anatomy.md +0 -71
  23. package/src/skills/coach/templates/audit-report.md +0 -54
  24. package/src/skills/coach/templates/coach-backlog-init.yaml +0 -10
  25. package/src/skills/coach/templates/improvement-plan.md +0 -54
  26. package/src/skills/coach/templates/new-skill.md +0 -137
  27. package/src/skills/coach/workflows/analyze.md +0 -85
  28. package/src/skills/coach/workflows/audit.md +0 -68
  29. package/src/skills/coach/workflows/create.md +0 -66
  30. package/src/skills/coach/workflows/improve.md +0 -70
  31. package/src/skills/coach/workflows/research.md +0 -55
  32. package/src/skills/coach/workflows/review.md +0 -74
  33. package/src/skills/create-plan/SKILL.md +0 -107
  34. package/src/skills/create-report/SKILL.md +0 -156
  35. package/src/skills/decompose-gaps/SKILL.md +0 -167
  36. package/src/skills/decompose-plan/SKILL.md +0 -219
  37. package/src/skills/deep-research/README.md +0 -50
  38. package/src/skills/deep-research/SKILL.md +0 -148
  39. package/src/skills/deep-research/algorithms/source-scoring.md +0 -63
  40. package/src/skills/deep-research/algorithms/synthesis.md +0 -67
  41. package/src/skills/deep-research/knowledge/data-validation.md +0 -44
  42. package/src/skills/deep-research/knowledge/research-methodology.md +0 -54
  43. package/src/skills/deep-research/knowledge/source-evaluation.md +0 -33
  44. package/src/skills/deep-research/scripts/perplexity-research.js +0 -315
  45. package/src/skills/deep-research/templates/brief-summary.md +0 -25
  46. package/src/skills/deep-research/templates/research-report.md +0 -76
  47. package/src/skills/deep-research/workflows/benchmark.md +0 -56
  48. package/src/skills/deep-research/workflows/competitor.md +0 -63
  49. package/src/skills/deep-research/workflows/custom.md +0 -45
  50. package/src/skills/deep-research/workflows/market.md +0 -64
  51. package/src/skills/deep-research/workflows/technology.md +0 -52
  52. package/src/skills/deep-research/workflows/trend.md +0 -51
  53. package/src/skills/execute-task/SKILL.md +0 -207
  54. package/src/skills/review-result/SKILL.md +0 -329
@@ -1,52 +0,0 @@
1
- # Воркфлоу: TECHNOLOGY — Обзор технологий
2
-
3
- Исследование технологий, инструментов, платформ для принятия технических решений.
4
-
5
- ## Алгоритм выполнения
6
-
7
- ### 1. Определи скоуп
8
-
9
- - Какую задачу решает технология
10
- - Критерии выбора (цена, масштаб, интеграции, etc.)
11
- - Контекст использования (стек, команда, бюджет)
12
-
13
- ### 2. Составь longlist
14
-
15
- 1. Поиск по категории (G2, Capterra, Product Hunt)
16
- 2. GitHub/npm/PyPI — open source альтернативы
17
- 3. Обзорные статьи "Best {category} tools 2024/2025"
18
- 4. Reddit/HackerNews — что рекомендует сообщество
19
-
20
- ### 3. Отфильтруй до shortlist
21
-
22
- Критерии фильтрации:
23
- - Активно поддерживается (последнее обновление < 6 мес)
24
- - Подходит по масштабу и бюджету
25
- - Совместим с текущим стеком
26
-
27
- ### 4. Глубокий анализ shortlist
28
-
29
- | Параметр | Инструмент A | Инструмент B | Инструмент C |
30
- |----------|-------------|-------------|-------------|
31
- | Цена | ... | ... | ... |
32
- | Features | ... | ... | ... |
33
- | Интеграции | ... | ... | ... |
34
- | Документация | ... | ... | ... |
35
- | Community/Support | ... | ... | ... |
36
- | Ограничения | ... | ... | ... |
37
-
38
- ### 5. Синтезируй выводы
39
-
40
- → Загрузи `algorithms/synthesis.md`
41
-
42
- ### 6. Сформируй отчёт
43
-
44
- → Используй `templates/research-report.md`
45
-
46
- ### 7. Валидация
47
-
48
- - [ ] Longlist ≥ 10 опций
49
- - [ ] Shortlist 3-5 опций с обоснованием фильтрации
50
- - [ ] Comparison matrix заполнена
51
- - [ ] Цены актуальны и проверены
52
- - [ ] Указаны ограничения каждого варианта
@@ -1,51 +0,0 @@
1
- # Воркфлоу: TREND — Исследование трендов
2
-
3
- Выявление и анализ трендов в индустрии: что меняется, куда движется рынок.
4
-
5
- ## Алгоритм выполнения
6
-
7
- ### 1. Определи скоуп
8
-
9
- - Какая индустрия/ниша
10
- - Временной горизонт (текущие тренды, прогнозы)
11
- - Контекст заказчика (зачем нужны тренды)
12
-
13
- ### 2. Собери данные о трендах
14
-
15
- Источники:
16
- 1. Google Trends — динамика поисковых запросов
17
- 2. Отраслевые отчёты — прогнозы аналитиков
18
- 3. Конференции/вебинары — темы докладов
19
- 4. Инвестиции/стартапы — куда идут деньги (Crunchbase, PitchBook)
20
- 5. Технологические блоги — emerging tech
21
- 6. Регуляторные изменения — новые законы, стандарты
22
-
23
- ### 3. Классифицируй тренды
24
-
25
- | Категория | Описание |
26
- |-----------|----------|
27
- | **Mega-trend** | Фундаментальный сдвиг (5+ лет) |
28
- | **Macro-trend** | Устойчивое направление (2-5 лет) |
29
- | **Micro-trend** | Текущая волна (6-24 мес) |
30
- | **Fad** | Краткосрочный хайп (< 6 мес) |
31
-
32
- ### 4. Оцени каждый тренд
33
-
34
- - Стадия: emerging → growing → mature → declining
35
- - Импакт на бизнес заказчика: HIGH/MEDIUM/LOW
36
- - Timeframe: когда станет критичным
37
-
38
- ### 5. Синтезируй выводы
39
-
40
- → Загрузи `algorithms/synthesis.md`
41
-
42
- ### 6. Сформируй отчёт
43
-
44
- → Используй `templates/research-report.md`
45
-
46
- ### 7. Валидация
47
-
48
- - [ ] Тренды классифицированы по категориям
49
- - [ ] Для каждого тренда указан импакт и timeframe
50
- - [ ] Есть данные/источники подтверждающие каждый тренд
51
- - [ ] Отделены факты от прогнозов
@@ -1,207 +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
- | rsh | Провести исследование (см. 3.2) |
78
-
79
- #### 3.1. Специальные правила для `type: admin`
80
-
81
- Admin-задачи требуют **реального изменения файлов**. Цикл выполнения:
82
-
83
- 1. **Read** — прочитать все файлы из `context.files` инструментом Read
84
- 2. **Edit/Write** — внести требуемые изменения инструментом Edit или Write
85
- 3. **Verify** — перечитать изменённые файлы для верификации результата
86
-
87
- **Запрещено для admin-задач:**
88
- - Завершать задачу без реального изменения файлов
89
- - Оставлять секцию «Результат выполнения» пустой или с заглушкой
90
- - Описывать изменения только в Summary без внесения их в целевые файлы
91
-
92
- **Чеклист самопроверки перед завершением admin-задачи:**
93
- - [ ] Все файлы из `context.files` прочитаны?
94
- - [ ] Изменения внесены инструментом Edit/Write (не просто описаны)?
95
- - [ ] Изменённые файлы перечитаны и верифицированы?
96
- - [ ] Секция «Результат выполнения» содержит конкретный результат (не заглушку)?
97
-
98
- #### 3.2. Специальные правила для `type: rsh` (RSH-тикеты)
99
-
100
- Research-задачи выполняются с помощью скрипта `perplexity-research.js`, который вызывает Perplexity API для сбора данных из интернета.
101
-
102
- **Цикл выполнения:**
103
-
104
- 1. **Read** — прочитать тикет, понять тему и скоуп исследования
105
- 2. **Read SKILL** — прочитать `.workflow/src/skills/deep-research/SKILL.md` для понимания методологии
106
- 3. **Research** — вызвать скрипт через bash, результат приходит в stdout:
107
- ```bash
108
- node .workflow/src/skills/deep-research/scripts/perplexity-research.js "исследовательский запрос"
109
- ```
110
- Для сложных тем — несколько запросов с разными фокусами:
111
- ```bash
112
- node .workflow/src/skills/deep-research/scripts/perplexity-research.js "запрос 1"
113
- node .workflow/src/skills/deep-research/scripts/perplexity-research.js --model perplexity/sonar-pro "запрос 2"
114
- ```
115
- 4. **Synthesize** — проанализировать stdout, верифицировать, оформить финальный отчёт
116
- 5. **Write** — записать отчёт в путь из тикета (обычно `reports/RSH-XXX-*.md`)
117
-
118
- **Доступные модели:**
119
- - `perplexity/sonar-deep-research` — по умолчанию, глубокий ресерч (5-10 мин)
120
- - `perplexity/sonar-pro` — быстрый с источниками (10-30 сек)
121
- - `perplexity/sonar` — простые справки (5-15 сек)
122
-
123
- **Запрещено для research-задач:**
124
- - Выдумывать данные без источников
125
- - Использовать только свои знания без вызова perplexity-research.js
126
- - Пропускать верификацию результатов
127
-
128
- ### 4. Проверить критерии готовности
129
-
130
- Для каждого критерия из Definition of Done:
131
- - Выполнен ли он?
132
- - Если нет — что нужно доделать?
133
-
134
- ### 5. Записать результат
135
-
136
- Добавить в тикет секцию Result:
137
-
138
- ```markdown
139
- ## Result
140
-
141
- ### Что сделано
142
- - ...
143
-
144
- ### Изменённые файлы
145
- - ...
146
-
147
- ### Заметки
148
- - ...
149
- ```
150
-
151
- ### 6. Перемещение выполняется отдельным stage
152
-
153
- **Важно:** Этот skill НЕ перемещает тикет. НЕ выполняй никаких операций с файлами тикетов кроме записи результата.
154
-
155
- Запрещено:
156
- - Перемещать файл тикета в другую папку
157
- - Обновлять `status` в frontmatter
158
- - Добавлять `completed_at`
159
- - Вызывать `move-ticket.js` вручную
160
-
161
- Всё это выполняется автоматически скриптом перемещения на следующем stage пайплайна.
162
-
163
- ### 7. Правила работы с MCP-browser (Playwright)
164
-
165
- Все взаимодействия с браузером **ОБЯЗАТЕЛЬНО** должны использовать профиль из конфига проекта (`.mcp.json`). Конфиг уже настроен с `--browser chrome --user-data-dir` — в профиле сохранены авторизации (Google, CWS и др.).
166
-
167
- **ЗАПРЕЩЕНО:**
168
- - Запускать браузер без профиля (headless без `--user-data-dir`)
169
- - Использовать конфиг `.workflow/config/mcp-browser.json` (headless без профиля) для задач, требующих авторизацию
170
- - Пытаться авторизоваться вручную — сессии уже есть в профиле
171
-
172
- **Справка по конфигам:**
173
-
174
- | Конфиг | Профиль | Когда использовать |
175
- |--------|---------|-------------------|
176
- | `.mcp.json` (дефолт) | ✅ Chrome + user-data-dir | **Всегда по умолчанию** |
177
- | `.workflow/config/mcp-browser-auth.json` | ✅ headless + user-data-dir | Headless с авторизацией |
178
- | `.workflow/config/mcp-browser.json` | ❌ headless без профиля | Только для задач без авторизации |
179
-
180
- После завершения работы с браузером — **обязательно** вызови `browser_close` перед выводом результата. Незакрытый браузер блокирует профиль и мешает следующему запуску.
181
-
182
- ### 8. Вывести структурированный результат
183
-
184
- После выполнения **обязательно** выведи блок результата:
185
-
186
- ```
187
- ---RESULT---
188
- status: default
189
- ---RESULT---
190
- ```
191
-
192
- ## Пример использования
193
-
194
- ```
195
- Выполни задачу .workflow/tickets/in-progress/IMPL-001.md
196
- ```
197
-
198
- ## Результат
199
-
200
- - Выполненная работа (код, документация и т.д.)
201
- - Обновлённый тикет с секцией Result
202
- - Тикет остаётся на месте (перемещение выполняется отдельным stage)
203
-
204
- ## Связанные skills
205
-
206
- - `check-conditions` — после выполнения проверить зависимые задачи
207
- - `create-report` — включить результат в отчёт
@@ -1,329 +0,0 @@
1
- ---
2
- name: review-result
3
- description: Проверить результат выполнения задачи на соответствие Definition of Done. Используется после execute-task для валидации качества работы.
4
- ---
5
-
6
- # Проверка результата (Review Result)
7
-
8
- > **ОБЯЗАТЕЛЬНО:** Последние строки твоего ответа ВСЕГДА должны быть блоком `---RESULT---`.
9
- > Без этого блока пайплайн не распознает статус и тикет попадёт в `blocked`.
10
- > Даже если ревью очевидно — всё равно заверши ответ блоком результата.
11
-
12
- Этот skill проверяет результат выполнения задачи на соответствие критериям готовности (Definition of Done) из тикета.
13
-
14
- ## Когда использовать
15
-
16
- - Задача выполнена и тикет перемещён в `review/`
17
- - Требуется валидация качества перед перемещением в `done/`
18
- - Retry-логика пайплайна: определить status для goto-перехода
19
-
20
- ## Шаги проверки
21
-
22
- ### 0. Проверить последний статус ревью
23
-
24
- **До любых проверок** найди в тикете секцию `## Ревью`.
25
-
26
- Если секция существует и содержит записи — посмотри на **последнюю запись** (последняя строка таблицы или последний элемент списка):
27
-
28
- - Если последняя запись имеет статус `passed` — ревью уже пройдено. Немедленно верни результат:
29
-
30
- ```
31
- ---RESULT---
32
- status: passed
33
- issues: []
34
- ---RESULT---
35
- ```
36
-
37
- - Если последняя запись имеет статус `⏭ skipped` — тикет пропущен check-relevance. Ревью проводить **НЕ НАДО**. Немедленно верни результат:
38
-
39
- ```
40
- ---RESULT---
41
- status: passed
42
- issues: []
43
- ---RESULT---
44
- ```
45
-
46
- - Если последняя запись имеет статус `failed` — **необходима повторная проверка**. Переходи к шагу 1.
47
-
48
- > **ВАЖНО:** Проверяй именно ПОСЛЕДНЮЮ запись, а не любую. Если после `passed`/`skipped` появилась `failed` — задача требует повторной проверки. Только если последний статус `passed` или `skipped` — можно пропустить.
49
-
50
- ### 1. Прочитать тикет
51
-
52
- ID тикета передаётся в промпте как `ticket_id` в секции Context.
53
-
54
- ```
55
- Путь: .workflow/tickets/review/{TICKET-ID}.md
56
- ```
57
-
58
- **Важно:** НЕ перемещай тикет — перемещение выполняется отдельным stage пайплайна по результату этого skill.
59
-
60
- Извлечь:
61
- - Definition of Done (DoD) — чеклист критериев готовности
62
- - Детали задачи — требования к реализации
63
- - Результат выполнения (секция Result) — что сделано
64
-
65
- ### 2. Проверить каждый пункт DoD
66
-
67
- Для каждого критерия из Definition of Done:
68
-
69
- | Тип проверки | Описание |
70
- |--------------|----------|
71
- | `file_exists` | Файл существует по указанному пути |
72
- | `compilation` | Код компилируется / линтер проходит |
73
- | `tests` | Тесты проходят |
74
- | `text` | Текстовый критерий выполнен (содержимое, структура) |
75
- | `structure` | Структура соответствует шаблону |
76
-
77
- ### 3. Сверить результат с требованиями
78
-
79
- Сравнить секцию «Результат выполнения» с «Деталями задачи»:
80
- - Все ли требования учтены
81
- - Соответствует ли реализация описанию
82
- - Нет ли расхождений
83
-
84
- ### 3.5. Проверка с позиции целевой аудитории
85
-
86
- > **Применяется** когда результат тикета — документ/ТЗ/спецификация, предназначенные для конкретного исполнителя (разработчик, дизайнер, внешний подрядчик и т.д.).
87
-
88
- Если в DoD есть критерий типа *"файл самодостаточен"* или *"исполнитель не должен смотреть другие документы"*:
89
-
90
- | Проверка | Как проверить | Провал → |
91
- |----------|---------------|----------|
92
- | Credentials указаны или описано где взять | Искать плейсхолдеры `XXX`, `TODO`, `заменить на реальный` — для каждого должна быть инструкция | failed |
93
- | Все системные зависимости перечислены | Для каждого API/библиотеки в сниппетах — проверить наличие в секции permissions/dependencies | failed |
94
- | Параметры вычислимы | Для условных параметров (`isFirst`, `count`) — описан способ получения значения | failed |
95
- | Environment-переключение описано | Если есть debug/dev/prod режимы — описан механизм переключения | failed |
96
-
97
- **Правило:** Прочитай документ глазами целевого исполнителя. Если он не может начать работу без дополнительных вопросов — это `failed`, даже если формальные DoD выполнены.
98
-
99
- ### 3.6. Верификация реальных изменений
100
-
101
- > **Применяется только** для тикетов с `executor_type != human`.
102
-
103
- Даже если все DoD отмечены как `[x]`, необходимо убедиться что изменения реально существуют, а не являются галлюцинацией агента.
104
-
105
- | Проверка | Как проверить | Провал → |
106
- |----------|---------------|----------|
107
- | Файлы-артефакты существуют | Проверить все файлы из секции «Изменённые файлы» через Read/Glob | failed |
108
- | Файлы содержат реальный контент | Открыть файл, убедиться что содержимое — не шаблон/placeholder | failed |
109
- | Секция Result не пуста | Проверить что Summary заполнен содержательно (не заглушка) | failed |
110
- | DoD соответствует реальности | Для каждого `[x]` — открыть артефакт и убедиться что критерий действительно выполнен | failed |
111
-
112
- **Правило:** Если хотя бы одна проверка провалена → статус `failed`, даже если все DoD отмечены `[x]`.
113
-
114
- ### 4. Сформировать вердикт
115
-
116
- > **ВАЖНО:** Review-result НИКОГДА не пишет статус `skipped`. Допустимы только `passed` или `failed`. Статус `skipped` — прерогатива check-relevance.
117
-
118
- Возвращать структурированный результат строго в одном из двух форматов:
119
-
120
- > **КРИТИЧНО**: `status` принимает ТОЛЬКО два значения: `passed` или `failed`.
121
- > Любой другой вывод (`default`, `ok`, `done`, `complete`, `yes`, и т.д.) — **ОШИБКА**.
122
- > Пайплайн не продолжится корректно, если статус не распознан.
123
-
124
- Если **все** пункты DoD выполнены:
125
-
126
- ```
127
- ---RESULT---
128
- status: passed
129
- issues: []
130
- ---RESULT---
131
- ```
132
-
133
- Если **хотя бы один** пункт DoD не выполнен:
134
-
135
- ```
136
- ---RESULT---
137
- status: failed
138
- issues:
139
- - "Пункт DoD X не выполнен: ожидалось Y, получено Z"
140
- - "Файл X не создан"
141
- - "Тест Y не прошёл"
142
- ---RESULT---
143
- ```
144
-
145
- > Блок `---RESULT---` должен быть в выводе **ровно один раз**, в самом конце ответа.
146
-
147
- ### 5. При `failed`: детализировать замечания
148
-
149
- Для каждого невыполненного пункта:
150
- - Описать что ожидалось
151
- - Описать что получено
152
- - Указать файл/строку если применимо
153
-
154
- ## Алгоритм проверки
155
-
156
- ```
157
- 0. Быстрый выход:
158
- - Прочитать тикет
159
- - Найти секцию "## Ревью"
160
- - Если последняя запись "passed" или "skipped" → вернуть status: passed, остановиться
161
- - Если последняя запись "failed" → перейти к шагу 1 (повторная проверка)
162
-
163
- 1. Парсинг тикета:
164
- - Извлечь DoD (список критериев)
165
- - Извлечь Result (что сделано)
166
- - Извлечь Детали задачи (требования)
167
-
168
- 2. Для каждого пункта DoD:
169
- - Определить тип проверки (file/compilation/tests/text)
170
- - Выполнить проверку
171
- - Записать результат (pass/fail + комментарий)
172
-
173
- 3. Сверка Result ↔ Детали задачи:
174
- - Все ли файлы созданы
175
- - Соответствует ли структура
176
- - Нет ли расхождений
177
-
178
- 3.5. Проверка с позиции целевой аудитории (для документов/ТЗ/спецификаций):
179
- - Credentials указаны или описано где взять (нет голых плейсхолдеров)
180
- - Все системные зависимости перечислены
181
- - Условные параметры вычислимы
182
- - Environment-переключение описано
183
- - Любой провал → status: failed
184
-
185
- 3.6. Верификация реальных изменений (только executor_type != human):
186
- - Файлы из «Изменённые файлы» существуют
187
- - Файлы содержат реальный контент (не placeholder)
188
- - Summary заполнен содержательно
189
- - Каждый [x] в DoD подтверждён реальным артефактом
190
- - Любой провал → status: failed
191
-
192
- 4. Формирование вердикта:
193
- - Если все пункты pass → status: passed
194
- - Если есть fail → status: failed + список issues
195
-
196
- 5. Вывод результата в формате ---RESULT---
197
-
198
- 6. Пометка тикета о результате ревью:
199
- - Добавить секцию `## Ревью` в тикете (если её нет — создать с заголовком таблицы)
200
- - **ВАЖНО: новую запись добавлять В КОНЕЦ таблицы** (последней строкой). Не вставлять перед существующими записями!
201
- - Указать:
202
- - Дата ревью
203
- - Статус: passed/failed
204
- - Краткий самари (если failed — что не так)
205
- - Сохранить тикет в той же директории
206
- ```
207
-
208
- ## Типы проверок
209
-
210
- ### file_exists
211
-
212
- Проверка существования файла:
213
-
214
- ```
215
- Критерий: "[ ] Файл `src/logger.py` создан"
216
- Проверка: os.path.exists("src/logger.py")
217
- Результат: pass/fail
218
- ```
219
-
220
- ### compilation
221
-
222
- Проверка компиляции / линта:
223
-
224
- ```
225
- Критерий: "[ ] Код проходит линтер"
226
- Проверка: npm run lint / ruff check / etc.
227
- Результат: pass/fail + вывод
228
- ```
229
-
230
- ### tests
231
-
232
- Проверка тестов:
233
-
234
- ```
235
- Критерий: "[ ] Тесты проходят"
236
- Проверка: npm test / pytest / etc.
237
- Результат: pass/fail + вывод
238
- ```
239
-
240
- ### text
241
-
242
- Текстовая проверка:
243
-
244
- ```
245
- Критерий: "[ ] Описан алгоритм проверки DoD"
246
- Проверка: Поиск раздела "Алгоритм" в файле
247
- Результат: pass/fail
248
- ```
249
-
250
- ### structure
251
-
252
- Проверка структуры:
253
-
254
- ```
255
- Критерий: "[ ] Структура аналогична существующим skills"
256
- Проверка: Сравнение с шаблоном
257
- Результат: pass/fail + замечания
258
- ```
259
-
260
- ## Пример использования
261
-
262
- ```
263
- Проверь результат IMPL-006 на соответствие DoD.
264
- ```
265
-
266
- ```
267
- review-result .workflow/tickets/in-progress/IMPL-006.md
268
- ```
269
-
270
- ## Пример вывода
271
-
272
- ### Успешная проверка
273
-
274
- ```markdown
275
- ---RESULT---
276
- status: passed
277
- issues: []
278
- ---RESULT---
279
- ```
280
-
281
- ### Неуспешная проверка
282
-
283
- ```markdown
284
- ---RESULT---
285
- status: failed
286
- issues:
287
- - "Пункт DoD 'Файл .workflow/src/skills/review-result/SKILL.md создан' не выполнен: файл не найден"
288
- - "Пункт DoD 'Описан алгоритм проверки DoD' не выполнен: раздел 'Алгоритм' отсутствует"
289
- - "Тесты не прошли: 2 failed, 5 passed"
290
- ---RESULT---
291
- ```
292
-
293
- ## Формат секции ревью в тикете
294
-
295
- После проверки skill добавляет в тикет секцию. **Новые записи всегда добавляются В КОНЕЦ таблицы** (хронологический порядок: старые сверху, новые снизу):
296
-
297
- ```markdown
298
- ## Ревью
299
-
300
- | Дата | Статус | Самари |
301
- |------|--------|--------|
302
- | 2026-03-03 14:30 | ❌ failed | Не пройдены тесты, отсутствует файл logger.py |
303
- | 2026-03-03 15:45 | ✅ passed | Все критерии DoD выполнены после исправления |
304
- ```
305
-
306
- > **Порядок записей:** хронологический сверху вниз. Последняя строка = последнее ревью. Код `getLastReviewStatus()` определяет статус по последней строке.
307
-
308
- ## Интеграция с пайплайном
309
-
310
- В retry-логике пайплайна:
311
-
312
- 1. `execute-task` выполняет задачу
313
- 2. `review-result` проверяет результат
314
- 3. По `status` определяется goto-переход:
315
- - `passed` → следующий stage
316
- - `failed` → retry или blocked
317
-
318
- ## Результат
319
-
320
- - Структурированный вердикт (passed/failed)
321
- - Список замечаний (если есть)
322
- - **Тикет помечен секцией `## Ревью`** с датой, статусом и кратким самари
323
- - Готово для использования в goto-логике
324
-
325
- ## Связанные skills
326
-
327
- - `execute-task` — выполнение задачи перед проверкой
328
- - `move-ticket` — перемещение по результатам проверки
329
- - `check-conditions` — проверка условий для зависимых задач