Pular para o conteúdo
Skillpedia
Código em geral48 mil · #4099

semgrep-rule-creator

Ajuda seu agente a criar regras personalizadas para encontrar erros e falhas de segurança no código. Útil para análise estática de código.

O que ela faz

Esta ferramenta ajuda você a criar regras personalizadas para o Semgrep, que é um programa que verifica seu código em busca de erros de segurança ou padrões de programação. Ela garante que suas regras sejam bem testadas e funcionem corretamente.

Quando usar

  • ✓Quando você precisa encontrar um tipo específico de erro de segurança no seu código.
  • ✓Ao criar regras para garantir que seu código siga um padrão específico.
  • ✓Para verificar se dados de fora (como de um usuário) podem causar problemas de segurança ao serem usados em partes sensíveis do código.

Exemplo do que pedir para a IA

“Crie uma regra Semgrep para encontrar onde o `eval()` é usado com entrada do usuário em Python.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/semgrep-rule-creator/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/semgrep-rule-creator/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Você descreve o problema e os casos que devem ou não ser encontrados. A ferramenta ajuda a escrever os testes primeiro e depois a regra, garantindo que ela funcione para todos os casos testados.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill semgrep-rule-creator

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/semgrep-rule-creator/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Criador de Regras Semgrep

Crie regras Semgrep de qualidade de produção com testes e validação adequados.

Quando Usar

Cenários ideais:

  • Escrever regras Semgrep para padrões de bugs específicos
  • Escrever regras para detectar vulnerabilidades de segurança em seu código
  • Escrever regras de modo taint para vulnerabilidades de fluxo de dados
  • Escrever regras para impor padrões de codificação

Quando NÃO Usar

NÃO use esta habilidade para:

  • Executar conjuntos de regras Semgrep existentes
  • Análise estática geral sem regras personalizadas (use a habilidade static-analysis)

Racionalizações para Rejeitar

Ao escrever regras Semgrep, rejeite estes atalhos comuns:

  • "O padrão parece completo" → Ainda execute semgrep --test --config <rule-id>.yaml <rule-id>.<ext> para verificar. Regras não testadas têm falsos positivos/negativos ocultos.
  • "Corresponde ao caso vulnerável" → Corresponder a vulnerabilidades é metade do trabalho. Verifique se os casos seguros não correspondem (falsos positivos quebram a confiança).
  • "O modo taint é exagero para isso" → Se os dados fluem da entrada do usuário para um sink perigoso, o modo taint oferece melhor precisão do que a correspondência de padrões.
  • "Um teste é suficiente" → Inclua casos extremos: diferentes estilos de codificação, entradas sanitizadas, alternativas seguras e condições de limite.
  • "Vou otimizar os padrões primeiro" → Escreva padrões corretos primeiro, otimize depois que todos os testes passarem. Otimização prematura causa regressões.
  • "O dump da AST é muito complexo" → A AST revela exatamente como o Semgrep vê o código. Ignorá-la leva a padrões que perdem variações sintáticas.

Anti-Padrões

Muito amplo - corresponde a tudo, inútil para detecção:

# BAD: Matches any function call
pattern: $FUNC(...)

# GOOD: Specific dangerous function
pattern: eval(...) # security-allowlist: Semgrep sink pattern

Casos seguros ausentes nos testes - leva a falsos positivos não detectados:

# BAD: Only tests vulnerable case
# ruleid: my-rule
dangerous(user_input)

# GOOD: Include safe cases to verify no false positives
# ruleid: my-rule
dangerous(user_input)

# ok: my-rule
dangerous(sanitize(user_input))

# ok: my-rule
dangerous("hardcoded_safe_value")

Padrões excessivamente específicos - perde variações:

# BAD: Only matches exact format
pattern: os.system("rm " + $VAR)

# GOOD: Matches all os.system calls with taint tracking
mode: taint
pattern-sinks:
  - pattern: os.system(...)

Nível de Rigor

Este fluxo de trabalho é rigoroso - não pule etapas:

  • Leia a documentação primeiro: Veja Documentação antes de escrever regras Semgrep
  • Teste primeiro é obrigatório: Nunca escreva uma regra sem testes
  • 100% de testes aprovados é necessário: "A maioria dos testes aprovados" não é aceitável
  • A otimização vem por último: Simplifique os padrões apenas depois que todos os testes passarem
  • Evite padrões genéricos: As regras devem ser específicas, não corresponder a padrões amplos
  • Priorize o modo taint: Para vulnerabilidades de fluxo de dados
  • Um arquivo YAML - uma regra Semgrep: Cada arquivo YAML deve conter apenas uma regra Semgrep; não combine várias regras em um único arquivo
  • Sem regras genéricas: Ao segmentar uma linguagem específica para regras Semgrep - evite a correspondência de padrões genéricos (languages: generic)
  • Anotações de teste todook e todoruleid proibidas: Anotações todoruleid: <rule-id> e todook: <rule-id> em arquivos de teste para futuras melhorias de regras são proibidas

Visão Geral

Esta habilidade orienta a criação de regras Semgrep que detectam vulnerabilidades de segurança e padrões de código. As regras são criadas iterativamente: analise o problema, escreva os testes primeiro, analise a estrutura da AST, escreva a regra, itere até que todos os testes passem, otimize a regra.

Seleção de abordagem:

  • Modo Taint (priorizar): Problemas de fluxo de dados onde a entrada não confiável atinge sinks perigosos
  • Correspondência de padrões: Padrões sintáticos simples sem requisitos de fluxo de dados

Por que priorizar o modo taint? A correspondência de padrões encontra a sintaxe, mas perde o contexto. Um padrão eval($X) corresponde tanto a eval(user_input) (vulnerável) quanto a eval("safe_literal") (seguro). O modo taint rastreia o fluxo de dados, portanto, ele só alerta quando os dados não confiáveis realmente atingem o sink — reduzindo drasticamente os falsos positivos para vulnerabilidades de injeção. <!-- security-allowlist: Semgrep taint-mode explanation -->

…

Perguntas frequentes

O que é Semgrep?

Semgrep é uma ferramenta que analisa seu código para encontrar problemas, como bugs ou vulnerabilidades de segurança, usando regras que você ou outros criam.

O que são 'regras' do Semgrep?

São como receitas que dizem ao Semgrep o que procurar no seu código. Elas podem ser simples, como 'encontre todas as chamadas para esta função', ou mais complexas, como 'encontre onde dados não confiáveis chegam a um ponto perigoso'.

Por que é importante testar as regras?

Testar garante que a regra encontra os problemas que deveria (sem perder nenhum) e não encontra problemas onde não deveria (evitando falsos alarmes). Regras não testadas podem ser inúteis ou até prejudiciais.

Detalhes

Descrição original do autor

Creates custom Semgrep rules for detecting security vulnerabilities, bug patterns, and code patterns. Use when writing Semgrep rules or building custom static analysis detections.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#4099
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas