@atlashub/smartstack-cli 3.54.0 → 4.0.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 +1748 -780
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +850 -172
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +115 -115
- package/templates/skills/apex/SKILL.md +11 -9
- package/templates/skills/apex/references/agent-teams-protocol.md +32 -16
- package/templates/skills/apex/references/core-seed-data.md +1 -1
- package/templates/skills/apex/references/smartstack-api.md +6 -0
- package/templates/skills/apex/references/smartstack-layers.md +125 -118
- package/templates/skills/apex/steps/step-02-plan.md +33 -18
- package/templates/skills/apex/steps/step-03-execute.md +297 -120
- package/templates/skills/apex/steps/step-04-examine.md +15 -6
- package/templates/skills/apex/steps/step-07-tests.md +60 -40
- package/templates/skills/apex/steps/step-08-run-tests.md +5 -3
package/package.json
CHANGED
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@atlashub/smartstack-cli",
|
|
3
|
-
"version": "
|
|
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.0.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 |
|
|
95
|
-
| 08 | `steps/step-08-run-tests.md` | Opus | Run
|
|
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
|
-
| *
|
|
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 (
|
|
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** -
|
|
137
|
-
- **Agent Teams** - Parallel execution for scan (step-01) and Layer
|
|
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)
|
|
172
|
-
- Tests:
|
|
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-
|
|
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", "
|
|
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
|
|
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
|
-
|
|
94
|
-
|
|
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):
|
|
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
|
|
116
|
-
3. Layer 1:
|
|
117
|
-
4.
|
|
118
|
-
5.
|
|
119
|
-
6.
|
|
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
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
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 (
|
|
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
|
---
|