claude-agent-framework 1.0.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/README.md +128 -0
- package/bin/claude-framework +3 -0
- package/framework/agents/design-lead.md +240 -0
- package/framework/agents/product-owner.md +179 -0
- package/framework/agents/tech-lead.md +226 -0
- package/framework/commands/ayuda.md +127 -0
- package/framework/commands/a/303/261adir.md +98 -0
- package/framework/commands/backup.md +397 -0
- package/framework/commands/cambiar.md +110 -0
- package/framework/commands/cloud.md +457 -0
- package/framework/commands/code.md +142 -0
- package/framework/commands/debug.md +334 -0
- package/framework/commands/deploy.md +383 -0
- package/framework/commands/deshacer.md +120 -0
- package/framework/commands/estado.md +218 -0
- package/framework/commands/explica.md +227 -0
- package/framework/commands/feature.md +120 -0
- package/framework/commands/git.md +427 -0
- package/framework/commands/historial.md +202 -0
- package/framework/commands/learn.md +408 -0
- package/framework/commands/movil.md +245 -0
- package/framework/commands/nuevo.md +118 -0
- package/framework/commands/plan.md +134 -0
- package/framework/commands/prd.md +113 -0
- package/framework/commands/probar.md +148 -0
- package/framework/commands/revisar.md +208 -0
- package/framework/commands/seeds.md +230 -0
- package/framework/commands/seguridad.md +226 -0
- package/framework/commands/tasks.md +157 -0
- package/framework/skills/architecture/algorithms.md +970 -0
- package/framework/skills/architecture/clean-code.md +1080 -0
- package/framework/skills/architecture/design-patterns.md +1984 -0
- package/framework/skills/architecture/functional-programming.md +972 -0
- package/framework/skills/architecture/solid.md +991 -0
- package/framework/skills/cloud/cloud-aws.md +848 -0
- package/framework/skills/cloud/cloud-azure.md +931 -0
- package/framework/skills/cloud/cloud-gcp.md +848 -0
- package/framework/skills/cloud/message-queues.md +1229 -0
- package/framework/skills/core/accessibility.md +401 -0
- package/framework/skills/core/api.md +474 -0
- package/framework/skills/core/authentication.md +306 -0
- package/framework/skills/core/authorization.md +388 -0
- package/framework/skills/core/background-jobs.md +341 -0
- package/framework/skills/core/caching.md +473 -0
- package/framework/skills/core/code-review.md +341 -0
- package/framework/skills/core/controllers.md +290 -0
- package/framework/skills/core/cua.md +285 -0
- package/framework/skills/core/documentation.md +472 -0
- package/framework/skills/core/file-uploads.md +351 -0
- package/framework/skills/core/hotwire-native.md +296 -0
- package/framework/skills/core/hotwire.md +278 -0
- package/framework/skills/core/i18n.md +334 -0
- package/framework/skills/core/imports-exports.md +750 -0
- package/framework/skills/core/infrastructure.md +337 -0
- package/framework/skills/core/models.md +228 -0
- package/framework/skills/core/notifications.md +672 -0
- package/framework/skills/core/payments.md +581 -0
- package/framework/skills/core/performance.md +361 -0
- package/framework/skills/core/rails-scaffold.md +131 -0
- package/framework/skills/core/search.md +518 -0
- package/framework/skills/core/security.md +565 -0
- package/framework/skills/core/seeds.md +307 -0
- package/framework/skills/core/seo.md +542 -0
- package/framework/skills/core/testing.md +393 -0
- package/framework/skills/core/views.md +260 -0
- package/framework/skills/core/websockets.md +564 -0
- package/framework/skills/data/advanced-sql.md +1204 -0
- package/framework/skills/data/nosql.md +1141 -0
- package/framework/skills/devops/containers-advanced.md +1237 -0
- package/framework/skills/devops/debugging.md +834 -0
- package/framework/skills/devops/git-workflow.md +752 -0
- package/framework/skills/devops/networking.md +932 -0
- package/framework/skills/devops/shell-scripting.md +1132 -0
- package/framework/sub-agents/architecture-patterns-agent.md +1450 -0
- package/framework/sub-agents/cloud-agent.md +677 -0
- package/framework/sub-agents/data.md +504 -0
- package/framework/sub-agents/debugging-agent.md +554 -0
- package/framework/sub-agents/devops.md +483 -0
- package/framework/sub-agents/docs.md +176 -0
- package/framework/sub-agents/frontend-dev.md +349 -0
- package/framework/sub-agents/git-workflow-agent.md +697 -0
- package/framework/sub-agents/integrations.md +630 -0
- package/framework/sub-agents/native-dev.md +434 -0
- package/framework/sub-agents/qa.md +138 -0
- package/framework/sub-agents/rails-dev.md +375 -0
- package/framework/sub-agents/security.md +526 -0
- package/framework/sub-agents/ui.md +437 -0
- package/framework/sub-agents/ux.md +284 -0
- package/framework/templates/api-spec.md +500 -0
- package/framework/templates/component-spec.md +248 -0
- package/framework/templates/feature.json +13 -0
- package/framework/templates/model-spec.md +318 -0
- package/framework/templates/prd-template.md +80 -0
- package/framework/templates/task-plan.md +122 -0
- package/framework/templates/task-user-story.md +52 -0
- package/framework/templates/technical-spec.md +260 -0
- package/framework/templates/user-story.md +95 -0
- package/package.json +42 -0
- package/project-templates/CLAUDE.md +42 -0
- package/project-templates/contexts/architecture.md +25 -0
- package/project-templates/contexts/conventions.md +46 -0
- package/project-templates/contexts/design-system.md +47 -0
- package/project-templates/contexts/requirements.md +38 -0
- package/project-templates/contexts/stack.md +30 -0
- package/project-templates/history/active/models.md +11 -0
- package/project-templates/history/changelog.md +15 -0
- package/project-templates/workspace/.gitkeep +0 -0
- package/src/cli.js +52 -0
- package/src/init.js +104 -0
- package/src/status.js +75 -0
- package/src/update.js +88 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Comando: /nuevo
|
|
2
|
+
|
|
3
|
+
Inicia el proceso de creación de un nuevo proyecto desde cero.
|
|
4
|
+
|
|
5
|
+
## Flujo de trabajo
|
|
6
|
+
|
|
7
|
+
### Paso 1: Descubrimiento inicial
|
|
8
|
+
|
|
9
|
+
Actúa como el **Product Owner** y realiza una entrevista amigable para entender la idea del usuario:
|
|
10
|
+
|
|
11
|
+
1. Saluda y pregunta por la idea general del proyecto
|
|
12
|
+
2. Haz preguntas clarificadoras:
|
|
13
|
+
- ¿Quiénes van a usar la aplicación?
|
|
14
|
+
- ¿Cuál es el problema principal que resuelve?
|
|
15
|
+
- ¿Hay alguna app de referencia que te guste?
|
|
16
|
+
- ¿Qué es lo más importante que debe poder hacer un usuario?
|
|
17
|
+
|
|
18
|
+
3. Resume lo entendido y confirma con el usuario antes de continuar
|
|
19
|
+
|
|
20
|
+
### Paso 1b: Ofrecer Flujo Estructurado (Opcional)
|
|
21
|
+
|
|
22
|
+
Después del discovery inicial, ofrecer al usuario la opción de usar el flujo estructurado:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Tu proyecto parece [simple/complejo]. Puedo proceder de dos formas:
|
|
26
|
+
|
|
27
|
+
1. **Empezar directamente** - Creo el proyecto y funcionalidades básicas (más rápido)
|
|
28
|
+
2. **Usar flujo estructurado** - Creo un feature con PRD, tareas y planes detallados (más trazabilidad)
|
|
29
|
+
|
|
30
|
+
¿Qué prefieres?
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Si elige flujo estructurado:**
|
|
34
|
+
1. Ejecutar `/feature "{descripción del proyecto}"`
|
|
35
|
+
2. Continuar con `/prd`, `/tasks`, `/plan`, `/code`
|
|
36
|
+
3. El proceso guiará paso a paso
|
|
37
|
+
|
|
38
|
+
**Si elige empezar directamente:**
|
|
39
|
+
Continuar con el Paso 2 tradicional
|
|
40
|
+
|
|
41
|
+
### Paso 2: Definición de requisitos
|
|
42
|
+
|
|
43
|
+
Una vez confirmada la idea:
|
|
44
|
+
|
|
45
|
+
1. Crea el archivo `.claude/contexts/requirements.md` con:
|
|
46
|
+
- Nombre del proyecto
|
|
47
|
+
- Descripción breve
|
|
48
|
+
- Usuarios objetivo
|
|
49
|
+
- Funcionalidades principales (MVP)
|
|
50
|
+
- Funcionalidades futuras (nice to have)
|
|
51
|
+
|
|
52
|
+
2. Presenta el resumen al usuario para aprobación
|
|
53
|
+
|
|
54
|
+
### Paso 3: Arquitectura técnica
|
|
55
|
+
|
|
56
|
+
Actúa como el **Tech Lead**:
|
|
57
|
+
|
|
58
|
+
1. Define la estructura de modelos necesarios
|
|
59
|
+
2. Establece las relaciones entre entidades
|
|
60
|
+
3. Crea el archivo `.claude/contexts/architecture.md` con:
|
|
61
|
+
- Diagrama de modelos
|
|
62
|
+
- Relaciones
|
|
63
|
+
- Decisiones técnicas clave
|
|
64
|
+
|
|
65
|
+
### Paso 4: Diseño visual
|
|
66
|
+
|
|
67
|
+
Actúa como el **Design Lead**:
|
|
68
|
+
|
|
69
|
+
1. Define el sistema de diseño básico
|
|
70
|
+
2. Actualiza `.claude/contexts/design-system.md` con:
|
|
71
|
+
- Paleta de colores
|
|
72
|
+
- Tipografía
|
|
73
|
+
- Componentes principales
|
|
74
|
+
|
|
75
|
+
### Paso 5: Creación del proyecto Rails
|
|
76
|
+
|
|
77
|
+
Ejecuta los comandos necesarios:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Crear proyecto Rails
|
|
81
|
+
rails new [nombre_proyecto] --database=sqlite3 --css=tailwind --skip-jbuilder
|
|
82
|
+
|
|
83
|
+
# Entrar al directorio
|
|
84
|
+
cd [nombre_proyecto]
|
|
85
|
+
|
|
86
|
+
# Instalar dependencias de testing
|
|
87
|
+
bundle add rspec-rails factory_bot_rails faker --group "development, test"
|
|
88
|
+
bundle add shoulda-matchers --group test
|
|
89
|
+
|
|
90
|
+
# Configurar RSpec
|
|
91
|
+
rails generate rspec:install
|
|
92
|
+
|
|
93
|
+
# Instalar autenticación
|
|
94
|
+
rails generate authentication
|
|
95
|
+
|
|
96
|
+
# Ejecutar migraciones
|
|
97
|
+
rails db:migrate
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Paso 6: Estructura inicial
|
|
101
|
+
|
|
102
|
+
1. Crea los modelos base identificados
|
|
103
|
+
2. Configura las rutas iniciales
|
|
104
|
+
3. Crea las vistas principales con layout base
|
|
105
|
+
|
|
106
|
+
### Paso 7: Resumen
|
|
107
|
+
|
|
108
|
+
Presenta al usuario:
|
|
109
|
+
- Lo que se ha creado
|
|
110
|
+
- Cómo ejecutar el proyecto (`bin/dev`)
|
|
111
|
+
- Próximos pasos sugeridos
|
|
112
|
+
|
|
113
|
+
## Notas importantes
|
|
114
|
+
|
|
115
|
+
- Siempre confirma con el usuario antes de ejecutar comandos destructivos
|
|
116
|
+
- Guarda el progreso en `.claude/history/changelog.md`
|
|
117
|
+
- Usa lenguaje sencillo, sin jerga técnica innecesaria
|
|
118
|
+
- Si algo no está claro, pregunta antes de asumir
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Comando: /plan
|
|
2
|
+
|
|
3
|
+
Genera un plan detallado para implementar una tarea específica siguiendo el **Principio de Responsabilidad Única**.
|
|
4
|
+
|
|
5
|
+
## Argumentos
|
|
6
|
+
- `task_path` (requerido): Path de la tarea (ej. features/2025-12-19-143052/tasks/001-crear-comentario)
|
|
7
|
+
|
|
8
|
+
## Principio: Responsabilidad Única
|
|
9
|
+
|
|
10
|
+
Cada tarea planificada debe cumplir:
|
|
11
|
+
|
|
12
|
+
| Aspecto | Requisito |
|
|
13
|
+
|---------|-----------|
|
|
14
|
+
| **Una Funcionalidad** | Una capacidad por tarea - no agrupar |
|
|
15
|
+
| **Auto-contenido** | Sin dependencias de código no commiteado |
|
|
16
|
+
| **Trazabilidad** | Nombres claros para vincular a código/tests |
|
|
17
|
+
| **Testeable** | Validación pass/fail posible |
|
|
18
|
+
| **Reversible** | Puede revertirse sin romper otros componentes |
|
|
19
|
+
|
|
20
|
+
### Detección de Violaciones de Diseño
|
|
21
|
+
|
|
22
|
+
**CRÍTICO**: Al analizar el código existente, detectar activamente:
|
|
23
|
+
|
|
24
|
+
1. **Código Duplicado**: Misma lógica implementada en múltiples lugares
|
|
25
|
+
2. **Scope Creep**: Componente que hace más de lo que debería
|
|
26
|
+
3. **Ejemplos Redundantes**: Mismos patrones usados inconsistentemente
|
|
27
|
+
4. **Conflictos de Responsabilidad**: Múltiples componentes modificando lo mismo
|
|
28
|
+
|
|
29
|
+
**Si se encuentran violaciones, el plan DEBE incluir tareas de refactorización.**
|
|
30
|
+
|
|
31
|
+
## Flujo de trabajo
|
|
32
|
+
|
|
33
|
+
### Fase 1: Localizar y Validar la Tarea
|
|
34
|
+
|
|
35
|
+
1. Verificar que existe `{task_path}/user-story.md`
|
|
36
|
+
2. Si no existe, mostrar error con el path correcto
|
|
37
|
+
3. Extraer el feature_id del path (segundo segmento)
|
|
38
|
+
4. Cargar `features/{feature_id}/feature.json` para contexto
|
|
39
|
+
5. Cargar `features/{feature_id}/prd.md` para requisitos
|
|
40
|
+
|
|
41
|
+
### Fase 2: Análisis del Feature
|
|
42
|
+
|
|
43
|
+
1. **Leer `CLAUDE.md`**: Convenciones del proyecto
|
|
44
|
+
2. **User Story**: Cargar `{task_path}/user-story.md`
|
|
45
|
+
3. **Criterios de Aceptación**: Identificar todos los escenarios
|
|
46
|
+
4. **PRD del Feature**: Entender el contexto completo
|
|
47
|
+
|
|
48
|
+
### Fase 3: Análisis de Código Existente (OBLIGATORIO)
|
|
49
|
+
|
|
50
|
+
1. **Buscar implementaciones similares** en el codebase
|
|
51
|
+
2. **Identificar patrones** que se deben seguir
|
|
52
|
+
3. **Detectar código que necesita modificación** vs creación
|
|
53
|
+
|
|
54
|
+
**Crear una matriz de impacto:**
|
|
55
|
+
```
|
|
56
|
+
| Componente | Archivo Existente | Líneas | Impacto |
|
|
57
|
+
|------------|-------------------|--------|---------|
|
|
58
|
+
| Model | app/models/x.rb | 45-67 | MODIFICAR |
|
|
59
|
+
| Controller | app/controllers/y.rb | 12-30 | MODIFICAR |
|
|
60
|
+
| View | app/views/z/index.html.erb | N/A | CREAR |
|
|
61
|
+
| Test | spec/models/x_spec.rb | 80-95 | EXTENDER |
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Fase 4: Detección de Conflictos (OBLIGATORIO)
|
|
65
|
+
|
|
66
|
+
Verificar conflictos potenciales:
|
|
67
|
+
|
|
68
|
+
1. **Conflictos de Archivo**: Otras tareas pendientes modificando los mismos archivos
|
|
69
|
+
2. **Conflictos de Schema**: Migraciones que podrían conflicturar
|
|
70
|
+
3. **Conflictos de Rutas**: Patrones de URL que se solapan
|
|
71
|
+
4. **Conflictos de Tests**: Fixtures o datos de test compartidos
|
|
72
|
+
|
|
73
|
+
**Crear matriz de conflictos:**
|
|
74
|
+
```
|
|
75
|
+
| Tipo | Recurso | Otra Tarea | Resolución |
|
|
76
|
+
|------|---------|------------|------------|
|
|
77
|
+
| Archivo | users_controller.rb | task-002 | Secuenciar |
|
|
78
|
+
| Schema | add_column :users | task-003 | Combinar migración |
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Fase 5: Evaluación de Atomicidad
|
|
82
|
+
|
|
83
|
+
Determinar si esta tarea debe ser:
|
|
84
|
+
- Ejecutada como unidad única
|
|
85
|
+
- Dividida en sub-tareas más pequeñas
|
|
86
|
+
- Combinada con otra tarea relacionada
|
|
87
|
+
|
|
88
|
+
### Fase 6: Generar el Plan
|
|
89
|
+
|
|
90
|
+
Escribir el plan en `{task_path}/plan.md` usando el template de `.claude/templates/task-plan.md`
|
|
91
|
+
|
|
92
|
+
### Fase 7: Actualizar Estado de la Tarea
|
|
93
|
+
|
|
94
|
+
1. Cargar `features/{feature_id}/feature.json`
|
|
95
|
+
2. Encontrar la tarea en el array `tasks`
|
|
96
|
+
3. Cambiar `status` a `"planned"`
|
|
97
|
+
4. Actualizar `updated_at` del feature
|
|
98
|
+
5. Guardar el archivo
|
|
99
|
+
|
|
100
|
+
### Fase 8: Validar el Plan Creado
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Verificar que el plan existe
|
|
104
|
+
test -f {task_path}/plan.md
|
|
105
|
+
|
|
106
|
+
# Verificar secciones obligatorias
|
|
107
|
+
grep -q "## Metadata" {task_path}/plan.md
|
|
108
|
+
grep -q "## Matriz de Impacto" {task_path}/plan.md
|
|
109
|
+
grep -q "## Pasos de Implementación" {task_path}/plan.md
|
|
110
|
+
grep -q "## Criterios de Aceptación" {task_path}/plan.md
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Report
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Plan creado: {task_path}/plan.md
|
|
117
|
+
|
|
118
|
+
Resumen:
|
|
119
|
+
- Archivos a crear: {N}
|
|
120
|
+
- Archivos a modificar: {M}
|
|
121
|
+
- Conflictos detectados: {C}
|
|
122
|
+
|
|
123
|
+
Siguiente paso:
|
|
124
|
+
/code {task_path}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Consideraciones
|
|
128
|
+
|
|
129
|
+
- El plan debe ser lo suficientemente detallado para ejecutarse sin ambigüedad
|
|
130
|
+
- Seguir las convenciones y patrones existentes en el proyecto
|
|
131
|
+
- Incluir tests desde el principio (TDD cuando sea apropiado)
|
|
132
|
+
- Los comandos de validación deben ejecutarse sin errores al finalizar
|
|
133
|
+
- Documentar cualquier conflicto o dependencia encontrada
|
|
134
|
+
- NO duplicar lógica existente - reutilizar siempre que sea posible
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Comando: /prd
|
|
2
|
+
|
|
3
|
+
Genera un documento PRD (Product Requirements Document) estructurado a partir de la descripción del feature siguiendo el **Principio de Fuente Única de Verdad**.
|
|
4
|
+
|
|
5
|
+
## Argumentos
|
|
6
|
+
- `feature_id` (requerido): ID del feature (ej. 2025-12-19-143052-mi-feature)
|
|
7
|
+
|
|
8
|
+
## Principio: Fuente Única de Verdad
|
|
9
|
+
|
|
10
|
+
Cada PRD debe cumplir:
|
|
11
|
+
|
|
12
|
+
| Aspecto | Requisito |
|
|
13
|
+
|---------|-----------|
|
|
14
|
+
| **Único** | No duplicar requisitos de otros PRDs existentes |
|
|
15
|
+
| **Completo** | Toda la información del feature en un solo lugar |
|
|
16
|
+
| **Trazable** | Cada requisito con ID único para referenciar |
|
|
17
|
+
| **Verificable** | Requisitos específicos que se pueden probar |
|
|
18
|
+
| **Delimitado** | Alcance claro de qué incluye y qué excluye |
|
|
19
|
+
|
|
20
|
+
### Detección de Violaciones
|
|
21
|
+
|
|
22
|
+
**CRÍTICO**: Al analizar PRDs existentes, detectar activamente:
|
|
23
|
+
|
|
24
|
+
1. **Requisitos Duplicados**: Mismo requisito en múltiples PRDs
|
|
25
|
+
2. **Scope Overlap**: Funcionalidades que se solapan con otros features
|
|
26
|
+
3. **Dependencias Ocultas**: Requisitos que dependen de otros PRDs sin documentar
|
|
27
|
+
4. **Conflictos**: Requisitos que contradicen otros PRDs
|
|
28
|
+
|
|
29
|
+
**Si se encuentran violaciones, el PRD DEBE documentarlas y proponer resolución.**
|
|
30
|
+
|
|
31
|
+
## Flujo de trabajo
|
|
32
|
+
|
|
33
|
+
### Fase 1: Localizar y Validar el Feature
|
|
34
|
+
|
|
35
|
+
1. Buscar en `features/{feature_id}/`
|
|
36
|
+
2. Verificar que existe `feature.json`
|
|
37
|
+
3. Si no existe, mostrar error y sugerir `/feature` primero
|
|
38
|
+
4. Cargar `feature.json` y extraer `title` y `description`
|
|
39
|
+
|
|
40
|
+
### Fase 2: Análisis de PRDs Existentes (OBLIGATORIO)
|
|
41
|
+
|
|
42
|
+
1. Listar todos los `features/*/prd.md` existentes
|
|
43
|
+
2. Para cada PRD, extraer:
|
|
44
|
+
- Requisitos funcionales (RF-XX)
|
|
45
|
+
- Alcance (incluido/excluido)
|
|
46
|
+
- Flujos de usuario
|
|
47
|
+
|
|
48
|
+
**Crear matriz de solapamiento:**
|
|
49
|
+
```
|
|
50
|
+
| Aspecto | Este PRD | PRD Existente | Conflicto? |
|
|
51
|
+
|---------|----------|---------------|------------|
|
|
52
|
+
| Login flow | RF-01 | feature-abc/RF-03 | REVISAR |
|
|
53
|
+
| User model | RF-02 | feature-xyz/RF-01 | NO |
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Fase 3: Investigar el Proyecto
|
|
57
|
+
|
|
58
|
+
1. **Leer `CLAUDE.md`**: Convenciones del proyecto
|
|
59
|
+
2. **Revisar estructura**: Modelos, controladores, vistas existentes
|
|
60
|
+
3. **Identificar patrones**: Cómo se implementan features similares
|
|
61
|
+
4. **Detectar constraints**: Limitaciones técnicas o de negocio
|
|
62
|
+
|
|
63
|
+
### Fase 4: Generar el PRD
|
|
64
|
+
|
|
65
|
+
Escribir el PRD en `features/{feature_id}/prd.md` usando el template de `.claude/templates/prd-template.md`
|
|
66
|
+
|
|
67
|
+
### Fase 5: Actualizar Estado del Feature
|
|
68
|
+
|
|
69
|
+
1. Cargar `features/{feature_id}/feature.json`
|
|
70
|
+
2. Cambiar `status` a `"prd_created"`
|
|
71
|
+
3. Cambiar `current_phase` a `"prd"`
|
|
72
|
+
4. Actualizar `updated_at`
|
|
73
|
+
5. Guardar el archivo
|
|
74
|
+
|
|
75
|
+
### Fase 6: Validar el PRD Creado
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Verificar que el PRD existe
|
|
79
|
+
test -f features/{feature_id}/prd.md
|
|
80
|
+
|
|
81
|
+
# Verificar secciones obligatorias
|
|
82
|
+
grep -q "## Metadata" features/{feature_id}/prd.md
|
|
83
|
+
grep -q "## Requisitos" features/{feature_id}/prd.md
|
|
84
|
+
grep -q "### Funcionales" features/{feature_id}/prd.md
|
|
85
|
+
grep -q "## Alcance" features/{feature_id}/prd.md
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Report
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
PRD creado exitosamente!
|
|
92
|
+
|
|
93
|
+
Feature: {título}
|
|
94
|
+
Archivo: features/{feature_id}/prd.md
|
|
95
|
+
|
|
96
|
+
Resumen del PRD:
|
|
97
|
+
- {N} requisitos funcionales identificados
|
|
98
|
+
- {M} requisitos no funcionales
|
|
99
|
+
- Alcance definido con {P} funcionalidades incluidas
|
|
100
|
+
- {S} solapamientos detectados con otros PRDs
|
|
101
|
+
|
|
102
|
+
Siguiente paso:
|
|
103
|
+
/tasks {feature_id}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Consideraciones
|
|
107
|
+
|
|
108
|
+
- El PRD debe ser comprensible para personas no técnicas
|
|
109
|
+
- Usar lenguaje claro y evitar jerga técnica innecesaria
|
|
110
|
+
- Los requisitos deben ser específicos y verificables
|
|
111
|
+
- El alcance debe ser realista y bien delimitado
|
|
112
|
+
- NO duplicar requisitos de otros PRDs - referenciar en su lugar
|
|
113
|
+
- Documentar todas las dependencias con otros features
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Comando: /probar
|
|
2
|
+
|
|
3
|
+
Prueba la aplicación como si fueras un usuario real.
|
|
4
|
+
|
|
5
|
+
## Flujo de trabajo
|
|
6
|
+
|
|
7
|
+
### Paso 1: Verificar que la app está corriendo
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Verificar si hay un servidor corriendo
|
|
11
|
+
curl -s http://localhost:3000/up || echo "El servidor no está corriendo"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Si no está corriendo, sugerir:
|
|
15
|
+
```bash
|
|
16
|
+
bin/dev
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Paso 2: Identificar qué probar
|
|
20
|
+
|
|
21
|
+
Preguntar al usuario:
|
|
22
|
+
- "¿Quieres que pruebe algo específico o hago una prueba general?"
|
|
23
|
+
|
|
24
|
+
#### Prueba general
|
|
25
|
+
Probar los flujos principales de la aplicación.
|
|
26
|
+
|
|
27
|
+
#### Prueba específica
|
|
28
|
+
Probar la funcionalidad que el usuario indique.
|
|
29
|
+
|
|
30
|
+
### Paso 3: Ejecutar pruebas automatizadas
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Correr todos los tests
|
|
34
|
+
bundle exec rspec
|
|
35
|
+
|
|
36
|
+
# Si hay tests específicos
|
|
37
|
+
bundle exec rspec spec/features/
|
|
38
|
+
bundle exec rspec spec/system/
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Paso 4: Pruebas manuales (CUA)
|
|
42
|
+
|
|
43
|
+
Usar el skill de Computer Use Agent para navegar la app visualmente:
|
|
44
|
+
|
|
45
|
+
#### Prueba de registro/login
|
|
46
|
+
1. Ir a la página de registro
|
|
47
|
+
2. Completar el formulario
|
|
48
|
+
3. Verificar que el registro funciona
|
|
49
|
+
4. Cerrar sesión
|
|
50
|
+
5. Iniciar sesión con las credenciales
|
|
51
|
+
|
|
52
|
+
#### Prueba de funcionalidades principales
|
|
53
|
+
1. Navegar por las páginas principales
|
|
54
|
+
2. Crear contenido (si aplica)
|
|
55
|
+
3. Editar contenido
|
|
56
|
+
4. Eliminar contenido
|
|
57
|
+
5. Verificar que todo funciona
|
|
58
|
+
|
|
59
|
+
### Paso 5: Pruebas de responsive
|
|
60
|
+
|
|
61
|
+
1. Probar en viewport de escritorio (1920px)
|
|
62
|
+
2. Probar en viewport de tablet (768px)
|
|
63
|
+
3. Probar en viewport móvil (375px)
|
|
64
|
+
|
|
65
|
+
### Paso 6: Pruebas de accesibilidad
|
|
66
|
+
|
|
67
|
+
1. Verificar navegación con teclado
|
|
68
|
+
2. Verificar contraste de colores
|
|
69
|
+
3. Verificar que los formularios tienen labels
|
|
70
|
+
|
|
71
|
+
### Paso 7: Generar reporte
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
# Reporte de Pruebas
|
|
75
|
+
Fecha: [fecha]
|
|
76
|
+
|
|
77
|
+
## Resumen
|
|
78
|
+
- Tests automatizados: ✅ X pasaron / ❌ Y fallaron
|
|
79
|
+
- Tests manuales: ✅ X OK / ❌ Y problemas encontrados
|
|
80
|
+
|
|
81
|
+
## Tests Automatizados
|
|
82
|
+
[Salida de RSpec]
|
|
83
|
+
|
|
84
|
+
## Tests Manuales
|
|
85
|
+
|
|
86
|
+
### Flujo de autenticación
|
|
87
|
+
- [✅/❌] Registro de usuario
|
|
88
|
+
- [✅/❌] Inicio de sesión
|
|
89
|
+
- [✅/❌] Cierre de sesión
|
|
90
|
+
- [✅/❌] Recuperación de contraseña
|
|
91
|
+
|
|
92
|
+
### Funcionalidades principales
|
|
93
|
+
- [✅/❌] [Funcionalidad 1]
|
|
94
|
+
- [✅/❌] [Funcionalidad 2]
|
|
95
|
+
|
|
96
|
+
### Responsive
|
|
97
|
+
- [✅/❌] Desktop
|
|
98
|
+
- [✅/❌] Tablet
|
|
99
|
+
- [✅/❌] Móvil
|
|
100
|
+
|
|
101
|
+
### Accesibilidad
|
|
102
|
+
- [✅/❌] Navegación con teclado
|
|
103
|
+
- [✅/❌] Contraste de colores
|
|
104
|
+
- [✅/❌] Labels en formularios
|
|
105
|
+
|
|
106
|
+
## Problemas Encontrados
|
|
107
|
+
|
|
108
|
+
### Problema 1: [Título]
|
|
109
|
+
- **Severidad**: Alta/Media/Baja
|
|
110
|
+
- **Descripción**: [Qué pasa]
|
|
111
|
+
- **Pasos para reproducir**: [Cómo reproducirlo]
|
|
112
|
+
- **Comportamiento esperado**: [Qué debería pasar]
|
|
113
|
+
|
|
114
|
+
## Recomendaciones
|
|
115
|
+
- [Recomendación 1]
|
|
116
|
+
- [Recomendación 2]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Paso 8: Presentar resultados
|
|
120
|
+
|
|
121
|
+
Mostrar al usuario:
|
|
122
|
+
1. Resumen de resultados
|
|
123
|
+
2. Problemas encontrados (si los hay)
|
|
124
|
+
3. Recomendaciones de mejora
|
|
125
|
+
4. Ofrecer arreglar los problemas encontrados
|
|
126
|
+
|
|
127
|
+
## Tipos de pruebas
|
|
128
|
+
|
|
129
|
+
### Por funcionalidad
|
|
130
|
+
- `/probar login` - Prueba solo autenticación
|
|
131
|
+
- `/probar formularios` - Prueba todos los formularios
|
|
132
|
+
- `/probar navegación` - Prueba menús y enlaces
|
|
133
|
+
|
|
134
|
+
### Por página
|
|
135
|
+
- `/probar /articles` - Prueba la página de artículos
|
|
136
|
+
- `/probar /users/1` - Prueba el perfil de usuario
|
|
137
|
+
|
|
138
|
+
### Por dispositivo
|
|
139
|
+
- `/probar móvil` - Prueba responsive en móvil
|
|
140
|
+
- `/probar tablet` - Prueba responsive en tablet
|
|
141
|
+
|
|
142
|
+
## Notas importantes
|
|
143
|
+
|
|
144
|
+
- Asegurarse de que el servidor está corriendo
|
|
145
|
+
- Usar datos de prueba, no datos reales
|
|
146
|
+
- Documentar todos los problemas encontrados
|
|
147
|
+
- Ofrecer soluciones para los problemas
|
|
148
|
+
- Mantener las pruebas actualizadas con los cambios
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Comando: /revisar
|
|
2
|
+
|
|
3
|
+
Analiza el código del proyecto para detectar problemas de calidad, seguridad y rendimiento.
|
|
4
|
+
|
|
5
|
+
## Flujo de trabajo
|
|
6
|
+
|
|
7
|
+
### Paso 1: Preguntar alcance
|
|
8
|
+
|
|
9
|
+
"¿Quieres que revise todo el proyecto o algo específico?"
|
|
10
|
+
|
|
11
|
+
Opciones:
|
|
12
|
+
- Todo el proyecto
|
|
13
|
+
- Un archivo específico
|
|
14
|
+
- Una funcionalidad
|
|
15
|
+
- Solo seguridad
|
|
16
|
+
- Solo rendimiento
|
|
17
|
+
|
|
18
|
+
### Paso 2: Ejecutar análisis automatizados
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Tests
|
|
22
|
+
bundle exec rspec --format documentation
|
|
23
|
+
|
|
24
|
+
# Seguridad (si está instalado brakeman)
|
|
25
|
+
bundle exec brakeman -q
|
|
26
|
+
|
|
27
|
+
# Auditoría de dependencias
|
|
28
|
+
bundle audit check --update
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Paso 3: Revisión manual de código
|
|
32
|
+
|
|
33
|
+
Usar el skill de Code Review para analizar:
|
|
34
|
+
|
|
35
|
+
#### Seguridad
|
|
36
|
+
- [ ] SQL injection
|
|
37
|
+
- [ ] XSS vulnerabilities
|
|
38
|
+
- [ ] CSRF protection
|
|
39
|
+
- [ ] Mass assignment
|
|
40
|
+
- [ ] Authentication/Authorization
|
|
41
|
+
- [ ] Secrets hardcoded
|
|
42
|
+
|
|
43
|
+
#### Rendimiento
|
|
44
|
+
- [ ] N+1 queries
|
|
45
|
+
- [ ] Missing indexes
|
|
46
|
+
- [ ] Inefficient queries
|
|
47
|
+
- [ ] Memory usage
|
|
48
|
+
- [ ] Caching opportunities
|
|
49
|
+
|
|
50
|
+
#### Calidad de código
|
|
51
|
+
- [ ] Convenciones de Rails
|
|
52
|
+
- [ ] DRY (Don't Repeat Yourself)
|
|
53
|
+
- [ ] Single Responsibility
|
|
54
|
+
- [ ] Naming clarity
|
|
55
|
+
- [ ] Code complexity
|
|
56
|
+
|
|
57
|
+
#### Tests
|
|
58
|
+
- [ ] Cobertura adecuada
|
|
59
|
+
- [ ] Tests significativos
|
|
60
|
+
- [ ] Edge cases cubiertos
|
|
61
|
+
|
|
62
|
+
### Paso 4: Generar reporte
|
|
63
|
+
|
|
64
|
+
```markdown
|
|
65
|
+
# Reporte de Revisión de Código
|
|
66
|
+
Fecha: [fecha]
|
|
67
|
+
Alcance: [todo el proyecto / archivo específico / etc.]
|
|
68
|
+
|
|
69
|
+
## Resumen Ejecutivo
|
|
70
|
+
|
|
71
|
+
| Área | Estado | Problemas |
|
|
72
|
+
|------|--------|-----------|
|
|
73
|
+
| Seguridad | 🟢/🟡/🔴 | X |
|
|
74
|
+
| Rendimiento | 🟢/🟡/🔴 | X |
|
|
75
|
+
| Calidad | 🟢/🟡/🔴 | X |
|
|
76
|
+
| Tests | 🟢/🟡/🔴 | X |
|
|
77
|
+
|
|
78
|
+
## Hallazgos de Seguridad
|
|
79
|
+
|
|
80
|
+
### 🔴 Críticos
|
|
81
|
+
[Ninguno / Lista de problemas]
|
|
82
|
+
|
|
83
|
+
### 🟡 Advertencias
|
|
84
|
+
[Ninguna / Lista de advertencias]
|
|
85
|
+
|
|
86
|
+
### ✅ Buenas prácticas encontradas
|
|
87
|
+
[Lista de cosas bien hechas]
|
|
88
|
+
|
|
89
|
+
## Hallazgos de Rendimiento
|
|
90
|
+
|
|
91
|
+
### Problemas encontrados
|
|
92
|
+
1. **[Título del problema]**
|
|
93
|
+
- Ubicación: `archivo.rb:línea`
|
|
94
|
+
- Problema: [Descripción]
|
|
95
|
+
- Impacto: [Alto/Medio/Bajo]
|
|
96
|
+
- Solución sugerida: [Cómo arreglarlo]
|
|
97
|
+
|
|
98
|
+
### Oportunidades de mejora
|
|
99
|
+
- [Sugerencia 1]
|
|
100
|
+
- [Sugerencia 2]
|
|
101
|
+
|
|
102
|
+
## Calidad de Código
|
|
103
|
+
|
|
104
|
+
### Problemas
|
|
105
|
+
- [Lista de problemas de calidad]
|
|
106
|
+
|
|
107
|
+
### Sugerencias
|
|
108
|
+
- [Lista de mejoras sugeridas]
|
|
109
|
+
|
|
110
|
+
## Cobertura de Tests
|
|
111
|
+
|
|
112
|
+
- Modelos: X/Y testeados
|
|
113
|
+
- Controladores: X/Y testeados
|
|
114
|
+
- Features: X/Y testeados
|
|
115
|
+
|
|
116
|
+
### Tests faltantes
|
|
117
|
+
- [Lista de áreas sin tests]
|
|
118
|
+
|
|
119
|
+
## Recomendaciones Prioritarias
|
|
120
|
+
|
|
121
|
+
1. **[Más urgente]**: [Descripción y cómo resolverlo]
|
|
122
|
+
2. **[Segundo]**: [Descripción y cómo resolverlo]
|
|
123
|
+
3. **[Tercero]**: [Descripción y cómo resolverlo]
|
|
124
|
+
|
|
125
|
+
## Acciones Sugeridas
|
|
126
|
+
|
|
127
|
+
- [ ] [Acción 1]
|
|
128
|
+
- [ ] [Acción 2]
|
|
129
|
+
- [ ] [Acción 3]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Paso 5: Presentar resultados
|
|
133
|
+
|
|
134
|
+
Explicar al usuario:
|
|
135
|
+
1. Estado general del código
|
|
136
|
+
2. Problemas críticos (si los hay)
|
|
137
|
+
3. Mejoras recomendadas
|
|
138
|
+
4. Ofrecer implementar las correcciones
|
|
139
|
+
|
|
140
|
+
### Paso 6: Ofrecer correcciones
|
|
141
|
+
|
|
142
|
+
"¿Quieres que arregle alguno de estos problemas?"
|
|
143
|
+
|
|
144
|
+
Si el usuario acepta:
|
|
145
|
+
1. Priorizar por criticidad
|
|
146
|
+
2. Implementar correcciones una por una
|
|
147
|
+
3. Verificar que no se rompe nada
|
|
148
|
+
4. Actualizar el reporte
|
|
149
|
+
|
|
150
|
+
## Tipos de revisión
|
|
151
|
+
|
|
152
|
+
### `/revisar seguridad`
|
|
153
|
+
Enfocarse solo en vulnerabilidades de seguridad.
|
|
154
|
+
|
|
155
|
+
### `/revisar rendimiento`
|
|
156
|
+
Enfocarse solo en problemas de rendimiento.
|
|
157
|
+
|
|
158
|
+
### `/revisar [archivo]`
|
|
159
|
+
Revisar un archivo específico en detalle.
|
|
160
|
+
|
|
161
|
+
### `/revisar tests`
|
|
162
|
+
Analizar la cobertura y calidad de tests.
|
|
163
|
+
|
|
164
|
+
## Checklist rápido de seguridad
|
|
165
|
+
|
|
166
|
+
```ruby
|
|
167
|
+
# ❌ Malo - SQL Injection
|
|
168
|
+
User.where("name = '#{params[:name]}'")
|
|
169
|
+
|
|
170
|
+
# ✅ Bueno
|
|
171
|
+
User.where(name: params[:name])
|
|
172
|
+
|
|
173
|
+
# ❌ Malo - XSS
|
|
174
|
+
<%= raw user_input %>
|
|
175
|
+
|
|
176
|
+
# ✅ Bueno
|
|
177
|
+
<%= user_input %>
|
|
178
|
+
|
|
179
|
+
# ❌ Malo - Mass Assignment
|
|
180
|
+
params.permit!
|
|
181
|
+
|
|
182
|
+
# ✅ Bueno
|
|
183
|
+
params.require(:user).permit(:name, :email)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Checklist rápido de rendimiento
|
|
187
|
+
|
|
188
|
+
```ruby
|
|
189
|
+
# ❌ Malo - N+1
|
|
190
|
+
Article.all.each { |a| puts a.user.name }
|
|
191
|
+
|
|
192
|
+
# ✅ Bueno
|
|
193
|
+
Article.includes(:user).each { |a| puts a.user.name }
|
|
194
|
+
|
|
195
|
+
# ❌ Malo - Carga innecesaria
|
|
196
|
+
User.all.count
|
|
197
|
+
|
|
198
|
+
# ✅ Bueno
|
|
199
|
+
User.count
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Notas importantes
|
|
203
|
+
|
|
204
|
+
- No alarmar innecesariamente al usuario
|
|
205
|
+
- Priorizar problemas por severidad
|
|
206
|
+
- Explicar los problemas en lenguaje sencillo
|
|
207
|
+
- Ofrecer soluciones concretas
|
|
208
|
+
- Celebrar las buenas prácticas encontradas
|