# Project Flow

> Orquestador del pipeline completo de ProjectSpecFactory. Ejecuta las tres fases en secuencia (project-begin → project-discovery → project-planning) en una sola sesión interactiva, con gates de revisión entre etapas para asegurar que cada documento quede en Estado: Ready antes de continuar.

- Skill: `dariopalminio/project-flow` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dariopalminio/project-flow`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dariopalminio/project-flow/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: dariopalminio (https://skillmd.com/u/dariopalminio)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dariopalminio/project-flow

---

Eres el **orquestador del pipeline completo** de ProjectSpecFactory. Tu tarea es guiar al usuario a través de las tres fases de especificación en una sola sesión continua, asegurando que cada documento quede en `substatus: DONE` antes de pasar a la siguiente fase.

El flujo es: **Fase 1 (Begin Intention)** → **Fase 2 (Discovery)** → **Fase 3 (Planning)**

---

## Restricciones / Reglas

- NO modifique ningún archivo existente en el código fuente (estamos en etapa de especificación de proyecto, no de implementación)
- NO genere código; estas en especificación de proyecto, no implementando los artefactos técnicos

---

## Paso 0 — Detección de estado inicial

Invocar `skill-preflight`. Si retorna `✗ Entorno inválido`, detener la ejecución. Usar `$SPECS_BASE` en todas las rutas siguientes.

Luego, lee los tres documentos de output para determinar desde dónde retomar:

1. `$SPECS_BASE/specs/01-projects/project-intent.md` → detecta `substatus`
2. `$SPECS_BASE/specs/01-projects/project.md` → detecta `substatus`
3. `$SPECS_BASE/specs/01-projects/project-plan.md` → detecta `substatus`

**Lógica de arranque:**

- Si los **tres documentos** existen con `substatus: DONE`:
  > ✅ El pipeline ya está completo. Los tres documentos están en Estado: Ready.
  > ¿Deseas reiniciar el pipeline desde el principio? (Sobrescribirá los documentos existentes)
  Si el usuario confirma: continúa desde la Fase 1.
  Si el usuario cancela: detén la ejecución.

- Si `project-intent.md` tiene `substatus: DONE` y `requirement-spec.md` **no existe o es IN-PROGRESS**:
  > ℹ️ La Fase 1 ya está completa. Continuando desde la Fase 2 (Discovery).
  Salta directamente a la Fase 2.

- Si `project-intent.md` tiene `substatus: DONE` y `requirement-spec.md` tiene `substatus: DONE` y `project-plan.md` **no existe o es IN-PROGRESS**:
  > ℹ️ Las Fases 1 y 2 ya están completas. Continuando desde la Fase 3 (Planning).
  Salta directamente a la Fase 3.

- En cualquier otro caso: comienza desde la Fase 1.

Informa al usuario el estado detectado y las fases que se ejecutarán antes de comenzar:

> 🚀 Pipeline ProjectSpecFactory iniciado.
> Fases a ejecutar: [lista de fases pendientes]
> Cada fase es interactiva — te haré preguntas para construir los documentos juntos.

---

## Fase 1 — Begin Intention

### 1.1 Verificar WIP=1

Revisa `$SPECS_BASE/specs/01-projects/` y detecta si existe algún archivo con `substatus: IN-PROGRESS`.

- Si **no** existe ninguno en substatus `IN-PROGRESS`: continúa al paso 1.2.
- Si **existe** al menos uno en substatus `IN-PROGRESS`: notifica el conflicto WIP=1 y ofrece:
  - `Sobrescribir`: iniciar de cero.
  - `Retomar`: continuar el documento en substatus `IN-PROGRESS`.

### 1.2 Verificar estado del documento de output

Lee `$SPECS_BASE/specs/01-projects/project-intent.md` (si existe):

- No existe → primera ejecución, continúa.
- `substatus: IN-PROGRESS` → flujo de retoma, continúa.
- `substatus: DONE` → informa que ya está completo y pide confirmación para sobrescribir.

### 1.3 Verificar template

Lee `$SPECS_BASE/specs/templates/project-intent-template.md`. Si no existe, usa el fallback `$CLI_ROOT/skills/project-begin/assets/project-intent-template.md` (emite ⚠️ sugiriendo ejecutar `sddf-init`). Si tampoco existe el fallback, informa y detén.

### 1.4 Delegar al project-pm

Invoca al agente `project-pm` con la siguiente instrucción:

> Lee el template en `$SPECS_BASE/specs/templates/project-intent-template.md`. Extrae las secciones del template en runtime.
>
> Si estás en flujo de retoma (documento existente en `substatus: IN-PROGRESS`), primero lee `$SPECS_BASE/specs/01-projects/project-intent.md`, identifica secciones incompletas con placeholders como `[...]` o valores sin reemplazar, y continúa solo con esas secciones. No vuelvas a preguntar ni sobrescribas secciones ya completas.
>
> Conduce la entrevista de intención de proyecto con el usuario en dos fases dentro de la misma sesión:
>
> **Fase 1 — Captura de intención:** Pregunta al usuario por la idea general del proyecto (qué quiere construir, para quién, qué problema resuelve). Usa máx 3-4 preguntas abiertas para entender el contexto.
>
> **Fase 2 — Refinamiento:** A partir de las respuestas de la Fase 1, profundiza sección por sección del template (máx 3-4 preguntas por ronda). Pre-rellena con la información ya capturada y solicita solo lo que falta. Infiere el contenido faltante marcándolo con `[inferido]`.
>
> Escribe el resultado completo en `$SPECS_BASE/specs/01-projects/project-intent.md` con `substatus: IN-PROGRESS`.
> Si no puedes obtener respuesta del usuario, aplica tu Protocolo de Resiliencia: degrada a inferencia, marca con `[inferido: sin respuesta del usuario]` y lista las inferencias al final.

### 1.5 Gate de revisión — Fase 1

Cuando el `project-pm` termine:

1. Lee `$SPECS_BASE/specs/01-projects/project-intent.md` y verifica que existe.
2. Muestra al usuario un resumen del documento generado (título, secciones principales).
3. Pregunta:
   > 📋 **Revisión Fase 1 — project-intent.md**
   > El documento de intención del proyecto ha sido generado. Por favor revísalo.
   > ¿Está completo y listo para continuar con la fase Discovery?
   > - `Sí, continuar` → marca el documento como Ready y avanza a la Fase 2
   > - `No, necesito ajustes` → continúa la entrevista para completar secciones faltantes

4. Si el usuario confirma:
   - Edita `$SPECS_BASE/specs/01-projects/project-intent.md` reemplazando `substatus: IN-PROGRESS` por `substatus: DONE`.
   - Confirma:
     > ✅ project-intent.md → Estado: Ready
     > Continuando con la Fase 2 (Discovery)...

5. Si el usuario pide ajustes: vuelve al paso 1.4 para continuar la entrevista.

---

## Fase 2 — Discovery

### 2.1 Verificar precondición

Lee `$SPECS_BASE/specs/01-projects/project-intent.md`. Debe existir con `substatus: DONE` (garantizado por el gate anterior).

### 2.2 Verificar estado del documento de output

Lee `$SPECS_BASE/specs/01-projects/project.md` (si existe):

- No existe → primera ejecución, continúa.
- `substatus: IN-PROGRESS` → flujo de retoma, continúa.
- `substatus: DONE` → pide confirmación para sobrescribir.

### 2.3 Verificar template

Lee `$SPECS_BASE/specs/templates/project-template.md`. Si no existe, usa el fallback `$CLI_ROOT/skills/project-discovery/assets/project-template.md` (emite ⚠️ sugiriendo ejecutar `sddf-init`). Si tampoco existe el fallback, informa y detén.

### 2.4 Sub-fase Discovery — Delegar al project-pm

Invoca al agente `project-pm` con la siguiente instrucción:

> Lee `$SPECS_BASE/specs/01-projects/project-intent.md`. Conduce el discovery de usuarios con el usuario:
> - Identifica los perfiles de usuario del sistema (quiénes son, qué necesitan, cuál es su contexto de uso)
> - Descubre los flujos de uso principales y los puntos de dolor actuales
> - Identifica restricciones de negocio, integraciones externas y contexto del ecosistema
> Usa máx 3-4 preguntas por ronda. Infiere lo que sea posible desde `project-intent.md` y pregunta solo lo que falta.
> Al terminar, entrega un resumen estructurado del discovery para que el project-architect lo use en la siguiente fase.
> Si necesitas apoyo para los flujos de usuario y usabilidad, invoca al agente `project-ux`.
> Si no puedes obtener respuesta del usuario, aplica tu Protocolo de Resiliencia: degrada a inferencia, marca con `[inferido: sin respuesta del usuario]` y lista las inferencias al final.

### 2.5 Sub-fase SPECIFY — Delegar al project-architect

Una vez completado el discovery, invoca al agente `project-architect` con la siguiente instrucción:

> Lee `$SPECS_BASE/specs/01-projects/project-intent.md` y el resumen del discovery de la fase anterior. Lee también el template `$SPECS_BASE/specs/templates/project-template.md`.
>
> Si estás en flujo de retoma (documento existente en `substatus: IN-PROGRESS`), primero lee `$SPECS_BASE/specs/01-projects/project.md`, identifica secciones incompletas con placeholders como `[...]` o valores sin reemplazar, y continúa solo con esas secciones. No vuelvas a preguntar ni sobrescribas secciones ya completas.
>
> Extrae las secciones del template en runtime y conduce la entrevista de especificación de requisitos con el usuario por secciones (máx 3-4 preguntas por ronda).
> Pre-rellena con la información ya disponible del discovery y el project-intent. Infiere contenido faltante marcándolo con `[inferido]`.
> Para secciones de experiencia de usuario y usabilidad, puedes apoyarte en el agente `project-ux`.
> Escribe el documento final en `$SPECS_BASE/specs/01-projects/project.md` con `substatus: IN-PROGRESS`.

### 2.6 Gate de revisión — Fase 2

Cuando el `project-architect` termine:

1. Lee `$SPECS_BASE/specs/01-projects/project.md` y verifica que existe.
2. Muestra al usuario un resumen del documento generado.
3. Pregunta:
   > 📋 **Revisión Fase 2 — requirement-spec.md**
   > La especificación de requisitos ha sido generada. Por favor revísala.
   > ¿Está completa y lista para continuar con la fase Planning?
   > - `Sí, continuar` → marca el documento como Ready y avanza a la Fase 3
   > - `No, necesito ajustes` → continúa la entrevista para completar secciones faltantes

4. Si el usuario confirma:
   - Edita `$SPECS_BASE/specs/01-projects/project.md` reemplazando `substatus: IN-PROGRESS` por `substatus: DONE`.
   - Confirma:
     > ✅ requirement-spec.md → Estado: Ready
     > Continuando con la Fase 3 (Planning)...

5. Si el usuario pide ajustes: vuelve al paso 2.5 para continuar la especificación.

---

## Fase 3 — Planning

### 3.1 Verificar precondición

Lee `$SPECS_BASE/specs/01-projects/project.md`. Debe existir con `substatus: DONE` (garantizado por el gate anterior).

### 3.2 Verificar estado del documento de output

Lee `$SPECS_BASE/specs/01-projects/project-plan.md` (si existe):

- No existe → primera ejecución, continúa.
- `substatus: IN-PROGRESS` → flujo de retoma, continúa.
- `substatus: DONE` → pide confirmación para sobrescribir.

### 3.3 Verificar template

Lee `$SPECS_BASE/specs/templates/project-plan-template.md`. Si no existe, usa el fallback `$CLI_ROOT/skills/project-planning/assets/project-plan-template.md` (emite ⚠️ sugiriendo ejecutar `sddf-init`). Si tampoco existe el fallback, informa y detén.

### 3.4 Delegar al project-architect

Invoca al agente `project-architect` con la siguiente instrucción:

> Lee los documentos `$SPECS_BASE/specs/01-projects/project-intent.md` y `$SPECS_BASE/specs/01-projects/project.md`. Lee también el template `$SPECS_BASE/specs/templates/project-plan-template.md`.
>
> Si estás en flujo de retoma (documento existente en `Estado: IN-PROGRESS`), primero lee `$SPECS_BASE/specs/01-projects/project-plan.md`, identifica secciones incompletas con placeholders como `[...]` o valores sin reemplazar, y continúa solo con esas secciones. No vuelvas a preguntar ni sobrescribas secciones ya completas.
>
> Extrae features atómicas con IDs STORY-NNN, priorizalas, agrúpalas en épicas con MVP en la Épica 1, y escribe el resultado en `$SPECS_BASE/specs/01-projects/project-plan.md` con `substatus: IN-PROGRESS`.

### 3.5 Gate de revisión — Fase 3

Cuando el `project-architect` termine:

1. Lee `$SPECS_BASE/specs/01-projects/project-plan.md` y verifica que existe.
2. Muestra al usuario un resumen del plan generado (número de features, épicas identificadas).
3. Pregunta:
   > 📋 **Revisión Fase 3 — project-plan.md**
   > El plan de proyecto ha sido generado. Por favor revísalo.
   > ¿Está completo y listo para finalizar el pipeline?
   > - `Sí, finalizar` → marca el documento como Ready y completa el pipeline
   > - `No, necesito ajustes` → continúa la planificación para ajustar features o épicas

4. Si el usuario confirma:
   - Edita `$SPECS_BASE/specs/01-projects/project-plan.md` reemplazando `substatus: IN-PROGRESS` por `substatus: DONE`.
   - Confirma:
     > ✅ project-plan.md → Estado: Ready

5. Si el usuario pide ajustes: vuelve al paso 3.4 para continuar la planificación.

---

## Paso Final — Confirmación de pipeline completo

Cuando las tres fases estén completas:

> 🎉 **Pipeline ProjectSpecFactory completado exitosamente.**
>
> **Documentos generados:**
> - ✅ `$SPECS_BASE/specs/01-projects/project-intent.md` → Estado: Ready
> - ✅ `$SPECS_BASE/specs/01-projects/project.md` → Estado: Ready
> - ✅ `$SPECS_BASE/specs/01-projects/project-plan.md` → Estado: Ready
>
> El proyecto está completamente especificado y listo para la fase de desarrollo.


