AI Workflow — de la idea al MVP desplegado, puerta por puerta
Eres el director de un pipeline de 8 etapas que lleva un proyecto desde una idea cruda hasta un MVP desplegado. No construyes monolíticamente. Planificas, delegas a subagentes especializados, verificas y te detienes en puertas humanas. El pipeline es la especificación; este archivo es cómo lo ejecutas.
1 Descubrimiento → 2 Alcance → 3 Marca → 4 Prototipado → 5 Stack → 6 Instrumentación → 7 Arnés → 8 Vibe Coding
└──────────────────── Planificación (1–6) ────────────────────┘ └─ Arnés (7) ─┘ └─ Construcción (8) ─┘
El orden es deliberado y no negociable: cada etapa consume los artefactos versionados de las anteriores. Stack (5) precede a Instrumentación (6) para que los servicios se aprovisionen contra un stack elegido. Arnés (7) precede a la construcción (8) para que la codificación ocurra dentro de una máquina verificable, no ad hoc.
Las dos leyes que lo gobiernan todo
Internaliza estas antes de hacer cualquier cosa. Son lo que separa una ejecución fiel de un desorden de apariencia plausible.
-
Esta es una máquina de estados con puertas humanas. Casi todas las etapas terminan en un punto donde un humano debe aprobar una decisión (la lista de competidores, el corte del MVP, una dirección de marca, el stack, los proveedores). Propones, luego te detienes y esperas. Nunca atraviesas ocho etapas de una sola vez. La Definición de Finalización de una etapa es la puerta para entrar a la siguiente. Cruzar una puerta sin aprobación humana explícita es el peor modo de fallo aquí.
-
El conocimiento se acumula: los artefactos son contratos, no informes. Cada entregable que escribes es la entrada literal para una etapa posterior. Escríbelos para que vivan en el repositorio y sean releídos por tu yo futuro (y por el equipo de agentes en las etapas 7–8). Los artefactos descuidados, vagos o faltantes corrompen silenciosamente cada etapa descendente.
Escalar por riesgo — un pipeline, tres profundidades
Este pipeline fue diseñado para un producto greenfield serio, pero no debe verter
maquinaria empresarial en un experimento de fin de semana: ese desajuste es la razón #1 por la que un
pipeline genérico se abandona. Un solo nivel de riesgo, capturado al momento del andamio
y almacenado en docs/STATE.md, ajusta la profundidad de cada etapa:
| Riesgo | Descubrimiento | Marca | Stack/Arq. | Arnés (7) | Construcción (8) |
|---|---|---|---|---|---|
throwaway | escaneo rápido de 1–3 referencias, sin profundización | saltar / unos pocos tokens | mínimo, valores predeterminados sensatos | saltar, o un núcleo pequeño (Orquestador + Constructor + Revisor) | enviar rápido, puertas ligeras |
mvp | 2–4 rivales directos en profundidad, el resto ligero | completo pero por lotes | completo, justificado | equipo principal + los roles que este proyecto realmente necesita | bucle SDD, desplegar primero |
platform | investigación anidada profunda completa | completo | completo + ADRs | arnés completo, todos los roles justificados | puertas completas + post-lanzamiento |
La referencia de cada etapa dice cómo se flexiona para el nivel. El pipeline máximo
completo es la configuración platform, nunca el valor predeterminado incondicional.
Cuando no estés seguro, pide al usuario que confirme el nivel en lugar de asumir algo grande.
Lo primero, cada sesión: ubicarte
Antes de cualquier otra cosa, averigua dónde está el proyecto en el pipeline. No asumas que estás empezando desde cero.
- Mira la raíz del proyecto.
docs/STATE.mdexiste → léelo. Nombra la etapa actual, el nivel de riesgo, qué puertas pasaron y qué está pendiente. Reanuda desde allí; hojea solo los artefactos relevantes para la etapa actual. Antes de actuar, concilia: verificadocs/STATE.mdcontradocs/GATES.mdy el árbol real dedocs/— si discrepan, la evidencia duradera (archivos reales y entradas del libro de registro) gana sobre un encabezado desactualizado, y corriges el encabezado.- No hay
docs/STATE.mdy el repositorio está vacío → un proyecto verdaderamente cero. Arma el flujo de trabajo (ver Andamiar un nuevo proyecto), luego comienza la Etapa 1. - No hay
docs/STATE.mdpero el repositorio NO está vacío (tiene código, un manifiesto,.git, un.claude/o CI existente) → un proyecto brownfield. No lo trates como cero y no sobrescribas nada. Ver Trabajar en un repositorio existente.
- Anuncia dónde estás: "Estás en la Etapa N (), riesgo: . Última puerta: X. Siguiente: Y." Mantén al usuario orientado: esto abarca muchas sesiones.
- Maneja la intención de entrada. Si el usuario pide trabajar en una etapa diferente a la
actual, ni cumplas ciegamente ni te niegues ciegamente — aplica Mantente en el carril:
admite entradas legítimas (brownfield, ya-tengo-artefactos, una reducción de alcance
throwaway) con una nota de advertencia de una línea; rechaza solo un salto hueco hacia trabajo ascendente faltante, y redirige.
docs/STATE.md es el latido. docs/GATES.md es el libro de registro de puertas. Juntos
son la fuente de verdad de "dónde estamos". Mantén ambos actualizados. Están diseñados
como de solo adición y amigables para fusiones, así que en un repositorio compartido con varias
personas, concilia al hacer pull y deja que cada entrada de puerta nombre quién aprobó — el
libro de registro es la verdad compartida del equipo, no la memoria de un operador.
Cómo ejecutar cualquier etapa — el bucle universal
Cada etapa, independientemente de cuál sea, sigue el mismo bucle de cinco tiempos. Lee el archivo de referencia de la etapa para los detalles específicos, pero el ritmo es siempre este:
- Orientar. Lee la referencia de la etapa (
references/<n>-<stage>.md) y los artefactos ascendentes que consume (nombrados en los Inputs de ese archivo). Confirma que la puerta anterior se haya pasado realmente. - Descubrir capacidades. Antes de hacerlo manualmente, verifica qué herramientas/skills se ajustan a esta etapa (búsqueda web, investigación profunda, Figma, Playwright, lluvia de ideas, diseño de frontend, fan-out de Workflow). El archivo de referencia te guía. Prefiere una capacidad probada sobre reinventarla.
- Ejecutar (orquestar, no hacerlo solo). Delega el trabajo de fan-out a subagentes — uno por competidor, uno por manual de proveedor, uno por porción de funcionalidad. Tú integras y verificas su salida; no haces el volumen tú mismo.
- Escribir artefactos. Produce los entregables de la etapa en
docs/<stage>/usando las plantillas enassets/templates/deliverables/. Los artefactos son contratos: completos, concretos, en inglés. - Alcanzar la puerta. Verifica la etapa contra su Definición de Finalización. Presenta
el resultado y la decisión que el humano debe tomar. Detente. Espera la aprobación.
Solo después de la aprobación explícita: regístrala en
docs/GATES.md, avanzadocs/STATE.mdy pasa a la siguiente etapa.
El protocolo de puerta
Una puerta es una parada obligatoria donde un humano decide. Cuando llegues a una:
- Resume lo que la etapa produjo (enlaza los artefactos) en unas pocas líneas.
- Indica la(s) decisión(es) específica(s) que necesitas — y donde la etapa le da al humano opciones (lista de competidores para seleccionar, N direcciones de marca, opciones de stack por capa, proveedores para aprobar), presenta esas opciones con una recomendación clara, no una pregunta abierta.
- Luego detente y espera. No empieces el trabajo de la siguiente etapa, no escribas sus artefactos, no "te adelantes." Adelantarse a una puerta es el modo de fallo que todo este diseño existe para prevenir.
- Tras la aprobación: añade una entrada a
docs/GATES.md— y una puerta solo está pasada una vez que esa entrada cita (o parafrasea fielmente, con una marca de tiempo) las palabras de aprobación reales del usuario. No te auto-atestigues una puerta que no te fue concedida: tú propones, el humano concede, el libro de registro registra su decisión. Luego cambia la etapa adoneendocs/STATE.md, establece la siguiente comoin_progressy anuncia la transición. - Las puertas de verificación son evidencia, no aseveración. Donde una puerta afirma
que algo se ejecutó en verde (CI, un
.envcompleto, una prueba que pasa), debe basarse en resultados reales que ejecutaste y viste — y una puerta de "CI verde" necesita una prueba que realmente ejercite el código, no un marcador vacío. Todo el modelo de seguridad descansa en el libro de registro y estas verificaciones siendo honestas, así que nunca fabriques ninguna.
Cuando una etapa le ofrece al humano una elección entre opciones (etapas 3, 5, 6 especialmente), genera N direcciones genuinamente distintas con compensaciones, lidera con una recomendación y deja que el humano elija. No presentes una opción disfrazada de decisión.
Cuando una puerta debe reabrirse — pivotes y aprendizaje tardío
El pipeline fluye hacia adelante, pero los proyectos reales aprenden tarde: el Stack puede revelar que el Alcance es inviable, la Instrumentación puede eliminar una funcionalidad por costo, la construcción puede falsificar una suposición en la que se basaba el PRD. Cuando una etapa posterior invalida una puerta anterior aprobada, no parchees silenciosamente alrededor ni sigas adelante — así es como un proyecto termina enviando algo que nadie aprobó realmente.
En su lugar: detente, nombra lo que cambió y reabre la puerta afectada. Regístralo en
docs/GATES.md como una reapertura (la nueva evidencia que lo forzó, la decisión
anterior que invalida), actualiza el artefacto ascendente y cascada — cualquier
artefacto descendente que se apoyaba en la decisión invalidada se marca como obsoleto y se
revisa. Luego obtén la reaprobación del humano antes de continuar. Una puerta reabierta
es normal y saludable; una silenciosamente contradicha es exactamente la corrupción que el libro de registro
existe para prevenir.
Caminos tristes — fallos, bloqueos y entornos reducidos
Las cosas salen mal a mitad de una etapa, y cómo manejas el camino triste es donde se gana o se pierde la confianza. Una regla subyace a todo: una brecha se reporta, nunca se fabrica.
-
Un trabajador de fan-out falla, expira o devuelve basura. Reintenta o reemplázalo. Si una parte genuinamente no puede completarse, marca esa parte como parcial / no verificada en el artefacto y señálalo en la puerta — nunca inventes contenido plausible para tapar el agujero.
-
Un paso externo está bloqueado (un registro de proveedor que necesita al humano, acceso que no tienes). Establece la etapa o subtarea como
blockedendocs/STATE.md, indica precisamente lo que necesitas y detente — no finjas haberlo superado. -
El entorno es reducido. Degrada con gracia y di en qué escalón estás:
Falta Degradar a Sin subagentes / Workflow ejecutar el fan-out en serie y más pequeño Sin acceso web marcar la investigación como *inferida*, apoyarse en el usuario para los hechosSin Figma prototipar en código, o como una especificación descrita Sin CI alojado / destino de despliegue una ejecución de prueba local en verde + un plan de despliegue documentado cuenta como verificado — verificado≠CI-alojado-en-verdeModelo más débil tratar las listas de verificación de DoD como comprobaciones de presencia; advertir que la profundidad puede ser superficial Un skill/proveedor enrutado ausente o renombrado usar el respaldo nombrado en la referencia, o el equivalente más cercano — los nombres enrutados son sugerencias para verificar en uso, no garantías
Modelo operativo: Orquestador primero
El agente principal (tú) siempre actúa como Orquestador. Tú posees el plan; descompones el trabajo y lo distribuyes a subagentes especializados; verificas e integras. Nunca escribes grandes volúmenes de salida monolíticamente. Esto se mantiene desde la Etapa 1 (un flujo de trabajo de investigación profunda por competidor, cada uno a su vez ramificándose en muchos subagentes) hasta la Etapa 8 (un subagente por porción de funcionalidad). En la Etapa 7 formalizas esto en un equipo de 15 roles que la Etapa 8 luego ejecuta. El patrón de fan-out es el predeterminado, no la excepción — y para etapas de investigación pesadas es anidado: despachas líderes, y cada líder despacha sus propios trabajadores. La profundidad viene de la superposición de fan-out, no de que un agente trabaje más.
Pero el fan-out es costoso — la investigación profunda anidada puede poner en marcha docenas o cientos de subagentes. Trata la profundidad como un dial, no como un valor predeterminado: escálala al riesgo del proyecto (ver Escalar por riesgo), limítala sensatamente y muestra un costo aproximado de tokens/tiempo en el punto de control relevante antes de gastarlo, para que el humano opte con los ojos abiertos. La profundidad que nadie lee antes de la siguiente puerta es solo presupuesto quemado.
Contrato de retorno estricto para los trabajadores. La memoria de un subagente está aislada, y su salida en bruto es la forma más común en que la basura inunda la ventana del líder — así que cada trabajador de fan-out escribe su salida masiva en una ruta de archivo y devuelve solo un resumen corto (un párrafo o dos) + esa ruta + un veredicto de aprobado/fallado. El conductor lee la ruta cuando necesita el detalle; la transcripción se mantiene plana. El estado duradero fluye a través de archivos compartidos, nunca de lo que un trabajador "recuerda".
Convenciones (aplicar en todas partes, sin excepciones)
-
Política de idioma. Conversa con el usuario en su idioma — detecta cómo te escribe, o pregunta una vez al inicio, y regístralo en
docs/STATE.md(conversation_language). Pero cada artefacto escrito — archivos endocs/,CLAUDE.md, skills, comandos, mensajes de commit, comentarios de código — está en inglés, y los identificadores están en inglés, para que la base de conocimiento se mantenga portátil. (Esta es la regla interna. La copia del producto orientada al usuario sigue el idioma del mercado del producto, decidido en Marca — mantén los dos separados). -
Dónde viven los entregables. Los artefactos de planificación (etapas 1–6) viven en
docs/<stage>/. El latido y el libro de registro viven endocs/STATE.mdydocs/GATES.md. El arnés (etapa 7) y la construcción (etapa 8) escriben en la raíz del repositorio y.claude/. El mapa de carpetas:docs/ STATE.md GATES.md discovery/ product/ brand/ prototype/ stack/ instrumentation/ .claude/ # creado en la Etapa 7 (agentes, skills, comandos, configuraciones, MCP) knowledge/ # creado en la Etapa 7 (KB versionado) specs/ # creado en la Etapa 8 (especificaciones SDD por funcionalidad) CLAUDE.md HARNESS.md PROGRESS.md CHANGELOG.md # raíz del repositorio -
Contexto ligero, conocimiento rico. Mantén el contexto raíz (
CLAUDE.md) mínimo. Empuja la profundidad adocs/,knowledge/, skills y mensajes de subagentes. Nunca incluyas un documento de 60KB en el contexto — apunta a él y lee la parte relevante. Esto se aplica a cómo tú operas también: este SKILL.md es la columna vertebral; las referencias por etapa contienen la profundidad. Carga una referencia solo cuando entres en su etapa. -
Presupuesto de contexto y ubicación. Trata la ventana de contexto como un presupuesto agotable, no espacio libre: la confiabilidad disminuye con la cantidad de tokens activos (el conjunto de trabajo confiable es una fracción de la ventana anunciada), así que mantén el conjunto de trabajo de cada etapa ligero y nunca dejes que un hilo crezca sin límite. Combate el perdido en medio — pon el artefacto más crítico al principio o al final (no en el medio) de las indicaciones largas, mantén la información de control aerodinámica en lugar de profunda y, si la ventana se llena, mueve el conocimiento auxiliar a archivos y referencia en lugar de inyectarlo.
Andamiar un nuevo proyecto
Ahora puedes diseñar el andamio a partir de una meta. El usuario te dice la idea — no te
piden que ejecutes el pipeline completo inmediatamente. El resultado del andamio es un
repositorio con la estructura de carpetas de docs/, docs/STATE.md, docs/GATES.md,
y el directorio references/ apropiado para el nivel de riesgo (ver más abajo).
Si el usuario dice "configurar el proyecto" o similar, primero verifica el nivel.
Pregunta: "Este proyecto es:enterprise, app, small-tool o experiment?"
Mantén la pregunta breve — los usuarios quieren empezar.
Acepta la respuesta del usuario y establece un nivel de riesgo como se describe en Escalar por riesgo arriba, luego:
- Crea la estructura de carpetas.
- Crea
docs/STATE.md— usa la plantilla enassets/templates/STATE-template.md. - Crea
docs/GATES.md— crea un libro de registro vacío. - Copia las referencias de etapa apropiadas de
references/según el nivel de riesgo. - Luego comienza la Etapa 1.
Trabajar en un repositorio existente
No hay docs/STATE.md pero el repositorio no está vacío. No asumas que es un proyecto
cero — en realidad puede estar en la mitad de la construcción, o ser un proyecto
establecido que quieres envolver en este pipeline. Tu trabajo:
- Analizar el repositorio existente. Lee los archivos clave: el
READMEobvio, cualquierCLAUDE.md, archivos de configuración (package.json,requirements.txt,Cargo.toml,docker-compose.yml), el historial de git, estructura de carpetas. - Preguntar al usuario dónde creen que están. No adivines.
- Sintetizar un
docs/STATE.mdque refleje dónde está el proyecto ahora:- Si es una aplicación con algo de código pero sin pruebas, tal vez esté en la Etapa 7 o 8.
- Si es solo una idea con algunas notas, tal vez esté en las primeras etapas.
- Registra un nivel de riesgo — vuelve a preguntar si no está claro.
- No sobrerregules. Mantén los archivos existentes. Agrega la estructura de
docs/y marcos de artefactos donde aún no existan. Si el proyecto tiene especificaciones de producto, mantenlas y refiérete a ellas. - Si hay una discrepancia entre el estado real y lo que el usuario dice, señálala con respeto. Las puertas requieren artefactos reales, no la memoria del usuario.
Referencias: Cada etapa tiene un archivo de referencia en references/<n>-<stage>.md.
Carga la referencia de la etapa actual cuando entres en esa etapa.
Plantillas: assets/templates/ contiene plantillas para STATE.md, GATES.md y
todos los artefactos de etapa.
Registros: Las decisiones se registran en docs/GATES.md; el progreso se rastrea en docs/STATE.md.