Help us improve
Share bugs, ideas, or general feedback.
From dev-team-kit-fv
Extracts existing project coding conventions (naming, file structure, error handling, testing, imports, API design, async patterns) and enforces them on new code. Produces a code style map in memory/patterns.md.
npx claudepluginhub felvieira/claude-skills-fv --plugin dev-team-kit-fvHow this skill is triggered — by the user, by Claude, or both
Slash command
/dev-team-kit-fv:47-pattern-conformity [area-alvo] [--update][area-alvo] [--update]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Principio:** Um agente que ignora as convencoes do projeto existente produz codigo tecnicamente
Use when contributing code to an existing project - guarantees that every new line mirrors the established conventions, naming schemes, architectural layering, directory layout, and stylistic choices already present in the codebase rather than drifting toward generic AI defaults
Analyzes existing codebase to detect and enforce project-specific coding conventions including naming, folder structure, test organization, and code style.
Extracts code patterns, conventions, anti-patterns, and idiomatic styles with confidence scoring during Discovery phase. Requires concrete examples (path:line) from sampled files.
Share bugs, ideas, or general feedback.
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 frontmatter
Se 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 -10
Ler 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 -20
Ler 2-3 arquivos de tamanho medio (200-400 linhas) — sao os mais ricos em convencoes.
find . -path "*/components/*" | grep -v node_modules | head -20
Ler 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 -20
Ler 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 -20
Ler 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.
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 lidos