Spec-Driven DevelopmentSDDSpecKitKiroAIGitHub CopilotIDEDevelopment Workflow

Comparación de entornos de Desarrollo Guiado por Especificaciones (SDD): SpecKit vs Kiro

Sloth255
Sloth255
·7 min read·1,375 words

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écnica
  • data-model.md: Definición del modelo de datos
  • contracts/api-spec.json: Especificaciones de API
  • research.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:

  1. Analizar la descripción en lenguaje natural del usuario
  2. Convertir a historias de usuario
  3. Clarificar criterios de aceptación
  4. 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

  1. Descarga el IDE desde kiro.dev
  2. Instalar y lanzar
  3. 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

  1. Quieres mantener el entorno VSCode existente

    • Usar extensos plugins y configuraciones tal como están
    • Evitar los costes de migración del editor
  2. Todo el equipo es nuevo en SDD

    • Aprender gradualmente con el enfoque basado en comandos
    • Fácil compartir documentos vía Git
  3. Quieres probar múltiples agentes de IA

    • Cambiar entre Claude, Gemini, Copilot, etc.
    • Evitar el vendor lock-in
  4. Prioridad en código abierto

    • Desarrollo impulsado por la comunidad
    • Libertad de personalización

Cuándo elegir Kiro

  1. Maximizar la productividad

    • Trabajar rápidamente con UI integrada
    • Automatizar tareas repetitivas con Hooks
  2. Enfoque visual

    • Gestionar especificaciones y tareas visualmente
    • Ver el progreso en el dashboard
  3. Necesitas automatización avanzada

    • Flujos de trabajo dirigidos por eventos
    • Integrar con servicios externos vía MCP
  4. 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.