بنقرة واحدة
forge-codebase
Qualidade do codebase — lint, nomenclatura. Flags: --fix, --paths.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Qualidade do codebase — lint, nomenclatura. Flags: --fix, --paths.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Executa o milestone inteiro de forma autonoma ate concluir.
Executa exatamente uma unidade de trabalho e para (step mode).
Task autonoma sem milestone — brainstorm, discuss, plan, execute.
Gerencia múltiplas contas Claude e troca entre elas (setup-token). Use ao esgotar a sessão de uma conta.
Configuracoes do Forge — status line, hooks, MCPs.
Diagnostico e correcao do projeto GSD. Flags: --fix, --dry-run.
| name | forge-codebase |
| description | Qualidade do codebase — lint, nomenclatura. Flags: --fix, --paths. |
| disable-model-invocation | true |
| allowed-tools | Read, Write, Edit, Bash, Glob |
--fix -> diagnóstico + correção (somente correções mecânicas seguras)--fix --dry-run -> prévia do que --fix faria, sem escrita--force -> ignora cache e força re-análise completaFIX_MODE = --fix in $ARGUMENTS. DRY_RUN = --dry-run in $ARGUMENTS. FORCE = --force in $ARGUMENTS.
git init..gsd/QUALITY-PLAN.md.Cada checagem gera achados. Em modo correção, aplique a correção. Em diagnóstico/prévia, apenas reporte.
Emita uma linha por achado: ✓/⚠/✗/🔧/👁/⏭ <message>.
Medir o que importa, não o que é fácil de medir.
- Performance: o gargalo real são roundtrips, não I/O. → Minimizar tool calls.
- Análise: o sinal real é aderência contextual, não estatística global. → Classificar por papel/contexto.
Toda checagem segue este contrato:
- Segmentar por contexto (diretório, papel, linguagem) antes de julgar.
- Excluir padrões sabidamente corretos (barrel files, test files, entry points).
- Graduar severidade — não tratar 301 linhas igual a 3000.
- Zero falso positivo é mais valioso que alta cobertura.
Cada tool call custa ~1-3s de latência de API. Este comando DEVE completar em no máximo 3 roundtrips sequenciais no caminho frio e 2 roundtrips no caminho quente (cache hit).
- NÃO faça tool calls separadas para cada métrica.
- NÃO faça tool calls para classificação ou análise — processe os dados inline.
- SEMPRE agrupe tool calls independentes em uma única mensagem (paralelo).
CACHE HIT: Round 1 (reads paralelos) → cache match → exibir report → FIM
CACHE MISS: Round 1 (reads paralelos) → Round 2 (mega-bash) → análise inline → Round 3 (writes) → FIM
FIX_MODE: Round 1 (reads paralelos) → Round 2 (mega-bash) → análise inline → Round 3 (writes + lint/format) → FIM
Disparar TODAS estas tool calls em uma única mensagem:
| # | Tool | Alvo | Extrai |
|---|---|---|---|
| 1 | Read | .gsd/STATE.md | Se falhar → Projeto não inicializado. Execute /forge-init. → PARAR |
| 2 | Read | .gsd/PROJECT.md | Nome do projeto |
| 3 | Read | .gsd/CODING-STANDARDS.md | ROOTS (tabela Directory Conventions), convenções |
| 4 | Read | package.json | scripts (lint, format, typecheck), dependências |
| 5 | Read | .gsd/.codebase-cache-hash | Hash anterior para cache check |
| 6 | Bash | ls pnpm-lock.yaml yarn.lock package-lock.json pyproject.toml requirements.txt Pipfile go.mod Cargo.toml 2>/dev/null | Stack, lockfiles, PM |
6 tool calls paralelas = 1 roundtrip (~2s).
ROOTS — resolver na seguinte ordem:
--paths do $ARGUMENTS (vírgulas → array, validar existência)src lib app packages services components server client scripts commands agents skills tests __tests__. com avisoPM — detectar:
pnpm-lock.yaml → pnpm | yarn.lock → yarn | package-lock.json → npm | else → npmScripts — extrair de package.json: lint, lint:fix, format, format:fix, typecheck/tsc
CODING-STANDARDS ausente:
⚠ CODING-STANDARDS ausenteSe não FORCE e não FIX_MODE e o Read de .gsd/.codebase-cache-hash retornou um hash:
Se FORCE ou FIX_MODE:
UMA ÚNICA tool call Bash que coleta TODOS os dados. Substituir ROOTS pelos valores resolvidos no Round 1.
IMPORTANTE: NÃO reconstruir o script manualmente. Chamar o script pronto:
bash ~/.claude/scripts/codebase-collect.sh apps packages
Substituir apps packages pelos ROOTS reais. O script produz todas as seções separadas por ::LABEL::.
Se o script não existir (command not found), copiar de: $(node "$([ -f scripts/forge-prefs.js ] && echo scripts/forge-prefs.js || echo "$HOME/.claude/scripts/forge-prefs.js")" --resolved --key repo_path 2>/dev/null | node -e "let d='';process.stdin.on('data',c=>d+=c).on('end',()=>{try{const v=JSON.parse(d).value;process.stdout.write(v?String(v):'')}catch{process.stdout.write('')}})")/scripts/codebase-collect.sh
1 tool call = 1 roundtrip. Produz TUDO: fingerprint, file list, line counts, exports, defs, funções, tamanhos, frontend checks.
Processar TODA a saída do mega-bash inline. Nenhuma tool call adicional.
Comparar ::FINGERPRINT:: com CACHED_HASH do Round 1:
⏭ Cache hit — nenhuma alteração desde a última análise., ler .gsd/.codebase-cache.md e exibir. PARAR (1 Read extra = 2 roundtrips total).Fonte: ::FILES::
Identificar arquivos na raiz (path sem /). Classificar cada um:
Esperados na raiz (não flagar):
index.*, main.*, app.*, server.*, cli.**.config.*, *.setup.*, tsconfig.*, package.*, .*rc, Makefile, DockerfileInesperados na raiz (flagar apenas estes):
src/ ou lib/ existem nas ROOTS.Achados:
⚠ Nenhuma raiz de código detectada; revise --paths ou CODING-STANDARDS.⚠ Código solto na raiz: <file>. Mover para src/?Fonte: ::FILES:: — usar path completo (diretório + basename).
Princípio: convenções de nomenclatura variam por papel. Componentes React são PascalCase, utils são kebab-case, hooks são camelCase. Mistura global não é problema se cada contexto é consistente internamente.
Passo 1 — Segmentar por papel. Agrupar arquivos pelo diretório-role (primeiro nível significativo do path):
| Diretório contém | Role | Convenção esperada |
|---|---|---|
components, pages, views, layouts, screens | UI component | PascalCase |
hooks | Hook | camelCase (prefixo use) |
utils, helpers, lib, services, api, middleware | Utility | kebab-case ou camelCase |
tests, __tests__, spec | Test | segue a convenção do source que testa |
types, interfaces, models | Type/Model | PascalCase |
config, scripts | Config/Script | kebab-case |
Se o diretório não estiver na tabela, inferir a convenção dominante DENTRO do diretório.
Passo 2 — Checar consistência dentro de cada grupo.
Passo 3 — Reportar.
✓ <role>: <convenção> (N arquivos)⚠ <role>: <arquivo> deveria ser <convenção esperada>Correção: nunca renomear. FIX_MODE → outliers ao QUALITY-PLAN.
Fonte: ::FUNCS:: — cada linha tem filepath:line:match.
Princípio: o tipo da função determina sua convenção correta. Componentes React são PascalCase, hooks camelCase com prefixo
use, funções Python snake_case (PEP8). Mistura entre tipos é esperada e correta.
Passo 1 — Classificar cada função por tipo.
| Sinal (do match + filepath) | Tipo | Convenção correta |
|---|---|---|
Arquivo .tsx/.jsx + nome PascalCase + function | React Component | PascalCase |
Nome começa com use + camelCase | Hook | camelCase |
Arquivo .py + def | Python function | snake_case |
Nome começa com __ e termina com __ | Dunder (Python) | excluir da análise |
| Nome é ALL_CAPS | Constante | excluir da análise |
Arquivo .ts/.js + function/const | JS/TS utility | camelCase |
Passo 2 — Checar aderência por tipo.
Passo 3 — Reportar.
✓ <tipo>: <convenção> (N funções)⚠ <tipo>: <nome> em <arquivo>:<linha> deveria ser <convenção>Correção: nunca renomear. FIX_MODE → outliers ao QUALITY-PLAN.
Fonte: ::LINES::, ::EXPORTS::, ::DEFS::
Princípio: tamanho só é sintoma quando acompanhado de mistura de responsabilidades. Um arquivo de 400 linhas com uma única responsabilidade é saudável. Um barrel file com 20 exports é seu propósito. Um test file com 15 defs é normal.
Passo 1 — Classificar papel do arquivo.
De ::FILES::, identificar:
index.ts/index.js (qualquer variante)test, spec, __tests__ OU nome contém .test., .spec., ou prefixo test_.config., .setup., ou está na raizPasso 2 — Aplicar limiares graduados APENAS a source files.
| Métrica | Normal | ⚠ Atenção | ✗ Crítico |
|---|---|---|---|
| Linhas | ≤500 | 501–800 | >800 |
| Exports (JS/TS) | ≤8 | 9–15 | >15 |
| Top-level defs (Python) | ≤10 | 11–20 | >20 |
Barrel files: excluir de export check (re-exportar é sua função). Test files: excluir de def check (muitos test functions é normal). Config files: excluir de todos os checks.
Passo 3 — Hotspot composto (severidade aumentada).
⚠ em UMA métrica → ⚠ <arquivo>: <métrica> (<valor>)⚠ em DUAS+ métricas → ✗ Hotspot composto: <arquivo> — <N linhas>, <N exports/defs>Correção: nunca dividir. FIX_MODE → hotspots ao QUALITY-PLAN com recomendação de split.
Fonte: scripts extraídos do package.json no Round 1.
Diagnóstico:
✓ Lint: <script>, ✓ Format: <script>.⚠ Nenhum comando de lint/format detectado.Correção (Round 3):
lint:fix → RUN run lint:fixformat:fix → RUN run format:fixFonte: ::PROMPT_SIZES::, ::MD_SIZES::
| Arquivo | Normal | ⚠ Atenção | ✗ Crítico |
|---|---|---|---|
| CLAUDE.md / AUTO-MEMORY / CODING-STANDARDS | ≤15KB | 15–30KB | >30KB |
| Outros .md em commands/ e .gsd/ | ≤40KB | 40–80KB | >80KB |
Correção: nunca reduzir. FIX_MODE → ao QUALITY-PLAN.
Fonte: Bash do Round 1 (lockfiles), ::LARGE_FILES::
⚠ Múltiplos lockfiles; escolher um.::LARGE_FILES:: → ⚠ Arquivo grande no repo: <file>. Considerar .gitignore ou LFS.Fonte: ::FRONTEND:: — ativado SOMENTE se components > 0.
Se
::FRONTEND::reportacomponents=0, pular esta seção inteiramente.
Surface checks (dados já coletados, zero I/O):
| Check | Fonte | Critério | Severity |
|---|---|---|---|
<img> sem alt | ---IMG_TAGS--- — linhas sem alt= | WCAG SC 1.1.1 | ✗ |
<div> com handler sem role/tabIndex | ---DIV_HANDLERS--- — linhas com <div onClick etc. | WCAG SC 2.1.1 | ✗ |
'use client' desnecessário | ---USE_CLIENT--- cruzado com ::FUNCS:: — se o arquivo não usa hooks/events | Next.js App Router | ⚠ |
| Componentes god (>300 linhas) | ::LINES:: filtrado por .tsx/.jsx/.vue | Arquitetura | ⚠ |
| Componentes com >8 exports | ::EXPORTS:: filtrado por .tsx/.jsx | Arquitetura | ⚠ |
Report inline:
✓ Frontend: N componentes, N arquivos CSSinfo Para audit completo de responsividade: /forge-responsiveinfo Para audit completo de acessibilidade e performance: /forge-ui-reviewCorreção: FIX_MODE → issues de a11y e arquitetura ao QUALITY-PLAN.
Disparar em uma única mensagem todas as escritas necessárias:
| # | Tool | Ação |
|---|---|---|
| 1 | — | Emitir report como texto |
| 2 | Write | .gsd/.codebase-cache-hash ← FINGERPRINT |
| 3 | Write | .gsd/.codebase-cache.md ← report completo |
Correções mecânicas (aplicar diretamente):
| # | Condição | Tool | Ação |
|---|---|---|---|
| 1 | CODING-STANDARDS ausente | Write | .gsd/CODING-STANDARDS.md via auto-detect |
| 2 | lint:fix existe | Bash | RUN run lint:fix |
| 3 | format:fix existe | Bash | RUN run format:fix |
| 4 | Build output no repo (storybook-static, dist, .next) | Edit | Adicionar ao .gitignore se não presente |
| 5 | tsconfig existe mas sem script typecheck | Edit | Adicionar "typecheck": "tsc --noEmit" ao package.json |
| 6 | prettier/biome detectado mas sem script format | Edit | Adicionar "format": "prettier --write ." ou "format": "biome format --write ." ao package.json |
Plano de refatoração (QUALITY-PLAN.md):
Para issues estruturais que requerem decisão arquitetural, criar .gsd/QUALITY-PLAN.md com detalhes suficientes para o planner do GSD transformar diretamente em slices.
Cada item do QUALITY-PLAN deve ter:
### [Categoria] Título do item
**Arquivo(s):** `path/to/file.ts`
**Problema:** Descrição concreta do que está errado (N linhas, N exports, responsabilidades misturadas)
**Impacto:** Por que isso importa (manutenibilidade, performance, DX)
**Sugestão de fix:** Passos concretos — quais componentes extrair, para onde mover, quais imports atualizar
**Esforço estimado:** pequeno (1 task) | médio (1 slice) | grande (múltiplos slices)
Rodapé do QUALITY-PLAN:
---
## Próximo passo
Para executar este plano de refatoração:
\`\`\`
/forge-new-milestone refatoração do codebase baseada no QUALITY-PLAN
\`\`\`
O planner lerá este arquivo e criará slices com tasks executáveis.
Máximo ~5 tool calls paralelas = 1 roundtrip (~2-3s).
Linha de cabeçalho:
forge-codebase — diagnósticoforge-codebase --fix — correções aplicadas + plano de refatoraçãoforge-codebase --fix --dry-run — préviaRodapé:
FAILs: N WARNs: N OK: N + if any issues: Para corrigir: /forge-codebase --fixCorrigidos: N Planejados: N OK: N + Próximo: /forge-new-milestone refatoração baseada no QUALITY-PLANNenhum arquivo alterado. Execute /forge-codebase --fix para aplicar.Se .gsd/QUALITY-PLAN.md foi criado ou atualizado, mencione explicitamente.