El flujo¶
Nueve fases. Siete forman el camino de una entrega, con fix como el camino
corto para un defecto; dos son transversales. Cada fase tiene una palabra, y
esa palabra es el comando del CLI, el fichero de workflow y el skill. Invocas
una fase con su skill; el skill ejecuta el comando de la fase; el comando se
niega mientras falte un paso obligatorio y, si no, imprime el workflow, las
reglas y el contexto. La entrega guiada sigue un cambio a través
de cada paso, con los comandos y los ficheros que escribe cada uno.
flowchart TB
subgraph delivery [Una entrega]
direction LR
E[explore] --> S[spec] --> P[plan] --> B[build] --> R[review] --> D[deliver]
end
C[contract] -. reglas comprobadas en plan, build y review .-> delivery
K[curate] -. mantiene pequeños el overview, el glosario y las specs .-> delivery
| Fase | Dile a tu cliente | Produce | Quién decide |
|---|---|---|---|
| explore | /atipspec-explore <slug>: <idea> |
brief.md |
tú: haz la spec, acótala o descártala |
| spec | /atipspec-spec <slug>: <what you want> |
escenarios en specs/<capability>.md, el spec.md de la entrega |
tú apruebas la propuesta, con el plan. Punto de parada 1 |
| fix | /atipspec-fix <slug>: <the defect> |
el requisito aceptado que rompe, corregido, y un plan de una tarea | tú apruebas la propuesta. Punto de parada 1 |
| plan | /atipspec-plan <slug> |
plan.md: alcance, enfoque, tareas, verificación final |
parte de la propuesta |
| build | /atipspec-build <slug> |
código y tests, registros de task-done, evidencia |
el desarrollador con el modelo |
| review | /atipspec-review <slug> |
review.md por el revisor |
atipspec check |
| deliver | /atipspec-deliver <slug> |
tu aceptación del resultado, spec viva actualizada, carpeta archivada | tú aceptas el resultado. Punto de parada 2 |
| contract | /atipspec-contract |
contract.md, decisiones |
tú apruebas, una vez por proyecto |
| curate | /atipspec-curate |
overview.md, glossary.md |
el modelo, dentro de los topes |
Qué requiere cada fase¶
El comando de la fase comprueba esto antes de imprimir nada. Cuando falta algo, termina con código 1 y una sola línea que nombra el paso y quién lo resuelve.
| Comando | Requiere |
|---|---|
atipspec explore <slug> |
que la entrega exista (atipspec new) |
atipspec spec <slug> |
entregas guiadas: nada (check avisa mientras el contrato no esté aceptado); entregas antiguas: la aceptación del contrato registrada para su contenido y sus decisiones actuales (atipspec accept contract --code <code>) |
atipspec fix <slug> |
que la entrega se haya creado con --kind fix; en un fix creado antes de 0.3.0, también la aceptación del contrato registrada para su contenido actual |
atipspec plan <slug> |
entregas guiadas: escenarios completos sin un hallazgo de especificación bloqueante (los hallazgos estrictos bloquean con strict_criteria: true), una intención declarada, las secciones de fuera de alcance y de calidad decididas (en un fix, su defecto declarado y los requisitos que corrige listados) y ninguna pregunta abierta; entregas antiguas: la spec aceptada para su contenido actual (atipspec accept <slug> spec --code <code>) |
atipspec build <slug> |
entregas guiadas: la propuesta actual aceptada (atipspec accept <slug> proposal --code <code>); entregas antiguas: un plan con tareas y sin errores de plan, aceptado con atipspec accept <slug> plan --code <code> cuando approve_plan está activado. Nombra la siguiente tarea |
atipspec review <slug> |
cada tarea registrada con task-done (o, en una entrega antigua, con un marcador en un commit), la evidencia fresca, ninguna violación del contrato y revisiones disponibles (review_rounds, contando la primera); solo entonces escribe el paquete |
atipspec deliver <slug> |
la puerta en verde y tu aceptación del resultado actual registrada (atipspec accept <slug> result --code <code>); con una policy de confianza, la puerta de confianza en verified |
atipspec contract, atipspec curate |
nada |
atipspec ship <slug> |
que la entrega exista; imprime la siguiente fase a la que entrar |
Modo ship¶
atipspec ship <slug> nombra la siguiente fase a la que la entrega puede
entrar; el modelo entra en ella, la termina y vuelve a preguntar. Ejecuta
plan, build, review y deliver sin pausar, salvo en los dos puntos de parada,
ante un cambio material del acuerdo aprobado, ante un bloqueo y ante
preguntas que cambian la spec (y, en una entrega antigua, en la aprobación
del plan cuando approve_plan está activado). Termina con un único informe:
qué cambió, la evidencia, el resultado de la revisión, los elementos
aplazados, la siguiente acción. Para la ejecución desatendida mediante un
proceso configurado, consulta el adaptador de
ejecución.
Riesgo¶
Cada entrega guiada declara risk: low, normal o high en su spec.md, y
lo apruebas con la propuesta, que muestra lo que el nivel exige a la puerta.
normal exige un veredicto del revisor para cada criterio. low permite que
un criterio cuyo test nombrado pasó quede sin veredicto, y no puede eliminar
un requisito ni cambiar el contrato. high exige un alcance declarado, un
test nombrado con un informe JUnit para cada criterio automatizado y una
revisión desde una sesión aislada. El nivel no añade ni quita ninguna
aprobación; cambiarlo después de la aprobación anula esa aprobación. Consulta
riesgo.
Puntos de parada¶
Punto de parada 1: la propuesta
Nada se construye hasta que apruebas la propuesta: escenarios, enfoque,
pruebas y riesgo juntos (la spec, en una entrega antigua). Apruebas en
la conversación; el asistente lo registra con
atipspec accept <slug> proposal --code <code>, con el código que te
mostró atipspec proposal <slug>. Claude Code, configurado por init y
abierto en la raíz del proyecto, te pregunta antes de que ese comando se
ejecute, y el registro indica ese canal. El comando pone status: ready y registra lo que aceptaste.
Aquí es donde una idea equivocada cuesta menos.
Punto de parada 2: el resultado
Nada se archiva hasta que aceptas el resultado revisado. El asistente
presenta atipspec report <slug>: cada criterio con su evidencia y su
veredicto, y cada fichero cambiado con el diff. Aceptas en la
conversación; el asistente lo registra con
atipspec accept <slug> result --code <code>, y entonces deliver
actualiza la spec viva y archiva la entrega en su branch. El commit, el
push y la fusión siguen la política de tu repositorio:
atipspec merge-check --base <target> confirma que cada entrega que toca
la branch está aceptada y que su código sigue siendo el código aceptado.
AtipSpec nunca hace push ni fusiona.
Roles¶
La fase determina lo que hace el modelo, no tú: el comando de la fase
imprime la fase que abre («Phase spec: Password reset (password-reset)»).
Los workflows de explore, fix, contract y curate empiezan con el rol que el
modelo adopta en ellos. Las fases guiadas, en cambio, describen el trabajo,
y los seis roles guiados (guía, analista, diseñador, tester, implementador y
revisor) son instrucciones que imprime atipspec context --role y que envía
el ejecutor de procesos; risk los ajusta.