Extrai e codifica os padroes de coding do projeto existente (naming, estrutura de arquivos, error handling, testing style, import style, API design, async patterns) e usa esses padroes como restricao sobre novo codigo. Garante que o agente code "igual ao resto do projeto" em vez de inventar convencoes proprias. Produce um "code style map" salvo em memory/patterns.md que todas as skills de geracao de codigo devem consultar. Trigger em: "segue o padrao do projeto", "coda igual ao resto", "nao reinventa padrao", "detecta padroes do codebase", "code style do projeto", "padrao do projeto", "convencao do projeto", "coda consistente", "mesma convencao", "sem reinventar roda", "padrao de codigo", "patterns do codebase", "pattern enforcement", "conformidade de padrao", "convencoes de naming", "padrao de tratamento de erro", "mesma estrutura do projeto", "detecta as convencoes", "extrai padroes de coding", "como o projeto estrutura".
73
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Principio: Um agente que ignora as convencoes do projeto existente produz codigo tecnicamente correto mas arquiteturalmente dissonante — cria divida tecnica suave que se acumula silenciosamente. Esta skill impoe "codigo com sotaque do projeto".
memory/patterns.md atualizado (<14 dias) e task e pequena| Skill | Foco | Output |
|---|---|---|
| 18 (repo-auditor) | Stack, frameworks, riscos, harnessability | docs/repo-audit/current.md — fotografia do repo |
| 33 (detective-spec) | Regras de negocio implicitas no codigo | _detective_sdd/ — SDD retroativo |
| 44 (zoom-out) | Mapa de modulos e callers | Mapa de bairro, orientacao topologica |
| 47 (pattern-conformity) | Convencoes de codificacao concretas | memory/patterns.md — restricoes de estilo |
Skill 18 diz "o projeto usa NestJS + TypeORM". Esta skill diz "services injetam repositorios via
constructor, metodos publicos sao sempre async, erros sao lancados como AppException(code, message)".
Esta skill segue GLOBAL.md, policies/code-exploration.md, policies/token-efficiency.md,
policies/persistence.md, policies/handoffs.md.
Antes de qualquer exploracao, verificar:
test -f memory/patterns.md && head -5 memory/patterns.md
# checar campo "last_extracted:" no frontmatterSe memory/patterns.md existir e last_extracted < 14 dias, pular para Fase 3 (usar diretamente).
Se usuario passou --update, ignorar cache e re-extrair.
Coletar amostras de codigo existente por categoria. Estrategia: nao ler tudo — ler exemplos canonicos (arquivos grandes e centrais sao mais representativos que utilitarios).
# Encontrar arquivos de entrada principais
find . -maxdepth 3 -name "index.*" -o -name "main.*" -o -name "app.*" -o -name "server.*" | head -10Ler 1-2 arquivos centrais completos (sem pular).
Buscar 3-5 arquivos representativos na camada de negocio:
# Services/usecases (adaptar ao projeto)
find . -path "*/services/*" -o -path "*/usecases/*" -o -path "*/handlers/*" | grep -v node_modules | grep -v dist | head -20Ler 2-3 arquivos de tamanho medio (200-400 linhas) — sao os mais ricos em convencoes.
find . -path "*/components/*" | grep -v node_modules | head -20Ler 2-3 componentes que nao sejam atomicos demais (botoes) nem grandes demais (paginas).
find . \( -name "*.test.*" -o -name "*.spec.*" -o -path "*/__tests__/*" \) | grep -v node_modules | head -20Ler 2-3 arquivos de teste cobrindo diferentes camadas (unit + integration se existir).
find . -path "*/utils/*" -o -path "*/helpers/*" -o -path "*/lib/*" | grep -v node_modules | head -20Ler 1-2 arquivos — revelam tratamento de erro e estilo funcional.
Para cada categoria abaixo, analisar as amostras e extrair o padrao OBSERVADO (nao o ideal):
Extrair da leitura das amostras:
camelCase.ts vs kebab-case.ts vs PascalCase.tsService, Repository, Controller, Handler)?camelCase? prefixos (get, fetch, handle, process, on)?camelCase? constantes: SCREAMING_SNAKE_CASE?I prefix? T prefix? Type suffix? nenhum?export default vs named? barrel (index.ts) ou direto?@/services/...) vs relativos (../services/...)? aliases?index.ts ou importa direto?async/await vs .then()/.catch()?Promise.all vs chamadas sequenciais?Este e critico e frequentemente o padrao mais especifico do projeto:
throw new Error vs return { error, data } vs Result<T>)AppError, DomainException, ApiError)beforeEach/afterEach? fixtures? factories?jest.mock, vi.mock, sinon, manual mocks, DI?{data, error, meta} vs flat?page/limit vs cursor/after?Salvar em memory/patterns.md (criar diretorio se necessario):
---
last_extracted: YYYY-MM-DD
source_sample: <N arquivos analisados>
confidence: high|medium|low
---
# Code Style Map — <nome do projeto>
> Gerado por skill 47 (pattern-conformity). Atualizar com `--update` se o projeto evoluir.
## P1 — Naming
- Arquivos: <padrao observado>
- Classes: <padrao>
- Funcoes: <padrao>
- Tipos: <padrao>
- Exportacoes: <padrao>
- **Exemplos canonicos:** `<arquivo1>`, `<arquivo2>`
## P2 — Estrutura de Modulos
- Organizacao: <feature-first|type-first|camadas>
- Co-location de testes: <junto|separado>
- Imports: <absoluto|relativo|alias>
- **Exemplos canonicos:** `<pasta1>`, `<pasta2>`
## P3 — Async
- Padrao: <async/await|promises|callback>
- Regra: <todas as I/O|so handlers|etc>
## P4 — Tratamento de Erros ⚠️
- Mecanismo: <throw|return Result|discriminated union>
- Classe customizada: <nome ou "nenhuma">
- Camada de captura: <middleware|handler|service>
- Logging: <padrao de log>
- **Exemplos canonicos:** `<arquivo com melhor exemplo>`
## P5 — Testes
- Framework: <jest|vitest|pytest|etc>
- Naming: <"should ..."|"it ..."|etc>
- Mocking: <padrao>
- Factories: <usa|nao usa>
- **Exemplos canonicos:** `<arquivo de teste representativo>`
## P6 — Dependencias e Composicao
- DI: <container|manual|closures>
- Composicao: <padrao observado>
## P7 — API/Interface (se houver)
- Envelope de resposta: <padrao>
- Validacao: <onde e como>
- Paginacao: <padrao>
## P8 — Estado (se frontend)
- State management: <padrao>
- Efeitos: <padrao>
## Alertas de Anti-padrao
> Padroes que existem mas devem ser EVITADOS (legado, inconsistencia):
- <ex: arquivos antigos ainda usam `var` em vez de `const` — ignorar>
- <ex: `UserService.ts` usa `.then()` — estilo antigo, nao copiar>
## Restricoes para Geracao de Novo Codigo
Ao gerar qualquer novo arquivo neste projeto:
1. <restricao especifica 1>
2. <restricao especifica 2>
3. <restricao especifica 3>
...Nivel de confianca:
high: padrao absolutamente consistente em >90% das amostrasmedium: padrao predominante (>70%) com algumas excecoeslow: padrao sugerido mas com inconsistencias — notar na secao "Alertas"Quando esta skill esta ativa E o agente vai gerar codigo, antes de escrever:
memory/patterns.md (ou o que foi extraido nesta execucao)Exemplo de comentario de desvio intencional:
// [pattern-conformity] desvio: projeta usa throw AppError mas aqui
// retornamos Result<T> porque esta funcao e usada em contexto de pipeline
// onde propagar excecao quebraria o fluxo. Ver patterns.md P4.Checkpoint pós-escrita: reler o arquivo gerado contra a checklist P1-P8 (não confiar que o gate inline foi seguido perfeitamente durante a geração) — desvio sem comentário de justificativa volta pra corrigir (adicionar o comentário ou reescrever conforme o padrão), não passa despercebido só porque o código funciona.
Ao final da skill, reportar:
Pattern Conformity — <projeto>
Arquivos analisados: <N>
Padroes extraidos: P1-P8 (ou subset)
Confianca: high|medium|low
Salvo em: memory/patterns.md
Cache valido por: 14 dias
Restricoes ativas para proximo codigo:
1. <mais importante>
2. <segundo mais importante>
3. <terceiro mais importante>memory/patterns.md como restricaodocs/repo-audit/current.md pra saber onde olharpatterns.md como substituicao do CLAUDE.md — e complemento; ambos devem ser lidosfelvieira/claude-skills-fv
90329e3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.