---
name: feature-start
description: Инициализация работы над новой задачей (фичей) в репозитории e1c.aswe — создание feature-ветки от develop и генерация шаблонов документов и тестов. Использовать, когда руководитель проектов сообщает о старте новой задачи, просит «завести задачу», «начать фичу», «создать ветку под задачу» или вызывает /feature-start.
---

# Навык: Инициализация новой задачи (feature-start)

## Назначение

Стандартизирует старт работы над задачей для руководителя проектов (РП):
скрипт [script/feature_start.os](script/feature_start.os) создаёт feature-ветку
от актуального `develop` и каталог `features/{task-id}/` с заготовками:
бизнес-требования, критерии приёмки, сценарий Gherkin для Vanessa-Automation
и шаблон модульного теста YaxUnit.

Имя ветки и имя каталога состоят только из номера задачи (без краткого
описания) — использование краткого наименования в имени ветки ранее
вызывало проблемы на последующих этапах работы с ветками задач.

## Когда применять

- РП говорит, что начинает новую задачу/фичу, просит завести ветку и заготовки.
- Вызвана команда `/feature-start`.

НЕ применять, если ветка под задачу уже существует (тогда предложить
`git checkout` на неё) или если пользователь хочет только один из артефактов.

## Обязательный диалог перед запуском скрипта

Перед вызовом скрипта агент ОБЯЗАН получить у пользователя три значения
(спросить только недостающие; ничего не выдумывать самостоятельно):

1. **Номер задачи** (`task-id`) — строго целое положительное число.
   Если пользователь дал не число — переспросить. Это единственная часть
   номера/описания, которая попадает в имя ветки и имя каталога артефактов.
2. **Краткое описание задачи** — 3–7 слов, по-русски допустимо; используется
   только в тексте шаблонов документов (заголовки требований, критериев
   приёмки, Gherkin-сценария), в имя ветки и каталога не попадает.
3. **Ссылка на задачу** в системе трекинга (URL). Если трекер не используется —
   явно подтвердить у пользователя и передать строку `нет`.

Ничего не запускать, пока все три значения не подтверждены пользователем.

## Запуск

Из корня репозитория (Windows, PowerShell или bash):

```
oscript .claude/skills/feature-start/script/feature_start.os <task-id> "<краткое описание>" "<ссылка на задачу>"
```

Пример:

```
oscript .claude/skills/feature-start/script/feature_start.os 143 "Отчет по продажам за период" "https://tracker.example.com/task/143"
```

Аргументы с пробелами обязательно заключать в кавычки.

## Что делает скрипт (по шагам)

1. Формирует имя ветки `feature/{task-id}`.
2. Проверяет, что такой ветки нет ни локально, ни на `origin` — иначе exit 1.
3. Проверяет чистоту рабочего каталога (`git status --porcelain`) — иначе exit 1.
4. Переключается на `develop` и выполняет `git pull` (если ветка есть на origin).
5. Создаёт новую ветку от `develop` и переключается на неё.
6. Создаёт каталог `features/{task-id}/` с файлами:
   `requirements.md`, `acceptance-criteria.md`, `{task-id}.feature`,
   `{task-id}-yaxunit.bsl`.

## Интерпретация результатов

- **Exit code 0** — успех. Передать РП список созданных файлов из вывода
  скрипта (кликабельными ссылками) и предложить начать с заполнения
  `Требования.md` и `КритерииПриемки.md`, затем детализировать `.feature`
  и тест YaxUnit. Можно предложить помощь в заполнении.
- **Exit code 1, «ветка уже существует»** — не пытаться обходить проверку
  (не удалять ветки без явной просьбы!). Пересказать пользователю
  рекомендации из STDOUT и спросить, как поступить.
- **Exit code 1, «незакоммиченные изменения»** — показать пользователю список
  изменённых файлов и варианты из STDOUT (commit / stash / отмена). Отмену
  изменений выполнять только после явного подтверждения — она необратима.
- **Exit code 1, ошибка git (checkout/pull/сеть)** — показать вывод git,
  диагностировать причину (нет ветки develop, нет доступа к origin, конфликт
  pull) и предложить решение; скрипт повторно запускать только после
  устранения причины.

## Ограничения

- Скрипт меняет состояние git-репозитория (checkout, pull, создание ветки) —
  не запускать его «на пробу» без подтверждённых данных.
- Скрипт не делает commit и push: созданные заготовки остаются
  незакоммиченными, коммитит их РП после заполнения.
