sdd-es 2.0.0 → 2.6.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/.claude/settings.json +29 -29
- package/.claude/settings.local.json +10 -0
- package/.claude-plugin/marketplace.json +10 -7
- package/.claude-plugin/plugin.json +59 -37
- package/.gitignore +20 -0
- package/.mcp.json +8 -0
- package/LICENSE +21 -0
- package/README.md +77 -40
- package/agents/architecture-designer.md +211 -0
- package/agents/arquitecto.md +16 -1
- package/agents/asesor-datos.md +15 -1
- package/agents/critico.md +37 -1
- package/agents/desarrollador-backend.md +3 -1
- package/agents/desarrollador-frontend.md +11 -16
- package/agents/disenador-api.md +13 -1
- package/agents/documentador.md +3 -1
- package/agents/investigador.md +3 -1
- package/agents/operaciones.md +3 -1
- package/agents/product-designer.md +268 -0
- package/agents/revisor.md +25 -1
- package/agents/seguridad.md +5 -1
- package/agents/tester.md +3 -1
- package/claude-hooks/agent-memory.js +288 -0
- package/claude-hooks/pre-tool-guard.js +61 -9
- package/cli/index.js +1 -2
- package/commands/sdd.adr.md +196 -0
- package/commands/sdd.analizar.md +23 -2
- package/commands/sdd.ayuda.md +13 -0
- package/commands/sdd.compliance.md +521 -0
- package/commands/sdd.configurar.md +34 -1
- package/commands/sdd.constitucion.md +198 -23
- package/commands/sdd.construir.md +210 -0
- package/commands/sdd.crear-mcp.md +2 -0
- package/commands/sdd.defect-report.md +134 -0
- package/commands/sdd.descubrir.md +19 -0
- package/commands/sdd.dise/303/261ar.md +188 -0
- package/commands/sdd.estado.md +120 -3
- package/commands/sdd.exportar.md +344 -0
- package/commands/sdd.implementar.md +272 -52
- package/commands/sdd.interpretar.md +239 -0
- package/commands/sdd.md +93 -4
- package/commands/sdd.optimizar-memoria.md +47 -0
- package/commands/sdd.optimizar.md +164 -0
- package/commands/sdd.planificar.md +64 -0
- package/commands/sdd.retro.md +74 -0
- package/commands/sdd.verificar.md +81 -0
- package/configuracion-ejemplo/.claude/CLAUDE.md +106 -0
- package/configuracion-ejemplo/sdd.config.yaml +10 -0
- package/craft/accessibility-baseline.md +216 -0
- package/craft/anti-ai-slop.md +158 -0
- package/craft/color.md +160 -0
- package/craft/typography.md +121 -0
- package/design-systems/bold-brutalist/DESIGN.md +239 -0
- package/design-systems/editorial-minimal/DESIGN.md +205 -0
- package/design-systems/neutral-modern/DESIGN.md +227 -0
- package/design-systems/vibrant-consumer/DESIGN.md +257 -0
- package/design-systems/warm-editorial/DESIGN.md +221 -0
- package/docs/AGENTES.md +4 -1
- package/docs/CASO-COMPLETO.md +206 -0
- package/docs/EJEMPLOS.md +61 -185
- package/docs/FABRICA.md +163 -115
- package/docs/INICIO-RAPIDO.md +27 -79
- package/docs/MEMORIA-Y-OBSERVABILIDAD.md +239 -0
- package/docs/MODELOS.md +3 -0
- package/docs/QUE-PASA-SI-FALLA.md +404 -0
- package/docs/README.md +43 -0
- package/docs/RELACION-CON-CLAUDE-CODE.md +38 -0
- package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
- package/package.json +15 -10
- package/plantillas/job-story-mejorar-prompt.md +107 -0
- package/presets/enterprise.yaml +6 -0
- package/presets/lean.yaml +4 -0
- package/presets/startup.yaml +6 -0
- package/skills/adr-indexer/SKILL.md +181 -0
- package/skills/cache-audit/SKILL.md +163 -0
- package/skills/critica-diseno/SKILL.md +193 -0
- package/skills/descubrir-idea/SKILL.md +133 -0
- package/skills/effort-router/SKILL.md +128 -0
- package/skills/elegir-direccion/SKILL.md +184 -0
- package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
- package/skills/github-connect/INDEX.md +223 -0
- package/skills/github-connect/INTEGRATION.md +361 -0
- package/skills/github-connect/QUICK-START.md +168 -0
- package/skills/github-connect/README.md +414 -0
- package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
- package/skills/github-connect/SKILL.md +343 -0
- package/skills/github-connect/STRUCTURE.txt +252 -0
- package/skills/github-connect/example-config.yaml +41 -0
- package/skills/github-connect/github-connect.sh +419 -0
- package/skills/interpretar-idea/SKILL.md +254 -0
- package/skills/mejorar-prompt/SKILL.md +237 -0
- package/skills/memory-compactor/SKILL.md +68 -0
- package/skills/modo-guiado/SKILL.md +12 -2
- package/skills/mutation-detector/SKILL.md +134 -0
- package/skills/observabilidad-consumo/SKILL.md +164 -0
- package/skills/token-budget/SKILL.md +177 -0
- package/skills/vercel-deploy/00-START-HERE.txt +364 -0
- package/skills/vercel-deploy/CHECKLIST.md +205 -0
- package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
- package/skills/vercel-deploy/FLOW.txt +334 -0
- package/skills/vercel-deploy/INDEX.md +276 -0
- package/skills/vercel-deploy/INTEGRATION.md +328 -0
- package/skills/vercel-deploy/MANIFEST.md +310 -0
- package/skills/vercel-deploy/README.md +65 -0
- package/skills/vercel-deploy/SKILL.md +356 -0
- package/skills/vercel-deploy/deploy.sh +298 -0
- package/skills/vercel-deploy/estado.json.example +205 -0
- package/skills/vercel-deploy/skill.yaml +323 -0
- package/skills/vercel-deploy/vercel-deploy.sh +216 -0
- package/skills/wireframe-mvp/SKILL.md +157 -0
- package/docs/EJEMPLO-PRACTICA.md +0 -383
- package/mcp-figma/README.md +0 -158
- package/mcp-figma/package.json +0 -7
- package/mcp-figma/src/component-generator.js +0 -162
- package/mcp-figma/src/design-system-analyzer.js +0 -247
- package/mcp-figma/src/figma-client.js +0 -75
- package/mcp-figma/src/index.js +0 -114
- package/mcp-figma/src/mcp.js +0 -97
- package/mcp-figma/src/style-mapper.js +0 -85
- /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
- /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
- /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
- /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
- /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
- /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
- /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
- /package/skills/{verificador-implementacion.md → verificador-implementacion/SKILL.md} +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Direction picker inspirado en open-design. Selecciona 3 de las 5 direcciones visuales disponibles según el tipo de producto y audiencia del IR, y el usuario elige una antes de generar cualquier diseño.
|
|
3
|
+
model: sonnet
|
|
4
|
+
allowed-tools: Read, Write
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: Elegir Dirección Visual
|
|
8
|
+
|
|
9
|
+
## Propósito
|
|
10
|
+
|
|
11
|
+
Antes de diseñar pantallas, el usuario elige **una dirección visual** que guiará todo el diseño del proyecto. Esta elección activa el DESIGN.md correspondiente y define paleta, tipografía, y estilo de componentes.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Contexto que leer primero
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cat .sdd/ir.json 2>/dev/null | node -e "
|
|
19
|
+
const ir = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));
|
|
20
|
+
console.log('type:', ir.product?.type);
|
|
21
|
+
console.log('users:', ir.product?.target_users);
|
|
22
|
+
console.log('name:', ir.product?.name);
|
|
23
|
+
"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Las 5 direcciones disponibles
|
|
29
|
+
|
|
30
|
+
| Slug | Nombre | Ideal para |
|
|
31
|
+
|------|--------|-----------|
|
|
32
|
+
| `neutral-modern` | Neutral Moderno | SaaS B2B, dashboards, herramientas, apps de productividad |
|
|
33
|
+
| `warm-editorial` | Editorial Cálido | Blogs, marketplaces de nicho, apps culturales, contenido |
|
|
34
|
+
| `bold-brutalist` | Bold Brutalist | Herramientas dev, portfolios, startups técnicas, CLI wrappers |
|
|
35
|
+
| `editorial-minimal` | Editorial Minimal | Firmas profesionales, consultoras, galerías, portfolios premium |
|
|
36
|
+
| `vibrant-consumer` | Vibrant Consumer | Apps B2C, educación, fitness, entretenimiento, onboarding |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Lógica de selección — cuáles 3 mostrar
|
|
41
|
+
|
|
42
|
+
Basado en `product.type` y `target_users` del IR:
|
|
43
|
+
|
|
44
|
+
| Tipo | Audiencia | Mostrar (orden de recomendación) |
|
|
45
|
+
|------|-----------|----------------------------------|
|
|
46
|
+
| `saas` | B2B / profesionales | Neutral Modern, Bold Brutalist, Editorial Minimal |
|
|
47
|
+
| `saas` | B2C / consumidores | Neutral Modern, Vibrant Consumer, Warm Editorial |
|
|
48
|
+
| `web` | General | Neutral Modern, Vibrant Consumer, Warm Editorial |
|
|
49
|
+
| `mobile` | Consumidores | Vibrant Consumer, Neutral Modern, Warm Editorial |
|
|
50
|
+
| `mobile` | Profesionales | Neutral Modern, Bold Brutalist, Vibrant Consumer |
|
|
51
|
+
| `api` / `cli` | Desarrolladores | Bold Brutalist, Neutral Modern, Editorial Minimal |
|
|
52
|
+
| `landing` / marketing | Cualquiera | Bold Brutalist, Vibrant Consumer, Neutral Modern |
|
|
53
|
+
| Contenido / editorial | Lectores | Warm Editorial, Editorial Minimal, Neutral Modern |
|
|
54
|
+
| Portfolio / agencia | Clientes premium | Editorial Minimal, Bold Brutalist, Warm Editorial |
|
|
55
|
+
|
|
56
|
+
Si no hay IR o el tipo no está claro → mostrar: **Neutral Modern, Vibrant Consumer, Bold Brutalist**.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Flujo
|
|
61
|
+
|
|
62
|
+
### Paso 1: Determinar las 3 opciones a mostrar
|
|
63
|
+
|
|
64
|
+
Analiza el IR y selecciona las 3 direcciones más adecuadas según la tabla de arriba. Ordénalas de más a menos recomendada.
|
|
65
|
+
|
|
66
|
+
### Paso 2: Mostrar las 3 opciones al usuario
|
|
67
|
+
|
|
68
|
+
Presenta las 3 opciones con descripción visual, paleta de colores y tipografía:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Elige la dirección visual para [product.name]:
|
|
72
|
+
|
|
73
|
+
┌─────────────────────────────────────────────────────────┐
|
|
74
|
+
│ 1. [NOMBRE DE LA DIRECCIÓN 1] │
|
|
75
|
+
│ [Descripción de 2 líneas: qué sensación transmite │
|
|
76
|
+
│ y para qué tipo de producto es ideal] │
|
|
77
|
+
│ │
|
|
78
|
+
│ Paleta: [color bg] [color text] [color accent] │
|
|
79
|
+
│ Fuente: [nombre de la fuente principal] │
|
|
80
|
+
│ Estilo: [3–4 palabras del estilo visual] │
|
|
81
|
+
├─────────────────────────────────────────────────────────┤
|
|
82
|
+
│ 2. [NOMBRE DE LA DIRECCIÓN 2] │
|
|
83
|
+
│ [Descripción] │
|
|
84
|
+
│ │
|
|
85
|
+
│ Paleta: [...] │
|
|
86
|
+
│ Fuente: [...] │
|
|
87
|
+
│ Estilo: [...] │
|
|
88
|
+
├─────────────────────────────────────────────────────────┤
|
|
89
|
+
│ 3. [NOMBRE DE LA DIRECCIÓN 3] │
|
|
90
|
+
│ [Descripción] │
|
|
91
|
+
│ │
|
|
92
|
+
│ Paleta: [...] │
|
|
93
|
+
│ Fuente: [...] │
|
|
94
|
+
│ Estilo: [...] │
|
|
95
|
+
└─────────────────────────────────────────────────────────┘
|
|
96
|
+
|
|
97
|
+
Escribe 1, 2 o 3 (o descríbeme qué buscas):
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Datos de cada dirección para el display:**
|
|
101
|
+
|
|
102
|
+
| Dirección | Paleta (bg / text / accent) | Fuente | Estilo |
|
|
103
|
+
|-----------|---------------------------|--------|--------|
|
|
104
|
+
| Neutral Modern | ⬜ #FAFAFA / ⬛ #111111 / 🔵 #2563EB | Inter | Limpio, funcional, espacioso |
|
|
105
|
+
| Warm Editorial | 🟫 #FAF8F4 / 🟤 #2C2416 / 🔴 #C0392B | Playfair Display | Editorial, cálido, tipográfico |
|
|
106
|
+
| Bold Brutalist | ⬛ #0A0A0A / ⬜ #F5F5F5 / 🟡 #F0E040 | Space Grotesk 900 | Impactante, UPPERCASE, offset shadow |
|
|
107
|
+
| Editorial Minimal | ⬜ #FFFFFF / ⬛ #0A0A0A / ⬛ #0A0A0A | Cormorant Garamond | Silencioso, espacio vacío, austero |
|
|
108
|
+
| Vibrant Consumer | 💜 #F8F7FF / 🟣 #1A1535 / 🟣 #6C3FF5 | Nunito 900 | Energético, redondeado, colorido |
|
|
109
|
+
|
|
110
|
+
### Paso 3: Procesar la elección
|
|
111
|
+
|
|
112
|
+
El usuario escribe `1`, `2`, `3`, o una descripción libre.
|
|
113
|
+
|
|
114
|
+
**Mapeo de respuestas libres:**
|
|
115
|
+
- "neutral" / "limpio" / "moderno" / "profesional" → `neutral-modern`
|
|
116
|
+
- "cálido" / "editorial" / "revista" / "warm" → `warm-editorial`
|
|
117
|
+
- "bold" / "brutal" / "oscuro" / "impactante" / "técnico" → `bold-brutalist`
|
|
118
|
+
- "minimal" / "minimalista" / "austero" / "elegante" / "premium" → `editorial-minimal`
|
|
119
|
+
- "colorido" / "vibrant" / "energía" / "dinámico" / "consumidor" → `vibrant-consumer`
|
|
120
|
+
|
|
121
|
+
Si el usuario describe algo ambiguo, elige la más cercana y explica por qué:
|
|
122
|
+
```
|
|
123
|
+
Entendido. Usaré [Dirección] — [razón en 1 frase].
|
|
124
|
+
Si prefieres otra, escribe el número o descríbela.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Paso 4: Activar el DESIGN.md
|
|
128
|
+
|
|
129
|
+
Lee el DESIGN.md de la dirección elegida:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
DIRECTION="[slug elegido]"
|
|
133
|
+
cat "{PLUGIN_DIR}/design-systems/$DIRECTION/DESIGN.md"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Guarda la elección en `.sdd/estado.json`:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
node -e "
|
|
140
|
+
const fs = require('fs');
|
|
141
|
+
const p = '.sdd/estado.json';
|
|
142
|
+
const estado = fs.existsSync(p) ? JSON.parse(fs.readFileSync(p, 'utf8')) : {};
|
|
143
|
+
estado.design_direction = '$DIRECTION';
|
|
144
|
+
estado.design_system_path = '{PLUGIN_DIR}/design-systems/$DIRECTION/DESIGN.md';
|
|
145
|
+
estado.ultima_actualizacion = new Date().toISOString();
|
|
146
|
+
fs.mkdirSync('.sdd', { recursive: true });
|
|
147
|
+
fs.writeFileSync(p, JSON.stringify(estado, null, 2));
|
|
148
|
+
"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Paso 5: Confirmar
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
✅ Dirección elegida: [Nombre de la dirección]
|
|
155
|
+
|
|
156
|
+
El diseño de [product.name] usará:
|
|
157
|
+
• Paleta: [colores principales del DESIGN.md]
|
|
158
|
+
• Tipografía: [fuentes del DESIGN.md]
|
|
159
|
+
• Estilo: [descriptor de 1 línea]
|
|
160
|
+
|
|
161
|
+
Continuando con el diseño de pantallas...
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
No pedir confirmación adicional — pasar directo al agente `product-designer`.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Salida guardada
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
.sdd/estado.json → campos "design_direction" + "design_system_path"
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
El DESIGN.md activo se referencia en `product-design.json` bajo `design_system_ref`.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Notas
|
|
179
|
+
|
|
180
|
+
- Esta skill nunca genera código HTML ni diseño — solo selecciona la dirección
|
|
181
|
+
- El DESIGN.md activo es la guía para **todo** lo que viene después (wireframe, UI, crítica)
|
|
182
|
+
- Si el usuario quiere cambiar de dirección: `/sdd.diseñar cambiar-direccion`
|
|
183
|
+
- Las 5 direcciones disponibles son: Neutral Modern, Warm Editorial, Bold Brutalist, Editorial Minimal, Vibrant Consumer
|
|
184
|
+
- Siempre se muestran exactamente 3 opciones — las más adecuadas para el IR — no las 5
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# GitHub Connect Skill - Checklist de Implementación
|
|
2
|
+
|
|
3
|
+
Guía para verificar que el skill está correctamente integrado con SDD-ES.
|
|
4
|
+
|
|
5
|
+
## Pre-Implementación
|
|
6
|
+
|
|
7
|
+
- [ ] GitHub CLI instalado en el entorno de desarrollo
|
|
8
|
+
- [ ] Token de GitHub disponible (PAT con permisos `repo` y `user:email`)
|
|
9
|
+
- [ ] Git configurado globalmente
|
|
10
|
+
- [ ] Acceso a `/skills/github-connect/` en el repositorio SDD-ES
|
|
11
|
+
- [ ] Permiso de lectura para todos los archivos del skill
|
|
12
|
+
|
|
13
|
+
## Instalación de Archivos
|
|
14
|
+
|
|
15
|
+
- [ ] `SKILL.md` creado con frontmatter YAML correcto
|
|
16
|
+
- [ ] `github-connect.sh` creado y marcado como ejecutable (`chmod +x`)
|
|
17
|
+
- [ ] `README.md` creado con documentación completa
|
|
18
|
+
- [ ] `INTEGRATION.md` creado con especificaciones técnicas
|
|
19
|
+
- [ ] `example-config.yaml` creado como referencia
|
|
20
|
+
- [ ] `STRUCTURE.txt` creado con descripción visual
|
|
21
|
+
- [ ] `IMPLEMENTATION-CHECKLIST.md` (este archivo) creado
|
|
22
|
+
|
|
23
|
+
Verificar:
|
|
24
|
+
```bash
|
|
25
|
+
ls -la /skills/github-connect/
|
|
26
|
+
# Debe mostrar 7 archivos, uno con permisos ejecutables (github-connect.sh)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Validación de Contenido
|
|
30
|
+
|
|
31
|
+
### SKILL.md
|
|
32
|
+
- [ ] Frontmatter YAML válido (name, description, tools, version, author)
|
|
33
|
+
- [ ] Sección "Propósito" clara
|
|
34
|
+
- [ ] "Entrada (Input)" documenta todos los parámetros
|
|
35
|
+
- [ ] "Flujo de Ejecución" tiene 8 pasos numerados
|
|
36
|
+
- [ ] "Salida (Output)" describe resultado esperado
|
|
37
|
+
- [ ] "Manejo de Errores" cubre 5+ casos comunes
|
|
38
|
+
- [ ] "Cuándo se invoca" explica dónde se usa en SDD-ES
|
|
39
|
+
- [ ] Changelog versionado
|
|
40
|
+
|
|
41
|
+
### github-connect.sh
|
|
42
|
+
- [ ] Shebang correcto: `#!/bin/bash`
|
|
43
|
+
- [ ] `set -euo pipefail` para error handling
|
|
44
|
+
- [ ] Funciones de logging (log_info, log_success, log_warning, log_error)
|
|
45
|
+
- [ ] 11 pasos principales implementados
|
|
46
|
+
- [ ] Variables de colores para output legible
|
|
47
|
+
- [ ] Manejo de errores en cada paso
|
|
48
|
+
- [ ] Validación de requisitos previos
|
|
49
|
+
- [ ] Resumen final con URL del repositorio
|
|
50
|
+
|
|
51
|
+
### README.md
|
|
52
|
+
- [ ] Descripción rápida clara
|
|
53
|
+
- [ ] Requisitos previos listados
|
|
54
|
+
- [ ] Instrucciones de uso completas
|
|
55
|
+
- [ ] Tabla de parámetros
|
|
56
|
+
- [ ] Ejemplos prácticos (mínimo 3)
|
|
57
|
+
- [ ] Flujo paso a paso documentado
|
|
58
|
+
- [ ] Sección "Manejo de Errores" con soluciones
|
|
59
|
+
- [ ] FAQ con preguntas comunes
|
|
60
|
+
- [ ] Validación post-ejecución
|
|
61
|
+
- [ ] Changelog versionado
|
|
62
|
+
|
|
63
|
+
### INTEGRATION.md
|
|
64
|
+
- [ ] Ubicación en el flujo de sdd.constitucion.md explicada
|
|
65
|
+
- [ ] Interfaz pública documentada
|
|
66
|
+
- [ ] Variables de entorno requeridas listadas
|
|
67
|
+
- [ ] Archivos modificados/creados listados
|
|
68
|
+
- [ ] Integración con otros skills documentada
|
|
69
|
+
- [ ] Errores comunes y recuperación
|
|
70
|
+
- [ ] Estado persistente documentado
|
|
71
|
+
- [ ] Testing e integración continua
|
|
72
|
+
- [ ] Roadmap futuro
|
|
73
|
+
|
|
74
|
+
## Integración con SDD-ES
|
|
75
|
+
|
|
76
|
+
- [ ] Skill registrado en el orquestador (`enrutador-agentes.md`)
|
|
77
|
+
- [ ] Parámetro `github-connect` disponible en `sdd.constitucion.md`
|
|
78
|
+
- [ ] Paso 4 de constitucion invoca el skill correctamente
|
|
79
|
+
- [ ] Estado del proyecto se actualiza en `gestion-estado.md`
|
|
80
|
+
- [ ] Modo guiado (`modo-guiado.md`) muestra progreso
|
|
81
|
+
- [ ] Otros skills pueden consumir la salida del skill
|
|
82
|
+
|
|
83
|
+
## Testing Básico
|
|
84
|
+
|
|
85
|
+
### Prueba Manual Unitaria
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# 1. Preparar entorno
|
|
89
|
+
cd /tmp/test-github-connect
|
|
90
|
+
git init
|
|
91
|
+
git config user.name "Test User"
|
|
92
|
+
git config user.email "test@example.com"
|
|
93
|
+
export GITHUB_TOKEN=ghp_test_xxxxx
|
|
94
|
+
|
|
95
|
+
# 2. Ejecutar skill
|
|
96
|
+
bash /path/to/github-connect.sh "test-repo" "Test" "public"
|
|
97
|
+
|
|
98
|
+
# 3. Verificar resultados
|
|
99
|
+
git remote -v # Debe mostrar origin
|
|
100
|
+
cat .sdd/sdd.config.yaml # Debe tener git.connected: true
|
|
101
|
+
git log --oneline # Debe mostrar commits
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Prueba de Validación de Errores
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Test 1: Sin token
|
|
108
|
+
unset GITHUB_TOKEN
|
|
109
|
+
bash github-connect.sh
|
|
110
|
+
# Esperado: Error que pide configurar token
|
|
111
|
+
|
|
112
|
+
# Test 2: Sin Git
|
|
113
|
+
cd /tmp/no-git
|
|
114
|
+
bash github-connect.sh
|
|
115
|
+
# Esperado: Error que pide git init
|
|
116
|
+
|
|
117
|
+
# Test 3: Sin configuración de usuario
|
|
118
|
+
git init && unset GIT_CONFIG_GLOBAL
|
|
119
|
+
bash github-connect.sh
|
|
120
|
+
# Esperado: Warning sobre configuración
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Prueba de Integración con SDD-ES
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# 1. Simular invocación desde orquestador
|
|
127
|
+
/github-connect repo_name=test-proyecto repo_visibility=public
|
|
128
|
+
|
|
129
|
+
# 2. Verificar estado actualizado en gestion-estado.md
|
|
130
|
+
grep "github_connected: true" proyecto.estado
|
|
131
|
+
|
|
132
|
+
# 3. Verificar que modo-guiado muestre URL
|
|
133
|
+
# (Revisar output en logs de CLI)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Validación de Seguridad
|
|
137
|
+
|
|
138
|
+
- [ ] Token NUNCA aparece en logs o output
|
|
139
|
+
- [ ] Token se pasa solo via variable de entorno
|
|
140
|
+
- [ ] `.sdd/sdd.config.yaml` NO contiene token
|
|
141
|
+
- [ ] Script valida entrada antes de ejecutar comandos
|
|
142
|
+
- [ ] Sin ejecución de comandos arbitrarios via parámetros
|
|
143
|
+
- [ ] Permisos de archivo correctos (`755` para script ejecutable)
|
|
144
|
+
|
|
145
|
+
## Documentación
|
|
146
|
+
|
|
147
|
+
- [ ] README tiene instrucciones de instalación claras
|
|
148
|
+
- [ ] SKILL.md es completo y sigue el estándar SDD-ES
|
|
149
|
+
- [ ] INTEGRATION.md cubre casos de uso comunes
|
|
150
|
+
- [ ] Ejemplos son ejecutables y probados
|
|
151
|
+
- [ ] Links a documentación oficial funcionan
|
|
152
|
+
- [ ] Sin typos o errores gramaticales significativos
|
|
153
|
+
|
|
154
|
+
## Deployment
|
|
155
|
+
|
|
156
|
+
- [ ] Archivos en directorio correcto: `/skills/github-connect/`
|
|
157
|
+
- [ ] Permisos correctos asignados (github-connect.sh ejecutable)
|
|
158
|
+
- [ ] Documentación accesible desde CLI
|
|
159
|
+
- [ ] Skill listado en catálogo de skills
|
|
160
|
+
- [ ] Help disponible vía `/help github-connect`
|
|
161
|
+
|
|
162
|
+
## Post-Deployment
|
|
163
|
+
|
|
164
|
+
- [ ] Skill aparece en `/skills list`
|
|
165
|
+
- [ ] `/help github-connect` muestra documentación
|
|
166
|
+
- [ ] Skill se invoca correctamente desde orquestador
|
|
167
|
+
- [ ] Usuario no-técnico puede ejecutar sin errores
|
|
168
|
+
- [ ] Repositorio se crea en GitHub correctamente
|
|
169
|
+
- [ ] `.sdd/sdd.config.yaml` se genera correctamente
|
|
170
|
+
- [ ] Push inicial se completa exitosamente
|
|
171
|
+
|
|
172
|
+
## Monitoreo
|
|
173
|
+
|
|
174
|
+
### Logs a Revisar
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Logs de ejecución del skill
|
|
178
|
+
tail -f ~/.sdd-lite/logs/skills.log
|
|
179
|
+
|
|
180
|
+
# Errores de GitHub CLI
|
|
181
|
+
gh repo view <repo> --json name
|
|
182
|
+
|
|
183
|
+
# Logs de git
|
|
184
|
+
git log --all --oneline
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Métricas a Rastrear
|
|
188
|
+
|
|
189
|
+
- [ ] Tiempo promedio de ejecución: ~30-60 segundos
|
|
190
|
+
- [ ] Tasa de éxito: >95% (casos de uso estándar)
|
|
191
|
+
- [ ] Errores comunes identificados y documentados
|
|
192
|
+
- [ ] Usuario satisfaction score (si es aplicable)
|
|
193
|
+
|
|
194
|
+
## Casos de Uso Validados
|
|
195
|
+
|
|
196
|
+
### Caso 1: Repositorio Público Nuevo
|
|
197
|
+
- [ ] Token válido
|
|
198
|
+
- [ ] Repositorio no existe
|
|
199
|
+
- [ ] Usuario puede crear repos
|
|
200
|
+
- [ ] Resultado: Repo creado, push exitoso
|
|
201
|
+
|
|
202
|
+
### Caso 2: Repositorio Privado
|
|
203
|
+
- [ ] Token tiene permisos `repo`
|
|
204
|
+
- [ ] Parámetro `repo_visibility=private`
|
|
205
|
+
- [ ] Resultado: Repo privado creado
|
|
206
|
+
|
|
207
|
+
### Caso 3: Repositorio Existente
|
|
208
|
+
- [ ] Repositorio ya existe en GitHub
|
|
209
|
+
- [ ] Skill detecta existencia
|
|
210
|
+
- [ ] Se configura remote al existente
|
|
211
|
+
- [ ] Push no crea duplicados
|
|
212
|
+
|
|
213
|
+
### Caso 4: Sin Cambios para Commitear
|
|
214
|
+
- [ ] Repositorio vacío
|
|
215
|
+
- [ ] Skill no falla
|
|
216
|
+
- [ ] Resultado: Config guardada, sin commit inicial
|
|
217
|
+
|
|
218
|
+
### Caso 5: Recuperación de Errores
|
|
219
|
+
- [ ] Token expirado → mostrar instrucciones
|
|
220
|
+
- [ ] GitHub CLI no instalado → sugerir instalación
|
|
221
|
+
- [ ] Sin configuración Git → pedir configuración
|
|
222
|
+
- [ ] Resultado: Usuario puede recuperarse
|
|
223
|
+
|
|
224
|
+
## Rollback Plan
|
|
225
|
+
|
|
226
|
+
Si hay issues después del deployment:
|
|
227
|
+
|
|
228
|
+
1. **Deshabilitar skill temporalmente:**
|
|
229
|
+
```bash
|
|
230
|
+
mv /skills/github-connect /skills/github-connect.disabled
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
2. **Revisar logs:**
|
|
234
|
+
```bash
|
|
235
|
+
grep -i "github-connect" ~/.sdd-lite/logs/*.log
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
3. **Reportar bug con:**
|
|
239
|
+
- Error message exacto
|
|
240
|
+
- Parámetros usados
|
|
241
|
+
- Output completo del script
|
|
242
|
+
- Versión de gh, git, bash
|
|
243
|
+
|
|
244
|
+
4. **Restaurar si es necesario:**
|
|
245
|
+
```bash
|
|
246
|
+
mv /skills/github-connect.disabled /skills/github-connect
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## Decisiones de Diseño
|
|
250
|
+
|
|
251
|
+
### Por qué Bash en lugar de Python/Node?
|
|
252
|
+
- Bash es pre-instalado en la mayoría de sistemas
|
|
253
|
+
- Menos dependencias externas
|
|
254
|
+
- Más rápido para operaciones de CLI
|
|
255
|
+
- Mejor integración con git/gh
|
|
256
|
+
|
|
257
|
+
### Por qué HTTPS en lugar de SSH?
|
|
258
|
+
- Funciona sin configuración de SSH key
|
|
259
|
+
- GITHUB_TOKEN es más simple que SSH keys
|
|
260
|
+
- Mejor para usuarios no-técnicos
|
|
261
|
+
- Más seguro para CI/CD
|
|
262
|
+
|
|
263
|
+
### Por qué `.sdd/sdd.config.yaml`?
|
|
264
|
+
- Centraliza configuración de SDD-ES
|
|
265
|
+
- Fácil de leer y editar
|
|
266
|
+
- Integrable con otros skills
|
|
267
|
+
- Versionable en git
|
|
268
|
+
|
|
269
|
+
## Próximos Pasos
|
|
270
|
+
|
|
271
|
+
1. **Fase 1 (V1.0 actual):**
|
|
272
|
+
- Soporte básico para repositorios público/privado
|
|
273
|
+
- Token via variable de entorno
|
|
274
|
+
- Configuración en `.sdd/`
|
|
275
|
+
|
|
276
|
+
2. **Fase 2 (V1.1):**
|
|
277
|
+
- [ ] Soporte para SSH keys
|
|
278
|
+
- [ ] Integración con GitHub Actions
|
|
279
|
+
- [ ] Configuración de protecciones de rama
|
|
280
|
+
|
|
281
|
+
3. **Fase 3 (V2.0):**
|
|
282
|
+
- [ ] Soporte para GitHub Organizations
|
|
283
|
+
- [ ] Soporte para múltiples remotes
|
|
284
|
+
- [ ] Integración con dependabot
|
|
285
|
+
|
|
286
|
+
## Firma de Implementación
|
|
287
|
+
|
|
288
|
+
- Implementado por: SDD-ES Orchestrator
|
|
289
|
+
- Fecha: 2026-06-13
|
|
290
|
+
- Versión: 1.0.0
|
|
291
|
+
- Estado: LISTO PARA PRODUCCIÓN
|
|
292
|
+
- Último testing: 2026-06-13
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
**Próximo revisor:** Equipo de SDD-ES
|
|
297
|
+
**Fecha de revisión estimada:** 2026-06-20
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# GitHub Connect Skill - Índice de Documentación
|
|
2
|
+
|
|
3
|
+
Skill para conectar proyectos a GitHub automáticamente.
|
|
4
|
+
|
|
5
|
+
## Archivos del Skill
|
|
6
|
+
|
|
7
|
+
### Archivos de Usuario
|
|
8
|
+
|
|
9
|
+
| Archivo | Tamaño | Propósito |
|
|
10
|
+
|---------|--------|----------|
|
|
11
|
+
| **QUICK-START.md** | 2.5 KB | Comienza en 5 minutos - la lectura más rápida |
|
|
12
|
+
| **README.md** | 9.3 KB | Documentación completa para usuarios |
|
|
13
|
+
| **SKILL.md** | 9.1 KB | Especificación oficial del skill |
|
|
14
|
+
|
|
15
|
+
### Archivos Técnicos
|
|
16
|
+
|
|
17
|
+
| Archivo | Tamaño | Propósito |
|
|
18
|
+
|---------|--------|----------|
|
|
19
|
+
| **github-connect.sh** | 12 KB | Script bash ejecutable - implementación principal |
|
|
20
|
+
| **INTEGRATION.md** | 7.8 KB | Guía de integración técnica con SDD-ES |
|
|
21
|
+
| **example-config.yaml** | 1.2 KB | Ejemplo de configuración generada |
|
|
22
|
+
|
|
23
|
+
### Archivos de Referencia
|
|
24
|
+
|
|
25
|
+
| Archivo | Tamaño | Propósito |
|
|
26
|
+
|---------|--------|----------|
|
|
27
|
+
| **STRUCTURE.txt** | 4.2 KB | Descripción visual de la estructura |
|
|
28
|
+
| **IMPLEMENTATION-CHECKLIST.md** | 6.1 KB | Checklist para implementadores |
|
|
29
|
+
| **RESUMEN_IMPLEMENTACION.txt** | 5.8 KB | Resumen ejecutivo de la implementación |
|
|
30
|
+
| **INDEX.md** | Este archivo | Índice y guía de navegación |
|
|
31
|
+
|
|
32
|
+
## Guía de Lectura
|
|
33
|
+
|
|
34
|
+
### Para Usuarios Finales (15 minutos)
|
|
35
|
+
|
|
36
|
+
1. Comienza con: **QUICK-START.md**
|
|
37
|
+
- Instala requisitos
|
|
38
|
+
- Genera token GitHub
|
|
39
|
+
- Ejecuta el skill
|
|
40
|
+
- Verifica que funciona
|
|
41
|
+
|
|
42
|
+
2. Luego lee: **README.md**
|
|
43
|
+
- Parámetros disponibles
|
|
44
|
+
- Ejemplos prácticos
|
|
45
|
+
- Troubleshooting
|
|
46
|
+
|
|
47
|
+
### Para Integradores/Arquitectos (45 minutos)
|
|
48
|
+
|
|
49
|
+
1. Lee: **SKILL.md**
|
|
50
|
+
- Especificación oficial
|
|
51
|
+
- Flujo detallado
|
|
52
|
+
- Interfaz del skill
|
|
53
|
+
|
|
54
|
+
2. Lee: **INTEGRATION.md**
|
|
55
|
+
- Cómo se integra con SDD-ES
|
|
56
|
+
- Interfaz pública
|
|
57
|
+
- Casos de uso
|
|
58
|
+
|
|
59
|
+
3. Revisa: **github-connect.sh**
|
|
60
|
+
- Implementación real
|
|
61
|
+
- Manejo de errores
|
|
62
|
+
- Funciones principales
|
|
63
|
+
|
|
64
|
+
### Para Administradores/DevOps (60 minutos)
|
|
65
|
+
|
|
66
|
+
1. Lee: **IMPLEMENTATION-CHECKLIST.md**
|
|
67
|
+
- Pre-implementación
|
|
68
|
+
- Testing
|
|
69
|
+
- Deployment
|
|
70
|
+
|
|
71
|
+
2. Consulta: **INTEGRATION.md**
|
|
72
|
+
- Variables de entorno
|
|
73
|
+
- Integración continua
|
|
74
|
+
- Rollback plan
|
|
75
|
+
|
|
76
|
+
3. Revisa: **STRUCTURE.txt**
|
|
77
|
+
- Archivos modificados
|
|
78
|
+
- Seguridad
|
|
79
|
+
- Requisitos
|
|
80
|
+
|
|
81
|
+
## Referencia Rápida
|
|
82
|
+
|
|
83
|
+
### Invocar el Skill
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Forma simple
|
|
87
|
+
/github-connect
|
|
88
|
+
|
|
89
|
+
# Con parámetros
|
|
90
|
+
/github-connect repo_name=mi-proyecto repo_visibility=private
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Parámetros Principales
|
|
94
|
+
|
|
95
|
+
- `repo_name` - Nombre del repositorio (default: nombre de carpeta)
|
|
96
|
+
- `repo_description` - Descripción (default: "Proyecto SDD-ES")
|
|
97
|
+
- `repo_visibility` - "public" o "private" (default: "public")
|
|
98
|
+
- `branch_name` - Rama principal (default: "main")
|
|
99
|
+
- `auto_init_commit` - Hacer commit inicial (default: true)
|
|
100
|
+
|
|
101
|
+
### Requisitos
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
git --version # 2.20+
|
|
105
|
+
gh --version # 1.0+
|
|
106
|
+
export GITHUB_TOKEN= # Token válido
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Verificar Después
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
git remote -v # Ver remote
|
|
113
|
+
gh repo view # Ver repo
|
|
114
|
+
cat .sdd/sdd.config.yaml # Ver config
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Estructura de Carpeta
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
/skills/github-connect/
|
|
121
|
+
├── SKILL.md ← Especificación
|
|
122
|
+
├── github-connect.sh ← Script ejecutable
|
|
123
|
+
├── README.md ← Manual de usuario
|
|
124
|
+
├── INTEGRATION.md ← Integración técnica
|
|
125
|
+
├── example-config.yaml ← Ejemplo de config
|
|
126
|
+
├── STRUCTURE.txt ← Descripción visual
|
|
127
|
+
├── IMPLEMENTATION-CHECKLIST.md ← Checklist
|
|
128
|
+
├── RESUMEN_IMPLEMENTACION.txt ← Resumen ejecutivo
|
|
129
|
+
├── QUICK-START.md ← Inicio rápido
|
|
130
|
+
└── INDEX.md ← Este archivo
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Flujo de Ejecución Simplificado
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
Usuario ejecuta: /github-connect
|
|
137
|
+
↓
|
|
138
|
+
github-connect.sh valida requisitos
|
|
139
|
+
↓
|
|
140
|
+
Obtiene info del usuario GitHub
|
|
141
|
+
↓
|
|
142
|
+
Verifica/crea repositorio
|
|
143
|
+
↓
|
|
144
|
+
Configura git remote
|
|
145
|
+
↓
|
|
146
|
+
Hace commit y push
|
|
147
|
+
↓
|
|
148
|
+
Guarda .sdd/sdd.config.yaml
|
|
149
|
+
↓
|
|
150
|
+
Muestra resumen con URL
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Características Principales
|
|
154
|
+
|
|
155
|
+
✅ Validación automática de token
|
|
156
|
+
✅ Creación de repositorio
|
|
157
|
+
✅ Configuración de remote
|
|
158
|
+
✅ Commit y push inicial
|
|
159
|
+
✅ Configuración persistente
|
|
160
|
+
✅ Manejo de errores robusto
|
|
161
|
+
✅ Salida clara y legible
|
|
162
|
+
✅ Idempotente (seguro ejecutar múltiples veces)
|
|
163
|
+
|
|
164
|
+
## Seguridad
|
|
165
|
+
|
|
166
|
+
- Token nunca se loguea
|
|
167
|
+
- Configuración guardada NO contiene secretos
|
|
168
|
+
- Validación de entrada
|
|
169
|
+
- Permisos correctos
|
|
170
|
+
- Comunicación HTTPS
|
|
171
|
+
|
|
172
|
+
## Casos de Uso
|
|
173
|
+
|
|
174
|
+
1. **Repositorio público nuevo** - Caso estándar
|
|
175
|
+
2. **Repositorio privado** - Con `repo_visibility=private`
|
|
176
|
+
3. **Repositorio existente** - El skill lo detecta y reutiliza
|
|
177
|
+
4. **Rama personalizada** - Con `branch_name=develop`
|
|
178
|
+
5. **Sin commit inicial** - Con `auto_init_commit=false`
|
|
179
|
+
|
|
180
|
+
## Errores Comunes
|
|
181
|
+
|
|
182
|
+
| Error | Solución |
|
|
183
|
+
|-------|----------|
|
|
184
|
+
| Token no configurado | `export GITHUB_TOKEN=ghp_xxx` |
|
|
185
|
+
| GitHub CLI no instalado | `brew install gh` |
|
|
186
|
+
| Git no configurado | `git config user.name/email` |
|
|
187
|
+
| Repositorio existe | El skill lo reutiliza automáticamente |
|
|
188
|
+
|
|
189
|
+
## Próximos Pasos Recomendados
|
|
190
|
+
|
|
191
|
+
1. **Inmediato:** Leer QUICK-START.md y ejecutar
|
|
192
|
+
2. **Después:** Integrar con sdd.constitucion.md
|
|
193
|
+
3. **Testing:** Ejecutar en staging antes de producción
|
|
194
|
+
4. **Monitoreo:** Rastrear tasa de éxito y errores
|
|
195
|
+
|
|
196
|
+
## Soporte y Contacto
|
|
197
|
+
|
|
198
|
+
- **Especificación:** Ver SKILL.md
|
|
199
|
+
- **Problemas:** Consultar sección de errores en README.md
|
|
200
|
+
- **Integración:** Ver INTEGRATION.md
|
|
201
|
+
- **Implementación:** Ver IMPLEMENTATION-CHECKLIST.md
|
|
202
|
+
|
|
203
|
+
## Changelog
|
|
204
|
+
|
|
205
|
+
### v1.0.0 (2026-06-13)
|
|
206
|
+
- Versión inicial
|
|
207
|
+
- Todas las características base implementadas
|
|
208
|
+
- Documentación completa
|
|
209
|
+
- Listo para producción
|
|
210
|
+
|
|
211
|
+
## Notas
|
|
212
|
+
|
|
213
|
+
- El skill es **idempotente**: seguro ejecutar múltiples veces
|
|
214
|
+
- El skill es **no-destructivo**: nunca sobrescribe datos
|
|
215
|
+
- El script es **autoexplicativo**: logging en cada paso
|
|
216
|
+
- La documentación es **exhaustiva**: >3000 palabras
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
**Estado:** LISTO PARA PRODUCCIÓN
|
|
221
|
+
**Versión:** 1.0.0
|
|
222
|
+
**Última actualización:** 2026-06-13
|
|
223
|
+
**Mantenedor:** SDD-ES Orchestrator
|