| name | catalog |
| description | Каталогизация документов судебного дела — генерация таблицы документов в .xlsx и обновление саммари в индексе. Используй, когда юрист просит «покажи все документы по делу», «сделай таблицу документов», «каталог документов», «реестр материалов дела», «обнови описания документов», «сгенерируй опись». Также используй после intake, когда нужна сводная таблица для человека. НЕ используй для правового анализа (это legal-review) или обновления индекса без таблицы (это update-index).
|
Catalog — Каталогизация документов дела
Скилл работает по контракту preview → confirm → apply → verify. Оркестрацию полностью ведёт Claude-main: он читает .vassal/index.yaml, при необходимости обогащает короткие summary напрямую из .vassal/mirrors/doc-*.md, запускает scripts/generate_table.py и записывает краткую строку в .vassal/history.md.
Предварительные условия
- Существует
.vassal/index.yaml с записями о документах.
- Если в индексе есть документы с короткими
summary, для них должны существовать md-зеркала в .vassal/mirrors/.
- Если индекс пуст — сообщи Сюзерену, что сначала нужно загрузить документы через intake.
Фаза 1 — Preview (Claude-main, read-only)
- Прочитай
.vassal/index.yaml.
- Найди документы, у которых
summary короче 20 символов. Составь точный список doc-ID для обогащения.
- Проверь, что для каждого документа из списка существует
.vassal/mirrors/doc-{ID}.md. Отсутствующее зеркало — blocker, его нужно явно показать в preview.
- Покажи Сюзерену план:
N документов всего в индексе;
N документов будут обогащены summary;
- если документов для обогащения немного — перечисли
id + title, если больше 100 — сгруппируй список в preview, но сохрани точный перечень для apply;
- будет создан или перезаписан файл
Таблица документов.xlsx.
- Если
Таблица документов.xlsx уже существует в корне дела — отдельно предупреди в preview, что файл будет перезаписан.
ЗАПРЕЩЕНО в этой фазе: любые записи в index.yaml, запуск скриптов, создание файлов.
Фаза 2 — Подтверждение
Дождись подтверждения Сюзерена. Если операция отменена — остановись без изменений.
Фаза 3 — Apply (Claude-main, --write)
- Перед любыми изменениями повторно проверь, что для каждого подтверждённого
doc-ID на обогащение существует .vassal/mirrors/doc-{ID}.md. Если хотя бы одно зеркало пропало после preview — остановись без изменений в index.yaml, без запуска скрипта и без записи в history.md.
- Определи
PLUGIN_ROOT по трёхступенчатому fallback:
CLAUDE_PLUGIN_ROOT из окружения;
- первый совпавший путь по шаблону
~/.claude/plugins/cache/vassal-litigator-cc/*;
- если оба варианта недоступны — запроси путь у Сюзерена и не запускай скрипт до ответа.
- Проверь, что
"[PLUGIN_ROOT]/scripts/generate_table.py" существует. Если путь невалиден — остановись без изменений в index.yaml, без запуска скрипта и без записи в history.md.
- Только после успешной валидации зеркал и
PLUGIN_ROOT выполни обогащение:
- для каждого
doc-ID из подтверждённого списка прочитай .vassal/mirrors/doc-{ID}.md;
- сгенерируй
summary длиной не более 120 символов по содержимому зеркала;
- запиши новый
summary обратно в .vassal/index.yaml только для этого документа.
- Запусти:
python3 "[PLUGIN_ROOT]/scripts/generate_table.py" --case-root "[CASE_ROOT]"
- Если скрипт завершился с
exit 0, считай таблицу успешно сгенерированной:
- при наличии
openpyxl будет создан Таблица документов.xlsx;
- при
ImportError из-за отсутствия openpyxl скрипт сам переключится на CSV fallback и создаст Таблица документов.csv.
- Только после успешной генерации таблицы добавь краткую строку в
.vassal/history.md в формате ### [YYYY-MM-DD HH:MM] catalog ... с числом обогащённых summary и путём к итоговой таблице.
Фаза 4 — Verification (Claude-main)
- Подтверди, что в корне дела существует
Таблица документов.xlsx, либо Таблица документов.csv, если сработал fallback.
- Проверь, что
.vassal/index.yaml остаётся валидным YAML.
- Покажи Сюзерену итог:
- сколько документов всего в индексе;
- сколько
summary были обогащены;
- путь к итоговой таблице (
.xlsx или .csv).
Идемпотентность
Повторный запуск catalog не создаёт дублей: он перезаписывает Таблица документов.xlsx и обновляет только пустые или неполные summary в index.yaml. Существующие достаточные описания не перезаписываются.
Граничные случаи
- Документ без md-зеркала → включи его в preview как blocker для apply.
- Очень много документов (
>100) → группируй список doc-ID в preview, но apply всё равно должен использовать точный перечень.
Таблица документов.xlsx уже существует → предупреди в preview, что файл будет перезаписан.