aplimoramento de agent

This commit is contained in:
Luiz Silva 2026-09-02 10:23:53 -03:00
parent b361f25955
commit f597436be3
83 changed files with 1312 additions and 574 deletions

149
validar-setup.sh Normal file
View file

@ -0,0 +1,149 @@
#!/usr/bin/env bash
# ==============================================================================
# Script de Governança: Validar Setup Multi-Projeto (.agent)
# Valida a conformidade de qualquer projeto hospedeiro com os 6 pilares DDD.
# ==============================================================================
set -e
# Cores para saída no terminal
VERDE="\033[0;32m"
AMARELO="\033[1;33m"
VERMELHO="\033[0;31m"
AZUL="\033[0;34m"
NEGRITO="\033[1m"
RESET="\033[0m"
# Identificar a raiz do projeto pai
if [ -d "../memorias-ia" ] || [ -f "../package.json" ]; then
ROOT_DIR=".."
elif [ -d "memorias-ia" ] || [ -f "package.json" ]; then
ROOT_DIR="."
else
ROOT_DIR="."
fi
echo -e "${AZUL}${NEGRITO}======================================================${RESET}"
echo -e "${AZUL}${NEGRITO}🔍 Auditoria de Setup Multi-Projeto (.agent)${RESET}"
echo -e "${AZUL}${NEGRITO}======================================================${RESET}"
TOTAL_ERROS=0
TOTAL_AVISOS=0
# 1. Validar memorias-ia/modulo.yml (Pilar 6 - Identidade)
MODULO_YML="$ROOT_DIR/memorias-ia/modulo.yml"
echo -e "\n${NEGRITO}[1/6] Identidade do Módulo (memorias-ia/modulo.yml)${RESET}"
if [ -f "$MODULO_YML" ]; then
echo -e " ${VERDE}✓${RESET} Arquivo memorias-ia/modulo.yml encontrado."
# Validar as 4 chaves obrigatórias
MODULO_ID=$(grep -E "^modulo-id:" "$MODULO_YML" | awk '{print $2}' || true)
MODULO_CAMINHO=$(grep -E "^modulo-caminho:" "$MODULO_YML" | awk '{print $2}' || true)
MODULO_DESCRICAO=$(grep -E "^modulo-descricao:" "$MODULO_YML" || true)
MODULO_TIPO=$(grep -E "^modulo-tipo:" "$MODULO_YML" || true)
if [ -n "$MODULO_ID" ]; then
echo -e " ${VERDE}✓${RESET} modulo-id: ${NEGRITO}$MODULO_ID${RESET}"
else
echo -e " ${VERMELHO}✗${RESET} Chave 'modulo-id' ausente ou vazia."
TOTAL_ERROS=$((TOTAL_ERROS + 1))
fi
if [ -n "$MODULO_CAMINHO" ]; then
echo -e " ${VERDE}✓${RESET} modulo-caminho: ${NEGRITO}$MODULO_CAMINHO${RESET}"
else
echo -e " ${VERMELHO}✗${RESET} Chave 'modulo-caminho' ausente ou vazia."
TOTAL_ERROS=$((TOTAL_ERROS + 1))
fi
if [ -n "$MODULO_DESCRICAO" ]; then
echo -e " ${VERDE}✓${RESET} modulo-descricao configurada."
else
echo -e " ${VERMELHO}✗${RESET} Chave 'modulo-descricao' ausente."
TOTAL_ERROS=$((TOTAL_ERROS + 1))
fi
if [ -n "$MODULO_TIPO" ]; then
echo -e " ${VERDE}✓${RESET} modulo-tipo configurado."
else
echo -e " ${VERMELHO}✗${RESET} Chave 'modulo-tipo' ausente."
TOTAL_ERROS=$((TOTAL_ERROS + 1))
fi
else
echo -e " ${VERMELHO}✗ CRÍTICO: Arquivo memorias-ia/modulo.yml NÃO encontrado!${RESET}"
echo -e " Execute: cp .agent/DOCUMENTACAO/templates/modulo.yml.template memorias-ia/modulo.yml"
TOTAL_ERROS=$((TOTAL_ERROS + 1))
fi
# 2. Validar Wiki do Usuário (Pilar 3)
echo -e "\n${NEGRITO}[2/6] Wiki do Usuário (Pilar 3)${RESET}"
if [ -n "$MODULO_ID" ]; then
WIKI_USER_DIR="$ROOT_DIR/<base_projeto>/../wiki/$MODULO_ID"
if [ -d "$WIKI_USER_DIR" ]; then
echo -e " ${VERDE}✓${RESET} Diretório encontrado em: <base_projeto>/../wiki/$MODULO_ID/"
else
echo -e " ${AMARELO}⚠${RESET} Diretório <base_projeto>/../wiki/$MODULO_ID/ não encontrado."
TOTAL_AVISOS=$((TOTAL_AVISOS + 1))
fi
else
echo -e " ${AMARELO}⚠${RESET} Ignorado: modulo-id não definido."
fi
# 3. Validar Wiki de Desenvolvimento (Pilar 4)
echo -e "\n${NEGRITO}[3/6] Wiki de Desenvolvimento (Pilar 4)${RESET}"
if [ -n "$MODULO_ID" ]; then
WIKI_DEV_DIR="$ROOT_DIR/<base_projeto>/../wiki/dev/$MODULO_ID"
if [ -d "$WIKI_DEV_DIR" ]; then
echo -e " ${VERDE}✓${RESET} Diretório encontrado em: <base_projeto>/../wiki/dev/$MODULO_ID/"
else
echo -e " ${AMARELO}⚠${RESET} Diretório <base_projeto>/../wiki/dev/$MODULO_ID/ não encontrado."
TOTAL_AVISOS=$((TOTAL_AVISOS + 1))
fi
else
echo -e " ${AMARELO}⚠${RESET} Ignorado: modulo-id não definido."
fi
# 4. Validar Integração de IA (/llm.md - Pilar 5)
echo -e "\n${NEGRITO}[4/6] Integração de IA /llm.md (Pilar 5)${RESET}"
BACK_DIRS=$(find "$ROOT_DIR" -maxdepth 2 -name "*-back" -type d 2>/dev/null || true)
if [ -n "$BACK_DIRS" ]; then
if grep -rq "llm\.md" $BACK_DIRS/src 2>/dev/null; then
echo -e " ${VERDE}✓${RESET} Rota /llm.md configurada no backend."
else
echo -e " ${AMARELO}⚠${RESET} Rota /llm.md não detectada no código do backend."
TOTAL_AVISOS=$((TOTAL_AVISOS + 1))
fi
else
echo -e " ${AZUL}ℹ${RESET} Nenhum pacote *-back identificado no nível raiz."
fi
# 5. Validar Camada de Extensão Local (.agent-local/)
echo -e "\n${NEGRITO}[5/6] Extensibilidade Local (.agent-local/)${RESET}"
if [ -d "$ROOT_DIR/.agent-local" ]; then
echo -e " ${VERDE}✓${RESET} Camada .agent-local/ presente para regras específicas deste projeto."
else
echo -e " ${AZUL}ℹ${RESET} .agent-local/ ausente (usando 100% regras e skills globais)."
fi
# 6. Validar Limite de Linhas (Governança de Código)
echo -e "\n${NEGRITO}[6/6] Governança de Código (verificar-linhas.sh)${RESET}"
if [ -f "$ROOT_DIR/.agent/verificar-linhas.sh" ]; then
sh "$ROOT_DIR/.agent/verificar-linhas.sh" > /dev/null 2>&1 && \
echo -e " ${VERDE}✓${RESET} 100% dos arquivos dentro do limite de 250 linhas." || \
echo -e " ${AMARELO}⚠${RESET} Há arquivos excedendo 250 linhas (execute sh .agent/verificar-linhas.sh)."
fi
# Resumo Final
echo -e "\n${AZUL}${NEGRITO}======================================================${RESET}"
if [ "$TOTAL_ERROS" -eq 0 ]; then
if [ "$TOTAL_AVISOS" -eq 0 ]; then
echo -e "${VERDE}${NEGRITO}🎉 SUCESSO: Projeto 100% em conformidade com o ecossistema .agent!${RESET}"
else
echo -e "${AMARELO}${NEGRITO}✨ PROJETO VÁLIDO: $TOTAL_AVISOS aviso(s) secundário(s) para revisar.${RESET}"
fi
exit 0
else
echo -e "${VERMELHO}${NEGRITO}❌ CONFORMIDADE INCOMPLETA: $TOTAL_ERROS erro(s) mandatório(s) encontrado(s).${RESET}"
exit 1
fi