specleap-framework 2.0.6 → 2.0.8

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 (46) hide show
  1. package/.claude/skills/ui-ux-pro-max/SKILL.md +377 -0
  2. package/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  3. package/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
  4. package/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -0
  5. package/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
  6. package/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
  7. package/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  9. package/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  10. package/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  11. package/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  12. package/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  13. package/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  14. package/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  15. package/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  16. package/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  17. package/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  18. package/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  19. package/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  20. package/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  21. package/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -0
  22. package/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
  23. package/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  24. package/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  25. package/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  26. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  27. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  28. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
  29. package/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -0
  30. package/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  31. package/.claude/skills/ui-ux-pro-max/scripts/search.py +114 -0
  32. package/.clinerules +219 -0
  33. package/.coderabbit.yaml +261 -0
  34. package/.continue/rules/01-sdd-methodology.md +57 -0
  35. package/.continue/rules/02-spec-format.md +76 -0
  36. package/.continue/rules/03-code-standards.md +64 -0
  37. package/.continue/rules/04-git-workflow.md +80 -0
  38. package/.continue/rules/05-testing-report.md +63 -0
  39. package/.continuerules +40 -0
  40. package/.cursorrules +44 -0
  41. package/.github/copilot-instructions.md +54 -0
  42. package/.vscode/extensions.json +10 -0
  43. package/.vscode/markdown.css +235 -0
  44. package/.vscode/settings.json +33 -0
  45. package/package.json +9 -1
  46. package/setup.sh +21 -20
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
5
+ Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
6
+ python search.py "<query>" --design-system [-p "Project Name"]
7
+ python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
8
+
9
+ Domains: style, prompt, color, chart, landing, product, ux, typography
10
+ Stacks: html-tailwind, react, nextjs
11
+
12
+ Persistence (Master + Overrides pattern):
13
+ --persist Save design system to design-system/MASTER.md
14
+ --page Also create a page-specific override file in design-system/pages/
15
+ """
16
+
17
+ import argparse
18
+ import sys
19
+ import io
20
+ from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
21
+ from design_system import generate_design_system, persist_design_system
22
+
23
+ # Force UTF-8 for stdout/stderr to handle emojis on Windows (cp1252 default)
24
+ if sys.stdout.encoding and sys.stdout.encoding.lower() != 'utf-8':
25
+ sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
26
+ if sys.stderr.encoding and sys.stderr.encoding.lower() != 'utf-8':
27
+ sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
28
+
29
+
30
+ def format_output(result):
31
+ """Format results for Claude consumption (token-optimized)"""
32
+ if "error" in result:
33
+ return f"Error: {result['error']}"
34
+
35
+ output = []
36
+ if result.get("stack"):
37
+ output.append(f"## UI Pro Max Stack Guidelines")
38
+ output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
39
+ else:
40
+ output.append(f"## UI Pro Max Search Results")
41
+ output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
42
+ output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
43
+
44
+ for i, row in enumerate(result['results'], 1):
45
+ output.append(f"### Result {i}")
46
+ for key, value in row.items():
47
+ value_str = str(value)
48
+ if len(value_str) > 300:
49
+ value_str = value_str[:300] + "..."
50
+ output.append(f"- **{key}:** {value_str}")
51
+ output.append("")
52
+
53
+ return "\n".join(output)
54
+
55
+
56
+ if __name__ == "__main__":
57
+ parser = argparse.ArgumentParser(description="UI Pro Max Search")
58
+ parser.add_argument("query", help="Search query")
59
+ parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
60
+ parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help="Stack-specific search (html-tailwind, react, nextjs)")
61
+ parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
62
+ parser.add_argument("--json", action="store_true", help="Output as JSON")
63
+ # Design system generation
64
+ parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
65
+ parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
66
+ parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
67
+ # Persistence (Master + Overrides pattern)
68
+ parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
69
+ parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
70
+ parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
71
+
72
+ args = parser.parse_args()
73
+
74
+ # Design system takes priority
75
+ if args.design_system:
76
+ result = generate_design_system(
77
+ args.query,
78
+ args.project_name,
79
+ args.format,
80
+ persist=args.persist,
81
+ page=args.page,
82
+ output_dir=args.output_dir
83
+ )
84
+ print(result)
85
+
86
+ # Print persistence confirmation
87
+ if args.persist:
88
+ project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
89
+ print("\n" + "=" * 60)
90
+ print(f"✅ Design system persisted to design-system/{project_slug}/")
91
+ print(f" 📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
92
+ if args.page:
93
+ page_filename = args.page.lower().replace(' ', '-')
94
+ print(f" 📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
95
+ print("")
96
+ print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
97
+ print(f" If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
98
+ print("=" * 60)
99
+ # Stack search
100
+ elif args.stack:
101
+ result = search_stack(args.query, args.stack, args.max_results)
102
+ if args.json:
103
+ import json
104
+ print(json.dumps(result, indent=2, ensure_ascii=False))
105
+ else:
106
+ print(format_output(result))
107
+ # Domain search
108
+ else:
109
+ result = search(args.query, args.domain, args.max_results)
110
+ if args.json:
111
+ import json
112
+ print(json.dumps(result, indent=2, ensure_ascii=False))
113
+ else:
114
+ print(format_output(result))
package/.clinerules ADDED
@@ -0,0 +1,219 @@
1
+ # SpecLeap Framework — AI Assistant Rules
2
+
3
+ ## 🎯 Contexto del Proyecto
4
+
5
+ Estás trabajando en un proyecto **SpecLeap** — Spec-Driven Development Framework.
6
+
7
+ **Metodología:** Primero CONTRATO.md (especificación), luego código.
8
+
9
+ ## 📁 Estructura del Proyecto
10
+
11
+ ```
12
+ specleap-framework/
13
+ ├── .agents/ # 3 agentes especializados (backend, frontend, producto)
14
+ ├── .commands/ # 10 comandos SpecLeap
15
+ ├── .specleap/ # Configuración (tokens, idioma)
16
+ ├── proyectos/ # Proyectos del usuario
17
+ │ └── _template/ # Plantilla CONTRATO.md
18
+ ├── rules/ # Reglas de desarrollo
19
+ └── scripts/ # Instaladores y generadores
20
+ ```
21
+
22
+ ## 🤖 Comandos Disponibles
23
+
24
+ **SIEMPRE** reconoce estos comandos cuando el usuario los escribe:
25
+
26
+ ### Comandos Principales
27
+ - `ayuda` → Muestra lista completa de comandos + flujo SDD
28
+ - `planificar` → Lee CONTRATO.md, genera backlog Asana
29
+ - `implementar <ticket>` → Desarrolla según spec del ticket
30
+ - `refinar` → Mejora CONTRATO.md existente
31
+ - `documentar` → Genera/actualiza docs del proyecto
32
+ - `adoptar` → Integra SpecLeap en proyecto existente
33
+
34
+ ### Comandos de Gestión
35
+ - `inicio` → Wizard proyecto nuevo (cuestionario 59 preguntas)
36
+ - `crear-tickets` → Genera estructura Asana desde CONTRATO.md
37
+ - `explicar <concepto>` → Explica metodología SDD
38
+
39
+ ### Comandos Avanzados
40
+ - `nuevo/questions-base.yaml` → Cuestionario customizable
41
+ - Ver `.commands/` para más detalles
42
+
43
+ ## 🔄 Flujo de Trabajo SDD
44
+
45
+ ### 1. Crear CONTRATO.md
46
+ ```bash
47
+ # Opción A: Cuestionario guiado
48
+ ./scripts/generate-contrato.sh
49
+
50
+ # Opción B: Manual
51
+ cp proyectos/_template/CONTRATO.md proyectos/mi-proyecto/
52
+ ```
53
+
54
+ ### 2. Planificar en Asana
55
+ ```
56
+ Usuario: planificar
57
+ ```
58
+ → Lee CONTRATO.md
59
+ → Genera épicas + user stories
60
+ → Crea estructura en Asana
61
+
62
+ ### 3. Implementar por Tickets
63
+ ```
64
+ Usuario: implementar PROJ-123
65
+ ```
66
+ → Descarga spec del ticket Asana
67
+ → Implementa según especificación
68
+ → Crea tests
69
+ → Documenta cambios
70
+
71
+ ### 4. Review Automático
72
+ → Push a GitHub
73
+ → CodeRabbit revisa automáticamente
74
+ → Aplica feedback
75
+
76
+ ## 📋 Reglas de Desarrollo
77
+
78
+ ### OBLIGATORIAS (ver `rules/`)
79
+ 1. **Spec-First:** NUNCA codificar sin CONTRATO.md aprobado
80
+ 2. **Git Workflow:** Siempre feature branches (`feature/PROJ-123-descripcion`)
81
+ 3. **Testing:** Tests obligatorios para lógica de negocio
82
+ 4. **Environment Protection:** NUNCA hardcodear credenciales
83
+
84
+ ### Activar Agente Especializado
85
+
86
+ **Según el contexto, carga:**
87
+ - `.agents/backend.md` → Laravel, APIs, base de datos
88
+ - `.agents/frontend.md` → React, UI/UX, componentes
89
+ - `.agents/producto.md` → Decisiones de producto, UX, priorización
90
+
91
+ **Detecta automáticamente** según archivos del proyecto o comando del usuario.
92
+
93
+ ## 🎨 Estilo de Respuestas
94
+
95
+ ### Cuando Usuario Dice "Hola" o Inicia Sesión
96
+ ```
97
+ ¡Hola! Soy tu asistente SpecLeap.
98
+
99
+ 📋 Comandos disponibles:
100
+ • ayuda → Lista completa + flujo SDD
101
+ • planificar → Generar backlog desde CONTRATO.md
102
+ • implementar <ticket> → Desarrollar feature
103
+ • inicio → Crear proyecto nuevo
104
+
105
+ 🔧 Estado del proyecto:
106
+ [Verificar si existe CONTRATO.md en proyectos/]
107
+ ✅ CONTRATO.md encontrado: proyectos/mi-proyecto/CONTRATO.md
108
+ o
109
+ ⚠️ No hay CONTRATO.md. Ejecuta:
110
+ ./scripts/generate-contrato.sh
111
+ o escribe: inicio
112
+
113
+ ¿En qué puedo ayudarte?
114
+ ```
115
+
116
+ ### Formato de Respuestas
117
+ - **Conciso:** Directo al punto, sin relleno
118
+ - **Estructurado:** Usa listas, headings, code blocks
119
+ - **Bilingüe:** Español (default), English si el usuario prefiere
120
+ - **Contexto:** Siempre referencia CONTRATO.md cuando exista
121
+
122
+ ## ⚠️ Verificaciones Antes de Codificar
123
+
124
+ ### SIEMPRE Verifica:
125
+ 1. ¿Existe `proyectos/*/CONTRATO.md`?
126
+ - ❌ NO → Pedir crearlo: `./scripts/generate-contrato.sh` o `inicio`
127
+ - ✅ SÍ → Leerlo ANTES de implementar
128
+
129
+ 2. ¿El usuario dio un ticket Asana?
130
+ - ❌ NO → Preguntar: "¿Qué ticket Asana implementamos?"
131
+ - ✅ SÍ → Descargar spec del ticket
132
+
133
+ 3. ¿Hay tests para esta funcionalidad?
134
+ - ❌ NO → Crearlos AHORA
135
+ - ✅ SÍ → Ejecutarlos antes de considerar completo
136
+
137
+ ## 🚫 Prohibiciones Absolutas
138
+
139
+ 1. **NUNCA** codificar sin CONTRATO.md aprobado
140
+ 2. **NUNCA** hacer commit directo a `main`/`master`
141
+ 3. **NUNCA** hardcodear credenciales (usar `.env`)
142
+ 4. **NUNCA** ignorar el comando del usuario (si dice `planificar`, ejecutar planificar)
143
+ 5. **NUNCA** asumir stack tecnológico (leer CONTRATO.md primero)
144
+
145
+ ## 🎯 Comandos Especiales
146
+
147
+ ### Si Usuario Escribe "ayuda"
148
+ Leer y mostrar contenido de `.commands/ayuda.md`
149
+
150
+ ### Si Usuario Escribe "planificar"
151
+ 1. Leer `.commands/planificar.md`
152
+ 2. Verificar CONTRATO.md existe
153
+ 3. Ejecutar `scripts/generate-asana-structure.sh`
154
+ 4. Reportar épicas/stories creadas
155
+
156
+ ### Si Usuario Escribe "implementar <ticket>"
157
+ 1. Leer `.commands/implementar.md`
158
+ 2. Descargar spec del ticket Asana
159
+ 3. Implementar según spec
160
+ 4. Crear tests
161
+ 5. Actualizar docs
162
+
163
+ ### Si Usuario Escribe "inicio"
164
+ 1. Leer `.commands/inicio.md`
165
+ 2. Ejecutar `./scripts/generate-contrato.sh`
166
+ 3. Guiar wizard 59 preguntas
167
+ 4. Generar CONTRATO.md completo
168
+
169
+ ## 📦 Integración con Herramientas
170
+
171
+ ### Asana
172
+ - Token configurado en `.specleap/config.json`
173
+ - Workspace ID en `.env`
174
+ - Scripts: `scripts/generate-asana-structure.sh`, `scripts/create-asana-tasks.sh`
175
+
176
+ ### CodeRabbit
177
+ - Configuración: `.coderabbit.yaml`
178
+ - Review automático en PRs
179
+ - Feedback en español
180
+
181
+ ### Agent Skills (20 skills en ~/.skills/)
182
+ - `verification-before-completion` → Verificar antes de finalizar
183
+ - `systematic-debugging` → Debug metodológico
184
+ - `laravel-specialist`, `react-expert`, etc.
185
+
186
+ ## 🌐 Multiidioma
187
+
188
+ **Default:** Español
189
+ **Soporta:** English (si usuario prefiere)
190
+
191
+ **Detectar idioma del usuario** y responder en el mismo.
192
+
193
+ ## 📊 Reporting
194
+
195
+ ### Al Completar Tareas
196
+ ```
197
+ ✅ Tarea completada: [descripción]
198
+
199
+ 📋 Cambios realizados:
200
+ • Archivo X: [cambio]
201
+ • Archivo Y: [cambio]
202
+
203
+ 🧪 Tests:
204
+ • test_feature_x: ✅ PASS
205
+ • test_feature_y: ✅ PASS
206
+
207
+ 📄 Documentación:
208
+ • README.md actualizado
209
+ • CONTRATO.md: sin cambios
210
+
211
+ 🔗 Próximos pasos:
212
+ 1. Commit: git commit -m "feat(scope): descripción"
213
+ 2. Push: git push origin feature/PROJ-123
214
+ 3. CodeRabbit revisará automáticamente
215
+ ```
216
+
217
+ ---
218
+
219
+ **Recuerda:** SpecLeap es sobre **specs primero, código después**. SIEMPRE verifica CONTRATO.md antes de implementar.
@@ -0,0 +1,261 @@
1
+ # CodeRabbit Configuration — DevFlow Pro
2
+ # Copiar este archivo a la raíz de cada repositorio
3
+ # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
4
+
5
+ # Idioma de los reviews
6
+ language: "es"
7
+
8
+ # Tono personalizado
9
+ tone_instructions: |
10
+ Eres un reviewer senior enfocado en calidad y mantenibilidad.
11
+ Sé constructivo pero riguroso. Señala problemas de seguridad como críticos.
12
+ Verifica que el código sigue las specs definidas en openspec/.
13
+ Idioma: español.
14
+
15
+ # Configuración de reviews
16
+ reviews:
17
+ # Perfil: assertive = más feedback (recomendado para equipos que buscan calidad)
18
+ profile: "assertive"
19
+
20
+ # Workflow de cambios solicitados
21
+ request_changes_workflow: true
22
+
23
+ # Resumen de alto nivel
24
+ high_level_summary: true
25
+ high_level_summary_in_walkthrough: true
26
+
27
+ # Diagramas de secuencia
28
+ sequence_diagrams: true
29
+
30
+ # Estimación de esfuerzo de review
31
+ estimate_code_review_effort: true
32
+
33
+ # Evaluar issues vinculados
34
+ assess_linked_issues: true
35
+
36
+ # Sugerir labels
37
+ suggested_labels: true
38
+ labeling_instructions:
39
+ - label: "needs-spec"
40
+ instructions: "Aplicar cuando el PR no tiene spec de referencia en openspec/"
41
+ - label: "has-tests"
42
+ instructions: "Aplicar cuando el PR incluye tests"
43
+ - label: "breaking-change"
44
+ instructions: "Aplicar cuando hay cambios que rompen compatibilidad"
45
+ - label: "security"
46
+ instructions: "Aplicar cuando hay cambios relacionados con seguridad"
47
+ - label: "performance"
48
+ instructions: "Aplicar cuando hay optimizaciones de rendimiento"
49
+
50
+ # Auto-aplicar labels sugeridos
51
+ auto_apply_labels: true
52
+
53
+ # Sugerir reviewers
54
+ suggested_reviewers: true
55
+
56
+ # Sin poemas ni fortunes (profesional)
57
+ poem: false
58
+ in_progress_fortune: false
59
+
60
+ # Path filters - excluir archivos generados
61
+ path_filters:
62
+ - "!**/node_modules/**"
63
+ - "!**/vendor/**"
64
+ - "!**/dist/**"
65
+ - "!**/build/**"
66
+ - "!**/*.min.js"
67
+ - "!**/*.min.css"
68
+ - "!**/package-lock.json"
69
+ - "!**/composer.lock"
70
+ - "!**/*.generated.*"
71
+
72
+ # Instrucciones por ruta
73
+ path_instructions:
74
+ - path: "src/**"
75
+ instructions: |
76
+ Verificar:
77
+ - TypeScript strict mode
78
+ - Manejo de errores
79
+ - Tipos correctos (no any)
80
+ - Comentarios en español
81
+
82
+ - path: "**/*.spec.ts"
83
+ instructions: |
84
+ Verificar:
85
+ - Cobertura de casos edge
86
+ - Nombres descriptivos en español
87
+ - Arrange-Act-Assert pattern
88
+
89
+ - path: "**/*.test.ts"
90
+ instructions: |
91
+ Verificar:
92
+ - Cobertura de casos edge
93
+ - Nombres descriptivos en español
94
+ - Arrange-Act-Assert pattern
95
+
96
+ - path: "openspec/**"
97
+ instructions: |
98
+ Verificar:
99
+ - Formato correcto de spec
100
+ - GIVEN/WHEN/THEN completos
101
+ - Criterios de aceptación claros
102
+ - Referencias cruzadas válidas
103
+
104
+ - path: "**/*.php"
105
+ instructions: |
106
+ Verificar:
107
+ - PSR-12 compliance
108
+ - Type hints en parámetros y retornos
109
+ - Validación de inputs
110
+ - Sin SQL raw (usar Eloquent)
111
+
112
+ - path: "**/migrations/**"
113
+ instructions: |
114
+ Verificar:
115
+ - Migración reversible
116
+ - Índices necesarios
117
+ - Sin pérdida de datos
118
+
119
+ - path: "docs/**"
120
+ instructions: |
121
+ Verificar:
122
+ - Español correcto
123
+ - Enlaces funcionan
124
+ - Ejemplos actualizados
125
+
126
+ # Auto review
127
+ auto_review:
128
+ enabled: true
129
+ auto_incremental_review: true
130
+ drafts: false
131
+ ignore_title_keywords:
132
+ - "WIP"
133
+ - "DO NOT MERGE"
134
+ - "DRAFT"
135
+ labels:
136
+ - "!skip-review"
137
+
138
+ # Finishing touches
139
+ finishing_touches:
140
+ docstrings:
141
+ enabled: true
142
+ unit_tests:
143
+ enabled: true
144
+
145
+ # Pre-merge checks
146
+ pre_merge_checks:
147
+ docstrings:
148
+ mode: "warning"
149
+ threshold: 80
150
+ title:
151
+ mode: "warning"
152
+ requirements: |
153
+ El título debe seguir conventional commits:
154
+ tipo(alcance): descripción
155
+ Tipos: feat, fix, refactor, docs, test, chore, style, perf
156
+ description:
157
+ mode: "warning"
158
+ issue_assessment:
159
+ mode: "warning"
160
+ custom_checks:
161
+ - name: "Spec Reference"
162
+ mode: "warning"
163
+ instructions: |
164
+ Verificar que el PR hace referencia a una spec en openspec/.
165
+ El PR description debe incluir una línea como:
166
+ Spec: openspec/specs/domain/nombre.spec.md
167
+ Si no hay spec, el check falla.
168
+ - name: "Testing Report"
169
+ mode: "warning"
170
+ instructions: |
171
+ Verificar que el PR incluye resultados de tests.
172
+ Debe haber evidencia de que los tests pasan.
173
+ Si es un cambio de código, debe haber tests nuevos o modificados.
174
+
175
+ # Herramientas de análisis
176
+ tools:
177
+ # JavaScript/TypeScript
178
+ eslint:
179
+ enabled: true
180
+ biome:
181
+ enabled: true
182
+
183
+ # PHP
184
+ phpstan:
185
+ enabled: true
186
+ level: "max"
187
+ phpcs:
188
+ enabled: true
189
+ phpmd:
190
+ enabled: true
191
+
192
+ # Python (si aplica)
193
+ ruff:
194
+ enabled: true
195
+ pylint:
196
+ enabled: true
197
+
198
+ # Seguridad
199
+ gitleaks:
200
+ enabled: true
201
+ semgrep:
202
+ enabled: true
203
+
204
+ # Markdown/Docs
205
+ markdownlint:
206
+ enabled: true
207
+ languagetool:
208
+ enabled: true
209
+ level: "picky"
210
+
211
+ # YAML
212
+ yamllint:
213
+ enabled: true
214
+
215
+ # Docker
216
+ hadolint:
217
+ enabled: true
218
+
219
+ # GitHub Actions
220
+ actionlint:
221
+ enabled: true
222
+
223
+ # Shell
224
+ shellcheck:
225
+ enabled: true
226
+
227
+ # Chat
228
+ chat:
229
+ auto_reply: true
230
+ art: false
231
+ integrations:
232
+ jira:
233
+ usage: "enabled"
234
+ linear:
235
+ usage: "disabled"
236
+
237
+ # Knowledge base
238
+ knowledge_base:
239
+ opt_out: false
240
+ web_search:
241
+ enabled: true
242
+ code_guidelines:
243
+ enabled: true
244
+ filePatterns:
245
+ - "**/AGENTS.md"
246
+ - "**/CLAUDE.md"
247
+ - "**/.cursorrules"
248
+ - "**/openspec/**/*.md"
249
+ learnings:
250
+ scope: "global"
251
+ issues:
252
+ scope: "global"
253
+ jira:
254
+ usage: "enabled"
255
+ pull_requests:
256
+ scope: "global"
257
+
258
+ # Generación de código
259
+ code_generation:
260
+ docstrings:
261
+ language: "es"
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: SDD Methodology - Spec-Driven Development
3
+ alwaysApply: true
4
+ description: Metodología principal de desarrollo basada en especificaciones
5
+ ---
6
+
7
+ # Spec-Driven Development (SDD)
8
+
9
+ ## Principio Fundamental
10
+ > **Primero la especificación, luego el código. Nunca al revés.**
11
+
12
+ ## Flujo de Trabajo
13
+
14
+ ```
15
+ USER STORY → REFINED STORY → PROPOSAL → IMPLEMENTATION → VERIFICATION → DELIVERY
16
+ ```
17
+
18
+ ## Fases del Desarrollo
19
+
20
+ ### Fase 1: Discovery
21
+ - Analizar requisitos y alcance
22
+ - Documentar en `project-brief.md`
23
+ - Investigar arquitectura
24
+
25
+ ### Fase 2: Especificación
26
+ - Crear spec en `openspec/specs/<domain>/`
27
+ - Usar formato GIVEN/WHEN/THEN para escenarios
28
+ - Cada feature tiene spec ANTES de codificar
29
+
30
+ ### Fase 3: Propuesta de Cambio
31
+ - Crear carpeta en `openspec/changes/CHANGE-XXXX-nombre/`
32
+ - Incluir: proposal.md, design.md, tasks.md
33
+ - Documentar delta specs
34
+
35
+ ### Fase 4: Implementación
36
+ - Crear branch desde develop
37
+ - Implementar según spec
38
+ - Escribir tests (unit + integration)
39
+ - Documentar cambios
40
+
41
+ ### Fase 5: Verificación
42
+ - Ejecutar todos los tests
43
+ - Generar Testing Report
44
+ - Code review OBLIGATORIO
45
+ - Resolver comentarios
46
+
47
+ ### Fase 6: Entrega
48
+ - Merge a develop/main
49
+ - Actualizar spec → "implemented"
50
+ - Archivar propuesta
51
+
52
+ ## Reglas Importantes
53
+
54
+ 1. **Sin spec no hay código** - Siempre crear/actualizar spec antes de implementar
55
+ 2. **Testing Report obligatorio** - Cada feature documenta sus tests
56
+ 3. **Code review obligatorio** - Ningún PR se mergea sin review
57
+ 4. **Documentación en español** - Código en inglés, docs en español