| name | appeal |
| description | Апелляционная жалоба по single-document ветке Ф5d. Sonnet-main оркестрирует, Opus-subagent анализирует основания обжалования по контракту 3.1a, Sonnet-subagent оформляет .docx через arbitrum-docx по контракту 3.2.
|
appeal — Апелляционная жалоба
Скилл следует контрактам из shared/subagent-dispatch.md. Итог ветки Ф5d для appeal: один .docx в корне дела.
Предусловия
- Существует
.vassal/case.yaml.
- Существует
.vassal/index.yaml.
- Загружено решение, которое обжалуется, либо его зеркало.
- Доступен
Task(model=opus).
- Доступен formatter
arbitrum-docx.
Переменные сессии
Определи в начале:
today = текущая дата YYYY-MM-DD
docx_path = <case_root>/{{today}} appeal.docx
Фаза 1 — Preview (main-Sonnet)
- Прочитай
.vassal/case.yaml и .vassal/index.yaml.
- Найди источники:
.vassal/mirrors/doc-*.md
- при наличии —
.vassal/analysis/*.md
- при наличии —
hearings/*/analysis.md
- Если
.vassal/index.yaml пуст, не содержит документов, или после сверки с .vassal/mirrors/doc-*.md не осталось ни одного доступного зеркала документа, верни SKILL_UNAVAILABLE с reason no documents и остановись без создания выходных файлов.
- Покажи Сюзерену preview:
- какие документы пойдут в контекст;
- что итог идёт по ветке 3.1a с
READY_FOR_DOCX: processual;
- какой путь будет у
.docx: {{docx_path}}.
- Дождись подтверждения.
Фаза 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:
ROLE: Ты юрист-аналитик в скилле appeal.
THINKING: think hard по умолчанию или override из shared/conventions.md.
CONTEXT:
case_root
- абсолютные пути к
.vassal/case.yaml, .vassal/index.yaml
- абсолютные пути к
.vassal/mirrors/doc-*.md
- при наличии — абсолютные пути к
.vassal/analysis/*.md
- при наличии — абсолютные пути к
hearings/*/analysis.md
TASK:
- проанализировать основания для апелляционного обжалования по АПК/ГПК;
- ранжировать доводы и собрать структуру жалобы;
- использовать только допустимые верхнеуровневые секции:
## Обжалуемый акт
## Основания
## Доводы
## Требования
OUTPUT: единый markdown; последняя строка строго READY_FOR_DOCX: processual.
- Вызови
Task с параметрами:
subagent_type: "general-purpose"
model: "opus"
description: 3-5 слов
- Проверь OUTPUT через валидационный скрипт:
- передай полный текст OUTPUT Opus-subagent в
python3 "$PLUGIN_ROOT/scripts/validate_opus_output.py" --skill appeal --contract 3.1a --stdin;
- скрипт должен вернуть
valid=true.
- Если
valid=false, ровно один раз перезапусти Opus-subagent с напоминанием о контракте 3.1a, разрешённых секциях и обязательном READY_FOR_DOCX: processual, затем повтори валидацию тем же скриптом.
Если и после retry valid=false, покажи errors и останови скилл.
- Подготовь вызов Sonnet-subagent по контракту 3.2:
markdown_input = markdown без последней строки READY_FOR_DOCX: processual
case_meta = поля из .vassal/case.yaml
out_dir = <case_root>
doc_name = {{today}} appeal.docx
- Запусти Sonnet-subagent. При
SKILL_UNAVAILABLE main-Sonnet сам вызывает arbitrum-docx.
Фаза 3 — Verify (main-Sonnet)
- Проверь, что существует
{{docx_path}}.
- Проверь, что файл не пустой.
- Если доступен промежуточный markdown-артефакт или лог subagent-output, проверь наличие
READY_FOR_DOCX: processual.
- Покажи Сюзерену короткое резюме:
- путь к
.docx;
- какие секции сформированы;
- сработал ли fallback formatter-ветки.
Дисциплина
- Не добавлять верхнеуровневые
## секции вне списка Ф5d.
- Не использовать ручную сборку
.docx вместо arbitrum-docx.
- Не превращать апелляцию в multi-document ветку.
Блокер
Если Task(model=opus) недоступен, дважды возвращает невалидный OUTPUT, или formatter-ветка 3.2 не создаёт .docx:
- покажи Сюзерену причину;
- не записывай частичный
.docx;
- не подменяй анализ апелляционных оснований ручной генерацией main-Sonnet.