semgrep-rule-creator — скилл для Claude Code: писать правила
Скилл помогает создавать собственные Semgrep-правила для поиска уязвимостей безопасности и багов в коде. Пригодится, если нужно настроить статический анализ под конкретные паттерны вашего проекта.
npx skills add trailofbits/skills --skill semgrep-rule-creator -a claude-codeЧто делает semgrep-rule-creator
semgrep-rule-creator руководит процессом написания Semgrep-правил от начала до конца: анализ проблемы, написание тестов, разбор AST, создание правила и итерация до прохождения всех тестов. Скилл требует установки Semgrep и работает через semgrep --test для валидации каждого правила.
В основе два подхода: режим taint для отслеживания потока данных (когда нужно поймать, как пользовательский ввод попадает в опасную функцию) и pattern matching для синтаксических паттернов. Скилл приоритизирует taint mode как более точный метод с меньшим количеством ложных срабатываний. Выходная структура строгая: одна папка на правило, внутри YAML-файл с самим правилом и файл с тестами, аннотированными # ruleid: и # ok:.
Скилл блокирует частые ошибки: широкие паттерны, которые матчат всё подряд; правила без тестов на безопасные случаи; пропуск AST-анализа; оптимизацию раньше, чем правило работает. Обязателен запрос документации Semgrep перед написанием — семь ссылок на гайды по синтаксису, testing и taint mode.
Какие задачи решает
- Обнаружить инъекции и уязвимости, специфичные для вашего стека технологий
- Автоматизировать проверку на нарушение внутренних стандартов кода
- Отслеживать паттерны опасного потока данных от источника к синку
- Валидировать правило на тестовых случаях без ложных срабатываний
- Расширить встроенные Semgrep-правила пользовательской логикой
Примеры запросов агенту
- Напиши Semgrep-правило для поиска `eval()` с пользовательским вводом
- Создай правило taint mode, которое ловит SQL-инъекции в Django
- Напиши правило для проверки на использование небезопасного шифрования
Как установить semgrep-rule-creator
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill semgrep-rule-creator -a claude-code2Вручную: положить файлы
~/.claude/skills/semgrep-rule-creator/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/semgrep-rule-creator/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill semgrep-rule-creator -a codex2Вручную: положить файлы
.agents/skills/semgrep-rule-creator/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill semgrep-rule-creator -a cursor2Вручную: положить файлы
.cursor/skills/semgrep-rule-creator/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install trailofbits/skills semgrep-rule-creator2Вручную: положить файлы
.github/skills/semgrep-rule-creator/SKILL.md1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill semgrep-rule-creator -a gemini-cli2Командой платформы
gemini skills install https://github.com/trailofbits/skills --path plugins/semgrep-rule-creator/skills/semgrep-rule-creatorВручную: положить файлы
.devin/skills/semgrep-rule-creator/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill semgrep-rule-creator -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора35
Весь набор →Похожие
Вопросы о semgrep-rule-creator
Как установить semgrep-rule-creator в Claude Code?
Выполни в терминале npx skills add trailofbits/skills --skill semgrep-rule-creator -a claude-code, затем откройте ~/.claude/skills/semgrep-rule-creator/SKILL.md.
Что делает semgrep-rule-creator?
Это скилл, который проводит разработчика через все этапы создания Semgrep-правила: от анализа проблемы и написания тестов до валидации через semgrep --test. Скилл следит, чтобы правило было специфичным, протестировано на безопасные случаи и без ложных срабатываний.
В чём разница между taint mode и pattern matching?
Pattern matching ловит синтаксис, но может матчить и безопасный код (ложные срабатывания). Taint mode отслеживает поток данных от источника (например, request.args) к синку (например, eval), поэтому точнее для инъекций. Скилл приоритизирует taint mode, но позволяет переключаться между подходами.