@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.
- package/.env.example +30 -0
- package/CHANGELOG.md +46 -0
- package/CODE_OF_CONDUCT.md +37 -0
- package/CONTRIBUTING.md +66 -0
- package/LICENSE +674 -0
- package/README.md +288 -0
- package/SECURITY.md +37 -0
- package/VERSION +1 -0
- package/cli/dai.mjs +692 -0
- package/cli/lib/ac-hash.mjs +74 -0
- package/cli/lib/args.mjs +23 -0
- package/cli/lib/bootstrap.mjs +74 -0
- package/cli/lib/env.mjs +23 -0
- package/cli/lib/forge-api.mjs +96 -0
- package/cli/lib/forge-url.mjs +61 -0
- package/cli/lib/fsutil.mjs +24 -0
- package/cli/lib/implements.mjs +94 -0
- package/cli/lib/link-us.mjs +59 -0
- package/cli/lib/pm-adapter.mjs +59 -0
- package/cli/lib/pm-clickup.mjs +54 -0
- package/cli/lib/pm-jira.mjs +123 -0
- package/cli/lib/pr.mjs +53 -0
- package/cli/lib/us.mjs +36 -0
- package/docs/EJEMPLO-END-TO-END.md +330 -0
- package/docs/MANIFIESTO.md +114 -0
- package/docs/METODOLOGIA.md +254 -0
- package/docs/PROBAR.md +91 -0
- package/docs/SCRUM-CON-IA.md +190 -0
- package/docs/adr/0001-contrato-ac-hash.md +86 -0
- package/docs/adr/0002-agnostico-del-asistente.md +87 -0
- package/docs/adr/0003-deteccion-y-estampado-son-comandos.md +73 -0
- package/docs/adr/0004-ubicacion-y-schema-implements.md +94 -0
- package/docs/adr/0005-superficie-comandos-y-stamp.md +65 -0
- package/docs/adr/0006-distribucion-y-licencia.md +59 -0
- package/docs/adr/0007-modelo-de-autenticacion.md +63 -0
- package/docs/adr/README.md +19 -0
- package/docs/detalle/01-refinamiento.md +33 -0
- package/docs/detalle/02-planning.md +27 -0
- package/docs/detalle/03-ramas.md +32 -0
- package/docs/detalle/04-tdd.md +35 -0
- package/docs/detalle/05-smoke.md +32 -0
- package/docs/detalle/06-code-review.md +34 -0
- package/docs/detalle/07-merge-trazabilidad.md +33 -0
- package/docs/detalle/08-daily.md +29 -0
- package/docs/detalle/09-review.md +25 -0
- package/docs/detalle/10-retro.md +27 -0
- package/docs/detalle/README.md +20 -0
- package/docs/glosario.md +79 -0
- package/docs/guias/dev.md +66 -0
- package/docs/guias/lead.md +53 -0
- package/docs/guias/po.md +50 -0
- package/governance/branch-naming.md +36 -0
- package/governance/ci-rules.md +57 -0
- package/governance/commit-convention.md +76 -0
- package/index.html +479 -0
- package/install.sh +19 -0
- package/manifest.yaml +76 -0
- package/package.json +55 -0
- package/skills/dai-review/SKILL.md +78 -0
- package/skills/doc-to-backlog/SKILL.md +70 -0
- package/skills/doc-to-backlog/templates/backlog-candidato.md +49 -0
- package/skills/grill-epic/SKILL.md +76 -0
- package/skills/grill-intent/SKILL.md +43 -0
- package/skills/grill-intent/templates/intent.md +36 -0
- package/skills/grill-user-story/SKILL.md +76 -0
- package/skills/grill-user-story/templates/user-story.md +61 -0
- package/skills/link-us/SKILL.md +42 -0
- package/skills/link-us/templates/implements.yaml +16 -0
- package/skills/tdd/SKILL.md +109 -0
- package/skills/tdd/deep-modules.md +33 -0
- package/skills/tdd/interface-design.md +31 -0
- package/skills/tdd/mocking.md +59 -0
- package/skills/tdd/refactoring.md +10 -0
- package/skills/tdd/tests.md +61 -0
- package/templates/adr.md +43 -0
- package/templates/commit-msg +48 -0
- package/templates/definition-of-done.md +50 -0
- package/templates/definition-of-ready.md +51 -0
- package/templates/epica.md +62 -0
- package/templates/formato-us.md +129 -0
- package/templates/pull-request.md +62 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
FORMATO CANÓNICO DE USER STORY · Modelo de Trazabilidad QUÉ↔CÓMO
|
|
3
|
+
─────────────────────────────────────────────────────────────────
|
|
4
|
+
Este es "el mejor formato que se adapta al flujo": una US completa con
|
|
5
|
+
mejores prácticas (INVEST + Gherkin) MÁS las adaptaciones que el modelo
|
|
6
|
+
de trazabilidad necesita para linkear ida y vuelta.
|
|
7
|
+
|
|
8
|
+
Lo produce la skill grill-intent → grill-user-story.
|
|
9
|
+
Es funcional y de alto nivel: define el QUÉ, nunca el CÓMO (sin tablas,
|
|
10
|
+
endpoints, ni implementación).
|
|
11
|
+
|
|
12
|
+
Las secciones marcadas con 🔗 son las ADAPTACIONES del modelo.
|
|
13
|
+
El resto son mejores prácticas estándar de user stories.
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
# 🔗 Metadata de trazabilidad
|
|
17
|
+
|
|
18
|
+
> Esta cabecera es la que hace la US **linkeable**. Es lo que el `implements.yaml`
|
|
19
|
+
> del repo referencia y lo que el CI lee para estampar cobertura.
|
|
20
|
+
|
|
21
|
+
| Campo | Valor | Quién lo mantiene |
|
|
22
|
+
|-------|-------|-------------------|
|
|
23
|
+
| **ID** | `ABC-123` | Jira (identidad estable del QUÉ) |
|
|
24
|
+
| **spec_version** | `v1` | PO / `grill-user-story` — sube al cambiar criterios |
|
|
25
|
+
| **ac_hash** | _(autogenerado)_ | CI — hash del bloque *Criterios de aceptación* |
|
|
26
|
+
| **Autor** | `J. Pérez (PO)` | quien la definió |
|
|
27
|
+
| **Estado** | `borrador` \| `pulida` \| `en implementación` \| `implementada` | flujo |
|
|
28
|
+
| **Repos esperados** | `frontend`, `bff`, `backend` _(hint, opcional)_ | PO / arquitectura |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# <Título de la historia>
|
|
33
|
+
|
|
34
|
+
**Corto — 3 a 6 palabras.** Nombra la capacidad, no la explica (el detalle va en la
|
|
35
|
+
descripción y los criterios). De él sale el nombre de la branch, así que cuanto más
|
|
36
|
+
conciso, mejor.
|
|
37
|
+
- ✅ "Confirmar acciones con consecuencias" · "Finalizar la compra del carrito"
|
|
38
|
+
- ❌ "Confirmación deliberada antes de ejecutar acciones con consecuencias" (es una frase,
|
|
39
|
+
no un título) · "Como usuario quiero un botón" (eso es la historia, no el título)
|
|
40
|
+
|
|
41
|
+
## Historia
|
|
42
|
+
|
|
43
|
+
> Formato Connextra (la user story clásica de *rol / quiero / para*). El rol debe ser un
|
|
44
|
+
> tipo de usuario **concreto**, nunca "el usuario".
|
|
45
|
+
|
|
46
|
+
Como **<rol concreto>**
|
|
47
|
+
quiero **<capacidad o resultado>**
|
|
48
|
+
para **<valor / por qué>**.
|
|
49
|
+
|
|
50
|
+
## Contexto / Problema
|
|
51
|
+
|
|
52
|
+
Por qué esto importa ahora. Qué duele hoy sin esta funcionalidad. 2–4 líneas que
|
|
53
|
+
le den sentido a la historia para alguien que cae de nuevo.
|
|
54
|
+
|
|
55
|
+
## Casos de uso
|
|
56
|
+
|
|
57
|
+
Flujos a nivel usuario — qué hace la persona y qué responde el sistema. Sin tecnología.
|
|
58
|
+
|
|
59
|
+
- **Happy path** — <el usuario hace X, obtiene Y>
|
|
60
|
+
- **Alternativo** — <variación esperada del flujo>
|
|
61
|
+
- **Excepción** — <qué pasa cuando algo no es válido, no está permitido, o está vacío>
|
|
62
|
+
|
|
63
|
+
## 🔗 Criterios de aceptación
|
|
64
|
+
|
|
65
|
+
> **Este bloque es el corazón del modelo.** Es lo que se hashea (`ac_hash`) y lo que
|
|
66
|
+
> hace que un cambio del QUÉ marque solo a los repos atrasados. Por eso:
|
|
67
|
+
> - Formato **Gherkin** (`Dado / Cuando / Entonces`): estructurado, estable, testeable.
|
|
68
|
+
> - Cada criterio tiene que poder convertirse en **un test**.
|
|
69
|
+
> - Funcionales pero verificables. Sin mencionar tablas, endpoints ni implementación.
|
|
70
|
+
> - Orden estable — no reordenar por gusto; cada línea es material para el hash.
|
|
71
|
+
|
|
72
|
+
- [ ] **AC-1** —
|
|
73
|
+
- **Dado** <estado / precondición>
|
|
74
|
+
- **Cuando** <acción del usuario / evento>
|
|
75
|
+
- **Entonces** <resultado observable y verificable>
|
|
76
|
+
- [ ] **AC-2** —
|
|
77
|
+
- **Dado** <...>
|
|
78
|
+
- **Cuando** <...>
|
|
79
|
+
- **Entonces** <...>
|
|
80
|
+
|
|
81
|
+
## Reglas de negocio
|
|
82
|
+
|
|
83
|
+
Invariantes que aplican transversalmente a los criterios (no un flujo puntual).
|
|
84
|
+
|
|
85
|
+
- <regla de dominio, límite, restricción>
|
|
86
|
+
|
|
87
|
+
## Fuera de scope
|
|
88
|
+
|
|
89
|
+
Lo que esta historia explícitamente NO hace. Corta el scope creep más adelante.
|
|
90
|
+
|
|
91
|
+
- <...>
|
|
92
|
+
|
|
93
|
+
## Dependencias
|
|
94
|
+
|
|
95
|
+
Otras US, sistemas o decisiones que tienen que existir antes o en paralelo.
|
|
96
|
+
|
|
97
|
+
- <ABC-### / sistema externo / decisión pendiente>
|
|
98
|
+
|
|
99
|
+
## Métricas de éxito
|
|
100
|
+
|
|
101
|
+
Cómo sabremos que esto agregó valor (no cómo se construyó).
|
|
102
|
+
|
|
103
|
+
- <métrica observable / indicador de negocio>
|
|
104
|
+
|
|
105
|
+
## Preguntas abiertas
|
|
106
|
+
|
|
107
|
+
Lo que quedó sin resolver y necesita una decisión antes de pasar a implementación.
|
|
108
|
+
|
|
109
|
+
- <...>
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
<!--
|
|
114
|
+
CHECKLIST INVEST (la skill lo valida antes de dar la US por "pulida"):
|
|
115
|
+
- Independent — se puede implementar sin depender de otra US a medias.
|
|
116
|
+
- Negotiable — describe el QUÉ, deja espacio al CÓMO.
|
|
117
|
+
- Valuable — el "para <valor>" es real y claro.
|
|
118
|
+
- Estimable — el equipo técnico puede dimensionarla.
|
|
119
|
+
- Small — cabe en un sprint; si no, se parte.
|
|
120
|
+
- Testable — cada criterio de aceptación es un test en potencia.
|
|
121
|
+
|
|
122
|
+
REGLA DEL ac_hash:
|
|
123
|
+
- ac_hash = hash del bloque "Criterios de aceptación" normalizado
|
|
124
|
+
(whitespace colapsado, viñetas y marcado estable).
|
|
125
|
+
- Cambio MATERIAL de los AC → cambia el hash → el CI re-marca repos como atrasados.
|
|
126
|
+
- Cambio editorial (typo, formato) → normalizar para que NO dispare un falso atraso.
|
|
127
|
+
- spec_version (número legible) lo sube el PO/skill para comunicar; ac_hash lo
|
|
128
|
+
calcula el CI para detectar. El número comunica, el hash detecta.
|
|
129
|
+
-->
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
TEMPLATE DE PULL / MERGE REQUEST · dai
|
|
3
|
+
─────────────────────────────────────────────────────────────────
|
|
4
|
+
Copiar como .github/pull_request_template.md (o el equivalente del repo).
|
|
5
|
+
Lo puede pre-llenar `dai`/una skill a partir del implements.yaml y el diff.
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
> **Un PR en dai entrega dos activos, y el review cubre los dos:**
|
|
9
|
+
> 1. **La implementación** — el código que resuelve la US.
|
|
10
|
+
> 2. **El spec trazable** — el `implements.yaml` con el link a la US y el `@version`
|
|
11
|
+
> (`ac_hash`) verificado con `dai check` ✅. Sin esto, el código no sabe *a qué QUÉ*
|
|
12
|
+
> responde, y el CI bloquea el PR (ver `governance/ci-rules.md`).
|
|
13
|
+
|
|
14
|
+
## 🔗 Implementa
|
|
15
|
+
|
|
16
|
+
- **US:** `ABC-###` @ `vX` · ac_hash: `<hash>` · verificado con `dai check` ✅
|
|
17
|
+
- **Link:** este PR está atado a la US vía `implements.yaml`.
|
|
18
|
+
|
|
19
|
+
> Si este PR no implementa una US (chore/fix sin ticket), borra esta sección y
|
|
20
|
+
> aclara el motivo — no se le exige link.
|
|
21
|
+
|
|
22
|
+
## Descripción
|
|
23
|
+
|
|
24
|
+
<!-- Breve propósito de este PR, en términos de negocio (2–4 líneas). -->
|
|
25
|
+
|
|
26
|
+
## Cambios realizados
|
|
27
|
+
|
|
28
|
+
- [ ] Cambio 1
|
|
29
|
+
- [ ] Cambio 2
|
|
30
|
+
|
|
31
|
+
## Testing
|
|
32
|
+
|
|
33
|
+
- [ ] Tests unitarios pasando
|
|
34
|
+
- [ ] Tests de integración pasando
|
|
35
|
+
- [ ] Smoke end-to-end (`dai`/skill) pasando
|
|
36
|
+
- [ ] Probado manualmente
|
|
37
|
+
|
|
38
|
+
## Documentación
|
|
39
|
+
|
|
40
|
+
- [ ] README/docs actualizados (si aplica)
|
|
41
|
+
- [ ] Comentarios en código agregados donde hacía falta
|
|
42
|
+
|
|
43
|
+
## Enlaces relacionados
|
|
44
|
+
|
|
45
|
+
<!-- US en el tracker, commit ancla, docs, issues. -->
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Checklist del Desarrollador (Definition of Done)
|
|
50
|
+
|
|
51
|
+
- [ ] `implements.yaml` presente y `dai check` en **verde** (no atrasado).
|
|
52
|
+
- [ ] Mi código sigue los estándares y está cubierto por tests (interfaz pública).
|
|
53
|
+
- [ ] La funcionalidad satisface los **criterios de aceptación** de la US.
|
|
54
|
+
- [ ] Documenté los cambios y revisé posibles vulnerabilidades de seguridad.
|
|
55
|
+
|
|
56
|
+
_(Checklist completo: `templates/definition-of-done.md`.)_
|
|
57
|
+
|
|
58
|
+
## Checklist del Aprobador
|
|
59
|
+
|
|
60
|
+
- [ ] Revisé los cambios y entiendo su propósito e impacto.
|
|
61
|
+
- [ ] Verifiqué la calidad del código y la cobertura de tests.
|
|
62
|
+
- [ ] Me comprometo a dar soporte en caso de problemas post-implementación.
|