Форма без согласия
PDN.FORM.NO_CONSENT
Email, телефон или имя в форме — но нет чекбокса согласия на обработку ПДн.
high · ст. 9v1.1.1 · MIT · local-first
Один каталог правил для исходников, живого DOM и CI. legitAgent показывает файл, строку, норму и следующий шаг: от формы без согласия и метрики без opt-in до cookie, рекламы и витрины. Работает локально по умолчанию, без платного тарифа и обязательного облака.
PDN.FORM.NO_CONSENThighContact.tsx:18PDN.COOKIE.NO_REJECTmediumCookieBanner.vue:42PDN.POLICY.NO_LINKfixedPrivacyLink.tsx:7Эвристическая проверка кода, не юридическое заключение.
Пятнадцать детекторов по коду. Каждая находка — с id правила, статьёй закона и подсказкой, как исправить.
PDN.FORM.NO_CONSENT
Email, телефон или имя в форме — но нет чекбокса согласия на обработку ПДн.
high · ст. 9PDN.TRACKER.NO_CONSENT
Метрика, gtag, GA, Meta Pixel или VK.Retargeting стартуют сразу, без проверки согласия.
high · ст. 6PDN.POLICY.NO_LINK
В проекте не найдена ссылка на политику обработки персональных данных.
high · ст. 18.1PDN.FORM.PRECHECKED_CONSENT
Галочка согласия уже стоит — такое «согласие» не считается полученным.
high · ст. 9PDN.COOKIE.NO_REJECT
Cookie-баннер предлагает только «Принять», без реальной кнопки отказа.
medium · ст. 9PDN.TRANSFER.FOREIGN_TRACKER
GA, Meta Pixel и аналоги могут означать трансграничную передачу ПДн.
medium · ст. 12
Все детекторы активны: формы и согласие, политика, метрики, cookie, иностранные трекеры,
локализация и уведомление РКН (только если есть форма с ПДн, серьёзность low),
ERID, условия продажи / реквизиты / возврат.
scan-url прогоняет тот же набор по HTML живой страницы, ждёт гидрацию SPA
и в изолированных сессиях сравнивает cookie, storage и network до/после Reject и Accept.
Полный список — в каталоге правил.
Что нового
От первого scan до evidence pack — одинаковые правила, одинаковые уровни серьёзности, одинаковый формат для разработчика и CI.
140 seed-кейсов и 700 вариантов помогают ловить регрессии парсеров, а не только демонстрационные ошибки.
scan-url сравнивает cookie, storage и network до и после Reject и Accept в изолированной сессии.
Baseline, changed-files, confidence threshold и SARIF позволяют блокировать только новые достоверные находки.
Cursor, Claude Code, Kimi и другие клиенты с MCP. В Cursor ещё скиллы /check, /scan, /scan-url.
{
"mcpServers": {
"legitagent": {
"command": "npx",
"args": ["-y", "--prefer-online", "@legit-agent/mcp@latest"]
}
}
}
Инструменты: scan, review, autofix, create_baseline, scan_url, list_rules, explain_rule, generate_policy, get_law. Scan поддерживает changed-files, baseline, incremental cache и confidence gate; autofix по умолчанию dry-run.
Node.js 20+, без установки:
npx @legit-agent/cli@latest scan
npx @legit-agent/cli@latest scan ./my-site --json --sarif --lang en
npx @legit-agent/cli@latest scan ./my-site --cache
npx @legit-agent/cli@latest fix ./my-site
npx @legit-agent/cli@latest scan-url https://example.com
npx @legit-agent/cli@latest init-policy --operator "ООО Пример"
В CI фиксируйте версию @1.1.1, а для автоматического получения свежего релиза используйте @latest. Baseline, changed-files и confidence threshold блокируют только новые достоверные находки. fix сначала делает dry-run; --write применяйте после проверки preview.
Исходники, DOM, cookie-метаданные, SARIF и evidence pack обрабатываются на вашем ПК или CI-runner-е.
Собственного облака у legitAgent нет. Режим offline не вызывает LLM и ничего не отправляет наружу.
Можно явно подключить локальную модель с /chat/completions API или OpenRouter с запрошенными ZDR и запретом data collection; тогда наружу уйдут только поля находок,
выдержки норм и ограниченные связанные фрагменты кода, а не весь репозиторий. Это настройки маршрутизации/провайдера, а не абсолютная гарантия хранения: перед включением OpenRouter проверьте его политику и выбранного провайдера; redaction — best effort.
Важно: screenshots из evidence pack могут визуально содержать персональные или другие чувствительные данные. Передавайте и храните их с соответствующими ограничениями доступа; перед публикацией обязательно проверьте изображения вручную. Для OpenRouter LEGITAGENT_LLM_MAX_COST_USD ограничивает отправку новых batches только после получения usage.cost; последний batch может превысить порог, и это не hard provider spend cap.
Текущий benchmark содержит 140 seed-кейсов: 40 synthetic и 100 real-world source-групп — всего 700 parser-stability сценариев. Метрики исходных примеров и форматных вариантов считаются отдельно; новые случаи проходят строгую проверку технических признаков и разметки.
offline — defaultlocal — ваш endpointopenrouter — ваш API key