Apariencia
spec.md Unificado (SPEC-630)
SPEC-630 introdujo el formato unificado de spec.md, eliminando el archivo technical.md separado que Planu requería anteriormente. Esta página explica la motivación, la nueva estructura y cómo migrar specs existentes.
Contexto — Por qué Fusionamos technical.md
Antes de SPEC-630, cada spec vivía en dos archivos:
planu/specs/SPEC-NNN-my-feature/
spec.md ← criterios de aceptación + enunciado del problema
technical.md ← detalle de implementación, tipos, listas de archivosEsto causaba tres problemas recurrentes:
- Drift. Los criterios en
spec.mdevolucionaban perotechnical.mdno se actualizaba al mismo ritmo. - Desperdicio de contexto. Cargar ambos archivos consumía ~50–100 K tokens por solicitud, incluso para consultas simples.
- Contaminación de placeholders.
technical.mdera a menudo un stub con separadores de doble guion (--) que las herramientas no podían distinguir del contenido real.
Después de SPEC-630: un único spec.md con una sección ## Technical al final.
La Sección ## Technical
La sección ## Technical sigue al último criterio de aceptación. Usa sub-encabezados consistentes que las herramientas de Planu saben buscar:
markdown
## Technical
### Files to create
- `src/feature/my-module.ts` — descripción breve
- `src/feature/my-module.test.ts` — tests unitarios
### Files to modify
- `src/index.ts` — exportar el nuevo módulo
### Implementation order
1. Crear tipos/interfaces
2. Implementar lógica principal
3. Agregar tests
4. Conectar exportaciones
### Key types / interfaces
```ts
interface MyFeatureOptions {
enabled: boolean
timeout: number
}
```
### Test stubs
```ts
describe('myFeature', () => {
it('should do X given Y', async () => {
// TODO: implement
})
})
```Las sub-secciones son opcionales
Incluye solo las sub-secciones que apliquen. Una spec tipo docs puede necesitar solo ### Files to create. Una spec de refactor puede necesitar ### Files to modify y ### Key types / interfaces.
Diff Antes / Después
diff
planu/specs/SPEC-NNN-my-feature/
- spec.md ← solo criterios
- technical.md ← archivo de implementación separado
+ spec.md ← criterios + sección ## Technical unificadosDentro del archivo, la diferencia se ve así:
diff
## Acceptance Criteria
**Scenario 1: ...**
- GIVEN ...
- WHEN ...
- THEN ...
+
+## Technical
+
+### Files to create
+
+- `src/my-feature.ts` — implementación principalMigrando Specs Existentes
Si tu proyecto tiene specs con un technical.md separado, usa la herramienta heal_spec_docs para migrarlas automáticamente:
bash
# Migrar una spec individual
heal_spec_docs("SPEC-NNN")
# Migrar todas las specs del proyecto
heal_spec_docs("*")Qué Hace heal_spec_docs
heal_spec_docs aplica las siguientes heurísticas:
- Detección de placeholder. Si
technical.mdcontiene solo separadores de doble guion (--) o está vacío, la herramienta lo considera un stub y lo elimina. - Fusión. Si
technical.mdtiene contenido real, la herramienta agrega una sección## Technicalaspec.mdcon ese contenido y luego eliminatechnical.md. - Validación. Después de la fusión, la herramienta ejecuta
check_readinesspara verificar que el archivo unificado sea coherente.
Revisión manual tras la migración
Siempre revisa la sección ## Technical fusionada después de ejecutar heal_spec_docs. Las fusiones automáticas preservan el contenido pero pueden reordenar sub-secciones.
Ver también
- Formato Lean de Spec — los campos de frontmatter que viven en la parte superior del mismo archivo
- Transiciones de Estado Automáticas — la cascada
validateque comprueba los criterios unificados