Мод 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>
48 lines
4.6 KiB
Markdown
48 lines
4.6 KiB
Markdown
# 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`).
|