style: единый вид списков (skills / agents / catalog)

- один рендерер render_listing() для всех списочных команд
- заголовок ВЕРХНИМ РЕГИСТРОМ, строка источника, легенда отметок, группы, итог, «куда ставится»
- skills list и agents list теперь одного вида: имя + мета + отметки + описание
- catalog list — только источники (состав смотреть в skills list), тот же стиль
- skills installed переведён на те же заголовки, убраны англ. вкрапления
- фикс: заголовок группы повторялся перед каждым элементом
- фикс: хвостовые пробелы — rstrip не работал из-за ANSI-reset, добавлен trim_line()
- README: раздел «Правила вывода списков»
This commit is contained in:
eka
2026-09-23 12:46:07 +05:00
parent da70365701
commit 270e006a7a
2 changed files with 236 additions and 91 deletions
+47 -6
View File
@@ -50,6 +50,39 @@ dev/harness/
./scripts/harness catalog list # Источники каталога
```
## Правила вывода списков
Все списочные команды идут через один рендерер — `render_listing()`. Новую
списочную команду нужно добавлять так же: собрать `rows` и вызвать рендерер,
а не печатать таблицу самой.
```
СКИЛЛЫ — доступно к установке ← 1. заголовок ВЕРХНИМ РЕГИСТРОМ
Каталог: /mnt/data/Agent/dev/harness/catalog ← 2. источник, dim
✓ — установлено, · — нет ← 3. легенда, если есть отметки
jakubkrehel-skills (11 скиллов, 267330e) ← 4. группа, мета в скобках
├─ better-ui hermes · opencode ✓ ← 5. имя, мета, отметки
│ Polishes and improves the UI in your… ← 6. описание, обрезка до 72
Итого: 12 скиллов, установлено 0 ← 7. итог
hermes ~/.hermes/skills/catalog ← куда ставится, dim
```
1. **Заголовок** — ВЕРХНИМ РЕГИСТРОМ, формат `<ОБЪЕКТ> — что именно`.
2. **Источник** — второй строкой, dim: `Каталог: <путь>` / `Источник: <путь>`.
3. **Легенда отметок** — `✓ — установлено, · — нет`, только если отметки есть.
4. **Группы** — жёлтым, метаданные в скобках (кол-во, sha, `⚠ сдвинут`), между
группами пустая строка. Нет групп — строки идут сразу после легенды.
5. **Элемент** — `├─ <имя>` (cyan, выравнивание по самому длинному имени), затем
мета (dim, выровнена), затем отметки `<цель> ✓` / `<цель> ·`, затем пометка (yellow).
6. **Описание** — строкой ниже, dim, обрезано до 72 символов.
7. **Итог** — `Итого: N <единица>, установлено M`, ниже dim-строками — куда ставится.
8. **Только русский.** Никаких `Available` / `Installed` вперемешку с русским.
9. **Порядок отметок** = порядок целей из `--target` / `--scope`.
Правила продублированы комментарием в `scripts/harness` над `render_listing()`.
## `skills` — скиллы из каталога
### `skills list` — что доступно к установке
@@ -62,17 +95,25 @@ dev/harness/
```
```
Доступно из каталога (/mnt/data/Agent/dev/harness/catalog)
СКИЛЛЫ — доступно к установке
Каталог: /mnt/data/Agent/dev/harness/catalog
✓ — установлено, · — нет
jakubkrehel-skills 11 скиллов 267330e
├─ better-ui hermes · opencode ✓
├─ better-colors hermes · opencode ·
jakubkrehel-skills (11 скиллов, 267330e)
├─ better-ui hermes · opencode ✓
│ Polishes and improves the UI in your project…
├─ better-colors hermes · opencode ·
│ Helps you build a color system…
...
Итого: 12 скиллов, установлено 1
Поставить: harness skills install <источник> <скилл>|--all
hermes ~/.hermes/skills/catalog
opencode ~/.claude/skills ~/.config/opencode/skills
```
Для git-источников показывается короткий sha; `⚠ сдвинут` — submodule ушёл вперёд
и это ещё не закоммичено.
Для git-источников в скобках группы виден короткий sha; `⚠ сдвинут` — submodule
ушёл вперёд и это ещё не закоммичено.
### `skills installed` — что реально стоит