@the-bearded-bear/claude-craft 8.26.0 → 8.27.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 (187) hide show
  1. package/Dev/i18n/base/Common/commands/aliases.md +48 -48
  2. package/Dev/i18n/base/Common/skills/sub-agents-patterns/SKILL.md +1 -0
  3. package/Dev/i18n/de/Common/agents/devops-engineer.md +19 -14
  4. package/Dev/i18n/de/Common/agents/migration-specialist.md +10 -15
  5. package/Dev/i18n/de/Common/agents/mlops-engineer.md +19 -15
  6. package/Dev/i18n/de/Common/agents/ralph-conductor.md +4 -15
  7. package/Dev/i18n/de/Common/agents/refactoring-specialist.md +0 -9
  8. package/Dev/i18n/de/Common/agents/tdd-coach.md +0 -9
  9. package/Dev/i18n/de/Common/agents/uiux-orchestrator.md +0 -9
  10. package/Dev/i18n/de/Common/commands/ralph-run.md +52 -0
  11. package/Dev/i18n/de/Common/commands/research-context7.md +5 -253
  12. package/Dev/i18n/de/Common/rules/12-context-management.md +10 -8
  13. package/Dev/i18n/de/Common/templates/settings.json.template +4 -0
  14. package/Dev/i18n/de/Python/skills/coding-standards/SKILL.md +1 -1
  15. package/Dev/i18n/de/Python/skills/testing-python/SKILL.md +1 -1
  16. package/Dev/i18n/de/Python/skills/tooling/SKILL.md +1 -1
  17. package/Dev/i18n/de/Symfony/commands/check-security.md +20 -20
  18. package/Dev/i18n/de/Symfony/skills/aggregates/SKILL.md +1 -1
  19. package/Dev/i18n/de/Symfony/skills/async/SKILL.md +1 -1
  20. package/Dev/i18n/de/Symfony/skills/cqrs/SKILL.md +1 -1
  21. package/Dev/i18n/de/Symfony/skills/domain-events/SKILL.md +1 -1
  22. package/Dev/i18n/de/Symfony/skills/i18n/SKILL.md +1 -1
  23. package/Dev/i18n/de/Symfony/skills/multitenant/SKILL.md +1 -1
  24. package/Dev/i18n/de/Symfony/skills/value-objects/SKILL.md +1 -1
  25. package/Dev/i18n/de/Team/commands/audit.md +29 -4
  26. package/Dev/i18n/de/Team/commands/delivery.md +29 -4
  27. package/Dev/i18n/de/Team/commands/security.md +31 -4
  28. package/Dev/i18n/de/Team/commands/sprint.md +30 -5
  29. package/Dev/i18n/de/UIUX/commands/audit.md +1 -30
  30. package/Dev/i18n/de/UIUX/commands/component-spec.md +1 -5
  31. package/Dev/i18n/de/UIUX/commands/orchestrator.md +5 -98
  32. package/Dev/i18n/de/Workflow/commands/auto-sprint.md +7 -4
  33. package/Dev/i18n/de/Workflow/commands/plan.md +1 -2
  34. package/Dev/i18n/en/Common/agents/devops-engineer.md +19 -14
  35. package/Dev/i18n/en/Common/agents/migration-specialist.md +10 -15
  36. package/Dev/i18n/en/Common/agents/mlops-engineer.md +19 -15
  37. package/Dev/i18n/en/Common/agents/ralph-conductor.md +4 -15
  38. package/Dev/i18n/en/Common/agents/refactoring-specialist.md +0 -9
  39. package/Dev/i18n/en/Common/agents/tdd-coach.md +0 -9
  40. package/Dev/i18n/en/Common/agents/uiux-orchestrator.md +0 -9
  41. package/Dev/i18n/en/Common/commands/ralph-run.md +52 -0
  42. package/Dev/i18n/en/Common/commands/research-context7.md +5 -253
  43. package/Dev/i18n/en/Common/rules/12-context-management.md +12 -10
  44. package/Dev/i18n/en/Common/templates/settings.json.template +4 -0
  45. package/Dev/i18n/en/Python/skills/coding-standards/SKILL.md +1 -1
  46. package/Dev/i18n/en/Python/skills/testing-python/SKILL.md +1 -1
  47. package/Dev/i18n/en/Python/skills/tooling/SKILL.md +1 -1
  48. package/Dev/i18n/en/Symfony/commands/check-security.md +20 -20
  49. package/Dev/i18n/en/Symfony/skills/aggregates/SKILL.md +1 -1
  50. package/Dev/i18n/en/Symfony/skills/async/SKILL.md +1 -1
  51. package/Dev/i18n/en/Symfony/skills/cqrs/SKILL.md +1 -1
  52. package/Dev/i18n/en/Symfony/skills/domain-events/SKILL.md +1 -1
  53. package/Dev/i18n/en/Symfony/skills/i18n/SKILL.md +1 -1
  54. package/Dev/i18n/en/Symfony/skills/multitenant/SKILL.md +1 -1
  55. package/Dev/i18n/en/Symfony/skills/value-objects/SKILL.md +1 -1
  56. package/Dev/i18n/en/Team/commands/audit.md +29 -4
  57. package/Dev/i18n/en/Team/commands/delivery.md +29 -4
  58. package/Dev/i18n/en/Team/commands/security.md +31 -4
  59. package/Dev/i18n/en/Team/commands/sprint.md +30 -5
  60. package/Dev/i18n/en/UIUX/commands/audit.md +1 -30
  61. package/Dev/i18n/en/UIUX/commands/component-spec.md +1 -5
  62. package/Dev/i18n/en/UIUX/commands/orchestrator.md +5 -98
  63. package/Dev/i18n/en/Workflow/commands/auto-sprint.md +7 -4
  64. package/Dev/i18n/en/Workflow/commands/plan.md +1 -2
  65. package/Dev/i18n/es/Common/agents/devops-engineer.md +19 -14
  66. package/Dev/i18n/es/Common/agents/migration-specialist.md +10 -15
  67. package/Dev/i18n/es/Common/agents/mlops-engineer.md +19 -15
  68. package/Dev/i18n/es/Common/agents/ralph-conductor.md +4 -15
  69. package/Dev/i18n/es/Common/agents/refactoring-specialist.md +0 -9
  70. package/Dev/i18n/es/Common/agents/tdd-coach.md +0 -9
  71. package/Dev/i18n/es/Common/agents/uiux-orchestrator.md +0 -9
  72. package/Dev/i18n/es/Common/commands/ralph-run.md +52 -0
  73. package/Dev/i18n/es/Common/commands/research-context7.md +5 -253
  74. package/Dev/i18n/es/Common/rules/12-context-management.md +9 -7
  75. package/Dev/i18n/es/Common/templates/settings.json.template +4 -0
  76. package/Dev/i18n/es/Python/skills/coding-standards/SKILL.md +1 -1
  77. package/Dev/i18n/es/Python/skills/testing-python/SKILL.md +1 -1
  78. package/Dev/i18n/es/Python/skills/tooling/SKILL.md +1 -1
  79. package/Dev/i18n/es/Symfony/commands/check-security.md +20 -20
  80. package/Dev/i18n/es/Symfony/skills/aggregates/SKILL.md +1 -1
  81. package/Dev/i18n/es/Symfony/skills/async/SKILL.md +1 -1
  82. package/Dev/i18n/es/Symfony/skills/cqrs/SKILL.md +1 -1
  83. package/Dev/i18n/es/Symfony/skills/domain-events/SKILL.md +1 -1
  84. package/Dev/i18n/es/Symfony/skills/i18n/SKILL.md +1 -1
  85. package/Dev/i18n/es/Symfony/skills/multitenant/SKILL.md +1 -1
  86. package/Dev/i18n/es/Symfony/skills/value-objects/SKILL.md +1 -1
  87. package/Dev/i18n/es/Team/commands/audit.md +29 -4
  88. package/Dev/i18n/es/Team/commands/delivery.md +29 -4
  89. package/Dev/i18n/es/Team/commands/security.md +31 -4
  90. package/Dev/i18n/es/Team/commands/sprint.md +30 -5
  91. package/Dev/i18n/es/UIUX/commands/audit.md +1 -30
  92. package/Dev/i18n/es/UIUX/commands/component-spec.md +1 -5
  93. package/Dev/i18n/es/UIUX/commands/orchestrator.md +5 -98
  94. package/Dev/i18n/es/Workflow/commands/auto-sprint.md +7 -4
  95. package/Dev/i18n/es/Workflow/commands/plan.md +1 -2
  96. package/Dev/i18n/fr/Common/agents/devops-engineer.md +19 -14
  97. package/Dev/i18n/fr/Common/agents/migration-specialist.md +10 -15
  98. package/Dev/i18n/fr/Common/agents/mlops-engineer.md +19 -15
  99. package/Dev/i18n/fr/Common/agents/ralph-conductor.md +4 -15
  100. package/Dev/i18n/fr/Common/agents/refactoring-specialist.md +0 -9
  101. package/Dev/i18n/fr/Common/agents/tdd-coach.md +0 -9
  102. package/Dev/i18n/fr/Common/agents/uiux-orchestrator.md +0 -9
  103. package/Dev/i18n/fr/Common/commands/ralph-run.md +52 -0
  104. package/Dev/i18n/fr/Common/commands/research-context7.md +5 -253
  105. package/Dev/i18n/fr/Common/rules/12-context-management.md +10 -8
  106. package/Dev/i18n/fr/Common/templates/settings.json.template +4 -0
  107. package/Dev/i18n/fr/React/commands/check-compliance.md +1 -1
  108. package/Dev/i18n/fr/React/commands/check-security.md +2 -2
  109. package/Dev/i18n/fr/Symfony/commands/check-security.md +20 -20
  110. package/Dev/i18n/fr/Symfony/skills/aggregates/SKILL.md +1 -1
  111. package/Dev/i18n/fr/Symfony/skills/async/SKILL.md +1 -1
  112. package/Dev/i18n/fr/Symfony/skills/cqrs/SKILL.md +1 -1
  113. package/Dev/i18n/fr/Symfony/skills/domain-events/SKILL.md +1 -1
  114. package/Dev/i18n/fr/Symfony/skills/i18n/SKILL.md +1 -1
  115. package/Dev/i18n/fr/Symfony/skills/multitenant/SKILL.md +1 -1
  116. package/Dev/i18n/fr/Symfony/skills/value-objects/SKILL.md +1 -1
  117. package/Dev/i18n/fr/Team/commands/audit.md +29 -4
  118. package/Dev/i18n/fr/Team/commands/delivery.md +29 -4
  119. package/Dev/i18n/fr/Team/commands/security.md +31 -4
  120. package/Dev/i18n/fr/Team/commands/sprint.md +30 -5
  121. package/Dev/i18n/fr/UIUX/commands/audit.md +1 -30
  122. package/Dev/i18n/fr/UIUX/commands/component-spec.md +1 -5
  123. package/Dev/i18n/fr/UIUX/commands/orchestrator.md +5 -98
  124. package/Dev/i18n/fr/Workflow/commands/auto-sprint.md +7 -4
  125. package/Dev/i18n/fr/Workflow/commands/plan.md +1 -2
  126. package/Dev/i18n/pt/Common/agents/devops-engineer.md +19 -14
  127. package/Dev/i18n/pt/Common/agents/migration-specialist.md +10 -15
  128. package/Dev/i18n/pt/Common/agents/mlops-engineer.md +19 -15
  129. package/Dev/i18n/pt/Common/agents/ralph-conductor.md +4 -15
  130. package/Dev/i18n/pt/Common/agents/refactoring-specialist.md +0 -9
  131. package/Dev/i18n/pt/Common/agents/tdd-coach.md +0 -9
  132. package/Dev/i18n/pt/Common/agents/uiux-orchestrator.md +0 -9
  133. package/Dev/i18n/pt/Common/commands/ralph-run.md +52 -0
  134. package/Dev/i18n/pt/Common/commands/research-context7.md +5 -253
  135. package/Dev/i18n/pt/Common/rules/12-context-management.md +9 -7
  136. package/Dev/i18n/pt/Common/templates/settings.json.template +4 -0
  137. package/Dev/i18n/pt/Python/skills/coding-standards/SKILL.md +1 -1
  138. package/Dev/i18n/pt/Python/skills/testing-python/SKILL.md +1 -1
  139. package/Dev/i18n/pt/Python/skills/tooling/SKILL.md +1 -1
  140. package/Dev/i18n/pt/Symfony/commands/check-security.md +20 -20
  141. package/Dev/i18n/pt/Symfony/skills/aggregates/SKILL.md +1 -1
  142. package/Dev/i18n/pt/Symfony/skills/async/SKILL.md +1 -1
  143. package/Dev/i18n/pt/Symfony/skills/cqrs/SKILL.md +1 -1
  144. package/Dev/i18n/pt/Symfony/skills/domain-events/SKILL.md +1 -1
  145. package/Dev/i18n/pt/Symfony/skills/i18n/SKILL.md +1 -1
  146. package/Dev/i18n/pt/Symfony/skills/multitenant/SKILL.md +1 -1
  147. package/Dev/i18n/pt/Symfony/skills/value-objects/SKILL.md +1 -1
  148. package/Dev/i18n/pt/Team/commands/audit.md +29 -4
  149. package/Dev/i18n/pt/Team/commands/delivery.md +29 -4
  150. package/Dev/i18n/pt/Team/commands/security.md +31 -4
  151. package/Dev/i18n/pt/Team/commands/sprint.md +30 -5
  152. package/Dev/i18n/pt/UIUX/commands/audit.md +1 -30
  153. package/Dev/i18n/pt/UIUX/commands/component-spec.md +1 -5
  154. package/Dev/i18n/pt/UIUX/commands/orchestrator.md +5 -98
  155. package/Dev/i18n/pt/Workflow/commands/auto-sprint.md +7 -4
  156. package/Dev/i18n/pt/Workflow/commands/plan.md +1 -2
  157. package/Dev/scripts/install-common-rules.sh +8 -0
  158. package/README.md +12 -8
  159. package/Tools/Ralph/lib/checkpoint.sh +3 -3
  160. package/Tools/Ralph/lib/circuit-breaker.sh +10 -10
  161. package/Tools/Ralph/lib/context-manager.sh +56 -65
  162. package/Tools/Ralph/lib/context-reconstruction.sh +46 -79
  163. package/Tools/Ralph/lib/dod-templates.sh +2 -2
  164. package/Tools/Ralph/lib/dod-validator.sh +18 -18
  165. package/Tools/Ralph/lib/escalation-service.sh +9 -7
  166. package/Tools/Ralph/lib/hooks-generator.sh +2 -1
  167. package/Tools/Ralph/lib/loop-finalizer.sh +1 -1
  168. package/Tools/Ralph/lib/loop.sh +44 -10
  169. package/Tools/Ralph/lib/metrics-exporter.sh +1 -1
  170. package/Tools/Ralph/lib/parallel-manager.sh +173 -88
  171. package/Tools/Ralph/lib/project-detector.sh +3 -3
  172. package/Tools/Ralph/lib/recovery-engine.sh +8 -8
  173. package/Tools/Ralph/lib/session.sh +2 -2
  174. package/Tools/Ralph/lib/sprint-conductor.sh +167 -124
  175. package/Tools/Ralph/lib/sprint-progress.sh +9 -9
  176. package/Tools/Ralph/ralph.sh +66 -38
  177. package/Tools/StatusLine/statusline.sh +0 -0
  178. package/Tools/i18n/ralph/de.sh +165 -33
  179. package/Tools/i18n/ralph/en.sh +132 -0
  180. package/Tools/i18n/ralph/es.sh +209 -77
  181. package/Tools/i18n/ralph/fr.sh +234 -102
  182. package/Tools/i18n/ralph/pt.sh +227 -95
  183. package/bundles/cursor/.cursorrules +3 -3
  184. package/bundles/windsurf/.windsurfrules +3 -3
  185. package/cli/lib/doctor.js +1 -1
  186. package/config/removed-commands.yaml +61 -1
  187. package/package.json +1 -1
@@ -69,7 +69,7 @@ Former `/workflow:plan --research`. Focus on research, exploration and constrain
69
69
  | Market | Existing solutions? Competitors? Industry best practices? Emerging trends? |
70
70
  | Technical | Candidate technologies? Integrations? Scalability? Security / compliance? |
71
71
 
72
- If MCP Context7 is configured, use it for up-to-date technical documentation (`/common:research-context7` for deep research).
72
+ If MCP Context7 is configured, use it for up-to-date technical documentation (`/deep-research` for deep web research; outside claude.ai, the `@research-assistant` agent).
73
73
 
74
74
  **Constraints**: document technical (existing backend, database), business (budget, timeline, backward compatibility), regulatory (GDPR, PCI DSS) and resource (team size, no DevOps) constraints.
75
75
 
@@ -213,4 +213,3 @@ If interrupted, `/workflow:plan --continue` detects what exists (PRD complete, b
213
213
  - `/workflow:status` - Check progress
214
214
  - `/project:backlog` - Add, list, edit and move stories afterwards
215
215
  - `/gate:check` - Validate the backlog
216
- - `/common:research-context7` - Deep research with Context7 MCP
@@ -7,20 +7,6 @@ maxTurns: 8
7
7
  tools: [Read, Glob, Grep, Edit, Write, Bash, WebFetch, WebSearch]
8
8
  permissionMode: default
9
9
  skills: [git-workflow, security]
10
- disallowedTools:
11
- - "Bash(rm -rf:*)"
12
- - "Bash(dd:*)"
13
- - "Bash(mkfs:*)"
14
- - "Bash(kubectl delete:*)"
15
- - "Bash(helm uninstall:*)"
16
- - "Bash(terraform destroy:*)"
17
- - "Bash(tofu destroy:*)"
18
- - "Bash(docker system prune -a*)"
19
- - "Bash(docker volume rm:*)"
20
- - "Bash(curl * | sh*)"
21
- - "Bash(wget * | sh*)"
22
- - "Bash(git push --force*)"
23
- - "Bash(git push -f*)"
24
10
  ---
25
11
 
26
12
  # Agente Ingeniero DevOps
@@ -232,3 +218,22 @@ strategy:
232
218
  3. Configurar health checks
233
219
  4. Preparar rollback
234
220
  5. Monitorear despliegue
221
+
222
+ ## Protección de comandos destructivos
223
+
224
+ Un agente no puede bloquear un comando concreto: `disallowedTools: Bash(...)` retira todo Bash. Estos comandos pasan por el prompt de permiso — pedir siempre una confirmación explícita antes de ejecutarlos. Para bloquearlos en un proyecto, añadir a su `.claude/settings.json` (las reglas también se aplican a los subagentes):
225
+
226
+ ```json
227
+ {
228
+ "permissions": {
229
+ "deny": [
230
+ "Bash(kubectl delete:*)",
231
+ "Bash(helm uninstall:*)",
232
+ "Bash(terraform destroy:*)",
233
+ "Bash(tofu destroy:*)",
234
+ "Bash(docker volume rm:*)",
235
+ "Bash(docker system prune -a*)"
236
+ ]
237
+ }
238
+ }
239
+ ```
@@ -6,22 +6,13 @@ maxTurns: 6
6
6
  effort: xhigh
7
7
  memory: user
8
8
  tools: [Read, Glob, Grep, Bash, WebFetch, WebSearch]
9
- # Audit 2026-05-18 QW-15 — migrations touch shared/prod databases. Block
10
- # destructive shell verbs and database drop/truncate. Investigate-then-output
11
- # is fine; actual destructive execution must require an explicit user opt-in.
12
- disallowedTools:
13
- - "Bash(rm -rf:*)"
14
- - "Bash(dd:*)"
15
- - "Bash(mkfs:*)"
16
- - "Bash(:(){:|:&};:*)"
17
- - "Bash(DROP DATABASE:*)"
18
- - "Bash(DROP TABLE:*)"
19
- - "Bash(TRUNCATE:*)"
20
- - "Bash(pg_dump:*)"
21
- - "Bash(mysqldump:*)"
22
- - "Bash(curl * | sh*)"
23
- - "Bash(wget * | sh*)"
24
9
  permissionMode: default
10
+ hooks:
11
+ PreToolUse:
12
+ - matcher: "Bash"
13
+ hooks:
14
+ - type: command
15
+ command: "grep -qiE '(^|[^A-Za-z_])(DROP[[:space:]]+(DATABASE|SCHEMA|TABLE)|TRUNCATE)([^A-Za-z_]|$)' && { echo \"BLOQUEADO: SQL destructivo (DROP DATABASE/SCHEMA/TABLE, TRUNCATE). Proponer el comando al usuario para que lo ejecute él mismo.\" >&2; exit 2; } || exit 0"
25
16
  ---
26
17
 
27
18
  # Agente Migration Specialist
@@ -140,3 +131,7 @@ Eres un **Migration Specialist Senior** con más de 12 años de experiencia en m
140
131
  - [Stripe - Online migrations at scale](https://stripe.com/blog/online-migrations)
141
132
  - [Shopify - Sharding playbook](https://shopify.engineering/learnings-from-shopifys-largest-database-sharding-project)
142
133
  - [Strangler Fig - Martin Fowler](https://martinfowler.com/bliki/StranglerFigApplication.html)
134
+
135
+ ## Protección contra SQL destructivo
136
+
137
+ Un hook `PreToolUse` declarado en el frontmatter bloquea, mientras este agente se ejecuta, todo comando Bash que contenga `DROP DATABASE`, `DROP SCHEMA`, `DROP TABLE` o `TRUNCATE` (por ejemplo `psql -c "DROP TABLE …"`): proponer entonces el comando al usuario. Los archivos de migración escritos con Edit/Write no se ven afectados. Límites: el hook solo se ejecuta tras aceptar la confianza de la carpeta (workspace trust) y se ignora cuando el agente se carga desde un plugin.
@@ -6,21 +6,6 @@ maxTurns: 6
6
6
  effort: medium
7
7
  memory: user
8
8
  tools: [Read, Glob, Grep, Edit, Write, Bash, WebFetch, WebSearch]
9
- # Audit 2026-05-18 QW-15 — MLOps touches feature stores, model registries
10
- # and inference endpoints (often production). Block destructive verbs on
11
- # data/model artefacts and on the underlying infra.
12
- disallowedTools:
13
- - "Bash(rm -rf:*)"
14
- - "Bash(dd:*)"
15
- - "Bash(mkfs:*)"
16
- - "Bash(kubectl delete:*)"
17
- - "Bash(helm uninstall:*)"
18
- - "Bash(mlflow models delete:*)"
19
- - "Bash(mlflow registered-models delete:*)"
20
- - "Bash(aws s3 rm:*)"
21
- - "Bash(gsutil rm:*)"
22
- - "Bash(curl * | sh*)"
23
- - "Bash(wget * | sh*)"
24
9
  permissionMode: default
25
10
  ---
26
11
 
@@ -262,3 +247,22 @@ if report.as_dict()["metrics"][0]["result"]["dataset_drift"]:
262
247
  - [Google MLOps Guide](https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning)
263
248
  - [Book: Introducing MLOps](https://www.oreilly.com/library/view/introducing-mlops/9781492083283/)
264
249
  - [ML Model Governance](https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-management-and-deployment)
250
+
251
+ ## Protección de comandos destructivos
252
+
253
+ Un agente no puede bloquear un comando concreto: `disallowedTools: Bash(...)` retira todo Bash. Estos comandos pasan por el prompt de permiso — pedir siempre una confirmación explícita antes de ejecutarlos. Para bloquearlos en un proyecto, añadir a su `.claude/settings.json` (las reglas también se aplican a los subagentes):
254
+
255
+ ```json
256
+ {
257
+ "permissions": {
258
+ "deny": [
259
+ "Bash(kubectl delete:*)",
260
+ "Bash(helm uninstall:*)",
261
+ "Bash(mlflow models delete:*)",
262
+ "Bash(mlflow registered-models delete:*)",
263
+ "Bash(aws s3 rm:*)",
264
+ "Bash(gsutil rm:*)"
265
+ ]
266
+ }
267
+ }
268
+ ```
@@ -5,17 +5,6 @@ model: opus
5
5
  effort: xhigh
6
6
  maxTurns: 10
7
7
  memory: user
8
- disallowedTools:
9
- - "Bash(rm -rf:*)"
10
- - "Bash(dd:*)"
11
- - "Bash(mkfs:*)"
12
- - "Bash(:(){:|:&};:*)"
13
- - "Bash(sudo:*)"
14
- - "Bash(chmod 777:*)"
15
- - "Bash(curl * | sh*)"
16
- - "Bash(wget * | sh*)"
17
- - "Bash(git push --force*)"
18
- - "Bash(git push -f*)"
19
8
  ---
20
9
 
21
10
  # Agente Ralph Conductor v2.0
@@ -186,11 +175,11 @@ Summary:
186
175
 
187
176
  ## Modo de Coordinación de Equipos de Agentes
188
177
 
189
- Cuando opera en modo Agent Teams (activado mediante `--ralph-mode` en `/team:sprint`), el conductor asume el rol de **team lead** y coordina a un compañero desarrollador a través de la API Claude Code Agent Teams en lugar de la gestión de procesos bash.
178
+ Cuando opera en modo Agent Teams (activado mediante `--ralph-mode` en `/team:sprint --engine=teams`), el conductor asume el rol de **team lead** y coordina a un compañero desarrollador a través de la API Claude Code Agent Teams en lugar de la gestión de procesos bash.
190
179
 
191
180
  ### Prerequisitos
192
181
 
193
- - Variable de entorno `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`
182
+ - Variable de entorno `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` (solo requerida por `/team:sprint --engine=teams`)
194
183
  - Claude Code v2.1.32+
195
184
  - Librería adaptadora: `Tools/AgentTeams/lib/ralph-teams-adapter.sh`
196
185
 
@@ -227,8 +216,8 @@ El conductor ejecuta comprobaciones de salud periódicas a través de `teams_wat
227
216
  ### Mantenimiento del Modo Bash Intacto
228
217
 
229
218
  Toda la orquestación en modo bash existente permanece sin cambios. El modo Agent Teams se activa únicamente cuando:
230
- 1. La bandera `--ralph-mode` se pasa a `/team:sprint`
231
- 2. La variable de entorno `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` está definida
219
+ 1. La bandera `--ralph-mode` se pasa a `/team:sprint --engine=teams`
220
+ 2. La variable de entorno `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` está definida (solo requerida por `/team:sprint --engine=teams`)
232
221
  3. La librería adaptadora está disponible
233
222
 
234
223
  Sin estas condiciones, el conductor opera exactamente como antes.
@@ -7,15 +7,6 @@ maxTurns: 8
7
7
  tools: [Read, Glob, Grep, Edit, Write, Bash, WebFetch, WebSearch]
8
8
  permissionMode: default
9
9
  skills: [solid-principles, kiss-dry-yagni, testing]
10
- disallowedTools:
11
- - "Bash(rm -rf:*)"
12
- - "Bash(dd:*)"
13
- - "Bash(mkfs:*)"
14
- - "Bash(:(){:|:&};:*)"
15
- - "Bash(sudo:*)"
16
- - "Bash(chmod 777:*)"
17
- - "Bash(curl * | sh*)"
18
- - "Bash(wget * | sh*)"
19
10
  ---
20
11
 
21
12
  # Agente Especialista en Refactoring
@@ -7,15 +7,6 @@ maxTurns: 8
7
7
  tools: [Read, Glob, Grep, Edit, Write, Bash, WebFetch, WebSearch]
8
8
  permissionMode: default
9
9
  skills: [testing, solid-principles]
10
- disallowedTools:
11
- - "Bash(rm -rf:*)"
12
- - "Bash(dd:*)"
13
- - "Bash(mkfs:*)"
14
- - "Bash(:(){:|:&};:*)"
15
- - "Bash(sudo:*)"
16
- - "Bash(chmod 777:*)"
17
- - "Bash(curl * | sh*)"
18
- - "Bash(wget * | sh*)"
19
10
  ---
20
11
 
21
12
  # Agente Coach TDD/BDD
@@ -6,15 +6,6 @@ effort: medium
6
6
  maxTurns: 10
7
7
  tools: [Read, Glob, Grep, Edit, Write, Bash, Agent, WebFetch, WebSearch]
8
8
  permissionMode: default
9
- disallowedTools:
10
- - "Bash(rm -rf:*)"
11
- - "Bash(dd:*)"
12
- - "Bash(mkfs:*)"
13
- - "Bash(:(){:|:&};:*)"
14
- - "Bash(sudo:*)"
15
- - "Bash(chmod 777:*)"
16
- - "Bash(curl * | sh*)"
17
- - "Bash(wget * | sh*)"
18
9
  ---
19
10
 
20
11
  # Agente Orquestador UI/UX
@@ -51,6 +51,12 @@ Ejecuta Claude en un bucle continuo hasta que la tarea esté completa o se cumpl
51
51
  - Establecer máximo de iteraciones, timeouts y criterios DoD
52
52
  - Inicializar hooks si están habilitados
53
53
 
54
+ #### Aislamiento de sesiones y workers paralelos
55
+
56
+ - **Sesión de Claude explícita**: cada sesión de Ralph fija su propio identificador de conversación de Claude — `claude --session-id <uuid>` en la primera iteración y luego `claude --resume <uuid>`. El UUID se guarda en `.ralph/sessions/<session>/claude_session_id`, de modo que `--continue=<session>` reanuda la conversación correcta. Ralph ya no usa `claude --continue`, que reanudaba «la conversación más reciente del directorio» (compartida entre workers, o incluso con la sesión interactiva del usuario).
57
+ - **Un worktree de git por worker** (modo paralelo, `lib/parallel-manager.sh`): cada historia se ejecuta en un worktree dedicado `.ralph/parallel/worktrees/<session>` sobre la rama `ralph/<session>`, con su estado de Ralph en `.ralph/parallel/sessions/<session>/ralph/`. Al final de la ejecución, los cambios pendientes se confirman como `wip(ralph): <story>` en esa rama y después se elimina el worktree (`git worktree remove`). Si ese commit falla, el worktree se conserva (sin pérdida de datos) y se indica en `output.log`. El trabajo se recupera fusionando las ramas `ralph/*`.
58
+ - **Fuera de un repositorio git**: sin worktree; el worker se ejecuta en el directorio actual (se muestra un aviso) y el aislamiento de sesiones de Claude se mantiene.
59
+
54
60
  ### 2. Bucle Principal con Dashboard
55
61
 
56
62
  ```
@@ -76,6 +82,35 @@ El sistema DoD valida la finalización a través de múltiples criterios:
76
82
  | `hook` | Ejecutar un hook de Claude existente |
77
83
  | `human` | Validación humana interactiva |
78
84
 
85
+ #### Límite del validador `command` → usar `type: hook`
86
+
87
+ `type: command` solo ejecuta los comandos que pasan la lista blanca de `Tools/Ralph/lib/dod-validator.sh`: letras, dígitos, espacio y `_ . / " ' -`. Cualquier comando que contenga `=`, `|`, `&` o `:` (así como `;`, `>`, `$`, etc.) se rechaza con `ERROR: Invalid command`: el criterio **nunca** se valida y el bucle se ejecuta hasta que salta el circuit breaker.
88
+
89
+ | Comando rechazado | Carácter culpable |
90
+ |-------------------|-------------------|
91
+ | `dotnet build /p:TreatWarningsAsErrors=true` | `:` y `=` |
92
+ | `npm test && npm run lint` | `&` |
93
+ | `pytest \| tee out.log` | `\|` |
94
+
95
+ En estos casos, colocar el comando en un script y declararlo como `type: hook`:
96
+
97
+ ```yaml
98
+ definition_of_done:
99
+ checklist:
100
+ - id: build
101
+ type: hook
102
+ script: ".ralph/dod/build.sh"
103
+ required: true
104
+ ```
105
+
106
+ ```bash
107
+ #!/usr/bin/env bash
108
+ # .ralph/dod/build.sh — recibe {"cwd": ..., "output": ...} en JSON por stdin
109
+ dotnet build /p:TreatWarningsAsErrors=true || exit 2
110
+ ```
111
+
112
+ El script devuelve `0` (criterio cumplido) o `2` (criterio fallido). Claves leídas por tipo: `command` → `command:`, `output_contains` y `file_changed` → `pattern:`, `hook` → `script:`, `human` → `prompt:`.
113
+
79
114
  ### 4. Circuit Breaker Adaptativo (v2.0)
80
115
 
81
116
  Selecciona automáticamente el perfil basándose en palabras clave de la tarea:
@@ -100,6 +135,23 @@ Claude trabaja...
100
135
  Stop → stop-dod-gate.sh → Bloquear si DoD no satisfecho (exit 2)
101
136
  ```
102
137
 
138
+ ## ¿/goal (interactivo) o Ralph (autónomo/CI)?
139
+
140
+ `/goal` es un comando nativo de Claude Code que se escribe dentro de una sesión: no es una opción de `ralph.sh`, que no ofrece ninguna para ello y nunca genera un `/goal`. Ambas herramientas son complementarias:
141
+
142
+ | Criterio | `/goal` (nativo) | Ralph (`ralph.sh`) |
143
+ |----------|------------------|--------------------|
144
+ | Criterio de fin | Juicio LLM: un modelo pequeño y rápido evalúa, tras cada turno, lo que es visible en la conversación — no ejecuta ningún comando ni lee ningún archivo | Determinista: comandos, patrones y hooks ejecutados por `dod-validator.sh` |
145
+ | Límite de iteraciones | Sin límite fijo: termina cuando la condición se cumple o se juzga imposible, con `/goal clear`, o si Claude encadena varios turnos sin herramientas; se puede escribir un límite en la condición | `max_iterations` + circuit breaker adaptativo |
146
+ | Headless / CI | `claude -p "/goal ..."` itera hasta el final en una sola invocación; uso en CI no documentado | Diseñado para ello: ejecución autónoma (`--autonomous`, `--overnight`), dashboard `headless` |
147
+ | `disableAllHooks: true` | No disponible: `/goal` envuelve un Stop hook de sesión (igual con `allowManagedHooksOnly`) | El bucle y la DoD se ejecutan dentro de `ralph.sh`; solo se desactiva la integración de hooks (`stop-dod-gate.sh`) |
148
+ | Configuración | Ninguna; un único goal por sesión, borrado por `/clear` | `ralph.yml` |
149
+
150
+ - **Elegir `/goal`** para una tarea interactiva cuyo fin se constata en la conversación (mostrar la salida de los tests: el evaluador no los ejecuta).
151
+ - **Elegir Ralph** cuando el fin debe demostrarse con comandos, con un límite de iteraciones, de forma autónoma o en CI.
152
+
153
+ Referencia: [documentación de `/goal`](https://code.claude.com/docs/en/goal).
154
+
103
155
  ## Ejemplos de Inicio Rápido
104
156
 
105
157
  ```bash
@@ -1,257 +1,9 @@
1
1
  ---
2
- description: Investigación con Context7 y Web
3
- argument-hint: [arguments]
2
+ description: "Obsoleto (se elimina en 9.0): usa el MCP context7 o /deep-research"
3
+ deprecated: true
4
+ replaced-by: mcp:context7
4
5
  ---
5
6
 
6
- # Investigación con Context7 y Web
7
+ > ⚠️ `/common:research-context7` está obsoleto y se eliminará en 9.0. Usa el MCP context7 o `/deep-research`.
7
8
 
8
- Eres un asistente de investigación experto. Debes utilizar MCP Context7 para acceder a documentación de bibliotecas y búsqueda web para encontrar información actualizada sobre un tema técnico.
9
-
10
- ## Argumentos
11
- $ARGUMENTS
12
-
13
- Argumentos:
14
- - Tema de investigación o pregunta técnica
15
- - (Opcional) Bibliotecas específicas a consultar
16
-
17
- Ejemplo: `/common:research-context7 "Cómo implementar autenticación OAuth2 con NextAuth.js"` o `/common:research-context7 "Mejores prácticas React 19" react,nextjs`
18
-
19
- ## Modo Plan
20
-
21
- > El modo plan se activa automáticamente cuando el alcance abarca varios módulos o requiere una investigación transversal.
22
-
23
- ## MISIÓN
24
-
25
- ### Paso 1: Analizar la Solicitud
26
-
27
- Identificar:
28
- - Tema principal de investigación
29
- - Tecnologías/bibliotecas involucradas
30
- - Nivel de detalle requerido
31
- - Preguntas específicas a responder
32
-
33
- ### Paso 2: Usar Context7 (MCP)
34
-
35
- **Context7 proporciona acceso a documentación actualizada de bibliotecas.**
36
-
37
- #### Buscar documentación
38
-
39
- ```
40
- Usar herramienta MCP context7 para:
41
- 1. Buscar documentación oficial de bibliotecas
42
- 2. Obtener ejemplos de código actualizados
43
- 3. Consultar guías y tutoriales oficiales
44
- 4. Verificar APIs disponibles
45
- ```
46
-
47
- #### Bibliotecas soportadas por Context7
48
-
49
- Context7 indexa documentación de muchas bibliotecas populares:
50
- - React, Next.js, Vue, Nuxt, Svelte
51
- - Node.js, Express, Fastify, NestJS
52
- - Python (Django, FastAPI, Flask)
53
- - TypeScript, Tailwind CSS
54
- - Y muchas otras...
55
-
56
- #### Formato de consulta Context7
57
-
58
- Para usar Context7, debo:
59
- 1. Identificar la biblioteca exacta
60
- 2. Formular una consulta precisa
61
- 3. Solicitar ejemplos de código si es relevante
62
-
63
- ### Paso 3: Búsqueda Web Complementaria
64
-
65
- **Usar búsqueda web para:**
66
-
67
- 1. **Información reciente** (después de la fecha de corte de Context7)
68
- - Nuevas versiones
69
- - Cambios importantes
70
- - Anuncios oficiales
71
-
72
- 2. **Discusiones de la comunidad**
73
- - Issues de GitHub
74
- - Discusiones en Stack Overflow
75
- - Artículos de blog de expertos
76
-
77
- 3. **Comparaciones y alternativas**
78
- - Benchmarks
79
- - Comparaciones de soluciones
80
- - Retroalimentación de experiencias
81
-
82
- 4. **Casos de uso específicos**
83
- - Ejemplos de producción
84
- - Patrones avanzados
85
- - Soluciones a problemas comunes
86
-
87
- ### Paso 4: Sintetizar Resultados
88
-
89
- #### Formato de Respuesta
90
-
91
- ```
92
- ══════════════════════════════════════════════════════════════
93
- 🔍 INVESTIGACIÓN: [Tema]
94
- ══════════════════════════════════════════════════════════════
95
-
96
- ──────────────────────────────────────────────────────────────
97
- 📚 DOCUMENTACIÓN OFICIAL (Context7)
98
- ──────────────────────────────────────────────────────────────
99
-
100
- ### [Biblioteca 1]
101
-
102
- **Versión actual**: X.Y.Z
103
-
104
- **Resumen**:
105
- [Resumen de información encontrada]
106
-
107
- **Ejemplo de código**:
108
- ```[lenguaje]
109
- // Código de ejemplo de documentación
110
- ```
111
-
112
- **Enlaces útiles**:
113
- - [Enlace 1]
114
- - [Enlace 2]
115
-
116
- ### [Biblioteca 2]
117
- ...
118
-
119
- ──────────────────────────────────────────────────────────────
120
- 🌐 BÚSQUEDA WEB
121
- ──────────────────────────────────────────────────────────────
122
-
123
- ### Información Reciente
124
-
125
- - [Fecha]: [Información encontrada]
126
- - [Fecha]: [Información encontrada]
127
-
128
- ### Artículos Relevantes
129
-
130
- 1. **[Título del artículo]**
131
- - Fuente: [URL]
132
- - Resumen: [Puntos clave]
133
-
134
- 2. **[Título del artículo]**
135
- ...
136
-
137
- ### Discusiones de la Comunidad
138
-
139
- - **GitHub Issue**: [Enlace] - [Resumen]
140
- - **Stack Overflow**: [Enlace] - [Resumen]
141
-
142
- ──────────────────────────────────────────────────────────────
143
- 💡 SÍNTESIS Y RECOMENDACIONES
144
- ──────────────────────────────────────────────────────────────
145
-
146
- ### Respuesta a la Pregunta
147
-
148
- [Respuesta sintética basada en la investigación]
149
-
150
- ### Enfoque Recomendado
151
-
152
- 1. [Paso 1]
153
- 2. [Paso 2]
154
- 3. [Paso 3]
155
-
156
- ### Puntos de Atención
157
-
158
- - ⚠️ [Punto de atención 1]
159
- - ⚠️ [Punto de atención 2]
160
-
161
- ### Ejemplo de Código Completo
162
-
163
- ```[lenguaje]
164
- // Código de ejemplo compilando mejores prácticas encontradas
165
- ```
166
-
167
- ──────────────────────────────────────────────────────────────
168
- 📋 FUENTES
169
- ──────────────────────────────────────────────────────────────
170
-
171
- Documentación:
172
- - [Fuente 1]
173
- - [Fuente 2]
174
-
175
- Web:
176
- - [Fuente 1]
177
- - [Fuente 2]
178
- ```
179
-
180
- ### Paso 5: Validación
181
-
182
- #### Verificar Calidad de las Fuentes
183
-
184
- - [ ] Fuentes oficiales priorizadas
185
- - [ ] Información actualizada (< 1 año idealmente)
186
- - [ ] Consistencia entre fuentes
187
- - [ ] Ejemplos de código verificables
188
-
189
- #### Verificar Relevancia
190
-
191
- - [ ] Responde a la pregunta inicial
192
- - [ ] Nivel de detalle apropiado
193
- - [ ] Ejemplos prácticos proporcionados
194
- - [ ] Alternativas mencionadas si es relevante
195
-
196
- ### Casos de Uso Típicos
197
-
198
- #### 1. Nueva Biblioteca
199
-
200
- ```
201
- Pregunta: "¿Cómo usar [nueva biblioteca]?"
202
-
203
- → Context7: Documentación, API, ejemplos básicos
204
- → Web: Tutoriales, retroalimentación, gotchas
205
- ```
206
-
207
- #### 2. Problema Técnico
208
-
209
- ```
210
- Pregunta: "¿Por qué [error] con [biblioteca]?"
211
-
212
- → Context7: Documentación del error, solución de problemas
213
- → Web: Issues de GitHub, Stack Overflow, foros
214
- ```
215
-
216
- #### 3. Comparación
217
-
218
- ```
219
- Pregunta: "[Lib A] vs [Lib B] para [caso de uso]?"
220
-
221
- → Context7: Características de cada biblioteca
222
- → Web: Benchmarks, comparaciones, opiniones de expertos
223
- ```
224
-
225
- #### 4. Mejores Prácticas
226
-
227
- ```
228
- Pregunta: "Mejores prácticas para [tema]?"
229
-
230
- → Context7: Directrices oficiales
231
- → Web: Artículos de expertos, patrones populares
232
- ```
233
-
234
- #### 5. Migración
235
-
236
- ```
237
- Pregunta: "Migrar de [v1] a [v2]?"
238
-
239
- → Context7: Guía oficial de migración
240
- → Web: Retroalimentación de experiencias, cambios reales
241
- ```
242
-
243
- ### Directrices Importantes
244
-
245
- 1. **Siempre citar fuentes** - Nunca inventar información
246
- 2. **Priorizar documentación oficial** - Context7 primero
247
- 3. **Verificar fecha de información** - Web puede tener contenido obsoleto
248
- 4. **Proporcionar código verificable** - Los ejemplos deben funcionar
249
- 5. **Ser honesto sobre limitaciones** - Si no se encuentra información, decirlo
250
-
251
- ### En Caso de Duda
252
-
253
- Si no encuentro la información:
254
- - Indicar claramente qué no se encontró
255
- - Proponer caminos alternativos
256
- - Sugerir dónde buscar manualmente
257
- - NUNCA inventar o alucinar información
9
+ Para «$ARGUMENTS»: documentación vía el MCP context7 (`resolve-library-id` y luego `query-docs`), investigación web vía `/deep-research`; fuera de claude.ai, WebSearch/WebFetch o el agente `@research-assistant`.
@@ -352,13 +352,15 @@ El comando `/context` proporciona sugerencias accionables para optimizar el uso
352
352
 
353
353
  Ajustar el nivel de esfuerzo del modelo según la complejidad de la tarea:
354
354
 
355
- | Comando | Modelo | Uso |
355
+ | Comando | Efecto | Uso |
356
356
  |---------|--------|-----|
357
- | `/effort low` | Haiku 5.5 | Tareas simples, lookups, clasificación |
358
- | `/effort medium` | Sonnet 5.5 | Implementación estándar |
359
- | `/effort high` | Opus 5.5 | Razonamiento complejo, arquitectura |
360
- | `/effort xhigh` | Opus 5.5 (extended thinking) | Decisiones críticas, migraciones complejas, ADR |
361
- | `/effort ultracode` | Opus 5.5 (toggle separado desde v2.1.284, Dynamic Workflows) | Modo máximo de código — pipelines automatizados, generación masiva |
357
+ | `/effort low` | Razonamiento mínimo, respuestas rápidas | Tareas simples, lookups, clasificación |
358
+ | `/effort medium` | Profundidad estándar | Implementación estándar |
359
+ | `/effort high` | Razonamiento profundo | Razonamiento complejo, arquitectura |
360
+ | `/effort xhigh` | Adaptive thinking al máximo | Decisiones críticas, migraciones complejas, ADR |
361
+ | `/effort ultracode` | Toggle separado (v2.1.284+), Dynamic Workflows | Máximo rendimiento de código — pipelines automatizados, generación masiva |
362
+
363
+ > **El esfuerzo no cambia de modelo:** ajusta la profundidad de razonamiento del modelo actual; el modelo se elige con `/model`. Combinaciones recomendadas: `low` con Haiku 5.5, `medium` con Sonnet 5.5, `high`/`xhigh` con Opus 5.5.
362
364
 
363
365
  > **Esfuerzo por defecto según el modelo:** medium en Opus 5.5 y Haiku 5.5; high en Sonnet 5.5, Fable 5.1 y los modelos legacy.
364
366
  > **Fable 5.1** (`claude-fable-5-1`, $10/$50 por Mtok) es un modelo actual, adecuado para agentes creativos/narrativos. **Mythos** tiene disponibilidad limitada (solo Cyber Verification Program).
@@ -493,7 +495,7 @@ Durante la compactacion, siempre preservar:
493
495
  | Variable | Descripción |
494
496
  |----------|-------------|
495
497
  | `CLAUDE_CODE_SUBAGENT_MODEL` | Modelo **por defecto** para sub-agentes sin tipo (ej: `sonnet`). **Desde Claude Code 2.1.251**, el frontmatter `model:` de un agente tiene precedencia: los 11 reviewers con `model: haiku` permanecen en Haiku. **Antes de 2.1.251 era al revés** — esta variable sobrescribía el frontmatter. |
496
- | `CLAUDE_CODE_FORK_SUBAGENT` | `1` para aislar el contexto de los sub-agentes (forked subagents, v2.1.117+) |
498
+ | `CLAUDE_CODE_FORK_SUBAGENT` | `1` para aislar el contexto de los sub-agentes (forked subagents, v2.1.117+); activo por defecto en `-p`, el SDK, desktop y VS Code desde 2.1.302, `0` para desactivarlo |
497
499
  | `ENABLE_PROMPT_CACHING_1H` / `FORCE_PROMPT_CACHING_5M` | Ampliar/forzar el prompt caching (−40 % en sesiones repetitivas) |
498
500
  | `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Poner a `1` para desactivar la memoria automática |
499
501
 
@@ -25,6 +25,10 @@
25
25
  ],
26
26
  "deny": [
27
27
  "Bash(rm -rf:*)",
28
+ "Bash(dd:*)",
29
+ "Bash(mkfs:*)",
30
+ "Bash(git push --force*)",
31
+ "Bash(git push -f*)",
28
32
  "Bash(sudo:*)",
29
33
  "Bash(chmod 777:*)",
30
34
  "Bash(curl | sh:*)",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: coding-standards
3
- description: Regla 03: Estándares de Codificación. Use when reviewing code style or formatting.
3
+ description: "Regla 03: Estándares de Codificación. Use when reviewing code style or formatting."
4
4
  ---
5
5
 
6
6
  # Regla 03: Estándares de Codificación
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: testing-python
3
- description: Regla 07: Pruebas. Use when writing tests, reviewing test coverage, or setting up testing.
3
+ description: "Regla 07: Pruebas. Use when writing tests, reviewing test coverage, or setting up testing."
4
4
  ---
5
5
 
6
6
  # Regla 07: Pruebas
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: tooling
3
- description: Regla 06: Herramientas. Use when working with tooling.
3
+ description: "Regla 06: Herramientas. Use when working with tooling."
4
4
  ---
5
5
 
6
6
  # Regla 06: Herramientas