grahama1970/batch-quality

Validação pré-voo e portões de qualidade para operações em lote com LLMs. Testa amostras através do LLM antes de queimar tokens. Usa contratos SPARTA para consultas de validação no DuckDB. Integra-se com task-monitor para portões de qualidade obrigatórios.

O que é batch-quality?

Esta skill previne chamadas desperdiçadas ao LLM validando a qualidade ANTES de executar operações em lote completas. Diferente de verificações simples de existência de arquivo, esta skill executa amostras reais através do LLM usando scillm, valida a estrutura da resposta JSON e utiliza contratos SPARTA para consultas de validação no DuckDB. Ela se integra com o task-monitor para impor portões de qualidade durante a execução, com suporte para loops de pausa-avaliação-diagnóstico-ajuste-retomada. A skill oferece comandos CLI como preflight (testa N amostras), validate (executa consultas de contrato contra DuckDB) e status/clear para gerenciamento. Funciona com pipelines SPARTA e é essencial para operações longas como geração de QRA, onde a qualidade pode degradar sem intervenção.

Funciona com~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/grahama1970/agent-skills/tree/main/skills/batch-quality

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Skill de Qualidade de Lote

Evite chamadas desperdiçadas ao LLM validando a qualidade ANTES de executar operações em lote completas.

O Que Esta Skill Realmente Faz

Diferente de verificações simples de existência de arquivo, esta skill:

  1. Executa realmente o LLM em N amostras usando scillm
  2. Valida a estrutura da resposta JSON (excertos, source_quality, etc.)
  3. Utiliza contratos SPARTA para consultas de validação no DuckDB
  4. Integra-se com task-monitor para portões de qualidade obrigatórios

Início Rápido

cd .pi/skills/batch-quality

# Preflight: Testa 3 amostras através do LLM real
uv run python cli.py preflight \
    --stage 05 \
    --run-id run-recovery-verify \
    --samples 3

# Se o preflight passar, execute seu lote
# ...operação em lote...

# Validate: Verifica DuckDB contra contrato
uv run python cli.py validate \
    --stage 05 \
    --run-id run-recovery-verify \
    --task-name "sparta-stage-05"

Comandos

preflight

Testa N amostras através do LLM real antes de executar o lote completo.

uv run python cli.py preflight \
    --stage <nome-do-estágio> \
    --run-id <sparta-run-id> \
    --samples 3 \
    --prompt <arquivo-de-prompt-opcional>

O que ele realmente faz:

  1. Carrega o contrato SPARTA para o estágio (se existir)
  2. Verifica variáveis de ambiente (CHUTES_API_KEY, CHUTES_TEXT_MODEL)
  3. Conecta ao DuckDB para a execução
  4. Amostra N itens da fila de entrada
  5. Executa cada amostra através do scillm (chamada real ao LLM)
  6. Valida a estrutura da resposta JSON
  7. Exige que 50%+ das amostras passem

Códigos de saída:

  • 0: APROVADO - seguro prosseguir
  • 1: REPROVADO - corrija os problemas primeiro

validate

Valida a saída do lote usando contratos SPARTA.

uv run python cli.py validate \
    --stage <nome-do-estágio> \
    --run-id <sparta-run-id> \
    --task-name <nome-do-task-monitor>

O que ele realmente faz:

  1. Carrega o contrato SPARTA (ex.: 05_extract_knowledge.json)
  2. Executa todas validation_queries do contrato contra DuckDB
  3. Verifica cada resultado de consulta contra expected_min
  4. Notifica o task-monitor sobre aprovação/reprovação

Exemplo de contrato (05_extract_knowledge.json):

{
  "validation_queries": [
    {"name": "url_knowledge_count", "query": "SELECT COUNT(*) FROM url_knowledge", "expected_min": 10},
    {"name": "urls_processed", "query": "SELECT COUNT(*) FROM url_extraction_log WHERE ok = true", "expected_min": 5}
  ]
}

status

Verifica o status atual do preflight (saída JSON).

uv run python cli.py status

clear

Limpa o estado do preflight (requer novo preflight).

uv run python cli.py clear

Integração com Pipeline SPARTA

# 1. Registra tarefa com exigência de validação
uv run python .pi/skills/task-monitor/monitor.py register \
    --name "sparta-stage-05" \
    --require-validation

# 2. Executa preflight (REALMENTE testa o LLM)
uv run python .pi/skills/batch-quality/cli.py preflight \
    --stage 05 \
    --run-id run-recovery-verify \
    --samples 3

# 3. Executa lote (apenas se o preflight passou)
uv run python -m sparta.pipeline_duckdb.05_extract_knowledge \
    --run-id run-recovery-verify

# 4. Valida usando consultas do contrato
uv run python .pi/skills/batch-quality/cli.py validate \
    --stage 05 \
    --run-id run-recovery-verify \
    --task-name "sparta-stage-05"

Configuração

Variáveis de ambiente:

  • SPARTA_ROOT: Caminho para o projeto SPARTA (padrão: ~/workspace/experiments/sparta)
  • CHUTES_API_KEY: Chave de API para chamadas LLM
  • CHUTES_API_BASE: URL base da API (padrão: https://llm.chutes.ai/v1)
  • CHUTES_TEXT_MODEL: ID do modelo para extração de texto

Localização dos contratos: $SPARTA_ROOT/tools/pipeline_gates/fixtures/D3-FEV/contracts/

Dependências

  • typer - Framework CLI
  • duckdb - Consultas ao banco de dados
  • scillm - Processamento em lote LLM (para teste real de amostras)

Portões de Qualidade Durante a Execução (NÃO NEGOCIÁVEIS)

Para operações em lote de longa duração (especialmente geração de QRA, extração, etc.), apenas o preflight é insuficiente. Você DEVE executar portões de qualidade durante a execução, não apenas antes.

O Loop Pausa-Avaliação-Diagnóstico-Ajuste-Retomada

Após cada N pontos de verificação do lote (ex.: a cada 5 lotes KNN / ~1000 QRAs):

  1. PAUSE — SIGSTOP o processo de geração
  2. SNAPSHOT — Copie o DuckDB para análise offline, SIGCONT imediatamente
  3. SAMPLE — Amostragem aleatória estratificada (estratos alto/médio/baixo de fundamentação)
  4. ASSESS — Verifique cada amostra: fundamentação de entidade, qualidade da resposta, raciocínio
  5. DIAGNOSE — Análise de tendência: a fundamentação está diminuindo? Falhas de entidade aumentando?
  6. TWEAK — Se degradando: ajuste prompt, limiares de filtro, pontuações de relacionamento
  7. RESUME — Apenas se a qualidade atender aos limiares
  8. STOP + NOTIFY — Se a qualidade estiver abaixo do piso, pare e notifique um humano

Isto não é opcional. Um lote que executa até 100k QRAs sem portões de qualidade produzirá lixo que leva mais tempo para limpar do que para regenerar corretamente.

Script de Portão de Qualidade QRA

# Vigia contínuo (executa junto com a geração de QRA)
python $SPARTA_ROOT/scripts/qra_quality_gate.py watch \
    --run-id run-recovery-verify \
    --batch-interval 5 \
    --samples 10

# Avaliação única
python $SPARTA_ROOT/scripts/qra_quality_gate.py assess \
    --run-id run-recovery-verify \
    --samples 20

# Visualizar tendência entre pontos de verificação
python $SPARTA_ROOT/scripts/qra_quality_gate.py trend \
    --run-id run-recovery-verify

Limiares de Qualidade

MétricaAlertaParar
Fundamentação Média< 0.65< 0.55
% de Falha de Entidade> 5%> 10%
Taxa de Falha de Amostra> 15%> 30%
Queda na Fundamentação (por checkpoint)> 0.05> 0.10

Por Que Isso Importa

A pontuação de fundamentação QRA caiu de 0.74 para 0.62 ao longo de horas sem intervenção porque o vigia estava passivo. Um portão de qualidade adequado teria captado a queda em 0.70 → 0.65 e a diagnosticado (KNN esgotando relacionamentos fáceis, deriva de prompt, etc.) em vez de deixá-la deslizar até 0.62.

Princípio Chave

Preflight é barato. Lotes com falha são caros.

Testar 3 amostras custa ~$0.01 e leva 30 segundos. Executar 1000 itens com um prompt quebrado custa ~$3 e leva horas.

Portões durante a execução são mais baratos que regenerar. Pausar por 10 segundos a cada 1000 QRAs para verificar a qualidade não custa nada. Executar 100k QRAs cegamente e descobrir que metade é inutilizável custa tudo.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

grahama1970/acceptance-contract

Turn a client brief, zip bundle, directory, or single requirements file into a typed acceptance-contract bundle with extracted requirements, acceptance checks, open questions, an immutable-goal draft, and a create-report-backed decision report. Use when users say acceptance contract, brief to requirements, freeze the goal, create immutable goal, amend immutable goal, build a Battle requirements bundle, or extract requirements from this bundle.

grahama1970/agent-ecosystem

Canonical map and shared contracts for the agent-governance ecosystem: the pi.receipt_envelope.v1 boundary envelope, the component graph, and the rules for which component owns which schema. Use when wiring a skill or extension into the shared receipt world, when asking how shame, triage-error, tau, ask, project-watchdog, ops-herdr, ponytail, and Memory fit together, or when validating an envelope.

grahama1970/agentic-evals

Agentic evaluation of skills using multi-trial fixtures, deterministic command assertions, trajectory checks, safety constraints, and evidence-backed readiness scoring. Use when users ask for agentic evals, multi-trial skill evaluation, skill trajectory validation, or readiness scoring for a skill workflow.

grahama1970/agent-inbox

File-based inter-agent messaging with headless dispatch. Check inbox, send bugs/requests to other projects, automatically spawn headless agents to fix bugs, and track progress via task-monitor.

grahama1970/agents-registry

Generate and query the centralized agent identity registry. Scans .pi/agents/*/AGENTS.md, parses frontmatter, outputs agents-registry.json and optionally syncs to /memory for semantic search.

grahama1970/agent-status

Artifact-driven status surfaces for long-running project-agent work. Maintains status.json, events.jsonl, proof manifests, and a stale-aware STATUS.html so humans can tell where the agent is, what passed, what is still unproven, and what decision or action is next — without dashboard theater.

grahama1970/align

Round-based context alignment before execution. Use when the human, project agent, WebGPT, scillm, ask, dogpile, memory, or project-knowledge may each hold different facts about a task; especially before ambiguous design, infographic, product workflow, high-stakes implementation, plan-iterate, project-infographic, or multi-review work.

grahama1970/analytics

Flexible data science analytics for any dataset. Auto-discovers schema, recommends charts, exports to create-figure. Works with JSONL, JSON, CSV from any source.

grahama1970/analyze-chatterbox-emotions

Evaluate generated Chatterbox voice files as voice-quality artifacts: affect match, arousal/valence proxies, pause placement, intelligibility inputs, clipping, loudness, and discontinuity flags. Use when reviewing Chatterbox emotional tags, pauses, Turbo/base affect delivery, Persona Dream utterance renders, or whether generated speech matches an intended product-facing affect.

grahama1970/analyze-elf

Reverse-engineer features from ELF binaries. Extracts CLI commands, state machines, protocols, Zod schemas, and data models. Automatically generates a /create-walkthrough prosecution brief with Mermaid diagrams. Uses /treesitter for AST analysis of bundled JS/TS source.

grahama1970/animation-vocabulary

Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.

grahama1970/anonymize-data

Anonymize supported CSV, JSON, UTF-8 text, and SQLite files using an explicit policy through the oai-trial project. Use for anonymize data, pseudonymize exports, redact policy literals, or discover and explicitly approve fuzzy name aliases. The skill is a thin CLI/Docker interface, not another engine.

grahama1970/anvil

Heavy-duty "No-Vibes" debugging and hardening orchestrator. Use this for complex, stubborn bugs where `review-code` has failed, or for "Red Teaming" (hardening) a codebase. Runs multiple agents in parallel (Thunderdome) using git worktree isolation.

grahama1970/apple-design

Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.

grahama1970/argue

Multi-persona structured debate orchestrator. Personas research via /dogpile, consult colleagues via /ask, and argue toward nuanced synthesis on complex questions.

grahama1970/arxiv

Search arXiv for papers and extract knowledge into memory. Use `search` to find papers, `learn` to extract knowledge.

grahama1970/ask

Use when the user asks to query project memory, ask an oracle, use supported browser-backed reviewers, run Tau roundtable/single-handler workflows, ask Pi-native subagents from within Pi, run persona/deep-review workflows, generate image prompts, check OS/project health through composed skills, or run an ask DAG. This skill is the executable /ask runtime; do not replace it with an informal subagent, plain web search, or hand-written review; inside Pi, explicit Pi-native subagent targets are routed through the pi-subagents tool as an Ask target type.

grahama1970/assess

Step back and critically reassess project state. Use when asked to "assess", "step back", "fresh eyes", "check alignment", "sanity check", "health check", "prune documentation", or "evaluate what's working". Offers documentation pruning and doc-code alignment analysis. Offer to run after major changes (don't auto-run).

grahama1970/assistant

Shared GPT + classifier inference gateway for persona monitor tasks. Routes validation and classification through a 4-tier cascade: heuristic → classifier → local GPT → scillm.

grahama1970/assistant-lab

Self-improvement workbench for /assistant. All the tools needed to diagnose, train, evaluate, and promote models in a continuous loop. The "warm pond" where /assistant evolves its own inference stack.

Habilidades Relacionadas