Taller (workshop) de Desarrollo Guiado por Especificaciones (SDD) con GitHub Spec Kit. Los participantes aprenden a aplicar el flujo completo de SDD, desde la especificación hasta la implementación, usando la CLI specify y GitHub Copilot (de preferencia en VS Code).
- Aplicar el flujo completo de SDD (constitution → specify → plan → tasks → implement)
- Distinguir entre especificación (qué / por qué) y plan (cómo)
- Construir una aplicación desde cero (greenfield) usando SDD
- Personalizar Spec Kit con presets y extensiones
- Aplicar SDD a un proyecto existente (brownfield)
- Identificar diferencias concretas entre adopción greenfield y brownfield
| Módulo | Duración | Material | Descripción |
|---|---|---|---|
| 0. Preparación | 5 min | 00-preparacion.md | Verificación del entorno |
| 1. Introducción | 15 min | 01-introduccion.md | Conceptos SDD, vibe coding vs context engineering |
| 2. Ejercicio Greenfield | 45 min | 02-ejercicio-greenfield.md | Construir TodoLite CLI desde cero |
| 3. Extensiones y Presets | 25 min | 03-extensiones-y-presets.md | Personalizar plantillas y comandos |
| 4. Ejercicio Brownfield | 25 min | 04-ejercicio-brownfield.md | Agregar búsqueda a Notes API |
| 5. Cierre | 5 min | 05-cierre.md | Retrospectiva y próximos pasos |
| Total | ~120 min |
| Herramienta | Versión mínima | Verificación | Instalación |
|---|---|---|---|
| Git | 2.x | git --version |
git-scm.com |
| Python | 3.11+ | python --version |
python.org |
| uv | última | uv --version |
irm https://astral.sh/uv/install.ps1 | iex (Win) / curl -LsSf https://astral.sh/uv/install.sh | sh (Mac/Linux) |
| specify CLI | 0.6.x+ | specify version |
uv tool install specify-cli |
| VS Code | última | — | code.visualstudio.com |
| GitHub Copilot | última | Icono en la barra lateral de VS Code | Extensión de VS Code Marketplace |
| Ruta | Herramienta | Versión mínima | Verificación |
|---|---|---|---|
| C# | .NET SDK | 10.0+ | dotnet --version |
| Python | Python | 3.11+ | python --version |
specify checkmaterials/ # Guías del workshop (en español)
├── 00-preparacion.md # Verificación del entorno
├── 01-introduccion.md # Conceptos SDD y Spec Kit
├── 02-ejercicio-greenfield.md # Ejercicio: TodoLite CLI desde cero
├── 03-extensiones-y-presets.md # Ejercicio: personalización de Spec Kit
├── 04-ejercicio-brownfield.md # Ejercicio: agregar búsqueda a Notes API
├── 05-cierre.md # Retrospectiva y próximos pasos
├── troubleshooting.md # Resolución de problemas comunes
└── retrospectiva.md # Plantilla de retrospectiva
exercises/
├── greenfield/ # Código de referencia: TodoLite CLI
│ ├── csharp/
│ │ ├── TodoLite.sln
│ │ ├── src/
│ │ └── test/
│ └── python/
│ ├── pyproject.toml
│ ├── todolite/
│ └── tests/
├── brownfield/ # Código de referencia: Notes API
│ ├── csharp/
│ │ ├── NotesApi.sln
│ │ ├── src/Notes.Api/
│ │ └── test/Notes.Api.Tests/
│ └── python/
│ ├── pyproject.toml
│ ├── notes_api/
│ └── tests/
├── extensions/my-ext/ # Extensión de ejemplo con quickcheck commands
│ ├── extension.yml
│ ├── commands/
│ ├── templates/
│ └── sample/
└── presets/dotnet-workshop-lite-preset/ # Preset de ejemplo
├── preset.yml
├── templates/ # Spec y plan templates personalizados
└── commands/ # Override del comando plan
specs/001-speckit-workshop/ # Especificaciones SDD del workshop
├── spec.md # Especificación funcional
├── plan.md # Plan de implementación
├── tasks.md # Tareas derivadas del plan
├── data-model.md # Modelo de datos
├── research.md # Investigación técnica
├── quickstart.md # Guía rápida de verificación
├── checklists/ # Listas de verificación
└── contracts/
Construye una CLI mínima de tareas desde cero con los comandos add, list (con filtro --open), done y rm. Persistencia en archivo JSON.
# C#
cd exercises/greenfield/csharp
dotnet build && dotnet test
dotnet run --project src/TodoLite.Cli -- add "Comprar leche"
dotnet run --project src/TodoLite.Cli -- list
# Python
cd exercises/greenfield/python
pip install -e ".[dev]"
pytest
python -m todolite add "Comprar leche"
python -m todolite listAgrega un endpoint GET /notes/search a una API de notas existente. Soporta búsqueda por texto (q) y etiqueta (tag) con lógica AND.
# C#
cd exercises/brownfield/csharp
dotnet build && dotnet test
# Python
cd exercises/brownfield/python
pip install -e ".[dev]"
pytestInstala y verifica personalizaciones de Spec Kit:
# Instalar preset
specify preset add --dev exercises/presets/dotnet-workshop-lite-preset --priority 5
specify preset list
# Instalar extensión
specify extension add --dev exercises/extensions/my-ext
specify extension list ┌──────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐
│ constitution │───▶│ specify │───▶│ plan │───▶│ tasks │───▶│ implement │
│ │ │ │ │ │ │ │ │ │
│ Principios │ │ spec.md │ │ plan.md │ │ tasks.md │ │ Código + │
│ del proyecto │ │ Qué/ │ │ Cómo │ │ Lista │ │ Tests │
│ │ │ Por qué │ │ │ │ │ │ │
└──────────────┘ └──────────┘ └──────────┘ └──────────┘ └────────────┘
| Comando | Artefacto | Propósito |
|---|---|---|
/speckit.constitution |
constitution.md |
Define principios y restricciones del proyecto |
/speckit.specify |
spec.md |
Requisitos, escenarios y criterios de aceptación |
/speckit.clarify |
spec.md (actualizado) |
Identifica áreas sub-especificadas (opcional) |
/speckit.plan |
plan.md |
Stack técnico, arquitectura y estrategia de testing |
/speckit.checklist |
checklists/*.md |
Checklist de verificación (opcional) |
/speckit.tasks |
tasks.md |
Lista ordenada de tareas derivadas del plan |
/speckit.analyze |
Reporte | Verifica consistencia entre artefactos (opcional) |
/speckit.implement |
Código + tests | Ejecuta las tareas y produce código funcional |
| Componente | C# | Python |
|---|---|---|
| Lenguaje | C# 14 / .NET 10 | Python 3.11+ |
| Greenfield | Console app, System.Text.Json |
argparse, json, dataclasses |
| Brownfield | ASP.NET Minimal API | Flask 3.x |
| Testing | xUnit | pytest |
| Spec Kit | specify CLI 0.6.x+ |
specify CLI 0.6.x+ |
Consulta la guía de troubleshooting para resolución de problemas comunes, incluyendo:
specifyno está en el PATH- Comandos slash no aparecen en el agente
uvo Python no encontrado- .NET SDK no instalado
- Errores al instalar presets o extensiones
Este proyecto está bajo la licencia MIT.