| name | enforce-architecture |
| description | Constraint-skill: valida fronteiras de Clean Architecture no fixkitty. Use SEMPRE como último passo ao criar ou alterar qualquer artefato, por camada ou por feature. Detecta importações proibidas, responsabilidades vazadas e acoplamentos indevidos. Não gera código — apenas valida. |
Skill: Enforcer de Arquitetura (Constraint-Skill)
Quando usar
- Como último passo de qualquer outra skill (obrigatório)
- Ao revisar código de qualquer camada
- Antes de commit de código novo
- Quando suspeitar de vazamento de responsabilidade entre camadas
Fronteiras proibidas
| De (quem importa) | Proibido importar |
|---|
core/ (domain) | application/, infrastructure/, interfaces/ |
application/ (use cases) | infrastructure/, interfaces/gui/, interfaces/tui/ |
infrastructure/ | interfaces/gui/, interfaces/tui/ |
interfaces/gui/ | interfaces/tui/ (e vice-versa) |
Permitido:
core/ pode ser importado por qualquer camada
application/ pode importar core/
infrastructure/ pode importar core/ e implementar interfaces de core/ports/
interfaces/ pode importar application/ e tipos de resposta de core/
Instruções
1. Verificar imports proibidos nos arquivos criados/alterados
2. Verificar responsabilidades indevidas
3. Verificar estrutura de pacotes
Script de verificação rápida
grep -rn "import org.fixkitty.infrastructure" src/main/java/org/fixkitty/core/
grep -rn "import org.fixkitty.interfaces" src/main/java/org/fixkitty/core/
grep -rn "import org.fixkitty.infrastructure" src/main/java/org/fixkitty/application/
grep -rn "import org.fixkitty.interfaces" src/main/java/org/fixkitty/application/
grep -rn "import org.fixkitty.interfaces" src/main/java/org/fixkitty/infrastructure/
grep -rn "import org.fixkitty.interfaces.tui" src/main/java/org/fixkitty/interfaces/gui/
grep -rn "import org.fixkitty.interfaces.gui" src/main/java/org/fixkitty/interfaces/tui/
grep -rn "ProcessBuilder" src/main/java/org/fixkitty/core/
grep -rn "ProcessBuilder" src/main/java/org/fixkitty/application/
grep -rn "ProcessBuilder" src/main/java/org/fixkitty/interfaces/
Resultado esperado: zero linhas para cada grep acima.
Critical
- Esta skill não gera código — apenas valida
- Violação encontrada: parar e corrigir antes de continuar
- Nenhuma violação é tolerada como "temporária" — cria precedente difícil de reverter
Quando reportar violação
Se qualquer grep retornar resultado, reportar:
- Arquivo infrator e import proibido encontrado
- Camada correta onde a lógica deveria estar
- Sugestão de correção (mover para use case / criar port / injetar dependência)
Exemplos
Violação: Controller com lógica
@FXML void onFixAudio() {
ProcessBuilder pb = new ProcessBuilder("systemctl", "--user", "restart", "pipewire");
pb.start();
}
Correção: Mover lógica para FixAudioUseCase.execute(), controller apenas chama o use case.
Violação: Use case importando infrastructure
import org.fixkitty.infrastructure.linux.SystemctlRunner;
Correção: Criar interface CommandRunner em core/ports/, injetar via construtor.
Consulte também