@atlashub/smartstack-cli 3.38.0 → 3.39.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/mcp-entry.mjs +62 -37
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +1 -1
- package/templates/agents/efcore/scan.md +3 -1
- package/templates/agents/gitflow/commit.md +74 -0
- package/templates/agents/gitflow/finish.md +5 -2
- package/templates/agents/gitflow/init-clone.md +3 -3
- package/templates/agents/gitflow/init-validate.md +3 -2
- package/templates/agents/gitflow/merge.md +5 -0
- package/templates/agents/gitflow/pr.md +5 -0
- package/templates/agents/gitflow/start.md +8 -1
- package/templates/hooks/hooks.json +11 -0
- package/templates/hooks/wsl-dotnet-cleanup.sh +24 -0
- package/templates/skills/apex/references/core-seed-data.md +0 -1
- package/templates/skills/apex/references/examine-build-validation.md +1 -6
- package/templates/skills/apex/references/smartstack-frontend.md +1 -1
- package/templates/skills/apex/steps/step-03-execute.md +4 -9
- package/templates/skills/apex/steps/step-08-run-tests.md +1 -2
- package/templates/skills/application/SKILL.md +241 -241
- package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +5 -5
- package/templates/skills/application/references/frontend-verification.md +1 -1
- package/templates/skills/application/references/init-parameter-detection.md +121 -120
- package/templates/skills/application/references/migration-checklist-troubleshooting.md +100 -100
- package/templates/skills/application/references/nav-fallback-procedure.md +199 -199
- package/templates/skills/application/steps/step-00-init.md +130 -130
- package/templates/skills/application/steps/step-01-navigation.md +170 -170
- package/templates/skills/application/steps/step-02-permissions.md +196 -196
- package/templates/skills/application/steps/step-03-roles.md +182 -182
- package/templates/skills/application/steps/step-03b-provider.md +133 -133
- package/templates/skills/application/steps/step-04-backend.md +174 -174
- package/templates/skills/application/steps/step-05-frontend.md +1 -1
- package/templates/skills/application/templates-frontend.md +7 -7
- package/templates/skills/business-analyse/react/schema.md +836 -836
- package/templates/skills/business-analyse/templates/tpl-progress.md +1 -1
- package/templates/skills/business-analyse/templates-frd.md +1 -1
- package/templates/skills/efcore/SKILL.md +1 -1
- package/templates/skills/efcore/steps/migration/step-02-create.md +1 -14
- package/templates/skills/gitflow/SKILL.md +27 -4
- package/templates/skills/gitflow/_shared.md +86 -12
- package/templates/skills/gitflow/phases/abort.md +4 -0
- package/templates/skills/gitflow/phases/cleanup.md +4 -0
- package/templates/skills/gitflow/references/finish-cleanup.md +4 -0
- package/templates/skills/gitflow/references/init-structure-creation.md +4 -0
- package/templates/skills/gitflow/references/start-worktree-creation.md +1 -1
- package/templates/skills/ralph-loop/steps/step-04-check.md +1 -2
- package/templates/skills/review-code/references/smartstack-conventions.md +568 -568
- package/templates/skills/validate-feature/steps/step-01-compile.md +1 -6
|
@@ -1,241 +1,241 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: application
|
|
3
|
-
description: |
|
|
4
|
-
Creates SmartStack full-stack applications/modules.
|
|
5
|
-
Use this skill when:
|
|
6
|
-
- User asks to create an application or module
|
|
7
|
-
- User mentions "new module", "new application", "add a feature"
|
|
8
|
-
- User wants to extend navigation with new entries
|
|
9
|
-
Scope: Application → Module → Section (all levels)
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Skill Application SmartStack
|
|
13
|
-
|
|
14
|
-
**Reference:** [_shared.md](../_shared.md) for architecture, permissions, i18n
|
|
15
|
-
|
|
16
|
-
## ENTRY POINT
|
|
17
|
-
|
|
18
|
-
> **FIRST ACTION:** Load `steps/step-00-init.md`
|
|
19
|
-
|
|
20
|
-
This skill uses progressive step loading. Each step calls MCP tools for generation.
|
|
21
|
-
|
|
22
|
-
## STEP FILES
|
|
23
|
-
|
|
24
|
-
| Step | File | MCP Tool Called | Condition |
|
|
25
|
-
|------|------|-----------------|-----------|
|
|
26
|
-
| 00 | `steps/step-00-init.md` | `validate_conventions` (MCP check) | Always |
|
|
27
|
-
| 01 | `steps/step-01-navigation.md` | `scaffold_navigation` | Always |
|
|
28
|
-
| 02 | `steps/step-02-permissions.md` | `generate_permissions` | Always |
|
|
29
|
-
| 03 | `steps/step-03-roles.md` | `scaffold_role_permissions` | Always |
|
|
30
|
-
| 03b | `steps/step-03b-provider.md` | (none - direct generation) | Client projects only |
|
|
31
|
-
| 04 | `steps/step-04-backend.md` | `scaffold_extension` | Always |
|
|
32
|
-
| 05 | `steps/step-05-frontend.md` | `scaffold_api_client`, `scaffold_routes` | Always |
|
|
33
|
-
| 06 | `steps/step-06-migration.md` | `suggest_migration` | Always |
|
|
34
|
-
| 07 | `steps/step-07-tests.md` | `scaffold_tests` | Always |
|
|
35
|
-
| 08 | `steps/step-08-documentation.md` | `/documentation` skill | If userDocRequired |
|
|
36
|
-
|
|
37
|
-
## MCP INTEGRATION
|
|
38
|
-
|
|
39
|
-
> **CRITICAL:** This skill MUST use MCP tools for all generation.
|
|
40
|
-
> Templates in this folder are for REFERENCE ONLY - never use them directly.
|
|
41
|
-
|
|
42
|
-
| MCP Tool | Purpose |
|
|
43
|
-
|----------|---------|
|
|
44
|
-
| `mcp__smartstack__scaffold_navigation` | Navigation entity + translations |
|
|
45
|
-
| `mcp__smartstack__generate_permissions` | Permissions.cs + HasData |
|
|
46
|
-
| `mcp__smartstack__scaffold_role_permissions` | Role-permission mappings |
|
|
47
|
-
| `mcp__smartstack__scaffold_extension` | Entity, Service, Controller, DTOs |
|
|
48
|
-
| `mcp__smartstack__scaffold_api_client` | TypeScript API client |
|
|
49
|
-
| `mcp__smartstack__scaffold_routes` | React Router configuration |
|
|
50
|
-
| `mcp__smartstack__suggest_migration` | Migration name suggestion |
|
|
51
|
-
| `mcp__smartstack__scaffold_tests` | Test suite generation (backend) |
|
|
52
|
-
| `mcp__smartstack__scaffold_frontend_tests` | Test suite generation (frontend React) |
|
|
53
|
-
| `mcp__smartstack__validate_conventions` | Post-generation convention check |
|
|
54
|
-
| `mcp__smartstack__review_code` | Code quality audit |
|
|
55
|
-
|
|
56
|
-
## WHEN THIS SKILL ACTIVATES
|
|
57
|
-
|
|
58
|
-
| Trigger | Example |
|
|
59
|
-
|---------|---------|
|
|
60
|
-
| Explicit request | "Create a module to manage products" |
|
|
61
|
-
| New feature | "We need to add order management" |
|
|
62
|
-
| Navigation extension | "Add a CRM application" |
|
|
63
|
-
| Keywords | "new module", "new application" |
|
|
64
|
-
|
|
65
|
-
## FLOW ARCHITECTURE
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
WEB (React) → API (.NET) → Application → Infrastructure → Database
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**FORBIDDEN:** WEB → Infrastructure (direct DB access), WEB → Domain
|
|
72
|
-
|
|
73
|
-
## WORKFLOW
|
|
74
|
-
|
|
75
|
-
### 1. Level Detection
|
|
76
|
-
|
|
77
|
-
| Hint | → Level |
|
|
78
|
-
|------|---------|
|
|
79
|
-
| "application", "app" | Application |
|
|
80
|
-
| "module", "feature" | Module |
|
|
81
|
-
| "section", "tab" | Section |
|
|
82
|
-
|
|
83
|
-
### 2. Parameter Extraction
|
|
84
|
-
`$LEVEL`, `$CODE` (kebab-case), `$LABEL_EN`, `$ICON` (Lucide)
|
|
85
|
-
|
|
86
|
-
### 3. Full-Stack Generation
|
|
87
|
-
```
|
|
88
|
-
1. DB SEED (Navigation + Translations 4 languages)
|
|
89
|
-
2. PERMISSIONS (Permissions.cs + PermissionConfiguration.cs) ← 2 files!
|
|
90
|
-
3. ROLES (RolePermission mappings)
|
|
91
|
-
3b. CLIENT SEED PROVIDER (client projects only - IClientSeedDataProvider)
|
|
92
|
-
4. API (Controller + DTOs via /controller:create)
|
|
93
|
-
4b. VALIDATE (/validate - convention check on generated backend)
|
|
94
|
-
5. SERVICES (Interface + Implementation)
|
|
95
|
-
6. FRONTEND (Page + Components + Hooks)
|
|
96
|
-
7. I18N (fr, en, it, de)
|
|
97
|
-
8. ROUTES (nested routes mandatory)
|
|
98
|
-
9. PREFERENCES (Hook pattern)
|
|
99
|
-
10. MIGRATION (/efcore:migration)
|
|
100
|
-
11. TESTS - Backend (scaffold_tests - 7 categories including real integration)
|
|
101
|
-
12. TESTS - Frontend (scaffold_frontend_tests - Vitest + Testing Library + MSW)
|
|
102
|
-
13. REVIEW (/review-code - security + architecture + quality audit)
|
|
103
|
-
14. DOCUMENTATION (in-app user doc via /documentation - if userDocRequired)
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### 3b. Client Seed Provider (client projects only)
|
|
107
|
-
Generates `IClientSeedDataProvider` implementation that wires navigation + permissions + roles
|
|
108
|
-
into the SmartStack Core seeding pipeline. Only runs when `{seeding_strategy}` = "provider".
|
|
109
|
-
Core projects skip this step entirely.
|
|
110
|
-
|
|
111
|
-
### 4. Automatic Chaining
|
|
112
|
-
- `/controller:create` → API Controllers
|
|
113
|
-
- `/efcore:migration` → DB Migrations
|
|
114
|
-
- `/ui-components` → EntityCard, DataTable
|
|
115
|
-
|
|
116
|
-
## USER PREFERENCES
|
|
117
|
-
|
|
118
|
-
| Preference | Storage |
|
|
119
|
-
|------------|---------|
|
|
120
|
-
| pageSize | `user.preferences.{module}.pageSize` |
|
|
121
|
-
| sortColumn/Direction | `user.preferences.{module}.sort*` |
|
|
122
|
-
| filters | `user.preferences.{module}.filters` |
|
|
123
|
-
| visibleColumns | `user.preferences.{module}.visibleColumns` |
|
|
124
|
-
| viewMode | `user.preferences.{module}.viewMode` |
|
|
125
|
-
|
|
126
|
-
```typescript
|
|
127
|
-
export function use{Module}Preferences() {
|
|
128
|
-
const { preferences, updatePreference } = useUserPreferences();
|
|
129
|
-
return {
|
|
130
|
-
pageSize: preferences.{module}?.pageSize ?? 10,
|
|
131
|
-
setPageSize: (size: number) => updatePreference('{module}.pageSize', size),
|
|
132
|
-
// ... others
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## ROUTING (React Router v7)
|
|
138
|
-
|
|
139
|
-
```tsx
|
|
140
|
-
// ✅ CORRECT - Nested routes
|
|
141
|
-
<Route path="$APPLICATION">
|
|
142
|
-
<Route index element={<Navigate to="$DEFAULT_MODULE" replace />} />
|
|
143
|
-
<Route path="$MODULE1" element={<Module1Page />} />
|
|
144
|
-
</Route>
|
|
145
|
-
|
|
146
|
-
// ❌ FORBIDDEN - Flat routes (cause redirect to Home)
|
|
147
|
-
<Route path="$APPLICATION" element={<Navigate ... />} />
|
|
148
|
-
<Route path="$APPLICATION/$MODULE1" element={...} />
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## INTEGRATIONS
|
|
152
|
-
|
|
153
|
-
| Skill | When | Action |
|
|
154
|
-
|-------|------|--------|
|
|
155
|
-
| `/notification` | User alerts | INotificationService + SignalR |
|
|
156
|
-
| `/workflow` | Automated emails | IWorkflowService.TriggerAsync |
|
|
157
|
-
| `/ai-prompt` | AI assistance | IAiCompletionService |
|
|
158
|
-
| `/feature-full` | Complete feature | Orchestration all skills |
|
|
159
|
-
| `/validate` | After step-04 (backend) | MCP `validate_conventions` on generated code |
|
|
160
|
-
| `/review-code` | After step-07 (tests) | Security (OWASP), architecture, SOLID, performance audit |
|
|
161
|
-
| `/validate-feature` | After step-07 (tests) | Compile + test + API smoke test |
|
|
162
|
-
| `/documentation` | In-app user doc | Documentation page via doc-data.ts + DocRenderer |
|
|
163
|
-
|
|
164
|
-
### Notification Integration Pattern
|
|
165
|
-
```csharp
|
|
166
|
-
await _notificationService.SendNotificationAsync(
|
|
167
|
-
userId, NotificationType.{Entity}Created, title, message,
|
|
168
|
-
relatedEntityType: nameof({Entity}), relatedEntityId: entity.Id);
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### Workflow Integration Pattern
|
|
172
|
-
```csharp
|
|
173
|
-
await _workflowService.TriggerAsync("{entity}.created", new Dictionary<string, object>
|
|
174
|
-
{
|
|
175
|
-
["entityId"] = entity.Id,
|
|
176
|
-
["creatorEmail"] = _currentUser.Email
|
|
177
|
-
});
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
## ABSOLUTE RULES
|
|
181
|
-
|
|
182
|
-
| DO | DON'T |
|
|
183
|
-
|----|-------|
|
|
184
|
-
| 4 languages (FR, EN, IT, DE) | Import Infrastructure in frontend |
|
|
185
|
-
| Permissions: 2 files | Direct SQL in frontend |
|
|
186
|
-
| Nested routes | Flat routes (flat siblings) |
|
|
187
|
-
| EntityCard for cards | Manual cards with divs |
|
|
188
|
-
| DataTable for tables | Sequential GUIDs |
|
|
189
|
-
|
|
190
|
-
### FORBIDDEN ACTIONS (BLOCKING)
|
|
191
|
-
|
|
192
|
-
> **NEVER create temporary files, scripts, or helper files of any kind.**
|
|
193
|
-
|
|
194
|
-
| FORBIDDEN | USE INSTEAD |
|
|
195
|
-
|-----------|-------------|
|
|
196
|
-
| Creating `.ps1` scripts | `Grep` tool to search `.cs` files |
|
|
197
|
-
| Creating `.sh` / `.bat` scripts | `Glob` tool to find files by pattern |
|
|
198
|
-
| Creating `temp-*` files | `Read` tool to inspect file contents |
|
|
199
|
-
| Scanning DLLs / assemblies | Search source `.cs` files directly |
|
|
200
|
-
| Running `dotnet` reflection commands | MCP `validate_conventions` tool |
|
|
201
|
-
| Any file not part of the final deliverable | Ask the user if information is missing |
|
|
202
|
-
|
|
203
|
-
**Type Discovery Rules:**
|
|
204
|
-
- To find base classes: `Grep` for `class BaseEntity` or `class {Name}` in `*.cs` files
|
|
205
|
-
- To find existing services: `Glob` for `**/I*Service.cs` in the Application layer
|
|
206
|
-
- To find NuGet packages: `Read` the `.csproj` files directly
|
|
207
|
-
- To find existing entities: `Glob` for `**/*.cs` in the Domain layer
|
|
208
|
-
- If a type cannot be found after 2 search attempts: **ASK the user**, do NOT create scripts
|
|
209
|
-
|
|
210
|
-
## ASSOCIATED FILES
|
|
211
|
-
|
|
212
|
-
### Step Files (ACTIVE - Use These)
|
|
213
|
-
- [steps/step-00-init.md](steps/step-00-init.md) - Initialize parameters
|
|
214
|
-
- [steps/step-01-navigation.md](steps/step-01-navigation.md) - Generate navigation
|
|
215
|
-
- [steps/step-02-permissions.md](steps/step-02-permissions.md) - Generate permissions
|
|
216
|
-
- [steps/step-03-roles.md](steps/step-03-roles.md) - Assign roles
|
|
217
|
-
- [steps/step-03b-provider.md](steps/step-03b-provider.md) - Client seed provider (client projects only)
|
|
218
|
-
- [steps/step-04-backend.md](steps/step-04-backend.md) - Generate backend
|
|
219
|
-
- [steps/step-05-frontend.md](steps/step-05-frontend.md) - Generate frontend
|
|
220
|
-
- [steps/step-06-migration.md](steps/step-06-migration.md) - Create migration
|
|
221
|
-
- [steps/step-07-tests.md](steps/step-07-tests.md) - Generate test suite
|
|
222
|
-
- [steps/step-08-documentation.md](steps/step-08-documentation.md) - Generate in-app documentation
|
|
223
|
-
|
|
224
|
-
### Templates (REFERENCE ONLY - Do Not Use Directly)
|
|
225
|
-
> These templates are kept for documentation purposes.
|
|
226
|
-
> All generation is done via MCP tools in step files.
|
|
227
|
-
|
|
228
|
-
- [templates-backend.md](templates-backend.md) - Backend patterns reference
|
|
229
|
-
- [templates-frontend.md](templates-frontend.md) - Frontend patterns reference
|
|
230
|
-
- [templates-i18n.md](templates-i18n.md) - i18n structure reference
|
|
231
|
-
- [templates-seed.md](templates-seed.md) - Seed data patterns reference
|
|
232
|
-
|
|
233
|
-
<success_criteria>
|
|
234
|
-
- Navigation entries created with correct hierarchy (Application/Module)
|
|
235
|
-
- Permissions generated via MCP with 2-file pattern (constants + seed)
|
|
236
|
-
- Roles assigned with appropriate permission sets
|
|
237
|
-
- Backend layers follow SmartStack conventions (validated by MCP)
|
|
238
|
-
- Frontend pages in correct path structure with i18n
|
|
239
|
-
- EF Core migration created and applied successfully
|
|
240
|
-
- Test suite generated and passing
|
|
241
|
-
</success_criteria>
|
|
1
|
+
---
|
|
2
|
+
name: application
|
|
3
|
+
description: |
|
|
4
|
+
Creates SmartStack full-stack applications/modules.
|
|
5
|
+
Use this skill when:
|
|
6
|
+
- User asks to create an application or module
|
|
7
|
+
- User mentions "new module", "new application", "add a feature"
|
|
8
|
+
- User wants to extend navigation with new entries
|
|
9
|
+
Scope: Application → Module → Section → Resource (all levels)
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Skill Application SmartStack
|
|
13
|
+
|
|
14
|
+
**Reference:** [_shared.md](../_shared.md) for architecture, permissions, i18n
|
|
15
|
+
|
|
16
|
+
## ENTRY POINT
|
|
17
|
+
|
|
18
|
+
> **FIRST ACTION:** Load `steps/step-00-init.md`
|
|
19
|
+
|
|
20
|
+
This skill uses progressive step loading. Each step calls MCP tools for generation.
|
|
21
|
+
|
|
22
|
+
## STEP FILES
|
|
23
|
+
|
|
24
|
+
| Step | File | MCP Tool Called | Condition |
|
|
25
|
+
|------|------|-----------------|-----------|
|
|
26
|
+
| 00 | `steps/step-00-init.md` | `validate_conventions` (MCP check) | Always |
|
|
27
|
+
| 01 | `steps/step-01-navigation.md` | `scaffold_navigation` | Always |
|
|
28
|
+
| 02 | `steps/step-02-permissions.md` | `generate_permissions` | Always |
|
|
29
|
+
| 03 | `steps/step-03-roles.md` | `scaffold_role_permissions` | Always |
|
|
30
|
+
| 03b | `steps/step-03b-provider.md` | (none - direct generation) | Client projects only |
|
|
31
|
+
| 04 | `steps/step-04-backend.md` | `scaffold_extension` | Always |
|
|
32
|
+
| 05 | `steps/step-05-frontend.md` | `scaffold_api_client`, `scaffold_routes` | Always |
|
|
33
|
+
| 06 | `steps/step-06-migration.md` | `suggest_migration` | Always |
|
|
34
|
+
| 07 | `steps/step-07-tests.md` | `scaffold_tests` | Always |
|
|
35
|
+
| 08 | `steps/step-08-documentation.md` | `/documentation` skill | If userDocRequired |
|
|
36
|
+
|
|
37
|
+
## MCP INTEGRATION
|
|
38
|
+
|
|
39
|
+
> **CRITICAL:** This skill MUST use MCP tools for all generation.
|
|
40
|
+
> Templates in this folder are for REFERENCE ONLY - never use them directly.
|
|
41
|
+
|
|
42
|
+
| MCP Tool | Purpose |
|
|
43
|
+
|----------|---------|
|
|
44
|
+
| `mcp__smartstack__scaffold_navigation` | Navigation entity + translations |
|
|
45
|
+
| `mcp__smartstack__generate_permissions` | Permissions.cs + HasData |
|
|
46
|
+
| `mcp__smartstack__scaffold_role_permissions` | Role-permission mappings |
|
|
47
|
+
| `mcp__smartstack__scaffold_extension` | Entity, Service, Controller, DTOs |
|
|
48
|
+
| `mcp__smartstack__scaffold_api_client` | TypeScript API client |
|
|
49
|
+
| `mcp__smartstack__scaffold_routes` | React Router configuration |
|
|
50
|
+
| `mcp__smartstack__suggest_migration` | Migration name suggestion |
|
|
51
|
+
| `mcp__smartstack__scaffold_tests` | Test suite generation (backend) |
|
|
52
|
+
| `mcp__smartstack__scaffold_frontend_tests` | Test suite generation (frontend React) |
|
|
53
|
+
| `mcp__smartstack__validate_conventions` | Post-generation convention check |
|
|
54
|
+
| `mcp__smartstack__review_code` | Code quality audit |
|
|
55
|
+
|
|
56
|
+
## WHEN THIS SKILL ACTIVATES
|
|
57
|
+
|
|
58
|
+
| Trigger | Example |
|
|
59
|
+
|---------|---------|
|
|
60
|
+
| Explicit request | "Create a module to manage products" |
|
|
61
|
+
| New feature | "We need to add order management" |
|
|
62
|
+
| Navigation extension | "Add a CRM application" |
|
|
63
|
+
| Keywords | "new module", "new application" |
|
|
64
|
+
|
|
65
|
+
## FLOW ARCHITECTURE
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
WEB (React) → API (.NET) → Application → Infrastructure → Database
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**FORBIDDEN:** WEB → Infrastructure (direct DB access), WEB → Domain
|
|
72
|
+
|
|
73
|
+
## WORKFLOW
|
|
74
|
+
|
|
75
|
+
### 1. Level Detection
|
|
76
|
+
|
|
77
|
+
| Hint | → Level |
|
|
78
|
+
|------|---------|
|
|
79
|
+
| "application", "app" | Application |
|
|
80
|
+
| "module", "feature" | Module |
|
|
81
|
+
| "section", "tab" | Section |
|
|
82
|
+
|
|
83
|
+
### 2. Parameter Extraction
|
|
84
|
+
`$LEVEL`, `$CODE` (kebab-case), `$LABEL_EN`, `$ICON` (Lucide)
|
|
85
|
+
|
|
86
|
+
### 3. Full-Stack Generation
|
|
87
|
+
```
|
|
88
|
+
1. DB SEED (Navigation + Translations 4 languages)
|
|
89
|
+
2. PERMISSIONS (Permissions.cs + PermissionConfiguration.cs) ← 2 files!
|
|
90
|
+
3. ROLES (RolePermission mappings)
|
|
91
|
+
3b. CLIENT SEED PROVIDER (client projects only - IClientSeedDataProvider)
|
|
92
|
+
4. API (Controller + DTOs via /controller:create)
|
|
93
|
+
4b. VALIDATE (/validate - convention check on generated backend)
|
|
94
|
+
5. SERVICES (Interface + Implementation)
|
|
95
|
+
6. FRONTEND (Page + Components + Hooks)
|
|
96
|
+
7. I18N (fr, en, it, de)
|
|
97
|
+
8. ROUTES (nested routes mandatory)
|
|
98
|
+
9. PREFERENCES (Hook pattern)
|
|
99
|
+
10. MIGRATION (/efcore:migration)
|
|
100
|
+
11. TESTS - Backend (scaffold_tests - 7 categories including real integration)
|
|
101
|
+
12. TESTS - Frontend (scaffold_frontend_tests - Vitest + Testing Library + MSW)
|
|
102
|
+
13. REVIEW (/review-code - security + architecture + quality audit)
|
|
103
|
+
14. DOCUMENTATION (in-app user doc via /documentation - if userDocRequired)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 3b. Client Seed Provider (client projects only)
|
|
107
|
+
Generates `IClientSeedDataProvider` implementation that wires navigation + permissions + roles
|
|
108
|
+
into the SmartStack Core seeding pipeline. Only runs when `{seeding_strategy}` = "provider".
|
|
109
|
+
Core projects skip this step entirely.
|
|
110
|
+
|
|
111
|
+
### 4. Automatic Chaining
|
|
112
|
+
- `/controller:create` → API Controllers
|
|
113
|
+
- `/efcore:migration` → DB Migrations
|
|
114
|
+
- `/ui-components` → EntityCard, DataTable
|
|
115
|
+
|
|
116
|
+
## USER PREFERENCES
|
|
117
|
+
|
|
118
|
+
| Preference | Storage |
|
|
119
|
+
|------------|---------|
|
|
120
|
+
| pageSize | `user.preferences.{module}.pageSize` |
|
|
121
|
+
| sortColumn/Direction | `user.preferences.{module}.sort*` |
|
|
122
|
+
| filters | `user.preferences.{module}.filters` |
|
|
123
|
+
| visibleColumns | `user.preferences.{module}.visibleColumns` |
|
|
124
|
+
| viewMode | `user.preferences.{module}.viewMode` |
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
export function use{Module}Preferences() {
|
|
128
|
+
const { preferences, updatePreference } = useUserPreferences();
|
|
129
|
+
return {
|
|
130
|
+
pageSize: preferences.{module}?.pageSize ?? 10,
|
|
131
|
+
setPageSize: (size: number) => updatePreference('{module}.pageSize', size),
|
|
132
|
+
// ... others
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## ROUTING (React Router v7)
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
// ✅ CORRECT - Nested routes
|
|
141
|
+
<Route path="$APPLICATION">
|
|
142
|
+
<Route index element={<Navigate to="$DEFAULT_MODULE" replace />} />
|
|
143
|
+
<Route path="$MODULE1" element={<Module1Page />} />
|
|
144
|
+
</Route>
|
|
145
|
+
|
|
146
|
+
// ❌ FORBIDDEN - Flat routes (cause redirect to Home)
|
|
147
|
+
<Route path="$APPLICATION" element={<Navigate ... />} />
|
|
148
|
+
<Route path="$APPLICATION/$MODULE1" element={...} />
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## INTEGRATIONS
|
|
152
|
+
|
|
153
|
+
| Skill | When | Action |
|
|
154
|
+
|-------|------|--------|
|
|
155
|
+
| `/notification` | User alerts | INotificationService + SignalR |
|
|
156
|
+
| `/workflow` | Automated emails | IWorkflowService.TriggerAsync |
|
|
157
|
+
| `/ai-prompt` | AI assistance | IAiCompletionService |
|
|
158
|
+
| `/feature-full` | Complete feature | Orchestration all skills |
|
|
159
|
+
| `/validate` | After step-04 (backend) | MCP `validate_conventions` on generated code |
|
|
160
|
+
| `/review-code` | After step-07 (tests) | Security (OWASP), architecture, SOLID, performance audit |
|
|
161
|
+
| `/validate-feature` | After step-07 (tests) | Compile + test + API smoke test |
|
|
162
|
+
| `/documentation` | In-app user doc | Documentation page via doc-data.ts + DocRenderer |
|
|
163
|
+
|
|
164
|
+
### Notification Integration Pattern
|
|
165
|
+
```csharp
|
|
166
|
+
await _notificationService.SendNotificationAsync(
|
|
167
|
+
userId, NotificationType.{Entity}Created, title, message,
|
|
168
|
+
relatedEntityType: nameof({Entity}), relatedEntityId: entity.Id);
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Workflow Integration Pattern
|
|
172
|
+
```csharp
|
|
173
|
+
await _workflowService.TriggerAsync("{entity}.created", new Dictionary<string, object>
|
|
174
|
+
{
|
|
175
|
+
["entityId"] = entity.Id,
|
|
176
|
+
["creatorEmail"] = _currentUser.Email
|
|
177
|
+
});
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## ABSOLUTE RULES
|
|
181
|
+
|
|
182
|
+
| DO | DON'T |
|
|
183
|
+
|----|-------|
|
|
184
|
+
| 4 languages (FR, EN, IT, DE) | Import Infrastructure in frontend |
|
|
185
|
+
| Permissions: 2 files | Direct SQL in frontend |
|
|
186
|
+
| Nested routes | Flat routes (flat siblings) |
|
|
187
|
+
| EntityCard for cards | Manual cards with divs |
|
|
188
|
+
| DataTable for tables | Sequential GUIDs |
|
|
189
|
+
|
|
190
|
+
### FORBIDDEN ACTIONS (BLOCKING)
|
|
191
|
+
|
|
192
|
+
> **NEVER create temporary files, scripts, or helper files of any kind.**
|
|
193
|
+
|
|
194
|
+
| FORBIDDEN | USE INSTEAD |
|
|
195
|
+
|-----------|-------------|
|
|
196
|
+
| Creating `.ps1` scripts | `Grep` tool to search `.cs` files |
|
|
197
|
+
| Creating `.sh` / `.bat` scripts | `Glob` tool to find files by pattern |
|
|
198
|
+
| Creating `temp-*` files | `Read` tool to inspect file contents |
|
|
199
|
+
| Scanning DLLs / assemblies | Search source `.cs` files directly |
|
|
200
|
+
| Running `dotnet` reflection commands | MCP `validate_conventions` tool |
|
|
201
|
+
| Any file not part of the final deliverable | Ask the user if information is missing |
|
|
202
|
+
|
|
203
|
+
**Type Discovery Rules:**
|
|
204
|
+
- To find base classes: `Grep` for `class BaseEntity` or `class {Name}` in `*.cs` files
|
|
205
|
+
- To find existing services: `Glob` for `**/I*Service.cs` in the Application layer
|
|
206
|
+
- To find NuGet packages: `Read` the `.csproj` files directly
|
|
207
|
+
- To find existing entities: `Glob` for `**/*.cs` in the Domain layer
|
|
208
|
+
- If a type cannot be found after 2 search attempts: **ASK the user**, do NOT create scripts
|
|
209
|
+
|
|
210
|
+
## ASSOCIATED FILES
|
|
211
|
+
|
|
212
|
+
### Step Files (ACTIVE - Use These)
|
|
213
|
+
- [steps/step-00-init.md](steps/step-00-init.md) - Initialize parameters
|
|
214
|
+
- [steps/step-01-navigation.md](steps/step-01-navigation.md) - Generate navigation
|
|
215
|
+
- [steps/step-02-permissions.md](steps/step-02-permissions.md) - Generate permissions
|
|
216
|
+
- [steps/step-03-roles.md](steps/step-03-roles.md) - Assign roles
|
|
217
|
+
- [steps/step-03b-provider.md](steps/step-03b-provider.md) - Client seed provider (client projects only)
|
|
218
|
+
- [steps/step-04-backend.md](steps/step-04-backend.md) - Generate backend
|
|
219
|
+
- [steps/step-05-frontend.md](steps/step-05-frontend.md) - Generate frontend
|
|
220
|
+
- [steps/step-06-migration.md](steps/step-06-migration.md) - Create migration
|
|
221
|
+
- [steps/step-07-tests.md](steps/step-07-tests.md) - Generate test suite
|
|
222
|
+
- [steps/step-08-documentation.md](steps/step-08-documentation.md) - Generate in-app documentation
|
|
223
|
+
|
|
224
|
+
### Templates (REFERENCE ONLY - Do Not Use Directly)
|
|
225
|
+
> These templates are kept for documentation purposes.
|
|
226
|
+
> All generation is done via MCP tools in step files.
|
|
227
|
+
|
|
228
|
+
- [templates-backend.md](templates-backend.md) - Backend patterns reference
|
|
229
|
+
- [templates-frontend.md](templates-frontend.md) - Frontend patterns reference
|
|
230
|
+
- [templates-i18n.md](templates-i18n.md) - i18n structure reference
|
|
231
|
+
- [templates-seed.md](templates-seed.md) - Seed data patterns reference
|
|
232
|
+
|
|
233
|
+
<success_criteria>
|
|
234
|
+
- Navigation entries created with correct hierarchy (Application/Module)
|
|
235
|
+
- Permissions generated via MCP with 2-file pattern (constants + seed)
|
|
236
|
+
- Roles assigned with appropriate permission sets
|
|
237
|
+
- Backend layers follow SmartStack conventions (validated by MCP)
|
|
238
|
+
- Frontend pages in correct path structure with i18n
|
|
239
|
+
- EF Core migration created and applied successfully
|
|
240
|
+
- Test suite generated and passing
|
|
241
|
+
</success_criteria>
|
|
@@ -55,7 +55,7 @@ Routes are automatically injected into BOTH standard (`/{application}/...`) and
|
|
|
55
55
|
→ Insert `<Route>` children inside the Layout wrapper:
|
|
56
56
|
|
|
57
57
|
```tsx
|
|
58
|
-
<Route path="/human-resources" element={<
|
|
58
|
+
<Route path="/human-resources" element={<AppLayout />}>
|
|
59
59
|
{/* ... existing routes ... */}
|
|
60
60
|
<Route path="{module_kebab}" element={<{EntityName}Page />} />
|
|
61
61
|
</Route>
|
|
@@ -71,9 +71,9 @@ Find `<Route path="/t/:slug">` and add the **same route entries** there.
|
|
|
71
71
|
|
|
72
72
|
| Application prefix | Layout Component | Route path |
|
|
73
73
|
|---------|------------------|------------|
|
|
74
|
-
| `administration.*` | `
|
|
75
|
-
| `*` (business apps) | `
|
|
76
|
-
| `myspace.*` | `
|
|
74
|
+
| `administration.*` | `AppLayout` | `/administration` |
|
|
75
|
+
| `*` (business apps) | `AppLayout` | `/{application}` |
|
|
76
|
+
| `myspace.*` | `AppLayout` | `/myspace` |
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
@@ -99,7 +99,7 @@ If `appWiring.issues` is not empty, fix the wiring before proceeding.
|
|
|
99
99
|
|
|
100
100
|
## Verification Checklist
|
|
101
101
|
|
|
102
|
-
- [ ] Routes are inside
|
|
102
|
+
- [ ] Routes are inside the AppLayout wrapper
|
|
103
103
|
- [ ] Routes use NESTED structure (not flat)
|
|
104
104
|
- [ ] Application kebab-case matches navigation seed data
|
|
105
105
|
- [ ] Both standard and tenant-prefixed blocks have routes (if using Pattern B)
|
|
@@ -74,7 +74,7 @@ Verify exactly **4 language files** exist with identical key structures:
|
|
|
74
74
|
### 5. Route Check (BLOCKING)
|
|
75
75
|
|
|
76
76
|
Verify routes are:
|
|
77
|
-
- **INSIDE** the
|
|
77
|
+
- **INSIDE** the AppLayout wrapper
|
|
78
78
|
- **NESTED** (not flat)
|
|
79
79
|
- Following path convention: `/{application_kebab}/{module_kebab}` (kebab-case)
|
|
80
80
|
|