feat(issue-skill): require feature-spec Q&A before create-issue #82

Merged
slaid098 merged 3 commits from feat/issue-skill/feature-spec-gate into main 2026-08-16 19:21:46 +03:00
Owner

Что сделано

  • .opencode/skills/issue/SKILL.md: новый обязательный шаг ## Feature-spec gate (обязательный шаг перед create-issue) перед созданием issue. Gate: если задача недоспецифицирована (нет ответов на вопросы feature-spec: контракты, инварианты, граничные случаи, влияние на связанные компоненты) → загрузить skill feature-spec, пройти Q&A с пользователем, результат Q&A = body issue.
  • Добавлена таблица маппинга секций feature-spec → заголовки body (1:1, совпадает с валидацией create-issue, 8 названий).
  • Прописан критерий «достаточно специфицировано» одним абзацем (для тривиальных задач gate пропускается без формальностей).
  • Граничные случаи: пользователь уже ответил на вопросы → Q&A не повторяем; bug-issues → gate в облегчённом виде (критерий описан).
  • Указано, что gate не конфликтует с батч-созданием issues и со spec-скиллом (там спека пройдена заранее).
  • .opencode/skills/feature-spec/SKILL.md: зеркальное указание «выход спеки = body будущего issue» (шапка + секция Handoff + правила) и ссылка на issue-скилл / tool create-issue.
  • Копии обоих скиллов в ~/.config/opencode/skills/ синхронизированы байт-в-байт (diff пуст).

Почему

Tool create-issue валидирует только наличие 8 SDD-заголовков, но не содержание — секции могли заполняться формально-пустым текстом. Интеграция с feature-spec бесплатна по форматам: оба используют одинаковые 8 секций, поэтому Q&A стало обязательным gate для недоспецифицированных задач.

Watch out

  • Frontmatter обоих SKILL.md не тронут (name/description валидны).
  • Батч-создание и spec-скилл не затронуты — gate применяется только на этапе до create-issue.
  • Для применения нужен git pull на хосте + рестарт opencode (см. configure-opencode).

Pending

—

Closes #76

Closes #76

## Что сделано - `.opencode/skills/issue/SKILL.md`: новый обязательный шаг `## Feature-spec gate (обязательный шаг перед create-issue)` перед созданием issue. Gate: если задача недоспецифицирована (нет ответов на вопросы feature-spec: контракты, инварианты, граничные случаи, влияние на связанные компоненты) → загрузить skill `feature-spec`, пройти Q&A с пользователем, результат Q&A = body issue. - Добавлена таблица маппинга секций feature-spec → заголовки body (1:1, совпадает с валидацией `create-issue`, 8 названий). - Прописан критерий «достаточно специфицировано» одним абзацем (для тривиальных задач gate пропускается без формальностей). - Граничные случаи: пользователь уже ответил на вопросы → Q&A не повторяем; bug-issues → gate в облегчённом виде (критерий описан). - Указано, что gate не конфликтует с батч-созданием issues и со spec-скиллом (там спека пройдена заранее). - `.opencode/skills/feature-spec/SKILL.md`: зеркальное указание «выход спеки = body будущего issue» (шапка + секция Handoff + правила) и ссылка на issue-скилл / tool create-issue. - Копии обоих скиллов в `~/.config/opencode/skills/` синхронизированы байт-в-байт (`diff` пуст). ## Почему Tool `create-issue` валидирует только наличие 8 SDD-заголовков, но не содержание — секции могли заполняться формально-пустым текстом. Интеграция с feature-spec бесплатна по форматам: оба используют одинаковые 8 секций, поэтому Q&A стало обязательным gate для недоспецифицированных задач. ## Watch out - Frontmatter обоих SKILL.md не тронут (name/description валидны). - Батч-создание и spec-скилл не затронуты — gate применяется только на этапе до create-issue. - Для применения нужен `git pull` на хосте + рестарт opencode (см. configure-opencode). ## Pending — Closes #76 Closes #76
Author
Owner

Code Review Summary

PR добавляет обязательный feature-spec gate в issue-скилл (Q&A перед create-issue для недоспецифицированных задач) и зеркально обновляет feature-spec скилл (выход спеки = body issue). Изменения только в markdown-скиллах, маппинг секций 1:1 корректен с валидатором create-issue.ts (все 8 заголовков совпадают), frontmatter не тронут.

Positives

  • Маппинг-таблица (feature-spec → body issue) точно совпадает с валидацией create-issue.ts — 8 заголовков 1:1, проверено по коду валидатора
  • Критерий «достаточно специфицировано» прописан явно, с облегчёнными путями для тривиальных задач и bug-issues — gate не превращается в бюрократию
  • Граничные случаи продуманы: уже отвеченные вопросы не повторяются, батч-создание и spec-скилл не конфликтуют (Q&A пройден заранее)
  • Cross-file impact проверен: readers (create-issue.ts, run-pipeline, audit, bug-discovery, spec, commands/feature-spec.md) не ломаются — все создают issues с уже заполненными секциями или покрыты облегчённым gate
  • PR body полный: Что сделано / Почему / Watch out / Pending заполнены осмысленно

Suggestions (info, not blocking)

  • PR body [style] Строка Closes #76 задвоена в конце body — косметика, create-pr аппендит её автоматически из issue_number
  • issue/SKILL.md:52 [info] Критерий «достаточно специфицировано» субъективен (LLM-оценка) — приемлемо для скилла, но при желании можно добавить чек-лист из 3 пунктов (поведение при успехе/ошибке, ограничения, затронутые компоненты) как явный список для проверки

Verdict: APPROVE

## Code Review Summary PR добавляет обязательный feature-spec gate в issue-скилл (Q&A перед create-issue для недоспецифицированных задач) и зеркально обновляет feature-spec скилл (выход спеки = body issue). Изменения только в markdown-скиллах, маппинг секций 1:1 корректен с валидатором `create-issue.ts` (все 8 заголовков совпадают), frontmatter не тронут. ### Positives - Маппинг-таблица (feature-spec → body issue) точно совпадает с валидацией `create-issue.ts` — 8 заголовков 1:1, проверено по коду валидатора - Критерий «достаточно специфицировано» прописан явно, с облегчёнными путями для тривиальных задач и bug-issues — gate не превращается в бюрократию - Граничные случаи продуманы: уже отвеченные вопросы не повторяются, батч-создание и spec-скилл не конфликтуют (Q&A пройден заранее) - Cross-file impact проверен: readers (`create-issue.ts`, `run-pipeline`, `audit`, `bug-discovery`, `spec`, `commands/feature-spec.md`) не ломаются — все создают issues с уже заполненными секциями или покрыты облегчённым gate - PR body полный: Что сделано / Почему / Watch out / Pending заполнены осмысленно ### Suggestions (info, not blocking) - **PR body** [style] Строка `Closes #76` задвоена в конце body — косметика, `create-pr` аппендит её автоматически из `issue_number` - **issue/SKILL.md:52** [info] Критерий «достаточно специфицировано» субъективен (LLM-оценка) — приемлемо для скилла, но при желании можно добавить чек-лист из 3 пунктов (поведение при успехе/ошибке, ограничения, затронутые компоненты) как явный список для проверки ### Verdict: APPROVE
slaid098 deleted branch feat/issue-skill/feature-spec-gate 2026-08-16 19:21:46 +03:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
slaid098/opencode-config!82
No description provided.