Introducción
Este artículo compara dos enfoques representativos para implementar el "Desarrollo Guiado por Especificaciones (SDD)", una metodología que ha ganado una atención significativa recientemente.
- VSCode + GitHub Copilot + SpecKit: Añadir un toolkit SDD a los editores existentes
- Kiro IDE: Un IDE todo-en-uno con funciones SDD integradas
¿Qué es el Desarrollo Guiado por Especificaciones (SDD)?
En el desarrollo tradicional, el código es central y las especificaciones son complementarias. SDD invierte esto tratando las especificaciones como entregables ejecutables.
Beneficios clave de SDD
- Clarificación y documentación de requisitos
- Instrucciones precisas para agentes de IA
- Reducción de desajustes entre equipos
- Soporte para procesos de mejora iterativa
Entorno 1: VSCode + GitHub Copilot + SpecKit
Descripción general
SpecKit es un toolkit de código abierto para implementar SDD en entornos de desarrollo existentes. Proporcionado por GitHub, permite la interacción con agentes de IA a través de comandos slash.
Configuración
# Instalar Specify CLI
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
# Inicializar un nuevo proyecto
specify init my-project --ai copilot
# O en un proyecto existente
specify init . --ai copilot
Flujo de desarrollo
1. Establecer la Constitución del Proyecto
/speckit.constitution Create principles focused on code quality,
testing standards, user experience consistency, and performance requirements
Este comando genera .specify/memory/constitution.md, definiendo directrices para todo el proyecto.
2. Crear Especificaciones
/speckit.specify Build an application that can help me organize my photos
in separate photo albums. Albums are grouped by date and can be re-organized
by dragging and dropping on the main page.
Archivos generados:
.specify/specs/001-feature-name/spec.md: Requisitos de la funcionalidad e historias de usuario
3. Crear Plan de Implementación Técnica
/speckit.plan The application uses Vite with minimal number of libraries.
Use vanilla HTML, CSS, and JavaScript as much as possible.
Archivos generados:
plan.md: Arquitectura técnicadata-model.md: Definición del modelo de datoscontracts/api-spec.json: Especificaciones de APIresearch.md: Documentación de investigación técnica
4. Descomposición de Tareas
/speckit.tasks
Archivos generados:
tasks.md: Lista de tareas de implementación (con marcadores de dependencias y ejecución paralela)
5. Ejecutar la Implementación
/speckit.implement
La implementación procede secuencialmente basándose en la lista de tareas.
Detalles de los Prompt Files de SpecKit
SpecKit genera múltiples archivos de prompt en el directorio .github/prompts/.
speckit.constitution.prompt.md
Propósito: Definir principios fundamentales y directrices de desarrollo para el proyecto
Estructura:
---
description: Create or update project governing principles
---
# Project Constitution
Create a comprehensive constitution document that includes:
1. **Code Quality Standards**
- Naming conventions
- Documentation requirements
- Code review processes
2. **Testing Standards**
- Unit test coverage requirements
- Integration test strategies
- Test documentation
3. **Architecture Principles**
- Design patterns to follow
- Technology stack constraints
- Performance requirements
4. **User Experience Guidelines**
- Accessibility standards
- Responsive design requirements
- Internationalization considerations
Características:
- Los agentes de IA referencian este documento a lo largo de todas las fases posteriores
- Aplica las mejores prácticas específicas del proyecto
- Garantiza consistencia entre equipos
speckit.specify.prompt.md
Propósito: Estructurar los requisitos de funcionalidades en formato de historias de usuario
Estructura:
---
description: Define requirements and user stories
---
# Specification Template
## User Stories
**As a** [user type]
**I want** [goal]
**So that** [benefit]
### Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
## Functional Requirements
### FR-001: [Requirement Name]
**Priority**: High/Medium/Low
**Description**: Detailed requirement description
**Dependencies**: [Other requirements]
Proceso de generación:
- Analizar la descripción en lenguaje natural del usuario
- Convertir a historias de usuario
- Clarificar criterios de aceptación
- Asignar IDs de requisitos funcionales
speckit.plan.prompt.md
Propósito: Detallar planes de implementación técnica
Estructura:
---
description: Create technical implementation plans
---
# Implementation Plan
## Technology Stack
- Frontend: [Framework/Library]
- Backend: [Framework]
- Database: [Type]
- Deployment: [Platform]
## Architecture Overview
[System architecture diagrams, component diagrams]
## Data Model
[Entity relationship diagrams, table definitions]
## API Specifications
[Endpoint definitions, request/response formats]
## Implementation Phases
1. Phase 1: [Core features]
2. Phase 2: [Advanced features]
## Technical Considerations
- Security requirements
- Performance optimization
- Scalability concerns
Características:
- Se adhiere a los principios de constitution.md
- Resuelve técnicamente los requisitos de spec.md
- Compara múltiples opciones tecnológicas
speckit.tasks.prompt.md
Propósito: Descomponer en tareas concretas e implementables
Estructura:
---
description: Generate actionable task lists
---
# Task Breakdown
## User Story: [Story ID]
### Task 1: [Task Name]
**File**: `src/components/Feature.tsx`
**Type**: Implementation
**Dependencies**: None
**Parallel**: [P] (if parallelizable)
**Description**: Detailed task description
**Acceptance**: How to verify completion
### Task 2: [Task Name]
**File**: `tests/Feature.test.tsx`
**Type**: Testing
**Dependencies**: Task 1
Reglas de generación:
- Gestionar dependencias explícitamente
- Especificar rutas de archivos de forma concreta
- Considerar el orden del Desarrollo Guiado por Pruebas (TDD)
- Marcar tareas que se pueden ejecutar en paralelo
speckit.implement.prompt.md
Propósito: Ejecutar la implementación basándose en la lista de tareas
Flujo de ejecución:
---
description: Execute implementation plan
---
# Implementation Execution
1. **Validate Prerequisites**
- Constitution exists
- Spec is complete
- Plan is approved
- Tasks are defined
2. **Parse Tasks**
- Read tasks.md
- Build dependency graph
- Identify parallel tasks
3. **Execute Tasks**
For each task in order:
- Create/modify specified files
- Run tests (if TDD)
- Validate against acceptance criteria
- Update task status
4. **Progress Reporting**
- Mark tasks as In Progress/Done
- Report errors with context
- Suggest next steps
speckit.clarify.prompt.md
Propósito: Clarificar las partes ambiguas de la especificación mediante preguntas
Estructura:
---
description: Clarify underspecified areas
---
# Clarification Questions
## Coverage Analysis
[Identify areas not covered in the specification]
## Sequential Questions
1. **Question**: [Specific question]
**Context**: [Why this is important]
**Options**: [Possible answers]
[Answers are added to Clarifications section when recorded]
Características:
- Se recomienda ejecutar antes de crear el Plan
- Obtiene respuestas a través de preguntas estructuradas
- Las respuestas se integran en la especificación
Ejemplo de Documentos Generados
En un proyecto real, la estructura de directorios se ve así:
my-project/
├── .specify/
│ ├── memory/
│ │ └── constitution.md # Principios del proyecto
│ ├── specs/
│ │ └── 001-photo-albums/
│ │ ├── spec.md # Especificaciones de funcionalidad
│ │ ├── plan.md # Plan de implementación
│ │ ├── tasks.md # Lista de tareas
│ │ ├── data-model.md # Modelo de datos
│ │ ├── contracts/
│ │ │ └── api-spec.json # Especificaciones de API
│ │ └── research.md # Investigación técnica
│ ├── scripts/
│ │ ├── create-new-feature.sh
│ │ └── setup-plan.sh
│ └── templates/
│ ├── spec-template.md
│ ├── plan-template.md
│ └── tasks-template.md
├── .github/
│ └── prompts/
│ ├── speckit.constitution.prompt.md
│ ├── speckit.specify.prompt.md
│ ├── speckit.plan.prompt.md
│ ├── speckit.tasks.prompt.md
│ ├── speckit.implement.prompt.md
│ ├── speckit.clarify.prompt.md
│ └── speckit.analyze.prompt.md
└── src/
└── [Archivos de implementación]
Ventajas
✅ Código abierto: Uso gratuito bajo licencia MIT
✅ Flexibilidad: Soporta múltiples agentes de IA (Claude, Gemini, Copilot, etc.)
✅ Adopción gradual: Se puede adoptar de forma incremental comenzando con las funciones necesarias
Desventajas
❌ Configuración manual: La configuración inicial requiere múltiples pasos
❌ Complejidad de integración: Necesidad de combinar múltiples herramientas
❌ Experiencia de UI: Centrado en línea de comandos con retroalimentación visual limitada
❌ Curva de aprendizaje: Necesidad de entender el rol y el orden de cada comando
Entorno 2: Kiro IDE
Descripción general
Kiro es un IDE Agéntico que soporta desde prototipos hasta producción, con funciones SDD integradas de forma nativa.
Configuración
- Descarga el IDE desde kiro.dev
- Instalar y lanzar
- Puede importar automáticamente configuraciones y plugins de VS Code
Flujo de desarrollo
1. Generar Steering Docs
Selecciona "Generate Steering Docs" desde el panel de Kiro para generar lo siguiente en .kiro/steering/:
- Información de la pila tecnológica del proyecto
- Convenciones de codificación
- Directrices de flujo de trabajo
2. Las tres fases de la Creación de Especificaciones
Fase de Requisitos
Describe historias de usuario y criterios de aceptación en formato EARS (Easy Approach to Requirements Syntax):
WHEN [condition/event]
THE SYSTEM SHALL [expected behavior]
Archivo generado: .kiro/specs/feature-name/requirements.md
Fase de Diseño
Documenta la arquitectura técnica y los diagramas de secuencia:
Archivo generado: .kiro/specs/feature-name/design.md
Fase de Tareas
Plan detallado para las tareas de implementación:
Archivo generado: .kiro/specs/feature-name/tasks.md
3. Automatización con Hooks
Automatización dirigida por eventos que ejecuta tareas automáticamente en respuesta a cambios de archivos:
Ejemplo: "Al guardar un componente React, generar automáticamente archivos de prueba"
{
"hooks": [
{
"trigger": "onFileSave",
"pattern": "**/*.tsx",
"action": "generateTests"
}
]
}
Estructura de Documentos de Kiro
my-project/
├── .kiro/
│ ├── steering/
│ │ ├── tech-stack.md
│ │ ├── coding-standards.md
│ │ └── workflows.md
│ └── specs/
│ └── photo-albums/
│ ├── requirements.md # Requisitos en formato EARS
│ ├── design.md # Diseño de arquitectura
│ └── tasks.md # Tareas de implementación
└── src/
└── [Archivos de implementación]
Ventajas
✅ Experiencia integrada: Todas las funciones integradas de forma nativa en el IDE
✅ UI visual: Gestión visual de listas de especificaciones y estados de tareas
✅ Automatización: Ejecución de tareas en segundo plano con Hooks
Desventajas
❌ IDE dedicado requerido: Necesidad de migrar desde los editores existentes
❌ Vendor lock-in: Dependencia de funciones específicas de Kiro
Tabla de Comparación Detallada
| Aspecto | SpecKit | Kiro |
|---|---|---|
| Configuración | Configuración manual vía CLI | Solo descarga e instalación |
| Curva de aprendizaje | Necesita aprender comandos | UI intuitiva |
| Formato de especificación | Markdown con plantillas | EARS + Markdown |
| Gestión de tareas | Gestión de texto en tasks.md | Gestión visual en IDE |
| Automatización | Basada en scripts | Dirigida por eventos con Hooks |
| Integración con Git | Gestión automática basada en ramas | Manual o funciones del IDE |
| Agentes de IA | 10+ soportados | Agente integrado de Kiro |
| Extensibilidad | Personalización de plantillas | MCP + Powers |
| Coste | Gratuito (OSS) | Gratuito durante preview |
| Compartir en equipo | Compartir completamente vía Git | Git + funciones específicas de Kiro |
Comparación de Documentos Generados
Constitution/Steering
SpecKit:
.specify/memory/constitution.md: Archivo único- Describe los principios generales del proyecto
- Referenciado por todos los comandos
Kiro:
.kiro/steering/: Múltiples archivos- Separa la pila tecnológica, convenciones de codificación y flujos de trabajo
- Auto-generado + personalizable
Especificación
SpecKit:
# spec.md
## User Stories
As a user, I want to...
## Functional Requirements
FR-001: Feature description
## Review Checklist
- [ ] Requirements are clear
- [ ] Acceptance criteria defined
Kiro:
# requirements.md (EARS format)
WHEN user clicks upload button
THE SYSTEM SHALL display file selection dialog
WHEN file size exceeds 10MB
THE SYSTEM SHALL display error message
Plan de Implementación
SpecKit:
# plan.md
## Architecture
- Frontend: React
- Backend: Node.js
## Implementation Details
[Detailed implementation guide]
# data-model.md
[Database schema]
# contracts/api-spec.json
{OpenAPI specification}
Kiro:
# design.md
## Component Architecture
[System architecture diagram]
## Sequence Diagrams
[Flow diagrams]
## Technical Considerations
[Performance, security, etc.]
Tareas
SpecKit:
# tasks.md
## User Story: US-001
### Task 1: Setup database schema
File: src/db/schema.sql
Dependencies: None
[P] Parallel: Yes
### Task 2: Create API endpoint
File: src/api/upload.ts
Dependencies: Task 1
Kiro:
# tasks.md
## Phase 1: Core Implementation
- [ ] Task 1: Database setup
Status: Not Started
Assignee: [Auto]
- [ ] Task 2: API development
Status: Not Started
Dependencies: Task 1
Directrices de Uso
Cuándo elegir SpecKit
-
Quieres mantener el entorno VSCode existente
- Usar extensos plugins y configuraciones tal como están
- Evitar los costes de migración del editor
-
Todo el equipo es nuevo en SDD
- Aprender gradualmente con el enfoque basado en comandos
- Fácil compartir documentos vía Git
-
Quieres probar múltiples agentes de IA
- Cambiar entre Claude, Gemini, Copilot, etc.
- Evitar el vendor lock-in
-
Prioridad en código abierto
- Desarrollo impulsado por la comunidad
- Libertad de personalización
Cuándo elegir Kiro
-
Maximizar la productividad
- Trabajar rápidamente con UI integrada
- Automatizar tareas repetitivas con Hooks
-
Enfoque visual
- Gestionar especificaciones y tareas visualmente
- Ver el progreso en el dashboard
-
Necesitas automatización avanzada
- Flujos de trabajo dirigidos por eventos
- Integrar con servicios externos vía MCP
-
Nuevos proyectos
- No estar atado al entorno existente
- Probar la última experiencia SDD
Uso Avanzado con Prompt Files de SpecKit
Crear Prompts Personalizados
Los archivos de prompt de SpecKit se pueden personalizar libremente:
---
description: Custom quality checklist generator
---
# /speckit.custom-checklist
Generate a quality checklist for:
1. **Security Review**
- Authentication check
- Authorization verification
- Input validation
2. **Performance Review**
- Database query optimization
- Caching strategy
- Load testing results
[Output format: Markdown checklist in spec directory]
Gestionar Múltiples Especificaciones
# Feature 1
specify init . --ai copilot
/speckit.specify Build user authentication system
# Feature 2 (en nueva rama)
git checkout -b feature/002-payment
/speckit.specify Integrate payment gateway
Ejemplos de Flujos de Trabajo Prácticos
Desarrollo en Equipo con SpecKit
graph TD
A[Product Manager] -->|Define requirements| B["speckit.specify"]
B --> C["Generate spec.md"]
C --> D[Tech Lead]
D -->|Technology selection| E["speckit.plan"]
E --> F["Generate plan.md, data-model.md"]
F --> G[Developer]
G -->|Review tasks| H["speckit.tasks"]
H --> I["Generate tasks.md"]
I --> J["speckit.implement"]
J --> K["Generate code"]
K --> L[Pull Request]
L --> M[Code Review]
M -->|Approve| N[Merge]Flujo de desarrollo en equipo con SpecKit: Diferentes comandos para diferentes roles, compartiendo documentos vía Git
Desarrollo Individual con Kiro
graph TD
A[Idea] --> B[Spec Chat]
B --> C[Generate Requirements]
C --> D[Generate Design]
D --> E[Generate Tasks]
E --> F[Code with #spec reference]
F --> G[Save file]
G --> H[Trigger Hooks]
H --> I[Auto-generate tests]
I --> J[Run in background]Flujo de desarrollo individual con Kiro IDE: Ciclo de desarrollo eficiente con UI integrada y automatización mediante Hooks
Conclusión
SpecKit es ideal para equipos que quieren adoptar SDD mientras aprovechan los entornos de desarrollo existentes. Es de código abierto, muy flexible y permite una adopción gradual.
Kiro es adecuado para desarrolladores que buscan la última experiencia de IDE Agéntico. Con UI integrada, funciones de automatización y retroalimentación visual, maximiza la productividad.
Ambos entornos tienen como objetivo alejarse del "vibe coding" tradicional y realizar un proceso de desarrollo sistemático centrado en especificaciones. Elige según la naturaleza de tu proyecto, la composición del equipo y el entorno de desarrollo existente.
- Prueba SpecKit: Repositorio GitHub
- Prueba Kiro: Sitio oficial
