cursos:sdd:19-kiro
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| cursos:sdd:19-kiro [2026/11/05 22:22] – borrado - editor externo (Fecha desconocida) 127.0.0.1 | cursos:sdd:19-kiro [2026/11/06 00:30] (actual) – Lorenzo | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== 19. Kiro ====== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Ese mismo flujo se puede usar fuera de Kiro con **cc-sdd**. No es de AWS: es un proyecto de terceros, creado por un desarrollador independiente ([[https:// | ||
| + | |||
| + | ^ ^ Kiro ^ cc-sdd | ||
| + | ^ Qué es | Un agente completo de AWS: IDE (también CLI), orquestación de agentes, //skills//, //hooks// | Solo la metodología: | ||
| + | ^ Modelos | ||
| + | ^ Dónde se usa | Kiro IDE o Kiro CLI | En tu agente: OpenCode, Claude Code, Codex, Cursor... | ||
| + | |||
| + | **En este tema, «Kiro» significa cc-sdd.** | ||
| + | |||
| + | * Proyecto: [[https:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 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 ==== | ||
| + | |||
| + | <code bash> | ||
| + | cd mi-proyecto | ||
| + | npx cc-sdd@latest --claude-skills --lang es | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | mi-proyecto/ | ||
| + | ├── .claude/ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | ├── .kiro/ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | └── CLAUDE.md | ||
| + | </ | ||
| + | |||
| + | ==== 1.2. En OpenCode ==== | ||
| + | |||
| + | <code bash> | ||
| + | cd mi-proyecto | ||
| + | npx cc-sdd@latest --opencode-skills --lang es | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | mi-proyecto/ | ||
| + | ├── .opencode/ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | ├── .kiro/ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | └── AGENTS.md | ||
| + | </ | ||
| + | |||
| + | Cambia la carpeta de las //skills// y el fichero de configuración del agente; el contenido de '' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 2. Comandos iniciales en el proyecto ===== | ||
| + | |||
| + | Estos son los pasos que se dan **una sola vez**, al empezar con el proyecto. A partir de ahí, lo único que se repite es el ciclo de la sección siguiente. | ||
| + | |||
| + | <uml> | ||
| + | start | ||
| + | :npx cc-sdd; | ||
| + | : | ||
| + | repeat | ||
| + | : | ||
| + | : | ||
| + | : | ||
| + | : | ||
| + | :kiro-impl; | ||
| + | repeat while (otra funcionalidad? | ||
| + | stop | ||
| + | </ | ||
| + | |||
| + | Los dos primeros pasos se dan una sola vez. El resto se repite por cada funcionalidad nueva, y de ahí la flecha de vuelta de '' | ||
| + | |||
| + | ^ Paso ^ Comando ^ Resultado ^ | ||
| + | | Instalar | '' | ||
| + | | Crear la memoria del proyecto | ''/ | ||
| + | |||
| + | ==== 2.1. La memoria del proyecto ==== | ||
| + | |||
| + | ''/ | ||
| + | |||
| + | ^ Fichero ^ Qué recoge ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | Sin // | ||
| + | |||
| + | Es lo primero que hay que ejecutar, y conviene **revisar los tres documentos antes de seguir**: pasan a ser la fuente de verdad del agente, así que un error aquí se propaga a todas las especificaciones. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 3. Creación de una nueva especificación ===== | ||
| + | |||
| + | Esto es lo que se repite **una vez por cada funcionalidad** que quieras construir. | ||
| + | |||
| + | ==== 3.1. Las cinco fases ==== | ||
| + | |||
| + | ^ Fase ^ Comando ^ Documento que produce ^ | ||
| + | | Inicializar | ''/ | ||
| + | | Requisitos (el QUÉ) | ''/ | ||
| + | | Diseño (el CÓMO) | ''/ | ||
| + | | Tareas | ''/ | ||
| + | | Implementación | ''/ | ||
| + | |||
| + | Los documentos viven juntos, uno por funcionalidad: | ||
| + | |||
| + | < | ||
| + | .kiro/ | ||
| + | ├── spec.json | ||
| + | ├── requirements.md | ||
| + | ├── design.md | ||
| + | └── tasks.md | ||
| + | </ | ||
| + | |||
| + | ==== 3.2. Entre fase y fase está el humano ==== | ||
| + | |||
| + | '' | ||
| + | |||
| + | < | ||
| + | Requirements not yet approved. Approval required before design generation. | ||
| + | </ | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | ^ Comando ^ ¿Necesita '' | ||
| + | | ''/ | ||
| + | | ''/ | ||
| + | | ''/ | ||
| + | | ''/ | ||
| + | | ''/ | ||
| + | |||
| + | Sin '' | ||
| + | |||
| + | ==== 3.3. Una funcionalidad de principio a fin ==== | ||
| + | |||
| + | < | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | /kiro-impl photo-albums | ||
| + | </ | ||
| + | |||
| + | Leyendo y aprobando el documento de cada fase antes de lanzar la siguiente. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 4. Referencia de comandos ===== | ||
| + | |||
| + | ==== 4.1. / | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Crea o actualiza la memoria del proyecto. No lleva argumentos. | ||
| + | |||
| + | **Produce** tres documentos en '' | ||
| + | |||
| + | 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. | ||
| + | |||
| + | * **Captura patrones, no inventarios.** «Así se nombran los servicios aquí», no una lista de los 200 ficheros del proyecto. | ||
| + | * **Relánzalo de vez en cuando** para que no se quede desfasado respecto al código ya escrito. | ||
| + | |||
| + | ==== 4.2. / | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Crea el esqueleto de la especificación de **una** funcionalidad. | ||
| + | |||
| + | **Produce** '' | ||
| + | |||
| + | * 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. | ||
| + | * 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, | ||
| + | |||
| + | ==== 4.3. / | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Convierte la descripción en un documento de requisitos **verificable**. El argumento es el nombre de la carpeta, no la descripción. | ||
| + | |||
| + | **Produce** '' | ||
| + | |||
| + | === Formato EARS === | ||
| + | |||
| + | EARS (//Easy Approach to Requirements Syntax//) es una sintaxis acotada para escribir criterios que no admitan dos lecturas: | ||
| + | |||
| + | < | ||
| + | WHEN < | ||
| + | IF < | ||
| + | THE < | ||
| + | </ | ||
| + | |||
| + | Un fragmento del documento resultante: | ||
| + | |||
| + | < | ||
| + | ### 1.1 Autenticación de usuarios | ||
| + | **FR-1.1.1**: | ||
| + | - WHEN el usuario pulsa " | ||
| + | - 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. | ||
| + | |||
| + | === 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, // | ||
| + | | 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, | ||
| + | |||
| + | **Prueba del algodón**: si el criterio se puede escribir sin nombrar ninguna tecnología, | ||
| + | |||
| + | Es un comando **iterativo**: | ||
| + | |||
| + | ==== 4.4. / | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Traduce el QUÉ al CÓMO. El '' | ||
| + | |||
| + | **Produce** '' | ||
| + | |||
| + | * **La frontera, primero de todo**: qué posee esta especificación, | ||
| + | * **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. | ||
| + | |||
| + | Antes de escribir nada investiga: en funcionalidades nuevas busca patrones de arquitectura y verifica versiones de dependencias; | ||
| + | |||
| + | 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í. | ||
| + | |||
| + | ==== 4.5. / | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Convierte el diseño en una lista de tareas ejecutables. El '' | ||
| + | |||
| + | **Produce** '' | ||
| + | |||
| + | * **De 1 a 3 horas cada una.** Ni «implementar la autenticación» ni «crear el fichero». | ||
| + | * **Numeradas**: | ||
| + | * **Con entregable verificable**: | ||
| + | * **Anotadas** con la parte del sistema a la que pertenecen y con sus dependencias. | ||
| + | * **Sin prerrequisitos implícitos**: | ||
| + | |||
| + | Antes de escribir '' | ||
| + | |||
| + | Es la última oportunidad de detectar un problema de diseño antes de que se convierta en código. | ||
| + | |||
| + | ==== 4.6. /kiro-impl ==== | ||
| + | |||
| + | < | ||
| + | /kiro-impl user-auth-oauth | ||
| + | </ | ||
| + | |||
| + | Ejecuta las tareas aprobadas. Es donde por fin se escribe código. No necesita '' | ||
| + | |||
| + | **Produce** código y // | ||
| + | |||
| + | - Programa con TDD: primero la prueba que falla, luego el código que la pasa. | ||
| + | - Revisa el resultado de forma independiente: | ||
| + | - Marca la tarea como hecha en '' | ||
| + | |||
| + | Que sea una tarea por iteración es lo que hace que ''/ | ||
| + | |||
| + | <note important>''/ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 5. Enlaces ===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
