---
name: plane-task
description: Флоу работы с задачами в Plane для проекта AERO. Use when стартует или закрывается этап/под-этап (есть спека или план); когда по ходу работы найден баг, техдолг или идея (захват); когда нужно сменить статус задачи, дописать ссылку на план/MR или прокомментировать изменение задачи.
---

# Задачи в Plane — флоу проекта AERO

Трекер — self-hosted Plane. Доска — операционный вид супервизора: этапы, задачи,
захваченные находки. Источники правды по архитектурным решениям остаются в репо
(`docs/DECISIONS.md`, `docs/ROADMAP.md`) — Plane на них ссылается, не дублирует.

## Константы

| Что | Значение |
|---|---|
| Проект | AERO, `2bb09981-95b1-4dcd-b567-6601a32eae59`, identifier `AERO` |
| Workspace | `aero` |
| Доска | `https://plane.zeonbot.com/aero/projects/2bb09981-95b1-4dcd-b567-6601a32eae59/issues/` |
| GitHub | `https://github.com/ErnsetAirapetov/AERO` |
| Исполнитель | «AI Эрнест» `bdf903a4-d77b-4ba4-89a2-417696691bc6` (`ai-agent@smeta-ai.dev`) |

Статусы (используем только эти три; Todo/Cancelled не трогаем):

| Статус | UUID |
|---|---|
| Бэклог | `8a1f99c8-652c-4a01-ada4-72d492299762` |
| В работе | `3fb8ebb5-8a7c-45aa-88a2-6c8fffe74b0b` |
| Готово | `b18f4751-427a-4222-92be-2b8bb416b0c8` |

> Доступ настроен 2026-07-16: аккаунт «AI Эрнест» добавлен в workspace `aero`
> (роль Member) и в проект AERO (роль Admin) через Django-shell в api-поде —
> рецепт в `C:\Repos\GitLab\zeon\deployment\apps\plane\API.md`. Ключ —
> `PLANE_API_KEY` в `.claude/settings.local.json`.

## Маппинг на модель AERO

- **Этап роадмапа / плана** (M5, S2, …) → **модуль** Plane.
  **Именование модуля (конвенция владельца, 2026-07-16):**
  `Эпик N — <название по-русски> (этап <код>)` — сквозная нумерация «Эпик 1,
  2, …», название по-русски, внутренний код этапа (S2/M5/…) — только в скобках
  в конце. Полностью английские названия запрещены; англ. остаются только
  имена собственные (MEMEX) и коды этапов в скобках.
- **Под-этап / задача этапа** (S2-1, S2-2, M5a, …) → **задача** в модуле.
- **Находка по ходу** (баг, техдолг, идея) → задача в «Бэклог», метка `captured`.
- Эпиков на CE нет — иерархия через модуль + `parent`.

## Когда задача обязательна

**Этап или крупное изменение** (есть спека/план в `docs/superpowers/`) — задача
обязательна.

**Находка по ходу** — задача обязательна **немедленно**, в «Бэклог», метка
`captured`. Захват не прерывает текущую работу: записал и продолжил.

**Не требует задачи:** рутина внутри уже заведённой задачи (опечатка, попутный
рефакторинг, правка теста).

## Жизненный цикл задачи этапа

1. Спека/план утверждены и закоммичены (`docs/superpowers/specs|plans/…md`).
2. **Завести задачу.** Работа идёт сейчас → «В работе», дата начала = сегодня.
   Откладывается → «Бэклог», без даты начала.
3. Ссылки на спеку/план → в описание + Plane Links.
4. Ветка `feature/<slug>` (существующая конвенция AERO, не переименовываем под
   трекер) → коммиты → гейт `bash scripts/verify.sh` зелёный.
5. MR открыт → номер задачи в описании MR; ссылка на MR → Plane Links + комментарий.
6. Мердж + зелёный гейт → «Готово» + итоговый комментарий.

**Гард на «Готово».** Ставить только когда изменения реально влиты **и** verify
реально прогнан (не «должно пройти»). Зелёная доска при красном репозитории хуже,
чем её отсутствие.

## Обязательные поля

| Поле | Правило |
|---|---|
| Название | По-русски, по сути: `deploy: канарейка стенда шлёт heartbeat в TG` |
| Описание | Зачем и что, критерий готовности, ссылки на артефакты (путь + GitHub-ссылка) |
| Исполнитель | AI-аккаунт (по умолчанию; UUID — после доступа) |
| Метки | Обязательны **тип + область**; спец — по ситуации |
| Приоритет | **Всегда**, по рубрике ниже |
| Модуль | Этап (S2, M5, …) — заводим модуль на этап |
| Родитель | Только при настоящей декомпозиции. Баг, найденный при работе над фичей, — **не** её подзадача |
| Дата начала | При переходе в «В работе» |

### Метки — канонический список

- **тип:** `feat` `fix` `docs` `refactor` `test` `chore`
- **область:** `orchestrator` `engine` `claude` `telegram` `beads` `director`
  `vcs` `library` `prompts` `config` `deploy` `infra` `product`
- **спец:** `captured` `tech-debt` `research` `blocked`

> `product` (добавлена 2026-07-16) — область для задач о курсе продукта:
> ADR по роадмапу/определению 1.0, ревизия идейного слоя (PM-WORKFLOW,
> PROJECT-MODEL) — то, что не привязано к пакету кода.

Новую метку заводим, только если ни одна не подходит, — и **сразу дописываем в
этот файл**, иначе через полгода будет три десятка меток-синонимов.

На доске есть метки владельца (`concepts`, `admin`) — они не из канона, но их
**не трогаем и не переиспользуем** без его указания.

**Модуль Plane ≠ пакет кода.** Модуль Plane — этап/крупный скоуп («S2 — демон на
Linux»). Пакет кода отражается меткой области.

### Приоритет

| Приоритет | Когда |
|---|---|
| `urgent` | Сломан `main`, гейт или боевой стенд; блокирует всё |
| `high` | Блокирует текущий этап; баг в рабочем сценарии |
| `medium` | Плановая работа этапа — дефолт для `feat` |
| `low` | Улучшение, техдолг, косметика |

## Шаблон описания

```html
<p><b>Зачем:</b> …</p>
<p><b>Что делаем:</b> …</p>
<p><b>Готово, когда:</b> …</p>
<p><b>План:</b> docs/superpowers/plans/ГГГГ-ММ-ДД-тема.md<br>
<a href="https://github.com/ErnsetAirapetov/AERO/blob/main/docs/superpowers/plans/ГГГГ-ММ-ДД-тема.md">открыть на GitHub</a></p>
```

Для захваченной находки — короче: что, где, чем грозит, «найдено при работе над <задача>».

## Комментарии — эволюция задачи

Комментарий **обязателен**, когда задача меняется: изменился скоуп, отклонились
от плана, вскрылся блокер, принято решение, влияющее на задачу. Формат:

```html
<p><b>Что изменилось:</b> …</p>
<p><b>Почему:</b> …</p>
<p><b>Следствие:</b> …</p>
```

При закрытии — итог: что сделано + ссылка на MR.

Архитектурные решения живут в `docs/DECISIONS.md` (ADR-lite). Комментарий в
Plane на решение **ссылается**, а не дублирует: источник правды один.

## Связка с кодом

- Ветка: `feature/<slug>` — конвенция AERO (см. AGENTS.md), номер задачи Plane
  в ветку не тащим.
- MR: заголовок как принято (Conventional Commits по-русски), в описании —
  `Plane: <IDENTIFIER>-<N>` + ссылки на спеку и план.
- Ссылка на MR → в Plane Links задачи.

## Роутинг моделей — не жжём токены

| Работа | Кто делает |
|---|---|
| Механика: создать/обновить задачу по готовым полям, сменить статус, прочитать список | Сабагент **`plane-scribe`** (haiku) |
| Чтение с интерпретацией («что делали по engine, для ретроспективы») | Сабагент общего назначения на **sonnet** |
| Название, описание, метки, приоритет, комментарий об эволюции | **Главная модель сессии** |

Правило: формулировки и решения вниз не делегируем — качество содержания важнее
экономии. Механику в главном контексте не крутим — она жжёт токены и ничего не
решает.

Вызов писаря: агент `plane-scribe`, на вход — готовый блок полей (название,
описание_html, метки, приоритет, статус, дата начала, родитель, модуль), на
выход — номер задачи + URL.

⚠️ **Новый сабагент регистрируется с задержкой** (скилы видны сразу). Сразу после
создания файла вызов может упасть с «agent type not found» — агент появится сам,
перезапуск Claude Code не нужен. Если ждать некогда — вызови агента общего
назначения на haiku, передав ему правила из `.claude/agents/plane-scribe.md`.

## Пробелы Plane CE

На self-hosted CE **404** отдают: `list_modules`, `list_work_item_types`,
`get_project_members`, `get_features`, `list_projects`. Остальное (задачи, метки,
статусы, комментарии, ссылки) работает.

**404 в MCP ≠ «данных нет».** Прежде чем сделать вывод, проверь через REST:
`https://plane.zeonbot.com/api/v1`, заголовок `X-API-Key`, токен — в переменной
окружения `PLANE_API_KEY`. Типов задач (Epic) на CE нет: иерархия — через
`parent` и модули. Подводные камни REST (UTF-8 на Windows, статусы по UUID,
неидемпотентные комментарии) — см. `plane-scribe.md`.
