* feat(feature-spec): add SDD-style Q&A skill for feature planning * docs(pr-172): add handoff, ADR-072, update project-map --------- Co-authored-by: opencode-agent <agent@opencode.local>
5.2 KiB
5.2 KiB
| name | description |
|---|---|
| feature-spec | Lightweight SDD-style Q&A skill for feature planning. Guides the agent through Spec-Driven Development questions before implementation. Produces a structured plan with 7 SDD sections (Контекст, Задача, Контракты, Инварианты, Граничные случаи, Вне scope, Критерии приемки). Also when user says "спека фичи", "feature spec", "план фичи", "обсудим фичу", "spec feature", "спецификация фичи". |
Feature Spec
Лёгкий SDD-скилл: Q&A с юзером по SDD-шаблону → план в чате → issue через issue скилл.
Когда использовать
| Ситуация | Инструмент |
|---|---|
| 1 файл, очевидное поведение | Прямой чат, без формальностей |
| 2+ компонента, бизнес-правила, diff >400 строк | /feature-spec |
| Новый проект с нуля | /spec (9 фаз) |
ПРОТОКОЛ
1. Анализ
Юзер описывает фичу. Агент читает SDD-шаблон (ниже) и определяет, каких данных не хватает.
2. Q&A
Агент задаёт вопросы списком — НЕ гадает. Пример:
Не хватает информации по:
1. Контракты: какой формат запроса/ответа? Какие коды ошибок?
2. Инварианты: какие лимиты? Какой TTL? Какая модель/библиотека?
3. Граничные случаи: что если внешний сервис недоступен? Что если данных нет?
4. Вне scope: что точно НЕ делаем в этой итерации?
Юзер отвечает. Если ответ неполный — агент уточняет. Q&A продолжается пока все 7 секций не заполнены.
3. План
Когда все данные собраны, агент выводит структурированный план:
## Контекст
Зачем: [мотивация]
Контекст: [текущее состояние]
## Задача
[Что делаем — архитектурный подход, пошагово]
## Контракты
[API, форматы, коды ошибок]
## Инварианты
[Правила без исключений: лимиты, ограничения, выбор технологий]
## Граничные случаи
[Что при ошибках: невалидный вход, отказ сервиса, превышение лимита]
## Вне scope
[Что НЕ делаем]
## Критерии приемки
- [ ] Сценарий 1: "пользователь делает X → видит Y"
- [ ] Сценарий 2
4. Handoff
После готовности плана:
- Агент: "План готов. Скажи 'создай issue' чтобы создать issue, потом запусти /run-pipeline."
- Юзер: "создай issue" → загружается
issueскилл →create-issuetool (7 секций) → issue создан - Юзер:
/run-pipeline→ реализация
Правила
- Не гадай — если данных не хватает, задай вопрос
- Будь конкретным — не "используй кеш", а "Redis с TTL 7 дней"
- Спека описывает ЧТО, не КАК — контракты и решения, не алгоритмы
- Каждый пункт 1-3 предложения — если больше, это две задачи
- Если фича простая (1 файл, очевидное поведение) — скажи юзеру что спека не нужна
- Не создавай issues сам — только планируй. Issues через
issueскилл по команде юзера - Не запускай /run-pipeline — юзер делает это сам
- Не создавай файлы — план живёт в чате, потом в issue
- 1 issue = 1 PR — если фича большая, предложи разбить на подзадачи
SDD-шаблон (7 секций)
Совпадает с create-issue validation (PR #169):
| # | Секция | Что содержит |
|---|---|---|
| 1 | ## Контекст |
Зачем (мотивация) + текущее состояние |
| 2 | ## Задача |
Что делаем — пошагово, с путями к файлам |
| 3 | ## Контракты |
Ожидаемое поведение: API, форматы, коды ошибок |
| 4 | ## Инварианты |
Правила без исключений: лимиты, ограничения, технологии |
| 5 | ## Граничные случаи |
Что при ошибках: edge cases, отказы сервисов |
| 6 | ## Вне scope |
Что НЕ делаем в этой итерации |
| 7 | ## Критерии приемки |
Проверяемые сценарии: "X → видит Y" |