grahama1970/batch-quality

Validation pré-vol et contrôles qualité pour les opérations LLM par lots. TESTE réellement des échantillons via LLM avant de brûler des tokens. Utilise les contrats SPARTA pour les requêtes de validation DuckDB. S'intègre avec task-monitor pour des contrôles qualité obligatoires.

Qu'est-ce que batch-quality ?

Cette compétence permet d'éviter le gaspillage de tokens LLM en validant la qualité AVANT d'exécuter des opérations par lots complètes. Contrairement à de simples vérifications d'existence de fichiers, elle exécute réellement le LLM sur un échantillon (via scillm), valide la structure des réponses JSON, utilise des contrats SPARTA pour valider les résultats dans DuckDB, et s'intègre avec task-monitor pour imposer des contrôles qualité obligatoires. Elle prend en charge les assistants IA comme Claude Code, Cursor, Codex, etc. Elle est particulièrement utile pour les pipelines SPARTA où la qualité des données est critique. La compétence offre des commandes CLI pour le pré-vol (preflight), la validation post-lot (validate), la vérification d'état (status) et la réinitialisation (clear). Elle met en œuvre un mécanisme de contrôle qualité en cours d'exécution (Pause-Assess-Diagnose-Tweak-Resume Loop) pour les opérations longues, avec des seuils de qualité configurables (avertissement et arrêt).

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Compétence Batch Quality

Évitez les appels LLM gaspillés en validant la qualité AVANT d'exécuter des opérations par lots complètes.

Ce que fait réellement cette compétence

Contrairement à de simples vérifications d'existence de fichiers, cette compétence :

  1. Exécute réellement le LLM sur N échantillons via scillm
  2. Valide la structure des réponses JSON (extraits, source_quality, etc.)
  3. Utilise les contrats SPARTA pour les requêtes de validation DuckDB
  4. S'intègre avec task-monitor pour des contrôles qualité obligatoires

Démarrage rapide

cd .pi/skills/batch-quality

# Pré-vol : Tester 3 échantillons via le LLM réel
uv run python cli.py preflight \
    --stage 05 \
    --run-id run-recovery-verify \
    --samples 3

# Si le pré-vol réussit, exécutez votre lot
# ...opération par lots...

# Validation : Vérifier DuckDB par rapport au contrat
uv run python cli.py validate \
    --stage 05 \
    --run-id run-recovery-verify \
    --task-name "sparta-stage-05"

Commandes

preflight

Tester N échantillons via le LLM réel avant d'exécuter le lot complet.

uv run python cli.py preflight \
    --stage <nom-étape> \
    --run-id <id-exécution-sparta> \
    --samples 3 \
    --prompt <fichier-prompt-optionnel>

Ce qu'il fait réellement :

  1. Charge le contrat SPARTA pour l'étape (s'il existe)
  2. Vérifie les variables d'environnement (CHUTES_API_KEY, CHUTES_TEXT_MODEL)
  3. Se connecte à DuckDB pour l'exécution
  4. Échantillonne N éléments depuis la file d'entrée
  5. Exécute chaque échantillon via scillm (appel LLM réel)
  6. Valide la structure de la réponse JSON
  7. Nécessite que 50 %+ des échantillons réussissent

Codes de sortie :

  • 0 : RÉUSSI - sûr de continuer
  • 1 : ÉCHEC - corrigez d'abord les problèmes

validate

Valider la sortie du lot à l'aide des contrats SPARTA.

uv run python cli.py validate \
    --stage <nom-étape> \
    --run-id <id-exécution-sparta> \
    --task-name <nom-moniteur-tâche>

Ce qu'il fait réellement :

  1. Charge le contrat SPARTA (par exemple, 05_extract_knowledge.json)
  2. Exécute toutes les validation_queries du contrat sur DuckDB
  3. Vérifie chaque résultat de requête par rapport à expected_min
  4. Notifie task-monitor du succès/échec

Exemple de contrat (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

Vérifier l'état actuel du pré-vol (sortie JSON).

uv run python cli.py status

clear

Effacer l'état du pré-vol (nécessite un nouveau pré-vol).

uv run python cli.py clear

Intégration du pipeline SPARTA

# 1. Enregistrer la tâche avec exigence de validation
uv run python .pi/skills/task-monitor/monitor.py register \
    --name "sparta-stage-05" \
    --require-validation

# 2. Exécuter le pré-vol (TESTE RÉELLEMENT le LLM)
uv run python .pi/skills/batch-quality/cli.py preflight \
    --stage 05 \
    --run-id run-recovery-verify \
    --samples 3

# 3. Exécuter le lot (uniquement si le pré-vol a réussi)
uv run python -m sparta.pipeline_duckdb.05_extract_knowledge \
    --run-id run-recovery-verify

# 4. Valider à l'aide des requêtes du contrat
uv run python .pi/skills/batch-quality/cli.py validate \
    --stage 05 \
    --run-id run-recovery-verify \
    --task-name "sparta-stage-05"

Configuration

Variables d'environnement :

  • SPARTA_ROOT : Chemin vers le projet SPARTA (par défaut ~/workspace/experiments/sparta)
  • CHUTES_API_KEY : Clé API pour les appels LLM
  • CHUTES_API_BASE : URL de base de l'API (par défaut https://llm.chutes.ai/v1)
  • CHUTES_TEXT_MODEL : Identifiant du modèle pour l'extraction de texte

Emplacement des contrats : $SPARTA_ROOT/tools/pipeline_gates/fixtures/D3-FEV/contracts/

Dépendances

  • typer - Infrastructure CLI
  • duckdb - Requêtes de base de données
  • scillm - Traitement par lots LLM (pour les tests d'échantillons réels)

Contrôles Qualité Obligatoires En Vol (NON-NÉGOCIABLES)

Pour les opérations par lots longues (en particulier la génération QRA, l'extraction, etc.), le pré-vol seul est insuffisant. Vous DEVEZ exécuter des contrôles qualité pendant l'exécution, pas seulement avant.

La Boucle Pause-Évaluer-Diagnostiquer-Ajuster-Reprendre

Après chaque N points de contrôle du lot (par exemple, tous les 5 lots KNN / ~1000 QRA) :

  1. PAUSE — SIGSTOP le processus de génération
  2. INSTANTANÉ — Copier DuckDB pour analyse hors ligne, SIGCONT immédiatement
  3. ÉCHANTILLON — Échantillon aléatoire stratifié (strates d'ancrage élevé/moyen/faible)
  4. ÉVALUER — Vérifier chaque échantillon : ancrage des entités, qualité des réponses, raisonnement
  5. DIAGNOSTIQUER — Analyse des tendances : l'ancrage diminue-t-il ? Les échecs d'entités augmentent-ils ?
  6. AJUSTER — Si dégradation : ajuster le prompt, les seuils de filtre, les scores de relation
  7. REPRENDRE — Uniquement si la qualité atteint les seuils
  8. ARRÊTER + NOTIFIER — Si la qualité est inférieure au seuil, arrêter et notifier un humain

Ceci n'est pas optionnel. Un lot qui s'exécute jusqu'à 100 000 QRA sans contrôles qualité produira des déchets qui prendront plus de temps à nettoyer qu'à régénérer correctement.

Script de Contrôle Qualité QRA

# Surveillant continu (s'exécute parallèlement à la génération QRA)
python $SPARTA_ROOT/scripts/qra_quality_gate.py watch \
    --run-id run-recovery-verify \
    --batch-interval 5 \
    --samples 10

# Évaluation unique
python $SPARTA_ROOT/scripts/qra_quality_gate.py assess \
    --run-id run-recovery-verify \
    --samples 20

# Voir la tendance sur les points de contrôle
python $SPARTA_ROOT/scripts/qra_quality_gate.py trend \
    --run-id run-recovery-verify

Seuils de Qualité

MétriqueAvertissementArrêt
Ancrage moyen< 0.65< 0.55
% d'échecs d'entités> 5 %> 10 %
Taux d'échec des échantillons> 15 %> 30 %
Baisse d'ancrage (par point de contrôle)> 0.05> 0.10

Pourquoi c'est important

Le score d'ancrage QRA a dérivé de 0.74 à 0.62 sur des heures sans intervention car le surveillant était passif. Un contrôle qualité approprié aurait détecté la baisse à 0.70 → 0.65 et l'aurait diagnostiquée (KNN épuisant les relations faciles, dérive du prompt, etc.) au lieu de la laisser glisser jusqu'à 0.62.

Principe Clé

Le pré-vol est bon marché. Les lots échoués sont coûteux.

Tester 3 échantillons coûte ~0.01 $ et prend 30 secondes. Exécuter 1000 éléments avec un prompt cassé coûte ~3 $ et prend des heures.

Les contrôles en vol sont moins chers que la régénération. Pause de 10 secondes toutes les 1000 QRA pour vérifier la qualité ne coûte rien. Exécuter 100 000 QRA à l'aveugle et découvrir que la moitié est inutilisable coûte tout.

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.

Skills associés