feature · git:20261008.46339a7 · 2026-10-08 · sha256 03080da5e6a82298

feature git:20261008.46339a7A

Immutable. This exact content never changes and is served at /api/v1/blob/03080da5e6a82298.

---
name: feature
description: 'Create a lightweight Feature Brief (FEAT-NNN) for incremental product work that does not warrant a full PRD. Use when PM mentions "create a feature", "add feature brief", "new feature work", "feature request", "add FEAT", "заведи фичу", "новая фича", or any request to capture a small-to-medium feature without PRD-level process. Trigger liberally — under-triggering forces the agent to improvise freeform docs; over-triggering is recoverable (PM can delete or upgrade to PRD).'
argument-hint: "[описание]"
---

# /polisade:feature [описание] — Добавить фичу

Создание Feature Brief — короткого описания фичи для быстрой работы.

**Это основной способ добавления фич.** Используй PRD только для крупных инициатив.

## Использование

```
/polisade:feature Добавить экспорт в PDF
/polisade:feature Кнопка "Поделиться" в карточке товара
```

## Алгоритм

### Быстрое добавление (по умолчанию)

Если PM даёт короткое описание:

<!-- polisade:exec-denied CAPSULE BEGIN -->
> ⛔ **Если вызов скрипта на этом шаге ты СДЕЛАЛ, и он отклонён или не запустился** (`Command references protected path` / `Install directory is read-protected` / `Filesystem Guard` / `the tool's default permission is 'deny'`, отказ песочницы, ненулевой exit без вывода) — **STOP**. Вызова не было — отказа нет: сначала выполни команду; этот блок описывает её вывод и сам ответом не служит.
> Процитируй отказ дословно. НЕ пересказывай по исходнику, что скрипт «сделал бы»; НЕ собирай dry-run вручную; НЕ переходи к apply/push/pr-create.
> НЕ транскрибируй скрипт (прочитать → записать копию в `/tmp` или в проект → запустить копию): копия не байт-идентична — уезжают классы символов в regex, форма возврата функций, пропадают целые функции — и молча меняется набор применённых изменений.
> Отказ инструмента — это отказ, а не результат. Доложи PM дословный текст отказа и назови следствие: без рабочего вызова скрипта этот шаг выполнить нечем. Причину не придумывай — её называет только сам текст отказа.
<!-- polisade:exec-denied CAPSULE END -->

1. **Возьми семя для FEAT** — номер при создании не вычисляется:

    ```bash
    ${POLISADE_PYTHON:-python3} {plugin_root}/scripts/polisade_id.py new-seed
    ```

    Имя файла — `FEAT-<семя>-<slug>.md`, фронтматтер — `id: FEAT-<семя>` И
    `seed: <семя>` (оба обязательны). Счётчик не читается и не пишется, и
    **Counter drift при создании больше не существует**: номера выдаются только
    `/polisade:sync --apply` на транке, поэтому сталкиваться не с чем. Протокол:
    `skills/tasks/references/compute-next-id.md`.

2. **Write-guard.** Перед `Write` проверь, что
   `backlog/features/FEAT-<семя>-slug.md` не существует. Проверять
   `artifactIndex` нечем: номера ещё нет. При коллизии — новое семя.
3. Создай файл `backlog/features/FEAT-<семя>-slug.md`
4. Заполни базовую информацию
5. Спроси 2-3 уточняющих вопроса:
   - "Какой приоритет: P1 (высокий), P2 (средний), P3 (низкий)?"
   - "Это на несколько часов (S), дней (M) или неделю+ (L)?"
   - Если непонятно: "Можешь описать что именно должно происходить?"
6. **Счётчик не трогай.** `.state/counters.json` пишет только
    `/polisade:sync --apply` на транке — там же, где выдаётся номер.
    Здесь у артефакта номера ещё нет.
7. Обнови PROJECT_STATE.json
8. **PM Checkpoint для M/L** (см. ниже)
9. Покажи результат с рекомендацией следующего шага

### Определение размера (size)

| Size | Описание | Следующий шаг |
|------|----------|---------------|
| S | Несколько часов, очевидная реализация | `/polisade:tasks` сразу |
| M | Несколько дней, понятные требования | `/polisade:tasks` или `/polisade:spec` |
| L | Неделя+, сложная логика | Предложи `/polisade:prd` |

## PM Checkpoint

### Для size M или L — ОБЯЗАТЕЛЬНАЯ остановка:

```
═══════════════════════════════════════════
НУЖНО РЕШЕНИЕ PM
═══════════════════════════════════════════
Контекст: FEAT-001 (Экспорт в PDF)
Размер: M (несколько дней)

Вопрос: Нужна ли техническая спецификация?

1. Да — создать SPEC для проработки архитектуры
2. Нет — сразу /polisade:tasks для создания задач

Рекомендация: 2 (для M достаточно задач)

→ "1" / "2" или "continue" для рекомендации
═══════════════════════════════════════════
```

### Для size L — предложение PRD:

```
═══════════════════════════════════════════
НУЖНО РЕШЕНИЕ PM
═══════════════════════════════════════════
Контекст: FEAT-001 (Система уведомлений)
Размер: L (неделя+)

Вопрос: Это выглядит как крупная инициатива.

1. Создать полный PRD — для детальной проработки
2. Оставить как FEAT — если требования понятны
3. Создать SPIKE — если нужно исследование

Рекомендация: 1 (PRD для L-размера)

→ "1" / "2" / "3" или "continue" для рекомендации
═══════════════════════════════════════════
```

## Шаблон файла

```markdown
---
id: FEAT-<семя>
seed: <семя>       # `polisade_id.py new-seed`; НЕ меняется никогда — по нему
                   # читается ссылка, сделанная до нумерации
title: "[Описание]"
status: ready
created: YYYY-MM-DD
priority: P2
size: M
children: []
---

# Feature: [Описание]

## Что и зачем

**Что делаем:**
[Из описания PM]

**Зачем:**
[Если очевидно — заполни, иначе спроси]

**Для кого:**
[Если очевидно — заполни, иначе "Основные пользователи"]

## Требования

### Должно быть (Must have)
- [ ] [Основное требование из описания]

### Хорошо бы (Nice to have)
- [ ] [Если PM упомянул]

## Критерии готовности

- [ ] Функционал работает
- [ ] [Специфичные критерии если есть]

## Следующий шаг

→ /polisade:tasks FEAT-XXX (для S/M)
→ /polisade:spec FEAT-XXX (если нужна архитектура)
```

## Формат подтверждения

```
═══════════════════════════════════════════
FEATURE BRIEF СОЗДАН
═══════════════════════════════════════════

ID: FEAT-001
Название: Добавить экспорт в PDF
Файл: backlog/features/FEAT-001-export-pdf.md
Приоритет: P2
Размер: M (несколько дней)
Статус: ready

═══════════════════════════════════════════
СЛЕДУЮЩИЙ ШАГ:
   → /polisade:tasks FEAT-001 — создать задачи и начать работу
   → /polisade:spec FEAT-001 — если нужна техническая проработка
   → /polisade:continue — автономная работа
═══════════════════════════════════════════
```

## Генерация slug

Из описания создай короткий slug:
- "Добавить экспорт в PDF" → `export-pdf`
- "Кнопка поделиться" → `share-button`
- Только латиница, lowercase, дефисы

## Важно

- Для size M/L — обязательно PM Checkpoint
- Для size L — предложи PRD
- Не начинай работу над M/L без подтверждения PM
- `/polisade:tasks` создаёт TASK, которые идут в `/polisade:implement`