Construyendo Flujos Agenticos con Claude Code

Parte 3 — Orquestacion

Capitulos 9-11 · Patrones de coordinacion, equipos de agentes y un walkthrough completo.

Capitulo 9

Patrones de Orquestación

9.1 El rol del orquestador

En Claude Code, la orquestación no es un componente especial — es una responsabilidad. El orquestador es la parte de tu sistema que toma las decisiones de enrutamiento: la conversación principal dirigida por CLAUDE.md, un Skill que coordina un workflow de múltiples pasos, o un agente orquestador dedicado para sistemas complejos.

Tres cosas definen la orquestación:

  • Recibe el objetivo — no tareas individuales, sino el objetivo de alto nivel
  • Decide qué contexto fluye hacia dónde — qué subagente recibe qué información, en qué orden
  • Ensambla el resultado — los subagentes reportan al padre; no pueden coordinarse entre sí directamente
🔑
La restricción arquitectónica clave: Los subagentes solo pueden comunicarse con su padre, no entre sí. Si el output del Agente A necesita llegar al Agente B, el orquestador debe pasarlo. Esto no es una limitación — es lo que mantiene los sistemas predecibles y depurables.

Qué orquesta en Claude Code

Tipo de orquestadorCómo funcionaMejor para
Reglas en CLAUDE.mdReglas de delegación en CLAUDE.md indican a Claude cuándo invocar qué agente. No se necesita archivo adicional.Flujos simples, 2-3 agentes, pasos secuenciales
Workflow (wor-)Una entidad dedicada en .claude/commands/wor-*.md que coordina todo el pipeline — invoca agentes, gestiona handoffs, ensambla resultadosPipelines nombrados y repetibles de múltiples pasos con pasos definidos
Skill orquestadorUn Skill con context: fork coordina un workflow, invocando agentes y pasando contextoOrquestación reutilizable que los agentes también pueden disparar

9.2 Cinco patrones de orquestación

Patrón 1 — Lineal

Cada agente completa su trabajo y pasa el output completo al siguiente. El patrón más simple. Úsalo cuando las etapas son secuenciales y cada una depende completamente de la anterior.

text
Input
  │
  ▼
Agent A (Researcher)
  │ writes output to /work/research.md
  ▼
Agent B (Writer) ← reads /work/research.md
  │ writes output to /work/draft.md
  ▼
Agent C (Editor) ← reads /work/draft.md
  │
  ▼
Final Output

Orquestación con CLAUDE.md para flujos lineales:

markdown
## Orchestration Rules
When asked to produce an article on any topic:
1. Invoke @researcher — pass the topic, ask it to write to /work/research.md
2. After researcher completes, invoke @writer — tell it to read /work/research.md
3. After writer completes, invoke @editor — tell it to read /work/draft.md
4. Return the editor's final output to the user

Patrón 2 — Con checkpoints (Human-in-the-Loop)

Una puerta de revisión humana se sitúa entre etapas. El orquestador pausa y presenta el resultado intermedio antes de continuar. Úsalo para decisiones de alto impacto o contenido que necesita juicio humano antes de avanzar.

text
Input
  │
  ▼
Agent A (Researcher)
  │
  ▼
┌─────────────────────────────────────┐
│  👤 CHECKPOINT                      │
│  "Here's the research. Proceed with │
│   this framing? [Y / adjust / skip]" │
└─────────────────────────────────────┘
  │ (only if approved)
  ▼
Agent B (Writer)
  │
  ▼
Output

Codifica checkpoints en CLAUDE.md haciendo la puerta explícita:

markdown
## Orchestration Rules
For article production:
1. Run @researcher and present the research summary to the user
2. PAUSE — ask: "Does this research direction look right? Continue?"
3. Only proceed to @writer after explicit user confirmation
4. Present the draft before running @editor — same approval gate

Patrón 3 — Con decisiones (Routing)

Un agente clasificador lee el input y lo enruta al especialista apropiado. Úsalo cuando el mismo trigger puede llevar a workflows fundamentalmente diferentes según lo que contenga el input.

text
Input
  │
  ▼
Classifier Agent
  │
  ├─ "technical question" ──→ Technical Support Agent
  ├─ "billing issue"      ──→ Billing Agent
  ├─ "feature request"    ──→ Product Feedback Agent
  └─ "complaint"          ──→ Escalation Agent ──→ Human

Frontmatter del agente clasificador:

yaml
---
name: classifier
description: Classifies incoming support requests by type and routes them
  to the appropriate specialist. Use for any new support ticket or
  customer message that needs to be triaged.
model: haiku
tools: Read
permissionMode: default
---

Classify the incoming message into exactly one category:
- technical: software bugs, error messages, how-to questions
- billing: payment issues, subscription changes, refunds
- feature: product feedback, feature suggestions
- complaint: expressions of dissatisfaction requiring escalation

Output only the category label. Nothing else.

Patrón 4 — Con integraciones

Un agente interactúa con un sistema externo (vía MCP o herramientas Bash) y pasa los resultados al siguiente agente del flujo. Úsalo cuando tu workflow depende de datos en tiempo real fuera de tu proyecto.

text
Input: "Analyze our GitHub PRs from last week"
  │
  ▼
GitHub Fetch Agent (uses MCP github tools)
  │ writes PR data to /work/prs-raw.json
  ▼
Analysis Agent (reads /work/prs-raw.json)
  │ writes summary to /work/analysis.md
  ▼
Report Agent (reads /work/analysis.md)
  │
  ▼
Weekly engineering report

Patrón 5 — Paralelo con consolidación

Múltiples agentes trabajan sobre el mismo input simultáneamente. Un agente consolidador ensambla sus outputs en un resultado unificado. Úsalo cuando especialistas independientes pueden trabajar en paralelo y los outputs necesitan ser sintetizados.

text
Input: article draft to review
  │
  ├──→ Fact Checker    ──→ /work/fact-review.md    ─┐
  ├──→ Style Reviewer  ──→ /work/style-review.md   ─┤→ Editor (consolidator)
  └──→ SEO Analyst     ──→ /work/seo-review.md     ─┘        │
                                                              ▼
                                                    Final structured feedback
💡
Claude Code no ejecuta agentes verdaderamente en paralelo dentro de una misma sesión — los ejecuta secuencialmente pero sin bloquear contexto entre ellos. El paralelismo real requiere Agent Teams (Capítulo 10). Para la mayoría de workflows, secuencial-pero-rápido es suficiente y más fácil de depurar.

9.3 Transferencia de contexto entre agentes

Cada subagente comienza con una ventana de contexto vacía. No hereda automáticamente el historial de conversación ni sabe qué produjeron agentes anteriores. Pasar el contexto correcto a cada agente es el trabajo más importante del orquestador.

Cuatro mecanismos de transferencia de contexto

MecanismoCómo funcionaMejor paraCompromiso
Prompt de invocaciónEl orquestador incluye contexto relevante en el texto que usa para invocar al subagenteContexto breve, datos clave, instrucciones específicasTamaño de contexto limitado por longitud del prompt
Handoff basado en archivosEl Agente A escribe su output en un archivo; el orquestador indica al Agente B que lea ese archivoOutputs largos, datos estructurados, contenido ricoRequiere acceso de escritura; añade I/O de archivos
Resumen del orquestadorEl orquestador destila el output del Agente A y pasa solo las partes relevantes al Agente BCuando el Agente B necesita un subconjunto del trabajo del Agente ARequiere juicio del orquestador; puede perder detalle
Context LedgerUn archivo de sesión estructurado (context-ledger/) donde cada paso escribe su estado. Los pasos siguientes lo leen para trazabilidad completa.Workflows multi-sesión, pipelines complejos que necesitan auditoríaMás infraestructura; mejor para sistemas de producción
🔑
El principio de handoff: El único canal del padre al subagente es la cadena del prompt de invocación — más cualquier archivo que exista en disco. Diseña tu transferencia de contexto alrededor de esta restricción desde el inicio.

Context Ledger para sistemas de producción

Para workflows complejos que abarcan múltiples sesiones o necesitan trazabilidad completa, usa un Context Ledger — un archivo estructurado en la raíz del proyecto donde cada paso escribe sus outputs, decisiones y estado.

bash
context-ledger/
└── 2026-04-10-14-30-content-pipeline.md   ← un archivo por sesión

Cada agente añade sus resultados al ledger. Si la sesión se interrumpe, el workflow puede reanudarse leyendo el archivo del ledger y retomando desde el último paso completado. Así es como los sistemas agénticos de producción mantienen continuidad entre sesiones — el ledger es la memoria del workflow.

Combínalo con un snapshot de memoria ligero (memory/) para arranque rápido: un resumen de ~1-2 KB que indica al workflow dónde se quedó sin leer el ledger completo.

Handoff basado en archivos en la práctica

Este es el mecanismo más confiable para flujos secuenciales. Establece una convención de directorio /work/ y haz que cada agente escriba su output allí:

markdown
## Orchestration Rules

### File Handoff Convention
- Researcher writes to: /work/research-{topic}.md
- Writer reads from:    /work/research-{topic}.md
- Writer writes to:    /work/draft-{topic}.md
- Editor reads from:   /work/draft-{topic}.md
- Editor writes to:    /work/final-{topic}.md

### Invoking with Context
When spawning the writer, tell it explicitly:
"Read /work/research-{topic}.md for context. The topic is {topic}.
 Write your draft to /work/draft-{topic}.md."

9.4 El pipeline Explorar → Planificar → Ejecutar

Este es el patrón de orquestación más confiable para tareas complejas. Obliga al sistema a comprender antes de actuar, y te da una puerta de revisión antes de que ocurra algo consecuente.

FaseTipo de agenteHerramientasOutput
ExplorarExplorador de solo lecturaRead, Grep, GlobMapa de archivos relevantes, estado actual, alcance
PlanificarPlanificador (sin escrituras)ReadPlan paso a paso presentado al usuario para aprobación
EjecutarImplementadorRead, Write, Edit, BashCambios reales, solo después de que el plan sea aprobado

La puerta de revisión humana entre Planificar y Ejecutar es el mecanismo de seguridad clave. El sistema comprende el alcance completo antes de tocar nada, y el usuario aprueba el plan antes de que cualquier archivo sea modificado.

Codificación en CLAUDE.md

markdown
## Agent Delegation Rules

For ANY task that touches more than 3 files or involves refactoring:
1. First invoke @explorer to map the relevant files and summarize current state
2. Use the explorer's output to invoke @planner with specific scope
3. Present the plan to the user: "Here's what I'll do: [plan]. Proceed?"
4. Only after explicit approval, invoke @implementer with the approved plan

For simple, single-file tasks: proceed directly without the pipeline.

Los tres agentes

yaml
<!-- .claude/agents/explorer.md -->
---
name: explorer
description: Maps files, reads code, and produces a concise summary of
  current state and scope. Use as the first phase of any complex task
  before planning or implementing.
model: sonnet
tools: Read, Grep, Glob, Bash
permissionMode: default
---

You are an exploration specialist. Your only job is to understand, never to change.

When invoked with a task description:
1. Identify which files are relevant to this task
2. Read and summarize the current state of those files
3. Identify dependencies, risks, and scope
4. Output a concise map: file list + key observations + recommended approach

Never write files. Never suggest implementation. Only observe and report.
yaml
<!-- .claude/agents/planner.md -->
---
name: planner
description: Designs a step-by-step implementation plan from an exploration
  report. Use after @explorer completes. Produces a human-reviewable plan
  before any code is written.
model: opus
tools: Read
permissionMode: plan
---

You are a planning specialist. Your job is design, never implementation.

Given an exploration report and task description:
1. Design a complete, numbered implementation plan
2. For each step: state what changes, which file, what the change does
3. Flag any risks or irreversible operations
4. Output the plan clearly — it will be shown to a human for approval

Be specific enough that someone else could execute your plan exactly.
Never write code. Never implement. Only plan.
Capitulo 10

Agent Teams

⚠️
Funcionalidad experimental. Los Agent Teams están disponibles en Claude Code pero se encuentran en desarrollo activo. Las APIs y comportamientos pueden cambiar. Los conceptos aquí son estables; verifica la configuración específica en code.claude.com/docs antes de construir sistemas de producción.

10.1 Subagentes vs. Agent Teams

Los subagentes (Capítulos 6-9) y los Agent Teams resuelven problemas de coordinación diferentes. La elección entre ellos es directa:

SubagentesAgent Teams
Qué sonWorkers que se ejecutan dentro de tu sesión y reportan de vueltaSesiones completas y separadas de Claude Code ejecutándose simultáneamente
ComunicaciónUnidireccional: el padre invoca, el subagente reportaBidireccional: los teammates pueden enviarse mensajes entre sí y al líder
ContextoComparte el contexto de la sesión padre (al invocar)Cada teammate tiene una ventana de contexto completamente independiente
ParalelismoSecuencial dentro de una sesiónParalelismo real — múltiples sesiones ejecutándose simultáneamente
Modelo requeridoCualquier modeloOpus 4.6 (líder)
CostoUna ventana de contextoMúltiples ventanas de contexto completas en paralelo

Regla de decisión: Si los agentes solo necesitan reportar de vuelta, usa subagentes. Si los agentes necesitan coordinarse entre sí durante la ejecución, usa teams.


10.2 Cómo funcionan los Agent Teams

Un Agent Team consiste en una sesión de team lead y múltiples sesiones de teammates. El lead coordina; los teammates se especializan.

text
┌─────────────────────────────────────────────────────────────────┐
│                        Agent Team                               │
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │  TEAM LEAD (tu sesión)                                  │   │
│   │  Opus 4.6 · Recibe objetivo · Delega · Ensambla         │   │
│   └───────┬──────────────┬──────────────┬───────────────────┘   │
│           │              │              │                        │
│    Lista de tareas compartida: pendiente → asignada → en progreso → completada │
│           │              │              │                        │
│   ┌───────▼────┐  ┌──────▼──────┐  ┌───▼────────────┐         │
│   │ Teammate A │  │ Teammate B  │  │   Teammate C   │         │
│   │ (Frontend) │  │ (Backend)   │  │  (Tests)       │         │
│   │ Contexto   │  │ Contexto    │  │  Contexto      │         │
│   │ propio     │  │ propio      │  │  propio        │         │
│   └────────────┘  └─────────────┘  └────────────────┘         │
│                                                                 │
│   Comunicación: mensajes directos · broadcasts · alertas de inactividad │
└─────────────────────────────────────────────────────────────────┘

Cada teammate carga CLAUDE.md de forma independiente — su ventana de contexto empieza desde cero. No heredan nada del lead excepto lo que se pasa explícitamente a través de tareas y mensajes.

Ciclo de vida de una tarea:

text
El lead crea la tarea (pendiente)
  │
  ▼
El teammate toma la tarea (asignada → en progreso)
  │
  ▼
El teammate completa el trabajo (completada)
  │
  ▼
El lead recibe notificación de completado
  │
  ▼
El lead asigna la siguiente tarea o ensambla resultados

10.3 Configuración de Agent Teams

Habilitar en settings.json

json
{
  "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": true
}

Iniciar una sesión de equipo

Abre la pestaña Claude Desktop Code en tu proyecto. El modo Agent Teams se activa automáticamente cuando la configuración está habilitada. Para crear teammates, indica al lead qué roles necesitas en lenguaje natural:

text
I need to refactor our authentication module. Spawn a backend specialist
for the server-side code and a test specialist to update the test suite.
Work on these in parallel.

El lead creará sesiones de teammates usando tus definiciones de subagentes como plantillas si existen, o levantará sesiones de propósito general si no. Usar archivos de subagentes existentes te da más control sobre el comportamiento y acceso a herramientas de cada teammate.

Usar definiciones de subagentes existentes como plantillas

Si tienes .claude/agents/backend-engineer.md y .claude/agents/test-writer.md, menciónalos explícitamente:

text
Spawn a teammate using the backend-engineer agent definition for the
server changes, and a teammate using the test-writer definition for tests.

Monitoreo con tmux (CLI)

En el CLI, ejecuta cada sesión de teammate en un panel tmux separado para poder observarlos todos simultáneamente:

bash
tmux new-session -d -s lead 'claude'
tmux split-window -h 'claude --teammate'
tmux split-window -v 'claude --teammate'
tmux attach -t lead

10.4 Mejores prácticas

PrácticaPor qué importa
Planifica primero, luego crea el equipoUsa Plan Mode para diseñar el enfoque completo antes de crear teammates. Un plan claro evita que los teammates trabajen con propósitos cruzados.
Usa el modo delegadoIndica explícitamente al lead: "No implementes — solo coordina." Los leads tienden a acaparar trabajo de implementación, lo que anula el propósito del equipo.
Define límites de módulo en CLAUDE.mdCada teammate carga CLAUDE.md desde cero. La propiedad clara de módulos (@backend owns /src/api/, @frontend owns /src/ui/) previene conflictos de archivos.
Empieza con 2-3 teammatesMás teammates = más ventanas de contexto = más costo y complejidad. Empieza pequeño. Agrega teammates solo cuando tengas una tarea concreta para cada uno.
Un módulo por teammateLos teammates que tocan archivos superpuestos crearán conflictos de merge. Asigna por propiedad de archivos, no por función.

10.5 Cuándo NO usar Agent Teams

SituaciónPor qué los teams no son adecuados aquíUsar en su lugar
Tareas simples de un solo pasoLa sobrecarga de crear múltiples sesiones supera con creces cualquier beneficioEjecución directa en la sesión principal
Los agentes necesitan editar los mismos archivosLas escrituras concurrentes crearán conflictos de mergeSubagentes secuenciales con handoffs de archivos
Workflow secuencial (A debe terminar antes de que B empiece)Sin beneficio de paralelismo — estás pagando por ventanas de contexto paralelas que no necesitasPatrón lineal de subagentes (Capítulo 9)
Trabajo sensible al presupuestoCada teammate es una ventana de contexto Opus completa — los costos se acumulan rápidoSubagentes (más económicos, una ventana de contexto)
Tareas experimentales / exploratoriasDifícil de depurar cuando múltiples sesiones se ejecutan simultáneamenteSesión única con Plan Mode
Capitulo 11

Caso Practico

11.1 El Escenario

Vamos a construir un pipeline de produccion de contenido desde cero: un sistema que recibe un tema, lo investiga, redacta un borrador, lo revisa y produce un articulo pulido listo para publicar.

Es un buen primer sistema porque tiene limites claros entre fases, responsabilidades obvias para cada agente y una salida concreta y evaluable. Los mismos principios de diseno aplican a workflows de investigacion, pipelines operativos y cualquier proceso multi-paso con fases diferenciadas.

Lo que vamos a construir:

text
content-pipeline/
├── CLAUDE.md                           ← reglas de orquestacion + limites entre modulos
└── .claude/
    ├── commands/
    │   └── wor-content-pipeline.md     ← orquestacion del workflow (opcional)
    ├── agents/
    │   ├── age-spe-researcher.md       ← Fase 1: investigacion y recopilacion de fuentes
    │   ├── age-spe-writer.md           ← Fase 2: creacion del borrador
    │   └── age-sup-reviewer.md         ← Fase 3: revision de calidad (supervisor)
    ├── skills/
    │   └── ski-format-article/
    │       └── SKILL.md                ← Fase 4: formato final y exportacion
    ├── rules/
    │   └── rul-citation-standards.md   ← reglas detalladas de citacion
    └── settings.json                   ← hook: notificacion al completar

11.2 Paso 1 — Descomponer en Responsabilidades

Antes de escribir un solo archivo, mapea el workflow a tipos de componentes usando el arbol de decision del Capitulo 4.

Tarea a realizarTipo de componentePor que
Buscar en la web, recopilar fuentes, sintetizar investigacionSpecialist (age-spe-)Dominio especializado unico, salida acotada, herramientas de solo lectura
Escribir borrador a partir del brief de investigacionSpecialist (age-spe-)Dominio especializado unico, necesita acceso de escritura, responsabilidad diferenciada
Revisar el borrador en calidad y precisionSupervisor (age-sup-)Valida la salida de los specialists — puerta de calidad, no un ejecutor
Formatear y exportar el articulo finalSkill (ski-)Procedimiento reutilizable, se invoca por nombre, basado en plantilla
Conteo de palabras, tono, reglas de citacionReglas en CLAUDE.mdAplican a cada sesion, restringen a todos los agentes por igual
Notificar cuando el pipeline termineHookDirigido por eventos, se dispara en un evento del sistema (Stop), no por comando

11.3 Paso 2 — Disenar la Arquitectura

El flujo es lineal con handoffs basados en archivos. Cada agente escribe en un directorio dedicado; el siguiente agente lee de ahi.

text
El usuario proporciona el tema
        │
        ▼
  @age-spe-researcher ──escribe──→ /work/research-{topic}.md
        │
        ▼ (el orquestador pasa la ruta del archivo)
  @age-spe-writer ──lee──→ /work/research-{topic}.md
         ──escribe──→ /work/draft-{topic}.md
        │
        ▼
  @age-sup-reviewer ──lee──→ /work/draft-{topic}.md
            ──escribe──→ /work/review-{topic}.md
        │
        ▼ (si se aprueba)
  /ski-format-article skill ──lee──→ /work/draft-{topic}.md + /work/review-{topic}.md
                        ──escribe──→ /output/{topic}.md
        │
        ▼
  Se dispara el hook de finalizacion → notificacion de escritorio

Decisiones de seleccion de modelo:

  • Researcher: Opus — necesita razonamiento profundo para evaluar fuentes y sintetizar con precision
  • Writer: Sonnet — suficientemente rapido para redactar, bueno siguiendo instrucciones de estilo
  • Reviewer: Sonnet — la revision requiere lectura y evaluacion, no razonamiento profundo

11.4 Paso 3 — Implementar los Archivos

CLAUDE.md

markdown
---
# Content Production Pipeline

## Purpose
Automated system for producing high-quality articles on any topic.
Research → Draft → Review → Publish.

## Module Boundaries
| Agent | Owns | Never touches |
|---|---|---|
| @age-spe-researcher | /work/research-*.md | /work/draft-*, /output/ |
| @age-spe-writer | /work/draft-*.md | /work/research-*, /output/ |
| @age-sup-reviewer | /work/review-*.md | /work/draft-*, /output/ |
| ski-format-article | /output/ | /work/ |

## Orchestration Rules
When asked to produce an article on any topic:
1. Invoke @age-spe-researcher — provide the topic. Ask it to write to /work/research-{topic}.md
2. After completion, invoke @age-spe-writer — tell it to read /work/research-{topic}.md
   and write the draft to /work/draft-{topic}.md
3. After completion, invoke @age-sup-reviewer — tell it to read /work/draft-{topic}.md
   and write its report to /work/review-{topic}.md
4. If reviewer approves: invoke /ski-format-article {topic}
5. If reviewer requests changes: inform the user and ask whether to revise or proceed

## Content Rules
- Articles: 800–1,200 words unless user specifies otherwise
- Tone: professional but conversational — no academic jargon
- Every factual claim must have a cited source (URL)
- Instead of using vague phrases like "many experts say", name the source
- Structure: Introduction → 3-4 main sections → Conclusion
---

.claude/agents/age-spe-researcher.md

yaml
---
name: age-spe-researcher
description: Researches a topic using web search, evaluates sources for
  credibility, and produces a structured research brief. Use as the first
  step in article production or for any information gathering task. Invoke
  with the topic as input.
model: opus
tools: WebSearch, Read
permissionMode: default
memory: project
---

You are a research specialist. Your output fuels the writing stage —
quality here determines quality throughout the pipeline.

## Research Process
1. Search for 5-8 high-quality sources on the topic
2. Prioritize: peer-reviewed content, official sources, established publications
3. Avoid: opinion pieces without data, anonymous sources, content older than 3 years
4. For each source: verify credibility, extract key facts and quotes
5. Synthesize across sources — identify consensus and disagreements

## Output Format
Write your output to the file path provided. Structure:

# Research Brief: [Topic]

## Key Findings
[3-5 bullet points summarizing the most important facts]

## Main Arguments / Perspectives
[2-3 paragraphs covering the main angles on this topic]

## Statistics and Data
| Stat | Value | Source |
|---|---|---|

## Sources
| Title | URL | Credibility | Key Contribution |
|---|---|---|---|

## Recommended Article Angle
[One paragraph suggesting the most compelling angle for the article,
based on what's most interesting/underreported in the research]

## Rules
- Every fact must trace to a specific source — no generalities
- Flag any conflicting information across sources
- If a topic has insufficient quality sources, report this rather than
  using low-quality ones

.claude/agents/age-spe-writer.md

yaml
---
name: age-spe-writer
description: Writes article drafts from research briefs. Invoked after
  the researcher agent completes. Applies the content pipeline style guide
  automatically. Input: path to research brief. Output: draft article.
model: sonnet
tools: Read, Write
permissionMode: acceptEdits
---

You are a professional writer specializing in clear, engaging non-fiction.
You transform research briefs into polished article drafts.

## Writing Process
1. Read the research brief thoroughly before writing anything
2. Identify the most compelling angle from the researcher's recommendation
3. Write a complete draft following the structure below
4. Review your own draft once before saving — fix any rough patches

## Article Structure
**Introduction (150-200 words)**
Open with a specific fact, statistic, or scenario that captures the
reader immediately. State what the article covers. No "In this article..."

**Body sections (3-4 sections, 150-250 words each)**
Each section has a clear, descriptive heading.
Each section makes one main point, supported by evidence.
Transitions between sections should flow naturally.

**Conclusion (100-150 words)**
Synthesize the key insight. End with something actionable or thought-provoking.
Never summarize what was already said — add perspective.

## Style Rules
- Active voice throughout
- Sentences: max 25 words
- Paragraphs: max 4 sentences
- Every factual claim: cite the source inline (Author/Publication, Year)
- Instead of "experts say", name the expert and organization
- Never use: "In conclusion", "It is important to note", "Leverage"

## Output
Save to the file path provided in your instructions.

.claude/agents/age-sup-reviewer.md

yaml
---
name: age-sup-reviewer
description: Reviews article drafts for factual accuracy, style compliance,
  structural quality, and readability. Invoked after writer completes.
  Produces a structured review report with a clear verdict.
model: sonnet
tools: Read, Write
permissionMode: default
---

You are an editorial reviewer. Your job is to catch problems, not rewrite.
The writer will act on your feedback — be specific enough to make that easy.

## Review Checklist

### Factual Accuracy
- [ ] All facts traceable to sources from the research brief
- [ ] No claims made without support
- [ ] Statistics cited with source and year
- [ ] No outdated information

### Structure and Flow
- [ ] Introduction opens with a hook (not a generic statement)
- [ ] Each section makes one clear point
- [ ] Transitions between sections are smooth
- [ ] Conclusion adds perspective (doesn't just summarize)

### Style Compliance
- [ ] Word count: 800-1,200 words
- [ ] Active voice throughout (flag passive instances)
- [ ] Sentences under 25 words (flag violations)
- [ ] Paragraphs under 4 sentences
- [ ] No banned phrases ("In conclusion", "It is important to", "Leverage")

### Readability
- [ ] Technical terms explained on first use
- [ ] Concrete examples for abstract concepts
- [ ] Appropriate for a professional but non-specialist audience

## Output Format
Write your review report to the file path provided:

# Review Report: [Article Title]

## Verdict
**APPROVED** / **REVISE** / **REJECT**
[One sentence justification]

## Issues Found
| Severity | Location | Issue | Suggested Fix |
|---|---|---|---|
| Critical | Para 2 | Claim has no source | Add citation from research brief |
| Minor | Section 3 | Passive voice | Rewrite in active voice |

## Strengths
[2-3 things the article does well — genuine observations, not filler]

## If REVISE: Priority fixes
[Numbered list of exactly what to change, in order of importance]

.claude/skills/ski-format-article/SKILL.md

yaml
---
name: ski-format-article
description: Final formatting and export of a reviewed article. Reads the
  approved draft and review report, applies final polish, and saves to
  /output/. Invoke with /ski-format-article {topic} after reviewer approves.
user-invocable: true
allowed-tools: Read, Write
---

# Format Article Skill

Final step in the content pipeline. Takes approved draft + review notes
and produces the publication-ready version.

## Steps
1. Read the draft: /work/draft-$ARGUMENTS.md
2. Read the review report: /work/review-$ARGUMENTS.md
3. Apply any "Minor" fixes flagged in the review (Critical issues should
   have been addressed before this step)
4. Apply final formatting:
   - Ensure consistent heading hierarchy (H1 → H2 → H3)
   - Add frontmatter with metadata
   - Verify all URLs are complete (https://)
   - Ensure consistent citation format throughout
5. Save to /output/$ARGUMENTS.md

## Output Frontmatter
Every article gets this frontmatter:

---
title: [Article title]
date: [Today's date, ISO 8601]
status: ready-to-publish
word-count: [actual count]
sources: [number of sources cited]
reviewed: true
---

.claude/settings.json

json
{
  "hooks": {
    "Stop": [
      {
        "matcher": ".*",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Content pipeline complete\" with title \"Claude Code\" sound name \"Glass\"'",
            "timeout": 5
          }
        ]
      }
    ]
  }
}

11.5 Paso 4 — Ejecutar e Invocar

Abre Claude Desktop, pestana Code. Selecciona la carpeta content-pipeline/. Empieza a escribir:

text
Write an article about the impact of remote work on urban real estate markets.

Claude lee CLAUDE.md, detecta las reglas de orquestacion y comienza el pipeline. Veras como delega a @age-spe-researcher, luego a @age-spe-writer y despues a @age-sup-reviewer. Cada agente se ejecuta en su propio contexto, escribe en su archivo designado y reporta de vuelta.

Para invocar un agente especifico de forma explicita:

text
@age-spe-researcher research the topic of urban heat islands for our next article

Para activar el formateo despues de una sesion de revision separada:

text
/ski-format-article remote-work-urban-real-estate

Para verificar lo que se ha producido:

bash
!ls /work/ && ls /output/

11.6 Paso 5 — Probar e Iterar

Problemas comunes y soluciones

ProblemaCausa probableSolucion
El agente ignora una reglaLa regla esta enterrada en prosa; el agente no la detectaMover a una seccion ## Rules claramente etiquetada con viñetas
El writer no usa la investigacionLa ruta del archivo no se paso explicitamente en el prompt del orquestadorSer explicito: "Read /work/research-{topic}.md before writing"
Se invoca automaticamente al agente equivocadoLa descripcion es demasiado vaga o se solapa con otro agenteAjustar la descripcion — hacer las condiciones de activacion mas especificas
La salida se guarda en la ubicacion incorrectaEl agente escribe donde quiere, no donde se le indicoAgregar la ruta del archivo en el prompt de invocacion explicitamente, no solo en las instrucciones del agente
El reviewer aprueba borradores malosLa checklist es demasiado vaga — "buena escritura" es subjetivoReemplazar criterios subjetivos con medibles (conteo de palabras, presencia de citas)

Flujo de depuracion

  1. Verifica lo que recibio cada agente. Agrega una regla a CLAUDE.md: "At the start of each agent task, print: 'Agent [name] starting with context: [first 100 chars of spawn prompt]'"
  2. Usa Plan Mode primero. Ejecuta /plan antes de activar el pipeline — Claude te mostrara exactamente como planea delegar antes de hacer nada.
  3. Inspecciona los archivos intermedios. Despues de cada fase, revisa /work/ para verificar que la salida cumple las expectativas antes de que el siguiente agente se ejecute.
  4. Ajusta las descripciones iterativamente. Si la invocacion automatica va al agente equivocado, refina la descripcion para ser mas especifica sobre las condiciones de activacion.
💡
El problema mas comun en los primeros sistemas son las descripciones vagas. Si Claude duda entre dos agentes o elige el incorrecto, la solucion casi siempre esta en la descripcion — no en las instrucciones del agente.