@atlashub/smartstack-cli 3.36.0 → 3.38.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.
- package/dist/index.js +16 -24
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +201 -256
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +3 -2
- package/scripts/extract-api-endpoints.ts +325 -0
- package/scripts/extract-business-rules.ts +440 -0
- package/scripts/generate-doc-with-mock-ui.ts +804 -0
- package/scripts/health-check.sh +168 -0
- package/scripts/postinstall.js +18 -0
- package/templates/agents/ba-reader.md +9 -9
- package/templates/agents/ba-writer.md +12 -15
- package/templates/agents/code-reviewer.md +1 -1
- package/templates/agents/docs-context-reader.md +1 -1
- package/templates/agents/gitflow/merge.md +0 -4
- package/templates/agents/gitflow/pr.md +0 -4
- package/templates/agents/gitflow/start.md +30 -5
- package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +20 -20
- package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +16 -24
- package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +2 -2
- package/templates/skills/_resources/mcp-validate-documentation-spec.md +3 -3
- package/templates/skills/_shared.md +15 -17
- package/templates/skills/ai-prompt/SKILL.md +1 -1
- package/templates/skills/ai-prompt/steps/step-00-init.md +47 -0
- package/templates/skills/apex/SKILL.md +3 -4
- package/templates/skills/apex/_shared.md +10 -20
- package/templates/skills/apex/references/analysis-methods.md +141 -0
- package/templates/skills/apex/references/challenge-questions.md +1 -21
- package/templates/skills/apex/references/core-seed-data.md +35 -57
- package/templates/skills/apex/references/examine-build-validation.md +87 -0
- package/templates/skills/apex/references/execution-frontend-gates.md +177 -0
- package/templates/skills/apex/references/execution-frontend-patterns.md +105 -0
- package/templates/skills/apex/references/execution-layer1-rules.md +96 -0
- package/templates/skills/apex/references/initialization-challenge-flow.md +110 -0
- package/templates/skills/apex/references/planning-layer-mapping.md +151 -0
- package/templates/skills/apex/references/post-checks.md +145 -40
- package/templates/skills/apex/references/smartstack-api.md +35 -51
- package/templates/skills/apex/references/smartstack-frontend.md +17 -17
- package/templates/skills/apex/references/smartstack-layers.md +38 -62
- package/templates/skills/apex/steps/step-00-init.md +14 -26
- package/templates/skills/apex/steps/step-01-analyze.md +10 -143
- package/templates/skills/apex/steps/step-02-plan.md +10 -92
- package/templates/skills/apex/steps/step-03-execute.md +47 -249
- package/templates/skills/apex/steps/step-04-examine.md +14 -78
- package/templates/skills/apex/steps/step-05-deep-review.md +2 -2
- package/templates/skills/apex/steps/step-08-run-tests.md +2 -0
- package/templates/skills/application/SKILL.md +6 -7
- package/templates/skills/application/references/backend-controller-hierarchy.md +16 -16
- package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -0
- package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -0
- package/templates/skills/application/references/backend-verification.md +1 -1
- package/templates/skills/application/references/frontend-i18n-and-output.md +67 -0
- package/templates/skills/application/references/frontend-route-naming.md +117 -0
- package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -0
- package/templates/skills/application/references/frontend-verification.md +12 -12
- package/templates/skills/application/references/init-parameter-detection.md +120 -0
- package/templates/skills/application/references/migration-checklist-troubleshooting.md +100 -0
- package/templates/skills/application/references/nav-fallback-procedure.md +5 -6
- package/templates/skills/application/references/provider-template.md +2 -6
- package/templates/skills/application/references/roles-client-project-handling.md +55 -0
- package/templates/skills/application/references/roles-fallback-procedure.md +149 -0
- package/templates/skills/application/references/test-coverage-requirements.md +213 -0
- package/templates/skills/application/references/test-frontend.md +3 -3
- package/templates/skills/application/steps/step-00-init.md +11 -141
- package/templates/skills/application/steps/step-01-navigation.md +3 -3
- package/templates/skills/application/steps/step-02-permissions.md +4 -4
- package/templates/skills/application/steps/step-03-roles.md +18 -175
- package/templates/skills/application/steps/step-03b-provider.md +1 -2
- package/templates/skills/application/steps/step-04-backend.md +19 -110
- package/templates/skills/application/steps/step-05-frontend.md +17 -143
- package/templates/skills/application/steps/step-06-migration.md +12 -60
- package/templates/skills/application/steps/step-07-tests.md +9 -76
- package/templates/skills/application/templates-backend.md +29 -27
- package/templates/skills/application/templates-frontend.md +48 -48
- package/templates/skills/application/templates-seed.md +57 -131
- package/templates/skills/business-analyse/SKILL.md +27 -30
- package/templates/skills/business-analyse/_architecture.md +6 -6
- package/templates/skills/business-analyse/_shared.md +60 -88
- package/templates/skills/business-analyse/questionnaire/04-data.md +3 -3
- package/templates/skills/business-analyse/questionnaire/06-security.md +1 -1
- package/templates/skills/business-analyse/questionnaire/13-cross-module.md +1 -1
- package/templates/skills/business-analyse/react/application-viewer.md +12 -12
- package/templates/skills/business-analyse/react/components.md +8 -12
- package/templates/skills/business-analyse/react/schema.md +11 -11
- package/templates/skills/business-analyse/references/agent-module-prompt.md +2 -3
- package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -0
- package/templates/skills/business-analyse/references/cache-warming-strategy.md +2 -2
- package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -0
- package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -0
- package/templates/skills/business-analyse/references/cadrage-shared-modules.md +69 -0
- package/templates/skills/business-analyse/references/cadrage-structure-cards.md +1 -1
- package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -0
- package/templates/skills/business-analyse/references/consolidation-structural-checks.md +2 -2
- package/templates/skills/business-analyse/references/deploy-modes.md +5 -5
- package/templates/skills/business-analyse/references/detection-strategies.md +7 -7
- package/templates/skills/business-analyse/references/handoff-file-templates.md +14 -22
- package/templates/skills/business-analyse/references/handoff-mappings.md +4 -4
- package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -0
- package/templates/skills/business-analyse/references/init-schema-deployment.md +3 -3
- package/templates/skills/business-analyse/references/naming-conventions.md +22 -24
- package/templates/skills/business-analyse/references/prd-generation.md +2 -2
- package/templates/skills/business-analyse/references/review-data-mapping.md +2 -2
- package/templates/skills/business-analyse/references/robustness-checks.md +1 -1
- package/templates/skills/business-analyse/references/spec-auto-inference.md +3 -3
- package/templates/skills/business-analyse/references/team-orchestration.md +49 -6
- package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
- package/templates/skills/business-analyse/references/ui-resource-cards.md +18 -18
- package/templates/skills/business-analyse/references/validate-incremental-html.md +2 -2
- package/templates/skills/business-analyse/references/validation-checklist.md +2 -2
- package/templates/skills/business-analyse/schemas/application-schema.json +4 -5
- package/templates/skills/business-analyse/schemas/project-schema.json +1 -6
- package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +2 -3
- package/templates/skills/business-analyse/schemas/sections/specification-schema.json +4 -4
- package/templates/skills/business-analyse/steps/step-00-init.md +8 -17
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +35 -198
- package/templates/skills/business-analyse/steps/step-01b-applications.md +16 -20
- package/templates/skills/business-analyse/steps/step-02-decomposition.md +1 -1
- package/templates/skills/business-analyse/steps/step-03a1-setup.md +4 -4
- package/templates/skills/business-analyse/steps/step-03a2-analysis.md +1 -1
- package/templates/skills/business-analyse/steps/step-03b-ui.md +4 -4
- package/templates/skills/business-analyse/steps/step-03c-compile.md +66 -140
- package/templates/skills/business-analyse/steps/step-03d-validate.md +2 -2
- package/templates/skills/business-analyse/steps/step-04a-collect.md +2 -2
- package/templates/skills/business-analyse/steps/step-04b-analyze.md +42 -160
- package/templates/skills/business-analyse/steps/step-04c-decide.md +1 -1
- package/templates/skills/business-analyse/steps/step-05a-handoff.md +74 -104
- package/templates/skills/business-analyse/steps/step-05b-deploy.md +13 -11
- package/templates/skills/business-analyse/steps/step-06-review.md +3 -3
- package/templates/skills/business-analyse/templates/tpl-frd.md +13 -13
- package/templates/skills/business-analyse/templates/tpl-handoff.md +12 -12
- package/templates/skills/business-analyse/templates-frd.md +25 -25
- package/templates/skills/business-analyse/templates-react.md +15 -21
- package/templates/skills/controller/SKILL.md +1 -1
- package/templates/skills/controller/postman-templates.md +1 -1
- package/templates/skills/controller/references/controller-code-templates.md +2 -2
- package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -0
- package/templates/skills/controller/references/permission-sync-templates.md +13 -16
- package/templates/skills/controller/steps/step-00-init.md +11 -11
- package/templates/skills/controller/steps/step-03-generate.md +64 -103
- package/templates/skills/controller/templates.md +67 -71
- package/templates/skills/debug/SKILL.md +13 -218
- package/templates/skills/debug/steps/step-00-init.md +57 -0
- package/templates/skills/debug/steps/step-01-analyze.md +219 -0
- package/templates/skills/debug/steps/step-02-resolve.md +85 -0
- package/templates/skills/documentation/SKILL.md +49 -345
- package/templates/skills/documentation/data-schema.md +11 -8
- package/templates/skills/documentation/steps/step-00-init.md +70 -0
- package/templates/skills/documentation/steps/step-01-scan.md +113 -0
- package/templates/skills/documentation/steps/step-02-generate.md +231 -0
- package/templates/skills/documentation/steps/step-03-validate.md +238 -0
- package/templates/skills/documentation/templates.md +480 -322
- package/templates/skills/efcore/references/both-contexts.md +32 -0
- package/templates/skills/efcore/references/database-operations.md +67 -0
- package/templates/skills/efcore/references/destructive-operations.md +38 -0
- package/templates/skills/efcore/references/reset-operations.md +81 -0
- package/templates/skills/efcore/references/seed-methods.md +86 -0
- package/templates/skills/efcore/references/shared-init-functions.md +250 -0
- package/templates/skills/efcore/references/sql-objects-injection.md +61 -0
- package/templates/skills/efcore/references/troubleshooting.md +81 -0
- package/templates/skills/efcore/steps/db/step-deploy.md +1 -32
- package/templates/skills/efcore/steps/db/step-reset.md +7 -103
- package/templates/skills/efcore/steps/db/step-seed.md +10 -132
- package/templates/skills/efcore/steps/db/step-status.md +5 -44
- package/templates/skills/efcore/steps/migration/step-03-validate.md +8 -62
- package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +1 -57
- package/templates/skills/efcore/steps/shared/step-00-init.md +11 -254
- package/templates/skills/efcore/steps/squash/step-03-create.md +1 -58
- package/templates/skills/feature-full/SKILL.md +1 -1
- package/templates/skills/feature-full/steps/step-00-init.md +57 -0
- package/templates/skills/feature-full/steps/step-01-implementation.md +1 -1
- package/templates/skills/gitflow/SKILL.md +1 -1
- package/templates/skills/gitflow/_shared.md +23 -0
- package/templates/skills/gitflow/references/commit-message-generation.md +58 -0
- package/templates/skills/gitflow/references/commit-migration-validation.md +49 -0
- package/templates/skills/gitflow/references/finish-cleanup.md +51 -0
- package/templates/skills/gitflow/references/finish-version-bumping.md +45 -0
- package/templates/skills/gitflow/references/init-environment-detection.md +41 -0
- package/templates/skills/gitflow/references/init-questions.md +185 -0
- package/templates/skills/gitflow/references/init-structure-creation.md +71 -0
- package/templates/skills/gitflow/references/init-version-detection.md +21 -0
- package/templates/skills/gitflow/references/init-workspace-detection.md +43 -0
- package/templates/skills/gitflow/references/merge-ci-status.md +36 -0
- package/templates/skills/gitflow/references/merge-execution.md +62 -0
- package/templates/skills/gitflow/references/merge-pr-context.md +76 -0
- package/templates/skills/gitflow/references/pr-build-checks.md +60 -0
- package/templates/skills/gitflow/references/pr-generation.md +58 -0
- package/templates/skills/gitflow/references/start-branch-normalization.md +28 -0
- package/templates/skills/gitflow/references/start-worktree-creation.md +50 -0
- package/templates/skills/gitflow/references/sync-push-verify.md +44 -0
- package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -0
- package/templates/skills/gitflow/steps/step-commit.md +12 -91
- package/templates/skills/gitflow/steps/step-finish.md +15 -159
- package/templates/skills/gitflow/steps/step-init.md +24 -326
- package/templates/skills/gitflow/steps/step-merge.md +17 -176
- package/templates/skills/gitflow/steps/step-pr.md +10 -116
- package/templates/skills/gitflow/steps/step-start.md +16 -109
- package/templates/skills/gitflow/steps/step-sync.md +6 -69
- package/templates/skills/ralph-loop/SKILL.md +6 -0
- package/templates/skills/ralph-loop/references/category-completeness.md +185 -0
- package/templates/skills/ralph-loop/references/compact-loop.md +1 -1
- package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -0
- package/templates/skills/ralph-loop/references/module-transition.md +151 -0
- package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -0
- package/templates/skills/ralph-loop/references/parallel-execution.md +246 -0
- package/templates/skills/ralph-loop/references/task-transform-legacy.md +6 -9
- package/templates/skills/ralph-loop/references/team-orchestration.md +45 -3
- package/templates/skills/ralph-loop/steps/step-00-init.md +36 -109
- package/templates/skills/ralph-loop/steps/step-01-task.md +15 -163
- package/templates/skills/ralph-loop/steps/step-02-execute.md +8 -154
- package/templates/skills/ralph-loop/steps/step-04-check.md +21 -73
- package/templates/skills/review-code/references/owasp-api-top10.md +5 -5
- package/templates/skills/review-code/references/smartstack-conventions.md +11 -11
- package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -0
- package/templates/skills/validate-feature/references/db-validation-checks.md +180 -0
- package/templates/skills/validate-feature/steps/step-01-compile.md +5 -2
- package/templates/skills/validate-feature/steps/step-04-api-smoke.md +34 -145
- package/templates/skills/validate-feature/steps/step-05-db-validation.md +74 -260
- package/templates/skills/workflow/SKILL.md +1 -1
- package/templates/skills/workflow/steps/step-00-init.md +57 -0
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
{
|
|
9
9
|
"code": "list",
|
|
10
10
|
"labels": { "fr": "Liste", "en": "List", "it": "Elenco", "de": "Liste" },
|
|
11
|
-
"route": "/
|
|
11
|
+
"route": "/{app}/{module}",
|
|
12
12
|
"icon": "list",
|
|
13
|
-
"permission": "
|
|
13
|
+
"permission": "{app}.{module}.read",
|
|
14
14
|
"wireframe": "{module}-list",
|
|
15
15
|
"useCases": ["UC-{PREFIX}-001", "UC-{PREFIX}-002"],
|
|
16
16
|
"businessRules": ["BR-VAL-{PREFIX}-001"],
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"code": "{module}-grid",
|
|
20
20
|
"type": "SmartTable",
|
|
21
21
|
"entity": "{MainEntity}",
|
|
22
|
-
"permission": "
|
|
22
|
+
"permission": "{app}.{module}.read",
|
|
23
23
|
"columns": ["name", "status", "createdAt"],
|
|
24
24
|
"columnDefs": [
|
|
25
25
|
{ "field": "code", "label": {"fr": "Code", "en": "Code"}, "format": "text", "sortable": true, "filterable": true, "clickAction": "navigate:detail" },
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
],
|
|
30
30
|
"actions": ["view", "edit", "delete"],
|
|
31
31
|
"rowActions": [
|
|
32
|
-
{ "action": "view", "icon": "eye", "permission": "
|
|
33
|
-
{ "action": "edit", "icon": "edit", "permission": "
|
|
34
|
-
{ "action": "delete", "icon": "trash", "permission": "
|
|
32
|
+
{ "action": "view", "icon": "eye", "permission": "{app}.{module}.read" },
|
|
33
|
+
{ "action": "edit", "icon": "edit", "permission": "{app}.{module}.update", "showWhen": {"status": ["draft"]} },
|
|
34
|
+
{ "action": "delete", "icon": "trash", "permission": "{app}.{module}.delete", "confirm": true }
|
|
35
35
|
],
|
|
36
36
|
"filters": ["status", "dateRange"],
|
|
37
37
|
"defaultSort": { "field": "createdAt", "direction": "desc" },
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"code": "{module}-form",
|
|
52
52
|
"type": "SmartForm",
|
|
53
53
|
"entity": "{MainEntity}",
|
|
54
|
-
"permission": "
|
|
54
|
+
"permission": "{app}.{module}.create",
|
|
55
55
|
"fields": [
|
|
56
56
|
{ "name": "code", "component": "Input", "required": true, "validation": "Unique, auto-generated" },
|
|
57
57
|
{ "name": "name", "component": "Input", "required": true },
|
|
@@ -81,9 +81,9 @@
|
|
|
81
81
|
{
|
|
82
82
|
"code": "detail",
|
|
83
83
|
"labels": { "fr": "Détail", "en": "Detail", "it": "Dettaglio", "de": "Detail" },
|
|
84
|
-
"route": "/
|
|
84
|
+
"route": "/{app}/{module}/:id",
|
|
85
85
|
"icon": "file-text",
|
|
86
|
-
"permission": "
|
|
86
|
+
"permission": "{app}.{module}.read",
|
|
87
87
|
"wireframe": "{module}-detail",
|
|
88
88
|
"navigation": "hidden",
|
|
89
89
|
"useCases": ["UC-{PREFIX}-002"],
|
|
@@ -93,11 +93,11 @@
|
|
|
93
93
|
"code": "{module}-detail-header",
|
|
94
94
|
"type": "DetailHeader",
|
|
95
95
|
"entity": "{MainEntity}",
|
|
96
|
-
"permission": "
|
|
96
|
+
"permission": "{app}.{module}.read",
|
|
97
97
|
"fields": ["code", "name", "status"],
|
|
98
98
|
"actions": [
|
|
99
|
-
{ "action": "edit", "icon": "edit", "permission": "
|
|
100
|
-
{ "action": "delete", "icon": "trash", "permission": "
|
|
99
|
+
{ "action": "edit", "icon": "edit", "permission": "{app}.{module}.update", "showWhen": {"status": ["draft"]} },
|
|
100
|
+
{ "action": "delete", "icon": "trash", "permission": "{app}.{module}.delete", "confirm": true }
|
|
101
101
|
],
|
|
102
102
|
"statusBadge": { "field": "status", "colorMap": "stateMachine:{Entity}" }
|
|
103
103
|
},
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"code": "{module}-detail-tabs",
|
|
106
106
|
"type": "TabPanel",
|
|
107
107
|
"entity": "{MainEntity}",
|
|
108
|
-
"permission": "
|
|
108
|
+
"permission": "{app}.{module}.read",
|
|
109
109
|
"tabs": [
|
|
110
110
|
{
|
|
111
111
|
"code": "info",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"editMode": {
|
|
120
120
|
"enabled": true,
|
|
121
121
|
"formRef": "{module}-form",
|
|
122
|
-
"permission": "
|
|
122
|
+
"permission": "{app}.{module}.update"
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
},
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
"mockup": "╔═══...",
|
|
177
177
|
"elements": ["DataGrid", "FilterBar", "Pagination", "CreateButton"],
|
|
178
178
|
"actions": ["filter", "sort", "create", "view-detail"],
|
|
179
|
-
"permissionsRequired": ["
|
|
179
|
+
"permissionsRequired": ["{app}.{module}.read"],
|
|
180
180
|
"componentMapping": [
|
|
181
181
|
{ "wireframeElement": "DataGrid", "reactComponent": "SmartTable" },
|
|
182
182
|
{ "wireframeElement": "FilterBar", "reactComponent": "SmartFilter" },
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
"regions": [
|
|
188
188
|
{ "id": "toolbar", "position": "top", "components": [
|
|
189
189
|
{ "type": "FilterBar", "resourceRef": "{module}-filters" },
|
|
190
|
-
{ "type": "ActionMenu", "resourceRef": "{module}-actions", "permission": "
|
|
190
|
+
{ "type": "ActionMenu", "resourceRef": "{module}-actions", "permission": "{app}.{module}.create" }
|
|
191
191
|
]},
|
|
192
192
|
{ "id": "content", "position": "main", "span": 12, "components": [
|
|
193
193
|
{ "type": "SmartTable", "resourceRef": "{module}-grid" }
|
|
@@ -238,7 +238,7 @@ A wireframe without `componentMapping` or `layout` will FAIL validation in step
|
|
|
238
238
|
"type": "page",
|
|
239
239
|
"regions": [
|
|
240
240
|
{ "id": "header", "position": "top", "components": [
|
|
241
|
-
{ "type": "BackButton", "target": "/
|
|
241
|
+
{ "type": "BackButton", "target": "/{app}/{module}" },
|
|
242
242
|
{ "type": "DetailHeader", "resourceRef": "{module}-detail-header" },
|
|
243
243
|
{ "type": "StatusBadge", "resourceRef": "{module}-status" }
|
|
244
244
|
]},
|
|
@@ -247,7 +247,7 @@ A wireframe without `componentMapping` or `layout` will FAIL validation in step
|
|
|
247
247
|
]}
|
|
248
248
|
]
|
|
249
249
|
},
|
|
250
|
-
"permissionsRequired": ["
|
|
250
|
+
"permissionsRequired": ["{app}.{module}.read"]
|
|
251
251
|
}
|
|
252
252
|
```
|
|
253
253
|
|
|
@@ -13,7 +13,7 @@ The FINAL deployment at step-05 (handoff) will include consolidation and handoff
|
|
|
13
13
|
|
|
14
14
|
**Source:** `html/ba-interactive.html` (relative to skill root = `~/.claude/skills/business-analyse/html/`)
|
|
15
15
|
|
|
16
|
-
**Destination:** `docs/
|
|
16
|
+
**Destination:** `docs/{app}/business-analyse/v{version}/ba-interactive.html`
|
|
17
17
|
|
|
18
18
|
### Step 1: Read Sources
|
|
19
19
|
|
|
@@ -111,7 +111,7 @@ See [references/wireframe-svg-style-guide.md](wireframe-svg-style-guide.md) for
|
|
|
111
111
|
|
|
112
112
|
```
|
|
113
113
|
✓ Interactive HTML updated (incremental):
|
|
114
|
-
Path: docs/
|
|
114
|
+
Path: docs/{app}/business-analyse/v{version}/ba-interactive.html
|
|
115
115
|
Modules included: {completedModules.length}/{totalModules} specified
|
|
116
116
|
- {completedModule1}: {uc_count} UCs, {br_count} BRs, {wireframe_count} wireframes
|
|
117
117
|
- {completedModule2}: ...
|
|
@@ -115,10 +115,10 @@ const checklist = {
|
|
|
115
115
|
},
|
|
116
116
|
|
|
117
117
|
permissionFormat: {
|
|
118
|
-
check: "All permissions use correct format: module-level
|
|
118
|
+
check: "All permissions use correct format: module-level {app}.{module}.{action} or section-level {app}.{module}.{section}.{action}",
|
|
119
119
|
status: validatePermissionFormat() ? "PASS" : "FAIL",
|
|
120
120
|
blocking: true,
|
|
121
|
-
details: "Wrong format breaks RBAC system. Module-level =
|
|
121
|
+
details: "Wrong format breaks RBAC system. Module-level = 3 segments, section-level = 4 segments."
|
|
122
122
|
},
|
|
123
123
|
|
|
124
124
|
rolePermissions: {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "application-schema.json",
|
|
4
4
|
"title": "SmartStack Business Analysis - Application Level",
|
|
5
|
-
"description": "Master feature.json for multi-module application analysis. Published to docs/
|
|
5
|
+
"description": "Master feature.json for multi-module application analysis. Published to docs/{app}/business-analyse/v{X.Y}/feature.json",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": ["id", "version", "status", "scope", "metadata"],
|
|
8
8
|
"properties": {
|
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
|
|
30
30
|
"metadata": {
|
|
31
31
|
"type": "object",
|
|
32
|
-
"required": ["createdAt", "updatedAt", "application", "
|
|
32
|
+
"required": ["createdAt", "updatedAt", "application", "language", "featureDescription"],
|
|
33
33
|
"properties": {
|
|
34
34
|
"createdAt": { "type": "string", "format": "date-time" },
|
|
35
35
|
"updatedAt": { "type": "string", "format": "date-time" },
|
|
36
36
|
"application": { "type": "string", "description": "Application name (PascalCase)" },
|
|
37
|
-
"context": { "type": "string", "enum": ["business", "platform", "personal"], "description": "Navigation context (business by default, other contexts allowed in project mode)" },
|
|
38
37
|
"projectRef": { "type": ["string", "null"], "description": "Parent project ID (PROJ-XXX) when part of a multi-application project, null for standalone" },
|
|
39
38
|
"language": { "type": "string", "enum": ["fr", "en", "it", "de"] },
|
|
40
39
|
"featureDescription": { "type": "string" },
|
|
@@ -61,7 +60,7 @@
|
|
|
61
60
|
"applicationRoute": {
|
|
62
61
|
"type": "string",
|
|
63
62
|
"pattern": "^/[a-z-/]+$",
|
|
64
|
-
"description": "Kebab-case route path for navigation (e.g., /
|
|
63
|
+
"description": "Kebab-case route path for navigation (e.g., /human-resources). Confirmed in step-01b."
|
|
65
64
|
},
|
|
66
65
|
"applicationIcon": {
|
|
67
66
|
"type": "string",
|
|
@@ -150,7 +149,7 @@
|
|
|
150
149
|
"role": { "type": "string", "description": "Role name (e.g., Sales Admin)" },
|
|
151
150
|
"description": { "type": "string" },
|
|
152
151
|
"level": { "type": "string", "enum": ["admin", "manager", "contributor", "viewer"], "description": "Permission hierarchy level" },
|
|
153
|
-
"permissionPattern": { "type": "string", "description": "Permission pattern (e.g.,
|
|
152
|
+
"permissionPattern": { "type": "string", "description": "Permission pattern (e.g., sales.* for admin)" }
|
|
154
153
|
}
|
|
155
154
|
}
|
|
156
155
|
},
|
|
@@ -222,15 +222,10 @@
|
|
|
222
222
|
"description": "Enriched by step-01b-applications: application registry",
|
|
223
223
|
"items": {
|
|
224
224
|
"type": "object",
|
|
225
|
-
"required": ["code", "name"
|
|
225
|
+
"required": ["code", "name"],
|
|
226
226
|
"properties": {
|
|
227
227
|
"code": { "type": "string", "description": "Application code (PascalCase, e.g., HumanResources)" },
|
|
228
228
|
"name": { "type": "string", "description": "Display name (e.g., Ressources Humaines)" },
|
|
229
|
-
"context": {
|
|
230
|
-
"type": "string",
|
|
231
|
-
"enum": ["business", "platform", "personal"],
|
|
232
|
-
"description": "Navigation context for this application"
|
|
233
|
-
},
|
|
234
229
|
"tablePrefix": {
|
|
235
230
|
"type": "string",
|
|
236
231
|
"pattern": "^[a-z]{2,5}_$",
|
|
@@ -7,13 +7,12 @@
|
|
|
7
7
|
"properties": {
|
|
8
8
|
"metadata": {
|
|
9
9
|
"type": "object",
|
|
10
|
-
"required": ["createdAt", "updatedAt", "application", "module", "
|
|
10
|
+
"required": ["createdAt", "updatedAt", "application", "module", "language", "featureDescription"],
|
|
11
11
|
"properties": {
|
|
12
12
|
"createdAt": { "type": "string", "format": "date-time" },
|
|
13
13
|
"updatedAt": { "type": "string", "format": "date-time" },
|
|
14
14
|
"application": { "type": "string", "description": "Application name (PascalCase)" },
|
|
15
15
|
"module": { "type": "string", "description": "Module name (PascalCase)" },
|
|
16
|
-
"context": { "type": "string", "enum": ["business", "platform", "personal"], "description": "Navigation context (inherited from application)" },
|
|
17
16
|
"projectRef": { "type": ["string", "null"], "description": "Parent project ID (PROJ-XXX) when part of a multi-application project" },
|
|
18
17
|
"language": { "type": "string", "enum": ["fr", "en", "it", "de"] },
|
|
19
18
|
"featureDescription": { "type": "string" },
|
|
@@ -22,7 +21,7 @@
|
|
|
22
21
|
"enum": ["data-centric", "integration", "ui-centric", "workflow", "reporting", "full-module", "micro"]
|
|
23
22
|
},
|
|
24
23
|
"workflowType": { "type": "string", "enum": ["new", "update"] },
|
|
25
|
-
"permissionBase": { "type": "string", "description": "e.g.,
|
|
24
|
+
"permissionBase": { "type": "string", "description": "e.g., sales.orders" },
|
|
26
25
|
"previousVersion": { "type": ["string", "null"] },
|
|
27
26
|
"changeReason": { "type": ["string", "null"] },
|
|
28
27
|
"analysisMode": { "type": "string", "const": "interactive", "description": "Analysis mode — always interactive (AI listens, reformulates, challenges, validates)" },
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"id": { "type": "string", "pattern": "^UC-[A-Z]{2,4}-\\d{3}$", "description": "Module-prefixed UC ID (e.g., UC-RM-001)" },
|
|
27
27
|
"name": { "type": "string" },
|
|
28
28
|
"primaryActor": { "type": "string" },
|
|
29
|
-
"permission": { "type": "string", "description": "Module-level:
|
|
29
|
+
"permission": { "type": "string", "description": "Module-level: {app}.{module}.{action} or section-level: {app}.{module}.{section}.{action}" },
|
|
30
30
|
"preconditions": { "type": "array", "items": { "type": "string" } },
|
|
31
31
|
"postconditions": { "type": "array", "items": { "type": "string" } },
|
|
32
32
|
"mainScenario": { "type": "array", "items": { "type": "string" } },
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"type": "object",
|
|
83
83
|
"required": ["path", "action"],
|
|
84
84
|
"properties": {
|
|
85
|
-
"path": { "type": "string", "description": "Module-level:
|
|
85
|
+
"path": { "type": "string", "description": "Module-level: {app}.{module}.{action} or section-level: {app}.{module}.{section}.{action}" },
|
|
86
86
|
"action": { "type": "string", "enum": ["read", "create", "update", "delete", "export", "import", "admin", "*"] },
|
|
87
87
|
"description": { "type": "string" }
|
|
88
88
|
}
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"type": "object",
|
|
112
112
|
"required": ["level", "code", "route"],
|
|
113
113
|
"properties": {
|
|
114
|
-
"level": { "type": "string", "enum": ["
|
|
114
|
+
"level": { "type": "string", "enum": ["application", "module", "section", "resource"] },
|
|
115
115
|
"code": { "type": "string" },
|
|
116
116
|
"labels": {
|
|
117
117
|
"type": "object",
|
|
@@ -394,7 +394,7 @@
|
|
|
394
394
|
"code": { "type": "string", "description": "Application code (PascalCase, e.g., HumanResources)" },
|
|
395
395
|
"label": { "type": "string", "description": "Application label in default language" },
|
|
396
396
|
"icon": { "type": "string", "description": "Lucide icon name" },
|
|
397
|
-
"route": { "type": "string", "description": "Full route path (e.g., /
|
|
397
|
+
"route": { "type": "string", "description": "Full route path (e.g., /human-resources)" },
|
|
398
398
|
"sort": { "type": "integer", "description": "Display order" }
|
|
399
399
|
}
|
|
400
400
|
}
|
|
@@ -22,7 +22,7 @@ Initialize the business analysis workflow by auto-detecting whether this is a ne
|
|
|
22
22
|
## Flow
|
|
23
23
|
|
|
24
24
|
1. MCP health check (blocking)
|
|
25
|
-
2. Scan existing applications in `docs
|
|
25
|
+
2. Scan existing applications in `docs/`
|
|
26
26
|
3. Auto-detect: new application or update
|
|
27
27
|
4. Determine application name
|
|
28
28
|
5. Select language
|
|
@@ -86,7 +86,7 @@ mcp__smartstack__validate_conventions({ checks: ["tables"] })
|
|
|
86
86
|
Execute workflow detection algorithm:
|
|
87
87
|
1. **Review Mode Detection:** Check if `{feature_description}` starts with `-review`
|
|
88
88
|
2. **Existing Projects Scanner:** Glob `docs/business-analyse/*/feature.json` (project-level)
|
|
89
|
-
2b. **Existing Applications Scanner:** Glob `docs
|
|
89
|
+
2b. **Existing Applications Scanner:** Glob `docs/*/business-analyse/*/feature.json`
|
|
90
90
|
3. **Similarity Analysis:** Score user intent against existing apps (>= 80 = strong match)
|
|
91
91
|
4. **Decision Tree:** Prompt user with relevant options
|
|
92
92
|
|
|
@@ -252,17 +252,9 @@ ELSE:
|
|
|
252
252
|
description: "Saisir un nom personnalisé"
|
|
253
253
|
```
|
|
254
254
|
|
|
255
|
-
**Validate business context:**
|
|
256
|
-
```
|
|
257
|
-
validate_business_context("business")
|
|
258
|
-
→ BA restricted to 'business' context only (in standalone mode)
|
|
259
|
-
→ In project mode, each application can target any context
|
|
260
|
-
```
|
|
261
|
-
|
|
262
255
|
**Store:**
|
|
263
256
|
```yaml
|
|
264
257
|
application_name: string # or project_name if project mode
|
|
265
|
-
context: "business"
|
|
266
258
|
```
|
|
267
259
|
|
|
268
260
|
## Step 5: Select Language
|
|
@@ -329,8 +321,8 @@ IF workflow_mode = "project":
|
|
|
329
321
|
docs_dir = "docs/business-analyse/v{version}"
|
|
330
322
|
|
|
331
323
|
ELSE IF workflow_type = "new":
|
|
332
|
-
mkdir -p docs/
|
|
333
|
-
docs_dir = "docs/
|
|
324
|
+
mkdir -p docs/{application_name}/business-analyse/v1.0
|
|
325
|
+
docs_dir = "docs/{app}/business-analyse/v{version}"
|
|
334
326
|
|
|
335
327
|
ELSE:
|
|
336
328
|
Directory already exists from ba-writer.createVersion()
|
|
@@ -357,7 +349,7 @@ See [references/init-schema-deployment.md](../references/init-schema-deployment.
|
|
|
357
349
|
|
|
358
350
|
```javascript
|
|
359
351
|
// Pre-load CRITICAL (schemas) and HIGH (questionnaires) priority buckets
|
|
360
|
-
const schemaFiles = glob("docs/
|
|
352
|
+
const schemaFiles = glob("docs/{app}/business-analyse/schemas/**/*.json");
|
|
361
353
|
for (const file of schemaFiles) {
|
|
362
354
|
read(file); // Triggers cache
|
|
363
355
|
}
|
|
@@ -431,7 +423,6 @@ ELSE:
|
|
|
431
423
|
status: "draft",
|
|
432
424
|
metadata: {
|
|
433
425
|
application: {application_name},
|
|
434
|
-
context: "business",
|
|
435
426
|
language: {language},
|
|
436
427
|
featureDescription: {feature_description},
|
|
437
428
|
workflowType: {workflow_type},
|
|
@@ -447,7 +438,7 @@ ELSE:
|
|
|
447
438
|
}
|
|
448
439
|
})
|
|
449
440
|
|
|
450
|
-
Output path: docs/
|
|
441
|
+
Output path: docs/{app}/business-analyse/v{version}/feature.json
|
|
451
442
|
```
|
|
452
443
|
|
|
453
444
|
> **Note:** In project mode, per-application feature.json files are created later in step-01b.
|
|
@@ -483,7 +474,7 @@ Update `.business-analyse/config.json` with new feature information.
|
|
|
483
474
|
| Feature ID | {feature_id} |
|
|
484
475
|
| Workflow | {workflow_type} |
|
|
485
476
|
| Mode | {workflow_mode === "project" ? "Multi-application project" : "Single application"} |
|
|
486
|
-
| Application/Project| {workflow_mode === "project" ? project_name + " (" + candidate_applications.length + " apps)" :
|
|
477
|
+
| Application/Project| {workflow_mode === "project" ? project_name + " (" + candidate_applications.length + " apps)" : application_name} |
|
|
487
478
|
| Output Path | {docs_dir}/feature.json |
|
|
488
479
|
| Language | {language} |
|
|
489
480
|
| Version | {version} |
|
|
@@ -536,7 +527,7 @@ If initialization was interrupted:
|
|
|
536
527
|
1. Check `.business-analyse/config.json` for currentFeature or currentProject
|
|
537
528
|
2. If project ID exists, search for project feature.json in `docs/business-analyse/`
|
|
538
529
|
- If found with scope = "project": resume project mode (see Project Resume below)
|
|
539
|
-
3. If feature ID exists, search for feature.json in `docs
|
|
530
|
+
3. If feature ID exists, search for feature.json in `docs/`
|
|
540
531
|
4. If found, check status and `metadata.workflow.lastCompletedStep`:
|
|
541
532
|
|
|
542
533
|
**Status-based resume routing (check in this order):**
|