@dforce2055/dai 0.9.0 → 0.10.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 (51) hide show
  1. package/{.env.example → .env.dai.example} +3 -3
  2. package/CHANGELOG.md +41 -0
  3. package/README.md +36 -25
  4. package/VERSION +1 -1
  5. package/cli/dai.mjs +97 -41
  6. package/cli/lib/bootstrap.mjs +39 -7
  7. package/cli/lib/env.mjs +12 -0
  8. package/cli/lib/pm-clickup.mjs +2 -2
  9. package/cli/lib/pm-jira.mjs +2 -2
  10. package/cli/lib/skills-source.mjs +8 -0
  11. package/docs/EJEMPLO-END-TO-END.md +52 -43
  12. package/docs/MANIFIESTO.md +2 -2
  13. package/docs/METODOLOGIA.md +20 -15
  14. package/docs/PROBAR.md +13 -14
  15. package/docs/SCRUM-CON-IA.md +10 -10
  16. package/docs/adr/0003-deteccion-y-estampado-son-comandos.md +1 -1
  17. package/docs/adr/0006-distribucion-y-licencia.md +1 -1
  18. package/docs/adr/0013-skills-externas-install-from.md +11 -4
  19. package/docs/adr/0015-jira-corporativo.md +1 -1
  20. package/docs/adr/0017-env-dai.md +64 -0
  21. package/docs/adr/README.md +1 -0
  22. package/docs/detalle/01-refinamiento.md +6 -5
  23. package/docs/detalle/03-ramas.md +2 -2
  24. package/docs/detalle/04-tdd.md +15 -9
  25. package/docs/detalle/06-code-review.md +8 -5
  26. package/docs/detalle/08-daily.md +1 -1
  27. package/docs/detalle/README.md +1 -1
  28. package/docs/glosario.md +2 -2
  29. package/docs/guias/dev.md +10 -7
  30. package/docs/guias/index.md +12 -0
  31. package/docs/guias/lead.md +1 -1
  32. package/docs/guias/po.md +13 -7
  33. package/docs/index.md +35 -0
  34. package/docs/public/favicon.svg +12 -0
  35. package/docs/public/logo-link.svg +12 -0
  36. package/docs/public/logo.svg +12 -0
  37. package/docs/public/tutoriales/clickup-1-settings.png +0 -0
  38. package/docs/public/tutoriales/clickup-2-api.png +0 -0
  39. package/docs/public/tutoriales/clickup-3-generate-copy.png +0 -0
  40. package/docs/public/tutoriales/jira-1-avatar.png +0 -0
  41. package/docs/public/tutoriales/jira-2-seguridad-tokens.png +0 -0
  42. package/docs/public/tutoriales/jira-3-crear-token.png +0 -0
  43. package/docs/public/tutoriales/jira-4-nombre-vencimiento.png +0 -0
  44. package/docs/public/tutoriales/jira-5-copiar.png +0 -0
  45. package/docs/tutoriales/claves-ssh.md +93 -0
  46. package/docs/tutoriales/configurar-git.md +53 -0
  47. package/docs/tutoriales/index.md +18 -0
  48. package/docs/tutoriales/instalar-glab.md +74 -0
  49. package/docs/tutoriales/token-clickup.md +73 -0
  50. package/docs/tutoriales/token-jira.md +74 -0
  51. package/package.json +9 -3
@@ -0,0 +1,73 @@
1
+ # Cómo obtener el token de API de ClickUp
2
+
3
+ Guía paso a paso para generar tu **token de API personal de ClickUp**, necesario para que
4
+ `dai` (o cualquier script) se autentique contra la REST API de **ClickUp** cuando el tracker
5
+ del repo es ClickUp (`DAI_PM=clickup`).
6
+
7
+ > **¿Por qué un token y no la contraseña?** ClickUp no permite autenticar la API con la
8
+ > contraseña de la cuenta (menos aún con SSO / verificación en dos pasos). El **token
9
+ > personal** cumple ese rol: es una credencial que representa a tu usuario y que tratas
10
+ > **igual que una contraseña**. Empieza siempre con `pk_`.
11
+
12
+ **Atajo:** si quieres saltar los pasos 1 y 2, entra directo a
13
+ 👉 **https://app.clickup.com/settings/apps** (te lleva al paso 3).
14
+
15
+ ---
16
+
17
+ ## Paso 1 — Abre la configuración de tu cuenta
18
+
19
+ En ClickUp, haz clic en tu **avatar** (arriba a la derecha) y elige **Settings**
20
+ (Configuración).
21
+
22
+ ![Menú del avatar → Settings](/tutoriales/clickup-1-settings.png)
23
+
24
+ ---
25
+
26
+ ## Paso 2 — Ve a "API de ClickUp"
27
+
28
+ En la barra lateral de configuración, bajo tu cuenta, entra a la sección **API de ClickUp**.
29
+ Ahí, arriba de todo, verás el bloque **API Token**.
30
+
31
+ ![Barra lateral de Settings → Apps](/tutoriales/clickup-2-api.png)
32
+
33
+ ---
34
+
35
+ ## Paso 3 — Genera o copia el token
36
+
37
+ En **API Token**:
38
+
39
+ - Si es la primera vez, haz clic en **Generate** para crearlo.
40
+ - Si ya tenías uno, aparece oculto con un botón **Copy** (y un **Regenerate** al lado).
41
+
42
+ El token empieza con `pk_` (ej. `pk_1234567_ABCDEFG…`). Haz clic en **Copy** para copiarlo.
43
+
44
+ ![Bloque API Token → Generate / Copy](/tutoriales/clickup-3-generate-copy.png)
45
+
46
+ ---
47
+
48
+ ## Paso 4 — Guárdalo en tu `.env.dai`
49
+
50
+ Pega el token en el `.env.dai` del repo (que **no se versiona**; el `.env` del equipo no se
51
+ toca — [ADR-0017](../adr/0017-env-dai.md)), en la variable que espera dai:
52
+
53
+ ```bash
54
+ DAI_PM=clickup
55
+ DAI_CLICKUP_TOKEN=pk_... # ← tu token, solo el token (sin comillas ni comentarios al lado)
56
+ # DAI_CLICKUP_LIST_ID= # solo hace falta para `dai publish` (crear tareas)
57
+ ```
58
+
59
+ Verifica con `dai doctor` → debería decir **"token de ClickUp presente"**.
60
+
61
+ ---
62
+
63
+ ## Reglas de seguridad (importante)
64
+
65
+ - 🔒 **Trátalo como una contraseña.** Nunca lo pegues en el código, en un commit, en un chat
66
+ ni en el `implements.yaml`. Solo va en `.env.dai` (no versionado).
67
+ - ♻️ **No vence por sí solo** (a diferencia de Jira): queda válido hasta que lo **regeneres**.
68
+ Regenerar crea uno nuevo e **invalida el anterior al instante** — así lo rotas y así cortas
69
+ el acceso de uno filtrado.
70
+ - 👤 **Es personal:** representa a tu usuario, con tus permisos. Cada dev usa el suyo, nunca
71
+ uno compartido.
72
+ - 🧯 **Si se filtra**, entra a la misma pantalla (paso 3) y haz **Regenerate** de inmediato;
73
+ el viejo deja de funcionar y actualizas el `.env.dai` con el nuevo.
@@ -0,0 +1,74 @@
1
+ # Cómo obtener el token de API de Jira (Atlassian)
2
+
3
+ Guía paso a paso para generar un **token de API de Atlassian**, necesario para que `dai`
4
+ (o cualquier script) se autentique contra la REST API de **Jira Cloud** cuando el tracker
5
+ del repo es Jira (`DAI_PM=jira`).
6
+
7
+ > **¿Por qué un token y no la contraseña?** Jira Cloud no permite autenticar la API con la
8
+ > contraseña de la cuenta (menos aún con SSO / verificación en dos pasos). El token cumple
9
+ > ese rol: es una credencial revocable, con vencimiento, que tratas **igual que una
10
+ > contraseña**.
11
+
12
+ **Atajo:** si quieres saltar los pasos 1 y 2, entra directo a
13
+ 👉 **https://id.atlassian.com/manage-profile/security/api-tokens** (te lleva al paso 3).
14
+
15
+ ---
16
+
17
+ ## Paso 1 — Abre la configuración de tu cuenta
18
+
19
+ En Jira, haz clic en tu **avatar** (arriba a la derecha) y elige **Configuración de la cuenta**.
20
+
21
+ ![Menú del avatar → Configuración de la cuenta](/tutoriales/jira-1-avatar.png)
22
+
23
+ ---
24
+
25
+ ## Paso 2 — Ve a Seguridad → Tokens de API
26
+
27
+ En la barra superior, entra a la pestaña **Seguridad**. Baja hasta la sección
28
+ **Tokens de API** y haz clic en **Crear y gestionar tokens de API**.
29
+
30
+ ![Pestaña Seguridad → Crear y gestionar tokens de API](/tutoriales/jira-2-seguridad-tokens.png)
31
+
32
+ ---
33
+
34
+ ## Paso 3 — Crea el token
35
+
36
+ Haz clic en **Crear token de API** (el botón simple, no el de "con alcances").
37
+ Acceso directo => https://id.atlassian.com/manage-profile/security/api-tokens
38
+
39
+ ![Botón Crear token de API](/tutoriales/jira-3-crear-token.png)
40
+
41
+ ---
42
+
43
+ ## Paso 4 — Nombre y vencimiento
44
+
45
+ - **Name:** un nombre que describa para qué es (ej. `dai-frontend`, `dai-backend`).
46
+ - **Caduca el:** una fecha de vencimiento. Por seguridad, Atlassian **no permite más de un
47
+ año**. Pon la fecha máxima si no quieres renovarlo seguido, o una más corta para rotarlo
48
+ antes.
49
+
50
+ Haz clic en **Crear**.
51
+
52
+ ![Formulario: Name + fecha de caducidad](/tutoriales/jira-4-nombre-vencimiento.png)
53
+
54
+ ---
55
+
56
+ ## Paso 5 — Cópialo AHORA (no se recupera después)
57
+
58
+ Atlassian te muestra el token **una sola vez**. Haz clic en **Copiar** y guárdalo en un
59
+ lugar seguro. **Si cierras esta ventana sin copiarlo, no hay forma de recuperarlo** —
60
+ tendrías que crear uno nuevo.
61
+
62
+ ![Ventana Copia tu token de API](/tutoriales/jira-5-copiar.png)
63
+
64
+ ---
65
+
66
+ ## Reglas de seguridad (importante)
67
+
68
+ - 🔒 **Trátalo como una contraseña.** Nunca lo pegues en el código, en un commit, en un chat
69
+ ni en el `implements.yaml`. Solo va en `.env.dai`, que **no se versiona** (el `.env` del
70
+ equipo no se toca; ver [ADR-0017](../adr/0017-env-dai.md)).
71
+ - ♻️ **Rótalo** periódicamente y **revoca** los que no uses (misma pantalla del paso 3, columna
72
+ *Acción → Revocar*).
73
+ - ⏱️ **Vencimiento:** el token deja de funcionar en la fecha que pusiste; anota cuándo renovarlo.
74
+ - 🧯 **Si se filtra**, revócalo de inmediato y crea uno nuevo.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dforce2055/dai",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Metodología de desarrollo asistido por IA — CLI de acciones deterministas (trazabilidad QUÉ↔CÓMO).",
5
5
  "repository": { "type": "git", "url": "git+https://github.com/dforce2055/dai.git" },
6
6
  "homepage": "https://dforce2055.github.io/dai/",
@@ -32,7 +32,7 @@
32
32
  "skills",
33
33
  "manifest.yaml",
34
34
  "install.sh",
35
- ".env.example",
35
+ ".env.dai.example",
36
36
  "VERSION",
37
37
  "LICENSE",
38
38
  "README.md",
@@ -43,7 +43,13 @@
43
43
  ],
44
44
  "scripts": {
45
45
  "test": "node --test cli/test/*.test.mjs",
46
- "prepublishOnly": "npm test"
46
+ "prepublishOnly": "npm test",
47
+ "docs:dev": "vitepress dev",
48
+ "docs:build": "vitepress build",
49
+ "docs:preview": "vitepress preview"
50
+ },
51
+ "devDependencies": {
52
+ "vitepress": "^1.6.3"
47
53
  },
48
54
  "engines": {
49
55
  "node": ">=18"