LegalCheck
jeongsuho-lawyer/legalcheckСтатический анализатор кода для проверки нарушений 14 корейских законов о профессиональных лицензиях (юридические, медицинские, налоговые услуги). 32 правила, детерминированные результаты, поддержка Claude Code и Codex CLI.
Установка
git clone https://github.com/jeongsuho-lawyer/legalcheck.gitREADME
LegalCheck
Можно ли выпускать моё AI-приложение?
Линтер для автоматической проверки исходного кода на предмет нарушений 14 корейских законов о профессиональных лицензиях. Юридические чат-боты, приложения для диагностики здоровья, сервисы налоговой автоматизации — обязательно проверьте перед выпуском.
Предоставлено: Lawfirm Renaissance, адвокат Чон Су Хо — shj@lawren.co.kr | https://lawren.co.kr
/legalcheck
Зачем это нужно
- Число AI-приложений с юридическими консультациями, диагностикой здоровья и налоговой автоматизацией стремительно растёт
- «Добавлю дисклеймер — и всё будет нормально» — опасное заблуждение: законы о медицине, ветеринарии и фармацевтике предусматривают уголовную ответственность даже за бесплатные сервисы (до 5 лет лишения свободы)
- «AI сказал, что всё в порядке» — не является защитой: LLM пропускают отдельные профессиональные области (страховые оценщики, административные агенты) и неверно цитируют судебную практику
- Как ESLint автоматически проверяет качество кода, LegalCheck автоматически проверяет правовые риски
«AI сказал, что всё в порядке» — можно ли доверять этому ответу?
Если спросить Claude или GPT «есть ли нарушения закона?», они дадут ответ. По ключевым законам — о юридической деятельности, медицине — ответ нередко точный.
Но можно ли на основе этого ответа принимать решение о выпуске?
Результаты прямого тестирования на 30 проектах с Claude Opus 4.6 / Sonnet 4.6:
Некоторые профессиональные области пропускаются
| Область | LegalCheck | Opus 4.6 | Sonnet 4.6 |
|---|---|---|---|
| Закон об адвокатуре | ✅ | ✅ | ✅ |
| Закон о медицине | ✅ | ✅ | ✅ |
| Закон о налоговых консультантах | ✅ | ✅ | ⚠️ частичный пропуск |
| Закон о риелторах | ✅ | ✅ | ✅ |
| Закон о патентных поверенных | ✅ | ✅ | ✅ |
| Закон о сертифицированных бухгалтерах | ✅ | ✅ | ✅ |
| Закон о судебных исполнителях | ✅ | ✅ | ✅ |
| Закон об оценщиках имущества | ✅ | ✅ | ✅ |
| Закон о ветеринарии | ✅ | ⚠️ частичный пропуск | ✅ |
| Закон об административных агентах | ✅ | ✅ | ❌ пропуск |
| Закон о таможенных брокерах (A-спецрежим) | ✅ SAFE | ❌ не распознаётся | ❌ не распознаётся |
| Закон о трудовых консультантах (A-спецрежим) | ✅ SAFE | ❌ не распознаётся | ❌ не распознаётся |
| Страховые оценщики (Закон о страховании) | ✅ | ❌ пропуск | ❌ пропуск |
| Закон о фармацевтике | ✅ | ✅ | ✅ |
Ни Opus, ни Sonnet не знают о страховых оценщиках (Закон о страховании). Закон об административных агентах Sonnet также пропускает. A-спецрежим («только консультация — законно») оба не распознают.
Судебная практика цитируется неверно
При трёхкратном повторении одного и того же запроса LLM каждый раз приводил разные номера дел. Упомянутые номера существуют, но относятся к не связанным делам. Дело «Верховный суд 2012до14360» было процитировано как прецедент по незаконной медицинской практике, тогда как в действительности это решение касалось нарушения требований к открытию медицинского учреждения.
На один и тот же вопрос каждый раз даётся разный ответ
При трёхкратном запросе по одному проекту нарушенные законы в целом совпадают, однако приводимые основания, уровень риска и рекомендации каждый раз различаются.
LegalCheck работает иначе
| LegalCheck | Прямой запрос к LLM | |
|---|---|---|
| Проверка 14 областей | Все 32 правилами | 10–11 (3–4 пропускаются) |
| Вынесение вердикта SAFE по A-спецрежиму | «Только консультация — законно» | Не распознаётся |
| Правовые основания | Проверенные адвокатом нормы и судебная практика | Возможны контекстные ошибки и галлюцинации |
| Воспроизводимость результатов | Одинаковый код = одинаковый результат | Каждый раз разный ответ |
| Сканирование всех файлов | Все файлы проекта | Только файлы в контексте диалога |
| Чеклист состава правонарушения | Таблица выполнения условий | Неструктурированное описание |
| Актуальность законодательства | Обновление YAML сразу отражается | Зависит от обучающих данных |
Принцип работы
Этап 1: Статический анализ (scan.py)
Сканирование всего проекта на основе Regex + AST для сбора доказательств по каждому составу
→ Генерация детерминированного JSON-отчёта
Этап 2: Проверка кода (хост-LLM)
Claude/Codex читает JSON-результат + реальный код и фильтрует ложные срабатывания
→ Предоставление итогового отчёта пользователю
14 законов о профессиональных лицензиях
| # | Закон | Основные объекты обнаружения | Тип | Кол-во правил |
|---|---|---|---|---|
| 1 | Закон об адвокатуре | Платные юридические консультации, автоматическое составление документов, посредничество | A | 3 |
| 2 | Закон о медицине | Автоматизация диагностики, назначений, лечения (независимо от платности) | B | 3 |
| 3 | Закон о налоговых консультантах | Составление деклараций, определение налогов, налоговое представительство | A | 3 |
| 4 | Закон о сертифицированных бухгалтерах | Автоматическая генерация аудиторских заключений и справок | A | 2 |
| 5 | Закон о патентных поверенных | Составление и подача заявок на патенты и товарные знаки | A | 2 |
| 6 | Закон о риелторах | Платное посредничество при купле-продаже и аренде недвижимости | A | 2 |
| 7 | Закон об административных агентах | Составление и подача документов в государственные органы | A | 2 |
| 8 | Закон о трудовых консультантах | Составление трудовых документов, представительство при жалобах | A-спецрежим | 2 |
| 9 | Закон о таможенных брокерах | Представительство при таможенном оформлении | A-спецрежим | 2 |
| 10 | Закон об оценщиках имущества | Платная оценка недвижимости и движимого имущества | A | 2 |
| 11 | Закон о ветеринарии | Автоматизация диагностики, назначений, лечения животных | B | 2 |
| 12 | Закон о фармацевтике | Автоматизация приготовления и рекомендации лекарств | B | 2 |
| 13 | Закон о судебных исполнителях | Составление документов и представительство при регистрации и депозите | A | 2 |
| 14 | Страховые оценщики (Закон о страховании) | Автоматическая генерация актов оценки ущерба | A | 2 |
Типы:
- Тип A: Ответственность наступает при наличии признаков возмездности и систематичности. Безвозмездное предоставление общей информации не подпадает.
- Тип A-спецрежим: Тип A + закон прямо выводит консультации и советы из-под ответственности. Приложения только для консультаций — SAFE.
- Тип B: Возмездность не требуется. Сам факт действия запрещён. Ответственность наступает даже для бесплатных и open-source проектов.
Установка
Claude Code
git clone https://github.com/jeongsuho-lawyer/legalcheck.git
cp -r legalcheck/ ~/.claude/skills/legalcheck/
pip install pyyaml jsonschema tree-sitter tree-sitter-typescript tree-sitter-javascriptCodex CLI
git clone https://github.com/jeongsuho-lawyer/legalcheck.git
cp -r legalcheck/ ~/.agents/skills/legalcheck/
pip install pyyaml jsonschema tree-sitter tree-sitter-typescript tree-sitter-javascriptИспользование
/legalcheck
Указание пути к проекту:
/legalcheck ./my-app
Прямой запуск через CLI:
python scripts/scan.py <project_path> --output-format json
.legalcheckrc (опционально)
Файл .legalcheckrc в корне проекта позволяет объявить наличие лицензированного специалиста:
operator:
type: 법무법인
name: 법무법인 XX
skip_domains:
- lawyer-actПараметры CLI
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
--output-format {json,markdown} | Формат вывода | json |
--output-file PATH | Файл вывода | stdout |
--rules-dir PATH | Директория с правилами | ./rules |
--domain DOMAIN | Ручное указание домена | автоопределение |
--include-low | Включить вердикты LOW | MEDIUM и выше |
--exclude GLOB | Исключить пути | — |
--verbose | Отладочные логи | — |
Уровни вердиктов
| Вердикт | Значение | Код завершения |
|---|---|---|
| HIGH | Возможно выполнение состава правонарушения — требуется немедленная проверка | 2 |
| MEDIUM | Часть условий выполнена, рекомендуется консервативная проверка | 1 |
| LOW | Потенциальный риск, справочный уровень | 0 |
| SAFE | Безопасная зона подтверждена (A-спецрежим и др.) | 0 |
Результаты валидации
Валидация на 70 проектах (20 публичных проектов GitHub + 50 синтетических тестов):
| Этап | Precision | Recall | F1 | |------|-----------|--------|----|| | Этап 1: только статический анализ | 92.7% | 94.4% | 93.6% | | Этапы 1+2: с проверкой кода LLM | ~100% | ~98% | ~99% |
Участие и обратная связь
Данный проект не принимает Issues. Обратная связь подаётся через Pull Request.
- Исправление ложных срабатываний / пропусков: PR с добавлением fixture и исправлением правила
- Предложение нового правила: PR с черновиком файла правила и fixture
- Улучшение документации: PR с прямыми правками
Запросы на правовую оценку конкретных ситуаций не принимаются. По вопросам, требующим официальной юридической консультации, обращайтесь в Lawfirm Renaissance.
Подробное руководство по участию — в CONTRIBUTING.md.
Лицензия
Отказ от ответственности
Вывод данного инструмента является уведомлением о результатах сопоставления с образцами и не является юридической консультацией. Для оценки правомерности конкретной ситуации необходима консультация адвоката. Вердикт «HIGH» не означает подтверждённой ответственности, а вердикт «SAFE» не гарантирует полной правомерности.
Контакты
Lawfirm Renaissance
- Адвокат Чон Су Хо
- Email: shj@lawren.co.kr
- Сайт: https://lawren.co.kr