sharp-edges
sharp-edges
O que ela faz
Esta ferramenta analisa códigos, configurações ou interfaces para encontrar pontos onde os desenvolvedores podem cometer erros de segurança sem perceber. Ela foca em "armadilhas" de design que tornam o caminho inseguro mais fácil do que o seguro.
Quando usar
- ✓Ao revisar o design de uma nova API ou biblioteca.
- ✓Ao auditar arquivos de configuração em busca de opções perigosas.
- ✓Ao avaliar como uma biblioteca criptográfica é fácil ou difícil de usar corretamente.
Exemplo do que pedir para a IA
“Analise esta configuração de API para ver se há 'armadilhas' de segurança.”
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
Mensagem pronta para colar
Como funciona
Ela procura por padrões comuns em APIs e configurações que historicamente levaram a erros de segurança. Isso inclui coisas como permitir que desenvolvedores escolham algoritmos fracos, usar padrões inseguros ou ter opções que desabilitam a segurança facilmente.
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 sharp-edgesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/sharp-edges/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Suporte upstream incluído
Arquivos de suporte são incluídos em caminhos relativos à skill. Veja UPSTREAM-NOTICE.md para suas fontes fixadas, licenças, hashes e alterações de importação.
name: sharp-edges description: "Identifica APIs propensas a erros, configurações perigosas e designs que facilitam erros de segurança. Use ao revisar designs de API, esquemas de configuração, ergonomia de bibliotecas criptográficas ou ao avaliar se o código segue 'seguro por..."
Análise de Bordas Afiadas
Avalia se APIs, configurações e interfaces são resistentes ao uso indevido por desenvolvedores. Identifica designs onde o "caminho fácil" leva à insegurança.
Quando Usar
- Revisando decisões de design de API ou biblioteca
- Auditando esquemas de configuração para opções perigosas
- Avaliando a ergonomia de APIs criptográficas
- Avaliando interfaces de autenticação/autorização
- Revisando qualquer código que exponha escolhas relevantes para segurança aos desenvolvedores
Quando NÃO Usar
- Bugs de implementação (use revisão de código padrão)
- Falhas na lógica de negócios (use análise específica do domínio)
- Otimização de desempenho (preocupação diferente)
Princípio Central
O fosso do sucesso: O uso seguro deve ser o caminho de menor resistência. Se os desenvolvedores precisam entender criptografia, ler a documentação cuidadosamente ou lembrar regras especiais para evitar vulnerabilidades, a API falhou.
Racionalizações a Rejeitar
| Racionalização | Por que está Errada | Ação Necessária |
|---|---|---|
| "Está documentado" | Desenvolvedores não leem a documentação sob pressão de prazo | Torne a escolha segura a opção padrão ou única |
| "Usuários avançados precisam de flexibilidade" | Flexibilidade cria armadilhas; a maioria dos usos "avançados" é copiar e colar | Forneça APIs de alto nível seguras; oculte primitivas |
| "É responsabilidade do desenvolvedor" | Transferência de culpa; você projetou a armadilha | Remova a armadilha ou torne-a impossível de usar indevidamente |
| "Ninguém faria isso de verdade" | Desenvolvedores fazem tudo imaginável sob pressão | Assuma confusão máxima do desenvolvedor |
| "É apenas uma opção de configuração" | Configuração é código; configurações erradas vão para produção | Valide configurações; rejeite combinações perigosas |
| "Precisamos de compatibilidade com versões anteriores" | Padrões inseguros não podem ser mantidos; | Deprecie ruidosamente; force a migração |
Categorias de Bordas Afiadas
1. Armadilhas na Seleção de Algoritmo/Modo
APIs que permitem aos desenvolvedores escolher algoritmos convidam à escolha errada.
O Padrão JWT (exemplo canônico):
- Cabeçalho especifica algoritmo: o atacante pode definir
"alg": "none"para ignorar assinaturas - Confusão de algoritmo: chave pública RSA usada como segredo HMAC ao mudar de RS256 para HS256
- Causa raiz: Permitir que entrada não confiável controle decisões críticas de segurança
Padrões de detecção:
- Parâmetros de função como
algorithm,mode,cipher,hash_type - Enums/strings selecionando primitivas criptográficas
- Opções de configuração para mecanismos de segurança
Exemplo - PHP password_hash permitindo algoritmos fracos:
// DANGEROUS: allows crc32, md5, sha1
password_hash($password, PASSWORD_DEFAULT); // Good - no choice
hash($algorithm, $password); // BAD: accepts "crc32"
2. Padrões Perigosos
Padrões que são inseguros, ou valores zero/vazios que desativam a segurança.
O Padrão de Tempo de Vida do OTP:
# What happens when lifetime=0?
def verify_otp(code, lifetime=300): # 300 seconds default
if lifetime == 0:
return True # OOPS: 0 means "accept all"?
# Or does it mean "expired immediately"?
Padrões de detecção:
- Timeouts/tempos de vida que aceitam 0 (infinito? expiração imediata?)
- Strings vazias que ignoram verificações
- Valores nulos que pulam a validação
- Padrões booleanos que desativam recursos de segurança
- Valores negativos com semântica indefinida
Perguntas a fazer:
- O que acontece com
timeout=0?max_attempts=0?key=""? - O padrão é a opção mais segura?
- Algum valor padrão pode desativar completamente a segurança?
3. APIs Primitivas vs. Semânticas
APIs que expõem bytes brutos em vez de tipos significativos convidam à confusão de tipos.
O Padrão Libsodium vs. Halite:
// Libsodium (primitives): bytes are bytes
sodium_crypto_box($message, $nonce, $keypair);
// Easy to: swap nonce/keypair, reuse nonces, use wrong key type
// Halite (semantic): types enforce correct usage
Crypto::seal($message, new EncryptionPublicKey($key));
// Wrong key type = type error, not silent failure
Padrões de detecção:
…
Perguntas frequentes
O que é uma 'armadilha de segurança' (footgun)?
É um recurso de design que parece útil, mas pode ser facilmente mal utilizado de uma forma que cause um problema de segurança, muitas vezes sem que o usuário perceba.
Por que a documentação não é suficiente?
Porque, sob pressão, os desenvolvedores muitas vezes não leem a documentação completa. A ferramenta foca em tornar o uso seguro o caminho mais fácil, em vez de depender apenas da leitura da documentação.
Isso encontra todos os bugs de segurança?
Não, esta ferramenta foca em problemas de design que levam a erros de segurança. Ela não encontra bugs de implementação (como erros de digitação) ou falhas na lógica de negócios.
Detalhes
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #4158
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
dashboard-builder
Ajuda seu agente a criar painéis de monitoramento úteis. Ele transforma dados em gráficos que respondem a perguntas importantes sobre o sistema.
affaan-m/ECC
dev-team
Simula uma equipe de desenvolvimento colaborativa, onde diferentes papéis respondem a um problema juntos. É útil para obter múltiplas perspectivas sem trocar de agente manualmente.
affaan-m/ECC
ecc-council
Faz seu agente reunir um conselho de quatro vozes para tomar decisões difíceis. É útil quando há várias opções boas e é preciso debater antes de escolher.
affaan-m/ECC