Lab 08 — Pipeline Mode: Workflows Multi-Step
Un pipeline es una secuencia de steps donde cada step ejecuta un agente con una tarea específica. Los steps se ejecutan en orden y si uno falla, el pipeline se detiene.
Concepto clave
Nivel: Intermedio
Duración estimada: 30 minutos. Features: pipeline, guardrails, reports, hooks.
Un pipeline es una secuencia de steps donde cada step ejecuta un agente con una tarea específica. Los steps se ejecutan en orden. Si un step falla, el pipeline se detiene (o ejecuta escalación).
Step 1: Plan → Step 2: Build → Step 3: Test → Step 4: Review Setup
mkdir -p ~/architect-labs/lab-08 && cd ~/architect-labs/lab-08
git init && mkdir -p src tests pipelines src/api.py (archivo vacío para que el pipeline lo llene)
# API endpoints — to be generated by pipeline .architect.yaml
llm:
model: openai/gpt-4.1
api_base: http://localhost:4000/v1
api_key_env: LITELLM_API_KEY
guardrails:
protected_files:
- ".env*"
- "pipelines/**"
max_files_modified: 15 git add -A && git commit -m "initial" Ejercicio 1: Pipeline de 3 pasos — Plan → Build → Test
pipelines/api-generator.yaml
name: api-generator
steps:
- name: plan
agent: build
task: >
Crea un archivo PLAN.md con el diseño de una API REST para
gestión de tareas (todo list). Incluye:
- Endpoints: GET /tasks, GET /tasks/:id, POST /tasks,
PUT /tasks/:id, DELETE /tasks/:id
- Modelo de datos: Task (id, title, description, completed, created_at)
- Validaciones necesarias
- Códigos HTTP de respuesta para cada endpoint
No escribas código — solo el plan.
- name: build
agent: build
task: >
Siguiendo el plan en PLAN.md, implementa la API en src/api.py
usando Flask. Crea también src/models.py con el modelo Task
como dataclass. Usa una lista en memoria como storage.
Implementa validaciones y manejo de errores con códigos HTTP
apropiados (400, 404, etc.).
- name: test
agent: build
task: >
Genera tests/test_api.py con tests exhaustivos para la API:
- Test cada endpoint con caso exitoso
- Test errores: item no encontrado, input inválido
- Test edge cases: lista vacía, IDs duplicados
Usa pytest con el test client de Flask.
Ejecuta pytest para verificar que todos pasan. Ejecuta el pipeline:
architect pipeline pipelines/api-generator.yaml \
--config .architect.yaml \
--confirm-mode yolo \
--report-file reports/api-pipeline.json Qué observar:
- El step plan crea PLAN.md
- El step build lee PLAN.md y genera código
- El step test genera tests y los ejecuta
- Cada step es independiente pero lee lo que el anterior produjo
# Verificar resultado
cat PLAN.md
ls src/
pytest tests/ -v
cat reports/api-pipeline.json | python -m json.tool Consejo
El patrón Plan → Build → Test es uno de los más comunes. El plan actúa como “contrato” entre los steps, asegurando coherencia.
Ejercicio 2: Pipeline con checkpoint y variables
pipelines/refactor-pipeline.yaml
name: code-refactor
steps:
- name: analyze
agent: build
task: >
Analiza src/api.py e identifica code smells:
- Funciones largas
- Código duplicado
- Falta de separation of concerns
Escribe el análisis en ANALYSIS.md con una lista priorizada.
checkpoint: true
- name: refactor
agent: build
task: >
Siguiendo ANALYSIS.md, refactoriza el código.
Separa en módulos: src/routes.py, src/models.py, src/validators.py.
Cada módulo tiene una responsabilidad clara.
checkpoint: true
- name: verify
agent: build
task: >
Ejecuta pytest tests/ -v. Si algún test falla, corrígelo
(puede que los imports hayan cambiado al refactorizar).
Al terminar, todos los tests deben pasar. architect pipeline pipelines/refactor-pipeline.yaml \
--config .architect.yaml \
--confirm-mode yolo Consejo
Los checkpoint: true crean commits de git después de cada paso. Si algo falla en un step posterior, puedes volver al checkpoint anterior con git log y git checkout.
Ejercicio 3: Pipeline con condiciones
pipelines/conditional-pipeline.yaml
name: quality-check
steps:
- name: lint
agent: build
task: >
Ejecuta ruff check src/ y guarda los findings en LINT_RESULTS.md.
Si no hay findings, escribe "No issues found" en LINT_RESULTS.md.
output_var: lint_result
- name: fix
agent: build
condition: "{{lint_result}}"
task: >
Lee LINT_RESULTS.md. Si hay findings, corrígelos.
Si dice "No issues found", no hagas nada.
- name: document
agent: build
task: >
Actualiza README.md con la documentación de la API:
endpoints, modelos, ejemplos de uso. architect pipeline pipelines/conditional-pipeline.yaml \
--config .architect.yaml --confirm-mode yolo Resumen
| Concepto | Descripción |
|---|---|
architect pipeline FILE | Ejecuta un workflow YAML |
steps[].name | Nombre del paso |
steps[].agent | Agente que ejecuta (build, review, etc.) |
steps[].task | Prompt para el agente |
steps[].checkpoint | Crea git checkpoint después del paso |
steps[].condition | Condición para ejecutar el paso |
steps[].output_var | Variable con el resultado del paso |
Siguiente lab
Lab 09: Parallel Runs & Worktrees — Procesa N tareas en paralelo con aislamiento.