Andrey Epifancev 069c5643b1 feat(plugins): мод /feature — панель фичи, перенос в обвязку (#7)
Мод Claude Code жил во временной папке сессии obsidian-voice-note и в
новых сессиях не загружался. Перенесён как есть в plugins/feature/,
плагин переименован plan-progress → feature (команда /feature, запасные
/progress и /feature-pane). Поведение не менялось.

- README мода: что показывает, контракт с форматами обвязки (ledger,
  ## Findings, Decisions в design.md, планы, .bounded), разработка.
- Сгенерированные движком типы (.claude-plugin/types/) — в .gitignore.
- Строки о моде в CLAUDE.md и README обвязки; install.sh его пока не ставит.

Проверено: claude plugin test plugins/feature — 22/22, claude plugin
validate — без ошибок, tsc — чисто, bash tests/run.sh — 157/157.

Refs #7

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:37:42 +04:00

48 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# feature — панель фичи для Claude Code
Мод Claude Code: команда `/feature [ветка | issue | план]` открывает панель по веткам в работе — где фича и чей ход, что сделано и что требует внимания человека. Только чтение: мод ничего не пишет в репозитории.
```
‹ feat/10-obsidian-wrapper 6/7 ›
○ ● ○ ○ ○ ○ ○
#10 · openspec: obsidian-wrapper · по SDD-ledger
Этап: ручная проверка (Task 7) ход за тобой
1: ○ Документы 5 2: ● Задачи 6/7 3: ○ Рулинги 10 4: ○ Отложено 14
```
## Что показывает
- **Этап и чей ход** — по тому, какие артефакты есть: brainstorming → ревью спеки → ревью плана → исполнение → финальное ревью → ручная проверка → ветка на сервере (PR).
- **1 Документы** — proposal, design, спеки capability, план, SDD-ledger. Enter открывает файл в `glow -t` в соседней панели iTerm (Terminal.app — новое окно, иначе `open`; без glow — `less`).
- **2 Задачи** — задачи плана со статусами по ledger (SDD шаги плана не отмечает), шаги раскрываются по Enter.
- **3 Рулинги** — решения из `## Decisions made without discussion`, кроме принятых человеком, с маркером `R-n`; Enter раскрывает обоснование и цену ошибки.
- **4 Отложено** — находки `deferred` и находки без статуса (`!`); Enter раскрывает пояснение к статусу.
Вкладка по умолчанию — по этапу: до старта исполнения документы, при исполнении задачи, на ревью PR рулинги. Клавиши: `1`–`4` вкладки, `9`/`0` ветки, `e`/`h` раскрыть все и скрыть готовые задачи, `r` обновить. Цифры работают в любой раскладке.
## Что читает (контракт с обвязкой)
| Источник | Что берётся |
|---|---|
| `git worktree list` в корне сессии | ветки в работе; ветка на `main` без работы не показывается |
| `.superpowers/sdd/<plan>/progress.md`, `plan-path` | статусы задач (`Task N: complete`, `fix round`), `R-n (design #m)`, `Task N is manual`, строки `Final…` |
| таблица `## Findings` в ledger (`\| Маркер \| Суть \| Статус \|`) | отложенное; без таблицы — предварительный подсчёт по строкам ledger |
| `docs/superpowers/plans/*.md` | задачи (`### Task N: …`) и шаги (`- [ ]`), `Issue: #N` |
| `openspec/changes/<id>/` | proposal, design, `specs/*/spec.md`; `## Decisions made without discussion` в design.md |
| `.bounded`, `feat/<issue>-…`, `@{u}` | bounded-задача, номер issue, ветка на сервере |
Меняется формат одного из этих источников — меняется и мод, в том же PR.
## Разработка
- Тесты: `claude plugin test plugins/feature`; проверка манифеста и вызовов: `claude plugin validate plugins/feature`.
- Типы: движок пишет их в `.claude-plugin/types/` при загрузке мода (в git не попадают); после этого `npx -p typescript tsc -p plugins/feature --noEmit`.
- Запуск из worktree с перезагрузкой при правках: `claude --plugin-dir <worktree>/plugins/feature`.
- Логика разбора — чистые функции в `hooks/parse.ts` (тестируются напрямую), отрисовка и ввод-вывод — `hooks/register.tsx`.
## Ограничения
- Корень сессии должен быть git-репозиторием: workspace из нескольких репозиториев (`.wt/<фича>/<репо>`) пока не поддерживается.
- Фон панели в полноэкранном режиме рисует Claude Code ключом темы `composerSidebarBackground`; поменять его можно только своей темой (`~/.claude/themes/<имя>.json`).