@atlashub/smartstack-cli 4.22.0 → 4.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/package.json +1 -1
  2. package/templates/skills/ba-design-ui/SKILL.md +91 -0
  3. package/templates/skills/ba-design-ui/steps/step-01-screens.md +177 -0
  4. package/templates/skills/ba-design-ui/steps/step-02-wireframes.md +140 -0
  5. package/templates/skills/ba-design-ui/steps/step-03-navigation.md +134 -0
  6. package/templates/skills/ba-generate-html/SKILL.md +0 -1
  7. package/templates/skills/ba-generate-html/html/ba-interactive.html +950 -1055
  8. package/templates/skills/ba-generate-html/html/src/scripts/01-data-init.js +1 -2
  9. package/templates/skills/ba-generate-html/html/src/scripts/02-navigation.js +0 -1
  10. package/templates/skills/ba-generate-html/html/src/scripts/03-render-cadrage.js +0 -39
  11. package/templates/skills/ba-generate-html/html/src/scripts/05-render-specs.js +0 -1
  12. package/templates/skills/ba-generate-html/html/src/scripts/07-render-handoff.js +0 -1
  13. package/templates/skills/ba-generate-html/html/src/scripts/08-editing.js +133 -135
  14. package/templates/skills/ba-generate-html/html/src/scripts/10-comments.js +199 -199
  15. package/templates/skills/ba-generate-html/html/src/scripts/11-review-panel.js +165 -166
  16. package/templates/skills/ba-generate-html/html/src/styles/05-modules.css +444 -454
  17. package/templates/skills/ba-generate-html/html/src/template.html +0 -49
  18. package/templates/skills/ba-generate-html/references/data-build.md +176 -182
  19. package/templates/skills/ba-generate-html/references/data-mapping.md +295 -299
  20. package/templates/skills/ba-generate-html/steps/step-01-collect.md +4 -22
  21. package/templates/skills/ba-generate-html/steps/step-02-build-data.md +2 -11
  22. package/templates/skills/ba-review/SKILL.md +16 -1
  23. package/templates/skills/ba-review/steps/step-01-apply.md +60 -10
  24. package/templates/skills/business-analyse/SKILL.md +19 -15
  25. package/templates/skills/business-analyse/steps/step-03-specify.md +9 -38
  26. package/templates/skills/derive-prd/SKILL.md +9 -9
  27. package/templates/skills/derive-prd/references/acceptance-criteria.md +166 -116
  28. package/templates/skills/derive-prd/references/entity-domain-mapping.md +5 -5
  29. package/templates/skills/derive-prd/references/handoff-file-templates.md +12 -12
  30. package/templates/skills/derive-prd/references/handoff-mappings.md +13 -14
  31. package/templates/skills/derive-prd/references/handoff-seeddata-generation.md +1 -1
  32. package/templates/skills/derive-prd/references/readiness-scoring.md +41 -50
  33. package/templates/skills/derive-prd/schemas/handoff-schema.json +2 -2
  34. package/templates/skills/derive-prd/steps/step-00-validate.md +73 -52
  35. package/templates/skills/derive-prd/steps/step-01-transform.md +86 -43
  36. package/templates/skills/ba-generate-html/html/src/partials/cadrage-risks.html +0 -48
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlashub/smartstack-cli",
3
- "version": "4.22.0",
3
+ "version": "4.24.0",
4
4
  "description": "SmartStack Claude Code automation toolkit - GitFlow, EF Core migrations, prompts and more",
5
5
  "author": {
6
6
  "name": "SmartStack",
@@ -0,0 +1,91 @@
1
+ ---
2
+ name: ba-design-ui
3
+ description: "Design user interfaces for each module: screens, wireframes, and navigation tree from Phase 1 analysis data."
4
+ model: opus
5
+ user_invocable: true
6
+ ---
7
+
8
+ # /ba-design-ui
9
+
10
+ Design user interfaces for each module based on the business analysis data (entities, use cases, permissions) produced by `/business-analyse`.
11
+
12
+ ## Triggers
13
+
14
+ - Explicit invocation: `/ba-design-ui <feature-id>`
15
+ - After `/business-analyse` step-04 (consolidation complete)
16
+ - After `/ba-review` when corrections target UI/screens
17
+
18
+ ## Parameters
19
+
20
+ | Parameter | Required | Description |
21
+ |-----------|----------|-------------|
22
+ | `<feature-id>` | Yes | Feature identifier (e.g., FEAT-001) |
23
+ | `--module` | No | Restrict to a single module (e.g., HumanResources) |
24
+
25
+ ## Prerequisites
26
+
27
+ - `/business-analyse` must be completed (step-04 consolidated)
28
+ - JSON files must exist: `index.json`, `entities.json`, `usecases.json`, `permissions.json` per module
29
+ - Feature status must be `consolidated` or `reviewed`
30
+
31
+ ## Workflow
32
+
33
+ 3 progressive steps:
34
+
35
+ | Step | File | Role |
36
+ |------|------|------|
37
+ | 01 | `steps/step-01-screens.md` | Define sections/resources with detailed specs per module |
38
+ | 02 | `steps/step-02-wireframes.md` | Generate wireframes (ASCII/HTML) for each screen |
39
+ | 03 | `steps/step-03-navigation.md` | Define the complete navigation tree (seedDataCore) |
40
+
41
+ ## Input
42
+
43
+ For each module, load via ba-reader:
44
+ - `index.json` (module metadata, anticipatedSections)
45
+ - `entities.json` (attributes with types, relationships)
46
+ - `usecases.json` (actor actions, scenarios)
47
+ - `permissions.json` (role matrix, permission paths)
48
+
49
+ ## Output
50
+
51
+ Per module:
52
+ - `screens.json` — Detailed interface specifications (SmartTable columns, SmartForm fields, SmartDashboard KPIs)
53
+ - Wireframes embedded in screens.json (mockupFormat, elements[], layout, componentMapping)
54
+
55
+ Project-level:
56
+ - `navigation.json` — Complete navigation tree (routes, menus, breadcrumbs)
57
+
58
+ ## Absolute Rules
59
+
60
+ - **NEVER** invent entities or permissions not defined in Phase 1 — UI specs MUST reference existing analysis data
61
+ - **Every screen** MUST have a `permission` field referencing a valid permission path from permissions.json
62
+ - **Every SmartTable column** MUST reference a valid entity attribute or relationship
63
+ - **Every SmartForm field** MUST reference a valid entity attribute
64
+ - **screens.json** MUST have at least one section per module
65
+
66
+ ## Post-Design Workflow
67
+
68
+ ```
69
+ /ba-design-ui completes
70
+ |
71
+ v
72
+ /ba-generate-html (generates interactive HTML with mockups, ERD, permission matrix)
73
+ |
74
+ v
75
+ Client reviews HTML
76
+ |
77
+ v
78
+ /ba-review (apply corrections, route back to /business-analyse or /ba-design-ui)
79
+ ```
80
+
81
+ ## References
82
+
83
+ | File | Content |
84
+ |------|---------|
85
+ | `/business-analyse` skill | Source analysis data (entities, UCs, permissions) |
86
+ | `/ba-generate-html` skill | HTML generation consuming screens.json |
87
+ | `ba-generate-html/references/data-mapping.md` | JSON to FEATURE_DATA field mapping |
88
+
89
+ ## Entry Point
90
+
91
+ **FIRST ACTION:** Load `steps/step-01-screens.md`
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: step-01-screens
3
+ description: Define sections and resources with detailed UI specs per module
4
+ model: opus
5
+ next_step: steps/step-02-wireframes.md
6
+ ---
7
+
8
+ # Step 01 — Screens (Define Sections & Resources)
9
+
10
+ ## Objective
11
+
12
+ For each module, define all sections and resources with detailed interface specifications: SmartTable columns, SmartForm fields with types, SmartDashboard KPIs, SmartKanban columns.
13
+
14
+ ## Prerequisites
15
+
16
+ - `/business-analyse` completed (entities, usecases, permissions exist)
17
+ - Module index.json accessible via ba-reader
18
+
19
+ ## Execution
20
+
21
+ ### 1. Load Analysis Data
22
+
23
+ For each module (in dependency order from index.json):
24
+
25
+ ```
26
+ Load via ba-reader:
27
+ - entities.json → entity attributes with types, relationships
28
+ - usecases.json → actor actions, CRUD operations
29
+ - permissions.json → role matrix, permission paths
30
+ - index.json → anticipatedSections from step-02
31
+ ```
32
+
33
+ ### 2. Define Sections & Resources
34
+
35
+ For each module, transform anticipatedSections into detailed screen specs.
36
+
37
+ **SmartTable resource:**
38
+ ```json
39
+ {
40
+ "code": "{entity-plural}-grid",
41
+ "type": "SmartTable",
42
+ "label": "Grille des {entity-plural}",
43
+ "columns": [
44
+ { "field": "code", "label": "Code", "type": "text", "sortable": true, "width": "100px" },
45
+ { "field": "fullName", "label": "Nom", "type": "text", "sortable": true },
46
+ { "field": "department.name", "label": "Departement", "type": "lookup", "filterable": true },
47
+ { "field": "status", "label": "Statut", "type": "badge", "filterable": true, "options": ["Active", "Inactive"] }
48
+ ],
49
+ "actions": ["create", "edit", "delete", "export"],
50
+ "filters": [
51
+ { "field": "department", "type": "select", "label": "Departement" },
52
+ { "field": "status", "type": "select", "label": "Statut" }
53
+ ],
54
+ "permission": "{AppCode}.{ModuleCode}.Read",
55
+ "rowActions": ["edit", "view-detail"],
56
+ "defaultSort": { "field": "code", "direction": "asc" },
57
+ "pageSize": 25
58
+ }
59
+ ```
60
+
61
+ **SmartForm resource:**
62
+ ```json
63
+ {
64
+ "code": "{entity}-form",
65
+ "type": "SmartForm",
66
+ "label": "Fiche {entity}",
67
+ "tabs": [
68
+ {
69
+ "label": "Informations",
70
+ "fields": [
71
+ { "field": "firstName", "label": "Prenom", "type": "text", "required": true, "col": 6 },
72
+ { "field": "lastName", "label": "Nom", "type": "text", "required": true, "col": 6 },
73
+ { "field": "email", "label": "Email", "type": "email", "required": true, "validation": "unique" },
74
+ { "field": "department", "label": "Departement", "type": "lookup", "entity": "Department", "required": true },
75
+ { "field": "status", "label": "Statut", "type": "select", "options": ["Active", "Inactive"], "readonly": "onCreate" }
76
+ ]
77
+ },
78
+ {
79
+ "label": "Contrats",
80
+ "type": "subtable",
81
+ "entity": "Contract",
82
+ "columns": ["contractType", "startDate", "endDate", "status"]
83
+ }
84
+ ],
85
+ "permission": "{AppCode}.{ModuleCode}.Update"
86
+ }
87
+ ```
88
+
89
+ **SmartDashboard resource:**
90
+ ```json
91
+ {
92
+ "code": "{module}-dashboard",
93
+ "type": "SmartDashboard",
94
+ "label": "Tableau de bord {module}",
95
+ "kpis": [
96
+ { "label": "Total actifs", "value": "count(status=Active)", "icon": "users", "color": "primary" },
97
+ { "label": "En conge", "value": "count(status=OnLeave)", "icon": "calendar", "color": "warning" }
98
+ ],
99
+ "charts": [
100
+ { "type": "pie", "label": "Repartition par departement", "dataSource": "employees", "groupBy": "department" },
101
+ { "type": "bar", "label": "Evolution des effectifs", "dataSource": "employees", "groupBy": "hireDate.year" }
102
+ ],
103
+ "permission": "{AppCode}.{ModuleCode}.Read"
104
+ }
105
+ ```
106
+
107
+ **SmartKanban resource:**
108
+ ```json
109
+ {
110
+ "code": "{entity}-kanban",
111
+ "type": "SmartKanban",
112
+ "label": "Kanban {entity}",
113
+ "statusField": "status",
114
+ "columns": [
115
+ { "value": "Draft", "label": "Brouillon", "color": "gray" },
116
+ { "value": "Submitted", "label": "Soumis", "color": "blue" },
117
+ { "value": "Approved", "label": "Approuve", "color": "green" }
118
+ ],
119
+ "cardFields": ["code", "assignee", "dueDate"],
120
+ "permission": "{AppCode}.{ModuleCode}.Read"
121
+ }
122
+ ```
123
+
124
+ ### 3. Column/Field Type Mapping
125
+
126
+ Map entity attribute types to UI component types:
127
+
128
+ | Entity type | SmartTable type | SmartForm type |
129
+ |-------------|----------------|----------------|
130
+ | `string` | `text` | `text` |
131
+ | `int`, `decimal` | `number` | `number` |
132
+ | `date` | `date` | `datepicker` |
133
+ | `datetime` | `datetime` | `datetimepicker` |
134
+ | `bool` | `boolean` | `checkbox` |
135
+ | `enum` | `badge` | `select` |
136
+ | `guid` (FK) | `lookup` | `lookup` |
137
+ | `text` (long) | `text` (truncated) | `textarea` |
138
+
139
+ ### 4. Write screens.json
140
+
141
+ For each module, write via ba-writer:
142
+
143
+ ```json
144
+ {
145
+ "sections": [
146
+ {
147
+ "sectionCode": "list",
148
+ "sectionLabel": "Liste des employes",
149
+ "resources": [ /* SmartTable, filters */ ]
150
+ },
151
+ {
152
+ "sectionCode": "form",
153
+ "sectionLabel": "Fiche employe",
154
+ "resources": [ /* SmartForm with tabs */ ]
155
+ },
156
+ {
157
+ "sectionCode": "dashboard",
158
+ "sectionLabel": "Tableau de bord",
159
+ "resources": [ /* SmartDashboard */ ]
160
+ }
161
+ ]
162
+ }
163
+ ```
164
+
165
+ Update `index.json` with screens.json hash and status.
166
+
167
+ ## Validation
168
+
169
+ - [ ] Every resource has a valid `permission` referencing permissions.json
170
+ - [ ] Every SmartTable column references a valid entity attribute
171
+ - [ ] Every SmartForm field references a valid entity attribute
172
+ - [ ] Every section has at least one resource
173
+ - [ ] Every module has at least one section
174
+
175
+ ## Transition
176
+
177
+ -> Step 02 (wireframes) — Generate visual mockups for each screen
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: step-02-wireframes
3
+ description: Generate wireframes (ASCII/HTML mockups) for each screen defined in step-01
4
+ model: opus
5
+ next_step: steps/step-03-navigation.md
6
+ ---
7
+
8
+ # Step 02 — Wireframes (Generate Mockups)
9
+
10
+ ## Objective
11
+
12
+ Generate visual wireframes for each screen defined in screens.json. Each wireframe provides a concrete representation of the UI layout, component placement, and user interactions.
13
+
14
+ ## Prerequisites
15
+
16
+ - Step 01 (screens) completed
17
+ - screens.json exists for each module with detailed section/resource specs
18
+
19
+ ## Execution
20
+
21
+ ### 1. Load Screen Specs
22
+
23
+ For each module, read screens.json via ba-reader.
24
+
25
+ ### 2. Generate Wireframes per Resource
26
+
27
+ For each resource in each section, generate a wireframe object:
28
+
29
+ **SmartTable wireframe:**
30
+ ```json
31
+ {
32
+ "screen": "{sectionCode}-{resourceCode}",
33
+ "section": "{sectionCode}",
34
+ "mockupFormat": "ascii",
35
+ "mockup": "+----------------------------------------------------------+\n| [Departement v] [Statut v] [+ Nouveau employe] |\n+------+----------------+---------------+--------+---------+\n| Code | Nom complet | Departement | Statut | Actions |\n+------+----------------+---------------+--------+---------+\n| E001 | Dupont Marie | RH | Actif | [E] [S] |\n| E002 | Martin Pierre | IT | Conge | [E] [S] |\n+------+----------------+---------------+--------+---------+\n| << 1 2 3 ... 10 >> 25 par page |\n+----------------------------------------------------------+",
36
+ "elements": ["FilterBar", "DataGrid", "Pagination", "ActionButtons"],
37
+ "actions": ["filter", "sort", "create", "edit", "delete", "export"],
38
+ "componentMapping": [
39
+ { "wireframeElement": "FilterBar", "reactComponent": "SmartFilter" },
40
+ { "wireframeElement": "DataGrid", "reactComponent": "SmartTable" },
41
+ { "wireframeElement": "Pagination", "reactComponent": "SmartPagination" },
42
+ { "wireframeElement": "ActionButtons", "reactComponent": "SmartToolbar" }
43
+ ],
44
+ "layout": {
45
+ "type": "vertical",
46
+ "regions": ["filters", "grid", "pagination"]
47
+ },
48
+ "permissionsRequired": ["{AppCode}.{ModuleCode}.Read"]
49
+ }
50
+ ```
51
+
52
+ **SmartForm wireframe:**
53
+ ```json
54
+ {
55
+ "screen": "{sectionCode}-{resourceCode}",
56
+ "section": "{sectionCode}",
57
+ "mockupFormat": "ascii",
58
+ "mockup": "+----------------------------------------------------------+\n| Fiche Employe [Sauvegarder] |\n+----------------------------------------------------------+\n| [Informations] [Contrats] [Documents] |\n+----------------------------------------------------------+\n| Prenom: [_______________] Nom: [_______________] |\n| Email: [_______________] Tel: [_______________] |\n| Departement: [Selectionnez v ] Poste: [_____________] |\n| Date embauche: [__ /__ /____] Statut: [Actif v] |\n+----------------------------------------------------------+",
59
+ "elements": ["TabBar", "FormFields", "SaveButton"],
60
+ "actions": ["save", "cancel", "tab-switch"],
61
+ "componentMapping": [
62
+ { "wireframeElement": "TabBar", "reactComponent": "SmartTabs" },
63
+ { "wireframeElement": "FormFields", "reactComponent": "SmartForm" },
64
+ { "wireframeElement": "SaveButton", "reactComponent": "SmartButton" }
65
+ ],
66
+ "layout": {
67
+ "type": "vertical",
68
+ "regions": ["header", "tabs", "form-body", "actions"]
69
+ },
70
+ "permissionsRequired": ["{AppCode}.{ModuleCode}.Update"]
71
+ }
72
+ ```
73
+
74
+ **SmartDashboard wireframe:**
75
+ ```json
76
+ {
77
+ "screen": "{sectionCode}-{resourceCode}",
78
+ "section": "{sectionCode}",
79
+ "mockupFormat": "ascii",
80
+ "mockup": "+----------------------------------------------------------+\n| Tableau de bord RH |\n+-------------+-------------+-------------+----------------+\n| Total actifs| En conge | Nouveaux | Taux rotation |\n| 156 | 12 | 8 | 3.2% |\n+-------------+-------------+-------------+----------------+\n| [Repartition par dept (pie)] [Evolution effectifs (bar)]|\n+----------------------------------------------------------+",
81
+ "elements": ["KPICards", "PieChart", "BarChart"],
82
+ "actions": ["filter-period", "export-report"],
83
+ "componentMapping": [
84
+ { "wireframeElement": "KPICards", "reactComponent": "SmartKPI" },
85
+ { "wireframeElement": "PieChart", "reactComponent": "SmartChart" },
86
+ { "wireframeElement": "BarChart", "reactComponent": "SmartChart" }
87
+ ],
88
+ "layout": {
89
+ "type": "grid",
90
+ "regions": ["kpi-row", "charts-row"]
91
+ },
92
+ "permissionsRequired": ["{AppCode}.{ModuleCode}.Read"]
93
+ }
94
+ ```
95
+
96
+ ### 3. Enrich screens.json with Wireframes
97
+
98
+ For each module, update screens.json to embed wireframes at the resource level:
99
+
100
+ ```json
101
+ {
102
+ "sections": [
103
+ {
104
+ "sectionCode": "list",
105
+ "sectionLabel": "Liste des employes",
106
+ "resources": [
107
+ {
108
+ "code": "employees-grid",
109
+ "type": "SmartTable",
110
+ "columns": [ /* ... */ ],
111
+ "wireframe": {
112
+ "screen": "list-employees-grid",
113
+ "mockupFormat": "ascii",
114
+ "mockup": "...",
115
+ "elements": [...],
116
+ "componentMapping": [...],
117
+ "layout": {...}
118
+ }
119
+ }
120
+ ]
121
+ }
122
+ ]
123
+ }
124
+ ```
125
+
126
+ ### 4. Write Updated screens.json
127
+
128
+ Write via ba-writer for each module. Update index.json hashes.
129
+
130
+ ## Validation
131
+
132
+ - [ ] Every resource has a wireframe object
133
+ - [ ] Every wireframe has a non-empty `mockup` field
134
+ - [ ] Every wireframe has `elements[]` and `componentMapping[]`
135
+ - [ ] Wireframe `permissionsRequired` references valid permission paths
136
+ - [ ] All wireframes have `mockupFormat` set ("ascii" or "html")
137
+
138
+ ## Transition
139
+
140
+ -> Step 03 (navigation) — Define the complete navigation tree
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: step-03-navigation
3
+ description: Define the complete navigation tree (routes, menus, breadcrumbs)
4
+ model: opus
5
+ ---
6
+
7
+ # Step 03 — Navigation (Navigation Tree)
8
+
9
+ ## Objective
10
+
11
+ Define the complete navigation tree for the application: routes, menus, breadcrumbs, and seedDataCore entries. This ensures consistent navigation across all modules.
12
+
13
+ ## Prerequisites
14
+
15
+ - Step 01 (screens) and Step 02 (wireframes) completed
16
+ - screens.json exists for each module with sections and resources
17
+
18
+ ## Execution
19
+
20
+ ### 1. Load All Screens
21
+
22
+ Read screens.json for every module via ba-reader. Collect all sections and resources.
23
+
24
+ ### 2. Build Navigation Tree
25
+
26
+ Build the navigation hierarchy following SmartStack conventions:
27
+
28
+ ```
29
+ Application
30
+ |-- Module 1
31
+ | |-- Section 1 (e.g., "Liste")
32
+ | | |-- Resource 1 (e.g., "employees-grid")
33
+ | |-- Section 2 (e.g., "Fiche")
34
+ | | |-- Resource 1 (e.g., "employee-form")
35
+ | |-- Section 3 (e.g., "Dashboard")
36
+ | |-- Resource 1 (e.g., "hr-dashboard")
37
+ |-- Module 2
38
+ |-- ...
39
+ ```
40
+
41
+ ### 3. Generate navigation.json
42
+
43
+ ```json
44
+ {
45
+ "application": {
46
+ "code": "{AppCode}",
47
+ "name": "{AppName}",
48
+ "icon": "app-icon"
49
+ },
50
+ "modules": [
51
+ {
52
+ "code": "{ModuleCode}",
53
+ "name": "{ModuleName}",
54
+ "icon": "module-icon",
55
+ "route": "/{app-code}/{module-code}",
56
+ "permission": "{AppCode}.{ModuleCode}.Read",
57
+ "sections": [
58
+ {
59
+ "code": "{sectionCode}",
60
+ "label": "{sectionLabel}",
61
+ "route": "/{app-code}/{module-code}/{section-code}",
62
+ "icon": "section-icon",
63
+ "resources": [
64
+ {
65
+ "code": "{resourceCode}",
66
+ "type": "{SmartTable|SmartForm|SmartDashboard|SmartKanban}",
67
+ "route": "/{app-code}/{module-code}/{section-code}/{resource-code}",
68
+ "permission": "{AppCode}.{ModuleCode}.{Action}"
69
+ }
70
+ ]
71
+ }
72
+ ]
73
+ }
74
+ ],
75
+ "menuItems": [
76
+ {
77
+ "label": "{ModuleName}",
78
+ "icon": "module-icon",
79
+ "route": "/{app-code}/{module-code}",
80
+ "permission": "{AppCode}.{ModuleCode}.Read",
81
+ "children": [
82
+ {
83
+ "label": "{sectionLabel}",
84
+ "route": "/{app-code}/{module-code}/{section-code}",
85
+ "permission": "{AppCode}.{ModuleCode}.Read"
86
+ }
87
+ ]
88
+ }
89
+ ],
90
+ "breadcrumbs": {
91
+ "/{app-code}/{module-code}/{section-code}": [
92
+ { "label": "{AppName}", "route": "/{app-code}" },
93
+ { "label": "{ModuleName}", "route": "/{app-code}/{module-code}" },
94
+ { "label": "{sectionLabel}", "route": "" }
95
+ ]
96
+ }
97
+ }
98
+ ```
99
+
100
+ ### 4. Write navigation.json
101
+
102
+ Write via ba-writer at project level (alongside master index.json). Update index.json with navigation.json reference.
103
+
104
+ ## Validation
105
+
106
+ - [ ] Every module in index.json has a corresponding navigation entry
107
+ - [ ] Every section in screens.json has a corresponding menu item
108
+ - [ ] Every route is unique
109
+ - [ ] Every menu item has a valid permission reference
110
+ - [ ] Breadcrumbs cover all routes
111
+
112
+ ## Completion Summary
113
+
114
+ ```
115
+ ================================================================
116
+ UI DESIGN COMPLETE
117
+ ================================================================
118
+
119
+ | Module | Sections | Resources | Wireframes |
120
+ |-----------------|----------|-----------|------------|
121
+ | {moduleCode} | {count} | {count} | {count} |
122
+ | ... | ... | ... | ... |
123
+
124
+ | Artifact | Path |
125
+ |-----------------|-----------------------------------|
126
+ | screens.json | {module-path}/screens.json |
127
+ | navigation.json | {project-path}/navigation.json |
128
+
129
+ NEXT STEPS:
130
+ 1. Run /ba-generate-html to produce the interactive HTML with mockups
131
+ 2. Client reviews the HTML (mockups, ERD, permission matrix)
132
+ 3. Run /ba-review to apply corrections
133
+ ================================================================
134
+ ```
@@ -25,7 +25,6 @@ Generate the interactive HTML document of the business analysis from the JSON an
25
25
  ## Prerequisites
26
26
 
27
27
  - JSON analysis files must exist (at minimum `index.json` + `cadrage.json`)
28
- - PRD files must exist (`.ralph/prd-{moduleCode}.json`) — run `/derive-prd` first
29
28
  - Feature status must be `consolidated`
30
29
 
31
30
  ## Workflow