Mejores Practicas y Patrones Brownfield

Por: Artiko
openspecmejores-practicasbrownfieldpatrones

Mejores Practicas y Patrones Brownfield

Cuando usar OpenSpec

OpenSpec no es la herramienta correcta para todo. Estos son los escenarios donde aporta mas valor:

Features iterativas sobre codigo existente

Tienes un proyecto funcional y necesitas agregar, modificar o extender funcionalidad. Exactamente lo que hicimos con el Kanban: partimos de un modelo de datos y fuimos agregando drag and drop, autenticacion y filtros. Cada cambio se construyo sobre las specs anteriores.

Codebases con historia

Proyectos que llevan meses o anos en produccion. El equipo rota, la documentacion esta desactualizada, y nadie recuerda por que se tomo cierta decision. Los specs de OpenSpec se convierten en la documentacion viva que siempre falta.

Equipos que necesitan auditabilidad

Cada cambio tiene su propuesta, sus specs, su implementacion y su verificacion. Todo queda registrado en el archivo. Si alguien pregunta “por que el sistema funciona asi”, la respuesta esta en los specs archivados.

Mantenimiento continuo

Correccion de bugs, migraciones, actualizaciones de dependencias. Incluso cambios “pequenos” se benefician de tener specs que documenten la intencion.

Cuando NO usar OpenSpec

Proyectos greenfield muy complejos

Si estas disenando un sistema desde cero con multiples microservicios, dominios complejos y un equipo grande, considera BMAD primero. BMAD tiene fases de discovery, analisis de mercado y diagramas de arquitectura que OpenSpec no ofrece. Puedes migrar a OpenSpec despues del setup inicial.

Prototipos desechables

Si vas a tirar el codigo en una semana, las specs no aportan valor. Usa la IA directamente, genera el prototipo y avanza. Si el prototipo sobrevive y se convierte en producto, entonces activa OpenSpec.

Cambios triviales de una linea

Corregir un typo, actualizar una constante o cambiar un color no justifica el flujo completo de propuesta, especificacion y verificacion. Hazlo directamente y sigue adelante.

Patron: retroingenieria de specs

Uno de los escenarios mas potentes es generar specs desde codigo legacy que no tiene especificaciones. OpenSpec permite esto con:

/opsx:explore

Este comando analiza el codigo existente y genera specs que describen el comportamiento actual. No es perfecto (la IA infiere comportamiento del codigo), pero te da una base sobre la cual iterar.

El flujo es:

  1. Ejecutar /opsx:explore sobre el codebase
  2. Revisar los specs generados y corregir imprecisiones
  3. Guardar los specs en openspec/specs/
  4. A partir de aqui, usar el flujo normal de /opsx:propose para cambios

Esto transforma un proyecto sin documentacion en un proyecto especificado, y cada cambio futuro mantiene esas specs actualizadas.

Patron: un cambio = un PR

Mantener correspondencia 1:1 entre cambios de OpenSpec y Pull Requests:

Cambio OpenSpecBranch GitPull Request
add-drag-dropfeat/drag-dropPR #12
add-authfeat/authPR #13
add-filtersfeat/filtersPR #14

Esta correspondencia facilita:

Patron: specs como documentacion viva

Las especificaciones tradicionales se pudren. Alguien escribe un documento de arquitectura, el codigo evoluciona, y en seis meses el documento no refleja la realidad.

Con OpenSpec, los specs no se pudren porque son parte del flujo de trabajo:

  1. Cada cambio genera delta specs
  2. Al archivar, las delta specs se fusionan con los specs principales
  3. Los specs siempre reflejan el estado actual del sistema
  4. Si el codigo cambia sin pasar por OpenSpec, la discrepancia se detecta en el proximo ciclo de verificacion

Los specs no son documentacion que escribes una vez. Son artefactos que evolucionan con cada cambio.

Patron: explore antes de propose

Antes de formalizar un cambio, usa /opsx:explore para pensar:

/opsx:explore
Quiero agregar notificaciones en tiempo real al Kanban.
Que partes del sistema se verian afectadas?

Explore analiza el codebase y los specs existentes para darte una respuesta informada sin crear artefactos formales. Es el equivalente a pensar en la pizarra antes de comprometerte con una propuesta.

Esto evita crear cambios que luego descartas porque no consideraste alguna dependencia o complejidad.

Anti-patrones

No archivar cambios completados

Dejar cambios en estado applied sin archivar acumula deuda. Las delta specs no se fusionan con los specs principales, el historial queda incompleto y los proximos cambios no tienen contexto actualizado.

Specs demasiado granulares

No necesitas un escenario Gherkin para cada caso borde. Las specs deben capturar el comportamiento significativo, no reemplazar los unit tests. Si un spec tiene 30 escenarios para una sola feature, probablemente necesitas dividir la feature en cambios mas pequenos.

Ignorar el contexto del proyecto

El archivo CLAUDE.md y las instrucciones de openspec instructions son la brujula del proyecto. Si no actualizas CLAUDE.md cuando cambia la arquitectura o las convenciones, la IA genera propuestas basadas en informacion desactualizada. Dedica 2 minutos despues de cada cambio importante a verificar que el contexto sigue siendo preciso.

Cambios demasiado grandes

Un cambio que toca 30 archivos y tiene 15 delta specs es dificil de revisar, verificar y archivar. Prefiere cambios enfocados que resuelvan una cosa bien.

Saltarse la validacion

Archivar sin revisar que la implementacion cumple las specs es como hacer merge sin correr tests. En perfil Expanded, /opsx:verify ofrece validacion formal. En perfil Core, /opsx:archive incluye validaciones internas. En cualquier caso, asegurate de que la implementacion cumple lo acordado.

Resumen del proyecto Kanban

A lo largo del tutorial construimos un Kanban completo usando OpenSpec. Esta tabla resume cada cambio:

CambioArtefactos generadosResultado
Modelo de datosproposal + design + tasks + 2 specsBackend con API CRUD para tableros, columnas y tarjetas
Drag and dropproposal + design + tasks + 1 modified + 1 addedTarjetas arrastrables entre columnas con persistencia
Autenticacionproposal + design + tasks + 3 specsLogin, sesiones y tableros por usuario
Filtrosproposal + design + tasks + 1 modified + 1 addedBusqueda por etiqueta, fecha y asignado

Cada cambio siguio el mismo flujo de 3 acciones: Propose, Apply, Archive. Los specs crecieron de 2 archivos iniciales a 7 archivos que documentan todo el comportamiento del sistema.

Comparacion de eficiencia

Fission AI publico un benchmark usando un proyecto de CRM Dashboard (CRUD, graficas, filtros, autenticacion). Los resultados comparan el tiempo desde la idea hasta la implementacion verificada:

FrameworkTiempo totalArtefactosIdeal para
OpenSpec~12 min~250 lineas/cambioBrownfield, iteracion rapida
Spec-Kit~90 minVariableSpecs formales y rigurosas
BMAD~5.5 horas~800+ lineasGreenfield complejo

Estos numeros no significan que uno sea “mejor” que otro. Significan que cada herramienta esta optimizada para un escenario diferente:

Recursos

Resumen final


Capitulo 9: Cambios Paralelos | Capitulo 11: Roadmap y Futuro