siesa-agents 2.1.89 → 2.1.91

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 (68) hide show
  1. package/claude/skills/sa-init-devops/SKILL.md +35 -36
  2. package/claude/skills/sa-wds-visual-proposals/SKILL.md +6 -0
  3. package/package.json +1 -1
  4. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/data/component-mapping.csv +47 -0
  5. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-01-init.md +148 -0
  6. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-01b-continue.md +79 -0
  7. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-02-bridge.md +114 -0
  8. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-02b-kit-warmup.md +96 -0
  9. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-03-scenarios.md +102 -0
  10. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-04-specs.md +97 -0
  11. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-05-prototype.md +102 -0
  12. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-06-handoff.md +96 -0
  13. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/templates/product-brief-bridge.md +68 -0
  14. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/templates/proposal-index.md +46 -0
  15. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/templates/trigger-map-bridge.md +54 -0
  16. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/workflow.md +82 -0
  17. package/siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/workflow_ext.md +195 -0
  18. package/siesa-agents/sa/sa-init-devops/scripts/sa-init-devops.js +46 -50
  19. package/siesa-agents/wds/config.yaml +20 -0
  20. package/siesa-agents/wds/data/agent-contracts.md +72 -0
  21. package/siesa-agents/wds/data/agent-guides/freya/agentic-development.md +223 -0
  22. package/siesa-agents/wds/data/agent-guides/freya/content-creation.md +270 -0
  23. package/siesa-agents/wds/data/agent-guides/freya/design-system.md +333 -0
  24. package/siesa-agents/wds/data/agent-guides/freya/meta-content-guide.md +495 -0
  25. package/siesa-agents/wds/data/agent-guides/freya/specification-quality.md +262 -0
  26. package/siesa-agents/wds/data/agent-guides/freya/strategic-design.md +116 -0
  27. package/siesa-agents/wds/data/agent-guides/saga/content-structure-principles.md +190 -0
  28. package/siesa-agents/wds/data/agent-guides/saga/conversational-followups.md +372 -0
  29. package/siesa-agents/wds/data/agent-guides/saga/discovery-conversation.md +265 -0
  30. package/siesa-agents/wds/data/agent-guides/saga/dream-up-approach.md +1034 -0
  31. package/siesa-agents/wds/data/agent-guides/saga/inspiration-analysis.md +215 -0
  32. package/siesa-agents/wds/data/agent-guides/saga/resources/project-brief.template.md +187 -0
  33. package/siesa-agents/wds/data/agent-guides/saga/seo-strategy-guide.md +391 -0
  34. package/siesa-agents/wds/data/agent-guides/saga/strategic-documentation.md +454 -0
  35. package/siesa-agents/wds/data/agent-guides/saga/trigger-mapping.md +653 -0
  36. package/siesa-agents/wds/data/agent-guides/saga/working-with-existing-materials.md +172 -0
  37. package/siesa-agents/wds/data/design-system/component-boundaries.md +318 -0
  38. package/siesa-agents/wds/data/design-system/figma-component-structure.md +697 -0
  39. package/siesa-agents/wds/data/design-system/naming-conventions.md +200 -0
  40. package/siesa-agents/wds/data/design-system/state-management.md +93 -0
  41. package/siesa-agents/wds/data/design-system/token-architecture.md +474 -0
  42. package/siesa-agents/wds/data/design-system/validation-patterns.md +74 -0
  43. package/siesa-agents/wds/data/presentations/freya-how-i-help.md +63 -0
  44. package/siesa-agents/wds/data/presentations/freya-intro.md +269 -0
  45. package/siesa-agents/wds/data/presentations/freya-presentation.md +77 -0
  46. package/siesa-agents/wds/data/presentations/freya-workflows-guide.md +51 -0
  47. package/siesa-agents/wds/data/presentations/mimir-agents-overview.md +66 -0
  48. package/siesa-agents/wds/data/presentations/mimir-tone-setting.md +48 -0
  49. package/siesa-agents/wds/data/presentations/saga-how-i-help.md +62 -0
  50. package/siesa-agents/wds/data/presentations/saga-intro.md +285 -0
  51. package/siesa-agents/wds/data/presentations/saga-presentation.md +74 -0
  52. package/siesa-agents/wds/data/presentations/saga-workflows-guide.md +48 -0
  53. package/siesa-agents/wds/data/shared-activation.md +49 -0
  54. package/siesa-agents/wds/data/wds-glossary.md +98 -0
  55. package/siesa-agents/wds/module-help.csv +19 -0
  56. package/siesa-agents/wds/scripts/README.md +155 -0
  57. package/siesa-agents/wds/scripts/wds-add-object.js +207 -0
  58. package/siesa-agents/wds/scripts/wds-add-spacing.js +158 -0
  59. package/siesa-agents/wds/scripts/wds-init-page.js +234 -0
  60. package/siesa-agents/wds/scripts/wds-init-scenario.js +125 -0
  61. package/siesa-agents/wds/scripts/wds-nav.js +206 -0
  62. package/siesa-agents/wds/scripts/wds-validate.js +306 -0
  63. package/siesa-agents/wds/skills/freya.activation.md +204 -0
  64. package/siesa-agents/wds/skills/handoff.md +91 -0
  65. package/siesa-agents/wds/skills/saga.activation.md +169 -0
  66. package/siesa-agents/wds/skills/shared/git.md +55 -0
  67. package/siesa-agents/wds/skills/start.md +99 -0
  68. package/siesa-agents/wds/skills/wrap.md +198 -0
@@ -0,0 +1,54 @@
1
+ ---
2
+ type: wds-trigger-map
3
+ status: bridged-from-planning
4
+ source: siesa-planning-bridge
5
+ generated_date: ""
6
+ source_files: []
7
+ stepsCompleted: []
8
+ ---
9
+
10
+ # Trigger Map — {{project_name}}
11
+
12
+ > Prerequisito de Fase 2 (WDS) generado desde el PRD + épicas. Mapea la psicología del usuario a los objetivos de negocio. Es lo que Freya usa para crear escenarios.
13
+
14
+ ## Personas
15
+
16
+ > Una persona por archivo: `B-Trigger-Map/NN-persona-<nombre>-<arquetipo>.md`. Nombres aliterados (ej. "Carla la Cajera"). Aquí va el resumen.
17
+
18
+ | Persona | Arquetipo | Awareness stage | Archivo |
19
+ |---|---|---|---|
20
+ | {{persona_1_name}} | {{persona_1_archetype}} | {{persona_1_awareness}} | {{persona_1_file}} |
21
+
22
+ ## Driving Forces (por persona)
23
+
24
+ ### {{persona_1_name}}
25
+
26
+ **Fuerzas positivas** (deseos, aspiraciones):
27
+ - {{positive_1}}
28
+
29
+ **Fuerzas negativas** (miedos, frustraciones):
30
+ - {{negative_1}}
31
+
32
+ [Source: {{prd_pains_gains_source}}]
33
+
34
+ ## Business Goals ↔ Triggers
35
+
36
+ | Objetivo de negocio | Trigger del usuario | Persona |
37
+ |---|---|---|
38
+ | {{biz_goal_1}} | {{trigger_1}} | {{persona_ref_1}} |
39
+
40
+ [Source: {{prd_goals_source}}]
41
+
42
+ ## Feature Impact
43
+
44
+ > Detalle completo en `B-Trigger-Map/feature-impact.md` (épica/feature × persona × driving force).
45
+
46
+ | Épica / Feature | Persona | Driving force | Impacto |
47
+ |---|---|---|---|
48
+ | {{feature_1}} | {{persona_ref}} | {{force}} | {{impact}} |
49
+
50
+ [Source: {{epics_source}}]
51
+
52
+ ---
53
+
54
+ _Provenance: derivado de los archivos en `source_files`. Marcar `⚠️ [Asunción — confirmar]` donde el planning no lo especifica._
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: wds-visual-proposals
3
+ description: Toma los artefactos de planning ya existentes (PRD, épicas/historias, UX spec, arquitectura) y los usa como base para que el módulo WDS (Freya) genere propuestas visuales — escenarios UX, page-specs y prototipos renderizados con siesa-ui-kit — ayudando a los diseñadores.
4
+ web_bundle: true
5
+ ---
6
+
7
+ # WDS Visual Proposals — Del Planning a las Propuestas Visuales
8
+
9
+ **Goal:** Tomar los artefactos de planning ya hechos del proyecto (PRD, épicas/historias, `ux-design-specification.md`, arquitectura) como **base**, traducirlos a la fundación estratégica que el módulo **WDS** necesita, y dirigir a **Freya** para producir **propuestas visuales**: escenarios UX + page-specs (formato WDS) **y** prototipos renderizados con los componentes reales de **siesa-ui-kit**. El resultado ayuda al equipo de diseño a iterar sobre algo tangible en vez de partir de cero.
10
+
11
+ **Your Role:** In addition to your name, communication_style, and persona, you are also a **UX Bridge Engineer + Design Facilitator** collaborating with the **Design Team and Product Owners**. This is a partnership, not a client-vendor relationship. You bring expertise in translating product requirements into WDS-compatible design foundations and in driving the WDS/Freya design loop with siesa-ui-kit fidelity, while the user brings product knowledge and design judgment. Work together as equals.
12
+
13
+ ---
14
+
15
+ ## RELACIÓN CON EL MÓDULO WDS
16
+
17
+ Este workflow es un **adaptador + director**. NO reimplementa el diseño: reutiliza el módulo WDS instalado en `{project-root}/_siesa-agents/wds/`.
18
+
19
+ - **Puente (Phases 0–2 de WDS):** sintetiza los prerequisitos que Freya exige —`A-Product-Brief/product-brief.md`, `B-Trigger-Map/trigger-map.md`, outline de escenarios y `_progress/wds-project-outline.yaml`— a partir de los artefactos de planning de SIESA. Sin este puente, Freya no puede empezar.
20
+ - **Kit Warm-up (step-02b, anti-alucinación):** antes de diseñar, instala/usa el paquete **real** de siesa-ui-kit, lo compila/renderiza y produce `kit-grounding.md` (nombres/props reales). Es la fuente de verdad que consumen las specs y los prototipos.
21
+ - **Diseño (Phases 3–4 de WDS):** usa los scripts scaffold de WDS (`_siesa-agents/wds/scripts/*.js`) para crear escenarios y page-specs, y el design loop de Freya (`_siesa-agents/wds/data/agent-guides/freya/`) para renderizar y verificar prototipos.
22
+ - **siesa-ui-kit primero:** todo objeto UI se mapea contra `kit-grounding.md` (verdad del paquete) y el catálogo `https://siesa-ui-kit.pages.dev/llms.txt`. Si discrepan, **gana el grounding**. Texto de UI siempre en **español**.
23
+
24
+ ---
25
+
26
+ ## WORKFLOW ARCHITECTURE
27
+
28
+ This uses **step-file architecture** for disciplined execution:
29
+
30
+ ### Core Principles
31
+
32
+ - **Micro-file Design**: Each step is a self contained instruction file that is part of an overall workflow that must be followed exactly
33
+ - **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so
34
+ - **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed
35
+ - **State Tracking**: Document progress in the WDS project outline (`_progress/wds-project-outline.yaml`) and design log; use `stepsCompleted` array in any output document frontmatter
36
+ - **Append-Only Building**: Build documents by appending content as directed; never overwrite existing WDS artifacts blindly
37
+
38
+ ### Step Processing Rules
39
+
40
+ 1. **READ COMPLETELY**: Always read the entire step file before taking any action
41
+ 2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
42
+ 3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
43
+ 4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
44
+ 5. **SAVE STATE**: Update the project outline / design log before loading next step
45
+ 6. **LOAD NEXT**: When directed, load, read entire file, then execute the next step file
46
+
47
+ ### Critical Rules (NO EXCEPTIONS)
48
+
49
+ - 🛑 **NEVER** load multiple step files simultaneously
50
+ - 📖 **ALWAYS** read entire step file before execution
51
+ - 🚫 **NEVER** skip steps or optimize the sequence
52
+ - 💾 **ALWAYS** update state when writing the final output for a specific step
53
+ - 🎯 **ALWAYS** follow the exact instructions in the step file
54
+ - ⏸️ **ALWAYS** halt at menus and wait for user input
55
+ - 📋 **NEVER** create mental todo lists from future steps
56
+ - 🧩 **NEVER** write raw WDS markdown by hand — use the scaffold scripts (`wds-init-scenario.js`, `wds-init-page.js`, `wds-add-object.js`, `wds-add-spacing.js`, `wds-nav.js`) and validate with `wds-validate.js`
57
+ - 🇪🇸 **ALWAYS** write user-facing UI text in **Spanish**; **ALWAYS** check siesa-ui-kit FIRST before proposing any custom component
58
+ - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
59
+
60
+ ---
61
+
62
+ ## INITIALIZATION SEQUENCE
63
+
64
+ ### 1. Configuration Loading
65
+
66
+ Load and read full config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
67
+
68
+ - `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`
69
+ - `planning_artifacts`, `implementation_artifacts`, `project_knowledge`
70
+
71
+ Then load `{project-root}/_siesa-agents/wds/config.yaml` and resolve:
72
+
73
+ - `design_artifacts` (base path where WDS artifacts live — scripts write `C-UX-Scenarios/` under it)
74
+ - `output_folder` (WDS `_bmad-output` base), `communication_language`, `document_output_language`
75
+
76
+ If the two configs disagree on a value, **WDS `config.yaml` wins** for any WDS artifact path; otherwise use `_bmad/bmm/config.yaml`.
77
+
78
+ - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
79
+
80
+ ### 2. First Step EXECUTION
81
+
82
+ Load, read the full file and then execute `{project-root}/_siesa-agents/bmm/workflows/3-solutioning/wds-visual-proposals/steps/step-01-init.md` to begin the workflow.
@@ -0,0 +1,195 @@
1
+ # MANDATORY RULES: WDS-VISUAL-PROPOSALS WORKFLOW
2
+
3
+ These Siesa-specific rules are injected into memory BEFORE the base workflow runs and remain active throughout. They are non-negotiable.
4
+
5
+ ---
6
+
7
+ ## 1. MANDATORY RULE — PHASE BRANCH CREATION AT WORKFLOW START
8
+
9
+ **TRIGGER:** Immediately when the user initiates this workflow (e.g., `/wds-visual-proposals`).
10
+
11
+ **CRITICAL INSTRUCTION:** Before executing any workflow step, you MUST invoke the `generate-commits-by-phase` skill to create the **Phase 2 (planning)** branch. Visual proposals are a planning-phase activity.
12
+
13
+ ### EXECUTION STEPS (PERFORM THESE ACTIONS NOW, BEFORE ANYTHING ELSE)
14
+
15
+ **STEP 1: INVOKE THE SKILL — CREATE PHASE 2 BRANCH**
16
+
17
+ ```bash
18
+ node _siesa-agents/scripts/phases/phase2.js
19
+ ```
20
+
21
+ - If the `planning` branch already exists, the script will report it — continue normally.
22
+ - If it is created successfully, confirm to the user and proceed.
23
+
24
+ **STEP 2: CONFIRM AND CONTINUE**
25
+
26
+ Output to the user:
27
+ > `✅ Rama Phase 2 (planning) lista. Procediendo con la generación de propuestas visuales WDS...`
28
+
29
+ **DO NOT proceed to the workflow steps until this rule is fully executed.**
30
+
31
+ ---
32
+
33
+ ## 2. CONTEXT AND STANDARDS SETUP
34
+
35
+ Establish the following context paths for use throughout all steps:
36
+
37
+ - `company_standards_path` = `{project-root}/_siesa-agents/bmm/workflows/3-solutioning/create-architecture/data/company-standards`
38
+ - `wds_module_path` = `{project-root}/_siesa-agents/wds`
39
+ - `wds_scripts_path` = `{wds_module_path}/scripts`
40
+ - `siesa_uikit_catalog_url` = `https://siesa-ui-kit.pages.dev/llms.txt`
41
+ - `base_ux_spec` = `{project-root}/_siesa-agents/resources/ux-ui/ux-design-specification.md`
42
+ - `frontend_base_repo` = `https://github.com/SiesaTeams/BaseFrontend`
43
+ - `frontend_dir` = `{design_artifacts}/_kit-playground` (el harness del frontend ES un clon de `frontend_base_repo`)
44
+
45
+ ### Company Standards Integration
46
+
47
+ 🔴 **CRITICAL**: Load these before producing any spec or prototype:
48
+ - `{company_standards_path}/frontend-standards.md` — **siesa-ui-kit** rules + component strategy
49
+ - `{company_standards_path}/technical-preferences-ux.md` — UX/UI preferences and patterns
50
+
51
+ | Priority | Rule | Why Critical |
52
+ |----------|------|--------------|
53
+ | 🔴 P0 | **siesa-ui-kit obligatorio** | Check siesa-ui-kit (via `{siesa_uikit_catalog_url}`) before proposing ANY component |
54
+ | 🔴 P0 | **UI text in Spanish** | All user-facing text MUST be in Spanish |
55
+ | 🔴 P0 | **Vite over Next.js** | Any rendered prototype harness uses Vite + React + Tailwind v4, never Next.js |
56
+ | 🔴 P0 | **Fidelidad al diseño de referencia** | Si el usuario entregó un diseño a seguir (mockup HTML, imagen, Figma), **renderízalo** y replícalo; su look manda sobre los defaults del kit y se **verifica lado a lado** (ver §3C) |
57
+ | 🟡 P1 | Design tokens | Use the tokens defined in `{base_ux_spec}` and the project `ux-design-specification.md` |
58
+
59
+ ---
60
+
61
+ ## 3. SIESA-UI-KIT MANDATORY CHECK (applies to step-04 and step-05)
62
+
63
+ **BEFORE mapping any object to a component or rendering any prototype, you MUST:**
64
+
65
+ 1. Fetch the live catalog from `{siesa_uikit_catalog_url}` (authoritative source of available components).
66
+ 2. Resolve the **actual installed package name** by reading the target frontend app's `package.json` — do NOT assume `@siesa/ui-kit`. `llms.txt` does not declare the npm name.
67
+ 3. Follow the Component Decision Protocol:
68
+
69
+ ```
70
+ Component needed → ¿Está en siesa-ui-kit (per llms.txt / kit-grounding.md)?
71
+ ├── YES → USA el componente siesa-ui-kit tal cual
72
+ └── NO → busca en shadcn (registro MCP de shadcn)
73
+ ├── existe → usa el componente shadcn
74
+ └── no existe → el agente lo CREA (compone primitivos + tokens de marca)
75
+ (AUTOMÁTICO — no preguntar al usuario; registrar la decisión kit/shadcn/custom en el design log.)
76
+ ```
77
+
78
+ 4. Prefer siesa-ui-kit **view-level** components when they fit the page (e.g. `LoginView`, `SignUpView`, `RecoverPasswordView`, `Dashboard`, `LayoutBase`, `ProductsView`, `MasterCrud`) — they raise fidelity and reduce effort.
79
+
80
+ ### UI Text Language Rule
81
+
82
+ 🔴 **MANDATORY**: All user-facing text MUST be in Spanish.
83
+ - ✅ "Guardar", "Cancelar", "Enviar", "Nombre de usuario", "Datos guardados correctamente"
84
+ - ❌ "Save", "Cancel", mixed "Save cambios"
85
+
86
+ > **Note on the bilingual scaffold:** the WDS scripts (`wds-add-object.js`) expose `--se` (Swedish) and `--en` (English) fields. For Siesa, put the **Spanish** UI string in `--se` (primary product language) and the English reference in `--en`. Spanish is the language the prototype renders.
87
+
88
+ ---
89
+
90
+ ## 3A. MANDATORY RULE — CLONA Y TRABAJA BAJO BaseFrontend
91
+
92
+ **TRIGGER:** En step-02b (Kit Warm-up), al montar el harness del frontend, y durante todo step-05.
93
+
94
+ 🔴 **CRITICAL:** El frontend NO se scaffoldea a mano. Se **clona el repositorio base oficial** `{frontend_base_repo}` en `{frontend_dir}` y se trabaja **dentro de él**. Ese repo ya trae Vite 6 + React 19 + TS + Tailwind v4 + `siesa-ui-kit@^1.0.109` con TODOS los peers instalados, TanStack Router (file-based), Clean Architecture por módulos, capa mock en memoria y un shell (`LayoutBase`) ya cableado. No reinventar nada de eso.
95
+
96
+ ```bash
97
+ git clone --depth 1 {frontend_base_repo} {frontend_dir}
98
+ rm -rf {frontend_dir}/.git # el clon vive DENTRO del repo SIESA; no anidar .git
99
+ cd {frontend_dir} && npm install
100
+ ```
101
+
102
+ - **`.git` fuera:** tras clonar, borra `{frontend_dir}/.git` para que los fuentes queden versionados por el repo SIESA padre (no como submódulo). `node_modules/` ya está en el `.gitignore` del propio base.
103
+ - **Ejecución:** el prototipo se ve con `npm run dev` (modo standalone, **puerto 3010**, todos los permisos activos, datos en memoria mock). NUNCA Next.js.
104
+ - **Convenciones del base (respétalas, no las reescribas):**
105
+ - **Shell = `_app.tsx`** → usa `LayoutBase` de siesa-ui-kit con `navigationItems` de `src/config/navigation.tsx` + `<Outlet/>`. Este ES el shell persistente; no hay que construir Navbar/rail a mano.
106
+ - **Un módulo por dominio** en `src/modules/<dominio>/` con las 4 capas `domain / application / infrastructure / presentation` (copia el patrón de los módulos de ejemplo `agentes` y `colaboradores`, que luego se reemplazan).
107
+ - **Listado + CRUD** → componente `MasterCrud` dirigido por un array `fields` (accessorKey/header/type/config) + un `service` que implementa `CrudService<T>` + schema Zod. No coloques objetos a mano cuando `MasterCrud` cubre la pantalla.
108
+ - **Estado compartido = capa mock** (`src/lib/mock/*.mock.ts`): BD en memoria por entidad. Los flujos conectados entre módulos (eliminar padre → hijos huérfanos, asociar/reasignar reflejado en ambos, enlaces cruzados) se implementan sobre estos stores.
109
+ - **Rutas** = TanStack Router file-based: una ruta por módulo en `src/routes/_app/<modulo>.tsx` + su ítem en `config/navigation.tsx`. `routeTree.gen.ts` se autogenera (no editar).
110
+
111
+ ---
112
+
113
+ ## 3B. MANDATORY RULE — KIT WARM-UP GROUNDING BEFORE DESIGN
114
+
115
+ **TRIGGER:** After the strategic bridge (step-02) and BEFORE generating scenarios/specs (step-03+).
116
+
117
+ 🔴 **CRITICAL:** El agente NO debe diseñar contra el catálogo `llms.txt` solo. Debe ejecutar **step-02b (Kit Warm-up)**: clonar BaseFrontend (§3A), instalarlo, verificar con `npm run build`/render que el paquete **real** de siesa-ui-kit compila, y producir `{frontend_dir}/kit-grounding.md` con nombres y props **reales**.
118
+
119
+ - **Source of truth:** cuando `kit-grounding.md` y el catálogo discrepan, **gana el grounding** (usa el export real: p. ej. `ContentLayout` no `LayoutContent`; no inventes `Dashboard`/`StatCard` → compón con `Card`). BaseFrontend ya usa `LayoutBase` y `MasterCrud` con contratos reales — documéntalos en el grounding.
120
+ - **No silent skip:** si no se puede clonar/instalar (sin red/registro), `kit-grounding.md` se escribe igual desde el catálogo pero marcado `⚠️ NO VERIFICADO EN RUNTIME`.
121
+ - **Spec Sync (feedback obligatorio):** todo hallazgo del warm-up que invalide un supuesto del `ux-design-specification.md` (nombre/contrato inexistente) debe reflejarse en una sección "Kit Grounding — Spec Sync" del spec en el mismo ciclo.
122
+
123
+ 🔴 **ENTREGABLE = LA APP CLONADA (BaseFrontend) INTEGRADA, NO pantallas sueltas.** Step-05 trabaja **dentro de `{frontend_dir}`**: reemplaza los módulos de ejemplo por **un módulo por dominio** del alcance, siguiendo las convenciones del base (shell `LayoutBase`, `MasterCrud` data-driven, stores mock compartidos, rutas + nav). Resultado: una app navegable de punta a punta con `npm run dev`, **estado compartido** entre módulos y **flujos conectados** (eliminar padre → hijos huérfanos; asociar/reasignar refleja en ambos; enlaces cruzados navegables). Las épicas de relación se integran DENTRO de los módulos que relacionan; la épica de shell YA es el shell del base. **Prohibido** entregar un prototipo aislado por épica, y **prohibido** HTML+CSS que se auto-rotule como si usara el kit (`<div class="rail" title="NavigationRail">`, `/* siesa-ui-kit Button */`) — esa es la alucinación que este flujo elimina. Todo con componentes reales, `npm run build` exit 0. **Entregable estático = la app compilada en UN HTML autocontenido (`propuesta-app.html`, vía vite-plugin-singlefile + hash routing), NO una galería de screenshots** (los screenshots son solo verificación interna del agente). Gotchas obligatorios (el base ya resuelve varios): `ContentLayout` = master-detail (no header); `GenericEntityModal`/`ContactManager` requieren `QueryClientProvider` (el base ya lo provee en `config/query-client.ts`); `LookupField` requiere `fetcher` mock.
124
+
125
+ ---
126
+
127
+ ## 3C. MANDATORY RULE — REFERENCE DESIGN FIDELITY (cuando el usuario entrega un diseño a seguir)
128
+
129
+ **TRIGGER:** El usuario aportó, en cualquier punto del flujo, un **diseño de referencia** que la propuesta debe replicar: un mockup HTML (incluidos los HTML autocontenidos/"bundled" que se auto-desempaquetan), una imagen (PNG/JPG), un PDF de pantallas, o un enlace de Figma. step-01 lo detecta e ingesta; step-05 lo replica; **esta regla aplica durante todo el flujo.**
130
+
131
+ 🔴 **Regla de oro: NO se diseña contra una descripción textual del diseño — se diseña contra el diseño RENDERIZADO.** El fallo que esta regla previene es construir "de memoria"/desde texto y declarar fidelidad sin haber visto nunca el diseño real.
132
+
133
+ ### A. Renderizar el diseño de referencia a imágenes (obligatorio antes de diseñar)
134
+
135
+ Convierte el diseño a screenshots que sean la **verdad visual** (guárdalos en `{design_artifacts}/_design-ref/`):
136
+
137
+ - **Imagen/PDF** → úsala directamente (o exporta cada página del PDF a PNG).
138
+ - **HTML autocontenido/bundled** (abre por sí solo, p. ej. un export con assets en base64) → renderízalo en **Chrome headless**:
139
+ `chrome --headless=new --disable-gpu --hide-scrollbars --window-size=1600,1050 --virtual-time-budget=8000 --screenshot=<out.png> "file:///<ruta-del-html>"`.
140
+ Dale tiempo (`--virtual-time-budget`) si el HTML se desempaqueta/renderiza vía JS.
141
+ - **HTML interactivo / multi-pantalla** (la pantalla objetivo se alcanza haciendo clic, p. ej. "Crear/Editar") → **NO basta la pantalla inicial**: conduce el Chrome instalado con `puppeteer-core` (`npm i puppeteer-core`, `executablePath` = Chrome local), navega/haz clic hacia cada estado (lista, crear, editar, diálogos) y captura **un screenshot por pantalla**.
142
+ - **Figma/URL** → exporta los frames a PNG (o pide al usuario los PNG exportados). Si no hay acceso, avísalo y trabaja con lo que haya.
143
+
144
+ Registra las referencias en `_progress/wds-project-outline.yaml` (`reference_design: [rutas]`) y en el design log.
145
+
146
+ ### B. Extraer sus tokens (gotcha que deja todo sin estilo)
147
+
148
+ Si el diseño define tokens como custom properties CSS (`:root { --surface-card: …; --space-4: …; --radius-xl: …; --text-sm: … }`), **cópialos al harness** (`{kit_playground}/src/styles/tokens.css`, importado desde `src/index.css`) **antes** de escribir componentes custom. Los componentes que referencian `var(--…)` sin esas definiciones renderizan **colapsados/sin estilo** (flex/gap 0, sin fondos ni bordes) — `siesa-ui-kit/styles.css` define SUS tokens, no los del diseño de referencia.
149
+
150
+ ### C. Precedencia de fidelidad (el diseño manda sobre los defaults del kit)
151
+
152
+ siesa-ui-kit primero **sigue vigente para primitivos** (`Input`, `Textarea`, `Select`, `Switch`, `Badge`, `Button`, `LookupField`, `Table`). Pero los **componentes de vista** (`MasterCrud`, `LayoutBase`, etc.) imponen un look que **puede no parecerse en nada** al diseño de referencia (p. ej. el diseño usa barra superior sin rail y una tabla limpia con pills de color, no el toolbar por defecto de `MasterCrud`). Cuando el default del kit diverge del diseño: **compón la presentación a medida para igualar el diseño**, importando primitivos del kit donde encajen. La fidelidad al diseño entregado por el usuario tiene prioridad sobre "usar el componente de vista del kit". Registra kit/custom en el design log.
153
+
154
+ ### D. Verificación lado a lado (antes de declarar "listo")
155
+
156
+ Para CADA página del alcance: renderiza tu build y ponlo **al lado del screenshot de referencia**; solo pasa si coinciden **layout, colores, espaciado, tipografía y componentes**. 🚫 **PROHIBIDO declarar fidelidad** contra tu propio modelo mental, contra una descripción textual, o contra la pantalla inicial cuando la referencia tiene más pantallas. Si no coincide, corrige e itera antes de presentar.
157
+
158
+ ---
159
+
160
+ ## 4. PATH RECONCILIATION (WDS docs are internally inconsistent)
161
+
162
+ WDS docs disagree on output paths. Resolve at runtime in this order:
163
+
164
+ 1. Read `{wds_module_path}/config.yaml`. Use its `design_artifacts` value as the **base output path** for all WDS scaffold scripts (`--output <design_artifacts>`). Scripts create `C-UX-Scenarios/` under it.
165
+ 2. Place the bridge artifacts as Freya's activation expects them, relative to that base:
166
+ - `{design_artifacts}/A-Product-Brief/product-brief.md`
167
+ - `{design_artifacts}/B-Trigger-Map/trigger-map.md` (+ personas)
168
+ - `{design_artifacts}/C-UX-Scenarios/` (scenarios + page specs)
169
+ - `{design_artifacts}/_progress/wds-project-outline.yaml` and `_progress/00-design-log.md`
170
+ 3. NEVER hardcode `_bmad-output` vs `design-artifacts`. Always derive from `config.yaml`.
171
+
172
+ ---
173
+
174
+ ## 5. MANDATORY RULE — PHASE COMMIT AT WORKFLOW END
175
+
176
+ **TRIGGER:** Immediately after the visual proposals (specs + prototype + index) are generated and saved (end of step-06).
177
+
178
+ **STEP 1: INSPECT CHANGES**
179
+ 1. `git status --short`
180
+ 2. `git diff --stat`
181
+
182
+ **STEP 2: GENERATE COMMIT MESSAGE**
183
+ Format: `[Phase 2 - Planning] <brief description>` — e.g. `[Phase 2 - Planning] add WDS visual proposals for <project name>`. Write it in `{communication_language}`.
184
+
185
+ **STEP 3: INVOKE THE SKILL — COMMIT PHASE 2 CHANGES**
186
+
187
+ ```bash
188
+ node _siesa-agents/scripts/phases/phase2.js --commit "<generated commit message>"
189
+ ```
190
+
191
+ **STEP 4: CONFIRM COMPLETION**
192
+ Output to the user:
193
+ > `✅ Propuestas visuales WDS committeadas en la rama Phase 2 (planning).`
194
+
195
+ **This is the LAST action of the workflow. Do not execute any further steps after this commit.**
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- // sa-init-devops.js — Bootstrap the DevOps workspace and skills in Siesa-Agents.
2
+ // sa-init-devops.js — Bootstrap the DevOps workspace and commands in Siesa-Agents.
3
3
  //
4
4
  // In one invocation the script:
5
- // 1. Clones (or pulls) architecture-sa-devops into `_siesa-agents/devops/`.
6
- // 2. Detects conflicts: for each upstream `.claude/skills/sa-*/SKILL.md` and
5
+ // 1. Clones (or pulls) business-shared-deploy into `_siesa-agents/devops/`.
6
+ // 2. Detects conflicts: for each upstream `.claude/commands/*.md` and
7
7
  // `.github/workflows/*.yml`, compares to the local copy in Siesa-Agents. If any local
8
8
  // file differs from upstream and no policy flag was passed, aborts with `status:
9
9
  // "conflicts"` and lists the conflicting items so the caller can ask the user how to
@@ -19,7 +19,7 @@
19
19
  // entirely new in upstream.
20
20
  // --keep-local=<csv> Keep these specific files (comma-separated names) local;
21
21
  // overwrite the rest. Example:
22
- // --keep-local=sa-aplicar,infra-pipeline-qa.yml
22
+ // --keep-local=flow-aplicar.md,infra-pipeline-qa.yml
23
23
  //
24
24
  // Idempotency: between runs the clone's `.claude/` and `.github/` directories are gone from
25
25
  // the working tree but still tracked in upstream HEAD. The script restores those paths
@@ -46,9 +46,7 @@ const fs = require('fs')
46
46
  const path = require('path')
47
47
  const { spawnSync } = require('child_process')
48
48
 
49
- // TODO(siesa-admin): change to https://github.com/SiesaTeams/architecture-sa-devops.git
50
- // once the repo is transferred to the SiesaTeams organization.
51
- const REMOTE_URL = 'https://github.com/ssancheze912/architecture-sa-devops.git'
49
+ const REMOTE_URL = 'https://github.com/SiesaTeams/business-shared-deploy.git'
52
50
  const REMOTE_NAME = 'origin'
53
51
  const DEFAULT_BRANCH = 'main'
54
52
 
@@ -171,56 +169,54 @@ function decideAction(name, upstreamPath, localPaths, policy) {
171
169
  return 'conflict'
172
170
  }
173
171
 
174
- // MOVE `<sourceDir>/.claude/skills/sa-*/SKILL.md` into Siesa-Agents `.claude/skills/sa-*/`
175
- // (and `claude/skills/sa-*/`) according to the policy. Records conflicts in
176
- // status.skill_conflicts; the caller checks that before any mutation happens.
177
- function planAndApplySkills(sourceDir, projectRoot, status, policy, dryRun) {
178
- const srcSkillsDir = path.join(sourceDir, '.claude', 'skills')
179
- status.skills_created = []
180
- status.skills_overwritten = []
181
- status.skills_kept_local = []
182
- status.skills_unchanged = []
183
- status.skill_conflicts = []
184
-
185
- if (!fs.existsSync(srcSkillsDir)) {
186
- status.skills_source_missing = true
172
+ // MOVE `<sourceDir>/.claude/commands/*.md` into Siesa-Agents `.claude/commands/` (and
173
+ // `claude/commands/`) according to the policy. Records conflicts in status.command_conflicts;
174
+ // the caller checks that before any mutation happens.
175
+ function planAndApplyCommands(sourceDir, projectRoot, status, policy, dryRun) {
176
+ const srcCommandsDir = path.join(sourceDir, '.claude', 'commands')
177
+ status.commands_created = []
178
+ status.commands_overwritten = []
179
+ status.commands_kept_local = []
180
+ status.commands_unchanged = []
181
+ status.command_conflicts = []
182
+
183
+ if (!fs.existsSync(srcCommandsDir)) {
184
+ status.commands_source_missing = true
187
185
  return
188
186
  }
189
187
 
190
- const dstA = path.join(projectRoot, '.claude', 'skills')
191
- const dstB = path.join(projectRoot, 'claude', 'skills')
188
+ const dstA = path.join(projectRoot, '.claude', 'commands')
189
+ const dstB = path.join(projectRoot, 'claude', 'commands')
192
190
 
193
- for (const entry of fs.readdirSync(srcSkillsDir, { withFileTypes: true })) {
194
- if (!entry.isDirectory()) continue
195
- if (!entry.name.startsWith('sa-')) continue
196
- if (entry.name === 'sa-init-devops') continue // never overwrite the bootstrap itself
197
- const srcSkill = path.join(srcSkillsDir, entry.name, 'SKILL.md')
198
- if (!fs.existsSync(srcSkill)) continue
191
+ for (const entry of fs.readdirSync(srcCommandsDir, { withFileTypes: true })) {
192
+ if (!entry.isFile()) continue
193
+ if (!entry.name.endsWith('.md')) continue
199
194
 
200
- const dstSkillA = path.join(dstA, entry.name, 'SKILL.md')
201
- const dstSkillB = path.join(dstB, entry.name, 'SKILL.md')
195
+ const srcCommand = path.join(srcCommandsDir, entry.name)
196
+ const dstCommandA = path.join(dstA, entry.name)
197
+ const dstCommandB = path.join(dstB, entry.name)
202
198
 
203
- const action = decideAction(entry.name, srcSkill, [dstSkillA, dstSkillB], policy)
199
+ const action = decideAction(entry.name, srcCommand, [dstCommandA, dstCommandB], policy)
204
200
 
205
201
  if (action === 'conflict') {
206
- status.skill_conflicts.push(entry.name)
202
+ status.command_conflicts.push(entry.name)
207
203
  continue
208
204
  }
209
205
  if (action === 'identical') {
210
- status.skills_unchanged.push(entry.name)
206
+ status.commands_unchanged.push(entry.name)
211
207
  continue
212
208
  }
213
209
  if (dryRun) continue
214
210
 
215
211
  if (action === 'create' || action === 'overwrite') {
216
- fs.mkdirSync(path.dirname(dstSkillA), { recursive: true })
217
- fs.mkdirSync(path.dirname(dstSkillB), { recursive: true })
218
- fs.copyFileSync(srcSkill, dstSkillA)
219
- fs.copyFileSync(srcSkill, dstSkillB)
220
- if (action === 'create') status.skills_created.push(entry.name)
221
- else status.skills_overwritten.push(entry.name)
212
+ fs.mkdirSync(dstA, { recursive: true })
213
+ fs.mkdirSync(dstB, { recursive: true })
214
+ fs.copyFileSync(srcCommand, dstCommandA)
215
+ fs.copyFileSync(srcCommand, dstCommandB)
216
+ if (action === 'create') status.commands_created.push(entry.name)
217
+ else status.commands_overwritten.push(entry.name)
222
218
  } else if (action === 'keep-local') {
223
- status.skills_kept_local.push(entry.name)
219
+ status.commands_kept_local.push(entry.name)
224
220
  }
225
221
  }
226
222
  }
@@ -356,11 +352,11 @@ function runCheck(projectRoot) {
356
352
  // Dry-run conflict detection so callers can preview before running default mode.
357
353
  restoreClonePaths(sourceDir)
358
354
  const policy = { takeUpstream: false, keepLocalAll: false, keepLocalList: null }
359
- planAndApplySkills(sourceDir, projectRoot, state, policy, true)
355
+ planAndApplyCommands(sourceDir, projectRoot, state, policy, true)
360
356
  planAndApplyWorkflows(sourceDir, projectRoot, state, policy, true)
361
357
 
362
358
  state.status = 'already-cloned'
363
- const conflictCount = state.skill_conflicts.length + state.workflow_conflicts.length
359
+ const conflictCount = state.command_conflicts.length + state.workflow_conflicts.length
364
360
  state.message = `${sourceDir} is a clean clone of ${REMOTE_URL}. ${conflictCount} conflict(s) would be raised by a default run.`
365
361
  emit(state)
366
362
  return 0
@@ -475,30 +471,30 @@ function runClone(projectRoot, mirrorOnly, args) {
475
471
 
476
472
  function finalizeMoveAndMirror(sourceDir, projectRoot, mirrorDir, status, policy, terminalStatus) {
477
473
  // Phase A: dry-run to compute the action plan and conflicts.
478
- planAndApplySkills(sourceDir, projectRoot, status, policy, true)
474
+ planAndApplyCommands(sourceDir, projectRoot, status, policy, true)
479
475
  planAndApplyWorkflows(sourceDir, projectRoot, status, policy, true)
480
476
 
481
- const totalConflicts = status.skill_conflicts.length + status.workflow_conflicts.length
477
+ const totalConflicts = status.command_conflicts.length + status.workflow_conflicts.length
482
478
  if (totalConflicts > 0) {
483
479
  // Abort without mutating. The caller (Claude/SKILL.md) asks the user and re-runs with
484
480
  // a policy flag.
485
481
  status.status = 'conflicts'
486
- status.message = `Detected ${status.skill_conflicts.length} skill conflict(s) and ${status.workflow_conflicts.length} workflow conflict(s). Re-run with one of: --take-upstream (overwrite all), --keep-local (keep all local versions), or --keep-local=<csv> (keep specific ones).`
482
+ status.message = `Detected ${status.command_conflicts.length} command conflict(s) and ${status.workflow_conflicts.length} workflow conflict(s). Re-run with one of: --take-upstream (overwrite all), --keep-local (keep all local versions), or --keep-local=<csv> (keep specific ones).`
487
483
  emit(status)
488
484
  return 4
489
485
  }
490
486
 
491
487
  // Phase B: real apply (no conflicts left to resolve).
492
- planAndApplySkills(sourceDir, projectRoot, status, policy, false)
488
+ planAndApplyCommands(sourceDir, projectRoot, status, policy, false)
493
489
  planAndApplyWorkflows(sourceDir, projectRoot, status, policy, false)
494
490
  cleanCloneDirs(sourceDir)
495
491
  refreshMirror(sourceDir, mirrorDir, status)
496
492
 
497
493
  status.status = terminalStatus
498
- const created = status.skills_created.length + status.workflows_created.length
499
- const over = status.skills_overwritten.length + status.workflows_overwritten.length
500
- const kept = status.skills_kept_local.length + status.workflows_kept_local.length
501
- const unch = status.skills_unchanged.length + status.workflows_unchanged.length
494
+ const created = status.commands_created.length + status.workflows_created.length
495
+ const over = status.commands_overwritten.length + status.workflows_overwritten.length
496
+ const kept = status.commands_kept_local.length + status.workflows_kept_local.length
497
+ const unch = status.commands_unchanged.length + status.workflows_unchanged.length
502
498
  status.message = `${terminalStatus === 'cloned' ? 'Cloned' : (terminalStatus === 'updated' ? 'Pulled' : 'No upstream change')}. Created ${created}, overwrote ${over}, kept local ${kept}, unchanged ${unch}. Mirror refreshed.`
503
499
  emit(status)
504
500
  return 0
@@ -0,0 +1,20 @@
1
+ # WDS Module Configuration
2
+ # Generated by BMAD installer
3
+ # Version: 6.9.0
4
+ # Date: 2026-06-25T17:13:35.737Z
5
+
6
+ project_knowledge: "{project-root}/docs"
7
+ project_type: digital_product
8
+ design_artifacts: "{project-root}/design-artifacts"
9
+ design_system_mode: none
10
+ methodology_version: wds-v6
11
+ product_languages:
12
+ - en
13
+ design_experience: intermediate
14
+
15
+ # Core Configuration Values
16
+ user_name: Ssancheze
17
+ project_name: Dev
18
+ communication_language: Spanish
19
+ document_output_language: English
20
+ output_folder: "{project-root}/_bmad-output"
@@ -0,0 +1,72 @@
1
+ # WDS Agent Contracts
2
+
3
+ Defines what each agent owns, what they explicitly do not own, and how they hand off to each other.
4
+ All agents load this file at activation. These rules are non-negotiable.
5
+
6
+ ---
7
+
8
+ ## Domain Boundaries
9
+
10
+ | Agent | Owns | Does NOT own |
11
+ |-------|------|--------------|
12
+ | **Saga** | Phases 0–2: Alignment, Product Brief, Trigger Mapping | Any design work. Any code. Scenarios (Phase 3+). |
13
+ | **Freya** | Phases 3–4: UX Scenarios, UX Design. Phases 6–7: Asset Generation, Design System. | Discovery (Phases 1–2). Any code. PRDs. |
14
+ | **Mimir** | Phase 5: Tech Audit, PRD, Build. Phase 8: Product Evolution. | Discovery. Design. Writing specs without a Work Order. |
15
+
16
+ **If a user asks an agent to do work outside its domain:** name the right agent and offer to hand off. Never attempt the work yourself.
17
+
18
+ ---
19
+
20
+ ## Prerequisites
21
+
22
+ Each agent requires the following before starting core work:
23
+
24
+ | Agent | Required | Blocks |
25
+ |-------|----------|--------|
26
+ | Saga | Nothing | — |
27
+ | Freya | `A-Product-Brief/product-brief.md` + `B-Trigger-Map/00-trigger-map.md` | Cannot design without strategic foundation |
28
+ | Mimir | At least one Work Order from Freya | Cannot build without a WO. Cannot PRD without a WO. |
29
+ | Mimir (existing codebase) | `E-Development/000-tech-audit.md` | Cannot PRD without knowing the codebase |
30
+
31
+ ---
32
+
33
+ ## Handoff Rules
34
+
35
+ **Saga → Freya**
36
+ Trigger: Product Brief and Trigger Map are complete and aligned.
37
+ Action: Saga runs `/wrap freya`. Freya picks up with `/freya progress/freya.md`.
38
+ Never: Saga does not write scenarios or design anything before handing off.
39
+
40
+ **Freya → Mimir**
41
+ Trigger: Work Order written, page spec complete, ready for implementation.
42
+ Action: Freya runs `/wrap mimir` or `/handoff mimir`. Mimir picks up the Work Order.
43
+ Never: Freya does not write code. Freya does not write PRDs.
44
+
45
+ **Mimir → Freya**
46
+ Trigger: Implementation complete, browser-verified. Or: blocked on design decision.
47
+ Action: Mimir runs `/handoff freya` with the specific question or completion note.
48
+ Never: Mimir does not modify specs or Work Orders. He implements what they say.
49
+
50
+ ---
51
+
52
+ ## Quality Rules (all agents)
53
+
54
+ - **One task at a time.** Complete and verify before moving on.
55
+ - **No plausible-looking wrong output.** If you cannot follow the template exactly, stop and say so. Wrong-but-plausible output breaks every downstream phase.
56
+ - **Read the template before writing.** Every artifact has a template. Load it, follow it.
57
+ - **Decisions are documented.** Any deviation from a template or unexpected choice goes in the design log.
58
+
59
+ ---
60
+
61
+ ## Out-of-Scope (explicit)
62
+
63
+ Things no WDS agent does, ever:
64
+
65
+ - Produce output in a custom format when a WDS template exists
66
+ - Write to `progress/` without going through the memory tool
67
+ - Commit without a meaningful message (conventional commits required)
68
+ - Force push, skip hooks, or bypass git safety
69
+ - Start a new phase without the prerequisite documents
70
+ - Write code without a PRD (Mimir only)
71
+ - Mark a requirement done without browser verification (Mimir only)
72
+ - Design without a Trigger Map (Freya only)