Tabla de Contenidos
¡Esta es una revisión vieja del documento!
Kiro: comandos SDD
Kiro es el IDE de AWS que popularizó un flujo de spec-driven development por fases: primero requisitos, luego diseño, luego tareas y solo al final código, con una aprobación humana en cada salto.
Ese mismo flujo se puede usar desde la terminal, sin el IDE, con cc-sdd: un paquete npm que instala las skills de Kiro dentro del agente que ya estés usando. Es un proyecto independiente de terceros, no un producto de AWS, pero reproduce las mismas fases y los mismos documentos.
En este tema, «Kiro» significa cc-sdd. Y de todos sus comandos vemos solo los seis que hacen falta para trabajar: el resto son atajos y validaciones opcionales.
- Proyecto: github.com/gotalab/cc-sdd (v3.0.2, MIT)
1. Instalación
Hace falta Node.js y ejecutar el comando en la raíz del proyecto, porque instala ficheros dentro de él.
1.1. En Claude Code
cd mi-proyecto npx cc-sdd@latest --claude-skills --lang es
Deja en el proyecto .claude/skills/ (las skills), .kiro/ (plantillas y documentos) y CLAUDE.md.
1.2. En OpenCode
cd mi-proyecto npx cc-sdd@latest --opencode-skills --lang es
Deja .opencode/skills/, .kiro/ y AGENTS.md. Los comandos y las plantillas son exactamente los mismos que en Claude Code.
1.3. Estructura que se crea
mi-proyecto/ ├── .claude/skills/ # (o .opencode/skills/) los comandos kiro-* ├── .kiro/ │ ├── settings/ # plantillas y reglas, personalizables │ ├── steering/ # memoria del proyecto <- la crea /kiro-steering │ └── specs/ # una carpeta por funcionalidad <- la crea /kiro-spec-init └── CLAUDE.md # o AGENTS.md
Sobre un proyecto que ya tenga contenido conviene lanzar antes npx cc-sdd@latest –dry-run para ver qué ficheros tocaría.
2. Qué se hace una vez y qué se repite
Es la distinción que más confunde al principio: cc-sdd tiene dos ritmos.
2.1. Una sola vez por proyecto
| Paso | Comando | Resultado |
|---|---|---|
| Instalar | npx cc-sdd@latest –claude-skills –lang es | .claude/skills/, .kiro/ |
| Crear la memoria del proyecto | /kiro-steering | .kiro/steering/ con tres documentos |
2.2. Una vez por cada funcionalidad
| Fase | Comando | Documento que produce |
|---|---|---|
| Inicializar | /kiro-spec-init <descripción> | spec.json |
| Requisitos (el QUÉ) | /kiro-spec-requirements <nombre> | requirements.md |
| Diseño (el CÓMO) | /kiro-spec-design <nombre> | design.md |
| Tareas | /kiro-spec-tasks <nombre> | tasks.md |
| Implementación | /kiro-impl <nombre> | código y commits |
Los documentos viven juntos, uno por funcionalidad:
.kiro/specs/user-auth-oauth/ ├── spec.json # metadatos y estado de aprobación de cada fase ├── requirements.md # QUÉ ├── design.md # CÓMO └── tasks.md # tareas
2.3. Entre fase y fase está el humano
spec.json guarda si cada fase está generada y si está aprobada. Un comando se niega a arrancar si la fase anterior no lo está:
Requirements not yet approved. Approval required before design generation.
Aprobar consiste en leer el documento y lanzar el comando siguiente. La opción -y aprueba la fase anterior automáticamente: es cómoda para prototipos, pero saltarse esa lectura es renunciar a lo único que distingue este método de pedirle a la IA «hazme el login».
3. /kiro-steering
Crea la memoria del proyecto: lo que todos los demás comandos leen antes de hacer nada. Es lo primero que hay que ejecutar.
/kiro-steering
No lleva argumentos. Analiza el repositorio y genera tres documentos en .kiro/steering/:
| Fichero | Qué recoge |
|---|---|
product.md | Para qué sirve el producto, qué valor aporta, capacidades principales |
tech.md | Stack tecnológico, frameworks, decisiones técnicas y restricciones |
structure.md | Organización de directorios, patrones de arquitectura, convenciones de nombres |
La primera vez los escribe desde cero leyendo README, dependencias y árbol de directorios. Las siguientes veces compara con el código y reporta lo que se ha desviado, respetando lo que hayas editado a mano.
Tres reglas:
- Captura patrones, no inventarios. «Así se nombran los servicios aquí», no una lista de los 200 ficheros del proyecto.
- Revísalo antes de seguir. Pasa a ser la fuente de verdad del agente: un error aquí se propaga a todas las especificaciones.
- Relánzalo de vez en cuando para que no se quede desfasado respecto al código ya escrito.
4. /kiro-spec-init
Crea el esqueleto de la especificación de una funcionalidad.
/kiro-spec-init <descripción de la funcionalidad>
/kiro-spec-init Autenticación de usuarios con OAuth 2.0 y tokens JWT para una aplicación Next.js
Qué hace:
- Genera un nombre único en
kebab-casea partir de la descripción (aquí,user-auth-oauth). Si es ambigua, propone opciones y te deja elegir. - Comprueba que la descripción dice quién tiene el problema, cuál es la situación actual y qué debería cambiar. Si falta algo, pregunta en lugar de suponerlo.
- Crea
.kiro/specs/<nombre>/conspec.jsony unrequirements.mdvacío.
No escribe requisitos, ni diseño, ni tareas: solo la estructura. Por eso es instantáneo.
Cuanto más concreta sea la descripción —stack, restricciones, requisitos clave—, mejor arranca todo lo demás.
5. /kiro-spec-requirements
Convierte la descripción en un documento de requisitos verificable.
/kiro-spec-requirements user-auth-oauth
El argumento es el nombre de la carpeta, no la descripción.
5.1. Formato EARS
EARS (Easy Approach to Requirements Syntax) es una sintaxis acotada para escribir criterios de aceptación que no admitan dos lecturas:
WHEN <disparador> THE <sistema> SHALL <acción> IF <condición> THEN THE <sistema> SHALL <acción> WHERE <característica> THE <sistema> SHALL <acción> THE <sistema> SHALL <acción>
Un fragmento del documento resultante:
### 1.1 Autenticación de usuarios **FR-1.1.1**: Login con OAuth - WHEN el usuario pulsa "Entrar con Google" THE sistema SHALL redirigir a la pantalla de consentimiento - WHEN se recibe el callback de OAuth THE sistema SHALL validar el código de autorización - IF la validación es correcta THEN THE sistema SHALL crear una sesión con token JWT
Cada línea es directamente un caso de prueba: hay un disparador, un sujeto y un resultado observable.
5.2. Requisitos son el QUÉ, no el CÓMO
Es la regla que más cuesta respetar:
| Sí va en requisitos | No: eso es diseño |
|---|---|
| Alcance: qué entra y qué queda fuera | Elección de stack (base de datos, framework, lenguaje) |
| Comportamiento visible: «cuando pasa X, qué ve el usuario» | Patrones de arquitectura |
| Reglas de negocio y casos límite | Diseño de la API, modelos de datos, componentes internos |
| Tiempos de respuesta, disponibilidad, nivel de seguridad | Cómo se consiguen: caché, escalado |
Prueba del algodón: si el criterio se puede escribir sin nombrar ninguna tecnología, es un requisito. Si necesita nombrarla, es diseño.
Es un comando iterativo: puedes lanzarlo varias veces para refinar, y respeta lo que edites a mano. Si los requisitos salen genéricos, casi siempre falta steering.
6. /kiro-spec-design
Traduce el QUÉ al CÓMO.
/kiro-spec-design user-auth-oauth
Antes de escribir nada investiga: en funcionalidades nuevas busca patrones de arquitectura y verifica versiones de dependencias; en extensiones recorre el código existente buscando los patrones que ya se usan.
design.md contiene:
- La frontera, primero de todo: qué posee esta especificación, qué no posee y de qué dependencias puede tirar.
- Componentes e interfaces con tipado explícito.
- Diagramas cuando la arquitectura lo pide.
- Plan de ficheros: rutas concretas, cuáles se crean y cuáles se modifican, una responsabilidad por fichero. De aquí salen las fronteras de las tareas del paso siguiente, así que un plan vago produce una implementación vaga.
- Estrategia de pruebas derivada de los criterios de aceptación concretos. Nada de «probar que el login funciona»: qué se verifica y por qué importa.
Si al revisar el diseño aparece un hueco real en los requisitos, se para y te manda de vuelta en lugar de taparlo aquí.
7. /kiro-spec-tasks
Convierte el diseño en una lista de tareas ejecutables.
/kiro-spec-tasks user-auth-oauth
Cómo son las tareas:
- De 1 a 3 horas cada una. Ni «implementar la autenticación» ni «crear el fichero».
- Numeradas:
1.,2.son cabeceras de grupo;1.1,1.2son lo que realmente se ejecuta. - Con entregable verificable: un fichero, un endpoint, un componente. Cada tarea dice cómo se ve que está hecha, en términos observables.
- Anotadas con la parte del sistema a la que pertenecen (
_Boundary:_), sus dependencias (_Depends:_) y si se pueden ejecutar en paralelo ((P)). - Sin prerrequisitos implícitos: si una tarea necesita un runtime o un fichero de configuración, montar eso es una tarea previa explícita.
Antes de escribir tasks.md comprueba que cada requisito está en alguna tarea y que cada componente del diseño está representado. Al terminar muestra un resumen y pregunta si apruebas.
Es la última oportunidad de detectar un problema de diseño antes de que se convierta en código.
8. /kiro-impl
Ejecuta las tareas aprobadas. Es donde por fin se escribe código.
/kiro-impl user-auth-oauth # todas las tareas pendientes /kiro-impl user-auth-oauth 1.1,1.2 # solo esas tareas
Antes de empezar descubre los comandos de validación del repositorio —tests, build, smoke test— mirando package.json, Makefile, los ficheros de CI y el README. Prefiere los que ya usa el proyecto antes que inventarse comandos.
Después trabaja una tarea por iteración:
- Programa con TDD: primero la prueba que falla, luego el código que la pasa.
- Revisa el resultado de forma independiente: ejecuta
git diff, lanza las pruebas y comprueba que no se ha salido de la frontera de la tarea. - Marca la tarea como hecha en
tasks.mdy hace commit solo de los ficheros de esa tarea —nuncagit add -A— con el mensajefeat(<funcionalidad>): <tarea>.
Que sea una tarea por iteración es lo que hace que /kiro-impl sea seguro de relanzar si se interrumpe: al reanudar relee tasks.md y sigue por donde iba.
/kiro-impl escribe código y hace commits sin preguntar tarea a tarea. Lánzalo en una rama propia y con el árbol de trabajo limpio.
9. Resumen
Una funcionalidad de principio a fin, sobre un proyecto ya inicializado con /kiro-steering:
/kiro-spec-init Álbumes de fotos con subida, etiquetado y compartición /kiro-spec-requirements photo-albums /kiro-spec-design photo-albums /kiro-spec-tasks photo-albums /kiro-impl photo-albums
Leyendo y aprobando el documento de cada fase antes de lanzar la siguiente.
/kiro:steering y /kiro:spec-init, con dos puntos. Desde la 3.0 son /kiro-steering y /kiro-spec-init, con guion. Los antiguos siguen funcionando pero están obsoletos.
10. Enlaces
- Spec-Driven Guide — la metodología completa
