@atlashub/smartstack-cli 2.2.0 → 2.4.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/.documentation/business-analyse.html +1503 -1058
- package/.documentation/cli-commands.html +1 -1
- package/.documentation/init.html +1 -1
- package/.documentation/installation.html +1 -1
- package/dist/index.js +76 -47
- package/dist/index.js.map +1 -1
- package/package.json +10 -7
- package/templates/agents/ba-reader.md +114 -9
- package/templates/agents/ba-writer.md +108 -27
- package/templates/agents/mcp-healthcheck.md +1 -1
- package/templates/ralph/README.md +1 -1
- package/templates/ralph/ralph.config.yaml +1 -1
- package/templates/skills/_shared.md +60 -0
- package/templates/skills/application/steps/step-00-init.md +32 -8
- package/templates/skills/business-analyse/SKILL.md +65 -42
- package/templates/skills/business-analyse/_shared.md +161 -51
- package/templates/skills/business-analyse/questionnaire/00-application.md +166 -0
- package/templates/skills/business-analyse/questionnaire/03-scope.md +7 -7
- package/templates/skills/business-analyse/questionnaire/12-migration.md +1 -1
- package/templates/skills/business-analyse/questionnaire.md +63 -19
- package/templates/skills/business-analyse/react/application-viewer.md +242 -0
- package/templates/skills/business-analyse/react/components.md +60 -8
- package/templates/skills/business-analyse/react/schema.md +413 -34
- package/templates/skills/business-analyse/schemas/application-schema.json +389 -0
- package/templates/skills/business-analyse/schemas/feature-schema.json +287 -46
- package/templates/skills/business-analyse/steps/step-00-init.md +110 -44
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +259 -0
- package/templates/skills/business-analyse/steps/step-02-decomposition.md +282 -0
- package/templates/skills/business-analyse/steps/step-03-specify.md +489 -0
- package/templates/skills/business-analyse/steps/step-04-consolidation.md +336 -0
- package/templates/skills/business-analyse/steps/step-05-handoff.md +1119 -0
- package/templates/skills/business-analyse/templates/tpl-handoff.md +11 -2
- package/templates/skills/mcp/SKILL.md +2 -2
- package/templates/skills/business-analyse/steps/step-01-analyse.md +0 -505
- package/templates/skills/business-analyse/steps/step-02-specify.md +0 -833
- package/templates/skills/business-analyse/steps/step-03-validate.md +0 -862
- package/templates/skills/business-analyse/steps/step-04-handoff.md +0 -1593
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "application-schema.json",
|
|
4
|
+
"title": "SmartStack Business Analysis - Application Level",
|
|
5
|
+
"description": "Master feature.json for multi-module application analysis. Published to docs/business/{app}/business-analyse/v{X.Y}/feature.json",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["id", "version", "status", "scope", "metadata"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"id": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"pattern": "^FEAT-\\d{3,}$",
|
|
12
|
+
"description": "Unique feature identifier (e.g., FEAT-001)"
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^\\d+\\.\\d+$",
|
|
17
|
+
"description": "Document version (e.g., 1.0, 1.1)"
|
|
18
|
+
},
|
|
19
|
+
"status": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"enum": ["draft", "framed", "decomposed", "specified", "consolidated", "handed-off"],
|
|
22
|
+
"description": "Application-level lifecycle status"
|
|
23
|
+
},
|
|
24
|
+
"scope": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"const": "application",
|
|
27
|
+
"description": "Marks this as an application-level feature.json"
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
"metadata": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"required": ["createdAt", "updatedAt", "application", "context", "language", "featureDescription"],
|
|
33
|
+
"properties": {
|
|
34
|
+
"createdAt": { "type": "string", "format": "date-time" },
|
|
35
|
+
"updatedAt": { "type": "string", "format": "date-time" },
|
|
36
|
+
"application": { "type": "string", "description": "Application name (PascalCase)" },
|
|
37
|
+
"context": { "type": "string", "const": "business" },
|
|
38
|
+
"language": { "type": "string", "enum": ["fr", "en", "it", "de"] },
|
|
39
|
+
"featureDescription": { "type": "string" },
|
|
40
|
+
"useCase": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"enum": ["application", "new", "refactoring"],
|
|
43
|
+
"description": "Which use case triggered this analysis"
|
|
44
|
+
},
|
|
45
|
+
"mcpAvailable": { "type": "boolean" },
|
|
46
|
+
"economyMode": { "type": "boolean" },
|
|
47
|
+
"workflow": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"description": "Iterative module loop state",
|
|
50
|
+
"properties": {
|
|
51
|
+
"mode": { "type": "string", "enum": ["application", "module"] },
|
|
52
|
+
"moduleOrder": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"items": { "type": "string" },
|
|
55
|
+
"description": "Topologically sorted module codes"
|
|
56
|
+
},
|
|
57
|
+
"currentModuleIndex": {
|
|
58
|
+
"type": "integer",
|
|
59
|
+
"minimum": 0,
|
|
60
|
+
"description": "Index into moduleOrder for current module being specified"
|
|
61
|
+
},
|
|
62
|
+
"completedModules": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": { "type": "string" },
|
|
65
|
+
"description": "Module codes that have been fully specified"
|
|
66
|
+
},
|
|
67
|
+
"currentModule": {
|
|
68
|
+
"type": ["string", "null"],
|
|
69
|
+
"description": "Code of the module currently being specified"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"steps": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"description": "Progress tracking per step",
|
|
76
|
+
"properties": {
|
|
77
|
+
"init": { "$ref": "#/$defs/stepStatus" },
|
|
78
|
+
"cadrage": { "$ref": "#/$defs/stepStatus" },
|
|
79
|
+
"decomposition": { "$ref": "#/$defs/stepStatus" },
|
|
80
|
+
"specify": { "$ref": "#/$defs/stepStatus" },
|
|
81
|
+
"consolidation": { "$ref": "#/$defs/stepStatus" },
|
|
82
|
+
"handoff": { "$ref": "#/$defs/stepStatus" }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
"cadrage": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"description": "Enriched by step-01-cadrage: application-level framing",
|
|
91
|
+
"properties": {
|
|
92
|
+
"problem": { "type": "string", "description": "Business problem to solve" },
|
|
93
|
+
"asIs": { "type": "string", "description": "Current situation" },
|
|
94
|
+
"toBe": { "type": "string", "description": "Target situation" },
|
|
95
|
+
"trigger": { "type": "string", "description": "What triggered this need" },
|
|
96
|
+
"stakeholders": {
|
|
97
|
+
"type": "array",
|
|
98
|
+
"items": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"required": ["role"],
|
|
101
|
+
"properties": {
|
|
102
|
+
"role": { "type": "string" },
|
|
103
|
+
"function": { "type": "string" },
|
|
104
|
+
"involvement": { "type": "string", "enum": ["approver", "decision-maker", "consulted", "informed", "end-user"] },
|
|
105
|
+
"tasks": { "type": "array", "items": { "type": "string" } },
|
|
106
|
+
"frequency": { "type": "string" },
|
|
107
|
+
"painPoints": { "type": "array", "items": { "type": "string" } }
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"globalScope": {
|
|
112
|
+
"type": "object",
|
|
113
|
+
"properties": {
|
|
114
|
+
"mustHave": { "type": "array", "items": { "type": "string" } },
|
|
115
|
+
"shouldHave": { "type": "array", "items": { "type": "string" } },
|
|
116
|
+
"couldHave": { "type": "array", "items": { "type": "string" } },
|
|
117
|
+
"outOfScope": { "type": "array", "items": { "type": "string" } }
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"applicationRoles": {
|
|
121
|
+
"type": "array",
|
|
122
|
+
"description": "Application-level roles (defined once, inherited by all modules)",
|
|
123
|
+
"items": {
|
|
124
|
+
"type": "object",
|
|
125
|
+
"required": ["role", "level"],
|
|
126
|
+
"properties": {
|
|
127
|
+
"role": { "type": "string", "description": "Role name (e.g., Sales Admin)" },
|
|
128
|
+
"description": { "type": "string" },
|
|
129
|
+
"level": { "type": "string", "enum": ["admin", "manager", "contributor", "viewer"], "description": "Permission hierarchy level" },
|
|
130
|
+
"permissionPattern": { "type": "string", "description": "Permission pattern (e.g., business.sales.* for admin)" }
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"risks": {
|
|
135
|
+
"type": "array",
|
|
136
|
+
"items": {
|
|
137
|
+
"type": "object",
|
|
138
|
+
"required": ["id", "type", "description"],
|
|
139
|
+
"properties": {
|
|
140
|
+
"id": { "type": "string", "pattern": "^RISK-\\d{3}$" },
|
|
141
|
+
"type": { "type": "string", "enum": ["business", "technical", "organizational"] },
|
|
142
|
+
"description": { "type": "string" },
|
|
143
|
+
"probability": { "type": "string", "enum": ["high", "medium", "low"] },
|
|
144
|
+
"impact": { "type": "string", "enum": ["high", "medium", "low"] },
|
|
145
|
+
"priority": { "type": "string", "enum": ["critical", "medium", "low"] },
|
|
146
|
+
"mitigation": { "type": "string" }
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"acceptanceCriteria": {
|
|
151
|
+
"type": "array",
|
|
152
|
+
"items": {
|
|
153
|
+
"type": "object",
|
|
154
|
+
"required": ["id", "criterion"],
|
|
155
|
+
"properties": {
|
|
156
|
+
"id": { "type": "string", "pattern": "^AC-\\d{3}$" },
|
|
157
|
+
"criterion": { "type": "string" },
|
|
158
|
+
"validated": { "type": "boolean", "default": false }
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"codebaseContext": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"description": "Summary of existing modules/patterns found during pre-research"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
"modules": {
|
|
170
|
+
"type": "array",
|
|
171
|
+
"description": "Enriched by step-02-decomposition: module registry with dependencies",
|
|
172
|
+
"items": {
|
|
173
|
+
"type": "object",
|
|
174
|
+
"required": ["code", "description"],
|
|
175
|
+
"properties": {
|
|
176
|
+
"code": { "type": "string", "description": "Module code (PascalCase, e.g., Customers)" },
|
|
177
|
+
"description": { "type": "string" },
|
|
178
|
+
"featureType": {
|
|
179
|
+
"type": "string",
|
|
180
|
+
"enum": ["data-centric", "integration", "ui-centric", "workflow", "reporting", "full-module"],
|
|
181
|
+
"description": "Estimated module type"
|
|
182
|
+
},
|
|
183
|
+
"dependencies": {
|
|
184
|
+
"type": "array",
|
|
185
|
+
"items": { "type": "string" },
|
|
186
|
+
"description": "Module codes this module depends on (FK, events)"
|
|
187
|
+
},
|
|
188
|
+
"dependents": {
|
|
189
|
+
"type": "array",
|
|
190
|
+
"items": { "type": "string" },
|
|
191
|
+
"description": "Module codes that depend on this module"
|
|
192
|
+
},
|
|
193
|
+
"status": {
|
|
194
|
+
"type": "string",
|
|
195
|
+
"enum": ["pending", "in-progress", "specified", "validated"],
|
|
196
|
+
"description": "Module specification status within the iterative loop"
|
|
197
|
+
},
|
|
198
|
+
"featureJsonPath": {
|
|
199
|
+
"type": ["string", "null"],
|
|
200
|
+
"description": "Path to the module-level feature.json once created"
|
|
201
|
+
},
|
|
202
|
+
"priority": {
|
|
203
|
+
"type": "string",
|
|
204
|
+
"enum": ["must", "should", "could"],
|
|
205
|
+
"description": "MoSCoW priority from global scope"
|
|
206
|
+
},
|
|
207
|
+
"sortOrder": {
|
|
208
|
+
"type": "integer",
|
|
209
|
+
"description": "Position in topological order (0-based)"
|
|
210
|
+
},
|
|
211
|
+
"entities": {
|
|
212
|
+
"type": "array",
|
|
213
|
+
"items": { "type": "string" },
|
|
214
|
+
"description": "Anticipated entity names (from decomposition, refined in specification)"
|
|
215
|
+
},
|
|
216
|
+
"estimatedComplexity": {
|
|
217
|
+
"type": "string",
|
|
218
|
+
"enum": ["simple", "medium", "complex"]
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
|
|
224
|
+
"dependencyGraph": {
|
|
225
|
+
"type": "object",
|
|
226
|
+
"description": "Enriched by step-02-decomposition: module dependency graph",
|
|
227
|
+
"properties": {
|
|
228
|
+
"edges": {
|
|
229
|
+
"type": "array",
|
|
230
|
+
"items": {
|
|
231
|
+
"type": "object",
|
|
232
|
+
"required": ["from", "to", "type"],
|
|
233
|
+
"properties": {
|
|
234
|
+
"from": { "type": "string", "description": "Dependent module code" },
|
|
235
|
+
"to": { "type": "string", "description": "Dependency module code" },
|
|
236
|
+
"type": { "type": "string", "enum": ["FK", "event", "shared-entity", "lookup"], "description": "Nature of the dependency" }
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
"topologicalOrder": {
|
|
241
|
+
"type": "array",
|
|
242
|
+
"items": { "type": "string" },
|
|
243
|
+
"description": "Modules sorted by dependency (foundations first)"
|
|
244
|
+
},
|
|
245
|
+
"layers": {
|
|
246
|
+
"type": "array",
|
|
247
|
+
"description": "Modules grouped by dependency depth",
|
|
248
|
+
"items": {
|
|
249
|
+
"type": "object",
|
|
250
|
+
"properties": {
|
|
251
|
+
"layer": { "type": "integer" },
|
|
252
|
+
"modules": { "type": "array", "items": { "type": "string" } }
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
"consolidation": {
|
|
260
|
+
"type": "object",
|
|
261
|
+
"description": "Enriched by step-04-consolidation: cross-module validation",
|
|
262
|
+
"properties": {
|
|
263
|
+
"crossModuleInteractions": {
|
|
264
|
+
"type": "array",
|
|
265
|
+
"items": {
|
|
266
|
+
"type": "object",
|
|
267
|
+
"properties": {
|
|
268
|
+
"fromModule": { "type": "string" },
|
|
269
|
+
"toModule": { "type": "string" },
|
|
270
|
+
"interactionType": { "type": "string", "enum": ["FK-reference", "event-publish", "event-subscribe", "shared-lookup", "cascade-delete", "cascade-update"] },
|
|
271
|
+
"description": { "type": "string" },
|
|
272
|
+
"entities": { "type": "array", "items": { "type": "string" } }
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"sharedEntities": {
|
|
277
|
+
"type": "array",
|
|
278
|
+
"items": {
|
|
279
|
+
"type": "object",
|
|
280
|
+
"properties": {
|
|
281
|
+
"entity": { "type": "string" },
|
|
282
|
+
"ownerModule": { "type": "string" },
|
|
283
|
+
"referencedBy": { "type": "array", "items": { "type": "string" } },
|
|
284
|
+
"sharedFields": { "type": "array", "items": { "type": "string" } }
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"permissionCoherence": {
|
|
289
|
+
"type": "object",
|
|
290
|
+
"properties": {
|
|
291
|
+
"rolesConsistent": { "type": "boolean" },
|
|
292
|
+
"pathFormatConsistent": { "type": "boolean" },
|
|
293
|
+
"hierarchyRespected": { "type": "boolean" },
|
|
294
|
+
"conflicts": { "type": "array", "items": { "type": "string" } },
|
|
295
|
+
"warnings": { "type": "array", "items": { "type": "string" } }
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"e2eFlows": {
|
|
299
|
+
"type": "array",
|
|
300
|
+
"items": {
|
|
301
|
+
"type": "object",
|
|
302
|
+
"properties": {
|
|
303
|
+
"name": { "type": "string", "description": "Flow name (e.g., Create Order to Invoice)" },
|
|
304
|
+
"modules": { "type": "array", "items": { "type": "string" } },
|
|
305
|
+
"steps": {
|
|
306
|
+
"type": "array",
|
|
307
|
+
"items": {
|
|
308
|
+
"type": "object",
|
|
309
|
+
"properties": {
|
|
310
|
+
"module": { "type": "string" },
|
|
311
|
+
"action": { "type": "string" },
|
|
312
|
+
"permission": { "type": "string" },
|
|
313
|
+
"dataFlow": { "type": "string" }
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
"globalRiskAssessment": {
|
|
321
|
+
"type": "array",
|
|
322
|
+
"items": {
|
|
323
|
+
"type": "object",
|
|
324
|
+
"properties": {
|
|
325
|
+
"risk": { "type": "string" },
|
|
326
|
+
"category": { "type": "string", "enum": ["coupling", "complexity", "dependency-chain", "security", "scope"] },
|
|
327
|
+
"severity": { "type": "string", "enum": ["critical", "high", "medium", "low"] },
|
|
328
|
+
"mitigation": { "type": "string" }
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"decision": {
|
|
333
|
+
"type": "object",
|
|
334
|
+
"properties": {
|
|
335
|
+
"approved": { "type": "boolean" },
|
|
336
|
+
"reason": { "type": "string" },
|
|
337
|
+
"approvedBy": { "type": "string" },
|
|
338
|
+
"approvedAt": { "type": "string", "format": "date-time" }
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
|
|
344
|
+
"suggestions": {
|
|
345
|
+
"type": "array",
|
|
346
|
+
"description": "Proactive AI suggestions for complementary modules/sections",
|
|
347
|
+
"items": {
|
|
348
|
+
"type": "object",
|
|
349
|
+
"required": ["type", "code", "reason"],
|
|
350
|
+
"properties": {
|
|
351
|
+
"type": { "type": "string", "enum": ["module", "section", "integration", "enhancement"] },
|
|
352
|
+
"code": { "type": "string" },
|
|
353
|
+
"title": { "type": "string" },
|
|
354
|
+
"reason": { "type": "string" },
|
|
355
|
+
"accepted": { "type": ["boolean", "null"] }
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
|
|
360
|
+
"changelog": {
|
|
361
|
+
"type": "array",
|
|
362
|
+
"description": "Version history and change tracking",
|
|
363
|
+
"items": {
|
|
364
|
+
"type": "object",
|
|
365
|
+
"required": ["timestamp", "changes"],
|
|
366
|
+
"properties": {
|
|
367
|
+
"step": { "type": "string" },
|
|
368
|
+
"version": { "type": "string" },
|
|
369
|
+
"timestamp": { "type": "string", "format": "date-time" },
|
|
370
|
+
"author": { "type": "string" },
|
|
371
|
+
"changes": { "type": "array", "items": { "type": "string" } },
|
|
372
|
+
"warnings": { "type": "array", "items": { "type": "string" } },
|
|
373
|
+
"decision": { "type": "string" }
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
|
|
379
|
+
"$defs": {
|
|
380
|
+
"stepStatus": {
|
|
381
|
+
"type": "object",
|
|
382
|
+
"properties": {
|
|
383
|
+
"status": { "type": "string", "enum": ["pending", "in-progress", "completed", "skipped"] },
|
|
384
|
+
"startedAt": { "type": ["string", "null"], "format": "date-time" },
|
|
385
|
+
"completedAt": { "type": ["string", "null"], "format": "date-time" }
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|