@the-bearded-bear/claude-craft 8.23.0 → 8.23.1-next.6e7d46b

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 (122) hide show
  1. package/Dev/i18n/base/Common/templates/AGENTS.md.template +92 -0
  2. package/Dev/i18n/de/Common/rules/12-context-management.md +4 -2
  3. package/Dev/i18n/de/Common/templates/settings.json.template +2 -11
  4. package/Dev/i18n/de/Workflow/commands/auto-sprint.md +1 -1
  5. package/Dev/i18n/de/Workflow/commands/start.md +40 -1
  6. package/Dev/i18n/en/Common/rules/12-context-management.md +4 -2
  7. package/Dev/i18n/en/Common/templates/settings.json.template +2 -11
  8. package/Dev/i18n/en/Workflow/commands/auto-sprint.md +1 -1
  9. package/Dev/i18n/en/Workflow/commands/start.md +40 -1
  10. package/Dev/i18n/es/Common/rules/12-context-management.md +4 -2
  11. package/Dev/i18n/es/Common/templates/settings.json.template +2 -11
  12. package/Dev/i18n/es/Workflow/commands/auto-sprint.md +1 -1
  13. package/Dev/i18n/es/Workflow/commands/start.md +40 -1
  14. package/Dev/i18n/fr/Common/rules/12-context-management.md +4 -2
  15. package/Dev/i18n/fr/Common/templates/settings.json.template +2 -11
  16. package/Dev/i18n/fr/Workflow/commands/auto-sprint.md +1 -1
  17. package/Dev/i18n/fr/Workflow/commands/start.md +40 -1
  18. package/Dev/i18n/pt/Common/rules/12-context-management.md +4 -2
  19. package/Dev/i18n/pt/Common/templates/settings.json.template +2 -11
  20. package/Dev/i18n/pt/Workflow/commands/auto-sprint.md +1 -1
  21. package/Dev/i18n/pt/Workflow/commands/start.md +40 -1
  22. package/Dev/scripts/check-config.sh +59 -65
  23. package/Dev/scripts/install-common-rules.sh +47 -3
  24. package/Dev/scripts/install-from-config.sh +12 -1
  25. package/Dev/scripts/lib/install-tech-common.sh +6 -1
  26. package/Dev/scripts/lib/stack-profiles.sh +74 -0
  27. package/Dev/stack-profiles/README.md +15 -0
  28. package/Dev/stack-profiles/angular/permissions.txt +5 -0
  29. package/Dev/stack-profiles/angular/quality.md +3 -0
  30. package/Dev/stack-profiles/angular/stack.txt +2 -0
  31. package/Dev/stack-profiles/ansible/permissions.txt +2 -0
  32. package/Dev/stack-profiles/ansible/quality.md +2 -0
  33. package/Dev/stack-profiles/ansible/stack.txt +2 -0
  34. package/Dev/stack-profiles/coolify/stack.txt +2 -0
  35. package/Dev/stack-profiles/csharp/permissions.txt +1 -0
  36. package/Dev/stack-profiles/csharp/quality.md +3 -0
  37. package/Dev/stack-profiles/csharp/stack.txt +2 -0
  38. package/Dev/stack-profiles/docker/permissions.txt +1 -0
  39. package/Dev/stack-profiles/docker/quality.md +2 -0
  40. package/Dev/stack-profiles/docker/stack.txt +2 -0
  41. package/Dev/stack-profiles/flutter/permissions.txt +2 -0
  42. package/Dev/stack-profiles/flutter/quality.md +3 -0
  43. package/Dev/stack-profiles/flutter/stack.txt +2 -0
  44. package/Dev/stack-profiles/frankenphp/stack.txt +2 -0
  45. package/Dev/stack-profiles/hcloud/stack.txt +2 -0
  46. package/Dev/stack-profiles/kubernetes/permissions.txt +3 -0
  47. package/Dev/stack-profiles/kubernetes/quality.md +2 -0
  48. package/Dev/stack-profiles/kubernetes/stack.txt +2 -0
  49. package/Dev/stack-profiles/laravel/permissions.txt +2 -0
  50. package/Dev/stack-profiles/laravel/quality.md +3 -0
  51. package/Dev/stack-profiles/laravel/stack.txt +2 -0
  52. package/Dev/stack-profiles/opentofu/permissions.txt +3 -0
  53. package/Dev/stack-profiles/opentofu/quality.md +3 -0
  54. package/Dev/stack-profiles/opentofu/stack.txt +2 -0
  55. package/Dev/stack-profiles/paperclip/permissions.txt +4 -0
  56. package/Dev/stack-profiles/paperclip/quality.md +2 -0
  57. package/Dev/stack-profiles/paperclip/stack.txt +2 -0
  58. package/Dev/stack-profiles/pgbouncer/stack.txt +2 -0
  59. package/Dev/stack-profiles/php/permissions.txt +1 -0
  60. package/Dev/stack-profiles/php/quality.md +3 -0
  61. package/Dev/stack-profiles/php/stack.txt +2 -0
  62. package/Dev/stack-profiles/python/permissions.txt +4 -0
  63. package/Dev/stack-profiles/python/quality.md +3 -0
  64. package/Dev/stack-profiles/python/stack.txt +2 -0
  65. package/Dev/stack-profiles/react/permissions.txt +4 -0
  66. package/Dev/stack-profiles/react/quality.md +3 -0
  67. package/Dev/stack-profiles/react/stack.txt +2 -0
  68. package/Dev/stack-profiles/reactnative/permissions.txt +5 -0
  69. package/Dev/stack-profiles/reactnative/quality.md +3 -0
  70. package/Dev/stack-profiles/reactnative/stack.txt +2 -0
  71. package/Dev/stack-profiles/symfony/permissions.txt +2 -0
  72. package/Dev/stack-profiles/symfony/quality.md +4 -0
  73. package/Dev/stack-profiles/symfony/stack.txt +2 -0
  74. package/Dev/stack-profiles/vercel/permissions.txt +5 -0
  75. package/Dev/stack-profiles/vercel/quality.md +2 -0
  76. package/Dev/stack-profiles/vercel/stack.txt +2 -0
  77. package/Dev/stack-profiles/vite/permissions.txt +4 -0
  78. package/Dev/stack-profiles/vite/quality.md +2 -0
  79. package/Dev/stack-profiles/vite/stack.txt +2 -0
  80. package/Dev/stack-profiles/vuejs/permissions.txt +4 -0
  81. package/Dev/stack-profiles/vuejs/quality.md +3 -0
  82. package/Dev/stack-profiles/vuejs/stack.txt +2 -0
  83. package/Project/i18n/de/Gate/commands/validate-sprint.md +14 -5
  84. package/Project/i18n/de/agents/tech-lead.md +62 -67
  85. package/Project/i18n/de/scaffold/CLAUDE.md +5 -25
  86. package/Project/i18n/en/Gate/commands/validate-sprint.md +14 -5
  87. package/Project/i18n/en/agents/tech-lead.md +60 -65
  88. package/Project/i18n/en/scaffold/CLAUDE.md +5 -25
  89. package/Project/i18n/es/Gate/commands/validate-sprint.md +14 -5
  90. package/Project/i18n/es/agents/tech-lead.md +60 -65
  91. package/Project/i18n/es/scaffold/CLAUDE.md +5 -25
  92. package/Project/i18n/fr/Gate/commands/validate-sprint.md +14 -5
  93. package/Project/i18n/fr/agents/tech-lead.md +60 -65
  94. package/Project/i18n/fr/scaffold/CLAUDE.md +5 -25
  95. package/Project/i18n/pt/Gate/commands/validate-sprint.md +14 -5
  96. package/Project/i18n/pt/agents/tech-lead.md +60 -65
  97. package/Project/i18n/pt/scaffold/CLAUDE.md +5 -25
  98. package/Project/install-project-commands.sh +45 -10
  99. package/README.md +8 -0
  100. package/bundles/cursor/.cursorrules +1 -1
  101. package/bundles/windsurf/.windsurfrules +1 -1
  102. package/cli/kanban/client/dist/assets/BurndownView-CQyFME8U.js +3 -0
  103. package/cli/kanban/client/dist/assets/{DepsView-A7Xe41FE.js → DepsView-DEAS0a20.js} +1 -1
  104. package/cli/kanban/client/dist/assets/{DocsView-DFXULSIu.js → DocsView-BsXYPJAu.js} +1 -1
  105. package/cli/kanban/client/dist/assets/{SprintsView-DZ3KdjDw.js → SprintsView-Bo2p1NbV.js} +1 -1
  106. package/cli/kanban/client/dist/assets/cytoscape-dagre-8BvEs68F.js +2 -0
  107. package/cli/kanban/client/dist/assets/cytoscape.esm-BiK1LiYw.js +321 -0
  108. package/cli/kanban/client/dist/assets/index-CI2O6JO9.js +4 -0
  109. package/cli/kanban/client/dist/assets/{marked.esm-BFjXurK6.js → marked.esm-CYIZq5lG.js} +4 -4
  110. package/cli/kanban/client/dist/assets/purify.es-ChwZkWde.js +3 -0
  111. package/cli/kanban/client/dist/index.html +1 -1
  112. package/cli/kanban/server/app.js +6 -3
  113. package/cli/kanban/server/services/frontmatter.js +10 -4
  114. package/cli/kanban/server/services/markdown-metadata.js +150 -0
  115. package/cli/kanban/server/services/repository.js +29 -7
  116. package/cli/lib/installer.js +9 -2
  117. package/package.json +9 -9
  118. package/cli/kanban/client/dist/assets/BurndownView-BrheHgEo.js +0 -10
  119. package/cli/kanban/client/dist/assets/cytoscape-dagre-YDByNmIW.js +0 -2
  120. package/cli/kanban/client/dist/assets/cytoscape.esm-Dd3Wh3PR.js +0 -321
  121. package/cli/kanban/client/dist/assets/index-TQv7sDCT.js +0 -4
  122. package/cli/kanban/client/dist/assets/purify.es-DuRL7t6i.js +0 -3
@@ -0,0 +1,92 @@
1
+ # Agents disponibles pour ce projet
2
+
3
+ > Ce fichier liste les agents Claude Code installes via claude-craft.
4
+ > Format compatible avec le standard emergent AGENTS.md (https://agents.md).
5
+
6
+ ## Comment utiliser
7
+
8
+ - Invoque un agent dans Claude Code : `@nom-agent <ta demande>`
9
+ - Liste complete : voir `.claude/agents/`
10
+ - Documentation : voir `docs/AGENTS.md`
11
+
12
+ ## Agents par categorie
13
+
14
+ ### Architecture et design
15
+
16
+ - `@api-designer` — Conception API REST/GraphQL, OpenAPI 3.1.1, GraphQL Federation
17
+ - `@database-architect` — Conception et optimisation BDD (PostgreSQL, MySQL, schemas)
18
+ - `@refactoring-specialist` — Refactoring sur, patterns SOLID, extraction methode
19
+ - `@ui-designer` — Design systems, Tailwind, design tokens
20
+ - `@ux-ergonome` — Ergonomie cognitive, user flows, heuristiques
21
+
22
+ ### Code review (par stack)
23
+
24
+ - `@symfony-reviewer` — Symfony 8.1 / PHP 8.4+ (8.5 recommandé), DDD, Doctrine, API Platform
25
+ - `@laravel-reviewer` — Laravel 13 / PHP 8.5, Pest 4/5, Eloquent, Sanctum
26
+ - `@react-reviewer` — React 19.3 + Compiler 1.0, TypeScript, hooks, bundle analysis
27
+ - `@vuejs-reviewer` — Vue 3.5+, Composition API, Pinia 4, Vitest 5
28
+ - `@angular-reviewer` — Angular 22, Signals, Standalone, Zoneless par défaut
29
+ - `@flutter-reviewer` — Flutter 3.47 / Dart 3.13, BLoC v9, Riverpod 3
30
+ - `@reactnative-reviewer` — React Native 0.87 New Architecture (JSI, TurboModules)
31
+ - `@python-reviewer` — Python 3.15 / 3.14+, FastAPI, Pydantic v2, async correctness
32
+ - `@csharp-reviewer` — C# 14 / .NET 10, Clean Architecture, CQRS, EF Core
33
+ - `@php-reviewer` — PHP 8.5, Property Hooks, PER-CS 3.0, PHPStan level max, Pest 5
34
+ - `@paperclip-reviewer` — Paperclip 2026.x, governance-first, Node.js + PostgreSQL
35
+ - `@vite-reviewer` — Vite 8.x framework-agnostic : apps vanilla JS/TS, `build.lib`, multi-pages, Workers/WASM
36
+ - `@vercel-reviewer` — Vercel : `vercel.json`, Functions (Node.js/Fluid Compute), ISR, Cron Jobs, Storage
37
+
38
+ ### Test et qualite
39
+
40
+ - `@tdd-coach` — Coach TDD/BDD (red/green/refactor), Gherkin
41
+ - `@performance-auditor` — Profilage, optimisation, bundle size, Core Web Vitals
42
+
43
+ ### Securite
44
+
45
+ - `@security-auditor` — Audit OWASP Top 10:2025, SAST, secrets detection, authZ/N
46
+
47
+ ### Operations
48
+
49
+ - `@devops-engineer` — Docker, K8s, OpenTofu, Ansible, Coolify, FrankenPHP
50
+ - `@observability-engineer` — OpenTelemetry, traces, structured logs, metrics
51
+ - `@chaos-engineer` — Resilience testing, Litmus, Gremlin, fault injection
52
+ - `@migration-specialist` — Schema migrations zero-downtime, version upgrades
53
+ - `@cost-optimizer` — FinOps, right-sizing, caching, LLM token reduction
54
+
55
+ ### Donnees et ML
56
+
57
+ - `@data-analyst` — SQL optimization, metrics design, BI dashboards
58
+ - `@mlops-engineer` — ML pipelines, MLflow, Kubeflow, feature stores
59
+
60
+ ### Accessibilite
61
+
62
+ - `@accessibility-expert` — Audit WCAG 2.2 AAA, ARIA, keyboard navigation
63
+
64
+ ### Developer experience
65
+
66
+ - `@devex-engineer` — CLI design, onboarding, tooling, DX metrics
67
+ - `@research-assistant` — Recherche technique, documentation, veille
68
+
69
+ ### Orchestration
70
+
71
+ - `@uiux-orchestrator` — Coordination UI/UX (designer + ergonome + a11y)
72
+ - `@ralph-conductor` — Sessions Ralph Wiggum continues avec DoD adaptative
73
+
74
+ ## Frontmatter recommande
75
+
76
+ Pour personnaliser un agent local, override via frontmatter dans `.claude/agents/<nom>.md` :
77
+
78
+ ```yaml
79
+ ---
80
+ model: claude-haiku-5-5 # economiser tokens pour reviewers read-only
81
+ effort: low # ou medium / high
82
+ maxTurns: 20 # limite anti-runaway
83
+ disallowedTools: [Bash] # securite : pas d execution shell
84
+ context: fork # isoler le contexte (skills lourds)
85
+ ---
86
+ ```
87
+
88
+ ## En savoir plus
89
+
90
+ - Documentation complete : [docs/AGENTS.md](docs/AGENTS.md)
91
+ - Standard AGENTS.md : https://agents.md
92
+ - claude-craft : https://github.com/TheBeardedBearSAS/claude-craft
@@ -492,12 +492,14 @@ Bei der Kompaktierung immer erhalten:
492
492
 
493
493
  | Variable | Beschreibung |
494
494
  |----------|-------------|
495
- | `CLAUDE_CODE_SUBAGENT_MODEL` | **Standard**-Modell für nicht typisierte Sub-Agents (z. B. `sonnet`). **Das `model:`-Frontmatter eines Agents hat Vorrang**: 11 Reviewer mit `model: haiku` bleiben auf Haiku, auch wenn diese Variable auf `sonnet` gesetzt ist. |
495
+ | `CLAUDE_CODE_SUBAGENT_MODEL` | **Standard**-Modell für nicht typisierte Sub-Agents (z. B. `sonnet`). **Seit Claude Code 2.1.251** hat das `model:`-Frontmatter eines Agents Vorrang: die 11 Reviewer mit `model: haiku` bleiben auf Haiku. **Vor 2.1.251 war es umgekehrt** — diese Variable überschrieb das Frontmatter. |
496
496
  | `CLAUDE_CODE_FORK_SUBAGENT` | `1`, um den Kontext von Sub-Agents zu isolieren (Forked Subagents, v2.1.117+) |
497
497
  | `ENABLE_PROMPT_CACHING_1H` / `FORCE_PROMPT_CACHING_5M` | Prompt-Caching verlängern/erzwingen (−40 % bei wiederholenden Sitzungen) |
498
498
  | `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Auf `1` setzen, um automatischen Speicher zu deaktivieren |
499
499
 
500
- > **Modell-Vorrang (Audit 2026-06-08):** `model:` im Agent-Frontmatter > `CLAUDE_CODE_SUBAGENT_MODEL` > Sitzungsmodell. Die Variable `SUBAGENT_MODEL=sonnet` überschreibt NICHT explizit auf `model: haiku` gesetzte Agents — sie gilt nur für Sub-Agents ohne definiertes `model:`-Feld.
500
+ > **Modell-Vorrang — gültig seit Claude Code 2.1.251:** `model:` aus dem Aufruf > `model:` im Agent-Frontmatter (wobei `inherit` das Modell der Hauptkonversation übernimmt) > `CLAUDE_CODE_SUBAGENT_MODEL` > Sitzungsmodell.
501
+ >
502
+ > **⚠️ Vor 2.1.251 war die Reihenfolge umgekehrt:** `CLAUDE_CODE_SUBAGENT_MODEL` stand an erster Stelle und überschrieb sowohl den Aufrufparameter als auch das Frontmatter, einschließlich `model: inherit`. Auf diesen Versionen liefen die `model: haiku`-Reviewer mit `SUBAGENT_MODEL=sonnet` tatsächlich auf Sonnet — das Gegenteil der Absicht. Prüfe `claude --version`, bevor du dich auf diese Tabelle verlässt. Quelle: [Sub-Agents-Doku](https://code.claude.com/docs/en/sub-agents).
501
503
 
502
504
  ---
503
505
 
@@ -18,19 +18,10 @@
18
18
  "Write",
19
19
  "Glob",
20
20
  "Grep",
21
+ "__STACK_PERMISSIONS__",
21
22
  "Bash(git:*)",
22
- "Bash(npm run:*)",
23
- "Bash(npm test:*)",
24
- "Bash(pnpm:*)",
25
- "Bash(yarn:*)",
26
- "Bash(composer:*)",
27
- "Bash(php bin/console:*)",
28
- "Bash(php artisan:*)",
29
- "Bash(dotnet:*)",
30
23
  "Bash(make:*)",
31
- "Bash(docker compose:*)",
32
- "Bash(flutter:*)",
33
- "Bash(ng:*)"
24
+ "Bash(docker compose:*)"
34
25
  ],
35
26
  "deny": [
36
27
  "Bash(rm -rf:*)",
@@ -40,7 +40,7 @@ $ARGUMENTS
40
40
  - `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` gesetzt
41
41
  - `gh` CLI authentifiziert (PR erstellen / Prüfungen / Merge)
42
42
  - Docker verfügbar (alle Tests laufen über Docker — siehe Projekt-CLAUDE.md)
43
- - BMAD v6-Projekt mit vorhandener `.bmad/sprint-status.yaml`
43
+ - BMAD v6-Projekt: `.bmad/sprint-status.yaml` wird bei Bedarf von `/workflow:start` (Phase 1) angelegt
44
44
 
45
45
  > Falls eine Voraussetzung fehlt, sofort mit einer klaren, handlungsorientierten Meldung abbrechen. Eine Phase nicht stillschweigend überspringen.
46
46
 
@@ -224,7 +224,43 @@ Punkte |
224
224
  {Sprint Planning Notizen, getroffene Entscheidungen...}
225
225
  ```
226
226
 
227
- ### Schritt 6: Finale Checkliste
227
+ ### Schritt 6: `.bmad/sprint-status.yaml` synchronisieren
228
+
229
+ `/gate:validate-sprint` und die `/sprint:*`-Befehle lesen den Sprint aus `.bmad/sprint-status.yaml`. Die Datei jetzt aus der obigen `sprint-goal.md` und den ausgewählten US-Dateien (`project-management/backlog/user-stories/US-*.md`) schreiben:
230
+
231
+ 1. `.bmad/` anlegen, falls nicht vorhanden.
232
+ 2. `metadata`: `sprint_id` (`sprint-{N}`), `name`, `start_date`, `end_date`, `goal`, `capacity_points`, aus `sprint-goal.md` übernommen.
233
+ 3. `stories`: ein Eintrag pro ausgewählter US: `title`, `status: ready-for-dev`, `story_points`, `epic_id`, `priority` (MoSCoW), `dependencies`, `tasks`, `history: []`.
234
+ 4. Datei für **dieselbe** `sprint_id` bereits vorhanden: bestehende Status beibehalten (eine Story nie zurücksetzen) und nur neue US ergänzen.
235
+ 5. Datei für einen **anderen** Sprint vorhanden: zuerst deren Stories nach `archived_sprints.<alte sprint_id>` (`status`, `points`) verschieben, dann den neuen Sprint schreiben.
236
+
237
+ ```yaml
238
+ # .bmad/sprint-status.yaml
239
+ version: "1.0"
240
+ metadata:
241
+ sprint_id: "sprint-2"
242
+ name: "Benutzerverwaltung"
243
+ start_date: "2026-11-02"
244
+ end_date: "2026-11-13"
245
+ goal: "Benutzer können sich registrieren, anmelden und ihr Profil bearbeiten"
246
+ capacity_points: 21
247
+ stories:
248
+ US-010:
249
+ title: "Benutzerregistrierung"
250
+ status: "ready-for-dev"
251
+ story_points: 5
252
+ epic_id: "EPIC-002"
253
+ priority: "must"
254
+ dependencies: ["US-001"]
255
+ tasks: { total: 0, completed: 0, list: [] }
256
+ history: []
257
+ archived_sprints:
258
+ sprint-1:
259
+ stories:
260
+ US-001: { status: "done", points: 5 }
261
+ ```
262
+
263
+ ### Schritt 7: Finale Checkliste
228
264
 
229
265
  ```
230
266
  ══════════════════════════════════════════════════════════════
@@ -291,6 +327,9 @@ Punkte |
291
327
  ║ NÄCHSTER SCHRITT ║
292
328
  ╠══════════════════════════════════════════════════════════╣
293
329
  ║ ║
330
+ ║ → /gate:validate-sprint {N} ║
331
+ ║ Prüfen, ob der Sprint bereit ist (Gate) ║
332
+ ║ ║
294
333
  ║ → /sprint:next-story ║
295
334
  ║ Erste Story aus dem Sprint-Backlog auswählen ║
296
335
  ║ ║
@@ -492,12 +492,14 @@ During compaction, always preserve:
492
492
 
493
493
  | Variable | Description |
494
494
  |----------|-------------|
495
- | `CLAUDE_CODE_SUBAGENT_MODEL` | **Default** model for untyped sub-agents (e.g., `sonnet`). **Agent frontmatter `model:` takes precedence**: 11 reviewers with `model: haiku` stay on Haiku even with this variable set to `sonnet`. |
495
+ | `CLAUDE_CODE_SUBAGENT_MODEL` | **Default** model for untyped sub-agents (e.g., `sonnet`). **Since Claude Code 2.1.251**, agent frontmatter `model:` takes precedence: the 11 reviewers with `model: haiku` stay on Haiku. **Before 2.1.251 it was the other way round** — this variable overrode the frontmatter. |
496
496
  | `CLAUDE_CODE_FORK_SUBAGENT` | `1` to isolate sub-agent contexts (forked subagents, v2.1.117+) |
497
497
  | `ENABLE_PROMPT_CACHING_1H` / `FORCE_PROMPT_CACHING_5M` | Extend/force prompt caching (−40% on repetitive sessions) |
498
498
  | `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Set to `1` to disable automatic memory |
499
499
 
500
- > **Model precedence (audit 2026-06-08):** `model:` in agent frontmatter > `CLAUDE_CODE_SUBAGENT_MODEL` > session model. Setting `SUBAGENT_MODEL=sonnet` does NOT override agents explicitly set to `model: haiku` — it only applies to sub-agents without a defined `model:` field.
500
+ > **Model precedence — valid since Claude Code 2.1.251:** per-invocation `model:` > agent frontmatter `model:` (where `inherit` picks the main conversation's model) > `CLAUDE_CODE_SUBAGENT_MODEL` > session model.
501
+ >
502
+ > **⚠️ Before 2.1.251 the order was reversed:** `CLAUDE_CODE_SUBAGENT_MODEL` came first and overrode both the per-invocation parameter and the frontmatter, including `model: inherit`. On those versions `SUBAGENT_MODEL=sonnet` really did run the `model: haiku` reviewers on Sonnet — the opposite of the intent. Check `claude --version` before relying on this table. Source: [sub-agents docs](https://code.claude.com/docs/en/sub-agents).
501
503
 
502
504
  ---
503
505
 
@@ -18,19 +18,10 @@
18
18
  "Write",
19
19
  "Glob",
20
20
  "Grep",
21
+ "__STACK_PERMISSIONS__",
21
22
  "Bash(git:*)",
22
- "Bash(npm run:*)",
23
- "Bash(npm test:*)",
24
- "Bash(pnpm:*)",
25
- "Bash(yarn:*)",
26
- "Bash(composer:*)",
27
- "Bash(php bin/console:*)",
28
- "Bash(php artisan:*)",
29
- "Bash(dotnet:*)",
30
23
  "Bash(make:*)",
31
- "Bash(docker compose:*)",
32
- "Bash(flutter:*)",
33
- "Bash(ng:*)"
24
+ "Bash(docker compose:*)"
34
25
  ],
35
26
  "deny": [
36
27
  "Bash(rm -rf:*)",
@@ -40,7 +40,7 @@ $ARGUMENTS
40
40
  - `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` set
41
41
  - `gh` CLI authenticated (PR create / checks / merge)
42
42
  - Docker available (all tests run via Docker — see project CLAUDE.md)
43
- - BMAD v6 project with `.bmad/sprint-status.yaml` present
43
+ - BMAD v6 project: `.bmad/sprint-status.yaml` is created by `/workflow:start` (phase 1) if missing
44
44
 
45
45
  > If a prerequisite is missing, abort early with a clear, actionable message. Do not silently skip a phase.
46
46
 
@@ -224,7 +224,43 @@ Points |
224
224
  {Sprint planning notes, decisions made...}
225
225
  ```
226
226
 
227
- ### Step 6: Final Checklist
227
+ ### Step 6: Sync `.bmad/sprint-status.yaml`
228
+
229
+ `/gate:validate-sprint` and the `/sprint:*` commands read the sprint from `.bmad/sprint-status.yaml`. Write it now from the `sprint-goal.md` above and the selected US files (`project-management/backlog/user-stories/US-*.md`):
230
+
231
+ 1. Create `.bmad/` if missing.
232
+ 2. `metadata`: `sprint_id` (`sprint-{N}`), `name`, `start_date`, `end_date`, `goal`, `capacity_points`, taken from `sprint-goal.md`.
233
+ 3. `stories`: one entry per selected US: `title`, `status: ready-for-dev`, `story_points`, `epic_id`, `priority` (MoSCoW), `dependencies`, `tasks`, `history: []`.
234
+ 4. File already present for the **same** `sprint_id`: keep the existing statuses (never move a story back) and only add the new US.
235
+ 5. File present for **another** sprint: first move its stories under `archived_sprints.<old sprint_id>` (`status`, `points`), then write the new sprint.
236
+
237
+ ```yaml
238
+ # .bmad/sprint-status.yaml
239
+ version: "1.0"
240
+ metadata:
241
+ sprint_id: "sprint-2"
242
+ name: "User management"
243
+ start_date: "2026-11-02"
244
+ end_date: "2026-11-13"
245
+ goal: "Users can sign up, log in and edit their profile"
246
+ capacity_points: 21
247
+ stories:
248
+ US-010:
249
+ title: "User sign-up"
250
+ status: "ready-for-dev"
251
+ story_points: 5
252
+ epic_id: "EPIC-002"
253
+ priority: "must"
254
+ dependencies: ["US-001"]
255
+ tasks: { total: 0, completed: 0, list: [] }
256
+ history: []
257
+ archived_sprints:
258
+ sprint-1:
259
+ stories:
260
+ US-001: { status: "done", points: 5 }
261
+ ```
262
+
263
+ ### Step 7: Final Checklist
228
264
 
229
265
  ```
230
266
  ══════════════════════════════════════════════════════════════
@@ -291,6 +327,9 @@ Points |
291
327
  ║ NEXT STEP ║
292
328
  ╠══════════════════════════════════════════════════════════╣
293
329
  ║ ║
330
+ ║ → /gate:validate-sprint {N} ║
331
+ ║ Check the sprint is ready (gate) ║
332
+ ║ ║
294
333
  ║ → /sprint:next-story ║
295
334
  ║ Pick the first story from the sprint backlog ║
296
335
  ║ ║
@@ -492,12 +492,14 @@ Durante la compactacion, siempre preservar:
492
492
 
493
493
  | Variable | Descripción |
494
494
  |----------|-------------|
495
- | `CLAUDE_CODE_SUBAGENT_MODEL` | Modelo **por defecto** para sub-agentes sin tipo (ej: `sonnet`). **El frontmatter `model:` de un agente tiene precedencia**: los 11 reviewers con `model: haiku` permanecen en Haiku aunque esta variable sea `sonnet`. |
495
+ | `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
496
  | `CLAUDE_CODE_FORK_SUBAGENT` | `1` para aislar el contexto de los sub-agentes (forked subagents, v2.1.117+) |
497
497
  | `ENABLE_PROMPT_CACHING_1H` / `FORCE_PROMPT_CACHING_5M` | Ampliar/forzar el prompt caching (−40 % en sesiones repetitivas) |
498
498
  | `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Poner a `1` para desactivar la memoria automática |
499
499
 
500
- > **Precedencia de modelos (auditoría 2026-06-08):** `model:` en el frontmatter del agente > `CLAUDE_CODE_SUBAGENT_MODEL` > modelo de sesión. La variable `SUBAGENT_MODEL=sonnet` NO sobreescribe los agentes explícitamente con `model: haiku` — solo aplica a sub-agentes sin `model:` definido.
500
+ > **Precedencia de modelos — válida desde Claude Code 2.1.251:** `model:` pasado en la invocación > `model:` del frontmatter del agente (donde `inherit` toma el modelo de la conversación) > `CLAUDE_CODE_SUBAGENT_MODEL` > modelo de sesión.
501
+ >
502
+ > **⚠️ Antes de 2.1.251 el orden era el inverso:** `CLAUDE_CODE_SUBAGENT_MODEL` iba primero y sobrescribía tanto el parámetro de invocación como el frontmatter, incluido `model: inherit`. En esas versiones, `SUBAGENT_MODEL=sonnet` sí ejecutaba en Sonnet los reviewers `model: haiku` — lo contrario de la intención. Comprueba `claude --version` antes de fiarte de esta tabla. Fuente: [documentación de sub-agents](https://code.claude.com/docs/en/sub-agents).
501
503
 
502
504
  ---
503
505
 
@@ -18,19 +18,10 @@
18
18
  "Write",
19
19
  "Glob",
20
20
  "Grep",
21
+ "__STACK_PERMISSIONS__",
21
22
  "Bash(git:*)",
22
- "Bash(npm run:*)",
23
- "Bash(npm test:*)",
24
- "Bash(pnpm:*)",
25
- "Bash(yarn:*)",
26
- "Bash(composer:*)",
27
- "Bash(php bin/console:*)",
28
- "Bash(php artisan:*)",
29
- "Bash(dotnet:*)",
30
23
  "Bash(make:*)",
31
- "Bash(docker compose:*)",
32
- "Bash(flutter:*)",
33
- "Bash(ng:*)"
24
+ "Bash(docker compose:*)"
34
25
  ],
35
26
  "deny": [
36
27
  "Bash(rm -rf:*)",
@@ -40,7 +40,7 @@ $ARGUMENTS
40
40
  - `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` configurado
41
41
  - CLI `gh` autenticada (creación de PR / checks / merge)
42
42
  - Docker disponible (todos los tests se ejecutan vía Docker — ver CLAUDE.md del proyecto)
43
- - Proyecto BMAD v6 con `.bmad/sprint-status.yaml` presente
43
+ - Proyecto BMAD v6: `/workflow:start` (fase 1) crea `.bmad/sprint-status.yaml` si no existe
44
44
 
45
45
  > Si falta algún requisito previo, abortar de inmediato con un mensaje claro y accionable. No omitir ninguna fase en silencio.
46
46
 
@@ -224,7 +224,43 @@ Puntos |
224
224
  {Notas del sprint planning, decisiones tomadas...}
225
225
  ```
226
226
 
227
- ### Paso 6: Lista de Verificación Final
227
+ ### Paso 6: Sincronizar `.bmad/sprint-status.yaml`
228
+
229
+ `/gate:validate-sprint` y los comandos `/sprint:*` leen el sprint en `.bmad/sprint-status.yaml`. Escríbelo ahora a partir del `sprint-goal.md` anterior y de las fichas US seleccionadas (`project-management/backlog/user-stories/US-*.md`):
230
+
231
+ 1. Crear `.bmad/` si no existe.
232
+ 2. `metadata`: `sprint_id` (`sprint-{N}`), `name`, `start_date`, `end_date`, `goal`, `capacity_points`, tomados de `sprint-goal.md`.
233
+ 3. `stories`: una entrada por US seleccionada: `title`, `status: ready-for-dev`, `story_points`, `epic_id`, `priority` (MoSCoW), `dependencies`, `tasks`, `history: []`.
234
+ 4. Archivo ya presente para el **mismo** `sprint_id`: conservar los estados existentes (nunca hacer retroceder una story) y añadir solo las nuevas US.
235
+ 5. Archivo presente para **otro** sprint: mover primero sus stories a `archived_sprints.<sprint_id anterior>` (`status`, `points`) y luego escribir el nuevo sprint.
236
+
237
+ ```yaml
238
+ # .bmad/sprint-status.yaml
239
+ version: "1.0"
240
+ metadata:
241
+ sprint_id: "sprint-2"
242
+ name: "Gestión de usuarios"
243
+ start_date: "2026-11-02"
244
+ end_date: "2026-11-13"
245
+ goal: "Los usuarios pueden registrarse, iniciar sesión y editar su perfil"
246
+ capacity_points: 21
247
+ stories:
248
+ US-010:
249
+ title: "Registro de usuario"
250
+ status: "ready-for-dev"
251
+ story_points: 5
252
+ epic_id: "EPIC-002"
253
+ priority: "must"
254
+ dependencies: ["US-001"]
255
+ tasks: { total: 0, completed: 0, list: [] }
256
+ history: []
257
+ archived_sprints:
258
+ sprint-1:
259
+ stories:
260
+ US-001: { status: "done", points: 5 }
261
+ ```
262
+
263
+ ### Paso 7: Lista de Verificación Final
228
264
 
229
265
  ```
230
266
  ══════════════════════════════════════════════════════════════
@@ -291,6 +327,9 @@ Puntos |
291
327
  ║ SIGUIENTE PASO ║
292
328
  ╠══════════════════════════════════════════════════════════╣
293
329
  ║ ║
330
+ ║ → /gate:validate-sprint {N} ║
331
+ ║ Verificar que el sprint está listo (gate) ║
332
+ ║ ║
294
333
  ║ → /sprint:next-story ║
295
334
  ║ Tomar la primera story del sprint backlog ║
296
335
  ║ ║
@@ -492,12 +492,14 @@ Lors de la compaction, toujours preserver:
492
492
 
493
493
  | Variable | Description |
494
494
  |----------|-------------|
495
- | `CLAUDE_CODE_SUBAGENT_MODEL` | Modèle **par défaut** des sous-agents non typés (ex : `sonnet`). **Le frontmatter `model:` d'un agent prévaut** : les 11 reviewers `model: haiku` restent sur Haiku même avec cette variable à `sonnet`. |
495
+ | `CLAUDE_CODE_SUBAGENT_MODEL` | Modèle **par défaut** des sous-agents non typés (ex : `sonnet`). **Depuis Claude Code 2.1.251**, le frontmatter `model:` d'un agent prévaut : les 11 reviewers `model: haiku` restent sur Haiku. **Avant 2.1.251, c'était l'inverse** — cette variable écrasait le frontmatter. |
496
496
  | `CLAUDE_CODE_FORK_SUBAGENT` | `1` pour isoler le contexte des sous-agents (forked subagents, v2.1.117+) |
497
497
  | `ENABLE_PROMPT_CACHING_1H` / `FORCE_PROMPT_CACHING_5M` | Étendre/forcer le prompt caching (−40 % sur les sessions répétitives) |
498
498
  | `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Mettre à `1` pour désactiver la mémoire automatique |
499
499
 
500
- > **Précédence modèle (clarification audit 2026-06-08) :** `model:` dans le frontmatter d'un agent > `CLAUDE_CODE_SUBAGENT_MODEL` > modèle de la session. La variable `SUBAGENT_MODEL=sonnet` n'écrase donc PAS les agents explicitement `model: haiku` — elle ne s'applique qu'aux sous-agents sans `model:` défini.
500
+ > **Précédence modèle — valable depuis Claude Code 2.1.251 :** `model:` passé à l'invocation > `model:` du frontmatter de l'agent (où `inherit` reprend le modèle de la conversation) > `CLAUDE_CODE_SUBAGENT_MODEL` > modèle de la session.
501
+ >
502
+ > **⚠️ Avant 2.1.251, l'ordre était inversé :** `CLAUDE_CODE_SUBAGENT_MODEL` arrivait en tête et écrasait à la fois le paramètre d'invocation et le frontmatter, y compris `model: inherit`. Sur ces versions, `SUBAGENT_MODEL=sonnet` faisait bel et bien tourner sur Sonnet les reviewers `model: haiku` — l'inverse de l'intention. Vérifier `claude --version` avant de se fier à cette table. Source : [doc sub-agents](https://code.claude.com/docs/en/sub-agents).
501
503
 
502
504
  ---
503
505
 
@@ -18,19 +18,10 @@
18
18
  "Write",
19
19
  "Glob",
20
20
  "Grep",
21
+ "__STACK_PERMISSIONS__",
21
22
  "Bash(git:*)",
22
- "Bash(npm run:*)",
23
- "Bash(npm test:*)",
24
- "Bash(pnpm:*)",
25
- "Bash(yarn:*)",
26
- "Bash(composer:*)",
27
- "Bash(php bin/console:*)",
28
- "Bash(php artisan:*)",
29
- "Bash(dotnet:*)",
30
23
  "Bash(make:*)",
31
- "Bash(docker compose:*)",
32
- "Bash(flutter:*)",
33
- "Bash(ng:*)"
24
+ "Bash(docker compose:*)"
34
25
  ],
35
26
  "deny": [
36
27
  "Bash(rm -rf:*)",
@@ -40,7 +40,7 @@ $ARGUMENTS
40
40
  - `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` défini
41
41
  - CLI `gh` authentifié (création de PR / checks / merge)
42
42
  - Docker disponible (tous les tests s'exécutent via Docker — voir le CLAUDE.md du projet)
43
- - Projet BMAD v6 avec `.bmad/sprint-status.yaml` présent
43
+ - Projet BMAD v6 : `.bmad/sprint-status.yaml` est créé par `/workflow:start` (phase 1) s'il n'existe pas
44
44
 
45
45
  > Si un prérequis est manquant, abandonner immédiatement avec un message clair et actionnable. Ne jamais ignorer silencieusement une phase.
46
46
 
@@ -224,7 +224,43 @@ Points |
224
224
  {Notes de sprint planning, décisions prises...}
225
225
  ```
226
226
 
227
- ### Étape 6 : Checklist Finale
227
+ ### Étape 6 : Synchroniser `.bmad/sprint-status.yaml`
228
+
229
+ `/gate:validate-sprint` et les commandes `/sprint:*` lisent le sprint dans `.bmad/sprint-status.yaml`. L'écrire maintenant à partir du `sprint-goal.md` ci-dessus et des fiches US sélectionnées (`project-management/backlog/user-stories/US-*.md`) :
230
+
231
+ 1. Créer `.bmad/` s'il n'existe pas.
232
+ 2. `metadata` : `sprint_id` (`sprint-{N}`), `name`, `start_date`, `end_date`, `goal`, `capacity_points`, repris de `sprint-goal.md`.
233
+ 3. `stories` : une entrée par US sélectionnée : `title`, `status: ready-for-dev`, `story_points`, `epic_id`, `priority` (MoSCoW), `dependencies`, `tasks`, `history: []`.
234
+ 4. Fichier déjà présent pour le **même** `sprint_id` : conserver les statuts existants (ne jamais faire reculer une story) et n'ajouter que les nouvelles US.
235
+ 5. Fichier présent pour un **autre** sprint : déplacer d'abord ses stories sous `archived_sprints.<ancien sprint_id>` (`status`, `points`), puis écrire le nouveau sprint.
236
+
237
+ ```yaml
238
+ # .bmad/sprint-status.yaml
239
+ version: "1.0"
240
+ metadata:
241
+ sprint_id: "sprint-2"
242
+ name: "Gestion des utilisateurs"
243
+ start_date: "2026-11-02"
244
+ end_date: "2026-11-13"
245
+ goal: "Les utilisateurs peuvent s'inscrire, se connecter et modifier leur profil"
246
+ capacity_points: 21
247
+ stories:
248
+ US-010:
249
+ title: "Inscription utilisateur"
250
+ status: "ready-for-dev"
251
+ story_points: 5
252
+ epic_id: "EPIC-002"
253
+ priority: "must"
254
+ dependencies: ["US-001"]
255
+ tasks: { total: 0, completed: 0, list: [] }
256
+ history: []
257
+ archived_sprints:
258
+ sprint-1:
259
+ stories:
260
+ US-001: { status: "done", points: 5 }
261
+ ```
262
+
263
+ ### Étape 7 : Checklist Finale
228
264
 
229
265
  ```
230
266
  ══════════════════════════════════════════════════════════════
@@ -291,6 +327,9 @@ Points |
291
327
  ║ PROCHAINE ÉTAPE ║
292
328
  ╠══════════════════════════════════════════════════════════╣
293
329
  ║ ║
330
+ ║ → /gate:validate-sprint {N} ║
331
+ ║ Vérifier que le sprint est prêt (gate) ║
332
+ ║ ║
294
333
  ║ → /sprint:next-story ║
295
334
  ║ Prendre la première story du sprint backlog ║
296
335
  ║ ║
@@ -492,12 +492,14 @@ Durante a compactacao, sempre preservar:
492
492
 
493
493
  | Variável | Descrição |
494
494
  |----------|-----------|
495
- | `CLAUDE_CODE_SUBAGENT_MODEL` | Modelo **padrão** para sub-agentes sem tipo (ex: `sonnet`). **O frontmatter `model:` de um agente tem prioridade**: 11 revisores com `model: haiku` permanecem no Haiku mesmo com esta variável em `sonnet`. |
495
+ | `CLAUDE_CODE_SUBAGENT_MODEL` | Modelo **padrão** para sub-agentes sem tipo (ex: `sonnet`). **Desde o Claude Code 2.1.251**, o frontmatter `model:` de um agente tem prioridade: os 11 revisores com `model: haiku` permanecem no Haiku. **Antes de 2.1.251 era o contrário** — esta variável sobrescrevia o frontmatter. |
496
496
  | `CLAUDE_CODE_FORK_SUBAGENT` | `1` para isolar o contexto dos sub-agentes (forked subagents, v2.1.117+) |
497
497
  | `ENABLE_PROMPT_CACHING_1H` / `FORCE_PROMPT_CACHING_5M` | Ampliar/forçar o prompt caching (−40 % em sessões repetitivas) |
498
498
  | `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Definir como `1` para desativar a memória automática |
499
499
 
500
- > **Precedência de modelos (auditoria 2026-06-08):** `model:` no frontmatter do agente > `CLAUDE_CODE_SUBAGENT_MODEL` > modelo de sessão. A variável `SUBAGENT_MODEL=sonnet` NÃO sobrescreve agentes explicitamente com `model: haiku` — aplica-se apenas a sub-agentes sem `model:` definido.
500
+ > **Precedência de modelos — válida desde o Claude Code 2.1.251:** `model:` passado na invocação > `model:` do frontmatter do agente (onde `inherit` assume o modelo da conversa) > `CLAUDE_CODE_SUBAGENT_MODEL` > modelo de sessão.
501
+ >
502
+ > **⚠️ Antes de 2.1.251 a ordem era inversa:** `CLAUDE_CODE_SUBAGENT_MODEL` vinha primeiro e sobrescrevia tanto o parâmetro de invocação quanto o frontmatter, incluindo `model: inherit`. Nessas versões, `SUBAGENT_MODEL=sonnet` de facto executava em Sonnet os revisores `model: haiku` — o oposto da intenção. Verifique `claude --version` antes de confiar nesta tabela. Fonte: [documentação de sub-agents](https://code.claude.com/docs/en/sub-agents).
501
503
 
502
504
  ---
503
505
 
@@ -18,19 +18,10 @@
18
18
  "Write",
19
19
  "Glob",
20
20
  "Grep",
21
+ "__STACK_PERMISSIONS__",
21
22
  "Bash(git:*)",
22
- "Bash(npm run:*)",
23
- "Bash(npm test:*)",
24
- "Bash(pnpm:*)",
25
- "Bash(yarn:*)",
26
- "Bash(composer:*)",
27
- "Bash(php bin/console:*)",
28
- "Bash(php artisan:*)",
29
- "Bash(dotnet:*)",
30
23
  "Bash(make:*)",
31
- "Bash(docker compose:*)",
32
- "Bash(flutter:*)",
33
- "Bash(ng:*)"
24
+ "Bash(docker compose:*)"
34
25
  ],
35
26
  "deny": [
36
27
  "Bash(rm -rf:*)",
@@ -40,7 +40,7 @@ $ARGUMENTS
40
40
  - `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` definido
41
41
  - CLI `gh` autenticado (criação de PR / verificações / merge)
42
42
  - Docker disponível (todos os testes são executados via Docker — veja o CLAUDE.md do projeto)
43
- - Projeto BMAD v6 com `.bmad/sprint-status.yaml` presente
43
+ - Projeto BMAD v6: `.bmad/sprint-status.yaml` é criado por `/workflow:start` (fase 1) se não existir
44
44
 
45
45
  > Se um pré-requisito estiver ausente, aborte imediatamente com uma mensagem clara e acionável. Não pule uma fase silenciosamente.
46
46
 
@@ -224,7 +224,43 @@ Pontos |
224
224
  {Notas do sprint planning, decisões tomadas...}
225
225
  ```
226
226
 
227
- ### Etapa 6: Checklist Final
227
+ ### Etapa 6: Sincronizar `.bmad/sprint-status.yaml`
228
+
229
+ `/gate:validate-sprint` e os comandos `/sprint:*` leem o sprint em `.bmad/sprint-status.yaml`. Escreva-o agora a partir do `sprint-goal.md` acima e das fichas US selecionadas (`project-management/backlog/user-stories/US-*.md`):
230
+
231
+ 1. Criar `.bmad/` se não existir.
232
+ 2. `metadata`: `sprint_id` (`sprint-{N}`), `name`, `start_date`, `end_date`, `goal`, `capacity_points`, retirados de `sprint-goal.md`.
233
+ 3. `stories`: uma entrada por US selecionada: `title`, `status: ready-for-dev`, `story_points`, `epic_id`, `priority` (MoSCoW), `dependencies`, `tasks`, `history: []`.
234
+ 4. Arquivo já presente para o **mesmo** `sprint_id`: manter os status existentes (nunca fazer uma story retroceder) e adicionar apenas as novas US.
235
+ 5. Arquivo presente para **outro** sprint: mover primeiro as suas stories para `archived_sprints.<sprint_id anterior>` (`status`, `points`) e depois escrever o novo sprint.
236
+
237
+ ```yaml
238
+ # .bmad/sprint-status.yaml
239
+ version: "1.0"
240
+ metadata:
241
+ sprint_id: "sprint-2"
242
+ name: "Gestão de usuários"
243
+ start_date: "2026-11-02"
244
+ end_date: "2026-11-13"
245
+ goal: "Os usuários podem se cadastrar, entrar e editar o seu perfil"
246
+ capacity_points: 21
247
+ stories:
248
+ US-010:
249
+ title: "Cadastro de usuário"
250
+ status: "ready-for-dev"
251
+ story_points: 5
252
+ epic_id: "EPIC-002"
253
+ priority: "must"
254
+ dependencies: ["US-001"]
255
+ tasks: { total: 0, completed: 0, list: [] }
256
+ history: []
257
+ archived_sprints:
258
+ sprint-1:
259
+ stories:
260
+ US-001: { status: "done", points: 5 }
261
+ ```
262
+
263
+ ### Etapa 7: Checklist Final
228
264
 
229
265
  ```
230
266
  ══════════════════════════════════════════════════════════════
@@ -291,6 +327,9 @@ Pontos |
291
327
  ║ PRÓXIMO PASSO ║
292
328
  ╠══════════════════════════════════════════════════════════╣
293
329
  ║ ║
330
+ ║ → /gate:validate-sprint {N} ║
331
+ ║ Verificar se o sprint está pronto (gate) ║
332
+ ║ ║
294
333
  ║ → /sprint:next-story ║
295
334
  ║ Pegar a primeira story do sprint backlog ║
296
335
  ║ ║