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

Closed
opened 2026-08-16 18:06:18 +03:00 by slaid098 · 0 comments
Owner

Контекст

Tool create-issue валидирует наличие 8 SDD-заголовков в body, но issue-скилл не обязывает агента пройти Q&A — секции могут быть заполнены формально-пустым содержимым. Скилл feature-spec производит ровно те же 8 секций (Контекст, Задача, Контракты, Инварианты, Граничные случаи, Влияние на связанные компоненты, Вне scope, Критерии приемки) — интеграция естественна и бесплатна по части форматов.

Задача

  1. В issue SKILL.md добавить обязательный gate перед созданием issue: если задача пользователя недоспецифицирована (нет ответов на вопросы feature-spec: контракты, инварианты, граничные случаи, влияние на связанные компоненты) → загрузить skill feature-spec, пройти Q&A с пользователем, результат Q&A = body issue.
  2. Прописать явный маппинг: выходные секции feature-spec → заголовки body, валидируемые create-issue (1:1).
  3. В feature-spec SKILL.md зеркально указать: выход спеки — это body будущего issue; после Q&A создание идёт через issue-скилл / tool create-issue.
  4. Копии обоих скиллов в .opencode/skills и ~/.config/opencode/skills — байт-идеальный синк (по skill configure-opencode).

Контракты

  • Frontmatter обоих SKILL.md не ломается (name/description валидны).
  • Маппинг секций: 8 названий совпадают строка-в-строку с валидацией create-issue (Контекст, Задача, Контракты, Инварианты, Граничные случаи, Влияние на связанные компоненты, Вне scope, Критерии приемки).

Инварианты

  • Поведение для батч-создания issues одним агентом сохраняется (последовательный create-issue, возврат [{number,url,title}]).
  • Для тривиальных/полностью специфицированных задач gate не должен превращаться в бюрократию — критерий «достаточно специфицировано» описать одним абзацем.

Граничные случаи

  • Пользователь уже ответил на вопросы в исходном сообщении → Q&A не повторяем, используем готовые ответы.
  • Bug-issues: feature-spec gate применяется в облегчённом виде (описать критерий).

Влияние на связанные компоненты

  • spec-скилл (новые проекты) уже создаёт issues пачкой — проверить, что его флоу не конфликтует с новым gate (там спека уже пройдена заранее).

Вне scope

  • Изменение валидации create-issue tool.
  • Изменения run-pipeline / оракула — отдельные issues.

Критерии приемки

  • issue SKILL.md содержит явный шаг gate со ссылкой на feature-spec и критерий «достаточно специфицировано».
  • feature-spec SKILL.md содержит указание, что выход = issue body (8 секций), и ссылку на issue-скилл.
  • Таблица маппинга секций присутствует и совпадает с валидацией create-issue.
  • diff копий скиллов между каталогами пуст.
## Контекст Tool `create-issue` валидирует наличие 8 SDD-заголовков в body, но issue-скилл не обязывает агента пройти Q&A — секции могут быть заполнены формально-пустым содержимым. Скилл `feature-spec` производит ровно те же 8 секций (Контекст, Задача, Контракты, Инварианты, Граничные случаи, Влияние на связанные компоненты, Вне scope, Критерии приемки) — интеграция естественна и бесплатна по части форматов. ## Задача 1. В issue SKILL.md добавить обязательный gate перед созданием issue: если задача пользователя недоспецифицирована (нет ответов на вопросы feature-spec: контракты, инварианты, граничные случаи, влияние на связанные компоненты) → загрузить skill `feature-spec`, пройти Q&A с пользователем, результат Q&A = body issue. 2. Прописать явный маппинг: выходные секции feature-spec → заголовки body, валидируемые create-issue (1:1). 3. В feature-spec SKILL.md зеркально указать: выход спеки — это body будущего issue; после Q&A создание идёт через issue-скилл / tool create-issue. 4. Копии обоих скиллов в .opencode/skills и ~/.config/opencode/skills — байт-идеальный синк (по skill configure-opencode). ## Контракты - Frontmatter обоих SKILL.md не ломается (name/description валидны). - Маппинг секций: 8 названий совпадают строка-в-строку с валидацией create-issue (Контекст, Задача, Контракты, Инварианты, Граничные случаи, Влияние на связанные компоненты, Вне scope, Критерии приемки). ## Инварианты - Поведение для батч-создания issues одним агентом сохраняется (последовательный create-issue, возврат [{number,url,title}]). - Для тривиальных/полностью специфицированных задач gate не должен превращаться в бюрократию — критерий «достаточно специфицировано» описать одним абзацем. ## Граничные случаи - Пользователь уже ответил на вопросы в исходном сообщении → Q&A не повторяем, используем готовые ответы. - Bug-issues: feature-spec gate применяется в облегчённом виде (описать критерий). ## Влияние на связанные компоненты - spec-скилл (новые проекты) уже создаёт issues пачкой — проверить, что его флоу не конфликтует с новым gate (там спека уже пройдена заранее). ## Вне scope - Изменение валидации create-issue tool. - Изменения run-pipeline / оракула — отдельные issues. ## Критерии приемки - issue SKILL.md содержит явный шаг gate со ссылкой на feature-spec и критерий «достаточно специфицировано». - feature-spec SKILL.md содержит указание, что выход = issue body (8 секций), и ссылку на issue-скилл. - Таблица маппинга секций присутствует и совпадает с валидацией create-issue. - diff копий скиллов между каталогами пуст.
Sign in to join this conversation.
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#76
No description provided.