# ✨ `feature` — снаружи появляется то, чего не было Задача, после которой наблюдаемое поведение меняется в сторону новой возможности. Отвечает на **«что нужно сделать»** и пишется глаголом в неопределённой форме. Общая форма записи (мета, слаг, строка индекса) — [task-format.md](task-format.md). Здесь только то, что у этого типа своё. ## Схема | | | | --- | --- | | Заголовок отвечает на | что нужно сделать («Печатать поле одним куском кода») | | Обязательные разделы | `Затрагивает`, `Критерии приёмки` | | Допустимые сверх того | `Рамки`, `Вопросы` | | Поле места | **Категория** — полка домена беклога | | Индекс | `BACKLOG.md` | | Берётся в работу | да | ## Алгоритм 1. **Проверить, что возможность и правда новая.** Поведение расходится с уже заявленным — это `fix`, а не `feature`, и требования у него другие. 2. **Назвать границы** в разделе `Затрагивает`: эндпоинт или команда, таблица и миграция, формат на диске, публичный тип пакета, внешний сервис. Названы **границы, а не замысел**: «переписать хранилище на новый драйвер» — замысел, `таблица points и её миграция` — граница. Проверяется вопросом «это можно назвать до того, как решено *как* делать?». 3. **Написать критерии приёмки** — 2–5 проверяемых утверждений списком, у каждого назван оракул. Не «работает корректно», а «повторный прогон даёт тот же отпечаток — оракул: команда сверки». 4. **Поставить её на место в списке.** На стройке место называет зависимость: `move <слаг> --after <шаг, без которого нельзя>`. На доработке место в очереди назначает груминг, и конец списка законен. 5. **Проверить, что задача одна.** Отвечается всё, но задача не делается одним заходом и не мерджится целиком — это несколько задач, дроби сразу ([split.md](split.md)) и ставь их в списке подряд. 6. **Реализация** — дело конвейера проекта, не этого скилла. Закрывается `close <слаг> --implemented`: файл и строка удаляются, суть переезжает в `openspec/specs/` и документацию. ## Что видит машина, а что человек Схему типа судит `ready` на входе в работу: **наличие непустого** раздела `Затрагивает` и **число** критериев (меньше двух — отказ, больше пяти — замечание). Наличие оракула проверяется **эвристикой** — словом «оракул» в пункте. `check` этого поимённо не говорит, а считает строкой здоровья (`SKILL.md`, «Что механизировано, а что нет»). Полнота перечня границ машине не видна: границу, которую забыли назвать, она от отсутствующей не отличает. Настоящий оракул от слова «оракул» тоже не отличает. Поэтому в докладе это называется как есть: «проверено число пунктов и наличие границ, годность оракулов и полнота границ — глазами». **Критерии — пол, но расхождение с ними есть дефект критериев.** Видишь, что критерии закрыты, а суть задачи не достигнута — **правь критерии и возвращай задачу**, а не держи невидимое сверх-требование: иначе исполнитель никогда не знает, закончил ли, и мотивирован занижать критерии заранее.