Skip to main content

improve-codebase-architecture

Varra uma base de código em busca de oportunidades de aprofundamento, apresente-as como um relatório HTML visual e sabatine qualquer uma que você escolher.

소스 정보

저장소
matheusdmlopes/skills-ptbr
최근 소스 활동
2026년 8월 15일 20:56
감지된 SKILL.md 언어
포르투갈어
스타
0
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
3 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
improve-codebase-architecture
description
Varra uma base de código em busca de oportunidades de aprofundamento, apresente-as como um relatório HTML visual e sabatine qualquer uma que você escolher.
disable-model-invocation
true
# Improve Codebase Architecture Traga à tona a fricção arquitetural e proponha **oportunidades de aprofundamento** — refatorações que transformam módulos rasos em deep modules. O objetivo é testabilidade e navegabilidade por IA. Este comando é _informado_ pelo modelo de domínio do projeto e construído sobre um vocabulário de design compartilhado: - Execute a skill `/codebase-design` para o vocabulário de arquitetura (**módulo**, **interface**, **profundidade**, **costura**, **adaptador**, **alavancagem**, **localidade**) e seus princípios (o teste de deleção, "a interface é a superfície de teste", "um adaptador = costura hipotética, dois = real"). Use estes termos com exatidão em cada sugestão — não desvie para "componente", "serviço", "API" ou "divisa". - A linguagem de domínio em `CONTEXT.md` dá nomes a boas costuras; ADRs em `docs/adr/` registram decisões que este comando não deve rediscutir. ## Processo ### 1. Explorar **Delimite o escopo antes de varrer — YAGNI.** Aprofundar um módulo se paga ao facilitar mudanças futuras nele, portanto dê peso extra às partes da base de código que mudaram recentemente. Decida *onde* olhar antes de olhar: - Se o usuário indicou uma direção — um módulo, um subsistema, um ponto de dor — siga-a e pule a inferência abaixo. - Caso contrário, examine um bom trecho do histórico de commits (`git log --oneline`) para encontrar os hot spots da base de código — os arquivos e áreas que continuam aparecendo — e deixe esses caminhos chamarem sua atenção primeiro. Se as alterações estiverem espalhadas sem um hot spot claro, amplie a busca. Leia o glossário de domínio do projeto (`CONTEXT.md`) e quaisquer ADRs na área em que você estiver mexendo primeiro. Em seguida, dispare um subagente para percorrer a base de código. Não siga heurísticas rígidas — explore organicamente e anote onde sentir fricção: - Onde o entendimento de um conceito exige alternar entre muitos módulos pequenos? - Onde os módulos são **rasos** — interface quase tão complexa quanto a implementação? - Onde funções puras foram extraídas apenas para testabilidade, mas os bugs reais se escondem em como elas são chamadas (sem **localidade**)? - Onde módulos fortemente acoplados vazam através de suas costuras? - Quais partes da base de código não são testadas ou são difíceis de testar por meio de sua interface atual? Aplique o **teste de deleção** a qualquer coisa que você suspeite ser rasa: deletá-la concentraria a complexidade ou apenas a moveria de lugar? Um "sim, concentra" é o sinal que você procura. ### 2. Apresentar candidatos como um relatório HTML Escreva um arquivo HTML autocontido no diretório temporário do sistema operacional para que nada caia no repositório. Resolva o diretório temporário a partir de `$TMPDIR`, com fallback para `/tmp` (ou `%TEMP%` no Windows), e escreva em `<tmpdir>/architecture-review-<timestamp>.html` para que cada execução receba um arquivo novo. Abra-o para o usuário — `xdg-open <path>` no Linux, `open <path>` no macOS, `start <path>` no Windows — e informe a eles o caminho absoluto. O relatório usa **Tailwind via CDN** para layout e estilização, e **Mermaid via CDN** para diagramas onde um gráfico/fluxo/sequência comunica a estrutura de forma confiável. Misture Mermaid com recursos visuais em CSS/SVG feitos à mão — use Mermaid quando os relacionamentos tiverem formato de grafo (grafos de chamadas, dependências, sequências) e divs/SVG construídos à mão quando quiser algo mais editorial (diagramas de massa, cortes transversais, animações de colapso). Cada candidato ganha uma **visualização de antes/depois**. Seja visual. Para cada candidato, renderize um card com: - **Arquivos** — quais arquivos/módulos estão envolvidos - **Problema** — por que a arquitetura atual está causando fricção - **Solução** — descrição em linguagem clara do que mudaria - **Benefícios** — explicados em termos de localidade e alavancagem, e como os testes melhorariam - **Diagrama de Antes / Depois** — lado a lado, desenhado sob medida, ilustrando a superficialidade e o aprofundamento - **Força da recomendação** — uma entre `Strong`, `Worth exploring`, `Speculative`, renderizada como um badge Termine o relatório com uma seção de **Principal recomendação**: qual candidato você abordaria primeiro e por quê. **Use o vocabulário de CONTEXT.md para o domínio e o vocabulário de `/codebase-design` para a arquitetura.** Se `CONTEXT.md` define "Order", fale sobre "o módulo de entrada de Order" — não "o FooBarHandler" e não "o serviço de Order". **Conflitos com ADRs**: se um candidato contradisser um ADR existente, apresente-o apenas quando a fricção for real o suficiente para justificar revisitar o ADR. Marque isso claramente no card (por exemplo, um callout de aviso: _"contradiz o ADR-0007 — mas vale a pena reabrir porque…"_). Não liste toda refatoração teórica que um ADR proíbe. Veja [HTML-REPORT.md](HTML-REPORT.md) para o scaffold HTML completo, padrões de diagramas e orientações de estilo. NÃO proponha interfaces ainda. Após o arquivo ser escrito, pergunte ao usuário: "Qual destes você gostaria de explorar?" ### 3. Loop de sabatina (Grilling loop) Assim que o usuário escolher um candidato, execute a skill `/grilling` para percorrer a árvore de decisões com ele — restrições, dependências, o formato do módulo aprofundado, o que fica atrás da costura, quais testes sobrevivem. Efeitos colaterais acontecem inline conforme as decisões se cristalizam — execute a skill `/domain-modeling` para manter o modelo de domínio atualizado à medida que avança: - **Nomeando um módulo aprofundado com um conceito que não está em `CONTEXT.md`?** Adicione o termo ao `CONTEXT.md`. Crie o arquivo sob demanda (lazily) se ele não existir. - **Refinando um termo impreciso durante a conversa?** Atualize o `CONTEXT.md` ali mesmo. - **O usuário rejeitou o candidato por um motivo estrutural importante (load-bearing)?** Ofereça um ADR, formulado como: _"Quer que eu registre isso como um ADR para que revisões de arquitetura futuras não voltem a sugerir isso?"_ Ofereça apenas quando o motivo realmente for necessário para que um explorador futuro evite sugerir a mesma coisa — ignore motivos efêmeros ("não vale a pena agora") e autoevidentes. - **Quer explorar interfaces alternativas para o módulo aprofundado?** Execute a skill `/codebase-design` e use seu padrão de subagentes paralelos design-it-twice.
GitHub에서 보기