@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.
- package/{.env.example → .env.dai.example} +3 -3
- package/CHANGELOG.md +41 -0
- package/README.md +36 -25
- package/VERSION +1 -1
- package/cli/dai.mjs +97 -41
- package/cli/lib/bootstrap.mjs +39 -7
- package/cli/lib/env.mjs +12 -0
- package/cli/lib/pm-clickup.mjs +2 -2
- package/cli/lib/pm-jira.mjs +2 -2
- package/cli/lib/skills-source.mjs +8 -0
- package/docs/EJEMPLO-END-TO-END.md +52 -43
- package/docs/MANIFIESTO.md +2 -2
- package/docs/METODOLOGIA.md +20 -15
- package/docs/PROBAR.md +13 -14
- package/docs/SCRUM-CON-IA.md +10 -10
- package/docs/adr/0003-deteccion-y-estampado-son-comandos.md +1 -1
- package/docs/adr/0006-distribucion-y-licencia.md +1 -1
- package/docs/adr/0013-skills-externas-install-from.md +11 -4
- package/docs/adr/0015-jira-corporativo.md +1 -1
- package/docs/adr/0017-env-dai.md +64 -0
- package/docs/adr/README.md +1 -0
- package/docs/detalle/01-refinamiento.md +6 -5
- package/docs/detalle/03-ramas.md +2 -2
- package/docs/detalle/04-tdd.md +15 -9
- package/docs/detalle/06-code-review.md +8 -5
- package/docs/detalle/08-daily.md +1 -1
- package/docs/detalle/README.md +1 -1
- package/docs/glosario.md +2 -2
- package/docs/guias/dev.md +10 -7
- package/docs/guias/index.md +12 -0
- package/docs/guias/lead.md +1 -1
- package/docs/guias/po.md +13 -7
- package/docs/index.md +35 -0
- package/docs/public/favicon.svg +12 -0
- package/docs/public/logo-link.svg +12 -0
- package/docs/public/logo.svg +12 -0
- package/docs/public/tutoriales/clickup-1-settings.png +0 -0
- package/docs/public/tutoriales/clickup-2-api.png +0 -0
- package/docs/public/tutoriales/clickup-3-generate-copy.png +0 -0
- package/docs/public/tutoriales/jira-1-avatar.png +0 -0
- package/docs/public/tutoriales/jira-2-seguridad-tokens.png +0 -0
- package/docs/public/tutoriales/jira-3-crear-token.png +0 -0
- package/docs/public/tutoriales/jira-4-nombre-vencimiento.png +0 -0
- package/docs/public/tutoriales/jira-5-copiar.png +0 -0
- package/docs/tutoriales/claves-ssh.md +93 -0
- package/docs/tutoriales/configurar-git.md +53 -0
- package/docs/tutoriales/index.md +18 -0
- package/docs/tutoriales/instalar-glab.md +74 -0
- package/docs/tutoriales/token-clickup.md +73 -0
- package/docs/tutoriales/token-jira.md +74 -0
- 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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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.
|
|
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"
|