fix(skills): sync SDD headings to 8 in issue and bug-discovery (#260)
* fix(skills): add 8th SDD heading to issue and bug-discovery * fix(skills): sync spec and audit SDD headings to 8 --------- Co-authored-by: opencode-agent <agent@opencode.local>
This commit is contained in:
parent
13942526a1
commit
8b05fa74f7
4 changed files with 19 additions and 8 deletions
|
|
@ -114,19 +114,21 @@ Severity: <warn|fail>
|
||||||
|
|
||||||
1. Load `issue` skill via `skill({ name: "issue" })`.
|
1. Load `issue` skill via `skill({ name: "issue" })`.
|
||||||
2. Сформируй issue body (8 headings: ## Контекст, ## Задача, ## Контракты,
|
2. Сформируй issue body (8 headings: ## Контекст, ## Задача, ## Контракты,
|
||||||
## Инварианты, ## Граничные случаи, ## Вне scope, ## Критерии приемки).
|
## Инварианты, ## Граничные случаи, ## Влияние на связанные компоненты,
|
||||||
|
## Вне scope, ## Критерии приемки).
|
||||||
- Контекст: проблема из audit (<repo>) — <name>: <detail>. Путь: <path>.
|
- Контекст: проблема из audit (<repo>) — <name>: <detail>. Путь: <path>.
|
||||||
Источник: <source>. Severity: <severity>.
|
Источник: <source>. Severity: <severity>.
|
||||||
- Задача: что починить (конкретно, с путями к файлам).
|
- Задача: что починить (конкретно, с путями к файлам).
|
||||||
- Контракты: конкретные изменения (что должно стать после фикса).
|
- Контракты: конкретные изменения (что должно стать после фикса).
|
||||||
- Инварианты: что НЕ ломать при фиксе.
|
- Инварианты: что НЕ ломать при фиксе.
|
||||||
- Граничные случаи: edge cases при фиксе.
|
- Граничные случаи: edge cases при фиксе.
|
||||||
|
- Влияние на связанные компоненты: зависящие audit-категории/оракулы/промпты; paired updates; «нет связанных компонентов» для тривиальных фиксов.
|
||||||
- Вне scope: что НЕ делаем в этом issue.
|
- Вне scope: что НЕ делаем в этом issue.
|
||||||
- Критерии приемки: чек-лист (включая `project-status` проходит эту
|
- Критерии приемки: чек-лист (включая `project-status` проходит эту
|
||||||
категорию после фикса).
|
категорию после фикса).
|
||||||
3. `create-issue({ title: "fix(<scope>): <description>", body, labels: ["tech-debt", "from-audit"] })`
|
3. `create-issue({ title: "fix(<scope>): <description>", body, labels: ["tech-debt", "from-audit"] })`
|
||||||
tool (НЕ raw `gh issue create` — заблокирован deny). tool валидирует
|
tool (НЕ raw `gh issue create` — заблокирован deny). tool валидирует
|
||||||
conventional title + 7 headings + Cyrillic.
|
conventional title + 8 headings + Cyrillic.
|
||||||
4. Верни: issue URL (или ошибку валидации для оркестратора).
|
4. Верни: issue URL (или ошибку валидации для оркестратора).
|
||||||
|
|
||||||
Если gh недоступен → верни: "gh unavailable: <reason>". НЕ retry, НЕ fallback.
|
Если gh недоступен → верни: "gh unavailable: <reason>". НЕ retry, НЕ fallback.
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,6 @@ If a bug is found during work that is outside the scope of the current task:
|
||||||
1. Check `gh issue list` for duplicates.
|
1. Check `gh issue list` for duplicates.
|
||||||
2. Create a GitHub issue via `create-issue` tool (NOT raw `gh issue create`).
|
2. Create a GitHub issue via `create-issue` tool (NOT raw `gh issue create`).
|
||||||
3. Title: `fix(scope): short description` in English.
|
3. Title: `fix(scope): short description` in English.
|
||||||
4. Body: `## Контекст` / `## Задача` / `## Контракты` / `## Инварианты` / `## Граничные случаи` / `## Вне scope` / `## Критерии приемки` (in Russian).
|
4. Body: `## Контекст` / `## Задача` / `## Контракты` / `## Инварианты` / `## Граничные случаи` / `## Влияние на связанные компоненты` / `## Вне scope` / `## Критерии приемки` (in Russian).
|
||||||
5. Continue the current task. Do NOT fix the bug yourself.
|
5. Continue the current task. Do NOT fix the bug yourself.
|
||||||
6. Report to orchestrator: "Created issue #N: ...".
|
6. Report to orchestrator: "Created issue #N: ...".
|
||||||
|
|
@ -36,6 +36,9 @@ Issue должно содержать всё необходимое, чтобы
|
||||||
## Граничные случаи
|
## Граничные случаи
|
||||||
[Что при ошибках: невалидный вход, отказ внешнего сервиса, превышение лимита]
|
[Что при ошибках: невалидный вход, отказ внешнего сервиса, превышение лимита]
|
||||||
|
|
||||||
|
## Влияние на связанные компоненты
|
||||||
|
[Связанные файлы/оракулы/агенты/промпты/валидаторы; paired updates; «нет связанных компонентов» для тривиальных задач]
|
||||||
|
|
||||||
## Вне scope
|
## Вне scope
|
||||||
[Что НЕ делаем в этой итерации]
|
[Что НЕ делаем в этой итерации]
|
||||||
|
|
||||||
|
|
@ -67,8 +70,8 @@ Issue создаёт **subagent** (general type), а не основной аг
|
||||||
**Subagent (полная ответственность):**
|
**Subagent (полная ответственность):**
|
||||||
1. Загрузи навык `issue`
|
1. Загрузи навык `issue`
|
||||||
2. Собери контекст — прочитай файлы из intent summary, пойми задачу, оцени объём (правило дробления ниже)
|
2. Собери контекст — прочитай файлы из intent summary, пойми задачу, оцени объём (правило дробления ниже)
|
||||||
3. Составь self-contained body по шаблону (Контекст → Задача → Контракты → Инварианты → Граничные случаи → Вне scope → Критерии приемки)
|
3. Составь self-contained body по шаблону (Контекст → Задача → Контракты → Инварианты → Граничные случаи → Влияние на связанные компоненты → Вне scope → Критерии приемки)
|
||||||
4. Запусти `create-issue({ title: "...", body: "...", labels: ["..."] })` tool (НЕ raw `gh issue create` — заблокирован deny; tool валидирует conventional title format и headings `## Контекст`/`## Задача`/`## Контракты`/`## Инварианты`/`## Граничные случаи`/`## Вне scope`/`## Критерии приемки`)
|
4. Запусти `create-issue({ title: "...", body: "...", labels: ["..."] })` tool (НЕ raw `gh issue create` — заблокирован deny; tool валидирует conventional title format и headings `## Контекст`/`## Задача`/`## Контракты`/`## Инварианты`/`## Граничные случаи`/`## Влияние на связанные компоненты`/`## Вне scope`/`## Критерии приемки`)
|
||||||
5. Верни URL созданного issue основному агенту
|
5. Верни URL созданного issue основному агенту
|
||||||
|
|
||||||
Main agent НЕ пишет body и НЕ запускает `create-issue` — всё через subagent. Это согласовано с `run-pipeline` skill (Phase 0: "через subagent с `issue` skill") и `AGENTS.md` (Dev Workflow, step 2: "delegate to `task` subagent").
|
Main agent НЕ пишет body и НЕ запускает `create-issue` — всё через subagent. Это согласовано с `run-pipeline` skill (Phase 0: "через subagent с `issue` skill") и `AGENTS.md` (Dev Workflow, step 2: "delegate to `task` subagent").
|
||||||
|
|
@ -101,6 +104,10 @@ Main agent НЕ пишет body и НЕ запускает `create-issue` — в
|
||||||
- Кеш содержит устаревший формат → invalidate, пересчитать
|
- Кеш содержит устаревший формат → invalidate, пересчитать
|
||||||
- Конкурентные запросы на одно видео → первый пишет в кеш, последующие берут из кеша
|
- Конкурентные запросы на одно видео → первый пишет в кеш, последующие берут из кеша
|
||||||
|
|
||||||
|
## Влияние на связанные компоненты
|
||||||
|
- AnalysisController зависит от AnalysisService — без изменений (API сохранён)
|
||||||
|
- «Нет связанных компонентов» для тривиальных задач
|
||||||
|
|
||||||
## Вне scope
|
## Вне scope
|
||||||
- ❌ Кеширование субтитров (отдельная задача)
|
- ❌ Кеширование субтитров (отдельная задача)
|
||||||
- ❌ Инвалидация по времени просмотра видео
|
- ❌ Инвалидация по времени просмотра видео
|
||||||
|
|
@ -132,9 +139,10 @@ create-issue({ title: "type(scope): description", body: "...", labels: ["<label>
|
||||||
|
|
||||||
Tool валидирует: title соответствует conventional format (type(scope): desc,
|
Tool валидирует: title соответствует conventional format (type(scope): desc,
|
||||||
≤80 chars, English), body содержит `## Контекст`, `## Задача`, `## Контракты`,
|
≤80 chars, English), body содержит `## Контекст`, `## Задача`, `## Контракты`,
|
||||||
`## Инварианты`, `## Граничные случаи`, `## Вне scope`, `## Критерии приемки`
|
`## Инварианты`, `## Граничные случаи`, `## Влияние на связанные компоненты`,
|
||||||
headings и на русском (Cyrillic обязательна). При ошибке валидации
|
`## Вне scope`, `## Критерии приемки` headings и на русском (Cyrillic
|
||||||
tool возвращает ошибку и НЕ вызывает gh — почини формат и повтори.
|
обязательна). При ошибке валидации tool возвращает ошибку и НЕ вызывает gh —
|
||||||
|
почини формат и повтори.
|
||||||
|
|
||||||
Label выбирай по типу задачи (совпадает с commit `type`):
|
Label выбирай по типу задачи (совпадает с commit `type`):
|
||||||
- `enhancement` — новая функциональность (`feat`)
|
- `enhancement` — новая функциональность (`feat`)
|
||||||
|
|
|
||||||
|
|
@ -312,6 +312,7 @@ Default stack для типа (хардкод, добавить всегда):
|
||||||
## Контракты (ожидаемое поведение / API)
|
## Контракты (ожидаемое поведение / API)
|
||||||
## Инварианты (правила без исключений)
|
## Инварианты (правила без исключений)
|
||||||
## Граничные случаи (что при ошибках)
|
## Граничные случаи (что при ошибках)
|
||||||
|
## Влияние на связанные компоненты (зависящие файлы/оракулы/агенты/промпты/валидаторы; paired updates; «нет связанных компонентов» для тривиальных задач)
|
||||||
## Вне scope (что НЕ делаем)
|
## Вне scope (что НЕ делаем)
|
||||||
## Критерии приемки (как проверяем)
|
## Критерии приемки (как проверяем)
|
||||||
## Связанные ресурсы (Part of spec, ref к docs/spec/roadmap.md)
|
## Связанные ресурсы (Part of spec, ref к docs/spec/roadmap.md)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue