--- name: quality-validator description: > Valida componentes contra standards Descomplicar®. Use when "validar", "score", "qualidade", "audit", "verificar frontmatter", "checklist", "quality gate". author: Descomplicar® version: 1.0.0 desk_task: 1441 allowed-tools: Read, Glob, Grep --- # Quality Validator Skill para validar componentes e garantir qualidade mínima antes de activação. ## Triggers Esta skill deve ser activada quando: - Novo componente é criado - Comando `/descomplicar:validate` é invocado - Antes de release (`/descomplicar:release`) - Após edição de componente existente - Durante sync para bloquear componentes inválidos ## Capabilities ### 1. Validar Skill **Checklist Obrigatório:** | Campo | Obrigatório | Peso | |-------|-------------|------| | `name:` | Sim | 15 | | `description:` | Sim | 20 | | `author:` | Sim | 5 | | `version:` | Sim | 5 | | `desk_task:` | Não | 5 | | `allowed-tools:` | Sim | 10 | | Triggers section | Sim | 10 | | Capabilities section | Sim | 10 | | Workflow | Não | 5 | | Exemplo de Uso | Não | 10 | | Limites section | Não | 5 | **Validações de Qualidade:** - `description:` contém triggers (keywords) → +5 pontos - `description:` tem 5+ keywords → +5 pontos - Tamanho < 500 linhas → +5 pontos - Sem erros de sintaxe YAML → obrigatório ### 2. Validar Agent **Checklist Obrigatório:** | Campo | Obrigatório | Peso | |-------|-------------|------| | `name:` | Sim | 15 | | `description:` | Sim | 20 | | `model:` | Sim | 10 | | `tools:` | Sim | 10 | | `allowed-mcps:` | Sim | 15 | | `category:` | Sim | 10 | | `author:` | Sim | 5 | | `version:` | Sim | 5 | | Quando Usar section | Não | 5 | | Workflow section | Não | 5 | **Validações de Qualidade:** - MCPs mapeados existem em `cr_mcps` → +5 pontos - Categoria válida (dev|business|marketing|infra) → obrigatório - Model válido (sonnet|opus|haiku) → obrigatório ### 3. Validar Command **Checklist Obrigatório:** | Campo | Obrigatório | Peso | |-------|-------------|------| | `name:` | Sim | 20 | | `description:` | Sim | 30 | | `argument-hint:` | Não | 10 | | Objectivo section | Sim | 15 | | Sintaxe section | Sim | 15 | | Output section | Não | 10 | ### 4. Calcular Score **Fórmula:** ``` score = (campos_obrigatorios * peso_obrigatorio) + (campos_opcionais * peso_opcional) + bonus_qualidade ``` **Interpretação:** | Score | Status | Acção | |-------|--------|-------| | >= 90 | Production | Pronto para uso | | 70-89 | Beta | Pode activar com aviso | | 50-69 | Draft | Requer melhorias | | < 50 | Invalid | **BLOQUEAR** activação | ### 5. Gerar Relatório **Output:** ``` ╔══════════════════════════════════════════════════════════════════════╗ ║ QUALITY VALIDATION: ║ ║ Type: Skill | Path: skills//SKILL.md ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ FRONTMATTER ║ ║ ├── name: ✓ Present ║ ║ ├── description: ✓ Present (5 keywords detected) ║ ║ ├── author: ✓ Present ║ ║ ├── version: ✓ Present (1.0.0) ║ ║ ├── desk_task: ✗ Missing (optional) ║ ║ └── allowed-tools: ✓ Present (Read, Glob, Grep) ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ CONTENT SECTIONS ║ ║ ├── Triggers: ✓ Present ║ ║ ├── Capabilities: ✓ Present (3 capabilities) ║ ║ ├── Workflow: ✓ Present ║ ║ ├── Exemplo: ✗ Missing (recommended) ║ ║ └── Limites: ✗ Missing (recommended) ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ QUALITY CHECKS ║ ║ ├── Lines: 234 (< 500 ✓) ║ ║ ├── YAML syntax: Valid ✓ ║ ║ └── Keywords: 5 detected ✓ ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ SCORE: 78/100 ████████████████░░░░ BETA ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ SUGGESTIONS ║ ║ 1. Adicionar secção "Exemplo de Uso" (+10 pontos) ║ ║ 2. Adicionar secção "Limites" (+5 pontos) ║ ║ 3. Adicionar desk_task no frontmatter (+5 pontos) ║ ╚══════════════════════════════════════════════════════════════════════╝ ``` ## Quality Gates ### Gate 1: Criação - Score >= 50 para criar componente - Se < 50: BLOQUEAR e mostrar erros ### Gate 2: Activação - Score >= 70 para activar componente - Se < 70: AVISO + sugestões ### Gate 3: Release - Score >= 90 para todos os componentes - Se algum < 90: BLOQUEAR release ## Integração com Sync Durante `/descomplicar:sync`: ```sql -- Verificar componentes com score baixo SELECT c.slug, c.quality_score, c.status FROM cr_skills c WHERE c.quality_score < 70 AND c.status = 'active'; -- Marcar para revisão UPDATE cr_skills SET status = 'review_required' WHERE quality_score < 70 AND status = 'active'; ``` ## Workflow ``` READ COMPONENT → PARSE FRONTMATTER → CHECK SECTIONS → CALCULATE SCORE → REPORT ↓ ↓ ↓ ↓ ↓ File path YAML valid All present 0-100 Suggestions ``` ## Exemplo de Uso ``` User: Valida a skill infrastructure-manager Quality Validator: 1. [Lê skills/infrastructure-manager/SKILL.md] 2. [Verifica frontmatter: 6/6 campos] 3. [Verifica secções: 4/5 presentes] 4. [Calcula score: 85/100] 5. Resultado: "Score: 85/100 (BETA) ✓ Pronto para uso Sugestão: Adicionar secção 'Limites' para score 90+" ``` ## Limites - Não modifica componentes (apenas lê e reporta) - Não cria componentes (usar component-generator) - Não executa correções automáticas (usar /descomplicar:upgrade)