| name | court-practice |
| description | Поиск и анализ судебной практики Верховного Суда РФ (СКГД и СКЭС) по базе из ~5300 обзоров определений ВС РФ за 2018–2026 гг. Используй этот скилл всякий раз, когда пользователь: просит найти судебную практику по какому-либо вопросу; хочет подтвердить правовую позицию ссылками на определения ВС РФ; спрашивает, как суды разрешают тот или иной спор; упоминает СКГД, СКЭС, Верховный Суд, определения ВС; просит подобрать практику для процессуального документа (иска, отзыва, жалобы, заключения); задаёт вопрос по российскому гражданскому, арбитражному, корпоративному, банкротному, семейному, жилищному, земельному, страховому праву и хочет знать позицию судов; просит проанализировать конкретную норму ГК/ГПК/АПК/ЖК/СК/НК/КоАП в контексте судебной практики. Также срабатывай при упоминании «судебная практика», «позиция ВС», «определение ВС», «практика коллегии», «обзор практики», и при любых запросах, где ссылка на практику ВС повысила бы качество ответа — даже если пользователь прямо об этом не просит.
|
Скилл: Поиск по судебной практике ВС РФ (СКГД и СКЭС)
Что это
База содержит ~5300 структурированных обзоров определений Верховного Суда РФ из четырёх
Telegram-каналов (СКГД/СКЭС original, Новости ВС РФ, СУДЕБНАЯ ПРАКТИКА, ЭКОНОМКОЛЛЕГИЯ
FRESH). Период: 2018 — 2026.
Каждый обзор содержит: заголовок, реквизиты определения, фабулу, позиции нижестоящих
судов, позицию Верховного Суда, тематические хештеги, ссылки на нормы.
Тематический охват
Основные направления (по количеству обзоров):
банкротство (350+), гражданский процесс (190+), арбитражный процесс (130+),
недвижимость, убытки, страхование, ЗПП, неустойка, семейные споры, договоры,
аренда, сделки, подряд, корпоративные споры, налоги, моральный вред, лизинг,
судебные расходы, залог, неосновательное обогащение, субсидиарная ответственность,
исковая давность, оспаривание сделок, земельные споры, трудовые споры, жилищные
споры, цессия, ДДУ, деликт, ОСАГО, наследство, IP/авторское право и другие.
Архитектура поиска
База предварительно проиндексирована в двух слоях:
Лексический слой (BM25). Лемматизация через pymorphy3, BM25-индексы по
структурным секциям обзора (заголовок, фабула, позиция нижестоящих судов,
позиция ВС РФ), нормализация номеров дел для дедупликации, удаление стоп-слов.
Семантический слой (Voyage AI). Для каждого обзора рассчитан 1024-мерный
эмбеддинг через voyage-3-large по объединённому тексту «заголовок + позиция ВС +
фабула». Эмбеддинги нормализованы, хранятся в data/embeddings.npy (~21 МБ).
По умолчанию работает гибридный поиск — BM25 и семантика объединяются через
Reciprocal Rank Fusion (RRF). Это покрывает и точные термины, и синонимию.
Когда что лучше
Чистый BM25 (--no-semantic) сильнее на запросах с конкретными терминами:
«двойная продажа», «ст. 333 ГК», номер дела, имя стороны.
Чистая семантика (--semantic-only) сильнее на синонимичных запросах:
«снятие корпоративной вуали» находит про привлечение бенефициаров,
«истребование из чужого незаконного владения» находит про виндикацию.
Гибрид (по умолчанию) — оптимальный baseline для большинства запросов.
Команды поиска
python3 scripts/search.py "ключевые слова"
python3 scripts/search.py "ст. 333 ГК неустойка" --no-semantic
python3 scripts/search.py "снятие корпоративной вуали" --semantic-only
python3 scripts/search.py "запрос" --court СКЭС --limit 15
python3 scripts/search.py "запрос" --tag банкротство
python3 scripts/search.py "запрос" --article "ст. 333 ГК"
python3 scripts/search.py "запрос" --year-from 2024
python3 scripts/search.py "запрос" --year-from 2023 --year-to 2024
python3 scripts/search.py "запрос" --full --limit 5
python3 scripts/search.py "" --tag залог --limit 20
python3 scripts/search.py "запрос" --explain --limit 5
python3 scripts/search.py "запрос" --no-dedup
python3 scripts/search.py --stats
python3 scripts/search.py --list-tags
Технические зависимости и настройка
Установка зависимостей
Скрипты автоматически ставят при первом запуске: pymorphy3, rank_bm25, numpy,
voyageai. Если установка не удалась, выполните вручную:
pip install --break-system-packages pymorphy3 rank_bm25 numpy voyageai
API-ключ Voyage
Семантика и гибридный поиск требуют ключ Voyage AI. Скрипты ищут его в двух местах,
в порядке приоритета:
-
Переменная окружения VOYAGE_API_KEY (стандартный способ для CLI/dev):
export VOYAGE_API_KEY=<your-key>
-
Файл data/.voyage_config.json (для claude.ai web, где env-переменные
недоступны). Структура:
{
"voyage_api_key": "pa-..."
}
В этой сборке скилла ключ уже зашит в data/.voyage_config.json — скилл работает
сразу из коробки. Чтобы заменить ключ (например, после ротации) — откройте файл
и впишите новый в поле voyage_api_key.
Без ключа работает только режим --no-semantic (чистый BM25). Скрипты делают
graceful fallback на BM25 с предупреждением.
Стоимость: один поисковый запрос эмбеддит сам запрос (~$0.0001). Эмбеддинги
запросов кешируются в data/query_cache.pkl, повторные одинаковые запросы
бесплатны.
Сборка индекса
Если файлы индекса отсутствуют или устарели:
python3 scripts/index.py --rebuild
python3 scripts/embed.py --rebuild
Эмбеддинги опциональны. Без них работает только BM25.
Скоринг
BM25-слой
- BM25 по секциям с весами: заголовок ×3, позиция ВС ×3, хештеги ×5,
полный текст ×1, фабула ×0.7.
- Boost за свежесть: до +30% для свежих, экспонента с периодом 4 года.
- Boost за фразовое соседство: ×1.5 при близости лемм запроса (≤3 позиции).
- Boost за структурированность: ×1.10 если есть выделенная секция «Позиция ВС».
Семантический слой
Cosine similarity между нормализованным эмбеддингом запроса (через voyage-3-large
с input_type=query) и эмбеддингами документов.
Гибрид (RRF)
RRF(d) = Σ_L w_L / (60 + rank_L(d))
где L — списки top-100 от BM25 и от семантики, w_L — вес списка (по умолчанию
оба = 1.0), 60 — константа из статьи Cormack (2009).
Преимущество RRF: не требует калибровки скоров между разнородными системами
(BM25 даёт 30-200, cosine даёт 0-1). Работает по рангам, а не по значениям.
После RRF применяются те же boost-факторы (свежесть, фразовое соседство), плюс
дедупликация по нормализованному номеру дела.
Лемматизация и стоп-слова
Запрос автоматически лемматизируется и очищается от стоп-слов:
«оспаривание», «оспорил», «оспоренный» дают одну лемму «оспорить»;
слова «суд», «вс», «рф», «дело», «определение» отфильтровываются как шум.
Стратегия поиска для агента
Гибрид как baseline. Для большинства запросов первый вызов — без флагов:
python3 scripts/search.py "запрос" --limit 10
Узкие запросы — BM25. Если запрос содержит точные термины (статья закона,
имя стороны, реквизиты дела) — лучше --no-semantic. Семантика на таких запросах
может уводить в тематически близкое, но фактически нерелевантное:
python3 scripts/search.py "ст. 333 ГК неустойка" --article "ст. 333 ГК" --no-semantic
python3 scripts/search.py "А40-12345/2023" --no-semantic
Абстрактные запросы — семантика. Доктринальные понятия, которые могут
описываться разными словами:
python3 scripts/search.py "снятие корпоративной вуали" --semantic-only --limit 10
python3 scripts/search.py "виндикация" --semantic-only --limit 10
python3 scripts/search.py "кабальная сделка" --semantic-only --limit 10
Семантика найдёт обзоры, в которых эти понятия описаны через ст. 53.1 ГК,
«истребование из чужого незаконного владения», «ст. 179 ГК» и т. п.
Несколько запросов с синонимами для полноты. Даже семантика не идеальна.
Для важной задачи делай 2–4 запроса с разными формулировками и объединяй:
python3 scripts/search.py "снятие корпоративной вуали" --semantic-only
python3 scripts/search.py "контролирующее лицо ответственность" --tag банкротство
python3 scripts/search.py "" --article "ст. 53.1 ГК"
Сужение через фильтры. Если результатов слишком много:
--court СКЭС, --year-from 2023, --tag, --article.
Глубокий анализ через --full. После поиска топ-релевантных запроси полный
текст лучших — без этого ответ будет поверхностным.
Диагностика через --explain. Покажет ранг в BM25-списке и в семантическом,
скоры обоих, применённые boost-факторы. По вкладу видно, что работает.
Если ничего не найдено: переформулируй с доктринальной лексикой; включи
семантику если был --no-semantic; проверь смежные хештеги через --list-tags;
если темы реально нет в базе — честно скажи.
Формат ответа пользователю
Для каждого релевантного акта:
- Реквизиты: полное наименование определения (номер, дата, дело), коллегия.
- Фабула (кратко, 2–3 предложения): кто, с кем, о чём спор.
- Позиция ВС РФ: ключевые правовые выводы — самое ценное, дай максимум содержания.
- Релевантность: как данный акт соотносится с запросом, почему полезен.
- Рекомендация по применению: как использовать в иске, отзыве, как контраргумент.
Общая аналитика (в конце):
Тенденция в практике ВС по данному вопросу. Эволюция позиций или противоречия
между актами. На что обратить внимание при использовании.
Если нужен файл
Когда пользователь готовит документ (иск, отзыв, заключение, аналитическую записку),
оформи подборку практики в структурированном виде, пригодном для включения в документ.
Важно
- Не придумывай судебные акты — выдавай только то, что реально есть в базе.
- Если по запросу мало релевантного, скажи об этом честно и предложи альтернативы.
- База содержит обзоры, а не полные тексты определений — рекомендуй обращаться к
полному тексту на сайте ВС РФ или в КонсультантПлюс при необходимости.
- Всегда указывай реквизиты определения, чтобы пользователь мог проверить.
- Если индекс отсутствует — пересобери:
python3 scripts/index.py --rebuild && python3 scripts/embed.py --rebuild.
- Файл
data/query_cache.pkl создаётся автоматически и накапливает эмбеддинги
поисковых запросов. Удаление безопасно — пересоздастся при следующем поиске.