@atlashub/smartstack-cli 3.54.0 → 4.1.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 CHANGED
@@ -1,115 +1,115 @@
1
- {
2
- "name": "@atlashub/smartstack-cli",
3
- "version": "3.54.0",
4
- "description": "SmartStack Claude Code automation toolkit - GitFlow, EF Core migrations, prompts and more",
5
- "author": {
6
- "name": "SmartStack",
7
- "email": "contact@smartstack.app",
8
- "url": "https://smartstack.app"
9
- },
10
- "license": "MIT",
11
- "private": false,
12
- "type": "commonjs",
13
- "main": "./dist/index.js",
14
- "types": "./dist/index.d.ts",
15
- "bin": {
16
- "smartstack": "./dist/index.js",
17
- "ss": "./dist/index.js",
18
- "smartstack-mcp": "./dist/mcp-entry.mjs"
19
- },
20
- "files": [
21
- "dist",
22
- "templates",
23
- "config",
24
- "scripts",
25
- ".documentation"
26
- ],
27
- "engines": {
28
- "node": ">=18.0.0"
29
- },
30
- "publishConfig": {
31
- "registry": "https://registry.npmjs.org",
32
- "access": "public"
33
- },
34
- "repository": {
35
- "type": "git",
36
- "url": "git+https://dev.azure.com/AtlasHub/SmartStack/_git/SmartStack.cli"
37
- },
38
- "homepage": "https://smartstack.app",
39
- "keywords": [
40
- "smartstack",
41
- "claude",
42
- "claude-code",
43
- "gitflow",
44
- "efcore",
45
- "entity-framework",
46
- "migrations",
47
- "cli",
48
- "automation",
49
- "anthropic",
50
- "dotnet",
51
- "prompts",
52
- "ai-tools"
53
- ],
54
- "scripts": {
55
- "postinstall": "node scripts/postinstall.js || exit 0",
56
- "dev": "tsup --watch",
57
- "build:html": "node templates/skills/business-analyse/html/build-html.js",
58
- "build": "npm run build:html && npx tsup",
59
- "lint": "eslint src --ext .ts",
60
- "format": "prettier --write \"src/**/*.ts\"",
61
- "prepublishOnly": "npm run build",
62
- "test": "node --test",
63
- "link": "npm run build && npm link",
64
- "install:local": "npm run build && node dist/index.js install --local --force",
65
- "install:global": "npm run build && node dist/index.js install --force",
66
- "status:local": "node dist/index.js status --local --verbose",
67
- "status:global": "node dist/index.js status --verbose",
68
- "doctor": "node dist/index.js doctor",
69
- "check-mcp": "node dist/index.js check-mcp",
70
- "ralph:start": "node dist/index.js ralph start",
71
- "ralph:status": "node dist/index.js ralph status",
72
- "ralph:logs": "node dist/index.js ralph logs",
73
- "health": "node dist/index.js doctor --json",
74
- "test:mcp": "vitest run --config vitest.mcp.config.ts",
75
- "test:mcp:watch": "vitest --config vitest.mcp.config.ts",
76
- "test:mcp:coverage": "vitest run --config vitest.mcp.config.ts --coverage",
77
- "test:ba": "vitest run --config vitest.ba.config.ts",
78
- "test:ba:watch": "vitest --config vitest.ba.config.ts",
79
- "test:ba:coverage": "vitest run --config vitest.ba.config.ts --coverage",
80
- "test:all": "npm run test:mcp && npm run test:ba"
81
- },
82
- "dependencies": {
83
- "@atlashub/smartstack-cli": "file:",
84
- "@modelcontextprotocol/sdk": "^1.0.0",
85
- "axios": "^1.7.0",
86
- "bcryptjs": "^2.4.3",
87
- "chalk": "^5.3.0",
88
- "cli-table3": "^0.6.3",
89
- "commander": "^12.0.0",
90
- "fs-extra": "^11.2.0",
91
- "glob": "^13.0.1",
92
- "handlebars": "^4.7.8",
93
- "inquirer": "^9.2.12",
94
- "jsonwebtoken": "^9.0.3",
95
- "mssql": "^11.0.1",
96
- "ora": "^8.0.1",
97
- "zod": "^3.25.0"
98
- },
99
- "devDependencies": {
100
- "@types/bcryptjs": "^2.4.6",
101
- "@types/fs-extra": "^11.0.4",
102
- "@types/inquirer": "^9.0.7",
103
- "@types/jsonwebtoken": "^9.0.10",
104
- "@types/mssql": "^9.1.5",
105
- "@types/node": "^20.10.6",
106
- "@typescript-eslint/eslint-plugin": "^6.18.0",
107
- "@typescript-eslint/parser": "^6.18.0",
108
- "@vitest/coverage-v8": "^2.1.0",
109
- "eslint": "^8.56.0",
110
- "prettier": "^3.2.4",
111
- "tsup": "^8.0.1",
112
- "typescript": "^5.3.3",
113
- "vitest": "^2.1.0"
114
- }
115
- }
1
+ {
2
+ "name": "@atlashub/smartstack-cli",
3
+ "version": "4.1.0",
4
+ "description": "SmartStack Claude Code automation toolkit - GitFlow, EF Core migrations, prompts and more",
5
+ "author": {
6
+ "name": "SmartStack",
7
+ "email": "contact@smartstack.app",
8
+ "url": "https://smartstack.app"
9
+ },
10
+ "license": "MIT",
11
+ "private": false,
12
+ "type": "commonjs",
13
+ "main": "./dist/index.js",
14
+ "types": "./dist/index.d.ts",
15
+ "bin": {
16
+ "smartstack": "./dist/index.js",
17
+ "ss": "./dist/index.js",
18
+ "smartstack-mcp": "./dist/mcp-entry.mjs"
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "templates",
23
+ "config",
24
+ "scripts",
25
+ ".documentation"
26
+ ],
27
+ "engines": {
28
+ "node": ">=18.0.0"
29
+ },
30
+ "publishConfig": {
31
+ "registry": "https://registry.npmjs.org",
32
+ "access": "public"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://dev.azure.com/AtlasHub/SmartStack/_git/SmartStack.cli"
37
+ },
38
+ "homepage": "https://smartstack.app",
39
+ "keywords": [
40
+ "smartstack",
41
+ "claude",
42
+ "claude-code",
43
+ "gitflow",
44
+ "efcore",
45
+ "entity-framework",
46
+ "migrations",
47
+ "cli",
48
+ "automation",
49
+ "anthropic",
50
+ "dotnet",
51
+ "prompts",
52
+ "ai-tools"
53
+ ],
54
+ "scripts": {
55
+ "postinstall": "node scripts/postinstall.js || exit 0",
56
+ "dev": "tsup --watch",
57
+ "build:html": "node templates/skills/business-analyse/html/build-html.js",
58
+ "build": "npm run build:html && npx tsup",
59
+ "lint": "eslint src --ext .ts",
60
+ "format": "prettier --write \"src/**/*.ts\"",
61
+ "prepublishOnly": "npm run build",
62
+ "test": "node --test",
63
+ "link": "npm run build && npm link",
64
+ "install:local": "npm run build && node dist/index.js install --local --force",
65
+ "install:global": "npm run build && node dist/index.js install --force",
66
+ "status:local": "node dist/index.js status --local --verbose",
67
+ "status:global": "node dist/index.js status --verbose",
68
+ "doctor": "node dist/index.js doctor",
69
+ "check-mcp": "node dist/index.js check-mcp",
70
+ "ralph:start": "node dist/index.js ralph start",
71
+ "ralph:status": "node dist/index.js ralph status",
72
+ "ralph:logs": "node dist/index.js ralph logs",
73
+ "health": "node dist/index.js doctor --json",
74
+ "test:mcp": "vitest run --config vitest.mcp.config.ts",
75
+ "test:mcp:watch": "vitest --config vitest.mcp.config.ts",
76
+ "test:mcp:coverage": "vitest run --config vitest.mcp.config.ts --coverage",
77
+ "test:ba": "vitest run --config vitest.ba.config.ts",
78
+ "test:ba:watch": "vitest --config vitest.ba.config.ts",
79
+ "test:ba:coverage": "vitest run --config vitest.ba.config.ts --coverage",
80
+ "test:all": "npm run test:mcp && npm run test:ba"
81
+ },
82
+ "dependencies": {
83
+ "@atlashub/smartstack-cli": "file:",
84
+ "@modelcontextprotocol/sdk": "^1.0.0",
85
+ "axios": "^1.7.0",
86
+ "bcryptjs": "^2.4.3",
87
+ "chalk": "^5.3.0",
88
+ "cli-table3": "^0.6.3",
89
+ "commander": "^12.0.0",
90
+ "fs-extra": "^11.2.0",
91
+ "glob": "^13.0.1",
92
+ "handlebars": "^4.7.8",
93
+ "inquirer": "^9.2.12",
94
+ "jsonwebtoken": "^9.0.3",
95
+ "mssql": "^11.0.1",
96
+ "ora": "^8.0.1",
97
+ "zod": "^3.25.0"
98
+ },
99
+ "devDependencies": {
100
+ "@types/bcryptjs": "^2.4.6",
101
+ "@types/fs-extra": "^11.0.4",
102
+ "@types/inquirer": "^9.0.7",
103
+ "@types/jsonwebtoken": "^9.0.10",
104
+ "@types/mssql": "^9.1.5",
105
+ "@types/node": "^20.10.6",
106
+ "@typescript-eslint/eslint-plugin": "^6.18.0",
107
+ "@typescript-eslint/parser": "^6.18.0",
108
+ "@vitest/coverage-v8": "^2.1.0",
109
+ "eslint": "^8.56.0",
110
+ "prettier": "^3.2.4",
111
+ "tsup": "^8.0.1",
112
+ "typescript": "^5.3.3",
113
+ "vitest": "^2.1.0"
114
+ }
115
+ }
@@ -91,8 +91,8 @@ Execute incremental SmartStack development using the APEX methodology. This skil
91
91
  | 04 | `steps/step-04-examine.md` | Opus | eXamine: MCP validation, build, 44 POST-CHECKs, acceptance criteria |
92
92
  | 05 | `steps/step-05-deep-review.md` | Opus | Deep Review: adversarial code review (if -x) |
93
93
  | 06 | `steps/step-06-resolve.md` | Opus | Fix BLOCKING findings (if any) |
94
- | 07 | `steps/step-07-tests.md` | Opus | Scaffold tests via MCP |
95
- | 08 | `steps/step-08-run-tests.md` | Opus | Run tests until 100% pass |
94
+ | 07 | `steps/step-07-tests.md` | Opus | Final Test Sweep: security tests, coverage, remaining failures |
95
+ | 08 | `steps/step-08-run-tests.md` | Opus | Run Final Test Sweep until 100% pass |
96
96
  </step_files>
97
97
 
98
98
  <apex_phases>
@@ -103,11 +103,11 @@ Execute incremental SmartStack development using the APEX methodology. This skil
103
103
  | *Init* | 00 | Yes | Setup, hierarchy, challenge the need, **scope guard** (skipped in `-d` delegate mode) |
104
104
  | **A** — Analyze | 01 | Yes | Explore existing code |
105
105
  | **P** — Plan | 02 | Yes | File-by-file plan with skill/MCP mapping |
106
- | **E** — Execute | 03 | Yes | Orchestrate creation via skills and MCP |
106
+ | **E** — Execute | 03 | Yes | Orchestrate creation via skills and MCP (5 layers: domain, seed, backend, frontend, devdata) |
107
107
  | **X** — eXamine | 04 | Yes | 3 MCP tools + 50 POST-CHECKs (6 security + 44 convention), build, acceptance criteria |
108
108
  | *Deep Review* | 05 (if -x) | No | Adversarial code review beyond automated checks |
109
109
  | *Resolve* | 06 (if BLOCKING) | No | Fix BLOCKING findings |
110
- | *Tests* | 07-08 | **Yes** | Scaffold and run tests |
110
+ | *Final Test Sweep* | 07-08 | **Yes** | Security tests, coverage sweep, remaining failures |
111
111
  </apex_phases>
112
112
 
113
113
  <reference_files>
@@ -119,7 +119,7 @@ Execute incremental SmartStack development using the APEX methodology. This skil
119
119
  | `references/smartstack-layers.md` | Layer rules, skill/MCP mapping, planning templates, delegate fast path | step-02 | step-03 (do NOT re-read) |
120
120
  | `references/smartstack-frontend.md` | Frontend patterns, EntityLookup, i18n, compliance gates (sections 1-9) | step-03 | step-04 |
121
121
  | `references/challenge-questions.md` | Hierarchy rules, challenge questions, delegate mode skip | step-00 | — |
122
- | `references/core-seed-data.md` | Comprehensive seed data templates (navigation, permissions, roles) | step-03 (delegate mode + seedData tasks) | — |
122
+ | `references/core-seed-data.md` | Comprehensive seed data templates (navigation, permissions, roles) | step-03 (ALWAYS for Layer 1) | — |
123
123
  | `references/error-classification.md` | Build error diagnosis categories A-F | step-03 (build failure), step-04 | — |
124
124
  | `references/agent-teams-protocol.md` | TeamCreate, coordination, shutdown protocol | step-01, step-03 (if NOT economy_mode) | — |
125
125
  | `references/post-checks.md` | 6 security + 44 convention bash checks (MCP tools run first) | step-04 | — |
@@ -133,8 +133,9 @@ Execute incremental SmartStack development using the APEX methodology. This skil
133
133
  - **ORCHESTRATE, never generate** - All SmartStack code via skills (/controller, /application, etc.) or MCP tools
134
134
  - **MCP-first** - Use MCP scaffold/validate tools before manual approaches
135
135
  - **Verify MCP at startup** - step-00 checks MCP availability
136
- - **Layer order** - domain -> infra -> migration(BLOCKING) -> app -> api -> frontend -> i18n -> tests
137
- - **Agent Teams** - Parallel execution for scan (step-01) and Layer 1 (step-03), unless economy_mode
136
+ - **Layer order** - Layer 0 (domain+infra+migration) Layer 1 (seed data) Layer 2 (backend+tests) Layer 3 (frontend+tests) Layer 4 (devdata)
137
+ - **Agent Teams** - Parallel execution for scan (step-01) and within Layer 2/3 (step-03) for multi-entity, unless economy_mode
138
+ - **Tests inline** - Backend tests run after Layer 2, frontend tests run after Layer 3 (max 3 fix iterations each). Step-07 = final sweep (security + coverage).
138
139
  - **Save outputs** if `{save_mode}` = true
139
140
  - **Commits per layer** - Atomic commits after each execution layer
140
141
  - **Delegate mode** (`-d`): Read PRD context, skip challenge questions, auto+economy mode implied. Used when `/ralph-loop` delegates code generation to `/apex`.
@@ -168,7 +169,8 @@ Execute incremental SmartStack development using the APEX methodology. This skil
168
169
  - Code created/corrected via existing skills and MCP (no direct generation)
169
170
  - MCP validate_conventions: 0 errors
170
171
  - Build: dotnet build PASS + npm run typecheck PASS (if frontend)
171
- - Seed data complete (navigation, permissions, roles, provider) if required
172
- - Tests: 100% pass, >= 80% coverage
172
+ - Seed data complete as dedicated Layer 1 (navigation, permissions, roles, provider) impossible to skip
173
+ - Tests inline: backend tests after Layer 2, frontend tests after Layer 3
174
+ - Final test sweep: security tests + coverage >= 80% + 100% pass rate
173
175
  - Commits atomic per layer
174
176
  </success_criteria>
@@ -10,7 +10,7 @@
10
10
 
11
11
  ```yaml
12
12
  TeamCreate:
13
- team_name: "apex-{phase}" # e.g., "apex-analyze", "apex-exec"
13
+ team_name: "apex-{phase}" # e.g., "apex-analyze", "apex-layer2", "apex-layer3"
14
14
  description: "{phase purpose}" # e.g., "Scan SmartStack project for existing code"
15
15
  ```
16
16
 
@@ -24,7 +24,7 @@ Always provide both `team_name` and `description`.
24
24
  Task:
25
25
  subagent_type: "Explore" | "general-purpose" # See assignment table below
26
26
  team_name: "apex-{phase}" # Must match TeamCreate
27
- name: "{teammate-name}" # e.g., "scan-backend", "exec-frontend"
27
+ name: "{teammate-name}" # e.g., "scan-backend", "entity-employee"
28
28
  model: "sonnet" | "opus" # sonnet for scan, opus for dev (T02/T06)
29
29
  mode: "bypassPermissions"
30
30
  prompt: "{detailed task prompt}"
@@ -87,14 +87,24 @@ scan-frontend : src/pages/ + src/components/ + src/locales/
87
87
  scan-context : .ralph/ + docs/business/
88
88
  ```
89
89
 
90
- ### Step-03 Execute: Split by execution layer
90
+ ### Step-03 Execute: Split by entity WITHIN a layer
91
+
92
+ > **Cross-layer parallelism is FORBIDDEN.** Layers execute sequentially: 0 → 1 → 2 → 3 → 4.
93
+ > Agent teams parallelize **multi-entity work within a single layer.**
91
94
 
92
95
  ```
93
- exec-backend : Application services + API controllers + Seed data
94
- exec-frontend : Pages + Components + Routes + I18n
96
+ Layer 2 (Backend) if multiple entities:
97
+ entity-{name1} : Service + DTO + Controller for Entity1
98
+ entity-{name2} : Service + DTO + Controller for Entity2
99
+ ...
100
+
101
+ Layer 3 (Frontend) — if multiple entities:
102
+ entity-{name1} : Pages + i18n + routes for Entity1
103
+ entity-{name2} : Pages + i18n + routes for Entity2
104
+ ...
95
105
  ```
96
106
 
97
- Each teammate has an **isolated scope** (C02): backend never touches frontend.
107
+ Each teammate has an **isolated scope** (C02): handles one entity end-to-end within the layer.
98
108
 
99
109
  ---
100
110
 
@@ -108,15 +118,20 @@ Each teammate has an **isolated scope** (C02): backend never touches frontend.
108
118
  3. Lead merges into unified analysis
109
119
  ```
110
120
 
111
- ### Step-03: Lead verifies between layers
121
+ ### Step-03: Lead verifies between ALL 5 layers
112
122
 
113
123
  ```
114
124
  1. Layer 0: lead executes (domain + infra + migration)
115
- 2. Build gate: dotnet build --no-restore → MUST PASS
116
- 3. Layer 1: spawn exec-backend + exec-frontend
117
- 4. Wait for both to complete
118
- 5. Build gate: dotnet build + npm typecheck MUST PASS
119
- 6. Layer 2: lead executes final validation
125
+ 2. Build gate: dotnet build → MUST PASS
126
+ 3. Layer 1: lead executes (seed data — sequential, no teams)
127
+ 4. Build gate: dotnet build → MUST PASS
128
+ 5. Layer 2: spawn entity teammates (if multi-entity) OR lead executes (if single entity)
129
+ 6. Build gate: dotnet build MUST PASS
130
+ 7. Backend tests inline (scaffold + run + fix max 3)
131
+ 8. Layer 3: spawn entity teammates (if multi-entity) OR lead executes (if single entity)
132
+ 9. Compliance gate: 5 frontend checks → MUST PASS
133
+ 10. Frontend tests inline (scaffold + run + fix max 3)
134
+ 11. Layer 4 (optional): lead executes DevData
120
135
  ```
121
136
 
122
137
  ---
@@ -158,7 +173,8 @@ TeamDelete
158
173
  | Condition | Action |
159
174
  |-----------|--------|
160
175
  | economy_mode = true | NO teams, all sequential |
161
- | Only backend work | NO teams, agent principal |
162
- | Only frontend work | NO teams, agent principal |
163
- | Backend + Frontend | Teams: exec-backend + exec-frontend |
164
- | Analysis phase | Teams: scan-backend + scan-frontend + scan-context |
176
+ | Single entity (any layer) | NO teams, agent principal handles all |
177
+ | Multiple entities, Layer 2 | Teams: one teammate per entity (service + controller) |
178
+ | Multiple entities, Layer 3 | Teams: one teammate per entity (pages + i18n) |
179
+ | Layer 0, Layer 1, Layer 4 | NO teams (sequential by nature) |
180
+ | Analysis phase (step-01) | Teams: scan-backend + scan-frontend + scan-context |
@@ -1,6 +1,6 @@
1
1
  # Core Seed Data - Execution Reference
2
2
 
3
- > **Loaded by:** apex step-03-execute (delegate mode + seedData tasks) and step-04-examine
3
+ > **Loaded by:** apex step-03-execute (ALWAYS for Layer 1) and step-04-examine
4
4
  > **Condition:** Seed data generation — infrastructure or seedData category tasks
5
5
  > **Applies to:** Client projects only (seeding_strategy = "provider", ExtensionsDbContext)
6
6
  >
@@ -840,6 +840,12 @@ DataExportEndpoints are seeded in DataExportEndpointConfiguration.cs with FK to
840
840
  ### Controller Pattern
841
841
 
842
842
  Export controllers: `[Route("api/v1/export")]` + `[RequirePermission]` + `[EnableRateLimiting]`
843
+
844
+ **Query Parameters (all export endpoints except Navigation):**
845
+ - `tenantId` (UUID, required) — Scopes the export to the specified tenant's data
846
+
847
+ Example: `GET /api/v1/export/users?tenantId=550e8400-e29b-41d4-a716-446655440000&page=1&pageSize=50`
848
+
843
849
  Management controllers: `[NavRoute("api.accounts")]` with CustomSegment
844
850
 
845
851
  ---