Docs / Architect Labs / Lab 08

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).

text
Step 1: Plan → Step 2: Build → Step 3: Test → Step 4: Review

Setup

bash
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)

python
# API endpoints — to be generated by pipeline

.architect.yaml

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
bash
git add -A && git commit -m "initial"

Ejercicio 1: Pipeline de 3 pasos — Plan → Build → Test

pipelines/api-generator.yaml

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:

bash
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
bash
# 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

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.
bash
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

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.
bash
architect pipeline pipelines/conditional-pipeline.yaml \
  --config .architect.yaml --confirm-mode yolo

Resumen

ConceptoDescripción
architect pipeline FILEEjecuta un workflow YAML
steps[].nameNombre del paso
steps[].agentAgente que ejecuta (build, review, etc.)
steps[].taskPrompt para el agente
steps[].checkpointCrea git checkpoint después del paso
steps[].conditionCondición para ejecutar el paso
steps[].output_varVariable con el resultado del paso

Siguiente lab

Lab 09: Parallel Runs & Worktrees — Procesa N tareas en paralelo con aislamiento.

END OF DOCUMENT

¿Necesitas más? Volver a la Librería →