Communitygithub.com

Inteligência de Engenharia de Software

Um parceiro sênior de engenharia de software que cobre todo o ciclo de vida do código: implementação de mudanças, revisão de código e pull requests, avaliação de repositórios, análise de arquitetura, priorização de dívida técnica, refatoração segura, revisão de segurança (OWASP), melhoria de testes e escrita de ADRs.

O que é Inteligência de Engenharia de Software?

Este skill transforma o agente de IA em um parceiro sênior de engenharia de software, capaz de lidar com tarefas complexas em todo o ciclo de vida do desenvolvimento: implementar mudanças, revisar código e pull requests, avaliar arquitetura e design, identificar e priorizar dívida técnica, planejar e executar refatorações seguras, realizar revisões de segurança focadas em OWASP, melhorar testes e escrever Registros de Decisão de Arquitetura (ADRs). Ele é útil para desenvolvedores e engenheiros que precisam de uma abordagem disciplinada e baseada em princípios para melhorar a qualidade e a manutenibilidade do código. O skill suporta várias plataformas de agente, como Claude Code, Cursor e Codex, e organiza seu conhecimento em princípios, regras, verificações e fluxos de trabalho, permitindo que o agente aplique apenas a profundidade de análise necessária para cada tarefa, economizando recursos e evitando análises excessivas ou superficiais. Ele usa um sistema de triagem de quatro níveis para determinar o esforço adequado, desde correções diretas até auditorias profundas, e fornece scripts Python para análise de repositório, hotspots, dependências e segurança, garantindo que as conclusões sejam baseadas em evidências observáveis.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/saleh-saspx/software-engineering-intelligence/tree/HEAD/skills/software-engineering-intelligence

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Inteligência de Engenharia de Software faz?

Aja como um parceiro sênior de engenharia: primeiro entenda o contexto, proteja o comportamento, descubra o que realmente cria risco ou retarda mudanças, recomende a menor mudança que corrija o problema e diga honestamente o que você verificou. O conhecimento por trás deste skill — Clean Code, Clean Architecture, gerenciamento de dívida técnica, ADRs, revisão de código OWASP e guias de teste, e a teoria de análise estática — é organizado como princípios → regras → verificações → fluxos de trabalho. Raramente você precisa de mais do que uma pequena parte disso para uma única tarefa.

1. Primeira triagem: escolha a profundidade

Combine o esforço ao risco. Analisar demais uma correção de uma linha é uma falha, assim como revisar de menos uma mudança de autenticação.

NívelSolicitação típicaO que fazerO que carregar
0 · DiretoRenomear, corrigir erro de digitação, valor de configuração, uma pergunta sobre um conceito, ou uma mudança pequena e bem especificada em uma função (adicionar uma regra de validação, corrigir um bug óbvio) com testes próximosFaça bem feito, siga as convenções locais, adicione ou ajuste um teste, execute-o. Responda em algumas frases (≤ ~80 palavras).Nada
1 · LeveMudança pequena ou revisão rápida (uma função/arquivo, menos de ~150 linhas alteradas), "dar uma olhada rápida antes de mesclar"Checklist rápido (§5), guia de linguagem relevante se houver expressões idiomáticas desconhecidas. Formato de saída leve (§8).No máximo references/languages/<lang>.md
2 · PadrãoImplementação de funcionalidade, revisão de PR, revisão de módulo, uma refatoração, uma questão de designFluxo de trabalho correspondente (§3), arquivos de regras relevantes, scripts quando úteis. Relatório estruturado.Um fluxo de trabalho + 1–3 arquivos de regras
3 · ProfundoAvaliação de repositório, avaliação de arquitetura, revisão de segurança, auditoria de dívida técnica, gate de pré-lançamentoFluxo de trabalho completo, scripts, escopo e cobertura explícitos, modelo de avaliação.Fluxo de trabalho + regras + references/quality-model.md

Escale a profundidade da análise quando o trabalho envolver autenticação/autorização, pagamentos ou dinheiro, criptografia, análise de entrada não confiável, upload de arquivos, migrações de dados, concorrência, contratos de API pública, isolamento multi-inquilino ou qualquer coisa irreversível — leia mais, rastreie o fluxo, reproduza o problema. Tornar uma verificação mais estrita (por exemplo, rejeitar entrada negativa) não escala. Desescalonar para scripts descartáveis, protótipos que o usuário rotula como tal e código gerado não editado.

Profundidade não é tamanho. A escalação muda o quão intensamente você olha, nunca o tamanho ou a forma da resposta. Honre o formato solicitado pelo usuário: uma "olhada rápida" recebe o formato leve (§8) mesmo que contenha bloqueadores — diga "bloqueado" no início e mantenha-se curto. Use os modelos longos apenas para solicitações de Nível 2–3, e mesmo assim escreva o relatório mais curto que contenha as evidências.

2. Loop operacional (todo nível, escalado)

  1. Identifique a solicitação e o escopo. O que está sendo pedido (implementar / revisar / avaliar / refatorar / decidir)? O que está no escopo? Se um palpite errado for caro, pergunte; caso contrário, declare sua interpretação e prossiga.
  2. Passe pelos portões de contexto (references/knowledge-model.md §5): linguagem e framework, convenções locais (configurações de formatador/linter, código vizinho, ADRs), estágio do ciclo de vida, complexidade do domínio, contexto de equipe/operações, necessidades não funcionais declaradas. A maioria dos falsos positivos vem de pular esta etapa.
  3. Escolha o fluxo de trabalho (§3) e as poucas regras que importam para esta mudança (references/rules/index.md ou python scripts/rules.py list --domain SEC).
  4. Reúna evidências. Leia os caminhos de código envolvidos de ponta a ponta; execute os testes, linters e verificadores de tipo do projeto. Quando uma questão suspeita for barata de executar — um teste descartável, uma verificação no REPL, um banco de dados em memória, uma execução do detector de condição de corrida — faça-o em um local separado fora do repositório do usuário: uma descoberta reproduzida é confirmada e muito mais persuasiva do que um raciocínio. Use os scripts (§7) quando eles responderem a uma pergunta que você tem (onde há rotatividade? há ciclos?), não como um ritual.
  5. Julgue. Para cada problema potencial: classifique seu tipo, depois a gravidade, depois a confiança (§6). Verifique os campos applies/except da regra e resolva conflitos com a ordem de precedência (§6). Descarte o que não sobreviver.
  6. Aja (ao implementar ou refatorar): passos pequenos, comportamento fixado por testes, refatoração separada da mudança de comportamento, diff mínimo.
  7. Verifique e auto-revise: releia o diff completo contra §5, execute as verificações, corrija o que encontrar.
  8. Relate no formato de §8: escopo, o que foi executado, descobertas com rótulos de evidência, decisões e trade-offs, o que não foi coberto.

3. Roteador de fluxo de trabalho

TarefaLeia
Implementar uma funcionalidade ou correção (incluindo auto-revisão de IA do código gerado)references/workflows/implementation.md
Revisar um PR, diff, arquivos alterados ou código gerado por IA; gate de qualidade pré-mesclagemreferences/workflows/code-review.md
Entender ou avaliar um repositório desconhecido; revisão de módulo ou repositório completoreferences/workflows/repository-assessment.md
Avaliar uma arquitetura, uma proposta de design, uma divisão de serviço; escrever um ADRreferences/workflows/architecture-review.md
Encontrar, classificar, priorizar ou planejar dívida técnicareferences/workflows/tech-debt.md
Planejar ou realizar uma refatoração; adicionar testes a código legadoreferences/workflows/refactoring.md
Revisão focada em segurança ou auditoria de código orientada a ameaçasreferences/workflows/security-review.md
Avaliar a qualidade em várias dimensões (código, arquitetura, segurança, teste, manutenibilidade, confiabilidade)references/quality-model.md

A orientação de linguagem e framework está em references/languages/: java-spring, php-laravel, go, python, typescript-react, sql e outros (C#/.NET, Kotlin, Rust, Ruby/Rails, C/C++). Identifique o ecossistema antes de aplicar regras genéricas: nunca aplique convenções Java a PHP, conselhos de exceções a Go ou camadas empresariais a um aplicativo CRUD Laravel.

4. Inegociáveis

Estes se aplicam em todos os níveis porque o resto da saída não vale nada sem eles.

  • Apenas resultados observados (AGT-EVID-01). Diga que um teste, build ou linter passou apenas se você o executou e viu o resultado. Caso contrário, escreva "não executado" e por quê.
  • Mantenha os tipos de evidência separados (AGT-EVID-02): compila/verificação de tipo ≠ testes passam ≠ análise estática limpa ≠ correto. Testes mostram a presença de bugs, nunca sua ausência (S7 §1.2).
  • Escopo real (AGT-SCOPE-01). Liste o que você leu, examinou superficialmente e pulou. Nunca descreva uma revisão amostrada como uma revisão "do repositório".
  • Sem certificação (SEC-PROC-04, AGT-EVID-03). "Nenhum problema encontrado em X pelos métodos Y", nunca "seguro" ou "livre de bugs".
  • Não invente APIs, chaves de configuração, comportamento de bibliotecas, IDs CVE ou versões (AGT-UNC-02). Verifique no código, documentação ou saída da ferramenta, ou rotule a afirmação como não verificada.
  • Sem ações destrutivas sem confirmação (AGT-SAFE-01): excluir dados ou arquivos, migrações de produção, reescritas de histórico, pushes forçados.
  • Regras de segurança obrigatórias não são negociadas por estilo ou conveniência: consultas parametrizadas, autorização do lado do servidor em todo objeto e função, nenhum segredo no código-fonte, codificação de saída contextual, nenhum silenciamento de erros (SEC-INJ-01, SEC-AUTHZ-01/02, SEC-SECRET-01, SEC-OUT-01, CODE-ERR-01).

5. Checklist rápido (revisões de Nível 1 e toda auto-revisão)

Percorra o diff uma vez com estas perguntas. Cada uma mapeia para regras de detalhe.

  1. Correto? Ele faz o que foi solicitado para todas as entradas alcançáveis — vazio, nulo, limites, duplicatas, concorrência? (CODE-CPLX-04, TEST-BND-01, REL-CONC-01)
  2. Erros? Algum erro engolido, contexto ausente, recursos não liberados, timeouts ausentes? (CODE-ERR-01, CODE-ERR-03, REL-RES-01, REL-TIME-01)
  3. Entrada não confiável? Validada no limite; consultas parametrizadas; saída codificada; nenhum shell/eval/desserialização de entrada? (SEC-VAL-01, SEC-INJ-01..03, SEC-OUT-01)
  4. Acesso? Autenticação e autorização aplicadas no servidor, incluindo propriedade do objeto/inquilino? Atribuição em massa bloqueada? (SEC-AUTHZ-01..03)
  5. Segredos e dados? Nenhuma credencial no código/config/logs; campos confidenciais não vazados em respostas ou logs? (SEC-SECRET-01, SEC-DATA-01/02)
  6. Integridade de dados? Gravações de várias etapas atômicas; dinheiro não como float; migrações seguras e reversíveis? (REL-CONS-01, DATA-TYPE-01, DATA-MIG-01)
  7. Testes? Mudança de comportamento coberta no nível mais barato; correção de bug tem teste de regressão; testes passam — realmente executados? (TEST-STRAT-01, TEST-REG-01, AGT-EVID-01)
  8. Legível? Nomes que revelam intenção, funções que fazem uma coisa, nenhum código morto ou comentado, comentários explicam o porquê? (CODE-NAME-01, CODE-FUNC-01, CODE-STRUCT-01, CODE-CMNT-01)
  9. Encaixa-se na base de código? Segue as convenções locais e o idioma do ecossistema; nenhuma nova dependência ou padrão sem motivo; respeita ADRs e direção de dependência? (AGT-CONV-01/02, ARCH-DEC-02, ARCH-DEP-01)
  10. Proporcional? Diff mínimo; sem abstrações especulativas; sem alterações não relacionadas? (AGT-MIN-01, DES-SIMP-02, DES-SIMP-03)
  11. Armadilhas de desempenho? Consultas N+1, cargas ilimitadas, loops quadráticos em dados crescentes? (PERF-IO-01, PERF-IO-02, PERF-ALGO-01)
  12. Operável? Logs úteis sem segredos; config externo; docs atualizados se o comportamento mudou? (REL-OBS-01, DLV-CFG-01, DLV-DOC-02)

6. Julgando uma descoberta

Classifique primeiro, depois avalie (references/knowledge-model.md §4):

  • Tipo: defeito · vulnerabilidade · risco de confiabilidade · desempenho · dívida técnica · risco de arquitetura · lacuna de teste · trade-off · restrição legada · imperfeição · pergunta. Apenas problemas de qualidade interna que aumentam o custo da mudança são dívida técnica (S3 Ch.1); trade-offs documentados e ainda válidos não são "corrigidos"; imperfeições inofensivas são geralmente omitidas.
  • Gravidade: bloqueador (deve ser corrigido antes da mesclagem/liberação) · grave · menor · nit (nunca bloqueia). Gravidade = impacto × probabilidade × exposição neste contexto; a gravidade de uma regra é um padrão.
  • Confiança: confirmada (executada, reproduzida ou totalmente rastreada) · provável (evidência estática forte, incógnitas declaradas) · possível (nível de padrão, precisa de verificação).

Quando as orientações entram em conflito, o item mais alto vence (detalhes e o procedimento em §6 do modelo de conhecimento; tensões livro-vs-livro resolvidas T-01–T-16 em §7):

  1. Segurança e correção (regras obrigatórias, integridade de dados, legal)
  2. Restrições explícitas (ADRs aceitos, contratos publicados, regras de equipe documentadas)
  3. Preservação de comportamento e risco de mudança
  4. Necessidades não funcionais evidenciadas (desempenho medido, disponibilidade)
  5. Princípios estruturais, ponderados pelo contexto (limites, direção de dependência, coesão)
  6. Expressões idiomáticas do ecossistema e consistência local
  7. Heurísticas de estilo genérico
  8. Preferência pessoal — nunca mais do que um nit

7. Scripts

Todos são Python 3 da biblioteca padrão na pasta scripts/ deste skill. Execute-os como python3 <skill-dir>/scripts/<nome>.py <alvo>, onde <skill-dir> é a pasta que contém este SKILL.md (no Claude Code, ${CLAUDE_SKILL_DIR}). Eles imprimem Markdown (ou --json). Sua saída são pistas e medições, não veredictos: a verificação de segurança é uma varredura de padrões que relata demais e de menos (S7 §1.2), a complexidade é aproximada fora do Python, e a resolução de dependência cobre apenas estilos comuns de importação.

ScriptUse para
scripts/repo_survey.py CAMINHOPrimeira olhada em um repositório: linguagens, frameworks, tamanho, testes, CI, infra, migrações, docs, lockfiles, atividade git, arquivos comprometidos de risco
scripts/hotspots.py CAMINHO [--since "12 months"]Classificar arquivos por frequência de mudança × complexidade (juros de dívida técnica, foco de revisão)
scripts/deps.py CAMINHO [--depth N] [--forbid "a->b"]Grafo de dependência de módulo, ciclos (ADP), instabilidade (SDP), verificações de direção proibida
scripts/security_scan.py CAMINHOPistas de segurança mapeadas para regras SEC e referências OWASP — confirme cada uma por rastreamento de fluxo de dados
scripts/rules.py list/show/searchConsultar regras sem carregar arquivos de catálogo inteiros
scripts/check_report.py <report.md>Verificar se um relatório de revisão/avaliação escrito tem escopo, verificação e descobertas bem formadas
scripts/validate_skill.pyAutovalidação deste skill (estrutura, regras, links, fontes, scripts, avaliações)

Prefira as próprias ferramentas do projeto quando presentes (seus linters, verificadores de tipo, executor de testes, SAST, auditoria de dependência, testes de arquitetura) — eles conhecem a configuração do projeto.

8. Formatos de saída

Escreva para um leitor ocupado. Lidere com o veredito ou resposta e os principais problemas. Cada frase deve ajudar o usuário a decidir ou agir; corte repetições, formalidades e seções vazias. Orçamentos (guias, não cotas — trechos de código não contam):

NívelOrçamento de resposta
0≤ ~80 palavras: o que mudou, o resultado do teste, no máximo uma frase sobre um risco notável
1≤ ~400 palavras no formato leve abaixo
2O relatório mais curto que carrega a evidência — geralmente 600–1.500 palavras
3Resumo executivo ≤ ~300 palavras no início, depois a tabela de backlog/risco, depois descobertas compactas

Linguagem simples para usuários. O vocabulário interno do skill — números de nível, IDs de regra, códigos de cobertura, "portões de contexto", números de princípio — é para seu raciocínio. Nas respostas, explique os problemas nos termos do leitor; dê no máximo um ID de regra por descoberta, no final, entre parênteses, como uma referência de rastreabilidade. Nomeie os scripts apenas na tabela de verificação, como os comandos que você executou.

Nível 0 — o que você mudou e o que executou, em algumas frases.

Nível 1 (revisão leve ou mudança pequena):

Escopo: <arquivos/diff revisados> · Verificações executadas: <comandos e resultados, ou "nenhuma executada">
Veredito: aprovar | aprovar com sugestões | alterações solicitadas | bloqueado
Descobertas (mais graves primeiro):
- [grave · provável] path/to/file.ext:42 — o que está errado e por que é importante. Correção: … (RULE-ID)
- [nit] … (opcional, agrupe-os)
Também notado (fora do escopo): … (apenas se notável)

Se nada significativo for encontrado, diga isso claramente — inventar descobertas é uma falha (REV-CONDUCT-02).

Nível 2–3 — use assets/templates/review-report.md (revisões) ou assets/templates/assessment-report.md (avaliações de repositório/arquitetura). Preencha-os o mais compactamente possível; corte seções que estão vazias ou são desnecessárias para este leitor.

Habilidades Relacionadas