Caso de Uso de CodexSpec: Agregar Funcionalidad de Generacion de Descripciones PR al Proyecto¶
Este documento registra el proceso completo de usar la cadena de herramientas CodexSpec para agregar nueva funcionalidad al propio proyecto CodexSpec, mostrando la aplicacion practica de Spec-Driven Development (SDD).
Resumen¶
Funcionalidad Objetivo: Agregar comando /codexspec:pr para generar descripciones estructuradas de GitHub PR / GitLab MR.
Flujo de Desarrollo: specify -> generate-spec -> review-spec -> clarify -> spec-to-plan
Caracteristicas Clave: Se descubrieron problemas de requisitos durante el desarrollo y se ajustaron mediante el comando clarify, mostrando la flexibilidad de SDD.
Fase 1: Clarificacion de Requisitos Originales (/codexspec:specify)¶
Entrada Inicial del Usuario¶
Me gustaria agregar una funcionalidad al proyecto: proporcionar un nuevo comando relacionado con Git para generar informacion de PR de GitHub precisa, detallada y conforme a estandares (o informacion de MR, para GitLab). Estos son los contenidos de dos comandos de PR que he usado en otros proyectos, proporcionados para tu referencia.
[Ejemplo de Referencia 1 - Descripcion Estructurada]
Ahora, por favor actua como mantenedor del proyecto, basandote en todo el trabajo realizado hasta ahora, escribe una descripcion clara de Pull Request para este commit.
La descripcion del PR debe estar orientada a otros revisores del equipo e incluir las siguientes secciones:
1. Contexto (Context)
2. Implementacion (Implementation)
3. Pruebas (Testing)
4. Como Verificar Manualmente (How to Verify)
[Ejemplo de Referencia 2 - Descripcion Simple]
Por favor, basandote en la diferencia de codigo entre la rama actual y la rama origin/main, organiza un titulo y descripcion de Merge Request conforme a los estandares de Git en formato Markdown. (Usar descripcion en chino)
Proceso de Clarificacion¶
Q1: Idioma de Salida
- Opciones: Seguir configuracion del proyecto / Chino / Deteccion automatica
- Seleccion del Usuario: Seguir configuracion del proyecto (actual: en)
Q2: Soporte de Plataforma
- Opciones: Soportar GitHub y GitLab simultaneamente / Solo GitHub / Deteccion automatica de plataforma
- Seleccion del Usuario: Deteccion automatica de plataforma
Q3: Contenido de Descripcion PR
- Opciones: Descripcion estructurada detallada / Descripcion concisa / Plantilla personalizable
- Seleccion del Usuario: Descripcion estructurada detallada (recomendado)
Q4: Condicion de Disparo
- Opciones: Rama actual vs origin/main / Commits no enviados / Poder especificar rama objetivo
- Seleccion del Usuario: Poder especificar rama objetivo
Q5: Fuente de Spec
- Opciones: Priorizar spec.md / Solo usar info git / Combinar todas las fuentes
- Seleccion del Usuario: Combinar todas las fuentes (recomendado)
Q6: Nomenclatura
- Opciones: codexspec.pr / codexspec.create-pr / codexspec.create-mr
- Seleccion del Usuario: codexspec.pr (recomendado)
Q7: Manejo sin Spec
- Opciones: Continuar generando, saltar contexto / Solicitar crear spec primero / Advertir y continuar
- Seleccion del Usuario: Continuar generando, saltar contexto
Q8: Metodo de Salida
- Opciones: Salida a terminal / Guardar a archivo / Terminal + archivo opcional
- Seleccion del Usuario: Terminal + archivo opcional (recomendado)
Q9: Secciones por Defecto
- Opciones: Contexto, Implementacion, Pruebas, Como Verificar (todas)
- Seleccion del Usuario: Las cuatro secciones completas
Q10: Parametros del Comando
- Seleccion del Usuario: Todos los parametros son opcionales
--target-branch: Por defecto origin/main--output: Si no se especifica, por defecto solo salida a terminal--sections: Si no se especifica, seguir valores por defecto--no-spec: Saltar busqueda de archivo spec.md
Correccion de Configuracion de Idioma¶
Retroalimentacion del Usuario: El idioma deberia seguir la misma logica que el comando /commit-staged, priorizando el parametro language.commit en config.yml, y si no hay parametro language.commit configurado, entonces segun language.output.
Resumen de Requisitos Actualizado:
Fase 2: Generar Documento de Especificacion (/codexspec:generate-spec)¶
Estructura del Documento Generado¶
El spec.md generado incluye las siguientes secciones:
- Overview: Resumen de funcionalidad
- Goals: 4 objetivos
- User Stories: 4 historias de usuario con criterios de aceptacion
- Functional Requirements: 8 requisitos (REQ-001 a REQ-008)
- Command Parameters: 4 definiciones de parametros
- Non-Functional Requirements: 3 requisitos (rendimiento, compatibilidad, manejo de errores)
- Acceptance Criteria (Test Cases): 10 casos de prueba
- Edge Cases: 6 casos limite
- Output Format Example: Ejemplos de GitHub PR y GitLab MR
- Out of Scope: Funcionalidades explicitamente excluidas
- Dependencies: Dependencias
- Related Commands: Comandos relacionados
Extracto de Requisitos Clave¶
### REQ-003: Language Configuration
The command shall determine output language in the following priority order:
1. `language.commit` in `.codexspec/config.yml` (highest priority)
2. `language.output` in `.codexspec/config.yml` (fallback)
3. English (default if no configuration)
Fase 3: Revision de Especificacion (/codexspec:review-spec)¶
Resultados de Revision¶
- Estado General: OK Pasar
- Puntuacion de Calidad: 92/100
- Estado de Preparacion: Ready for Planning
Problemas Encontrados¶
Advertencias (Should Fix):
- SPEC-001: Logica de descubrimiento de archivos de prueba no especificada
- SPEC-002: Cuando hay multiples spec.md, seleccionar "modificado mas recientemente" puede ser inexacto
Sugerencias (Nice to Have):
- Considerar agregar parametro
--title - Agregar requisito de validacion de formato de salida
- Considerar soporte de patrones URL de GitHub Enterprise
Ubizacion de Guardado del Reporte de Revision¶
.codexspec/specs/001-pr-description-generator/review-spec.md
Fase 4: Clarificacion y Ajuste de Requisitos (/codexspec:clarify) - Punto de Inflexion Critico¶
Problemas Descubiertos¶
Retroalimentacion del Usuario:
Me di cuenta de que hay un problema con el uso de spec.md. Por ejemplo, el usuario esta haciendo un cambio muy pequeno, por lo que no uso el flujo estandarizado specify->plan->tasks->implement de codexspec, sino que hizo cambios directamente a traves de对话 o el plan mode integrado de claude code, y luego de completar los cambios desea llamar individualmente al comando de codexspec para generar informacion de PR conforme a estandares. En este caso, usar por defecto el spec.md modificado mas recientemente podria usar contenido de spec.md previo no relacionado con este cambio.
Proceso de Preguntas de Clarificacion¶
Q1: Estrategia de Seleccion de Spec
Contexto: Actualmente EC-004 establece "multiples spec.md -> usar el modificado mas recientemente". Pero cuando el usuario hace cambios pequenos puede no haber usado el flujo SDD, y el spec.md mas reciente puede no estar relacionado con los cambios actuales.
| Opcion | Descripcion |
|---|---|
| A | Por defecto no usar spec.md, a menos que el usuario especifique explicitamente el parametro --spec |
| B | Matching basado en nombre de rama |
| C | Solicitar al usuario que seleccione |
| D | Matching basado en cambios de archivos |
Seleccion del Usuario: Opcion A
Razon: Evitar referencias erroneas, el parametro --spec permite a usuarios que necesitan integracion SDD especificar explicitamente.
Q2: Estrategia de Extraccion de Contenido de Spec
Contexto: Cuando el usuario usa --spec, si la estructura de spec.md esta incompleta que hacer?
| Opcion | Descripcion |
|---|---|
| A | Mejor esfuerzo de extraccion, saltar partes faltantes |
| B | Advertir y saltar Context |
| C | Requerir estructura completa, sino error |
Seleccion del Usuario: Opcion A Razon: Evitar bloquear flujo de trabajo por problemas de formato de spec.
Q3: Descubrimiento de Archivos de Prueba
Contexto: Como descubrir archivos de prueba para la seccion Testing?
| Opcion | Descripcion |
|---|---|
| A | Patrones de directorios comunes (tests/, test/) |
| B | Heuristica independiente del lenguaje (directorio + patron de nombre de archivo) |
| C | No descubrir activamente, solo inferir de mensajes de commit |
Seleccion del Usuario: Opcion B Razon: Cubrir multiples estructuras de proyecto en diferentes lenguajes.
Q4: Generacion de Titulo PR
Contexto: Como deberia generarse el titulo del PR?
| Opcion | Descripcion |
|---|---|
| A | Priorizar parsing de nombre de rama |
| B | Priorizar primer mensaje de commit |
| C | Generacion integral (git diff + nombre de rama + mensaje de commit) |
Seleccion del Usuario: Opcion C Razon del Usuario: El primer commit puede ser solo una pequena parte de los cambios; el nombre de rama requiere alta disciplina de nomenclatura. Teniendo mucha informacion de git y code changes para referencia, el analisis integral es mas preciso.
Q5: Generacion de Comandos de Verificacion
Contexto: Como generar comandos de verificacion para la seccion "How to Verify"?
| Opcion | Descripcion |
|---|---|
| A | Plantilla generica |
| B | Deteccion de proyecto (pyproject.toml -> pytest, package.json -> npm test) |
| C | Inferir de mensajes de commit |
Seleccion del Usuario: Opcion B Razon: La deteccion de proyecto puede generar comandos de verificacion mas utiles.
Resumen de Sesion de Clarificacion¶
| Problema | Decision | Impacto |
|---|---|---|
| Estrategia de seleccion de Spec | Opt-in via --spec |
REQ-007, EC-004, tabla de parametros |
| Extraccion de contenido de Spec | Extraccion de mejor esfuerzo | REQ-005b, EC-004c |
| Descubrimiento de archivos de prueba | Heuristica independiente del lenguaje | REQ-006b |
| Generacion de titulo PR | Analisis integral | REQ-008a |
| Generacion de comandos de verificacion | Deteccion de archivos de proyecto | REQ-010 |
Cambio Clave: Inversion de Logica de Parametros¶
Fase 5: Plan de Implementacion Tecnica (/codexspec:spec-to-plan)¶
Resumen del Plan¶
Metodo de Implementacion: Archivo de plantilla Markdown (consistente con /codexspec:commit-staged)
Sin Nuevas Dependencias - La funcionalidad se implementa mediante plantillas de slash command, no requiere codigo Python.
Resumen de Decisiones Tecnicas¶
| Decision | Seleccion | Razon |
|---|---|---|
| Metodo de implementacion | Plantilla Markdown | Consistente con comandos existentes, facil de mantener |
| Prioridad de idioma | commit > output > en | Consistente con comando /commit-staged |
| Deteccion de plataforma | Parsing de URL remota | Simple y confiable |
| Integracion de Spec | Opt-in (--spec) |
Evitar referencias erroneas |
| Extraccion de contenido | Mejor esfuerzo | No bloquear flujo de trabajo |
| Descubrimiento de pruebas | Patron de directorio+nombre de archivo | Independiente del lenguaje |
| Generacion de titulo | Analisis integral | Mas preciso |
| Deteccion de comandos | Deteccion de archivos de proyecto | Mas util |
| Modo de salida | Terminal primero, archivo opcional | Flexible |
Fases de Implementacion¶
- Fase 1: Creacion de plantilla (YAML frontmatter, configuracion de idioma, contexto Git)
- Fase 2: Funcionalidad principal (integracion Spec, descubrimiento de pruebas, deteccion de comandos, generacion de titulo)
- Fase 3: Manejo de casos limite
- Fase 4: Pruebas
- Fase 5: Actualizacion de documentacion
Lista de Archivos¶
Crear:
templates/commands/pr.md
Modificar:
CLAUDE.md- Agregar descripcion del comandoREADME.md- Agregar comando a la lista
Pruebas:
tests/test_pr_template.py
Diagrama de Flujo Completo¶
+-------------------------------------------------------------------------+
| Flujo de Desarrollo SDD CodexSpec |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| /codexspec:specify |
| |-- Clarificar requisitos mediante Q&A |
| |-- Usuario proporciono ejemplos de referencia |
| |-- 10 preguntas, cubriendo idioma, plataforma, contenido, params |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| /codexspec:generate-spec |
| |-- Generar spec.md completo |
| |-- 4 historias de usuario, 8 requisitos funcionales, 10 casos prueba |
| |-- Guardar en .codexspec/specs/001-pr-description-generator/spec.md |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| /codexspec:review-spec |
| |-- Puntuacion de calidad: 92/100 |
| |-- Encontradas 2 advertencias (descubrimiento archivos prueba, |
| | manejo multiple specs) |
| |-- Estado: Pasar, puede entrar en fase de planificacion |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| /codexspec:clarify - Ajuste Critico |
| |-- Usuario descubrio problema de escenario de uso real |
| |-- 5 preguntas de clarificacion, todas respondidas |
| |-- Cambio clave: --no-spec -> --spec (opt-in) |
| |-- Nuevos 5 requisitos (REQ-005b, 006b, 008a, 010, actualizar 007) |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| /codexspec:spec-to-plan |
| |-- Actualizar plan de implementacion tecnica |
| |-- 9 decisiones tecnicas, incluyendo 5 nuevas |
| |-- 5 fases de implementacion |
| |-- Guardar en .codexspec/specs/001-pr-description-generator/plan.md |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| Proximos Pasos (no completados en esta sesion) |
| |-- /codexspec:review-plan - Validar calidad del plan |
| |-- /codexspec:plan-to-tasks - Descomponer en tareas ejecutables |
| |-- /codexspec:implement-tasks - Ejecutar implementacion |
+-------------------------------------------------------------------------+
Puntos Clave de Aprendizaje¶
1. Valor de la Fase de Clarificacion¶
Este caso de uso demuestra el rol critico del comando clarify:
- Usuario descubrio problemas reales durante el uso - Riesgo de uso erroneo de spec.md en escenarios de cambios pequenos
- Resuelto defectos de diseno mediante Q&A de clarificacion - Cambio de deteccion automatica a modo opt-in
- Cambios de requisitos registrados sistematicamente - Todos los cambios guardados en seccion Clarifications de spec.md
2. Flexibilidad del Flujo SDD¶
- No es un flujo lineal, puede volver a ajustar en cualquier etapa
clarifypuede insertarse despues dereview-spec, antes despec-to-plan- Documento de especificacion y plan tecnico se actualizan para reflejar cambios
3. Evolucion del Diseno de Parametros¶
Diseno inicial:
--no-spec: Saltar spec.md (usar por defecto)
Diseno final:
--spec: Habilitar spec.md (no usar por defecto)
Este cambio refleja la transicion de diseno de "flujo de trabajo SDD por defecto" a "soportar flujo de trabajo no SDD", haciendo la herramienta mas versatil.
4. Entregables de Documentacion¶
| Fase | Archivo Producido | Contenido |
|---|---|---|
| generate-spec | spec.md | Documento de especificacion completo |
| review-spec | review-spec.md | Reporte de revision de calidad |
| clarify | (actualiza spec.md) | Registro de clarificacion + actualizacion de requisitos |
| spec-to-plan | plan.md | Plan de implementacion tecnica |
Apéndice: Referencia Rapida de Uso de Comandos¶
# 1. Clarificacion de requisitos inicial
/codexspec:specify
# 2. Generar documento de especificacion
/codexspec:generate-spec
# 3. Revisar calidad de especificacion
/codexspec:review-spec
# 4. Clarificar/ajustar requisitos (opcional, usar despues de descubrir problemas)
/codexspec:clarify [descripcion del problema]
# 5. Generar plan tecnico
/codexspec:spec-to-plan
# 6. Revisar calidad del plan (opcional)
/codexspec:review-plan
# 7. Descomponer en tareas
/codexspec:plan-to-tasks
# 8. Ejecutar implementacion
/codexspec:implement-tasks
Este documento fue generado automaticamente por el flujo de trabajo SDD de CodexSpec, registrando el proceso de conversacion de desarrollo real.