siesa-agents 2.1.96 → 2.1.98

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/bin/install.js CHANGED
@@ -412,6 +412,40 @@ class SiesaBmadInstaller {
412
412
  return modifiedFiles;
413
413
  }
414
414
 
415
+ // Returns true if `relativePath` (relative to source root) is inside a
416
+ // `skills/` directory AND the skill name does NOT start with 'sa-'.
417
+ // The package only ships siesa-agents skills (sa-*); if a non-sa-* entry
418
+ // ever appears in the tarball it would shadow the engineer's own skill with
419
+ // the same name. This guard prevents that, and makes the intent explicit.
420
+ isForeignSkillPath(relativePath) {
421
+ const parts = relativePath.replace(/\\/g, '/').split('/');
422
+ const skillsIdx = parts.indexOf('skills');
423
+ if (skillsIdx >= 0 && parts.length > skillsIdx + 1) {
424
+ const skillName = parts[skillsIdx + 1];
425
+ return Boolean(skillName) && !skillName.startsWith('sa-');
426
+ }
427
+ return false;
428
+ }
429
+
430
+ // Single filter factory used in every fs.copy call.
431
+ // Rules (in order):
432
+ // 1. Never overwrite user-owned ignored files when they already exist.
433
+ // 2. Never copy non-sa-* skill directories from the source package —
434
+ // the engineer's custom skills must survive every re-install/update.
435
+ makeCopyFilter(sourcePath, targetPath) {
436
+ return (src) => {
437
+ const relativePath = path.relative(sourcePath, src);
438
+ if (this.ignoredFiles.includes(relativePath)) {
439
+ const targetFile = path.join(targetPath, relativePath);
440
+ return !fs.existsSync(targetFile);
441
+ }
442
+ if (this.isForeignSkillPath(relativePath)) {
443
+ return false;
444
+ }
445
+ return true;
446
+ };
447
+ }
448
+
415
449
  async getAllFiles(dir) {
416
450
  const files = [];
417
451
  const stat = await fs.stat(dir);
@@ -581,15 +615,7 @@ class SiesaBmadInstaller {
581
615
  await fs.copy(sourcePath, targetPath, {
582
616
  overwrite: true,
583
617
  recursive: true,
584
- filter: (src) => {
585
- const relativePath = path.relative(sourcePath, src);
586
- // No sobrescribir archivos ignorados si ya existen
587
- if (this.ignoredFiles.includes(relativePath)) {
588
- const targetFile = path.join(targetPath, relativePath);
589
- return !fs.existsSync(targetFile);
590
- }
591
- return true;
592
- }
618
+ filter: this.makeCopyFilter(sourcePath, targetPath)
593
619
  });
594
620
  }
595
621
 
@@ -670,15 +696,7 @@ class SiesaBmadInstaller {
670
696
  await fs.copy(sourcePath, targetPath, {
671
697
  overwrite: true,
672
698
  recursive: true,
673
- filter: (src) => {
674
- const relativePath = path.relative(sourcePath, src);
675
- // No sobrescribir archivos ignorados si ya existen
676
- if (this.ignoredFiles.includes(relativePath)) {
677
- const targetFile = path.join(targetPath, relativePath);
678
- return !fs.existsSync(targetFile);
679
- }
680
- return true;
681
- }
699
+ filter: this.makeCopyFilter(sourcePath, targetPath)
682
700
  });
683
701
  } else {
684
702
  console.warn(`⚠️ Carpeta ${mapping.source} no encontrada en el paquete`);
@@ -787,15 +805,7 @@ class SiesaBmadInstaller {
787
805
  await fs.copy(sourcePath, stagingPath, {
788
806
  overwrite: true,
789
807
  recursive: true,
790
- filter: (src) => {
791
- const relativePath = path.relative(sourcePath, src);
792
- // No sobrescribir archivos ignorados si ya existen en el target real.
793
- if (this.ignoredFiles.includes(relativePath)) {
794
- const realTargetFile = path.join(targetPath, relativePath);
795
- return !fs.existsSync(realTargetFile);
796
- }
797
- return true;
798
- }
808
+ filter: this.makeCopyFilter(sourcePath, targetPath)
799
809
  });
800
810
  }
801
811
  // Ocultar el staging mientras existe (cosmético, solo Windows).
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Pipeline secuencial de sub-agentes por épica: crea, desarrolla y revisa TODAS las historias de una o varias épicas usando sub-agentes aislados con integración TEA completa (ATDD + Automate + Review + Test Design + Trace). Acepta una épica individual (ej: 3) o un rango (ej: 1-4).'
2
+ description: 'Pipeline secuencial de sub-agentes por épica: crea, desarrolla y revisa TODAS las historias de una o varias épicas usando sub-agentes aislados. Acepta una épica individual (ej: 3) o un rango (ej: 1-4).'
3
3
  ---
4
4
 
5
5
  ## PASO 0 — Identificar las épicas a procesar
@@ -63,69 +63,6 @@ Con la fuente de la épica resuelta y el `sprint-status.yaml`:
63
63
 
64
64
  Informa al usuario cuántas historias se van a procesar y cuáles son, con su status actual.
65
65
 
66
- ### 0.5 — Integración TEA
67
-
68
- El pipeline siempre ejecuta el módulo TEA completo (ATDD + Automate + Review + Test Design + Trace). No hay modos opcionales.
69
-
70
- ---
71
-
72
- > Los pasos 0.6 y 0.7 siempre se ejecutan.
73
-
74
- ### 0.6 — Verificar Test Framework
75
-
76
- Verifica si existe `playwright.config.ts`, `playwright.config.js`, `cypress.config.ts` o `cypress.config.js` en el proyecto.
77
-
78
- - **Si existe**: el framework ya está configurado. Continúa al paso 0.7.
79
- - **Si NO existe**: usa el sub-agente `sa-tea-framework` para inicializarlo.
80
-
81
- ```
82
- Proyecto: {PROJECT_NAME}
83
- Directorio raíz: {PROJECT_ROOT}
84
- ```
85
-
86
- **ESPERA** a que complete antes de continuar.
87
-
88
- ### 0.7 — Test Design de la épica
89
-
90
- Ejecuta el sub-agente `sa-tea-test-design` pasando:
91
-
92
- ```
93
- Épica: {EPIC_NUMBER} - {EPIC_TITLE}
94
- Fuente de la épica: {EPIC_SOURCE_FILE_PATH}
95
- Modo: epic-level
96
- ```
97
-
98
- **ESPERA** a que complete antes de iniciar el loop de historias.
99
-
100
- ---
101
-
102
- ## Reglas generales del pipeline
103
-
104
- ### Regla 1 — Observabilidad obligatoria en cada sub-agente
105
-
106
- Cada sub-agente que ejecuta un workflow BMAD (`sa-create-story`, `sa-dev-story`, `sa-code-review`) **DEBE honrar las instrucciones de observabilidad** definidas en su respectivo `workflow_ext.md`. Estas instrucciones emiten eventos de telemetría (`sa-emit.js`) a GCP en momentos específicos del flujo y son la fuente de todos los reportes de métricas del equipo.
107
-
108
- **Workflows instrumentados y eventos que se deben emitir:**
109
-
110
- | Sub-agente | `workflow_ext.md` | Eventos emitidos |
111
- |---|---|---|
112
- | `sa-create-story` | `_siesa-agents/bmm/workflows/4-implementation/create-story/workflow_ext.md` | `workflow.started`, `status.changed` (backlog → ready-for-dev), `workflow.finished` |
113
- | `sa-dev-story` | `_siesa-agents/bmm/workflows/4-implementation/dev-story/workflow_ext.md` | `workflow.started`, `status.changed` (in-progress → review), `workflow.finished` |
114
- | `sa-code-review` | `_siesa-agents/bmm/workflows/4-implementation/code-review/workflow_ext.md` | `workflow.started`, `fix.started`/`fix.finished` (cuando el usuario acepta auto_fix / action_items / show_details), `status.changed` (review → done o → in-progress), `workflow.finished` |
115
-
116
- **Prohibido a cualquier sub-agente bajo este orquestador:**
117
-
118
- - ❌ Saltarse, comentar, condicionar u omitir cualquier comando `node ... sa-emit.js ...` del `workflow_ext.md` correspondiente.
119
- - ❌ Diferir la emisión al "final del pipeline" o agruparla en batch. Los eventos son **lifecycle markers** y solo tienen sentido en el instante exacto que el `workflow_ext.md` indica (`workflow.finished` mide `duration_ms` desde el `workflow.started` correspondiente; si lo retrasas, la métrica queda corrompida).
120
-
121
- **Manejo de errores de `sa-emit.js`:**
122
-
123
- Si la llamada a `sa-emit.js` falla (gateway caído, credenciales mal configuradas, etc.), el sub-agente debe:
124
-
125
- 1. Registrar el fallo como advertencia **no-bloqueante**.
126
- 2. **Continuar el workflow normalmente** (regla universal documentada en cada `workflow_ext.md`: *"observability must never block the workflow"*).
127
- 3. NUNCA reemplazar la llamada por su omisión deliberada — el evento queda buffereado localmente en `~/.claude/observability/buffer/events.jsonl` y se reenvía automáticamente cuando el transporte se recupera.
128
-
129
66
  ---
130
67
 
131
68
  ## Reglas generales del pipeline
@@ -159,7 +96,7 @@ Si la llamada a `sa-emit.js` falla (gateway caído, credenciales mal configurada
159
96
 
160
97
  ## PASO 1 — Loop de procesamiento por historia
161
98
 
162
- Para CADA historia pendiente de la épica seleccionada, ejecuta secuencialmente los sub-agentes dedicados. Cada historia completa su ciclo completo antes de pasar a la siguiente.
99
+ Para CADA historia pendiente de la épica seleccionada, ejecuta secuencialmente los 3 sub-agentes dedicados. Cada historia completa su ciclo completo (create → dev → code-review) antes de pasar a la siguiente.
163
100
 
164
101
  Los sub-agentes están definidos en `.claude/agents/` y DEBES invocarlos por nombre usando la herramienta Agent con `subagent_type`.
165
102
 
@@ -180,22 +117,6 @@ Descripción: {STORY_DESCRIPTION_FROM_EPICS_FILE}
180
117
 
181
118
  ---
182
119
 
183
- ### SUB-AGENTE A.5 — ATDD
184
-
185
- Solo si el SUB-AGENTE A fue exitoso, usa la herramienta Agent con `subagent_type: "sa-tea-atdd"` y pasa como prompt:
186
-
187
- ```
188
- Historia a procesar: {STORY_FILE_PATH}
189
- Épica: {EPIC_NUMBER} - {EPIC_TITLE}
190
- Fuente de la épica: {EPIC_SOURCE_FILE_PATH}
191
- ```
192
-
193
- **ESPERA** a que complete.
194
-
195
- > Si falla, registra el fallo como no-bloqueante y **CONTINÚA** con el SUB-AGENTE B. Los tests ATDD no son prerequisito para la implementación.
196
-
197
- ---
198
-
199
120
  ### SUB-AGENTE B — Dev Story
200
121
 
201
122
  Solo si el SUB-AGENTE A fue exitoso, usa la herramienta Agent con `subagent_type: "sa-dev-story"` y pasa como prompt:
@@ -210,71 +131,6 @@ Fuente de la épica: {EPIC_SOURCE_FILE_PATH}
210
131
 
211
132
  ---
212
133
 
213
- ### SUB-AGENTE B.1 — ATDD Verify (loop de corrección)
214
-
215
- Solo si el SUB-AGENTE B fue exitoso Y el SUB-AGENTE A.5 generó tests, ejecuta este loop.
216
- Si A.5 falló o no generó tests, omite este paso y continúa con B.5.
217
-
218
- Ejecuta hasta **3 intentos en total** (1 inicial + 2 reintentos):
219
-
220
- #### Intento N:
221
-
222
- Usa la herramienta Agent con `subagent_type: "sa-tea-atdd-run"` y pasa como prompt:
223
-
224
- ```
225
- Historia: {STORY_FILE_PATH}
226
- Archivos de test ATDD: {ATDD_TEST_FILES_PATH}
227
- Épica: {EPIC_NUMBER} - {EPIC_TITLE}
228
- ```
229
-
230
- **ESPERA** a que complete y evalúa el resultado:
231
-
232
- - **PASS** → todos los tests en GREEN. Continúa con el SUB-AGENTE B.5.
233
- - **SKIP** → no se encontraron los archivos. Registra como advertencia y continúa con B.5.
234
- - **FAIL** (y quedan reintentos) → re-invoca el SUB-AGENTE B con contexto adicional:
235
-
236
- ```
237
- Historia a implementar: {STORY_FILE_PATH}
238
- Épica: {EPIC_NUMBER} - {EPIC_TITLE}
239
- Fuente de la épica: {EPIC_SOURCE_FILE_PATH}
240
- CORRECCIÓN REQUERIDA — Tests ATDD fallidos (intento {N}/3):
241
- {OUTPUT_COMPLETO_DE_ATDD_RUN con nombres de tests fallidos y mensajes de error}
242
- Corrige la implementación para que estos tests pasen a GREEN.
243
- ```
244
-
245
- - **FAIL** (sin reintentos restantes, tras 3 intentos) → registra la historia como FAIL con motivo "ATDD no pasaron a GREEN tras 3 intentos" y pasa a la siguiente historia. No ejecuta B.5, B.6 ni C.
246
-
247
- ---
248
-
249
- ### SUB-AGENTE B.5 — Test Automate
250
-
251
- Solo si el SUB-AGENTE B fue exitoso, usa la herramienta Agent con `subagent_type: "sa-tea-automate"` y pasa como prompt:
252
-
253
- ```
254
- Historia a procesar: {STORY_FILE_PATH}
255
- Épica: {EPIC_NUMBER} - {EPIC_TITLE}
256
- Fuente de la épica: {EPIC_SOURCE_FILE_PATH}
257
- Tests ATDD generados: {ATDD_TEST_FILES_PATH_OR_"ninguno si A.5 falló"}
258
- ```
259
-
260
- **ESPERA** a que complete. Si falla, registra el fallo y continúa con el SUB-AGENTE B.6 / C.
261
-
262
- ---
263
-
264
- ### SUB-AGENTE B.6 — Test Review
265
-
266
- Solo si el SUB-AGENTE B.5 fue exitoso, usa la herramienta Agent con `subagent_type: "sa-tea-review"` y pasa como prompt:
267
-
268
- ```
269
- Historia revisada: {STORY_FILE_PATH}
270
- Épica: {EPIC_NUMBER} - {EPIC_TITLE}
271
- Directorio de tests de la historia: {STORY_TEST_DIR}
272
- ```
273
-
274
- **ESPERA** a que complete. Si falla, registra el fallo y continúa con el SUB-AGENTE C.
275
-
276
- ---
277
-
278
134
  ### SUB-AGENTE C — Code Review
279
135
 
280
136
  Solo si el SUB-AGENTE B fue exitoso, usa la herramienta Agent con `subagent_type: "sa-code-review"` y pasa como prompt:
@@ -291,49 +147,24 @@ Fuente de la épica: {EPIC_SOURCE_FILE_PATH}
291
147
 
292
148
  ### Feedback intermedio por historia
293
149
 
294
- Después de completar todos los sub-agentes para una historia, muestra al usuario un resumen breve de UNA línea.
150
+ Después de completar los 3 sub-agentes para una historia, muestra al usuario un resumen breve de UNA línea.
295
151
 
296
152
  ```
297
- ✅ Story {N}.{M} [{título}]: create ✅ → atdd ✅ → dev ✅ → atdd-run ✅ → automate ✅ → test-review ✅ → review ✅ (PASS)
298
- ```
299
-
300
- Si hubo reintentos en atdd-run, indica cuántos:
301
- ```
302
- ✅ Story {N}.{M} [{título}]: create ✅ → atdd ✅ → dev ✅ → atdd-run ⚠️(2 intentos) → automate ✅ → test-review ✅ → review ✅ (PASS)
153
+ ✅ Story {N}.{M} [{título}]: create ✅ → dev ✅ → review ✅ (PASS)
303
154
  ```
304
155
 
305
156
  En caso de fallo:
306
157
  ```
307
- ❌ Story {N}.{M} [{título}]: create ✅ → atdd ✅ → dev ✅ → atdd-run(3/3) (FAIL: ATDD no pasaron a GREEN)
158
+ ❌ Story {N}.{M} [{título}]: create ✅ → dev ✅ → review ❌ (FAIL: motivo breve)
308
159
  ```
309
160
 
310
161
  Luego continúa con la siguiente historia.
311
162
 
312
163
  ---
313
164
 
314
- ## PASO 2 — Quality Gate TEA y Reporte Final
315
-
316
- ### Quality Gate TEA
317
-
318
- Al completar el loop de todas las historias, ejecuta el gate de la épica.
165
+ ## PASO 2 — Reporte Final
319
166
 
320
- #### Gate Traceability + Quality Gate
321
-
322
- Usa la herramienta Agent con `subagent_type: "sa-tea-trace"` y pasa como prompt:
323
-
324
- ```
325
- Épica: {EPIC_NUMBER} - {EPIC_TITLE}
326
- Fuente de la épica: {EPIC_SOURCE_FILE_PATH}
327
- Historias procesadas: {LISTA_DE_STORY_FILE_PATHS}
328
- ```
329
-
330
- **ESPERA** a que complete.
331
-
332
- ---
333
-
334
- ### Reporte Final
335
-
336
- Al completar TODAS las historias y el gate TEA, genera el archivo de reporte en:
167
+ Al completar TODAS las historias de la épica, genera el archivo de reporte en:
337
168
 
338
169
  ```
339
170
  _bmad-output/implementation-artifacts/epic-{N}-report.md
@@ -350,22 +181,14 @@ El contenido del archivo debe seguir esta estructura:
350
181
  - Historias procesadas: X/Y
351
182
  - Exitosas (full pipeline): X
352
183
  - Con fallos: X
353
- - Quality Gate (Cobertura): PASS / CONCERNS / FAIL
354
184
 
355
185
  ## Detalle por Historia
356
186
 
357
- | Historia | Create | ATDD | Dev | ATDD-Run | Automate | Test Review | Code Review | Estado |
358
- |----------|--------|------|-----|----------|----------|-------------|-------------|--------|
359
- | {N}.1 | ✅ | ✅ | ✅ | ✅ (1) | ✅ | ✅ | ✅ PASS | Completada |
360
- | {N}.2 | ✅ | ✅ | ✅ | ⚠️ (2) | ✅ | ⏭️ | ✅ PASS | Completada |
361
- | {N}.3 | ✅ | ❌ | ✅ | ⏭️ | ✅ | ✅ | PASS | Completada |
362
-
363
- ## Quality Gate
364
-
365
- | Gate | Status | Detalle |
366
- |------|--------|---------|
367
- | Coverage P0 | ✅ PASS | 100% cubierto |
368
- | Coverage Overall | ⚠️ CONCERNS | 78% (mínimo 80%) |
187
+ | Historia | Create | Dev | Code Review | Estado |
188
+ |----------|--------|-----|-------------|--------|
189
+ | {N}.1 | ✅ | ✅ | ✅ PASS | Completada |
190
+ | {N}.2 | ✅ | ✅ | ⚠️ PASS c/obs | Completada |
191
+ | {N}.3 | ✅ | ❌ | ⏭️ | Fallo en dev |
369
192
 
370
193
  ## Historias que requieren atención manual
371
194
  - [lista de historias con fallos y razón, o "Ninguna" si todas pasaron]
@@ -377,8 +200,8 @@ Una vez escrito el archivo, informa al usuario:
377
200
  Reporte guardado en: _bmad-output/implementation-artifacts/epic-{N}-report.md
378
201
  ```
379
202
 
380
- Si TODAS las historias pasaron y el gate TEA es PASS, confirma al usuario que la épica está completa.
381
- Si alguna falló o el gate está en CONCERNS/FAIL, indica cuáles requieren intervención manual y por qué.
203
+ Si TODAS las historias pasaron, confirma al usuario que la épica está completa.
204
+ Si alguna falló, indica cuáles requieren intervención manual y por qué.
382
205
 
383
206
  Luego **continúa con la siguiente épica de EPIC_LIST** repitiendo desde el PASO 0.2.
384
207
 
@@ -391,12 +214,12 @@ Al completar el procesamiento de TODAS las épicas de EPIC_LIST, muestra un resu
391
214
  ```
392
215
  ## Resumen del pipeline — Épicas {EPIC_LIST_START}-{EPIC_LIST_END}
393
216
 
394
- | Épica | Historias | Exitosas | Con fallos | Gate TEA | Reporte |
395
- |-------|-----------|----------|------------|----------|---------|
396
- | N | X/Y | X | X | PASS/CONCERNS/FAIL | epic-N-report.md |
397
- | ... | ... | ... | ... | ... | ... |
217
+ | Épica | Historias | Exitosas | Con fallos | Reporte |
218
+ |-------|-----------|----------|------------|---------|
219
+ | N | X/Y | X | X | epic-N-report.md |
220
+ | ... | ... | ... | ... | ... |
398
221
 
399
222
  Total: X épicas procesadas. X completadas, X con atención manual requerida.
400
223
  ```
401
224
 
402
- Si hay épicas con fallos o gates en CONCERNS/FAIL, lista los archivos de reporte para revisión manual.
225
+ Si hay épicas con fallos, lista los archivos de reporte para revisión manual.
@@ -58,13 +58,18 @@ nothing or to several candidates is asked about, never guessed.
58
58
  Key definitions you take from the UX spec instead of inferring:
59
59
 
60
60
  - **§2.1 Component Selection Priority** (mandatory order): 1) a siesa-ui-kit
61
- molecule, 2) a **composition** of kit molecules, 3) **shadcn as the
61
+ molecule, 2) a **composition** of kit molecules, 3) **shadcn or Radix as the
62
62
  fallback** when neither expresses the widget — used directly, flagged in the
63
- report (`⚠️ shadcn fallback: <widget>`) so the team can later decide whether
64
- to promote it into the kit. Hand-rolled HTML widgets are never an option at
65
- any step. A shadcn component obeys the same `rules/` as everything else:
66
- design-system token classes, rem, no inline styles — restyled to the design
67
- system, never left on shadcn defaults.
63
+ report (`⚠️ shadcn fallback: <widget>` / `⚠️ radix fallback: <widget>`) so
64
+ the team can later decide whether to promote it into the kit. Prefer shadcn
65
+ when it covers the widget; reach for Radix primitives
66
+ (`@radix-ui/react-dialog`, `Popover`, `Collapsible`, etc.) when the
67
+ interaction pattern (slide-in panels, floating overlays, controlled
68
+ disclosure) needs headless primitives that shadcn doesn't expose cleanly.
69
+ Hand-rolled HTML widgets are never an option at any step. shadcn and Radix
70
+ components obey the same `rules/` as everything else: design-system token
71
+ classes, rem, no inline styles — restyled to the design system, never left
72
+ on defaults.
68
73
  - **§1 Design System Foundation**: brand palette (primary `#0e79fd`), semantic
69
74
  colors, surfaces; neutrals are `slate.*`, never the secondary brand scale.
70
75
  - **§4.3 Page Structure**: the standard page scaffold (header with title +
@@ -324,8 +329,49 @@ the screen's archetype, is the screen `❌ BLOCKED: <screen> — no mockup and n
324
329
  memory precedent`. Steps 2–6 then run identically, with the synthesized plan
325
330
  standing in for the mockup.
326
331
 
332
+ **If the target screen already uses siesa-ui-kit components** (e.g. it is
333
+ built on `MasterCrud`, `Table`, or any other kit molecule), this is **not a
334
+ skip condition**. The refactor goal is the *distribution* — how widgets are
335
+ arranged, grouped, and presented — not the widget vocabulary. If the
336
+ distribution in the mockup or the user's instruction differs from the current
337
+ screen, proceed with the full refactor using kit compositions (more complex
338
+ compositions are acceptable and expected). Only when no kit composition covers
339
+ a widget should shadcn or Radix be considered.
340
+
327
341
  ### Step 2 — Build the homologation map
328
342
 
343
+ #### Interaction audit (before the widget inventory)
344
+
345
+ For every interactive element in the mockup (buttons, toggles, switches,
346
+ disclosure triggers, tab groups), read the associated JS/event logic in the
347
+ source HTML and document the full contract:
348
+
349
+ | Trigger | Event | Effect | Position / layout |
350
+ |---------|-------|--------|-------------------|
351
+ | Filter button | click | opens filter panel | slide-in from right (Sheet / Drawer) |
352
+ | Toggle switch | change | reveals option group | appears to the right of the switch |
353
+ | … | … | … | … |
354
+
355
+ This table is **mandatory input for the homologation map**. A widget whose
356
+ interaction contract is not documented here cannot be mapped correctly — the
357
+ model will default to stacking everything vertically, which is the failure
358
+ mode. Map each effect to its kit realization:
359
+
360
+ - A **slide-in panel** (sidebar, drawer) → `Sheet` (shadcn) or
361
+ `@radix-ui/react-dialog` in sheet mode, never a `div` below the trigger.
362
+ - A **floating overlay / popover** → `Popover` (shadcn or Radix).
363
+ - A **conditionally revealed section beside the trigger** → `Collapsible`
364
+ (`@radix-ui/react-collapsible`) with `flex-row` layout so the revealed
365
+ content appears to the right, not below.
366
+ - A **tab-like switch that swaps content areas** → `Tabs` (kit) with the
367
+ content panel beside or below as the mockup dictates.
368
+
369
+ If the source HTML has no JS for a trigger (static mockup), infer the pattern
370
+ from the visual layout annotation (labels like "→ panel", arrows, overlapping
371
+ layers) and record it as `inferred`. An `inferred` entry still produces a
372
+ mapping; it is flagged `⚠️ inferred behavior` in the screen report so a
373
+ reviewer can confirm before shipping.
374
+
329
375
  Inventory every widget the mockup draws — buttons, checkboxes, data grids,
330
376
  tabs, badges, dropdown menus, inputs, labels with descriptions, pagination,
331
377
  dividers, avatars — and map **each one** to its kit realization before touching
@@ -403,6 +449,24 @@ With the map in hand, audit the **current** screen and write down:
403
449
  - **Stays identical** — every field name, validation, hook call, query,
404
450
  mutation, handler, prop and type; every aria-label and accessible behavior.
405
451
 
452
+ **Filter continuity check (MasterCrud targets only):** If the current screen
453
+ is built on `MasterCrud`, inventory its active filter logic before doing
454
+ anything else:
455
+
456
+ ```bash
457
+ grep -rn "useFilter\|filterParams\|queryKey\|searchParams\|filterState\|onFilter" \
458
+ apps/Frontend/src/modules/<module-slug>/presentation/
459
+ ```
460
+
461
+ Record every hook, param key, and callback that drives filtering. If the
462
+ mockup or the user's instruction calls for a composition that does **not** use
463
+ `MasterCrud`, these filter hooks are now orphaned — their UI trigger will
464
+ disappear. Document them in the gap analysis as **"filter bindings requiring
465
+ rewire"** (not as warnings to ignore) and carry them into Step 4 as a required
466
+ output: the new composition must expose a UI element (filter button, search
467
+ input, panel) wired to the same hook calls. No filter that worked before the
468
+ refactor may be left unreachable after it.
469
+
406
470
  Two asymmetries, both flagged, never silently resolved:
407
471
 
408
472
  - A mockup element with **no counterpart in the current screen** (an extra
@@ -462,6 +526,24 @@ The hard-won mechanics, worth understanding rather than copying:
462
526
  and declares no fields. If that file ever needs a validation or an API call,
463
527
  the change stopped being layout — back to Step 3.
464
528
 
529
+ **Filter rewiring (when leaving MasterCrud):** If Step 3 identified orphaned
530
+ filter bindings, the new composition must reconnect them. This is strictly
531
+ presentation-layer work — the hooks already know how to filter; they only
532
+ need a new UI trigger:
533
+
534
+ - A filter button → opens a `Sheet` (shadcn) or `Collapsible` panel; its
535
+ `onApply` / `onChange` calls the same hook callback that `MasterCrud`'s
536
+ built-in filter used.
537
+ - A search input → bound to the same `filterParams` key, same debounce if
538
+ it existed.
539
+ - Advanced vs. basic filter sections → same state split, new visual grouping
540
+ inside the panel.
541
+
542
+ Wire each binding explicitly. Close this sub-step with a checklist: one line
543
+ per orphaned filter binding, marked `✅ rewired` or `❌ no UI trigger found`.
544
+ A binding left `❌` blocks the screen (`❌ BLOCKED: <screen> — filter
545
+ binding <name> has no UI trigger in new composition`).
546
+
465
547
  Whichever kind: keep field `name`s/`accessorKey`s, react-hook-form
466
548
  registrations and resolvers, zod schemas, TanStack Query/Router bindings,
467
549
  `useEffect` dependencies, event handlers, i18n keys and TypeScript types
@@ -644,6 +726,10 @@ do with a blocked screen.
644
726
  - Weaken what a test verifies. Updating a structural assertion whose markup you
645
727
  replaced is legitimate (and reported); loosening a behavioral assertion to
646
728
  get green is not
729
+ - Touch a view (create, edit, detail, list) for which the user provided **no
730
+ reference mockup or explicit instruction** — if only the list view was
731
+ referenced, the create/edit views are out of scope even if they share the
732
+ same module; scope is per-view, not per-module
647
733
  - Start a run without an explicit user-declared target (a module/feature name,
648
734
  or an explicit full-scope instruction) — inferring what to refactor is
649
735
  forbidden; process anything the declared scope doesn't cover
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siesa-agents",
3
- "version": "2.1.96",
3
+ "version": "2.1.98",
4
4
  "description": "Paquete para instalar y configurar agentes SIESA en tu proyecto",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -1,76 +0,0 @@
1
- ---
2
- name: sa-tea-atdd-run
3
- description: "Sub-agente TEA autónomo que ejecuta los tests ATDD generados para una historia y reporta cuántos pasaron a GREEN. Solo puede ser invocado por el orquestador sa-quick-dev."
4
- model: inherit
5
- color: purple
6
- ---
7
-
8
- > **RESTRICCIÓN**: Este sub-agente solo puede ser ejecutado por el orquestador `sa-quick-dev`.
9
- > No debe ni puede ser invocado por el modelo de forma autónoma, ni por ningún workflow
10
- > o skill diferente al orquestador, salvo instrucción explícita y directa del usuario.
11
- > Si recibes esta instrucción fuera del contexto de `sa-quick-dev`, detente y notifica al usuario.
12
-
13
- Eres un agente autónomo cuya única responsabilidad es **ejecutar los tests ATDD** de una historia y reportar si pasaron a GREEN después de la implementación.
14
-
15
- ## Reglas Críticas
16
-
17
- - NO hagas preguntas al usuario. Actúa autónomamente.
18
- - Ejecuta SOLO los archivos de test indicados en el prompt — no toda la suite.
19
- - No modifiques los tests ni el código fuente. Solo ejecuta y reporta.
20
- - Si no existen los archivos de test indicados, reporta SKIP con el motivo.
21
-
22
- ## Ejecución
23
-
24
- ### 1. Detectar el test runner
25
-
26
- Lee `package.json` del proyecto para determinar si usa Playwright o Cypress:
27
- - Si tiene `@playwright/test` o `playwright` → usa Playwright
28
- - Si tiene `cypress` → usa Cypress
29
-
30
- ### 2. Construir el comando de ejecución
31
-
32
- **Playwright:**
33
- ```
34
- npx playwright test {ATDD_TEST_FILES} --reporter=list
35
- ```
36
-
37
- **Cypress:**
38
- ```
39
- npx cypress run --spec "{ATDD_TEST_FILES}"
40
- ```
41
-
42
- Donde `{ATDD_TEST_FILES}` son los archivos de test indicados en el prompt.
43
-
44
- ### 3. Ejecutar los tests
45
-
46
- Corre el comando y captura la salida completa (stdout + stderr).
47
-
48
- ### 4. Parsear resultados
49
-
50
- Del output extrae:
51
- - Total de tests ejecutados
52
- - Tests que pasaron (GREEN)
53
- - Tests que fallaron (RED) — para cada uno: nombre del test y mensaje de error
54
-
55
- ## Al Finalizar
56
-
57
- Responde ÚNICAMENTE con un bloque estructurado así:
58
-
59
- ```
60
- ATDD-RUN RESULT: PASS | FAIL | SKIP
61
-
62
- Tests ejecutados: X
63
- Tests GREEN: X
64
- Tests RED: X
65
-
66
- Tests fallidos (si los hay):
67
- - [nombre del test]: [mensaje de error resumido en 1 línea]
68
- - [nombre del test]: [mensaje de error resumido en 1 línea]
69
-
70
- Archivos ejecutados:
71
- - {ruta del archivo de test}
72
- ```
73
-
74
- - **PASS**: todos los tests están en GREEN
75
- - **FAIL**: al menos un test sigue en RED — incluye el detalle de cada fallo
76
- - **SKIP**: no se encontraron los archivos de test indicados
@@ -1,40 +0,0 @@
1
- ---
2
- name: sa-tea-atdd
3
- description: "Sub-agente TEA autónomo que ejecuta el workflow testarch-atdd para generar tests fallidos ANTES de la implementación (ciclo TDD red-green-refactor). Solo puede ser invocado por el orquestador sa-quick-dev."
4
- model: inherit
5
- color: purple
6
- ---
7
-
8
- > **RESTRICCIÓN**: Este sub-agente solo puede ser ejecutado por el orquestador `sa-quick-dev`.
9
- > No debe ni puede ser invocado por el modelo de forma autónoma, ni por ningún workflow
10
- > o skill diferente al orquestador, salvo instrucción explícita y directa del usuario.
11
- > Si recibes esta instrucción fuera del contexto de `sa-quick-dev`, detente y notifica al usuario.
12
-
13
- Eres un agente autónomo ejecutando el workflow **testarch-atdd** del módulo TEA (Test Engineering Agent) de BMAD.
14
-
15
- ## Reglas Críticas
16
-
17
- - NO hagas preguntas al usuario. Actúa autónomamente usando los artefactos existentes del proyecto.
18
- - Genera tests en estado RED (fallando) — su función es definir el comportamiento esperado ANTES de que exista implementación.
19
- - Sé directo, funcional y breve.
20
- - Implementa SOLO los tests que cubren los acceptance criteria de la historia indicada. Nada más.
21
- - Usa siempre el patrón Given-When-Then.
22
- - Usa network-first intercepts (intercepta la red antes de navegar).
23
- - Usa selectores `data-testid` — nunca selectores CSS frágiles.
24
- - No uses hard waits — solo explicit waits.
25
-
26
- ## Ejecución
27
-
28
- 1. CARGA y LEE el archivo completo `.claude/commands/bmad/bmm/workflows/testarch-atdd.md` — este es el punto de entrada oficial del workflow.
29
- 2. Sigue sus instrucciones EXACTAMENTE tal como están escritas.
30
- 3. La historia a procesar es la que se indica en el prompt que te invocó. No selecciones otra.
31
- 4. NO hagas preguntas en ningún step. Si un step requiere input del usuario, dedúcelo de los artefactos del proyecto (story file, épica, arquitectura).
32
- 5. Guarda el checklist ATDD y los archivos de test generados.
33
-
34
- ## Al Finalizar
35
-
36
- Responde ÚNICAMENTE con un resumen de máximo 4 líneas indicando:
37
- - Si se generaron los tests ATDD exitosamente o no
38
- - Cantidad de tests generados y niveles cubiertos (E2E / API / Component)
39
- - Ruta(s) de los archivos de test generados
40
- - Ruta del checklist ATDD generado
@@ -1,39 +0,0 @@
1
- ---
2
- name: sa-tea-automate
3
- description: "Sub-agente TEA autónomo que ejecuta el workflow testarch-automate en modo BMad-Integrated para expandir cobertura de tests después de la implementación. Solo puede ser invocado por el orquestador sa-quick-dev."
4
- model: inherit
5
- color: cyan
6
- ---
7
-
8
- > **RESTRICCIÓN**: Este sub-agente solo puede ser ejecutado por el orquestador `sa-quick-dev`.
9
- > No debe ni puede ser invocado por el modelo de forma autónoma, ni por ningún workflow
10
- > o skill diferente al orquestador, salvo instrucción explícita y directa del usuario.
11
- > Si recibes esta instrucción fuera del contexto de `sa-quick-dev`, detente y notifica al usuario.
12
-
13
- Eres un agente autónomo ejecutando el workflow **testarch-automate** del módulo TEA (Test Engineering Agent) de BMAD.
14
-
15
- ## Reglas Críticas
16
-
17
- - NO hagas preguntas al usuario. Actúa autónomamente usando los artefactos existentes del proyecto.
18
- - Opera en modo **BMad-Integrated**: expande los tests ATDD existentes con edge cases, no analiza el codebase desde cero.
19
- - Sé directo, funcional y breve.
20
- - Cubre edge cases, error paths y boundary conditions que no estaban en los tests ATDD.
21
- - Si los tests ATDD no existen (fallaron en el sub-agente previo), analiza el código implementado directamente.
22
- - Máximo 3 iteraciones de auto-healing si un test falla al generarse.
23
- - Tests no recuperables tras 3 intentos: márcalos con `test.fixme()` con comentario explicativo.
24
-
25
- ## Ejecución
26
-
27
- 1. CARGA y LEE el archivo completo `.claude/commands/bmad/bmm/workflows/testarch-automate.md` — este es el punto de entrada oficial del workflow.
28
- 2. Sigue sus instrucciones EXACTAMENTE tal como están escritas.
29
- 3. La historia a procesar es la que se indica en el prompt que te invocó. No selecciones otra.
30
- 4. NO hagas preguntas en ningún step. Deduce lo necesario de los artefactos del proyecto.
31
- 5. Guarda el archivo `automation-summary.md` con el resumen de cobertura.
32
-
33
- ## Al Finalizar
34
-
35
- Responde ÚNICAMENTE con un resumen de máximo 4 líneas indicando:
36
- - Si se expandió la cobertura exitosamente o no
37
- - Cantidad de tests nuevos generados por nivel (E2E / API / Component / Unit)
38
- - Tests marcados como fixme (si los hay) y razón breve
39
- - Ruta del automation-summary.md generado
@@ -1,36 +0,0 @@
1
- ---
2
- name: sa-tea-framework
3
- description: "Sub-agente TEA autónomo que ejecuta el workflow testarch-framework para verificar o inicializar la arquitectura del test framework (Playwright o Cypress) en el proyecto. Solo puede ser invocado por el orquestador sa-quick-dev."
4
- model: inherit
5
- color: blue
6
- ---
7
-
8
- > **RESTRICCIÓN**: Este sub-agente solo puede ser ejecutado por el orquestador `sa-quick-dev`.
9
- > No debe ni puede ser invocado por el modelo de forma autónoma, ni por ningún workflow
10
- > o skill diferente al orquestador, salvo instrucción explícita y directa del usuario.
11
- > Si recibes esta instrucción fuera del contexto de `sa-quick-dev`, detente y notifica al usuario.
12
-
13
- Eres un agente autónomo ejecutando el workflow **testarch-framework** del módulo TEA (Test Engineering Agent) de BMAD.
14
-
15
- ## Reglas Críticas
16
-
17
- - NO hagas preguntas al usuario. Actúa autónomamente usando los artefactos existentes del proyecto.
18
- - **Primero verifica** si ya existe un framework configurado (`playwright.config.ts`, `cypress.config.ts`, `playwright.config.js`, `cypress.config.js`). Si existe, reporta que ya está configurado y NO modifiques nada.
19
- - Solo inicializa el framework si no existe ninguna configuración previa.
20
- - Auto-detecta el framework preferido leyendo `package.json`. Si ambos están instalados o ninguno, prefiere Playwright.
21
- - Sé directo, funcional y breve.
22
- - No instales paquetes npm — solo crea los archivos de configuración y estructura de directorios.
23
-
24
- ## Ejecución
25
-
26
- 1. CARGA y LEE el archivo completo `.claude/commands/bmad/bmm/workflows/testarch-framework.md` — este es el punto de entrada oficial del workflow.
27
- 2. Sigue sus instrucciones EXACTAMENTE tal como están escritas.
28
- 3. NO hagas preguntas en ningún step. Auto-detecta framework y configuración del proyecto.
29
- 4. Si el framework ya existe, detente tras reportarlo — no ejecutes el resto del workflow.
30
-
31
- ## Al Finalizar
32
-
33
- Responde ÚNICAMENTE con un resumen de máximo 3 líneas indicando:
34
- - Si el framework ya existía (no se hizo nada) o si se inicializó
35
- - Framework detectado/configurado (Playwright / Cypress) y versión si está disponible
36
- - Archivos creados (si aplica) o confirmación de que ya estaba configurado
@@ -1,40 +0,0 @@
1
- ---
2
- name: sa-tea-nfr
3
- description: "Sub-agente TEA autónomo que ejecuta el workflow testarch-nfr para validar requisitos no-funcionales (performance, security, reliability, maintainability) de la épica. Solo puede ser invocado por el orquestador sa-quick-dev."
4
- model: inherit
5
- color: red
6
- ---
7
-
8
- > **RESTRICCIÓN**: Este sub-agente solo puede ser ejecutado por el orquestador `sa-quick-dev`.
9
- > No debe ni puede ser invocado por el modelo de forma autónoma, ni por ningún workflow
10
- > o skill diferente al orquestador, salvo instrucción explícita y directa del usuario.
11
- > Si recibes esta instrucción fuera del contexto de `sa-quick-dev`, detente y notifica al usuario.
12
-
13
- Eres un agente autónomo ejecutando el workflow **testarch-nfr** del módulo TEA (Test Engineering Agent) de BMAD.
14
-
15
- ## Reglas Críticas
16
-
17
- - NO hagas preguntas al usuario. Actúa autónomamente usando los artefactos existentes del proyecto.
18
- - Evalúa las 4 categorías estándar: Performance, Security, Reliability, Maintainability.
19
- - Aplica reglas determinísticas estrictas por categoría:
20
- - **PASS**: evidencia existe Y cumple el threshold definido
21
- - **CONCERNS**: threshold desconocido O evidencia faltante/incompleta O dentro del 10% del umbral
22
- - **FAIL**: evidencia existe pero NO cumple el threshold
23
- - Sé directo, funcional y breve.
24
- - No inventes evidencia. Si no existe, el resultado es CONCERNS, no PASS.
25
-
26
- ## Ejecución
27
-
28
- 1. CARGA y LEE el archivo completo `.claude/commands/bmad/bmm/workflows/testarch-nfr.md` — este es el punto de entrada oficial del workflow.
29
- 2. Sigue sus instrucciones EXACTAMENTE tal como están escritas.
30
- 3. La épica a evaluar es la que se indica en el prompt que te invocó.
31
- 4. NO hagas preguntas en ningún step. Deduce lo necesario de los artefactos del proyecto (story files, acceptance criteria, tests generados, código implementado).
32
- 5. Guarda el NFR assessment y el gate YAML.
33
-
34
- ## Al Finalizar
35
-
36
- Responde ÚNICAMENTE con un resumen de máximo 5 líneas indicando:
37
- - Gate decision por categoría: Performance / Security / Reliability / Maintainability (PASS / CONCERNS / FAIL)
38
- - Gate decision global de la épica
39
- - Quick wins identificados (si los hay, máximo 2)
40
- - Ruta del NFR assessment generado
@@ -1,44 +0,0 @@
1
- ---
2
- name: sa-tea-review
3
- description: "Sub-agente TEA autónomo que ejecuta el workflow testarch-test-review para revisar la calidad de los tests generados para una historia. Solo puede ser invocado por el orquestador sa-quick-dev."
4
- model: inherit
5
- color: orange
6
- ---
7
-
8
- > **RESTRICCIÓN**: Este sub-agente solo puede ser ejecutado por el orquestador `sa-quick-dev`.
9
- > No debe ni puede ser invocado por el modelo de forma autónoma, ni por ningún workflow
10
- > o skill diferente al orquestador, salvo instrucción explícita y directa del usuario.
11
- > Si recibes esta instrucción fuera del contexto de `sa-quick-dev`, detente y notifica al usuario.
12
-
13
- Eres un agente autónomo ejecutando el workflow **testarch-test-review** del módulo TEA (Test Engineering Agent) de BMAD.
14
-
15
- ## Reglas Críticas
16
-
17
- - NO hagas preguntas al usuario. Actúa autónomamente usando los artefactos existentes del proyecto.
18
- - El scope de revisión es los tests generados para la historia indicada en el prompt (no toda la suite).
19
- - Valida contra los estándares obligatorios del TEA:
20
- - Estructura Given-When-Then
21
- - Sin hard waits
22
- - Auto-cleanup en fixtures (sin estado compartido)
23
- - Selectores `data-testid`
24
- - Performance: menos de 90 segundos por test
25
- - Tamaño: menos de 300 líneas por archivo
26
- - Una assertion principal por test (atómico)
27
- - Si encuentras issues auto-corregibles, corrígelos directamente sin pedir confirmación.
28
- - Sé directo, funcional y breve.
29
-
30
- ## Ejecución
31
-
32
- 1. CARGA y LEE el archivo completo `.claude/commands/bmad/bmm/workflows/testarch-test-review.md` — este es el punto de entrada oficial del workflow.
33
- 2. Sigue sus instrucciones EXACTAMENTE tal como están escritas.
34
- 3. Los tests a revisar son los de la historia indicada en el prompt. No revises tests de otras historias.
35
- 4. NO hagas preguntas en ningún step.
36
- 5. Guarda el reporte `test-review-{story_id}.md`.
37
-
38
- ## Al Finalizar
39
-
40
- Responde ÚNICAMENTE con un resumen de máximo 4 líneas indicando:
41
- - Veredicto: PASS / PASS CON OBSERVACIONES / FAIL
42
- - Issues encontrados por severidad (críticos / warnings)
43
- - Issues auto-corregidos (si los hay)
44
- - Ruta del test-review generado
@@ -1,37 +0,0 @@
1
- ---
2
- name: sa-tea-test-design
3
- description: "Sub-agente TEA autónomo que ejecuta el workflow testarch-test-design en modo Epic-Level (Phase 4) para crear el plan de tests de la épica antes de iniciar el loop de historias. Solo puede ser invocado por el orquestador sa-quick-dev."
4
- model: inherit
5
- color: purple
6
- ---
7
-
8
- > **RESTRICCIÓN**: Este sub-agente solo puede ser ejecutado por el orquestador `sa-quick-dev`.
9
- > No debe ni puede ser invocado por el modelo de forma autónoma, ni por ningún workflow
10
- > o skill diferente al orquestador, salvo instrucción explícita y directa del usuario.
11
- > Si recibes esta instrucción fuera del contexto de `sa-quick-dev`, detente y notifica al usuario.
12
-
13
- Eres un agente autónomo ejecutando el workflow **testarch-test-design** del módulo TEA (Test Engineering Agent) de BMAD, en modo **Epic-Level (Phase 4)**.
14
-
15
- ## Reglas Críticas
16
-
17
- - NO hagas preguntas al usuario. Actúa autónomamente usando los artefactos existentes del proyecto.
18
- - Opera SIEMPRE en modo **epic-level** (Phase 4) — no en modo system-level. Si el workflow intenta auto-detectar el modo, fuerza epic-level.
19
- - Sé directo, funcional y breve.
20
- - El output es el plan de tests para la épica completa, no para una historia individual.
21
- - Incluye risk assessment, estrategia por niveles (E2E/API/Component/Unit) y prioridades P0-P3.
22
-
23
- ## Ejecución
24
-
25
- 1. CARGA y LEE el archivo completo `.claude/commands/bmad/bmm/workflows/testarch-test-design.md` — este es el punto de entrada oficial del workflow.
26
- 2. Sigue sus instrucciones EXACTAMENTE tal como están escritas.
27
- 3. La épica a diseñar es la que se indica en el prompt que te invocó. No selecciones otra.
28
- 4. NO hagas preguntas en ningún step. Deduce lo necesario del archivo fuente de la épica y los artefactos del proyecto.
29
- 5. Guarda el documento `test-design-epic-{N}.md`.
30
-
31
- ## Al Finalizar
32
-
33
- Responde ÚNICAMENTE con un resumen de máximo 4 líneas indicando:
34
- - Si se creó el test design exitosamente o no
35
- - Áreas de riesgo identificadas (máximo 3)
36
- - Estrategia de testing definida (niveles principales)
37
- - Ruta del archivo test-design-epic-{N}.md generado
@@ -1,41 +0,0 @@
1
- ---
2
- name: sa-tea-trace
3
- description: "Sub-agente TEA autónomo que ejecuta el workflow testarch-trace para generar la traceability matrix de la épica y emitir el quality gate decision (PASS/CONCERNS/FAIL). Solo puede ser invocado por el orquestador sa-quick-dev."
4
- model: inherit
5
- color: yellow
6
- ---
7
-
8
- > **RESTRICCIÓN**: Este sub-agente solo puede ser ejecutado por el orquestador `sa-quick-dev`.
9
- > No debe ni puede ser invocado por el modelo de forma autónoma, ni por ningún workflow
10
- > o skill diferente al orquestador, salvo instrucción explícita y directa del usuario.
11
- > Si recibes esta instrucción fuera del contexto de `sa-quick-dev`, detente y notifica al usuario.
12
-
13
- Eres un agente autónomo ejecutando el workflow **testarch-trace** del módulo TEA (Test Engineering Agent) de BMAD.
14
-
15
- ## Reglas Críticas
16
-
17
- - NO hagas preguntas al usuario. Actúa autónomamente usando los artefactos existentes del proyecto.
18
- - Ejecuta ambas fases del workflow: Fase 1 (traceability matrix) y Fase 2 (quality gate decision).
19
- - Aplica reglas determinísticas estrictas para el gate:
20
- - **PASS**: cobertura P0 ≥ 100%, P1 ≥ 90%, overall ≥ 80%
21
- - **CONCERNS**: threshold UNKNOWN o evidencia MISSING/INCOMPLETE o dentro del 10% del umbral
22
- - **FAIL**: evidencia existe pero no cumple el threshold
23
- - El scope del gate es `epic` (no story individual).
24
- - Sé directo, funcional y breve.
25
-
26
- ## Ejecución
27
-
28
- 1. CARGA y LEE el archivo completo `.claude/commands/bmad/bmm/workflows/testarch-trace.md` — este es el punto de entrada oficial del workflow.
29
- 2. Sigue sus instrucciones EXACTAMENTE tal como están escritas.
30
- 3. La épica a trazar es la que se indica en el prompt que te invocó.
31
- 4. NO hagas preguntas en ningún step. Deduce lo necesario de los artefactos del proyecto (story files, tests generados, épica).
32
- 5. Guarda la traceability matrix y el gate YAML.
33
-
34
- ## Al Finalizar
35
-
36
- Responde ÚNICAMENTE con un resumen de máximo 5 líneas indicando:
37
- - Quality Gate decision: PASS / CONCERNS / FAIL
38
- - Coverage overall % y por prioridad (P0 / P1)
39
- - Gaps críticos identificados (si los hay)
40
- - Ruta de la traceability matrix generada
41
- - Ruta del gate YAML generado