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,230 @@
1
+ # Comando: /seeds
2
+
3
+ Genera datos de prueba realistas para la aplicación.
4
+
5
+ ## Flujo de trabajo
6
+
7
+ ### Paso 1: Analizar modelos existentes
8
+
9
+ 1. Leer todos los modelos en `app/models/`
10
+ 2. Identificar relaciones entre modelos
11
+ 3. Determinar validaciones y restricciones
12
+
13
+ ### Paso 2: Preguntar preferencias
14
+
15
+ "¿Cuántos datos de prueba quieres generar?"
16
+ - Mínimo (5-10 registros por modelo)
17
+ - Medio (20-50 registros por modelo)
18
+ - Extenso (100+ registros por modelo)
19
+
20
+ "¿Quieres un usuario de prueba específico?"
21
+ - Email: test@example.com
22
+ - Contraseña: password123
23
+
24
+ ### Paso 3: Generar archivo de seeds
25
+
26
+ ```ruby
27
+ # db/seeds.rb
28
+
29
+ puts "🌱 Iniciando seed de datos..."
30
+
31
+ # Limpiar datos existentes (en orden inverso de dependencias)
32
+ puts "Limpiando datos existentes..."
33
+ # [Modelos dependientes primero]
34
+ Comment.destroy_all
35
+ Article.destroy_all
36
+ User.destroy_all
37
+
38
+ # Crear usuario de prueba
39
+ puts "Creando usuario de prueba..."
40
+ test_user = User.create!(
41
+ email_address: "test@example.com",
42
+ password: "password123",
43
+ password_confirmation: "password123"
44
+ )
45
+ puts " ✅ Usuario de prueba: test@example.com / password123"
46
+
47
+ # Crear usuarios adicionales
48
+ puts "Creando usuarios..."
49
+ users = 10.times.map do |i|
50
+ User.create!(
51
+ email_address: Faker::Internet.unique.email,
52
+ password: "password123",
53
+ password_confirmation: "password123"
54
+ )
55
+ end
56
+ puts " ✅ #{users.count} usuarios creados"
57
+
58
+ # Crear artículos
59
+ puts "Creando artículos..."
60
+ all_users = [test_user] + users
61
+ article_count = 0
62
+
63
+ all_users.each do |user|
64
+ rand(3..8).times do
65
+ Article.create!(
66
+ title: Faker::Lorem.sentence(word_count: rand(4..8)),
67
+ body: Faker::Lorem.paragraphs(number: rand(3..8)).join("\n\n"),
68
+ published: [true, true, true, false].sample,
69
+ user: user,
70
+ created_at: Faker::Time.between(from: 6.months.ago, to: Time.current)
71
+ )
72
+ article_count += 1
73
+ end
74
+ end
75
+ puts " ✅ #{article_count} artículos creados"
76
+
77
+ # Crear comentarios
78
+ puts "Creando comentarios..."
79
+ comment_count = 0
80
+
81
+ Article.where(published: true).each do |article|
82
+ rand(0..10).times do
83
+ Comment.create!(
84
+ body: Faker::Lorem.paragraph(sentence_count: rand(1..4)),
85
+ user: all_users.sample,
86
+ article: article,
87
+ created_at: Faker::Time.between(from: article.created_at, to: Time.current)
88
+ )
89
+ comment_count += 1
90
+ end
91
+ end
92
+ puts " ✅ #{comment_count} comentarios creados"
93
+
94
+ # Resumen final
95
+ puts ""
96
+ puts "=" * 50
97
+ puts "🎉 Seed completado!"
98
+ puts "=" * 50
99
+ puts ""
100
+ puts "Resumen:"
101
+ puts " - Usuarios: #{User.count}"
102
+ puts " - Artículos: #{Article.count} (#{Article.where(published: true).count} publicados)"
103
+ puts " - Comentarios: #{Comment.count}"
104
+ puts ""
105
+ puts "Usuario de prueba:"
106
+ puts " 📧 Email: test@example.com"
107
+ puts " 🔑 Contraseña: password123"
108
+ puts ""
109
+ ```
110
+
111
+ ### Paso 4: Ejecutar seeds
112
+
113
+ ```bash
114
+ rails db:seed
115
+ ```
116
+
117
+ ### Paso 5: Verificar datos
118
+
119
+ ```bash
120
+ rails runner "puts 'Users: ' + User.count.to_s; puts 'Articles: ' + Article.count.to_s"
121
+ ```
122
+
123
+ ### Paso 6: Mostrar resumen
124
+
125
+ ```markdown
126
+ # Datos de Prueba Generados
127
+
128
+ ## Resumen
129
+ | Modelo | Cantidad |
130
+ |--------|----------|
131
+ | Users | 11 |
132
+ | Articles | 55 |
133
+ | Comments | 234 |
134
+
135
+ ## Usuario de prueba
136
+ - **Email**: test@example.com
137
+ - **Contraseña**: password123
138
+
139
+ ## Datos generados
140
+ Los datos incluyen:
141
+ - Usuarios con emails realistas
142
+ - Artículos con títulos y contenido variado
143
+ - Mezcla de artículos publicados y borradores
144
+ - Comentarios en artículos publicados
145
+ - Fechas distribuidas en los últimos 6 meses
146
+
147
+ ## Comandos útiles
148
+
149
+ ```bash
150
+ # Regenerar datos
151
+ rails db:seed
152
+
153
+ # Limpiar y regenerar
154
+ rails db:reset # Cuidado: borra todo
155
+
156
+ # Ver datos en consola
157
+ rails console
158
+ > User.all
159
+ > Article.published.count
160
+ ```
161
+ ```
162
+
163
+ ## Variantes del comando
164
+
165
+ ### `/seeds [modelo]`
166
+ Genera seeds solo para un modelo específico.
167
+
168
+ ### `/seeds reset`
169
+ Limpia todos los datos y regenera.
170
+
171
+ ### `/seeds add [n]`
172
+ Añade N registros más sin borrar existentes.
173
+
174
+ ## Datos específicos por modelo
175
+
176
+ ### Usuarios
177
+ ```ruby
178
+ User.create!(
179
+ email_address: Faker::Internet.unique.email,
180
+ password: "password123",
181
+ # Si hay campos adicionales:
182
+ name: Faker::Name.name,
183
+ bio: Faker::Lorem.paragraph
184
+ )
185
+ ```
186
+
187
+ ### Contenido con texto
188
+ ```ruby
189
+ Article.create!(
190
+ title: Faker::Book.title, # O Faker::Lorem.sentence
191
+ body: Faker::Markdown.sandwich(sentences: 6),
192
+ summary: Faker::Lorem.paragraph
193
+ )
194
+ ```
195
+
196
+ ### Con fechas
197
+ ```ruby
198
+ Event.create!(
199
+ name: Faker::Company.catch_phrase,
200
+ starts_at: Faker::Time.forward(days: 30),
201
+ ends_at: Faker::Time.forward(days: 60)
202
+ )
203
+ ```
204
+
205
+ ### Con archivos (Active Storage)
206
+ ```ruby
207
+ user = User.create!(...)
208
+ user.avatar.attach(
209
+ io: URI.open(Faker::Avatar.image),
210
+ filename: "avatar.jpg"
211
+ )
212
+ ```
213
+
214
+ ### Con enums
215
+ ```ruby
216
+ Order.create!(
217
+ status: Order::STATUSES.sample,
218
+ # o
219
+ status: [:pending, :processing, :completed].sample
220
+ )
221
+ ```
222
+
223
+ ## Notas importantes
224
+
225
+ - Los seeds deben ser idempotentes (seguros de ejecutar múltiples veces)
226
+ - Usar `destroy_all` con cuidado en producción
227
+ - Faker genera datos en inglés por defecto
228
+ - Para datos en español: `Faker::Config.locale = 'es'`
229
+ - Siempre incluir un usuario de prueba conocido
230
+ - Los datos de prueba no deben ir a producción
@@ -0,0 +1,226 @@
1
+ # Comando: /seguridad
2
+
3
+ Ejecuta una auditoría de seguridad completa de la aplicación.
4
+
5
+ ## Descripción
6
+
7
+ Este comando analiza la aplicación en busca de vulnerabilidades de seguridad, revisa la configuración, y genera un reporte detallado con recomendaciones.
8
+
9
+ ## Proceso
10
+
11
+ ### 1. Análisis estático con Brakeman
12
+
13
+ ```bash
14
+ # Verificar si Brakeman está instalado
15
+ bundle show brakeman || bundle add brakeman --group development
16
+
17
+ # Ejecutar análisis
18
+ bundle exec brakeman -q -o tmp/brakeman-report.json -f json
19
+ bundle exec brakeman -o tmp/brakeman-report.html
20
+ ```
21
+
22
+ ### 2. Auditoría de dependencias
23
+
24
+ ```bash
25
+ # Verificar si bundler-audit está instalado
26
+ bundle show bundler-audit || bundle add bundler-audit --group development
27
+
28
+ # Actualizar base de datos de vulnerabilidades
29
+ bundle exec bundle-audit update
30
+
31
+ # Ejecutar auditoría
32
+ bundle exec bundle-audit check
33
+ ```
34
+
35
+ ### 3. Verificar configuración de seguridad
36
+
37
+ Revisar los siguientes archivos:
38
+
39
+ ```ruby
40
+ # config/environments/production.rb
41
+ - [ ] config.force_ssl = true
42
+ - [ ] config.consider_all_requests_local = false
43
+ - [ ] config.hosts configurado
44
+
45
+ # config/initializers/content_security_policy.rb
46
+ - [ ] CSP configurado
47
+
48
+ # config/initializers/filter_parameter_logging.rb
49
+ - [ ] Parámetros sensibles filtrados
50
+
51
+ # config/initializers/session_store.rb
52
+ - [ ] Cookies seguras (secure, httponly, same_site)
53
+ ```
54
+
55
+ ### 4. Revisar autenticación
56
+
57
+ ```ruby
58
+ # Verificar:
59
+ - [ ] has_secure_password implementado
60
+ - [ ] Validaciones de password (longitud, complejidad)
61
+ - [ ] Rate limiting en login
62
+ - [ ] Account lockout tras intentos fallidos
63
+ ```
64
+
65
+ ### 5. Revisar autorización
66
+
67
+ ```ruby
68
+ # Verificar:
69
+ - [ ] Pundit implementado
70
+ - [ ] after_action :verify_authorized en controllers
71
+ - [ ] Políticas restrictivas por defecto
72
+ - [ ] verify_policy_scoped para index actions
73
+ ```
74
+
75
+ ### 6. Buscar patrones vulnerables
76
+
77
+ ```bash
78
+ # SQL Injection potencial
79
+ grep -rn "where.*\#{" app/ --include="*.rb"
80
+ grep -rn "\.find_by_sql" app/ --include="*.rb"
81
+
82
+ # XSS potencial
83
+ grep -rn "\.html_safe" app/ --include="*.rb"
84
+ grep -rn "raw(" app/ --include="*.erb"
85
+ grep -rn "<%= raw" app/ --include="*.erb"
86
+
87
+ # Mass assignment
88
+ grep -rn "permit!" app/ --include="*.rb"
89
+
90
+ # Hardcoded secrets
91
+ grep -rn "password\s*=" app/ --include="*.rb" | grep -v "password_digest"
92
+ grep -rn "api_key\s*=" app/ --include="*.rb"
93
+ grep -rn "secret" app/ --include="*.rb" | grep -v credentials
94
+ ```
95
+
96
+ ### 7. Verificar headers de seguridad
97
+
98
+ ```ruby
99
+ # Hacer request y verificar headers
100
+ curl -I https://localhost:3000 2>/dev/null | grep -E "X-Frame|X-Content|X-XSS|Content-Security|Strict-Transport"
101
+
102
+ # Headers esperados:
103
+ # X-Frame-Options: DENY o SAMEORIGIN
104
+ # X-Content-Type-Options: nosniff
105
+ # X-XSS-Protection: 1; mode=block
106
+ # Content-Security-Policy: ...
107
+ # Strict-Transport-Security: max-age=...
108
+ ```
109
+
110
+ ## Output
111
+
112
+ ### Reporte de seguridad
113
+
114
+ ```markdown
115
+ # Auditoría de Seguridad
116
+ Fecha: [fecha actual]
117
+ Proyecto: [nombre del proyecto]
118
+
119
+ ## Resumen Ejecutivo
120
+
121
+ | Categoría | Estado |
122
+ |-----------|--------|
123
+ | Brakeman | ✅ / ⚠️ / ❌ |
124
+ | Dependencias | ✅ / ⚠️ / ❌ |
125
+ | Configuración | ✅ / ⚠️ / ❌ |
126
+ | Autenticación | ✅ / ⚠️ / ❌ |
127
+ | Autorización | ✅ / ⚠️ / ❌ |
128
+ | Headers | ✅ / ⚠️ / ❌ |
129
+
130
+ ## Hallazgos por Severidad
131
+
132
+ ### Críticos (requieren acción inmediata)
133
+ [Lista de hallazgos críticos]
134
+
135
+ ### Altos (resolver pronto)
136
+ [Lista de hallazgos altos]
137
+
138
+ ### Medios (planificar corrección)
139
+ [Lista de hallazgos medios]
140
+
141
+ ### Bajos (mejoras recomendadas)
142
+ [Lista de hallazgos bajos]
143
+
144
+ ## Detalles
145
+
146
+ ### Brakeman
147
+ [Resumen de warnings encontrados]
148
+
149
+ ### Dependencias vulnerables
150
+ [Lista de gems con vulnerabilidades conocidas]
151
+
152
+ ### Configuración
153
+ [Problemas de configuración encontrados]
154
+
155
+ ## Recomendaciones
156
+
157
+ 1. [Recomendación prioritaria con pasos]
158
+ 2. [Siguiente recomendación]
159
+ ...
160
+
161
+ ## Próximos pasos
162
+
163
+ - [ ] Corregir hallazgos críticos
164
+ - [ ] Actualizar dependencias vulnerables
165
+ - [ ] Implementar mejoras de configuración
166
+ - [ ] Programar siguiente auditoría
167
+ ```
168
+
169
+ ## Ejemplos de uso
170
+
171
+ ```bash
172
+ # Usuario escribe:
173
+ /seguridad
174
+
175
+ # O en lenguaje natural:
176
+ "Revisa la seguridad de la app"
177
+ "Ejecuta una auditoría de seguridad"
178
+ "Busca vulnerabilidades"
179
+ "¿Es segura mi aplicación?"
180
+ ```
181
+
182
+ ## Automatización
183
+
184
+ ### GitHub Action para CI
185
+
186
+ ```yaml
187
+ # .github/workflows/security.yml
188
+ name: Security Audit
189
+
190
+ on:
191
+ push:
192
+ branches: [main]
193
+ pull_request:
194
+ branches: [main]
195
+ schedule:
196
+ - cron: '0 0 * * 1' # Lunes a medianoche
197
+
198
+ jobs:
199
+ security:
200
+ runs-on: ubuntu-latest
201
+ steps:
202
+ - uses: actions/checkout@v4
203
+
204
+ - name: Set up Ruby
205
+ uses: ruby/setup-ruby@v1
206
+ with:
207
+ ruby-version: '3.3'
208
+ bundler-cache: true
209
+
210
+ - name: Run Brakeman
211
+ run: |
212
+ gem install brakeman
213
+ brakeman -q -w2 --no-pager
214
+
215
+ - name: Run Bundle Audit
216
+ run: |
217
+ gem install bundler-audit
218
+ bundle-audit check --update
219
+ ```
220
+
221
+ ## Notas
222
+
223
+ - Ejecutar regularmente (al menos semanalmente)
224
+ - Revisar antes de cada deploy a producción
225
+ - Mantener dependencias actualizadas
226
+ - Documentar excepciones de seguridad aceptadas
@@ -0,0 +1,157 @@
1
+ # Comando: /tasks
2
+
3
+ Crea tareas (historias de usuario) a partir del PRD del feature siguiendo el **Principio de Independencia**.
4
+
5
+ ## Argumentos
6
+ - `feature_id` (requerido): ID del feature (ej. 2025-12-19-143052-mi-feature)
7
+
8
+ ## Principio: Independencia de Tareas
9
+
10
+ Cada tarea debe cumplir:
11
+
12
+ | Aspecto | Requisito |
13
+ |---------|-----------|
14
+ | **Independiente** | Puede implementarse sin depender de tareas no completadas |
15
+ | **Atómica** | Una sola funcionalidad por tarea |
16
+ | **Verificable** | Criterios de aceptación claros y testeables |
17
+ | **Estimable** | Tamaño razonable para una sesión de trabajo |
18
+ | **Ordenada** | Prioridad clara basada en dependencias y valor |
19
+
20
+ ### Detección de Violaciones
21
+
22
+ **CRÍTICO**: Al generar tareas, detectar activamente:
23
+
24
+ 1. **Dependencias Circulares**: Tarea A depende de B, B depende de A
25
+ 2. **Tareas Muy Grandes**: Más de 5 criterios de aceptación
26
+ 3. **Tareas Duplicadas**: Misma funcionalidad en diferentes tareas
27
+ 4. **Conflictos con Otros Features**: Tareas que modifican los mismos archivos
28
+
29
+ **Si se encuentran violaciones, dividir o reorganizar las tareas.**
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` y `prd.md`
37
+ 3. Si falta el PRD, mostrar error y sugerir `/prd {feature_id}` primero
38
+
39
+ ### Fase 2: Análisis de Tareas Existentes (OBLIGATORIO)
40
+
41
+ 1. Listar todas las tareas en `features/*/tasks/*/`
42
+ 2. Identificar tareas con status `defined`, `planned`, `in_progress`
43
+ 3. Extraer archivos que planean modificar (de sus plan.md si existen)
44
+
45
+ **Crear matriz de conflictos potenciales:**
46
+ ```
47
+ | Archivo/Recurso | Este Feature | Otro Feature | Conflicto? |
48
+ |-----------------|--------------|--------------|------------|
49
+ | users_controller.rb | Tarea 001 | feature-abc/002 | REVISAR |
50
+ ```
51
+
52
+ ### Fase 3: Leer y Analizar el PRD
53
+
54
+ 1. Cargar `features/{feature_id}/prd.md`
55
+ 2. Identificar los requisitos funcionales (RF-XX)
56
+ 3. Entender el flujo de usuario
57
+ 4. Identificar dependencias entre funcionalidades
58
+ 5. Revisar el alcance (incluido vs excluido)
59
+
60
+ ### Fase 4: Crear Carpeta de Tareas
61
+
62
+ ```bash
63
+ mkdir -p features/{feature_id}/tasks/
64
+ ```
65
+
66
+ ### Fase 5: Generar Tareas
67
+
68
+ Aplicar criterios:
69
+
70
+ 1. **Una tarea por requisito funcional principal**
71
+ 2. **Ordenar por dependencias** (las base primero)
72
+ 3. **IDs secuenciales**: 001, 002, 003...
73
+ 4. **Slugs descriptivos**: `crear-comentario`, `responder-comentario`
74
+
75
+ ### Fase 6: Crear Estructura de Cada Tarea
76
+
77
+ Para cada tarea, crear:
78
+ ```
79
+ features/{feature_id}/tasks/{id}-{slug}/
80
+ features/{feature_id}/tasks/{id}-{slug}/user-story.md
81
+ ```
82
+
83
+ Usar el template de `.claude/templates/task-user-story.md`
84
+
85
+ ### Fase 7: Actualizar feature.json
86
+
87
+ 1. Agregar array `tasks` con cada tarea:
88
+ ```json
89
+ {
90
+ "id": "001",
91
+ "slug": "crear-comentario",
92
+ "title": "Crear comentario en artículo",
93
+ "status": "defined",
94
+ "priority": 1,
95
+ "requisito": "RF-01",
96
+ "depends_on": []
97
+ }
98
+ ```
99
+ 2. Cambiar `status` a `"tasks_created"`
100
+ 3. Cambiar `current_phase` a `"tasks"`
101
+ 4. Actualizar `updated_at`
102
+
103
+ ### Fase 8: Validar Tareas Creadas
104
+
105
+ ```bash
106
+ # Verificar que existe al menos una tarea
107
+ ls features/{feature_id}/tasks/*/user-story.md | wc -l
108
+
109
+ # Verificar tamaño de tareas (máximo 5 criterios por tarea)
110
+ for story in features/{feature_id}/tasks/*/user-story.md; do
111
+ count=$(grep -c "^\- \[ \]" "$story")
112
+ if [ "$count" -gt 5 ]; then
113
+ echo "WARNING: $story tiene $count criterios (máximo recomendado: 5)"
114
+ fi
115
+ done
116
+ ```
117
+
118
+ ## Criterios de Priorización
119
+
120
+ | Prioridad | Descripción | Ejemplo |
121
+ |-----------|-------------|---------|
122
+ | **1** | Funcionalidad base necesaria para otras tareas | Modelo de datos |
123
+ | **2** | Funcionalidad de alto valor para el usuario | CRUD principal |
124
+ | **3** | Funcionalidades complementarias o de mejora | Validaciones extra |
125
+ | **4** | Funcionalidades opcionales o de bajo impacto | Mejoras de UX |
126
+
127
+ ## Report
128
+
129
+ ```
130
+ Tareas generadas exitosamente!
131
+
132
+ Feature: {título}
133
+ Total: {N} tareas creadas
134
+
135
+ TAREAS:
136
+ 001 - {título tarea 1} [defined] (RF-01) P1
137
+ Depende de: ninguna
138
+ 002 - {título tarea 2} [defined] (RF-02) P1
139
+ Depende de: 001
140
+ 003 - {título tarea 3} [defined] (RF-03) P2
141
+ Depende de: 001, 002
142
+
143
+ Conflictos detectados: {M}
144
+ - {descripción del conflicto si hay}
145
+
146
+ Siguiente paso:
147
+ /plan features/{feature_id}/tasks/001-{slug}
148
+ ```
149
+
150
+ ## Consideraciones
151
+
152
+ - Las tareas deben ser independientes cuando sea posible
153
+ - Si hay dependencias, la tarea dependiente debe tener prioridad mayor (número mayor)
154
+ - Cada tarea debe ser lo suficientemente pequeña para completarse en una sesión
155
+ - Los criterios de aceptación deben ser verificables objetivamente
156
+ - Documentar conflictos con tareas de otros features
157
+ - Máximo 5 criterios de aceptación por tarea (dividir si hay más)