@atlashub/smartstack-cli 4.50.0 → 4.51.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/package.json +1 -1
- package/templates/skills/apex/SKILL.md +30 -0
- package/templates/skills/apex/steps/step-03-execute.md +7 -0
- package/templates/skills/apex/steps/step-03a-layer0-domain.md +4 -1
- package/templates/skills/apex/steps/step-03b-layer1-seed.md +4 -1
- package/templates/skills/apex/steps/step-03c-layer2-backend.md +4 -1
- package/templates/skills/apex/steps/step-03d-layer3-frontend.md +4 -1
- package/templates/skills/business-analyse-html/html/ba-interactive.html +7 -0
- package/templates/skills/business-analyse-html/html/src/scripts/01-data-init.js +7 -0
- package/templates/skills/business-analyse-html/steps/step-02-build-data.md +13 -0
- package/templates/skills/business-analyse-html/steps/step-04-verify.md +18 -0
package/package.json
CHANGED
|
@@ -171,6 +171,36 @@ Execute incremental SmartStack development using the APEX methodology. This skil
|
|
|
171
171
|
|
|
172
172
|
</execution_rules>
|
|
173
173
|
|
|
174
|
+
<execution_guarantee>
|
|
175
|
+
|
|
176
|
+
## Execution Guarantee (CRITICAL — read before ANY step)
|
|
177
|
+
|
|
178
|
+
> **The user is NOT watching. There is NOBODY to answer your questions. Stopping is a FAILURE.**
|
|
179
|
+
|
|
180
|
+
When APEX runs (especially in `-d` delegate mode or `-a` auto mode), the execution is **fully autonomous**. The user has launched the command and walked away. Any pause, question, or numbered option list is a **dead end** — nobody will respond.
|
|
181
|
+
|
|
182
|
+
**YOU MUST NOT:**
|
|
183
|
+
- Stop to ask the user a question between layers
|
|
184
|
+
- Present numbered options ("Would you like to: 1. Continue... 2. Generate... 3. Stop...")
|
|
185
|
+
- Pause between layers to summarize progress and wait for confirmation
|
|
186
|
+
- Stop because the work seems "large" or "complex" — that is expected
|
|
187
|
+
- Add "Let me know if you want me to continue" at any point
|
|
188
|
+
|
|
189
|
+
**YOU MUST:**
|
|
190
|
+
- After Layer N completes, **IMMEDIATELY** load the next sub-step file. No pause, no summary, no question.
|
|
191
|
+
- Execute the full pipeline: Layer 0 → Layer 1 → Layer 2 → Layer 3 → Layer 4 → step-04, with **ZERO pauses** between layers
|
|
192
|
+
- Treat each "Load `steps/step-03X-...md`" instruction as a **mandatory immediate action**, not a suggestion
|
|
193
|
+
- Continue even if a layer produced warnings (only a build gate failure after max retries is a valid stop)
|
|
194
|
+
|
|
195
|
+
**The ONLY valid reasons to stop:**
|
|
196
|
+
1. A build gate fails after maximum retries (3 attempts)
|
|
197
|
+
2. ALL layers are completed and step-04 (eXamine) is done
|
|
198
|
+
3. The user presses Ctrl+C
|
|
199
|
+
|
|
200
|
+
**Anything else — including "being helpful" by asking — is a VIOLATION of the execution guarantee.**
|
|
201
|
+
|
|
202
|
+
</execution_guarantee>
|
|
203
|
+
|
|
174
204
|
<error_handling>
|
|
175
205
|
|
|
176
206
|
## Error Handling Strategy
|
|
@@ -65,6 +65,13 @@ BEFORE starting Layer N:
|
|
|
65
65
|
|
|
66
66
|
## Layer Dispatch
|
|
67
67
|
|
|
68
|
+
> **CRITICAL RULES — LAYER EXECUTION GUARANTEE**
|
|
69
|
+
>
|
|
70
|
+
> - **NEVER** stop between layers. NEVER ask the user. NEVER present numbered options between layers.
|
|
71
|
+
> - The pipeline is sequential and mandatory: **0 → 1 → 2 → 3 → 4 → step-04**, with **ZERO pauses**.
|
|
72
|
+
> - After each sub-step completes, IMMEDIATELY load the next one. No summary, no confirmation request.
|
|
73
|
+
> - Stopping between layers is a **VIOLATION** of the execution guarantee defined in SKILL.md.
|
|
74
|
+
|
|
68
75
|
Load each sub-step sequentially:
|
|
69
76
|
|
|
70
77
|
| Layer | Sub-step | Content |
|
|
@@ -136,6 +136,9 @@ feat({module}): [domain+infra] {short description}
|
|
|
136
136
|
|
|
137
137
|
---
|
|
138
138
|
|
|
139
|
-
## NEXT SUB-STEP
|
|
139
|
+
## NEXT SUB-STEP (MANDATORY — IMMEDIATE)
|
|
140
|
+
|
|
141
|
+
> **DO NOT STOP.** DO NOT ask the user. DO NOT present options. IMMEDIATELY load the next sub-step.
|
|
142
|
+
> Stopping here is a VIOLATION of the execution guarantee.
|
|
140
143
|
|
|
141
144
|
Load `steps/step-03b-layer1-seed.md`
|
|
@@ -254,6 +254,9 @@ feat({module}): [seed] navigation, permissions, roles
|
|
|
254
254
|
|
|
255
255
|
---
|
|
256
256
|
|
|
257
|
-
## NEXT SUB-STEP
|
|
257
|
+
## NEXT SUB-STEP (MANDATORY — IMMEDIATE)
|
|
258
|
+
|
|
259
|
+
> **DO NOT STOP.** DO NOT ask the user. DO NOT present options. IMMEDIATELY load the next sub-step.
|
|
260
|
+
> Stopping here is a VIOLATION of the execution guarantee.
|
|
258
261
|
|
|
259
262
|
Load `steps/step-03c-layer2-backend.md`
|
|
@@ -348,6 +348,9 @@ test({module}): backend unit and integration tests
|
|
|
348
348
|
|
|
349
349
|
---
|
|
350
350
|
|
|
351
|
-
## NEXT SUB-STEP
|
|
351
|
+
## NEXT SUB-STEP (MANDATORY — IMMEDIATE)
|
|
352
|
+
|
|
353
|
+
> **DO NOT STOP.** DO NOT ask the user. DO NOT present options. IMMEDIATELY load the next sub-step.
|
|
354
|
+
> Stopping here is a VIOLATION of the execution guarantee.
|
|
352
355
|
|
|
353
356
|
Load `steps/step-03d-layer3-frontend.md`
|
|
@@ -329,6 +329,9 @@ test({module}): frontend form tests
|
|
|
329
329
|
|
|
330
330
|
---
|
|
331
331
|
|
|
332
|
-
## NEXT SUB-STEP
|
|
332
|
+
## NEXT SUB-STEP (MANDATORY — IMMEDIATE)
|
|
333
|
+
|
|
334
|
+
> **DO NOT STOP.** DO NOT ask the user. DO NOT present options. IMMEDIATELY load the next sub-step.
|
|
335
|
+
> Stopping here is a VIOLATION of the execution guarantee.
|
|
333
336
|
|
|
334
337
|
Load `steps/step-03e-layer4-devdata.md`
|
|
@@ -2394,6 +2394,13 @@ let data = {{FEATURE_DATA}};
|
|
|
2394
2394
|
const ORIGINAL_DATA = JSON.parse(JSON.stringify(data));
|
|
2395
2395
|
const EMBEDDED_ARTIFACTS = {{EMBEDDED_ARTIFACTS}};
|
|
2396
2396
|
|
|
2397
|
+
// CRITICAL: Initialize top-level structures FIRST to prevent TypeError crashes
|
|
2398
|
+
data.cadrage = data.cadrage || {};
|
|
2399
|
+
data.modules = data.modules || [];
|
|
2400
|
+
data.dependencies = data.dependencies || [];
|
|
2401
|
+
data.handoff = data.handoff || {};
|
|
2402
|
+
data.cadrage.stakeholders = data.cadrage.stakeholders || [];
|
|
2403
|
+
|
|
2397
2404
|
// Initialize applications array (multi-app support)
|
|
2398
2405
|
data.applications = data.applications || [];
|
|
2399
2406
|
|
|
@@ -6,6 +6,13 @@ let data = {{FEATURE_DATA}};
|
|
|
6
6
|
const ORIGINAL_DATA = JSON.parse(JSON.stringify(data));
|
|
7
7
|
const EMBEDDED_ARTIFACTS = {{EMBEDDED_ARTIFACTS}};
|
|
8
8
|
|
|
9
|
+
// CRITICAL: Initialize top-level structures FIRST to prevent TypeError crashes
|
|
10
|
+
data.cadrage = data.cadrage || {};
|
|
11
|
+
data.modules = data.modules || [];
|
|
12
|
+
data.dependencies = data.dependencies || [];
|
|
13
|
+
data.handoff = data.handoff || {};
|
|
14
|
+
data.cadrage.stakeholders = data.cadrage.stakeholders || [];
|
|
15
|
+
|
|
9
16
|
// Initialize applications array (multi-app support)
|
|
10
17
|
data.applications = data.applications || [];
|
|
11
18
|
|
|
@@ -242,6 +242,19 @@ if (errors.length > 0) {
|
|
|
242
242
|
> If self-check detects errors, you MUST re-read the source data and re-build the failing moduleSpecs entries.
|
|
243
243
|
> Do NOT proceed with empty arrays when source data exists.
|
|
244
244
|
|
|
245
|
+
**dependencies[] (TOP-LEVEL — CRITICAL for HTML navigation):**
|
|
246
|
+
```javascript
|
|
247
|
+
dependencies: (master.consolidation?.crossModuleInteractions || master.dependencyGraph?.edges || []).map(i => ({
|
|
248
|
+
from: i.fromModule || i.from || "",
|
|
249
|
+
to: i.toModule || i.to || "",
|
|
250
|
+
description: i.description || ""
|
|
251
|
+
}))
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
> **WARNING:** `data.dependencies` is used by the sidebar (navigation), module rendering, consolidation views,
|
|
255
|
+
> handoff summary, and export. If this array is missing, the entire HTML page crashes with a TypeError.
|
|
256
|
+
> ALWAYS include it, even if empty (`dependencies: []`).
|
|
257
|
+
|
|
245
258
|
**consolidation:**
|
|
246
259
|
```javascript
|
|
247
260
|
consolidation: {
|
|
@@ -69,6 +69,24 @@ FOR each module in FEATURE_DATA.modules:
|
|
|
69
69
|
BLOCKING_ERROR("Module {module.code}: 0 businessRules in HTML but {sourceBRCount} in source")
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
+
**Check 7 — No runtime crash (CRITICAL — validates page won't be blank):**
|
|
73
|
+
```
|
|
74
|
+
Open ba-interactive.html and search for the FEATURE_DATA JSON block.
|
|
75
|
+
Verify these MANDATORY top-level fields exist:
|
|
76
|
+
- "modules": [...] (array, can be empty)
|
|
77
|
+
- "dependencies": [...] (array, can be empty)
|
|
78
|
+
- "cadrage": {...} (object with stakeholders[], scope{})
|
|
79
|
+
- "moduleSpecs": {...} (object, one key per module)
|
|
80
|
+
- "consolidation": {...} (object)
|
|
81
|
+
|
|
82
|
+
IF "dependencies" is missing from FEATURE_DATA:
|
|
83
|
+
Add: "dependencies": [] to the FEATURE_DATA object in the HTML
|
|
84
|
+
(This is the #1 cause of blank HTML pages — TypeError on data.dependencies.length crashes all JS)
|
|
85
|
+
|
|
86
|
+
IF "modules" is missing:
|
|
87
|
+
BLOCKING_ERROR("FEATURE_DATA.modules missing — page will crash")
|
|
88
|
+
```
|
|
89
|
+
|
|
72
90
|
> **IF any check fails:** fix the issue and re-run the failing step before completing.
|
|
73
91
|
|
|
74
92
|
---
|