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.
Files changed (111) hide show
  1. package/README.md +128 -0
  2. package/bin/claude-framework +3 -0
  3. package/framework/agents/design-lead.md +240 -0
  4. package/framework/agents/product-owner.md +179 -0
  5. package/framework/agents/tech-lead.md +226 -0
  6. package/framework/commands/ayuda.md +127 -0
  7. package/framework/commands/a/303/261adir.md +98 -0
  8. package/framework/commands/backup.md +397 -0
  9. package/framework/commands/cambiar.md +110 -0
  10. package/framework/commands/cloud.md +457 -0
  11. package/framework/commands/code.md +142 -0
  12. package/framework/commands/debug.md +334 -0
  13. package/framework/commands/deploy.md +383 -0
  14. package/framework/commands/deshacer.md +120 -0
  15. package/framework/commands/estado.md +218 -0
  16. package/framework/commands/explica.md +227 -0
  17. package/framework/commands/feature.md +120 -0
  18. package/framework/commands/git.md +427 -0
  19. package/framework/commands/historial.md +202 -0
  20. package/framework/commands/learn.md +408 -0
  21. package/framework/commands/movil.md +245 -0
  22. package/framework/commands/nuevo.md +118 -0
  23. package/framework/commands/plan.md +134 -0
  24. package/framework/commands/prd.md +113 -0
  25. package/framework/commands/probar.md +148 -0
  26. package/framework/commands/revisar.md +208 -0
  27. package/framework/commands/seeds.md +230 -0
  28. package/framework/commands/seguridad.md +226 -0
  29. package/framework/commands/tasks.md +157 -0
  30. package/framework/skills/architecture/algorithms.md +970 -0
  31. package/framework/skills/architecture/clean-code.md +1080 -0
  32. package/framework/skills/architecture/design-patterns.md +1984 -0
  33. package/framework/skills/architecture/functional-programming.md +972 -0
  34. package/framework/skills/architecture/solid.md +991 -0
  35. package/framework/skills/cloud/cloud-aws.md +848 -0
  36. package/framework/skills/cloud/cloud-azure.md +931 -0
  37. package/framework/skills/cloud/cloud-gcp.md +848 -0
  38. package/framework/skills/cloud/message-queues.md +1229 -0
  39. package/framework/skills/core/accessibility.md +401 -0
  40. package/framework/skills/core/api.md +474 -0
  41. package/framework/skills/core/authentication.md +306 -0
  42. package/framework/skills/core/authorization.md +388 -0
  43. package/framework/skills/core/background-jobs.md +341 -0
  44. package/framework/skills/core/caching.md +473 -0
  45. package/framework/skills/core/code-review.md +341 -0
  46. package/framework/skills/core/controllers.md +290 -0
  47. package/framework/skills/core/cua.md +285 -0
  48. package/framework/skills/core/documentation.md +472 -0
  49. package/framework/skills/core/file-uploads.md +351 -0
  50. package/framework/skills/core/hotwire-native.md +296 -0
  51. package/framework/skills/core/hotwire.md +278 -0
  52. package/framework/skills/core/i18n.md +334 -0
  53. package/framework/skills/core/imports-exports.md +750 -0
  54. package/framework/skills/core/infrastructure.md +337 -0
  55. package/framework/skills/core/models.md +228 -0
  56. package/framework/skills/core/notifications.md +672 -0
  57. package/framework/skills/core/payments.md +581 -0
  58. package/framework/skills/core/performance.md +361 -0
  59. package/framework/skills/core/rails-scaffold.md +131 -0
  60. package/framework/skills/core/search.md +518 -0
  61. package/framework/skills/core/security.md +565 -0
  62. package/framework/skills/core/seeds.md +307 -0
  63. package/framework/skills/core/seo.md +542 -0
  64. package/framework/skills/core/testing.md +393 -0
  65. package/framework/skills/core/views.md +260 -0
  66. package/framework/skills/core/websockets.md +564 -0
  67. package/framework/skills/data/advanced-sql.md +1204 -0
  68. package/framework/skills/data/nosql.md +1141 -0
  69. package/framework/skills/devops/containers-advanced.md +1237 -0
  70. package/framework/skills/devops/debugging.md +834 -0
  71. package/framework/skills/devops/git-workflow.md +752 -0
  72. package/framework/skills/devops/networking.md +932 -0
  73. package/framework/skills/devops/shell-scripting.md +1132 -0
  74. package/framework/sub-agents/architecture-patterns-agent.md +1450 -0
  75. package/framework/sub-agents/cloud-agent.md +677 -0
  76. package/framework/sub-agents/data.md +504 -0
  77. package/framework/sub-agents/debugging-agent.md +554 -0
  78. package/framework/sub-agents/devops.md +483 -0
  79. package/framework/sub-agents/docs.md +176 -0
  80. package/framework/sub-agents/frontend-dev.md +349 -0
  81. package/framework/sub-agents/git-workflow-agent.md +697 -0
  82. package/framework/sub-agents/integrations.md +630 -0
  83. package/framework/sub-agents/native-dev.md +434 -0
  84. package/framework/sub-agents/qa.md +138 -0
  85. package/framework/sub-agents/rails-dev.md +375 -0
  86. package/framework/sub-agents/security.md +526 -0
  87. package/framework/sub-agents/ui.md +437 -0
  88. package/framework/sub-agents/ux.md +284 -0
  89. package/framework/templates/api-spec.md +500 -0
  90. package/framework/templates/component-spec.md +248 -0
  91. package/framework/templates/feature.json +13 -0
  92. package/framework/templates/model-spec.md +318 -0
  93. package/framework/templates/prd-template.md +80 -0
  94. package/framework/templates/task-plan.md +122 -0
  95. package/framework/templates/task-user-story.md +52 -0
  96. package/framework/templates/technical-spec.md +260 -0
  97. package/framework/templates/user-story.md +95 -0
  98. package/package.json +42 -0
  99. package/project-templates/CLAUDE.md +42 -0
  100. package/project-templates/contexts/architecture.md +25 -0
  101. package/project-templates/contexts/conventions.md +46 -0
  102. package/project-templates/contexts/design-system.md +47 -0
  103. package/project-templates/contexts/requirements.md +38 -0
  104. package/project-templates/contexts/stack.md +30 -0
  105. package/project-templates/history/active/models.md +11 -0
  106. package/project-templates/history/changelog.md +15 -0
  107. package/project-templates/workspace/.gitkeep +0 -0
  108. package/src/cli.js +52 -0
  109. package/src/init.js +104 -0
  110. package/src/status.js +75 -0
  111. 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