/course-pipeline
│
▼
┌──────────────────┐
│ orchestrator │ ◄── lee CLAUDE.md, profile.json, indice.md
└────────┬─────────┘
│ delega vía Task
┌───────────────────────┼─────────────────────────┐
▼ ▼ ▼
┌────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ curriculum- │ │ researcher │ │ bibliographer │
│ designer │ │ → notas.md │ │ → bibliografia │
│ → indice.md │ └──────────────────┘ │ .md (semilla) │
└────────────────┘ └──────────────────┘
Para cada capítulo N en indice.md (loop secuencial, sin ceder turno):
┌────────────────────────────────────────────────────────────────────┐
│ │
│ chapter-architect ──► outline en memoria (no a disco) │
│ │ │
│ ▼ │
│ chapter-writer ──► capitulos/NN-titulo.md │
│ (PostToolUse hook valida word count + secs) │
│ │ │
│ ▼ │
│ ┌────────────────┬─────────────────┬──────────────────┐ │
│ ▼ ▼ ▼ │ │
│ quality-aud. factual-aud. biblio-aud. │ │
│ → audit-reports/NN-quality.json │ │
│ → audit-reports/NN-factual.json │ │
│ → audit-reports/NN-biblio.json │ │
│ │ │ │
│ ▼ │ │
│ ¿algún FAIL? │ │
│ sí → revision-editor (≤ 3 ciclos) → re-escribir │ │
│ no → siguiente capítulo │ │
│ │
└────────────────────────────────────────────────────────────────────┘
│ todos los capítulos PASS
▼
┌──────────────────┐
│ integration- │
│ compositor │
│ → libro-final.md │
└────────┬─────────┘
│
▼
Único reporte al usuario.
Agente: curriculum-designer
Input: tema (de CLAUDE.md), profile.json, índice previo si existe.
Output: indice.md con N capítulos coherentes, sin solapamiento, con objetivo y cobertura por capítulo.
Triggered by: /course-index o /course-pipeline.
Agentes: researcher → bibliographer
Input: indice.md, perfil.
Output: notas.md (normativa, autores, glosario, decisiones editoriales) y bibliografia.md (semilla APA 7).
Triggered by: /course-research o /course-pipeline.
Loop por cada capítulo del índice. No cede turno entre capítulos. Para cada uno:
chapter-architectproduce un outline en memoria (no escribe a disco). Distribuye palabras por sección, identifica citas previstas, marca riesgos.chapter-writerredactacapitulos/NN-titulo.mden una sola pasada. Al guardar, el hookPostToolUsevalida:- Word count global ≥
profile.chapter.min_words. - Cada sección H2 dentro de su rango.
[VERIFICAR]≤profile.quality.max_verificar_markers.- Si falla y el archivo está "cerrado" (todas las secciones presentes) → bloqueo, Claude reescribe.
- Word count global ≥
- Tres auditores en paralelo:
quality-auditor→ estructura y métricas →audit-reports/NN-quality.json.factual-auditor→ autores, normativa, datos →NN-factual.json.bibliography-auditor→ APA + cruzado de citas →NN-biblio.json.
- Revision loop si algún auditor da FAIL:
revision-editorlee los reports y reescribe quirúrgicamente.- Re-auditoría triple.
- Hasta 3 ciclos. Tras el 3.º fallo,
BLOCKEDy siguiente capítulo.
Agente: integration-compositor
Pre-check: cada entrada del índice tiene su capitulos/NN-*.md y los 3 audit-reports en PASS.
Output: libro-final.md con frontmatter, TOC, capítulos en orden, bibliografía global, glosario, apéndice de [VERIFICAR] residuales.
Triggered by: /course-merge o /course-pipeline.
Único turno cedido al usuario. Mensaje estructurado con:
- Capítulos creados (N de M).
- Capítulos
BLOCKEDtras 3 ciclos (si los hay). - Word counts totales y por capítulo.
- Resumen de auditorías.
- Lista de
[VERIFICAR]residuales que necesitan validación humana.
- Un agente por tarea. Sin combinar roles.
- Sin meta-mensajes intermedios. El orquestador no anuncia "voy a empezar el capítulo 5".
- Auditores son la verdad operativa. Si el auditor dice FAIL, se revisa. Punto.
- Hooks bloquean al modelo, no al usuario. Bloqueo = Claude reescribe sin pedir permiso.
- Techo de 3 ciclos: evita bucles infinitos. Algunos errores requieren validación humana.