kodu 2.1.2 → 2.1.3

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,319 @@
1
+ ---
2
+ name: start
3
+ description: Единая точка входа для разработки продукта с нуля. Определяет текущее состояние проекта, объясняет что происходит на каждом шаге и вызывает нужные скиллы вместо пользователя. Запускай первым — этот скилл управляет всем. Другие скиллы (doc-gen, tech-blueprint, implement-project и т.д.) вызывать напрямую не нужно.
4
+ license: MIT
5
+ compatibility: opencode
6
+ metadata:
7
+ level: multi
8
+ output: docs/ + prototype/ + blueprint/ + projects/
9
+ ---
10
+
11
+ ## Назначение
12
+
13
+ Этот скилл — **единственный**, с которым нужно взаимодействовать. Он ведёт через весь конвейер разработки, вызывая остальные скиллы в нужный момент:
14
+
15
+ ```
16
+ [1] Документация → doc-gen → docs/<name>/
17
+ [2] Прототип → litefront-prototype → prototype/ (рекомендуется, не обязателен)
18
+ [3] ТЗ → tech-blueprint → blueprint/<name>/3_TECH_BLUEPRINT/
19
+ [4] Реализация → implement-project → projects/<name>/
20
+ ```
21
+
22
+ Каждый этап создаёт артефакты для следующего. Не нужно знать как работают другие скиллы.
23
+
24
+ ---
25
+
26
+ ## При первом запуске
27
+
28
+ 1. Определить состояние проекта (см. «Определение состояния»)
29
+ 2. Если ни одного проекта нет → объяснить конвейер, спросить название и описание идеи
30
+ 3. Если проект найден → показать статус и предложить продолжить
31
+
32
+ **Объяснение для нового пользователя (сказать один раз в начале):**
33
+
34
+ > Разработка продукта проходит 4 этапа:
35
+ >
36
+ > **1. Документация** — опишем продукт: зачем, для кого, из чего состоит.
37
+ > Результат: VISION.md (цели) + SPEC.md (требования и сценарии).
38
+ >
39
+ > **2. Прототип** — создадим кликабельный UI-макет. Все данные симулируются,
40
+ > бэкенд не нужен. Помогает проверить UX до написания кода.
41
+ >
42
+ > **3. Техническое задание** — спроектируем базу данных, GraphQL API
43
+ > и архитектуру фронтенда и бэкенда. 5 документов.
44
+ >
45
+ > **4. Реализация** — напишем полный рабочий проект с тестами.
46
+ >
47
+ > Перед переходом к каждому следующему этапу я буду ждать вашего «продолжить».
48
+
49
+ ---
50
+
51
+ ## Структура workspace
52
+
53
+ ```
54
+ docs/<ИмяПроекта>/ ← [Этап 1] продуктовая документация
55
+ ├── INDEX.md
56
+ ├── 1_PRODUCT_VISION/VISION.md
57
+ └── 2_PRODUCT_SPEC/SPEC.md
58
+
59
+ prototype/ ← [Этап 2] UI-прототип (общий для всех проектов)
60
+ └── src/...
61
+
62
+ blueprint/<ИмяПроекта>/ ← [Этап 3] техническое задание
63
+ └── 3_TECH_BLUEPRINT/
64
+ ├── IMPLEMENTATION_GUIDE.md
65
+ ├── DATABASE_MODEL.md
66
+ ├── API_CONTRACTS.md
67
+ ├── ARCHITECTURE.md
68
+ └── TESTING_PLAN.md
69
+
70
+ projects/<ИмяПроекта>/ ← [Этап 4] реализация
71
+ ├── backend/
72
+ └── frontend/
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Определение состояния проекта
78
+
79
+ Проверить наличие файлов (bash):
80
+
81
+ ```bash
82
+ # Stage 1 завершён:
83
+ test -f docs/<name>/2_PRODUCT_SPEC/SPEC.md
84
+
85
+ # Stage 2 завершён:
86
+ test -d prototype/src
87
+
88
+ # Stage 3 создан (файлы есть):
89
+ test -f blueprint/<name>/3_TECH_BLUEPRINT/IMPLEMENTATION_GUIDE.md
90
+
91
+ # Stage 3 валиден (запустить и посмотреть на exit code):
92
+ python3 ~/.config/opencode/skills/tech-blueprint/scripts/blueprint_validator.py \
93
+ validate "<name>" --output ./blueprint
94
+
95
+ # Stage 4 завершён:
96
+ test -d projects/<name>/backend/src && test -d projects/<name>/frontend/src
97
+ ```
98
+
99
+ **Несколько проектов:** если в `docs/` найдено более одной папки — показать список и спросить с каким работаем.
100
+
101
+ **Консистентность:** если `docs/<name>/SPEC.md` новее чем `blueprint/<name>/3_TECH_BLUEPRINT/DATABASE_MODEL.md` — предупредить:
102
+ > ⚠️ SPEC.md изменялся после создания ТЗ. Рекомендуется пересоздать ТЗ командой «пересоздать ТЗ».
103
+
104
+ ---
105
+
106
+ ## Формат вывода статуса
107
+
108
+ При запросе «статус» / «где мы» / «прогресс»:
109
+
110
+ ```
111
+ ## Проект: <ИмяПроекта>
112
+
113
+ | Этап | Статус | Детали |
114
+ |------|--------|--------|
115
+ | 1. Документация | ✅ Готово | docs/<name>/SPEC.md |
116
+ | 2. Прототип | ✅ Готово | prototype/src/ |
117
+ | 3. ТЗ | ⚠️ Нужны правки | blueprint_validator: 2 ошибки |
118
+ | 4. Реализация | ⏳ Не начата | — |
119
+
120
+ ➡️ Следующий шаг: исправить ошибки ТЗ → сказать «валидируй» → затем «продолжить».
121
+ ```
122
+
123
+ Статусы: `✅ Готово` / `⚠️ Нужны правки` / `🔄 В процессе` / `⏳ Не начато`
124
+
125
+ ---
126
+
127
+ ## Этап 1: Документация (doc-gen)
128
+
129
+ **Сказать перед запуском:**
130
+ > Начинаем с описания продукта. Я буду задавать вопросы — чем точнее вы опишете
131
+ > идею, тем точнее получится документ. Обычно занимает 5-10 минут диалога.
132
+
133
+ **Действие:** запустить скилл `doc-gen`
134
+ (`~/.config/opencode/skills/doc-gen/SKILL.md`)
135
+
136
+ Выходные документы должны лежать в `docs/<ИмяПроекта>/`.
137
+
138
+ **После завершения — показать краткое резюме:**
139
+ ```
140
+ ✅ Документация создана: docs/<name>/
141
+
142
+ Ключевые сущности (из SPEC.md §Сущности): <список>
143
+ Ключевые операции: <3-5 операций>
144
+ Страницы: <список>
145
+ Роли пользователей: <список>
146
+ ```
147
+
148
+ **Ворота ревью — ждать подтверждения:**
149
+ > Прочитайте docs/<name>/2_PRODUCT_SPEC/SPEC.md.
150
+ > Все ли сущности и операции описаны верно?
151
+ > - Нужны правки → опишите что изменить, я обновлю
152
+ > - Всё верно → скажите **«продолжить»**
153
+
154
+ ---
155
+
156
+ ## Этап 2: Прототип (litefront-prototype) — рекомендуется
157
+
158
+ **Сказать перед запуском:**
159
+ > Создадим кликабельный UI-прототип — все страницы будут работать,
160
+ > но данные симулируются (без реального бэкенда).
161
+ > Поможет визуально проверить SPEC.md и уточнить UX до написания кода.
162
+ >
163
+ > Этот этап можно пропустить — скажите **«пропустить»**, тогда ТЗ
164
+ > будет создаваться только по тексту SPEC.md.
165
+
166
+ **Действие:** запустить скилл `litefront-prototype`
167
+ (`~/.config/opencode/skills/litefront-prototype/SKILL.md`)
168
+
169
+ **После завершения:**
170
+ ```
171
+ ✅ Прототип создан: prototype/
172
+
173
+ Запуск: cd prototype && npm run start:dev → http://localhost:3000
174
+
175
+ Реализованные страницы: <список из прототипа>
176
+ ```
177
+
178
+ **Ворота ревью — ждать подтверждения:**
179
+ > Запустите прототип и проверьте все страницы и переходы.
180
+ > - Нужны изменения в UI → опишите, обновлю прототип
181
+ > - Нужно уточнить SPEC.md → скажите **«назад к документации»**
182
+ > - Всё верно → скажите **«продолжить»**
183
+
184
+ ---
185
+
186
+ ## Этап 3: Техническое задание (tech-blueprint)
187
+
188
+ **Сказать перед запуском:**
189
+ > Создаём 5 технических документов — точное описание как будет построен проект:
190
+ > - **DATABASE_MODEL.md** — схема БД (Prisma ORM, PostgreSQL)
191
+ > - **API_CONTRACTS.md** — GraphQL API: операции, типы, права доступа
192
+ > - **ARCHITECTURE.md** — NestJS-модули и FSD-слайсы фронтенда
193
+ > - **TESTING_PLAN.md** — конкретные тест-сценарии
194
+ > - **IMPLEMENTATION_GUIDE.md** — руководство разработчика: стек, что уже готово, команды
195
+ >
196
+ > После генерации документы автоматически проверяются валидатором на 9 критериев.
197
+
198
+ **Действие:** запустить скилл `tech-blueprint`
199
+ (`~/.config/opencode/skills/tech-blueprint/SKILL.md`)
200
+
201
+ **После завершения — запустить валидатор:**
202
+ ```bash
203
+ python3 ~/.config/opencode/skills/tech-blueprint/scripts/blueprint_validator.py \
204
+ validate "<name>" --output ./blueprint
205
+ ```
206
+
207
+ Если есть ошибки → **исправить перед тем как показывать пользователю** (не переходить к следующему этапу с ошибками).
208
+
209
+ **После успешной валидации — показать резюме:**
210
+ ```
211
+ ✅ ТЗ создано и валидно: blueprint/<name>/3_TECH_BLUEPRINT/
212
+
213
+ Prisma-модели: <список>
214
+ GraphQL-операции по доменам:
215
+ <Домен 1>: query1, mutation1
216
+ <Домен 2>: query2, mutation2
217
+ NestJS-модули для реализации: <список>
218
+ Новые FSD-слайсы: <список (без boilerplate-слайсов)>
219
+ ```
220
+
221
+ **Ворота ревью — ждать подтверждения:**
222
+ > Просмотрите ТЗ, особенно DATABASE_MODEL.md и API_CONTRACTS.md.
223
+ > - Хотите изменить → правьте файлы в blueprint/<name>/3_TECH_BLUEPRINT/ и скажите **«валидируй»**
224
+ > - Хотите полностью пересоздать → скажите **«пересоздать ТЗ»**
225
+ > - Всё верно → скажите **«продолжить»**
226
+
227
+ ---
228
+
229
+ ## Этап 4: Реализация (implement-project)
230
+
231
+ **Сказать перед запуском:**
232
+ > Финальный и самый длительный этап — полная реализация по утверждённому ТЗ.
233
+ > По завершении:
234
+ > - projects/<name>/backend/ — работающий NestJS API
235
+ > - projects/<name>/frontend/ — React SPA
236
+ > - все тесты из TESTING_PLAN.md реализованы
237
+ > - npm run check && npm run test:all зелёные в обоих проектах
238
+
239
+ **Финальная проверка перед запуском:**
240
+ - [ ] SPEC.md утверждён пользователем
241
+ - [ ] Прототип просмотрен (или явно пропущен)
242
+ - [ ] ТЗ прошло валидацию без ошибок (`blueprint_validator.py` → exit 0)
243
+
244
+ Если хотя бы один пункт не выполнен → предупредить и спросить подтверждение:
245
+ > ⚠️ Рекомендую сначала устранить [проблему]. Продолжить всё равно? («да» / «нет»)
246
+
247
+ **Действие:** запустить скилл `implement-project`
248
+ (`~/.config/opencode/skills/implement-project/SKILL.md`)
249
+
250
+ **После завершения:**
251
+ ```
252
+ 🎉 Проект реализован!
253
+
254
+ Запуск бэкенда:
255
+ cd projects/<name>/backend && npm run start:dev
256
+
257
+ Запуск фронтенда:
258
+ cd projects/<name>/frontend && npm run start:dev
259
+
260
+ Все проверки: npm run check && npm run test:all → ✅
261
+
262
+ Что дальше:
263
+ 1. Настроить OIDC-провайдер (Logto/Keycloak) в .env обоих проектов
264
+ 2. Поднять PostgreSQL + Redis (docker compose up -d)
265
+ 3. npm run db:migrations:apply
266
+ ```
267
+
268
+ ---
269
+
270
+ ## Все распознаваемые команды
271
+
272
+ | Команда | Действие |
273
+ |---------|---------|
274
+ | «начать», «старт», «новый проект» | Определить состояние → начать или продолжить |
275
+ | «статус», «где мы», «прогресс» | Таблица состояния всех 4 этапов |
276
+ | «продолжить», «go», «следующий шаг» | Выполнить следующий незавершённый этап |
277
+ | «пропустить» | Пропустить прототип (только для этапа 2) |
278
+ | «назад к документации» | Повторно запустить doc-gen |
279
+ | «пересоздать прототип» | Повторно запустить litefront-prototype |
280
+ | «пересоздать ТЗ» | Повторно запустить tech-blueprint |
281
+ | «валидируй», «проверь ТЗ» | Запустить blueprint_validator → показать результат |
282
+ | «покажи документы» | Перечислить все созданные файлы с путями |
283
+ | «как запустить» | Команды запуска для текущего состояния проекта |
284
+ | «что такое [скилл]» | Объяснить назначение конкретного скилла |
285
+ | «помощь», «help» | Показать эту таблицу |
286
+
287
+ ---
288
+
289
+ ## Обработка ошибок
290
+
291
+ **Документация не отражает идею:**
292
+ → Описание правок от пользователя → обновить SPEC.md → показать что изменилось
293
+
294
+ **Прототип не запускается:**
295
+ → `cd prototype && npm install && npm run start:dev` → показать полный текст ошибки
296
+
297
+ **Ошибки blueprint_validator:**
298
+ → Показать каждую ошибку + объяснение → исправить автоматически где возможно → повторить валидацию
299
+
300
+ **SPEC.md обновлён после создания ТЗ:**
301
+ → Предупредить об устаревании → предложить «пересоздать ТЗ»
302
+
303
+ **Тесты не проходят:**
304
+ → Показать failing tests → предложить исправить → повторить `npm run test:all`
305
+
306
+ **Незнакомый вопрос пользователя:**
307
+ → Ответить в контексте текущего этапа + подсказать следующий шаг
308
+
309
+ ---
310
+
311
+ ## Ключевые принципы поведения
312
+
313
+ 1. **Никогда не переходить к следующему этапу без явного «продолжить»** — всегда ждать
314
+ 2. **Объяснять ЧТО и ЗАЧЕМ** перед каждым действием — один абзац, без лишних деталей
315
+ 3. **Показывать прогресс**: «Этап 2 из 4 — Прототип» в начале каждого блока
316
+ 4. **При ошибке — не продолжать**: исправить → проверить → только потом вперёд
317
+ 5. **Краткие резюме**: 5-10 пунктов ключевых сущностей/операций — не пересказывать документ целиком
318
+ 6. **Один вопрос за раз** — не перегружать пользователя опросником
319
+ 7. **Помнить об ограничениях boilerplate** — не предлагать реализовывать уже готовое (`Profile`, `features/auth`, `pages/404`)