Первичный правовой анализ дела с итогом в markdown и .docx. Используй, когда юрист просит «проанализировать дело», «сделать правовой анализ», «проверить сроки», «оценить перспективы», «проверить досудебный порядок» или «дать правовую оценку». Ветка Ф5a: Sonnet-main оркестрирует, Opus-subagent делает анализ по контракту 3.1a, Sonnet-subagent оформляет .docx через arbitrum-docx по контракту 3.2.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Первичный правовой анализ дела с итогом в markdown и .docx. Используй, когда юрист просит «проанализировать дело», «сделать правовой анализ», «проверить сроки», «оценить перспективы», «проверить досудебный порядок» или «дать правовую оценку». Ветка Ф5a: Sonnet-main оркестрирует, Opus-subagent делает анализ по контракту 3.1a, Sonnet-subagent оформляет .docx через arbitrum-docx по контракту 3.2.
legal-review — Первичный правовой анализ
Скилл работает по паттерну Sonnet-main -> Opus-subagent -> Sonnet-subagent -> arbitrum-docx и следует контрактам из shared/subagent-dispatch.md. Main-Sonnet не вставляет тексты документов inline: в субагентные вызовы передаются только абсолютные пути.
при наличии — предыдущие аналитические артефакты из .vassal/analysis/*.md
Если .vassal/index.yaml пуст, не содержит документов, или после сверки с .vassal/mirrors/doc-*.md не осталось ни одного доступного зеркала документа, верни SKILL_UNAVAILABLE с reason no documents и остановись без создания выходных файлов.
Покажи Сюзерену короткий preview:
какие файлы пойдут в контекст Opus-subagent;
что будет создано: {{md_path}} и {{docx_path}};
что итог идёт по single-document ветке 3.1a с финальной строкой READY_FOR_DOCX: analytical.
Дождись подтверждения.
Фаза 2 — Apply (main-Sonnet + Opus-subagent + Sonnet-subagent)
Перед любым Task(...) ещё раз проверь, что .vassal/index.yaml содержит документы и список доступных .vassal/mirrors/doc-*.md не пуст; если документов нет, верни SKILL_UNAVAILABLE с reason no documents и остановись без создания выходных файлов.
Собери prompt Opus-subagent строго по контрактам 3.0 и 3.1a:
использовать только допустимые верхнеуровневые секции:
## Квалификация
## Схема сторон
## Анализ
## Выводы
OUTPUT: единый markdown; последняя строка строго READY_FOR_DOCX: analytical.
Вызови Task с параметрами:
subagent_type: "general-purpose"
model: "opus"
description: 3-5 слов
Проверь OUTPUT через валидационный скрипт:
передай полный текст OUTPUT Opus-subagent в
python3 "$PLUGIN_ROOT/scripts/validate_opus_output.py" --skill legal-review --contract 3.1a --stdin;
скрипт должен вернуть valid=true.
Если valid=false, ровно один раз перезапусти Opus-subagent с напоминанием о контракте 3.1a, обязательной структуре и маркере READY_FOR_DOCX: analytical, затем повтори валидацию тем же скриптом.
Если и после retry valid=false, покажи errors и останови скилл.
Сохрани валидный markdown-оригинал как есть в {{md_path}}.
Подготовь вход для Sonnet-subagent по контракту 3.2:
markdown_input = markdown без последней строки READY_FOR_DOCX: analytical
case_meta = поля из .vassal/case.yaml: court, case_number, judge, our_party, our_client, other_parties
out_dir = {{analysis_dir}}
doc_name = legal-review-{{today}}.docx
Запусти Sonnet-subagent по контракту 3.2. Если он возвращает SKILL_UNAVAILABLE, main-Sonnet сам вызывает arbitrum-docx с теми же doc_type, header, title, body.
Ожидаемый итог ветки 3.2: абсолютный путь к созданному .docx.
Фаза 3 — Verify (main-Sonnet)
Проверь, что существуют:
{{md_path}}
{{docx_path}}
Прочитай {{md_path}} и проверь:
есть ## Схема сторон;
есть блок ````mermaid```;
последняя строка строго READY_FOR_DOCX: analytical;
нет верхнеуровневых ## секций вне разрешённого списка.
Проверь {{docx_path}}:
файл существует;
файл не пустой.
Покажи Сюзерену короткое резюме:
путь к markdown-оригиналу;
путь к .docx;
перечень верхнеуровневых секций.
Дисциплина
Не использовать sidecar-изображения и отдельные графические preview.
Не использовать markdown-only ветку 3.1c и не пропускать Sonnet-subagent.
Не вставлять тексты зеркал inline в prompt main-Sonnet.
Не добавлять верхнеуровневые ## секции вне списка Ф5a.
Не заменять arbitrum-docx ручной сборкой .docx.
Блокер
Если Task(model=opus) недоступен, дважды возвращает невалидный OUTPUT, или formatter-ветка 3.2 не смогла создать .docx даже после main-fallback:
сообщи Сюзерену, какая именно проверка не прошла;
не подменяй Opus-анализ или formatter ручной генерацией;