@dforce2055/dai 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/.env.example +30 -0
  2. package/CHANGELOG.md +46 -0
  3. package/CODE_OF_CONDUCT.md +37 -0
  4. package/CONTRIBUTING.md +66 -0
  5. package/LICENSE +674 -0
  6. package/README.md +288 -0
  7. package/SECURITY.md +37 -0
  8. package/VERSION +1 -0
  9. package/cli/dai.mjs +692 -0
  10. package/cli/lib/ac-hash.mjs +74 -0
  11. package/cli/lib/args.mjs +23 -0
  12. package/cli/lib/bootstrap.mjs +74 -0
  13. package/cli/lib/env.mjs +23 -0
  14. package/cli/lib/forge-api.mjs +96 -0
  15. package/cli/lib/forge-url.mjs +61 -0
  16. package/cli/lib/fsutil.mjs +24 -0
  17. package/cli/lib/implements.mjs +94 -0
  18. package/cli/lib/link-us.mjs +59 -0
  19. package/cli/lib/pm-adapter.mjs +59 -0
  20. package/cli/lib/pm-clickup.mjs +54 -0
  21. package/cli/lib/pm-jira.mjs +123 -0
  22. package/cli/lib/pr.mjs +53 -0
  23. package/cli/lib/us.mjs +36 -0
  24. package/docs/EJEMPLO-END-TO-END.md +330 -0
  25. package/docs/MANIFIESTO.md +114 -0
  26. package/docs/METODOLOGIA.md +254 -0
  27. package/docs/PROBAR.md +91 -0
  28. package/docs/SCRUM-CON-IA.md +190 -0
  29. package/docs/adr/0001-contrato-ac-hash.md +86 -0
  30. package/docs/adr/0002-agnostico-del-asistente.md +87 -0
  31. package/docs/adr/0003-deteccion-y-estampado-son-comandos.md +73 -0
  32. package/docs/adr/0004-ubicacion-y-schema-implements.md +94 -0
  33. package/docs/adr/0005-superficie-comandos-y-stamp.md +65 -0
  34. package/docs/adr/0006-distribucion-y-licencia.md +59 -0
  35. package/docs/adr/0007-modelo-de-autenticacion.md +63 -0
  36. package/docs/adr/README.md +19 -0
  37. package/docs/detalle/01-refinamiento.md +33 -0
  38. package/docs/detalle/02-planning.md +27 -0
  39. package/docs/detalle/03-ramas.md +32 -0
  40. package/docs/detalle/04-tdd.md +35 -0
  41. package/docs/detalle/05-smoke.md +32 -0
  42. package/docs/detalle/06-code-review.md +34 -0
  43. package/docs/detalle/07-merge-trazabilidad.md +33 -0
  44. package/docs/detalle/08-daily.md +29 -0
  45. package/docs/detalle/09-review.md +25 -0
  46. package/docs/detalle/10-retro.md +27 -0
  47. package/docs/detalle/README.md +20 -0
  48. package/docs/glosario.md +79 -0
  49. package/docs/guias/dev.md +66 -0
  50. package/docs/guias/lead.md +53 -0
  51. package/docs/guias/po.md +50 -0
  52. package/governance/branch-naming.md +36 -0
  53. package/governance/ci-rules.md +57 -0
  54. package/governance/commit-convention.md +76 -0
  55. package/index.html +479 -0
  56. package/install.sh +19 -0
  57. package/manifest.yaml +76 -0
  58. package/package.json +55 -0
  59. package/skills/dai-review/SKILL.md +78 -0
  60. package/skills/doc-to-backlog/SKILL.md +70 -0
  61. package/skills/doc-to-backlog/templates/backlog-candidato.md +49 -0
  62. package/skills/grill-epic/SKILL.md +76 -0
  63. package/skills/grill-intent/SKILL.md +43 -0
  64. package/skills/grill-intent/templates/intent.md +36 -0
  65. package/skills/grill-user-story/SKILL.md +76 -0
  66. package/skills/grill-user-story/templates/user-story.md +61 -0
  67. package/skills/link-us/SKILL.md +42 -0
  68. package/skills/link-us/templates/implements.yaml +16 -0
  69. package/skills/tdd/SKILL.md +109 -0
  70. package/skills/tdd/deep-modules.md +33 -0
  71. package/skills/tdd/interface-design.md +31 -0
  72. package/skills/tdd/mocking.md +59 -0
  73. package/skills/tdd/refactoring.md +10 -0
  74. package/skills/tdd/tests.md +61 -0
  75. package/templates/adr.md +43 -0
  76. package/templates/commit-msg +48 -0
  77. package/templates/definition-of-done.md +50 -0
  78. package/templates/definition-of-ready.md +51 -0
  79. package/templates/epica.md +62 -0
  80. package/templates/formato-us.md +129 -0
  81. package/templates/pull-request.md +62 -0
@@ -0,0 +1,34 @@
1
+ # Paso 6 — Code review: el dev primero, después un partner
2
+
3
+ ← vuelve a [`SCRUM-CON-IA.md`](../SCRUM-CON-IA.md)
4
+
5
+ ## En qué consiste en detalle
6
+
7
+ Dos revisiones distintas:
8
+
9
+ 1. **El dev revisa su propia implementación** — la que produjo la IA, minucioso y con
10
+ criterio (correctitud, casos borde, seguridad, calidad). Es responsable del código, no
11
+ la IA (anti vibe-coding). Recién con eso en orden, y todo **commiteado**, crea la PR.
12
+ 2. **Un partner revisa la PR** y **firma** aprobación/rechazo. Se apoya en la skill
13
+ `dai-review` para un primer pase consciente de la metodología: corre `dai check` (¿la US
14
+ quedó atrasada?), valida el DoD, revisa el código (🔴 errores / 🟡 mejoras / ✅ bien) y
15
+ deja un **comentario estándar** en la PR/MR — le saca el ruido para que firme lo que importa.
16
+
17
+ ## Herramientas
18
+
19
+ - Skill [`dai-review`](../../skills/dai-review/SKILL.md) — GitHub y GitLab, postea por
20
+ MCP del forge o por `dai forge comment` (token).
21
+ - `dai check` ([ADR-0003](../adr/0003-deteccion-y-estampado-son-comandos.md)).
22
+ - Gate de cierre: [`definition-of-done.md`](../../templates/definition-of-done.md).
23
+
24
+ ## Qué firma el humano
25
+
26
+ El **partner aprueba o rechaza** ([Art. 5](../MANIFIESTO.md#art-5)). La IA comenta y sugiere; **nunca** firma
27
+ la aprobación.
28
+
29
+ ## Antipatrones
30
+
31
+ - **Rubber-stamp** ("LGTM" sin leer) → el review deja de valer.
32
+ - **Que la IA "apruebe"** → prohibido; aprueba una persona.
33
+ - **Hallazgos abstractos** ("mejorar la calidad") → sin archivo:línea, no es accionable.
34
+ - **Aprobar con `dai check` en ⚠️ atrasado** → se implementó una versión vieja del QUÉ.
@@ -0,0 +1,33 @@
1
+ # Paso 7 — Merge: la trazabilidad se estampa sola
2
+
3
+ ← vuelve a [`SCRUM-CON-IA.md`](../SCRUM-CON-IA.md)
4
+
5
+ ## En qué consiste en detalle
6
+
7
+ Al mergear se corre `dai stamp` (el dev en modo distribuido, o el CI si está
8
+ automatizado — [ADR-0003](../adr/0003-deteccion-y-estampado-son-comandos.md)). Lee el
9
+ `implements.yaml`, compara el hash estampado contra la US viva, y **escribe la
10
+ cobertura inversa** en el tracker: qué repo/change implementa la US, contra qué
11
+ versión, con estado ✅/⚠️ y links (branch + commit-ancla).
12
+
13
+ ```bash
14
+ dai check # ¿estoy atrasado respecto de la US? (read-only, gate de PR)
15
+ dai stamp # escribe la cobertura en el tracker (branch + commit)
16
+ ```
17
+
18
+ ## Herramientas
19
+
20
+ - `dai check` / `dai stamp` — mismos comandos los corra un humano o el CI.
21
+ - Contenido del stamp: [ADR-0005](../adr/0005-superficie-comandos-y-stamp.md).
22
+
23
+ ## Qué firma el humano
24
+
25
+ **Nadie mantiene la matriz a mano** — ese es el punto ([Art. 10](../MANIFIESTO.md#art-10)). El humano a lo sumo
26
+ *dispara* `dai stamp`; el contenido lo deriva la máquina.
27
+
28
+ ## Antipatrones
29
+
30
+ - **Actualizar el estado del ticket a mano** → desincronización garantizada.
31
+ - **Escribir el link en los dos lados** → se desincroniza al primer cambio (Art. 9).
32
+ - **Guardar solo la branch en el stamp** → 404 al borrarse; va con commit-ancla.
33
+ - **Creer que hace falta "un CI en Jira"** → es un comando; el tracker no ejecuta nada.
@@ -0,0 +1,29 @@
1
+ # Paso 8 — Daily standup (humano, a propósito)
2
+
3
+ ← vuelve a [`SCRUM-CON-IA.md`](../SCRUM-CON-IA.md)
4
+
5
+ ## En qué consiste en detalle
6
+
7
+ 15 minutos: qué hice, qué voy a hacer, qué me traba. Es **sincronización**, no
8
+ reporte de estado. Se hace **a mano, sin IA, a propósito**.
9
+
10
+ ## Por qué no metemos IA acá
11
+
12
+ La IA *podría* auto-generar el "qué se hizo" desde git + el tracker. **No lo hacemos**:
13
+ el daily es donde el equipo se **apropia** del proceso, lo entiende y se coordina de
14
+ verdad. Automatizarlo le sacaría al equipo la propiedad del ritual ([Art. 6](../MANIFIESTO.md#art-6)).
15
+
16
+ ## Qué firma el humano
17
+
18
+ Todo. La conversación *es* el valor.
19
+
20
+ ## Dónde sí ayuda la máquina (sin reemplazar el ritual)
21
+
22
+ Si alguien quiere datos frescos para el daily, `dai ls` / `dai check` muestran en qué
23
+ está cada quien y qué quedó atrasado — como **insumo**, no como reemplazo de la charla.
24
+
25
+ ## Antipatrones
26
+
27
+ - **Convertirlo en reporte** hacia arriba → deja de ser sincronización.
28
+ - **Automatizar el "qué hice"** → mata la apropiación (por eso es HITL).
29
+ - **Que dure 40 minutos** → no es la reunión de diseño; para eso, otro espacio.
@@ -0,0 +1,25 @@
1
+ # Paso 9 — Sprint Review / Demo
2
+
3
+ ← vuelve a [`SCRUM-CON-IA.md`](../SCRUM-CON-IA.md)
4
+
5
+ ## En qué consiste en detalle
6
+
7
+ Se muestra lo terminado al PO y stakeholders. La aceptación es **contra los criterios
8
+ de aceptación de la US** — que ya eran tests (paso 4). Si el QUÉ evolucionó mientras
9
+ tanto, el `@version` lo gritó antes (`dai check` en ⚠️), así que **no hay sorpresas**
10
+ del tipo "esto no era lo que pide".
11
+
12
+ ## Herramientas
13
+
14
+ - Los criterios Gherkin de la US como guion de la demo.
15
+ - `dai check` para confirmar que lo demostrado está **al día** con la US vigente.
16
+
17
+ ## Qué firma el humano
18
+
19
+ El **PO acepta o rechaza** ([Art. 5](../MANIFIESTO.md#art-5)). La demo la corre una persona.
20
+
21
+ ## Antipatrones
22
+
23
+ - **Demostrar contra una US atrasada** → aceptas algo que ya no es lo pedido.
24
+ - **Criterios que no eran tests** → la demo se vuelve subjetiva ("a mí me anda").
25
+ - **Descubrir el desajuste en la demo** → tenía que haber saltado con `dai check` antes.
@@ -0,0 +1,27 @@
1
+ # Paso 10 — Retrospective (humano, con datos)
2
+
3
+ ← vuelve a [`SCRUM-CON-IA.md`](../SCRUM-CON-IA.md)
4
+
5
+ ## En qué consiste en detalle
6
+
7
+ El equipo mira **cómo trabajó** (no el producto) y elige **1–2 mejoras** para el
8
+ próximo sprint. Es un ritual **humano**. Lo que aporta la máquina son **datos**, no
9
+ conclusiones.
10
+
11
+ ## Dónde ayuda la máquina
12
+
13
+ La matriz de trazabilidad y las métricas de las US dan evidencia real de dónde se
14
+ trabó el flujo: US que quedaron atrasadas seguido, pasos que siempre se hacen a mano,
15
+ smokes que faltan. `dai ls` / `dai check` sobre los repos son un buen insumo.
16
+
17
+ ## Qué firma el humano
18
+
19
+ Todo el análisis y las decisiones de mejora. La IA no propone la mejora; el equipo la
20
+ decide con los datos a la vista ([Art. 6](../MANIFIESTO.md#art-6)).
21
+
22
+ ## Antipatrones
23
+
24
+ - **Mejorar "la sensación"** sin datos → la matriz existe justo para evitar eso.
25
+ - **Automatizar la retro** → es humana, como el daily.
26
+ - **Salir con 10 acciones** → 1–2 mejoras reales valen más que una lista que nadie hace.
27
+ - **No cerrar el loop** → la mejora del sprint pasado debería verse en los datos de este.
@@ -0,0 +1,20 @@
1
+ # Detalle por paso — la ceremonia con IA, ampliada
2
+
3
+ El zoom de cada uno de los 10 pasos de [`SCRUM-CON-IA.md`](../SCRUM-CON-IA.md). Cada
4
+ archivo: en qué consiste en detalle, la herramienta con ejemplos, qué firma la persona (HITL) y
5
+ los antipatrones a evitar.
6
+
7
+ | # | Paso | IA |
8
+ |---|---|---|
9
+ | [01](01-refinamiento.md) | Refinamiento (idea → US testeable) | ●●● |
10
+ | [02](02-planning.md) | Planning (derivar el CÓMO) | ●● |
11
+ | [03](03-ramas.md) | Rama ligada al QUÉ | ●●● |
12
+ | [04](04-tdd.md) | TDD (test primero) | ●●● |
13
+ | [05](05-smoke.md) | Smoke end-to-end | ●● |
14
+ | [06](06-code-review.md) | Code review (IA + partner) | ●● |
15
+ | [07](07-merge-trazabilidad.md) | Merge + trazabilidad | ●●● |
16
+ | [08](08-daily.md) | Daily (**humano**) | ○ |
17
+ | [09](09-review.md) | Review / Demo | ● |
18
+ | [10](10-retro.md) | Retro (**humano**) | ○ |
19
+
20
+ `●●● = la IA hace el trabajo pesado` · `○ = humano puro (HITL)`
@@ -0,0 +1,79 @@
1
+ # Glosario — el vocabulario común de dai
2
+
3
+ > Si el equipo no nombra las cosas igual, no puede razonar junto. Este es el
4
+ > vocabulario **del método**. Cada proyecto además mantiene su **glosario de
5
+ > dominio** (los términos del negocio) — son cosas distintas: este define *cómo
6
+ > trabajamos*, el otro define *sobre qué*.
7
+
8
+ ## Los dos lados
9
+
10
+ | Término | Qué es |
11
+ |---|---|
12
+ | **QUÉ** | El requerimiento funcional: qué hay que hacer y por qué. Dueño: PO/funcional. |
13
+ | **CÓMO** | La implementación técnica: cómo se construye. Dueño: dev/ingeniero. |
14
+ | **US (User Story)** | La unidad del QUÉ. Formato canónico en `templates/formato-us.md`. |
15
+ | **Criterio de aceptación (AC)** | Condición testeable en Gherkin (Dado/Cuando/Entonces). Si no es un test en potencia, no es un AC. |
16
+ | **Capacidad** | La unidad de linkeo: una US entera. El link es a este nivel, no por AC. |
17
+
18
+ ## El link y la trazabilidad
19
+
20
+ | Término | Qué es |
21
+ |---|---|
22
+ | **Link (QUÉ↔CÓMO)** | La relación entre un requerimiento y su implementación. |
23
+ | **`implements`** | La declaración `implements: <id>@<version>` en el código. El **único** link autorado a mano. |
24
+ | **`implements.yaml`** | El archivo, en el change del repo, que contiene ese link. Lo genera `link-us`. Ejemplo lleno + árbol de dónde vive entre los artefactos de OpenSpec: [ADR-0004](adr/0004-ubicacion-y-schema-implements.md). |
25
+ | **Trazabilidad inversa / cobertura** | El mapa "quién implementó este QUÉ". **Se genera, nunca se escribe.** |
26
+ | **Índice / router** | La tabla central que dice qué ID vive en qué repos. Es un router, **no un almacén**: no guarda el detalle. |
27
+ | **Federación (dos niveles)** | Cómo se guarda la trazabilidad a escala: Nivel 1 = índice central chico; Nivel 2 = detalle en cada repo, resuelto on-demand. *(Es un eje distinto de los niveles de ceremonia N1/N2/N3: acá "nivel" es dónde vive el dato, no el tamaño del equipo.)* |
28
+ | **Matriz de trazabilidad** | La vista "repo × versión × estado (al día / atrasado)". Derivada, no mantenida a mano. |
29
+
30
+ ## El versionado
31
+
32
+ | Término | Qué es |
33
+ |---|---|
34
+ | **`spec_version`** | Número legible (`v1`, `v2`…). Lo sube la persona para **comunicar** un cambio del QUÉ. |
35
+ | **`ac_hash`** | Hash del bloque de criterios normalizado. Lo calcula la máquina para **detectar** cambios. |
36
+ | **`@version`** | El par `spec_version + ac_hash`. Lo que hace que un cambio del QUÉ marque solo a los CÓMO atrasados. |
37
+ | **Atrasado (⚠️)** | Un CÓMO cuyo `ac_hash` ya no coincide con el de la US vigente. |
38
+
39
+ ## El proceso
40
+
41
+ | Término | Qué es |
42
+ |---|---|
43
+ | **Gate 0** | El desafío al *problema* antes de escribir spec (`grill-intent`). Puede terminar en "no lo construyas". |
44
+ | **DoR (Definition of Ready)** | El contrato de cuándo una US puede entrar a implementarse. |
45
+ | **DoD (Definition of Done)** | El contrato de cuándo el CÓMO está terminado. |
46
+ | **PR / MR (Pull / Merge Request)** | La unidad revisable del CÓMO. En dai lleva **dos activos**, y el review cubre ambos: (1) la **implementación** (el código) y (2) el **spec trazable** (el `implements.yaml` con el link a la US y el `@version` verificado). Sin el segundo, el CI bloquea el PR. Template en `../templates/pull-request.md`. |
47
+ | **Change** | La unidad de trabajo de OpenSpec (proposal + design + tasks + specs). |
48
+ | **ADR (Architecture Decision Record)** | El registro de una decisión estructural: contexto, decisión, consecuencias. Chico e **inmutable** — si algo cambia, se escribe uno nuevo que supersede al viejo. Template en `../templates/adr.md`; los de dai, en [`adr/`](adr/). |
49
+ | **TDD (Test-Driven Development)** | Escribir el test **antes** que el código: RED (test que falla) → GREEN (código mínimo) → REFACTOR. En dai cada AC se vuelve un test (skill `tdd`); es el antídoto del vibe coding. |
50
+ | **Vertical slice** | Un test → una implementación → repetir. Lo opuesto a "todos los tests, después todo el código". |
51
+ | **Smoke** | Escenario end-to-end que verifica que el flujo grueso no se rompió. |
52
+
53
+ ## La maquinaria (CI/CD)
54
+
55
+ | Término | Qué es |
56
+ |---|---|
57
+ | **CI (Integración Continua)** | La automatización que corre en cada *push* / PR: compila, corre los tests y valida el repo. **En dai**, el CI ejecuta `dai check` como *gate* del PR (valida que el link exista y que el `ac_hash` coincida con la US viva) y, al mergear, `dai stamp` (estampa la cobertura inversa en el tracker — nadie la escribe a mano). Qué valida, en [`governance/ci-rules.md`](../governance/ci-rules.md). |
58
+ | **CD (Despliegue Continuo)** | La automatización que lleva la versión a los ambientes (`dev` / `test` / `pre` / `prod`) y reporta a cuál llegó. **En dai**, el CD alimenta la **matriz repo × ambiente**: *implementado ≠ desplegado* — el CI dice "el repo implementó `@v3`", el CD dice "`@v3` está viva en `pre`". |
59
+ | **CI/CD** | Juntos, la "plomería" que **blinda** el método sin depender de que la gente se acuerde (enforcement, no vigilancia). En dai es **opcional** (ADR-0003): aparece sobre todo en **N3** (organización grande). En **N1/N2** los mismos comandos (`dai check`, `dai stamp`) corren a mano o por un git-hook — la trazabilidad es idéntica; solo cambia **quién** los dispara. dai **no trae** su propio CI/CD: se apoya en el pipeline que la organización ya tenga. |
60
+
61
+ ## Los principios
62
+
63
+ | Término | Qué es |
64
+ |---|---|
65
+ | **Artículos (Art. N) / Manifiesto** | Cuando un doc cita "Art. 10" o "Art. 14", se refiere a uno de los **15 artículos** de la constitución del método, en [MANIFIESTO.md](MANIFIESTO.md). Cada `Art. N` linkea directo a su regla (`#art-N`). Son cortos a propósito — un manifiesto que no se cita de memoria no gobierna nada. |
66
+ | **SDD (Spec-Driven Development)** | El paradigma donde la **especificación maneja el código**, no al revés: primero el QUÉ (US) y el diseño, después la implementación. dai —con OpenSpec— es SDD; lo opuesto al *code-first* y al vibe coding. |
67
+ | **PRD / SRS** | El documento monolítico de requisitos (*Product Requirements Document* / *Software Requirements Specification*). **dai no usa uno**: descompone el QUÉ en épica + US testeables (unidades linkeables y hasheables). Si ya tienes un PRD, `doc-to-backlog` lo **ingiere** y lo vuelve backlog — dai consume el documento, no te obliga a mantenerlo. |
68
+ | **HITL (Human-in-the-loop)** | La IA asiste; la persona decide y firma. Los rituales de coordinación son humanos. |
69
+ | **Vibe coding** | Improvisar código sobre una idea vaga. Lo que el método prohíbe ([Art. 7](./MANIFIESTO.md#art-7)). |
70
+ | **Colapso de roles** | Cuando una persona es PO y dev: los gates se aligeran, el link no desaparece. |
71
+ | **Nivel de ceremonia (N1/N2/N3)** | Los tres niveles de "plomería" según el tamaño del equipo. **N1** — un dev solo, todo local, sin herramientas externas. **N2** — equipo compacto, con tracker (Jira/ClickUp) + `implements.yaml`. **N3** — organización grande, federada: muchos repos, equipos separados, CI que estampa. El protocolo QUÉ↔CÓMO es **el mismo** en los tres; solo cambia la maquinaria. Detalle en [METODOLOGIA §3](METODOLOGIA.md). |
72
+
73
+ ## Los roles
74
+
75
+ | Término | Qué es |
76
+ |---|---|
77
+ | **PO / funcional** | Dueño del QUÉ. Ver `guias/po.md`. |
78
+ | **Dev / ingeniero** | Dueño del CÓMO y del link. Ver `guias/dev.md`. |
79
+ | **Lead / SM / arquitecto** | Custodio de las invariantes y del nivel de ceremonia. Ver `guias/lead.md`. |
@@ -0,0 +1,66 @@
1
+ # Guía del dev / ingeniero
2
+
3
+ > Tu trabajo en una frase: **defines e implementas el CÓMO, y autoras el link al QUÉ.**
4
+ > El QUÉ ya viene definido y testeable — tú no lo re-discutes, lo implementas.
5
+
6
+ ## Lo que eres dueño
7
+
8
+ - El **CÓMO**: diseño técnico, modelo de datos, arquitectura de la solución.
9
+ - Las **tareas técnicas** (las derivas tú, desde la US, con OpenSpec).
10
+ - El **link** (`implements.yaml`): es el **único** que se autora a mano ([Art. 9](../MANIFIESTO.md#art-9)).
11
+ - El **código** y su **spec técnica**.
12
+
13
+ ## Lo que NO tocas
14
+
15
+ - El contenido funcional de la US ni sus criterios → eso es del PO (Art. 1).
16
+ - Si te parece que el QUÉ está mal, **no lo corrijas por tu cuenta**: devuelve la US
17
+ al PO (reframe). No decidas negocio desde el código.
18
+
19
+ ## Tu día a día
20
+
21
+ 1. **Agarras una US** que cumple el [DoR](../../templates/definition-of-ready.md) → `/link-us ABC-###`. Crea la rama y el
22
+ `implements.yaml` **desde el ID, sin que tipees el key a mano** (Art. 8, Art. 9).
23
+ 2. **Armas el CÓMO** → `opsx:explore` → `opsx:propose`. OpenSpec genera
24
+ `design.md`/`tasks.md`; tú validas y ajustas. Las tareas nacen del cómo.
25
+ 3. **Implementas con TDD** → `/tdd`. Un test a la vez, vertical slices: RED → GREEN
26
+ → refactor. Verificas por la **interfaz pública**, no espías lo interno (Art. 7).
27
+ 4. **Smoke** → ejecutas el escenario end-to-end del flujo.
28
+ 5. **Revisas la implementación de la IA** (code review propio) → minucioso y con criterio:
29
+ correctitud, casos borde, seguridad, calidad. **Eres responsable del código, no la IA**
30
+ (anti vibe-coding). Ajustas y **commiteas** lo que haga falta.
31
+ 6. **Creas la PR** → con el smoke verde y **todo commiteado** (lo que quede sin commitear
32
+ **no entra** en la PR), corres `dai check` (gate: ¿al día con la US?) y en verde `dai pr`
33
+ arma la PR **precargada** (US + estado del check + links; los **dos activos**: código +
34
+ spec trazable) y la asignas a un partner.
35
+ 7. **Review de un partner** → un compañero revisa tu PR y **firma** aprobación/rechazo
36
+ (Art. 5). Se apoya en la skill `/dai-review` para un primer pase con comentario estándar.
37
+ *(Tu PR la revisas tú en el paso 5; la de un compañero, lo ayudas con la skill.)*
38
+ 8. **Verificas el DoD** → [`definition-of-done.md`](../../templates/definition-of-done.md) antes de mergear.
39
+ 9. **Merge → se estampa la cobertura** con `dai stamp` (lo corres tú tras mergear, o el CI
40
+ si la org lo tiene automatizado — mismo comando, ADR-0003). El estado se **deriva** (Art. 10).
41
+ 10. **(Opcional) Limpias la rama** → `dai done` te devuelve a la base (default `main`, o
42
+ `--base develop`), hace `fetch --prune` + `pull` y borra la rama local **solo si está
43
+ mergeada**. Higiene del repo tras el merge, sin riesgo de perder trabajo sin integrar.
44
+
45
+ ## La trampa a evitar
46
+
47
+ **Vibe coding.** Nada de codear sobre una idea vaga o "improvisar y después vemos".
48
+ Si no hay US con criterios testeables, no arranques: falta el [DoR](../../templates/definition-of-ready.md). La disciplina
49
+ —US clara → design → test → código— es lo que separa esto de pedirle cosas a un chat.
50
+
51
+ ## Cuando el QUÉ cambia
52
+
53
+ Si el PO sube la US a `v2`, tu `implements.yaml` (que apunta a `v1`) se marca
54
+ **atrasado** solo. Abres una nueva iteración contra `v2` y vuelves al paso 3. Nadie
55
+ te avisa: el link versionado lo hace [Art. 11](../MANIFIESTO.md#art-11).
56
+
57
+ ## Tus herramientas
58
+
59
+ - `/link-us`
60
+ - `/opsx:explore`
61
+ - `/opsx:propose`
62
+ - `/opsx:apply`
63
+ - `/tdd`
64
+ - `/dai-review`
65
+ - `dai check` · `dai pr` · `dai stamp` · `dai done` (limpieza, opcional)
66
+ - `definition-of-done.md`
@@ -0,0 +1,53 @@
1
+ # Guía del lead / Scrum Master / arquitecto
2
+
3
+ > Tu trabajo en una frase: **custodias las invariantes y eliges cuánta ceremonia
4
+ > corre el equipo.** No haces el QUÉ ni el CÓMO — haces que el método se cumpla y
5
+ > se aligere donde corresponde.
6
+
7
+ ## Lo que eres dueño
8
+
9
+ - **El manifiesto** (`MANIFIESTO.md`): eres el guardián de los 15 artículos. Se
10
+ enmiendan solo por ADR explícito, nunca en silencio por presión de sprint.
11
+ - **Los ADRs**: registras cada decisión de fondo (las decisiones abiertas de la
12
+ metodología, la calibración de [DoR](../../templates/definition-of-ready.md)/[DoD](../../templates/definition-of-done.md), la convención de escritura en el gestor).
13
+ - **La calibración del nivel** (N1 / N2 / N3): eliges cuánta plomería corre el
14
+ equipo, y la subes **solo cuando duele**, no por las dudas ([Art. 14](../MANIFIESTO.md#art-14)).
15
+ - **El governance**: naming de ramas, reglas de CI (`governance/`).
16
+ - **La facilitación** del daily y la retro — que son **humanos a propósito** (Art. 6).
17
+
18
+ ## Lo que NO haces
19
+
20
+ - No defines el QUÉ por el PO ni el CÓMO por los devs.
21
+ - No conviertes el daily/retro en un reporte automatizado: sacarle al equipo la
22
+ propiedad del ritual rompe la apropiación (Art. 6).
23
+
24
+ ## Tus decisiones clave
25
+
26
+ ### 1. ¿En qué nivel arranca el equipo?
27
+ - **1 dev / 1 repo →** N1 (OpenSpec solo, cero herramientas externas).
28
+ - **Equipo compacto →** N2 (US en el gestor + `implements.yaml`).
29
+ - **Muchos repos + equipos separados →** N3 (Jira hub, CI estampa, matriz de ambientes).
30
+
31
+ Empieza en el más chico que funcione. Sube de nivel cuando el dolor lo justifique.
32
+
33
+ ### 2. ¿Cómo calibras [DoR](../../templates/definition-of-ready.md) y [DoD](../../templates/definition-of-done.md)?
34
+ Ajustas los checklists (`templates/definition-of-*.md`) a tu realidad, **sin tocar
35
+ las invariantes**: criterios testeables (Art. 3), el link autorado una vez (Art. 9)
36
+ y la trazabilidad derivada (Art. 10) no se aflojan en ningún nivel.
37
+
38
+ ### 3. ¿Cuándo se colapsan los roles?
39
+ En equipos chicos una persona es PO y dev. Aligeras los gates (auto-check honesto en
40
+ vez de la firma de otro) **pero el link sigue existiendo** (Art. 15).
41
+
42
+ ## La trampa a evitar
43
+
44
+ **Adelantar complejidad.** Montar la maquinaria de N3 en un equipo de 3 personas es
45
+ tan dañino como no tener método: agrega fricción sin resolver un dolor real (Art. 14).
46
+
47
+ ## Tus herramientas
48
+
49
+ - `MANIFIESTO.md`
50
+ - [`METODOLOGIA.md`](../METODOLOGIA.md) (el dial de niveles)
51
+ - `governance/`
52
+ - los ADRs
53
+ - la retro
@@ -0,0 +1,50 @@
1
+ # Guía del PO / funcional
2
+
3
+ > Tu trabajo en una frase: **defines el QUÉ y el porqué. Nunca el CÓMO.**
4
+ > Trabajas donde ya trabajas (el gestor de proyectos), nunca entras al código.
5
+
6
+ ## Lo que eres dueño
7
+
8
+ - El **contenido funcional** de cada US: el problema, el usuario, el valor.
9
+ - Los **criterios de aceptación** (qué tiene que cumplirse para aceptar).
10
+ - La **prioridad** y el **spec_version** (subes la versión cuando el QUÉ cambia).
11
+ - La **aceptación** en la demo.
12
+
13
+ ## Lo que NO tocas
14
+
15
+ - Tablas, endpoints, framework, arquitectura → eso es el CÓMO, del dev.
16
+ - El código, las ramas, el `implements.yaml`.
17
+ - El "cómo se construye". Si te metes ahí, detente: no es tu terreno ([Art. 1](../MANIFIESTO.md#art-1)).
18
+
19
+ ## Tu día a día
20
+
21
+ 1. **Nace una idea** → creas el ticket en el gestor (nace con ID, aunque sea vago).
22
+ 2. **Gate 0** → ejecutas `/grill-intent`. La IA te desafía el *problema*: ¿es el
23
+ correcto? ¿quién lo sufre? ¿qué pasa si no lo hacemos? Un veredicto válido es
24
+ *"no lo construyas"* — eso es el gate haciendo su trabajo (Art. 4).
25
+ 3. **Pulir el QUÉ** → ejecutas `/grill-user-story`. La IA te **interroga** hasta que
26
+ la US es testeable (INVEST + Gherkin) y la publica en el gestor. La IA no
27
+ inventa requerimientos: te los saca a preguntas. Tú respondes y decides.
28
+ 4. **Verificas el [DoR](../../templates/definition-of-ready.md)** → antes de que entre al sprint, la US cumple el
29
+ [`definition-of-ready.md`](../../templates/definition-of-ready.md).
30
+ 5. **Demo** → aceptas o rechazas contra los mismos criterios que ya eran tests.
31
+
32
+ ## La trampa a evitar
33
+
34
+ **Criterios no testeables.** *"El usuario tiene una buena experiencia"* no es un
35
+ criterio: no se puede volver un test. La skill te va a frenar ahí — déjala. Un buen
36
+ criterio es *"un carrito vacío no se puede finalizar"* (Art. 3).
37
+
38
+ ## Lo que ganas
39
+
40
+ Cuando cambias el QUÉ (subes a `v2`), **todos los repos que implementaron la versión
41
+ vieja se marcan atrasados solos**. No tienes que perseguir a nadie: el `@version` lo
42
+ grita (Art. 11). Y ves en el ticket quién ya lo implementó, sin preguntar — lo puso
43
+ el CI (Art. 10).
44
+
45
+ ## Tus herramientas
46
+
47
+ - `/grill-intent`
48
+ - `/grill-user-story`
49
+ - el gestor de proyectos
50
+ - [`definition-of-ready.md`](../../templates/definition-of-ready.md)
@@ -0,0 +1,36 @@
1
+ # Convención de naming de ramas
2
+
3
+ > El nombre de la rama **es** el primer eslabón del link. Si es inconsistente, la
4
+ > trazabilidad se rompe desde el commit uno. Por eso lo genera `link-us`, no la mano.
5
+
6
+ ## El formato
7
+
8
+ ```
9
+ feature/ABC-###-<slug>
10
+ └──┬──┘ └──┬───┘ └─┬─┘
11
+ │ │ └ título de la US, minúsculas, sin acentos, guiones como separador
12
+ │ └ ID de la US en el gestor (identidad estable del QUÉ)
13
+ └ tipo de rama
14
+ ```
15
+
16
+ Ejemplo: `feature/ABC-482-finalizar-compra-sin-duplicado`
17
+
18
+ ## Reglas
19
+
20
+ - El **ID nunca se tipea a mano**: sale del argumento de `/link-us ABC-###`. Elimina
21
+ el error de tipeo que rompe el link ([Art. 8](../docs/MANIFIESTO.md#art-8), Art. 9).
22
+ - El **slug** deriva del título de la US: minúsculas, sin acentos ni ñ, espacios → `-`.
23
+ - La **base** de la rama sigue la convención del repo (`main` o `develop`).
24
+ - Una rama, una US. Si una US toca varios repos, es una rama por repo, **todas con el
25
+ mismo `ABC-###`** — así el índice las agrupa en una fila (federación).
26
+
27
+ ## Tipos de rama (opcional, por repo)
28
+
29
+ | Prefijo | Para |
30
+ |---|---|
31
+ | `feature/` | nueva capacidad (el caso por defecto) |
32
+ | `fix/` | corrección sobre una US ya implementada |
33
+ | `chore/` | trabajo sin US (tooling, deps) — sin `implements`, no cuenta para cobertura |
34
+
35
+ > Regla de oro: si la rama implementa una US, **su nombre lleva el ID** y existe
36
+ > `implements.yaml`. Si no lleva ID, no es trabajo de producto y el CI no le exige link.
@@ -0,0 +1,57 @@
1
+ # Reglas de CI — enforcement, no vigilancia
2
+
3
+ > El método no depende de que la gente "se acuerde". Lo blinda un check: valida el
4
+ > link en cada PR y estampa la cobertura al mergear. La disciplina la sostiene la
5
+ > máquina, no la buena voluntad.
6
+ >
7
+ > **El "CI" no es infraestructura obligatoria (ADR-0003).** Todo lo de acá abajo son
8
+ > los comandos `dai check` (read-only, gate) y `dai stamp` (write, cobertura),
9
+ > corridos por un dev en modo distribuido **o** por el pipeline que la org ya tenga.
10
+ > El tracker solo guarda la US; no ejecuta nada. Un equipo sin CI usa los mismos
11
+ > comandos a mano (o por git-hook) y tiene la misma trazabilidad.
12
+
13
+ ## Qué valida el CI en cada PR/MR
14
+
15
+ | Check | Regla | Si falla |
16
+ |---|---|---|
17
+ | **Link presente** | Toda rama de producto (`feature/ABC-###-*`) tiene `implements.yaml`. | ❌ bloquea el PR |
18
+ | **ID válido** | El `id` matchea el formato del gestor (`ABC-\d+`) y el ID existe. | ❌ bloquea |
19
+ | **`ac_hash` calculado** | El CI (re)calcula el hash de los criterios de la US y lo compara. | ⚠️ marca atrasado si no coincide |
20
+ | **Tests verdes** | La suite de la US pasa. | ❌ bloquea |
21
+ | **Estándares** | Lint + tipos + convenciones del repo. | ❌ bloquea |
22
+
23
+ > Ramas `chore/`/`fix/` sin US no requieren `implements.yaml` (ver `branch-naming.md`).
24
+
25
+ ## Qué hace el CI al mergear
26
+
27
+ 1. **Lee** el `implements.yaml` de la rama.
28
+ 2. **Estampa la cobertura inversa** en el gestor: en el ticket `ABC-###`, deja
29
+ "implementado por `<repo>` @ `<version>` (`ac_hash`) ✅". **Nadie lo escribe a
30
+ mano** ([Art. 10](../docs/MANIFIESTO.md#art-10)).
31
+ 3. **Actualiza el índice/router central** de la federación: la fila `ABC-### → { repos }`.
32
+
33
+ ## Qué hace el CD al desplegar (solo N3 · organización grande)
34
+
35
+ Reporta a qué **ambiente** llegó la versión (`dev` / `test` / `pre` / `prod`), para
36
+ armar la matriz **repo × ambiente**. Implementación ≠ despliegue: el CI dice "se
37
+ implementó `@v3`", el CD dice "`@v3` está viva en `pre`".
38
+
39
+ ## Cómo se calcula el `ac_hash` (contrato)
40
+
41
+ > Decisión abierta de la metodología — este es el contrato propuesto, a congelar en un ADR.
42
+
43
+ 1. Tomar el bloque **Criterios de aceptación** de la US vigente.
44
+ 2. **Normalizar**: colapsar whitespace, orden estable de los AC, quitar marcado
45
+ editorial (viñetas, énfasis). El objetivo: que un typo **no** dispare un falso atraso.
46
+ 3. Hashear el resultado normalizado (p. ej. SHA-256, truncado para legibilidad).
47
+ 4. Comparar con el `ac_hash` del `implements.yaml`. Distinto → el repo está atrasado.
48
+
49
+ ## Calibración por nivel
50
+
51
+ > **N1 / N2 / N3** son los niveles de ceremonia según el tamaño del equipo — **N1**
52
+ > un dev solo, **N2** equipo compacto (con tracker), **N3** organización grande
53
+ > (federada). Ver el [glosario](../docs/glosario.md) o [METODOLOGIA §3](../docs/METODOLOGIA.md).
54
+
55
+ - **N1** (dev solo)**:** sin CI. La validación es un comando local (`dai` puede ofrecer un pre-commit).
56
+ - **N2** (equipo compacto)**:** CI liviano — valida link + tests, estampa en el gestor si hay adaptador.
57
+ - **N3** (organización grande)**:** CI completo + CD reportando ambientes + índice central publicado.
@@ -0,0 +1,76 @@
1
+ # Convención de commits — el CÓMO, en pasos legibles
2
+
3
+ > Un commit es el **paso atómico del CÓMO**. Si el historial se lee, la implementación
4
+ > se entiende sin abrir el diff. Esta convención lo vuelve mecánico — y un hook la
5
+ > blinda, sin depender de que nadie "se acuerde" (mismo espíritu que [`ci-rules.md`](ci-rules.md)).
6
+
7
+ ## Formato
8
+
9
+ ```
10
+ <tipo>(<scope>)!: <resumen>
11
+
12
+ <cuerpo opcional>
13
+ ```
14
+
15
+ - **tipo** — obligatorio (ver tabla).
16
+ - **scope** — opcional, en minúscula: el módulo o área (`cart`, `auth`, `cli`).
17
+ - **`!`** — opcional, marca un **breaking change** (rompe un contrato).
18
+ - **resumen** — en **imperativo**, minúscula, **sin punto final**, hasta **72** caracteres.
19
+ "rechaza el carrito vacío", no "Rechazado" ni "se rechaza el carrito".
20
+ - **cuerpo** — opcional: el *por qué*, no el *qué* (el diff ya dice el qué).
21
+
22
+ | Tipo | Cuándo |
23
+ |---|---|
24
+ | `feat` | nueva funcionalidad |
25
+ | `fix` | corrección de un bug |
26
+ | `docs` | solo documentación |
27
+ | `style` | formato (espacios, comas) sin cambio de comportamiento |
28
+ | `refactor` | reescritura sin feature ni fix |
29
+ | `perf` | mejora de rendimiento |
30
+ | `test` | agrega o corrige tests |
31
+ | `build` | sistema de build o dependencias |
32
+ | `ci` | pipeline de CI/CD |
33
+ | `chore` | mantenimiento (nada de lo anterior) |
34
+ | `revert` | revierte un commit previo |
35
+
36
+ Se dejan pasar sin validar: `Merge …`, `Revert …`, `fixup!`/`squash!` y commits de bots (`🤖…`).
37
+
38
+ ## Relación con la trazabilidad
39
+
40
+ El link formal QUÉ↔CÓMO vive en el `implements.yaml` (no en el mensaje del commit). Pero si
41
+ el commit implementa una US, **mencionarla en el cuerpo** hace el historial legible:
42
+
43
+ ```
44
+ feat(cart): rechaza finalizar un carrito vacío
45
+
46
+ Cubre el criterio AC-2. US: ABC-482.
47
+ ```
48
+
49
+ No es obligatorio y **no** reemplaza al `implements.yaml` — es una ayuda de lectura.
50
+
51
+ ## Cómo instalar el hook
52
+
53
+ El template [`templates/commit-msg`](../templates/commit-msg) es POSIX sh **sin dependencias**
54
+ (no necesita dai, node ni commitlint). Elige según tu repo:
55
+
56
+ **Con [husky](https://typicode.github.io/husky/) (si ya lo usas):**
57
+ ```bash
58
+ cp templates/commit-msg .husky/commit-msg && chmod +x .husky/commit-msg
59
+ ```
60
+
61
+ **Git hook pelado (sin herramientas):**
62
+ ```bash
63
+ cp templates/commit-msg .git/hooks/commit-msg && chmod +x .git/hooks/commit-msg
64
+ ```
65
+
66
+ Para compartirlo con el equipo sin husky, versiona los hooks en el repo y apunta git ahí:
67
+ ```bash
68
+ mkdir -p .githooks && cp templates/commit-msg .githooks/ && chmod +x .githooks/commit-msg
69
+ git config core.hooksPath .githooks
70
+ ```
71
+
72
+ ## Opt-in ([Art. 14](../docs/MANIFIESTO.md#art-14) — no adelantar complejidad)
73
+
74
+ El hook es **opcional**. Un equipo chico puede seguir la convención a mano; uno grande la
75
+ blinda con el hook y/o el CI. La convención es la misma en cualquier nivel de ceremonia
76
+ (N1/N2/N3 — ver [glosario](../docs/glosario.md)); solo cambia cuánto se automatiza.