@the-bearded-bear/claude-craft 8.23.0 → 8.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dev/i18n/base/Common/templates/AGENTS.md.template +92 -0
- package/Dev/i18n/de/Common/templates/settings.json.template +2 -11
- package/Dev/i18n/de/Workflow/commands/auto-sprint.md +1 -1
- package/Dev/i18n/de/Workflow/commands/start.md +40 -1
- package/Dev/i18n/en/Common/templates/settings.json.template +2 -11
- package/Dev/i18n/en/Workflow/commands/auto-sprint.md +1 -1
- package/Dev/i18n/en/Workflow/commands/start.md +40 -1
- package/Dev/i18n/es/Common/templates/settings.json.template +2 -11
- package/Dev/i18n/es/Workflow/commands/auto-sprint.md +1 -1
- package/Dev/i18n/es/Workflow/commands/start.md +40 -1
- package/Dev/i18n/fr/Common/templates/settings.json.template +2 -11
- package/Dev/i18n/fr/Workflow/commands/auto-sprint.md +1 -1
- package/Dev/i18n/fr/Workflow/commands/start.md +40 -1
- package/Dev/i18n/pt/Common/templates/settings.json.template +2 -11
- package/Dev/i18n/pt/Workflow/commands/auto-sprint.md +1 -1
- package/Dev/i18n/pt/Workflow/commands/start.md +40 -1
- package/Dev/scripts/check-config.sh +59 -65
- package/Dev/scripts/install-common-rules.sh +47 -3
- package/Dev/scripts/install-from-config.sh +12 -1
- package/Dev/scripts/lib/install-tech-common.sh +6 -1
- package/Dev/scripts/lib/stack-profiles.sh +74 -0
- package/Dev/stack-profiles/README.md +15 -0
- package/Dev/stack-profiles/angular/permissions.txt +5 -0
- package/Dev/stack-profiles/angular/quality.md +3 -0
- package/Dev/stack-profiles/angular/stack.txt +2 -0
- package/Dev/stack-profiles/ansible/permissions.txt +2 -0
- package/Dev/stack-profiles/ansible/quality.md +2 -0
- package/Dev/stack-profiles/ansible/stack.txt +2 -0
- package/Dev/stack-profiles/coolify/stack.txt +2 -0
- package/Dev/stack-profiles/csharp/permissions.txt +1 -0
- package/Dev/stack-profiles/csharp/quality.md +3 -0
- package/Dev/stack-profiles/csharp/stack.txt +2 -0
- package/Dev/stack-profiles/docker/permissions.txt +1 -0
- package/Dev/stack-profiles/docker/quality.md +2 -0
- package/Dev/stack-profiles/docker/stack.txt +2 -0
- package/Dev/stack-profiles/flutter/permissions.txt +2 -0
- package/Dev/stack-profiles/flutter/quality.md +3 -0
- package/Dev/stack-profiles/flutter/stack.txt +2 -0
- package/Dev/stack-profiles/frankenphp/stack.txt +2 -0
- package/Dev/stack-profiles/hcloud/stack.txt +2 -0
- package/Dev/stack-profiles/kubernetes/permissions.txt +3 -0
- package/Dev/stack-profiles/kubernetes/quality.md +2 -0
- package/Dev/stack-profiles/kubernetes/stack.txt +2 -0
- package/Dev/stack-profiles/laravel/permissions.txt +2 -0
- package/Dev/stack-profiles/laravel/quality.md +3 -0
- package/Dev/stack-profiles/laravel/stack.txt +2 -0
- package/Dev/stack-profiles/opentofu/permissions.txt +3 -0
- package/Dev/stack-profiles/opentofu/quality.md +3 -0
- package/Dev/stack-profiles/opentofu/stack.txt +2 -0
- package/Dev/stack-profiles/paperclip/permissions.txt +4 -0
- package/Dev/stack-profiles/paperclip/quality.md +2 -0
- package/Dev/stack-profiles/paperclip/stack.txt +2 -0
- package/Dev/stack-profiles/pgbouncer/stack.txt +2 -0
- package/Dev/stack-profiles/php/permissions.txt +1 -0
- package/Dev/stack-profiles/php/quality.md +3 -0
- package/Dev/stack-profiles/php/stack.txt +2 -0
- package/Dev/stack-profiles/python/permissions.txt +4 -0
- package/Dev/stack-profiles/python/quality.md +3 -0
- package/Dev/stack-profiles/python/stack.txt +2 -0
- package/Dev/stack-profiles/react/permissions.txt +4 -0
- package/Dev/stack-profiles/react/quality.md +3 -0
- package/Dev/stack-profiles/react/stack.txt +2 -0
- package/Dev/stack-profiles/reactnative/permissions.txt +5 -0
- package/Dev/stack-profiles/reactnative/quality.md +3 -0
- package/Dev/stack-profiles/reactnative/stack.txt +2 -0
- package/Dev/stack-profiles/symfony/permissions.txt +2 -0
- package/Dev/stack-profiles/symfony/quality.md +4 -0
- package/Dev/stack-profiles/symfony/stack.txt +2 -0
- package/Dev/stack-profiles/vercel/permissions.txt +5 -0
- package/Dev/stack-profiles/vercel/quality.md +2 -0
- package/Dev/stack-profiles/vercel/stack.txt +2 -0
- package/Dev/stack-profiles/vite/permissions.txt +4 -0
- package/Dev/stack-profiles/vite/quality.md +2 -0
- package/Dev/stack-profiles/vite/stack.txt +2 -0
- package/Dev/stack-profiles/vuejs/permissions.txt +4 -0
- package/Dev/stack-profiles/vuejs/quality.md +3 -0
- package/Dev/stack-profiles/vuejs/stack.txt +2 -0
- package/Project/i18n/de/Gate/commands/validate-sprint.md +14 -5
- package/Project/i18n/de/agents/tech-lead.md +62 -67
- package/Project/i18n/de/scaffold/CLAUDE.md +5 -25
- package/Project/i18n/en/Gate/commands/validate-sprint.md +14 -5
- package/Project/i18n/en/agents/tech-lead.md +60 -65
- package/Project/i18n/en/scaffold/CLAUDE.md +5 -25
- package/Project/i18n/es/Gate/commands/validate-sprint.md +14 -5
- package/Project/i18n/es/agents/tech-lead.md +60 -65
- package/Project/i18n/es/scaffold/CLAUDE.md +5 -25
- package/Project/i18n/fr/Gate/commands/validate-sprint.md +14 -5
- package/Project/i18n/fr/agents/tech-lead.md +60 -65
- package/Project/i18n/fr/scaffold/CLAUDE.md +5 -25
- package/Project/i18n/pt/Gate/commands/validate-sprint.md +14 -5
- package/Project/i18n/pt/agents/tech-lead.md +60 -65
- package/Project/i18n/pt/scaffold/CLAUDE.md +5 -25
- package/Project/install-project-commands.sh +45 -10
- package/README.md +8 -0
- package/bundles/cursor/.cursorrules +1 -1
- package/bundles/windsurf/.windsurfrules +1 -1
- package/cli/kanban/client/dist/assets/BurndownView-CQyFME8U.js +3 -0
- package/cli/kanban/client/dist/assets/{DepsView-A7Xe41FE.js → DepsView-DEAS0a20.js} +1 -1
- package/cli/kanban/client/dist/assets/{DocsView-DFXULSIu.js → DocsView-BsXYPJAu.js} +1 -1
- package/cli/kanban/client/dist/assets/{SprintsView-DZ3KdjDw.js → SprintsView-Bo2p1NbV.js} +1 -1
- package/cli/kanban/client/dist/assets/cytoscape-dagre-8BvEs68F.js +2 -0
- package/cli/kanban/client/dist/assets/cytoscape.esm-BiK1LiYw.js +321 -0
- package/cli/kanban/client/dist/assets/index-CI2O6JO9.js +4 -0
- package/cli/kanban/client/dist/assets/{marked.esm-BFjXurK6.js → marked.esm-CYIZq5lG.js} +4 -4
- package/cli/kanban/client/dist/assets/purify.es-ChwZkWde.js +3 -0
- package/cli/kanban/client/dist/index.html +1 -1
- package/cli/kanban/server/app.js +6 -3
- package/cli/kanban/server/services/frontmatter.js +10 -4
- package/cli/kanban/server/services/markdown-metadata.js +150 -0
- package/cli/kanban/server/services/repository.js +29 -7
- package/cli/lib/installer.js +9 -2
- package/package.json +9 -9
- package/cli/kanban/client/dist/assets/BurndownView-BrheHgEo.js +0 -10
- package/cli/kanban/client/dist/assets/cytoscape-dagre-YDByNmIW.js +0 -2
- package/cli/kanban/client/dist/assets/cytoscape.esm-Dd3Wh3PR.js +0 -321
- package/cli/kanban/client/dist/assets/index-TQv7sDCT.js +0 -4
- package/cli/kanban/client/dist/assets/purify.es-DuRL7t6i.js +0 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Validar la preparacion del sprint antes de iniciar
|
|
3
|
-
argument-hint: [--verbose]
|
|
3
|
+
argument-hint: "[N] [--verbose]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Validar Sprint Gate
|
|
@@ -10,7 +10,8 @@ Todos los criterios requeridos deben cumplirse.
|
|
|
10
10
|
|
|
11
11
|
## Argumentos
|
|
12
12
|
|
|
13
|
-
$ARGUMENTS (format: [--verbose])
|
|
13
|
+
$ARGUMENTS (format: [N] [--verbose])
|
|
14
|
+
- **N** (opcional): número del sprint (`1`, `001` o `sprint-001`); por defecto: `metadata.sprint_id`, si no, la carpeta `project-management/sprints/sprint-*/` más reciente
|
|
14
15
|
- **--verbose** (opcional): Mostrar el detalle por story
|
|
15
16
|
|
|
16
17
|
## Criterios Sprint Ready
|
|
@@ -30,9 +31,16 @@ $ARGUMENTS (format: [--verbose])
|
|
|
30
31
|
|
|
31
32
|
### Paso 1: Cargar el estado del sprint
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
Fuente, en este orden:
|
|
35
|
+
|
|
36
|
+
1. **`.bmad/sprint-status.yaml`** si existe y su `metadata.sprint_id` corresponde al sprint `N`: extraer los metadatos y contar las stories por estado.
|
|
37
|
+
2. **Si no, respaldo Markdown** desde `project-management/sprints/sprint-{N}-*/` (escrito por `/workflow:start`):
|
|
38
|
+
- metadatos, objetivo, capacidad: `sprint-goal.md` (inicio, fin, capacidad, objetivo);
|
|
39
|
+
- stories: la tabla de US seleccionadas de `sprint-goal.md` y las fichas `project-management/backlog/user-stories/US-*.md` (puntos, estado). Una story planificada y no iniciada cuenta como `ready-for-dev`;
|
|
40
|
+
- dependencias bloqueantes: `sprint-dependencies.md`.
|
|
41
|
+
3. Ninguno de los dos: fallar con «No existe el sprint {N}: ejecute `/workflow:start {N}`».
|
|
42
|
+
|
|
43
|
+
En modo respaldo el gate se evalúa igualmente, pero el informe añade una advertencia no bloqueante: los comandos `/sprint:*` necesitan `.bmad/sprint-status.yaml`, ejecute `/workflow:start {N}` o `/project:migrate-backlog`.
|
|
36
44
|
|
|
37
45
|
### Paso 2: Validar los metadatos
|
|
38
46
|
|
|
@@ -58,6 +66,7 @@ Si `metadata.capacity_points` esta definido:
|
|
|
58
66
|
### Paso 5: Generar el informe
|
|
59
67
|
|
|
60
68
|
Mostrar el estado de preparacion del sprint.
|
|
69
|
+
Empezar el informe con la fuente utilizada: `Fuente: .bmad/sprint-status.yaml` o `Fuente: Markdown (project-management/sprints/sprint-{N}-*/)`.
|
|
61
70
|
|
|
62
71
|
## Formato de salida
|
|
63
72
|
|
|
@@ -11,7 +11,7 @@ Eres un Tech Lead experimentado, certificado CSM (Certified Scrum Master) por la
|
|
|
11
11
|
- **Rol**: Tech Lead / Scrum Master
|
|
12
12
|
- **Certificación**: CSM (Certified Scrum Master)
|
|
13
13
|
- **Experiencia**: 15+ años en desarrollo de software, 8+ años en Agile
|
|
14
|
-
- **Expertise**: Arquitectura,
|
|
14
|
+
- **Expertise**: Arquitectura, DevOps y el stack del proyecto definido en el `CLAUDE.md` raíz
|
|
15
15
|
|
|
16
16
|
## Responsabilidades Principales
|
|
17
17
|
|
|
@@ -23,17 +23,19 @@ Eres un Tech Lead experimentado, certificado CSM (Certified Scrum Master) por la
|
|
|
23
23
|
6. **Calidad**: Definir y hacer cumplir la Definition of Done
|
|
24
24
|
7. **Coaching**: Guiar al equipo hacia la excelencia técnica
|
|
25
25
|
|
|
26
|
-
## Stack Técnico
|
|
26
|
+
## Stack Técnico del Proyecto
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
|
31
|
-
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
28
|
+
No presupongo ningún framework: el stack del proyecto está definido en la sección **Technical stack** del `CLAUDE.md` raíz (generada en la instalación a partir de las tecnologías elegidas). Lo leo antes de cualquier decisión, estimación o descomposición, y solo uso los prefijos de tareas de las capas presentes en el proyecto.
|
|
29
|
+
|
|
30
|
+
| Capa | Qué verifico en el stack del proyecto |
|
|
31
|
+
|--------|---------------------------------------|
|
|
32
|
+
| 🌐 Web | Framework web, componentes, gestión de estado |
|
|
33
|
+
| 📱 Móvil | Framework móvil (si el producto tiene app móvil) |
|
|
34
|
+
| ⚙️ API | Estilo de API (REST, GraphQL), contrato (OpenAPI) |
|
|
35
|
+
| 🗄️ DB | Base de datos, ORM / capa de consultas, migraciones |
|
|
36
|
+
| 🧪 Tests | Herramientas de test por capa (unitario, integración, E2E) |
|
|
37
|
+
| 🐳 Infra | Contenedores, CI/CD, destino de despliegue |
|
|
38
|
+
| 🏗️ Arquitectura | Hexagonal, DDD, CQRS (si está justificado) |
|
|
37
39
|
|
|
38
40
|
## Competencias Scrum
|
|
39
41
|
|
|
@@ -69,12 +71,12 @@ Eres un Tech Lead experimentado, certificado CSM (Certified Scrum Master) por la
|
|
|
69
71
|
|
|
70
72
|
| Prefijo | Capa | Ejemplos |
|
|
71
73
|
|---------|--------|----------|
|
|
72
|
-
| `[DB]` | Base de datos |
|
|
73
|
-
| `[BE]` | Backend |
|
|
74
|
-
| `[FE-WEB]` | Frontend Web |
|
|
75
|
-
| `[FE-MOB]` | Frontend Móvil |
|
|
76
|
-
| `[TEST]` | Tests |
|
|
77
|
-
| `[DOC]` | Documentación |
|
|
74
|
+
| `[DB]` | Base de datos | Esquema/modelo, Migración, Repositorio, Fixtures |
|
|
75
|
+
| `[BE]` | Backend | Servicio, Endpoint API, Validación, Autorización |
|
|
76
|
+
| `[FE-WEB]` | Frontend Web | Página/ruta, Componente, Estado, Formulario |
|
|
77
|
+
| `[FE-MOB]` | Frontend Móvil | Modelo, Cliente API, Estado, Pantalla |
|
|
78
|
+
| `[TEST]` | Tests | Unitario, API/integración, Componente, E2E |
|
|
79
|
+
| `[DOC]` | Documentación | Doc del código, README, OpenAPI |
|
|
78
80
|
| `[OPS]` | DevOps | Docker, CI/CD |
|
|
79
81
|
| `[REV]` | Revisión | Code review |
|
|
80
82
|
|
|
@@ -97,11 +99,11 @@ Para una US CRUD típica (5 puntos), creo ~17 tareas:
|
|
|
97
99
|
|
|
98
100
|
| Tipo | Tareas | Horas |
|
|
99
101
|
|------|--------|--------|
|
|
100
|
-
| [DB] |
|
|
101
|
-
| [BE] | API
|
|
102
|
-
| [FE-WEB] |
|
|
103
|
-
| [FE-MOB] |
|
|
104
|
-
| [TEST] |
|
|
102
|
+
| [DB] | Modelo, Migración | 3h |
|
|
103
|
+
| [BE] | Endpoint API, Servicio | 7h |
|
|
104
|
+
| [FE-WEB] | Página, Componente, Estado | 7h |
|
|
105
|
+
| [FE-MOB] | Modelo, Cliente API, Estado, Pantalla | 10h |
|
|
106
|
+
| [TEST] | Unitario, API, Componente, E2E | 9h |
|
|
105
107
|
| [DOC] | Documentación | 1h |
|
|
106
108
|
| [REV] | Code Review | 2h |
|
|
107
109
|
| **Total** | **~17 tareas** | **~39h** |
|
|
@@ -110,19 +112,19 @@ Para una US CRUD típica (5 puntos), creo ~17 tareas:
|
|
|
110
112
|
|
|
111
113
|
```mermaid
|
|
112
114
|
graph TD
|
|
113
|
-
T01[
|
|
114
|
-
T01 --> T03[API
|
|
115
|
+
T01[Model] --> T02[Migration]
|
|
116
|
+
T01 --> T03[API endpoint]
|
|
115
117
|
T03 --> T04[Service]
|
|
116
|
-
T03 --> T05[
|
|
117
|
-
T05 --> T06[
|
|
118
|
-
T06 --> T07[
|
|
119
|
-
T03 --> T08[
|
|
120
|
-
T08 --> T09[
|
|
121
|
-
T09 --> T10[
|
|
118
|
+
T03 --> T05[Web page]
|
|
119
|
+
T05 --> T06[Web component]
|
|
120
|
+
T06 --> T07[Web state]
|
|
121
|
+
T03 --> T08[Mobile model]
|
|
122
|
+
T08 --> T09[API client]
|
|
123
|
+
T09 --> T10[Mobile state]
|
|
122
124
|
T10 --> T11[Screen]
|
|
123
|
-
T04 --> T12[
|
|
124
|
-
T03 --> T13[
|
|
125
|
-
T11 --> T14[
|
|
125
|
+
T04 --> T12[Unit tests]
|
|
126
|
+
T03 --> T13[API tests]
|
|
127
|
+
T11 --> T14[Component tests]
|
|
126
128
|
T07 --> T15[E2E]
|
|
127
129
|
T11 --> T15
|
|
128
130
|
T15 --> T16[Doc]
|
|
@@ -137,27 +139,27 @@ Cada US DEBE atravesar todas las capas:
|
|
|
137
139
|
┌─────────────────────────────────────────────────────────────┐
|
|
138
140
|
│ Capa UI │
|
|
139
141
|
│ ┌─────────────────────┐ ┌─────────────────────┐ │
|
|
140
|
-
│ │
|
|
141
|
-
│ │
|
|
142
|
+
│ │ Web app │ │ Mobile app │ │
|
|
143
|
+
│ │ (optional) │ │ (optional) │ │
|
|
142
144
|
│ └──────────┬──────────┘ └──────────┬──────────┘ │
|
|
143
145
|
│ └────────────┬────────────┘ │
|
|
144
146
|
│ ▼ │
|
|
145
147
|
│ ┌─────────────────────┐ │
|
|
146
|
-
│ │
|
|
147
|
-
│ │
|
|
148
|
+
│ │ API │ │
|
|
149
|
+
│ │ (REST / GraphQL) │ │
|
|
148
150
|
│ └──────────┬──────────┘ │
|
|
149
151
|
│ ▼ │
|
|
150
152
|
│ ┌─────────────────────┐ │
|
|
151
|
-
│ │
|
|
152
|
-
│ │ (
|
|
153
|
+
│ │ Database │ │
|
|
154
|
+
│ │ (ORM / queries) │ │
|
|
153
155
|
│ └─────────────────────┘ │
|
|
154
156
|
└─────────────────────────────────────────────────────────────┘
|
|
155
157
|
```
|
|
156
158
|
|
|
157
159
|
**Reglas**:
|
|
158
160
|
- SIN USs "Solo Backend" o "Solo Frontend"
|
|
159
|
-
-
|
|
160
|
-
- API
|
|
161
|
+
- Si el producto tiene varios clientes (web + móvil), cada US los cubre todos
|
|
162
|
+
- La API es el punto central
|
|
161
163
|
- Excepción: USs técnicas de infraestructura
|
|
162
164
|
|
|
163
165
|
## Definition of Done que Aplico
|
|
@@ -175,37 +177,30 @@ Cada US DEBE atravesar todas las capas:
|
|
|
175
177
|
- [ ] Tests E2E para caminos críticos
|
|
176
178
|
- [ ] CI verde
|
|
177
179
|
|
|
178
|
-
### Web (
|
|
179
|
-
- [ ]
|
|
180
|
-
- [ ]
|
|
181
|
-
- [ ]
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
- [ ]
|
|
185
|
-
|
|
186
|
-
### Móvil (Flutter)
|
|
187
|
-
- [ ] Widgets implementados
|
|
188
|
-
- [ ] iOS 15+, Android 10+
|
|
189
|
-
- [ ] Material/Cupertino
|
|
180
|
+
### Web (si el proyecto tiene front web)
|
|
181
|
+
- [ ] Páginas/componentes testeados
|
|
182
|
+
- [ ] Responsive, WCAG 2.2 AA
|
|
183
|
+
- [ ] Tests E2E / de componentes web pasando
|
|
184
|
+
|
|
185
|
+
### Móvil (si el proyecto tiene app móvil)
|
|
186
|
+
- [ ] Pantallas implementadas
|
|
187
|
+
- [ ] Versiones iOS/Android objetivo soportadas
|
|
190
188
|
- [ ] 60 FPS, sin jank
|
|
191
|
-
- [ ]
|
|
192
|
-
- [ ] Tests de Widget pasando
|
|
189
|
+
- [ ] Tests de componentes/widgets pasando
|
|
193
190
|
|
|
194
|
-
### API
|
|
195
|
-
- [ ] Endpoints
|
|
196
|
-
- [ ]
|
|
197
|
-
- [ ]
|
|
198
|
-
- [ ]
|
|
199
|
-
- [ ]
|
|
200
|
-
- [ ] ApiTestCase pasando
|
|
191
|
+
### API
|
|
192
|
+
- [ ] Endpoints funcionales
|
|
193
|
+
- [ ] Validación de entradas
|
|
194
|
+
- [ ] Autorización verificada en cada endpoint
|
|
195
|
+
- [ ] Contrato OpenAPI actualizado
|
|
196
|
+
- [ ] Tests de API pasando
|
|
201
197
|
|
|
202
198
|
### Calidad
|
|
203
|
-
- [ ]
|
|
204
|
-
- [ ] Dart analyzer strict
|
|
199
|
+
- [ ] Linters / análisis estático del stack en verde (ver `CLAUDE.md`)
|
|
205
200
|
- [ ] API < 200ms
|
|
206
201
|
- [ ] Sin vulnerabilidades
|
|
207
202
|
|
|
208
|
-
### Paridad Web/Móvil
|
|
203
|
+
### Paridad Web/Móvil (si existen ambos)
|
|
209
204
|
- [ ] Mismo comportamiento de negocio
|
|
210
205
|
- [ ] Misma API consumida
|
|
211
206
|
- [ ] Datos sincronizados
|
|
@@ -10,7 +10,7 @@ Expert in backlog management, personas, User Stories and prioritization.
|
|
|
10
10
|
### 🔧 Tech Lead (`@tech`)
|
|
11
11
|
Expert in architecture, technical decomposition and Scrum facilitation.
|
|
12
12
|
- CSM certified (Certified Scrum Master)
|
|
13
|
-
- Skilled in:
|
|
13
|
+
- Skilled in: Hexagonal Architecture{{STACK_SKILLS}}
|
|
14
14
|
|
|
15
15
|
## Custom commands
|
|
16
16
|
|
|
@@ -85,13 +85,7 @@ Expert in architecture, technical decomposition and Scrum facilitation.
|
|
|
85
85
|
## Technical stack
|
|
86
86
|
|
|
87
87
|
```yaml
|
|
88
|
-
|
|
89
|
-
mobile: Flutter (Dart, Material/Cupertino)
|
|
90
|
-
api: API Platform (REST, OpenAPI)
|
|
91
|
-
database: PostgreSQL + Doctrine ORM
|
|
92
|
-
infrastructure: Docker
|
|
93
|
-
tests: PHPUnit, Flutter Test
|
|
94
|
-
quality: PHPStan max, Dart analyzer
|
|
88
|
+
{{STACK_BLOCK}}
|
|
95
89
|
```
|
|
96
90
|
|
|
97
91
|
## Project structure
|
|
@@ -129,7 +123,7 @@ project-management/
|
|
|
129
123
|
- Format: "As a [P-XXX]... I want... So that..."
|
|
130
124
|
- **INVEST** validation: Independent, Negotiable, Valuable, Estimable, Sized ≤8pts, Testable
|
|
131
125
|
- The **3 Cs**: Card, Conversation, Confirmation
|
|
132
|
-
- **Vertical Slicing**:
|
|
126
|
+
- **Vertical Slicing**: {{STACK_SLICE}}
|
|
133
127
|
|
|
134
128
|
### Acceptance Criteria
|
|
135
129
|
- **Gherkin** format: GIVEN [context] / WHEN [actor] [action] / THEN [result]
|
|
@@ -189,20 +183,6 @@ project-management/
|
|
|
189
183
|
|
|
190
184
|
## Code quality
|
|
191
185
|
|
|
192
|
-
### Backend (Symfony)
|
|
193
|
-
- PHPStan max level
|
|
194
186
|
- Tests > 80% coverage
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
### Mobile (Flutter)
|
|
199
|
-
- Strict Dart analyzer
|
|
200
|
-
- Widget tests
|
|
201
|
-
- BLoC/Riverpod
|
|
202
|
-
- Material Design 3
|
|
203
|
-
|
|
204
|
-
### API (API Platform)
|
|
205
|
-
- Auto-generated OpenAPI
|
|
206
|
-
- Validation constraints
|
|
207
|
-
- Serialization groups
|
|
208
|
-
- Security voters
|
|
187
|
+
|
|
188
|
+
{{QUALITY_BLOCK}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Valider la préparation du sprint avant démarrage
|
|
3
|
-
argument-hint: [--verbose]
|
|
3
|
+
argument-hint: "[N] [--verbose]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Valider Sprint Gate
|
|
@@ -10,7 +10,8 @@ Tous les critères requis doivent être remplis.
|
|
|
10
10
|
|
|
11
11
|
## Arguments
|
|
12
12
|
|
|
13
|
-
$ARGUMENTS (format: [--verbose])
|
|
13
|
+
$ARGUMENTS (format: [N] [--verbose])
|
|
14
|
+
- **N** (optionnel) : numéro du sprint (`1`, `001` ou `sprint-001`) ; par défaut : `metadata.sprint_id`, sinon le dossier `project-management/sprints/sprint-*/` le plus récent
|
|
14
15
|
- **--verbose** (optionnel) : Afficher le détail par story
|
|
15
16
|
|
|
16
17
|
## Critères Sprint Ready
|
|
@@ -30,9 +31,16 @@ $ARGUMENTS (format: [--verbose])
|
|
|
30
31
|
|
|
31
32
|
### Étape 1 : Charger le statut sprint
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
Source, dans cet ordre :
|
|
35
|
+
|
|
36
|
+
1. **`.bmad/sprint-status.yaml`** s'il existe et que son `metadata.sprint_id` correspond au sprint `N` : extraire les métadonnées et compter les stories par statut.
|
|
37
|
+
2. **Sinon, repli Markdown** sur `project-management/sprints/sprint-{N}-*/` (écrit par `/workflow:start`) :
|
|
38
|
+
- métadonnées, objectif, capacité : `sprint-goal.md` (début, fin, capacité, objectif) ;
|
|
39
|
+
- stories : la table des US sélectionnées de `sprint-goal.md` et les fiches `project-management/backlog/user-stories/US-*.md` (points, statut). Une story planifiée et non démarrée compte comme `ready-for-dev` ;
|
|
40
|
+
- dépendances bloquantes : `sprint-dependencies.md`.
|
|
41
|
+
3. Aucun des deux : échouer avec « Aucun sprint {N} : lancez `/workflow:start {N}` ».
|
|
42
|
+
|
|
43
|
+
En repli, le gate est quand même évalué, mais le rapport ajoute un avertissement non bloquant : les commandes `/sprint:*` ont besoin de `.bmad/sprint-status.yaml`, lancez `/workflow:start {N}` ou `/project:migrate-backlog`.
|
|
36
44
|
|
|
37
45
|
### Étape 2 : Valider les métadonnées
|
|
38
46
|
|
|
@@ -58,6 +66,7 @@ Si `metadata.capacity_points` défini :
|
|
|
58
66
|
### Étape 5 : Générer le rapport
|
|
59
67
|
|
|
60
68
|
Afficher le statut de préparation du sprint.
|
|
69
|
+
Commencer le rapport par la source utilisée : `Source : .bmad/sprint-status.yaml` ou `Source : Markdown (project-management/sprints/sprint-{N}-*/)`.
|
|
61
70
|
|
|
62
71
|
## Format de sortie
|
|
63
72
|
|
|
@@ -11,7 +11,7 @@ Tu es un Tech Lead expérimenté, certifié CSM (Certified Scrum Master) par la
|
|
|
11
11
|
- **Rôle** : Tech Lead / Scrum Master
|
|
12
12
|
- **Certification** : CSM (Certified Scrum Master)
|
|
13
13
|
- **Expérience** : 15+ ans en développement logiciel, 8+ ans en Agile
|
|
14
|
-
- **Expertise** : Architecture,
|
|
14
|
+
- **Expertise** : Architecture, DevOps et la stack du projet définie dans le `CLAUDE.md` racine
|
|
15
15
|
|
|
16
16
|
## Responsabilités principales
|
|
17
17
|
|
|
@@ -23,17 +23,19 @@ Tu es un Tech Lead expérimenté, certifié CSM (Certified Scrum Master) par la
|
|
|
23
23
|
6. **Qualité** : Définir et faire respecter la Definition of Done
|
|
24
24
|
7. **Coaching** : Accompagner l'équipe vers l'excellence technique
|
|
25
25
|
|
|
26
|
-
## Stack technique
|
|
26
|
+
## Stack technique du projet
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
|
31
|
-
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
28
|
+
Je ne présuppose aucun framework : la stack du projet est définie dans la section **Stack technique** du `CLAUDE.md` racine (générée à l'installation à partir des technologies choisies). Je la lis avant toute décision, estimation ou décomposition, et je n'utilise que les préfixes de tâches des couches présentes dans le projet.
|
|
29
|
+
|
|
30
|
+
| Couche | Ce que je vérifie dans la stack du projet |
|
|
31
|
+
|--------|-------------------------------------------|
|
|
32
|
+
| 🌐 Web | Framework web, composants, gestion d'état |
|
|
33
|
+
| 📱 Mobile | Framework mobile (si le produit a une app mobile) |
|
|
34
|
+
| ⚙️ API | Style d'API (REST, GraphQL), contrat (OpenAPI) |
|
|
35
|
+
| 🗄️ DB | Base de données, ORM / couche de requêtes, migrations |
|
|
36
|
+
| 🧪 Tests | Outils de test par couche (unitaire, intégration, E2E) |
|
|
37
|
+
| 🐳 Infra | Conteneurs, CI/CD, cible de déploiement |
|
|
38
|
+
| 🏗️ Architecture | Hexagonale, DDD, CQRS (si justifié) |
|
|
37
39
|
|
|
38
40
|
## Compétences Scrum
|
|
39
41
|
|
|
@@ -69,12 +71,12 @@ Tu es un Tech Lead expérimenté, certifié CSM (Certified Scrum Master) par la
|
|
|
69
71
|
|
|
70
72
|
| Préfixe | Couche | Exemples |
|
|
71
73
|
|---------|--------|----------|
|
|
72
|
-
| `[DB]` | Database |
|
|
73
|
-
| `[BE]` | Backend | Service, API
|
|
74
|
-
| `[FE-WEB]` | Frontend Web |
|
|
75
|
-
| `[FE-MOB]` | Frontend Mobile |
|
|
76
|
-
| `[TEST]` | Tests |
|
|
77
|
-
| `[DOC]` | Documentation |
|
|
74
|
+
| `[DB]` | Database | Schéma/modèle, Migration, Repository, Fixtures |
|
|
75
|
+
| `[BE]` | Backend | Service, Endpoint API, Validation, Autorisation |
|
|
76
|
+
| `[FE-WEB]` | Frontend Web | Page/route, Composant, État, Formulaire |
|
|
77
|
+
| `[FE-MOB]` | Frontend Mobile | Modèle, Client API, État, Écran |
|
|
78
|
+
| `[TEST]` | Tests | Unitaire, API/intégration, Composant, E2E |
|
|
79
|
+
| `[DOC]` | Documentation | Doc du code, README, OpenAPI |
|
|
78
80
|
| `[OPS]` | DevOps | Docker, CI/CD |
|
|
79
81
|
| `[REV]` | Review | Code review |
|
|
80
82
|
|
|
@@ -97,11 +99,11 @@ Pour une US de CRUD typique (5 points), je crée ~17 tâches :
|
|
|
97
99
|
|
|
98
100
|
| Type | Tâches | Heures |
|
|
99
101
|
|------|--------|--------|
|
|
100
|
-
| [DB] |
|
|
101
|
-
| [BE] | API
|
|
102
|
-
| [FE-WEB] |
|
|
103
|
-
| [FE-MOB] |
|
|
104
|
-
| [TEST] |
|
|
102
|
+
| [DB] | Modèle, Migration | 3h |
|
|
103
|
+
| [BE] | Endpoint API, Service | 7h |
|
|
104
|
+
| [FE-WEB] | Page, Composant, État | 7h |
|
|
105
|
+
| [FE-MOB] | Modèle, Client API, État, Écran | 10h |
|
|
106
|
+
| [TEST] | Unitaire, API, Composant, E2E | 9h |
|
|
105
107
|
| [DOC] | Documentation | 1h |
|
|
106
108
|
| [REV] | Code Review | 2h |
|
|
107
109
|
| **Total** | **~17 tâches** | **~39h** |
|
|
@@ -110,19 +112,19 @@ Pour une US de CRUD typique (5 points), je crée ~17 tâches :
|
|
|
110
112
|
|
|
111
113
|
```mermaid
|
|
112
114
|
graph TD
|
|
113
|
-
T01[
|
|
114
|
-
T01 --> T03[API
|
|
115
|
+
T01[Model] --> T02[Migration]
|
|
116
|
+
T01 --> T03[API endpoint]
|
|
115
117
|
T03 --> T04[Service]
|
|
116
|
-
T03 --> T05[
|
|
117
|
-
T05 --> T06[
|
|
118
|
-
T06 --> T07[
|
|
119
|
-
T03 --> T08[
|
|
120
|
-
T08 --> T09[
|
|
121
|
-
T09 --> T10[
|
|
118
|
+
T03 --> T05[Web page]
|
|
119
|
+
T05 --> T06[Web component]
|
|
120
|
+
T06 --> T07[Web state]
|
|
121
|
+
T03 --> T08[Mobile model]
|
|
122
|
+
T08 --> T09[API client]
|
|
123
|
+
T09 --> T10[Mobile state]
|
|
122
124
|
T10 --> T11[Screen]
|
|
123
|
-
T04 --> T12[
|
|
124
|
-
T03 --> T13[
|
|
125
|
-
T11 --> T14[
|
|
125
|
+
T04 --> T12[Unit tests]
|
|
126
|
+
T03 --> T13[API tests]
|
|
127
|
+
T11 --> T14[Component tests]
|
|
126
128
|
T07 --> T15[E2E]
|
|
127
129
|
T11 --> T15
|
|
128
130
|
T15 --> T16[Doc]
|
|
@@ -137,27 +139,27 @@ Chaque US DOIT traverser toutes les couches :
|
|
|
137
139
|
┌─────────────────────────────────────────────────────────────┐
|
|
138
140
|
│ UI Layer │
|
|
139
141
|
│ ┌─────────────────────┐ ┌─────────────────────┐ │
|
|
140
|
-
│ │
|
|
141
|
-
│ │
|
|
142
|
+
│ │ Web app │ │ Mobile app │ │
|
|
143
|
+
│ │ (optional) │ │ (optional) │ │
|
|
142
144
|
│ └──────────┬──────────┘ └──────────┬──────────┘ │
|
|
143
145
|
│ └────────────┬────────────┘ │
|
|
144
146
|
│ ▼ │
|
|
145
147
|
│ ┌─────────────────────┐ │
|
|
146
|
-
│ │
|
|
147
|
-
│ │
|
|
148
|
+
│ │ API │ │
|
|
149
|
+
│ │ (REST / GraphQL) │ │
|
|
148
150
|
│ └──────────┬──────────┘ │
|
|
149
151
|
│ ▼ │
|
|
150
152
|
│ ┌─────────────────────┐ │
|
|
151
|
-
│ │
|
|
152
|
-
│ │ (
|
|
153
|
+
│ │ Database │ │
|
|
154
|
+
│ │ (ORM / queries) │ │
|
|
153
155
|
│ └─────────────────────┘ │
|
|
154
156
|
└─────────────────────────────────────────────────────────────┘
|
|
155
157
|
```
|
|
156
158
|
|
|
157
159
|
**Règles** :
|
|
158
160
|
- PAS de US "Backend only" ou "Frontend only"
|
|
159
|
-
-
|
|
160
|
-
- L'API
|
|
161
|
+
- Si le produit a plusieurs clients (web + mobile), chaque US les couvre tous
|
|
162
|
+
- L'API est le point central
|
|
161
163
|
- Exception : US techniques d'infrastructure
|
|
162
164
|
|
|
163
165
|
## Definition of Done que j'applique
|
|
@@ -175,37 +177,30 @@ Chaque US DOIT traverser toutes les couches :
|
|
|
175
177
|
- [ ] Tests E2E parcours critiques
|
|
176
178
|
- [ ] CI verte
|
|
177
179
|
|
|
178
|
-
### Web (
|
|
179
|
-
- [ ]
|
|
180
|
-
- [ ]
|
|
181
|
-
- [ ]
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
- [ ]
|
|
185
|
-
|
|
186
|
-
### Mobile (Flutter)
|
|
187
|
-
- [ ] Widgets implémentés
|
|
188
|
-
- [ ] iOS 15+, Android 10+
|
|
189
|
-
- [ ] Material/Cupertino
|
|
180
|
+
### Web (si le projet a un front web)
|
|
181
|
+
- [ ] Pages/composants testés
|
|
182
|
+
- [ ] Responsive, WCAG 2.2 AA
|
|
183
|
+
- [ ] Tests E2E / composants web passants
|
|
184
|
+
|
|
185
|
+
### Mobile (si le projet a une app mobile)
|
|
186
|
+
- [ ] Écrans implémentés
|
|
187
|
+
- [ ] Versions iOS/Android cibles supportées
|
|
190
188
|
- [ ] 60 FPS, pas de jank
|
|
191
|
-
- [ ]
|
|
192
|
-
- [ ] Widget tests passants
|
|
189
|
+
- [ ] Tests de composants/widgets passants
|
|
193
190
|
|
|
194
|
-
### API
|
|
195
|
-
- [ ] Endpoints
|
|
196
|
-
- [ ]
|
|
197
|
-
- [ ]
|
|
198
|
-
- [ ]
|
|
199
|
-
- [ ]
|
|
200
|
-
- [ ] ApiTestCase passants
|
|
191
|
+
### API
|
|
192
|
+
- [ ] Endpoints fonctionnels
|
|
193
|
+
- [ ] Validation des entrées
|
|
194
|
+
- [ ] Autorisation vérifiée sur chaque endpoint
|
|
195
|
+
- [ ] Contrat OpenAPI à jour
|
|
196
|
+
- [ ] Tests API passants
|
|
201
197
|
|
|
202
198
|
### Qualité
|
|
203
|
-
- [ ]
|
|
204
|
-
- [ ] Dart analyzer strict
|
|
199
|
+
- [ ] Linters / analyse statique de la stack au vert (voir `CLAUDE.md`)
|
|
205
200
|
- [ ] API < 200ms
|
|
206
201
|
- [ ] Pas de vulnérabilités
|
|
207
202
|
|
|
208
|
-
### Parité Web/Mobile
|
|
203
|
+
### Parité Web/Mobile (si les deux existent)
|
|
209
204
|
- [ ] Même comportement métier
|
|
210
205
|
- [ ] Même API consommée
|
|
211
206
|
- [ ] Données synchronisées
|
|
@@ -10,7 +10,7 @@ Expert en gestion de backlog, personas, User Stories et priorisation.
|
|
|
10
10
|
### 🔧 Tech Lead (`@tech`)
|
|
11
11
|
Expert en architecture, décomposition technique et facilitation Scrum.
|
|
12
12
|
- Certifié CSM (Certified Scrum Master)
|
|
13
|
-
- Maîtrise :
|
|
13
|
+
- Maîtrise : Architecture hexagonale{{STACK_SKILLS}}
|
|
14
14
|
|
|
15
15
|
## Commandes personnalisées
|
|
16
16
|
|
|
@@ -85,13 +85,7 @@ Expert en architecture, décomposition technique et facilitation Scrum.
|
|
|
85
85
|
## Stack technique
|
|
86
86
|
|
|
87
87
|
```yaml
|
|
88
|
-
|
|
89
|
-
mobile: Flutter (Dart, Material/Cupertino)
|
|
90
|
-
api: API Platform (REST, OpenAPI)
|
|
91
|
-
database: PostgreSQL + Doctrine ORM
|
|
92
|
-
infrastructure: Docker
|
|
93
|
-
tests: PHPUnit, Flutter Test
|
|
94
|
-
quality: PHPStan max, Dart analyzer
|
|
88
|
+
{{STACK_BLOCK}}
|
|
95
89
|
```
|
|
96
90
|
|
|
97
91
|
## Structure projet
|
|
@@ -129,7 +123,7 @@ project-management/
|
|
|
129
123
|
- Format : "En tant que [P-XXX]... Je veux... Afin de..."
|
|
130
124
|
- Validation **INVEST** : Independent, Negotiable, Valuable, Estimable, Sized ≤8pts, Testable
|
|
131
125
|
- Les **3 C** : Carte, Conversation, Confirmation
|
|
132
|
-
- **Vertical Slicing** :
|
|
126
|
+
- **Vertical Slicing** : {{STACK_SLICE}}
|
|
133
127
|
|
|
134
128
|
### Critères d'Acceptance
|
|
135
129
|
- Format **Gherkin** : GIVEN [contexte] / WHEN [acteur] [action] / THEN [résultat]
|
|
@@ -189,20 +183,6 @@ project-management/
|
|
|
189
183
|
|
|
190
184
|
## Qualité du code
|
|
191
185
|
|
|
192
|
-
### Backend (Symfony)
|
|
193
|
-
- PHPStan niveau max
|
|
194
186
|
- Tests > 80% couverture
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
### Mobile (Flutter)
|
|
199
|
-
- Dart analyzer strict
|
|
200
|
-
- Widget tests
|
|
201
|
-
- BLoC/Riverpod
|
|
202
|
-
- Material Design 3
|
|
203
|
-
|
|
204
|
-
### API (API Platform)
|
|
205
|
-
- OpenAPI auto-généré
|
|
206
|
-
- Validation constraints
|
|
207
|
-
- Serialization groups
|
|
208
|
-
- Security voters
|
|
187
|
+
|
|
188
|
+
{{QUALITY_BLOCK}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Validar a preparacao do sprint antes do inicio
|
|
3
|
-
argument-hint: [--verbose]
|
|
3
|
+
argument-hint: "[N] [--verbose]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Validar Sprint Gate
|
|
@@ -10,7 +10,8 @@ Todos os criterios obrigatorios devem ser atendidos.
|
|
|
10
10
|
|
|
11
11
|
## Argumentos
|
|
12
12
|
|
|
13
|
-
$ARGUMENTS (formato: [--verbose])
|
|
13
|
+
$ARGUMENTS (formato: [N] [--verbose])
|
|
14
|
+
- **N** (opcional): número do sprint (`1`, `001` ou `sprint-001`); padrão: `metadata.sprint_id`, senão a pasta `project-management/sprints/sprint-*/` mais recente
|
|
14
15
|
- **--verbose** (opcional): Exibir o detalhe por story
|
|
15
16
|
|
|
16
17
|
## Criterios Sprint Ready
|
|
@@ -30,9 +31,16 @@ $ARGUMENTS (formato: [--verbose])
|
|
|
30
31
|
|
|
31
32
|
### Etapa 1: Carregar o status do sprint
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
Fonte, nesta ordem:
|
|
35
|
+
|
|
36
|
+
1. **`.bmad/sprint-status.yaml`** se existir e o seu `metadata.sprint_id` corresponder ao sprint `N`: extrair os metadados e contar as stories por status.
|
|
37
|
+
2. **Senão, fallback Markdown** a partir de `project-management/sprints/sprint-{N}-*/` (escrito por `/workflow:start`):
|
|
38
|
+
- metadados, meta, capacidade: `sprint-goal.md` (início, fim, capacidade, meta);
|
|
39
|
+
- stories: a tabela de US selecionadas de `sprint-goal.md` e as fichas `project-management/backlog/user-stories/US-*.md` (pontos, status). Uma story planejada e ainda não iniciada conta como `ready-for-dev`;
|
|
40
|
+
- dependências bloqueantes: `sprint-dependencies.md`.
|
|
41
|
+
3. Nenhum dos dois: falhar com «Sprint {N} inexistente: execute `/workflow:start {N}`».
|
|
42
|
+
|
|
43
|
+
Em modo fallback o gate é avaliado mesmo assim, mas o relatório adiciona um aviso não bloqueante: os comandos `/sprint:*` precisam de `.bmad/sprint-status.yaml`, execute `/workflow:start {N}` ou `/project:migrate-backlog`.
|
|
36
44
|
|
|
37
45
|
### Etapa 2: Validar os metadados
|
|
38
46
|
|
|
@@ -58,6 +66,7 @@ Se `metadata.capacity_points` definido:
|
|
|
58
66
|
### Etapa 5: Gerar o relatorio
|
|
59
67
|
|
|
60
68
|
Exibir o status de preparacao do sprint.
|
|
69
|
+
Começar o relatório pela fonte utilizada: `Fonte: .bmad/sprint-status.yaml` ou `Fonte: Markdown (project-management/sprints/sprint-{N}-*/)`.
|
|
61
70
|
|
|
62
71
|
## Formato de Saida
|
|
63
72
|
|