12  Unidad 6: Kiro — Spec-Driven Development

Author

Diego Saavedra García

13 🎯 Unidad 6: Kiro — Spec-Driven Development

13.1 “No programs. Se especifica. Kiro implementa.”


13.2 🎯 Objetivo

Al terminar esta unidad podrás:

  • Instalar Kiro en tu sistema
  • Escribir especificaciones estructuradas
  • Usar Hooks para automatización
  • Implementar usando SDD (Spec-Driven Development)
  • Comparar con el workflow de OpenCode

13.3 🤖 ¿Qué es Kiro?

13.3.1 En una frase

Kiro es el IDE de Amazon que revoluciona el desarrollo con Spec-Driven Development. Diseñas especificaciones, Kiro implementa.

┌──────────────────────────────────────────────────────────────────────────────┐
│                                                                              │
│   KIRO — SPEC-DRIVEN IDE                                                    │
│   ═══════════════════════════                                                │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────┐       │
│   │                                                                  │       │
│   │   1. ESCRIBÍS SPEC                     2. KIRO IMPLEMENTA      │       │
│   │   ────────────────                      ────────────────        │       │
│   │                                                                  │       │
│   │   spec.yaml                              ┌─────────────────┐    │       │
│   │   ────────                               │    Código        │    │       │
│   │   name: auth                             │    Generated     │    │       │
│   │   requirements:                          │    100%          │    │       │
│   │     - id: FR-001                        │    Matched       │    │       │
│   │       title: Login                      └─────────────────┘    │       │
│   │       desc: User auth...                                    │       │
│   │                                                                  │       │
│   └─────────────────────────────────────────────────────────────────┘       │
│                                                                              │
│                           Hooks de Automatización                            │
│                           Steerling (UI con IA)                             │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

13.3.2 ¿Por qué Kiro?

Característica Kiro OpenCode Claude Code
Paradigma SDD nativo Agéntico Agéntico
Specs ✅ Integradas
Hooks ✅ Automatización
UI Design ✅ Steerling
AWS Integration ✅ Profunda
Precio $20-200/mes Gratis $20-200/mes

13.4 🔧 Instalación de Kiro

13.4.1 ⏱️ Timeline

Paso Descripción Tiempo
1 Descargar Kiro 5 min
2 Instalar 10 min
3 Configurar cuenta 5 min
4 Primer proyecto 10 min

13.4.2 Paso 1: Descargar Kiro

  1. Ve a kiro.aws
  2. Click en Download
  3. Seleccioná tu SO (Windows/Mac/Linux)
  4. Descargá el installer

13.4.3 Paso 2: Instalar

13.4.3.1 macOS

  1. Abrí el .dmg
  2. Arrastrá Kiro a Applications
  3. Abrí Kiro desde Applications

13.4.3.2 Linux

# Con snap
sudo snap install kiro --classic

# O con .deb
sudo dpkg -i kiro.deb

13.4.3.3 Windows

  1. Ejecutá el .exe
  2. Follow the wizard
  3. Abrí Kiro

13.4.4 Paso 3: Configurar Cuenta

  1. Abrí Kiro
  2. Creá cuenta o iniciá sesión
  3. Conectá tu API key de AWS (opcional)

13.5 📝 Specs: El Core de Kiro

13.5.1 ¿Qué es una Spec?

Una Spec es una especificación estructurada de lo que querés construir.

proyecto/
├── .kiro/
│   └── specs/
│       ├── auth/
│       │   ├── spec.yaml
│       │   └── requirements.md
│       └── api/
│           ├── spec.yaml
│           └── requirements.md

13.5.2 Estructura de spec.yaml

name: "Sistema de Autenticación"
description: "API REST para autenticación de usuarios"

requirements:
  - id: FR-001
    title: "Login de usuario"
    description: |
      El sistema debe permitir a los usuarios iniciar sesión
      con email y contraseña.
    acceptance_criteria:
      - "Retorna JWT válido"
      - "Maneja credenciales inválidas"
      - "Bloquea después de 5 intentos fallidos"
    priority: high
    tags: ["auth", "security"]

  - id: FR-002
    title: "Registro de usuario"
    description: |
      El sistema debe permitir registrar nuevos usuarios.
    acceptance_criteria:
      - "Valida email único"
      - "Hashea contraseñas"
      - "Envía email de verificación"
    priority: high
    tags: ["auth", "registration"]

hooks:
  - trigger: "on_save"
    action: "run_tests"
  - trigger: "on_commit"
    action: "validate_specs"

technology:
  language: "python"
  framework: "fastapi"
  database: "postgresql"

13.5.3 Commands en Specs

Los commands son acciones que Kiro ejecuta automáticamente.

commands:
  - name: "generate_models"
    description: "Genera modelos SQLAlchemy desde specs"
    trigger: "on_spec_change"
    
  - name: "generate_tests"
    description: "Genera tests desde acceptance criteria"
    trigger: "on_save"
    
  - name: "validate_coverage"
    description: "Verifica que specs tengan tests"
    trigger: "on_commit"

13.6 🎣 Hooks: Automatización

13.6.1 ¿Qué son los Hooks?

Los Hooks son disparadores que ejecutan acciones cuando ocurren eventos.

┌──────────────────────────────────────────────────────────────────────────────┐
│                                                                              │
│   HOOKS EN KIRO                                                             │
│   ═══════════════                                                           │
│                                                                              │
│   EVENTO                          ACCIÓN                                     │
│   ══════                          ══════                                     │
│                                                                              │
│   on_save    ──────────────▶    run_tests                                   │
│   on_save    ──────────────▶    lint_code                                   │
│   on_commit  ──────────────▶    validate_specs                              │
│   on_push    ──────────────▶    deploy_staging                              │
│   on_spec_change ──────────▶    generate_code                               │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

13.6.2 Hooks Comunes

hooks:
  - trigger: "on_save"
    actions:
      - "run_linter"
      - "format_code"
      
  - trigger: "on_commit"
    actions:
      - "validate_specs"
      - "check_coverage"
      - "run_tests"
      
  - trigger: "on_spec_change"
    actions:
      - "regenerate_models"
      - "update_tests"

13.7 🎨 Steerling: UI con IA

13.7.1 ¿Qué es Steerling?

Steerling es la herramienta de diseño UI de Kiro. Describís la UI, Kiro la genera.

> Quiero un login form con:
> - Campo email
> - Campo contraseña
> - Botón de login
> - Link a registro
> - Estilo minimalista, azul y blanco

Steerling genera: - Componente React/Vue/HTML - Estilos CSS/Tailwind - Validación de inputs - Estados (loading, error, success)


13.8 🧪 Lab: Tu Primer Spec

13.8.1 Objetivo

Crear una spec completa con requirements y hooks.

13.8.2 ⏱️ Timeline

Paso Descripción Tiempo
1 Instalar Kiro 10 min
2 Crear estructura 5 min
3 Escribir spec 15 min
4 Implementar 15 min

13.8.3 Escenario

Tony quiere un sistema de login. Pero esta vez, primero SPECIFICA, después implementa.


13.8.4 Paso 1: Crear proyecto

mkdir mi-proyecto-kiro
cd mi-proyecto-kiro
mkdir -p .kiro/specs/auth

13.8.5 Paso 2: Crear spec.yaml

Archivo: .kiro/specs/auth/spec.yaml

name: "Sistema de Login"
description: "Autenticación simple con JWT"

requirements:
  - id: AUTH-001
    title: "Login con email y contraseña"
    description: |
      Los usuarios deben poder iniciar sesión
      con email y contraseña válidos.
    acceptance_criteria:
      - "Retorna JWT de 1 hora"
      - "Maneja errores 401 para credenciales inválidas"
      - "Loguea intentos fallidos"
    priority: critical

  - id: AUTH-002
    title: "Protección de endpoints"
    description: |
      Los endpoints protegidos deben verificar el JWT.
    acceptance_criteria:
      - "Rechaza requests sin Authorization header"
      - "Rechaza tokens expirados"
      - "Retorna 401 para tokens inválidos"
    priority: critical

hooks:
  - trigger: "on_save"
    actions: ["run_tests", "lint_code"]

13.8.6 Paso 3: Generar código

En Kiro, ejecutá:

> Generá el código para la spec auth/

13.9 📊 Comparación: Kiro vs Other Workflows

Aspecto Kiro (SDD) OpenCode Claude Code
Metodología Specs → Code Contexto → Code Contexto → Code
Specs ✅ Nativas
Traceabilidad ✅ 100%
Automatización ✅ Hooks ⚠️ Limitada
Curva aprendizaje Alta Baja Media

13.10 ✅ Checklist Final

Habilidad
Kiro instalado
Primera spec creada
Hooks configurados
Spec→Code workflow entendido

13.11 🏆 Logro

“Architect” desbloqueado:

  • +150 XP
  • Capacidad de especificar antes de implementar
  • Dominio de SDD

13.12 🔗 Siguiente

¿Listo para algo más ligero?

→ Unidad 7: Amp — Asistente Ligero

O volvé al overview:

→ Resumen: Stack Completo de Herramientas