Exportación

La fase de exportación transforma los archivos spec en un formato optimizado para un agente IA específico.

intake export <SPEC_DIR> -f <formato> -o <output>

Formatos disponibles

FormatoEstadoQué genera
architectImplementadopipeline.yaml + copia de spec
genericImplementadoSPEC.md + verify.sh + copia de spec
claude-codePlaneadoCLAUDE.md + tareas + verify.sh
cursorPlaneadoFormato Cursor
kiroPlaneadoFormato Kiro

Architect

Genera un pipeline.yaml compatible con architect y una copia de los archivos spec.

intake export specs/mi-feature/ -f architect -o output/

Estructura generada

output/
├── pipeline.yaml       # Workflow con un step por tarea
└── spec/               # Copia de todos los archivos spec
    ├── requirements.md
    ├── design.md
    ├── tasks.md
    ├── acceptance.yaml
    ├── context.md
    └── sources.md

pipeline.yaml

name: mi-feature
description: "Pipeline generated by intake from spec 'mi-feature'"
steps:
  - name: task-1
    agent: build
    prompt: |
      Implement task 1: Setup project structure

      Create the initial project structure with the following files...

      Project context:
      [primeros 2000 chars de context.md]
    checkpoint: true

  - name: task-2
    agent: build
    prompt: |
      Implement task 2: Implement user model
      ...
    checkpoint: true

  # ... un step por cada tarea en tasks.md ...

  - name: final-verification
    agent: review
    prompt: "Verify that the entire implementation meets the spec requirements."
    checks:
      - "python -m pytest tests/ -q"
      - "ruff check src/"
      # ... todos los command checks requeridos de acceptance.yaml ...

Cada step incluye:

CampoDescripción
nametask-{id} basado en el ID de la tarea
agentbuild para tareas, review para verificación final
promptTítulo + descripción + contexto del proyecto
checkpointtrue — pausa después de cada tarea para revisión
checksSolo en el step final: lista de comandos de verificación

Opciones

El ArchitectExporter acepta include_guardrails (configurable via export.architect_include_guardrails).


Generic

Genera un SPEC.md consolidado, un verify.sh ejecutable, y una copia de los archivos spec. Compatible con cualquier agente o flujo de trabajo manual.

intake export specs/mi-feature/ -f generic -o output/

Estructura generada

output/
├── SPEC.md            # Markdown consolidado con todas las secciones
├── verify.sh          # Script bash ejecutable
└── spec/              # Copia de todos los archivos spec
    ├── requirements.md
    ├── design.md
    ├── tasks.md
    ├── acceptance.yaml
    ├── context.md
    └── sources.md

SPEC.md

Un único archivo Markdown que consolida:

  1. Project Context — contenido de context.md
  2. Requirements — contenido de requirements.md
  3. Design — contenido de design.md
  4. Tasks — contenido de tasks.md
  5. Sources — contenido de sources.md

Útil para pegarlo directamente en el contexto de un agente.

verify.sh

Script bash auto-contenido que ejecuta los command checks de acceptance.yaml:

#!/usr/bin/env bash
set -euo pipefail

PROJECT_DIR="${1:-.}"
PASS=0
FAIL=0

check() {
    local name="$1"
    local cmd="$2"
    if (cd "$PROJECT_DIR" && eval "$cmd") > /dev/null 2>&1; then
        echo "PASS: $name"
        PASS=$((PASS + 1))
    else
        echo "FAIL: $name"
        FAIL=$((FAIL + 1))
    fi
}

check "Tests pasan" "python -m pytest tests/ -q"
check "Lint limpio" "ruff check src/"

echo ""
echo "Passed: $PASS  Failed: $FAIL"

if [ "$FAIL" -gt 0 ]; then
    exit 1
fi

El script:

  • Acepta un argumento opcional PROJECT_DIR (default: .)
  • Ejecuta cada check con la función check()
  • Reporta PASS/FAIL por cada check
  • Muestra totales al final
  • Exit code 1 si algún check falló, 0 si todos pasaron
  • Se genera con chmod +x automático

Uso sin intake

El exporter generic permite verificar sin tener intake instalado:

# En CI o en la máquina del desarrollador
./output/verify.sh /path/to/project

Exporter Protocol

Los exporters siguen el Exporter Protocol:

@runtime_checkable
class Exporter(Protocol):
    def export(self, spec_dir: str, output_dir: str) -> list[str]: ...

El método export() recibe el directorio de la spec y el directorio de salida, y retorna la lista de archivos generados.

Para agregar un nuevo exporter:

  1. Crear un archivo en src/intake/export/ (ej: cursor.py)
  2. Implementar el método export(spec_dir, output_dir) -> list[str]
  3. Registrarlo en create_default_registry() en registry.py

Configuración relacionada

export:
  default_format: generic                    # Formato por defecto
  architect_include_guardrails: true         # Guardrails en pipeline.yaml
  architect_pipeline_template: standard      # Template del pipeline
  claude_code_generate_claude_md: true       # Generar CLAUDE.md (futuro)

El formato por defecto se puede sobreescribir con --format en la CLI:

# Usa el default de config
intake init "Mi feature" -s reqs.md

# Sobreescribe con architect
intake init "Mi feature" -s reqs.md -f architect