- Execute all 6 migrations on Desk CRM production database - Create missing tables: cr_lsps, cr_agent_lsps, cr_lsp_usage - Create archive tables: cr_*_usage_archive (4 tables) - Create system tables: cr_migrations, cr_maintenance_log - Make all scripts executable (chmod +x) - Total cr_* tables: 38 Migration files: - 001_initial_schema.sql - 002_add_lsps.sql - 003_add_relationships.sql - 004_add_telemetry.sql - 005_add_archive_tables.sql - 006_add_maintenance_log.sql Scripts: - session-init.sh, session-end.sh - inject-context.sh, inject-agent-context.sh - record-usage.sh, db-backup.sh, sync-to-mysql.sh Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
197 lines
7.5 KiB
Markdown
197 lines
7.5 KiB
Markdown
---
|
|
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: <component-name> ║
|
|
║ Type: Skill | Path: skills/<name>/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)
|