@atlashub/smartstack-cli 1.13.2 → 1.14.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/agents.html +1 -1
- package/.documentation/apex.html +1 -1
- package/.documentation/business-analyse.html +1 -1
- package/.documentation/cli-commands.html +3 -3
- package/.documentation/commands.html +1 -1
- package/.documentation/efcore.html +1 -1
- package/.documentation/gitflow.html +1 -1
- package/.documentation/hooks.html +1 -1
- package/.documentation/index.html +1 -1
- package/.documentation/init.html +3 -3
- package/.documentation/installation.html +1001 -352
- package/.documentation/ralph-loop.html +1 -1
- package/.documentation/test-web.html +1 -1
- package/README.md +88 -20
- package/dist/index.js +276 -85
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/code-reviewer.md +163 -0
- package/templates/agents/efcore/db-deploy.md +25 -7
- package/templates/agents/efcore/db-reset.md +31 -10
- package/templates/agents/efcore/db-status.md +22 -5
- package/templates/agents/efcore/migration.md +69 -19
- package/templates/agents/gitflow/cleanup.md +8 -1
- package/templates/agents/gitflow/commit.md +7 -5
- package/templates/agents/gitflow/finish.md +6 -4
- package/templates/agents/gitflow/pr.md +8 -1
- package/templates/agents/gitflow/start.md +1 -1
- package/templates/commands/check-version.md +267 -0
- package/templates/commands/efcore/_shared.md +30 -1
- package/templates/commands/efcore/db-reset.md +18 -6
- package/templates/commands/gitflow/OPTIMIZATIONS.md +206 -0
- package/templates/commands/refactor.md +164 -0
- package/templates/project/DependencyInjection.Application.cs.template +25 -0
- package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -0
- package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -0
- package/templates/project/ExampleEntity.cs.template +116 -0
- package/templates/project/ExampleEntityConfiguration.cs.template +64 -0
- package/templates/project/ExampleService.cs.template +146 -0
- package/templates/project/ExtensionsDbContext.cs.template +41 -0
- package/templates/project/IExtensionsDbContext.cs.template +22 -0
- package/templates/project/Program.cs.template +47 -0
- package/templates/project/README.md +79 -0
- package/templates/ralph/README.md +10 -8
- package/templates/ralph/ralph.config.yaml +2 -2
- package/templates/skills/_shared.md +44 -44
- package/templates/skills/ai-prompt/SKILL.md +55 -55
- package/templates/skills/apex/SKILL.md +235 -0
- package/templates/skills/apex/steps/step-00-init.md +203 -0
- package/templates/skills/apex/steps/step-01-analyze.md +210 -0
- package/templates/skills/apex/steps/step-02-plan.md +217 -0
- package/templates/skills/apex/steps/step-03-execute.md +178 -0
- package/templates/skills/apex/steps/step-04-validate.md +217 -0
- package/templates/skills/apex/steps/step-05-examine.md +207 -0
- package/templates/skills/apex/steps/step-06-resolve.md +181 -0
- package/templates/skills/apex/steps/step-07-tests.md +206 -0
- package/templates/skills/apex/steps/step-08-run-tests.md +207 -0
- package/templates/skills/apex/templates/00-context.md +46 -0
- package/templates/skills/apex/templates/01-analyze.md +63 -0
- package/templates/skills/apex/templates/02-plan.md +63 -0
- package/templates/skills/apex/templates/03-execute.md +34 -0
- package/templates/skills/apex/templates/04-validate.md +61 -0
- package/templates/skills/apex/templates/05-examine.md +58 -0
- package/templates/skills/apex/templates/06-resolve.md +39 -0
- package/templates/skills/apex/templates/07-tests.md +56 -0
- package/templates/skills/apex/templates/08-run-tests.md +41 -0
- package/templates/skills/apex/templates/README.md +69 -0
- package/templates/skills/application/SKILL.md +50 -50
- package/templates/skills/application/templates-backend.md +25 -25
- package/templates/skills/application/templates-frontend.md +43 -43
- package/templates/skills/application/templates-i18n.md +29 -29
- package/templates/skills/application/templates-seed.md +77 -77
- package/templates/skills/business-analyse/SKILL.md +223 -0
- package/templates/skills/business-analyse/_shared.md +258 -0
- package/templates/skills/business-analyse/questionnaire/01-context.md +33 -0
- package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +35 -0
- package/templates/skills/business-analyse/questionnaire/03-scope.md +35 -0
- package/templates/skills/business-analyse/questionnaire/04-data.md +36 -0
- package/templates/skills/business-analyse/questionnaire/05-integrations.md +36 -0
- package/templates/skills/business-analyse/questionnaire/06-security.md +40 -0
- package/templates/skills/business-analyse/questionnaire/07-ui.md +36 -0
- package/templates/skills/business-analyse/questionnaire/08-performance.md +35 -0
- package/templates/skills/business-analyse/questionnaire/09-constraints.md +35 -0
- package/templates/skills/business-analyse/questionnaire/10-documentation.md +35 -0
- package/templates/skills/business-analyse/questionnaire.md +177 -177
- package/templates/skills/business-analyse/react/components.md +340 -0
- package/templates/skills/business-analyse/react/i18n-template.md +245 -0
- package/templates/skills/business-analyse/react/schema.md +151 -0
- package/templates/skills/business-analyse/steps/step-00-init.md +293 -0
- package/templates/skills/business-analyse/steps/step-01-discover.md +267 -0
- package/templates/skills/business-analyse/steps/step-02-analyse.md +243 -0
- package/templates/skills/business-analyse/steps/step-03-specify.md +317 -0
- package/templates/skills/business-analyse/steps/step-04-validate.md +239 -0
- package/templates/skills/business-analyse/steps/step-05-handoff.md +336 -0
- package/templates/skills/business-analyse/steps/step-06-doc-html.md +261 -0
- package/templates/skills/business-analyse/templates/00-context.md +105 -0
- package/templates/skills/business-analyse/templates/frd-brd.md +97 -0
- package/templates/skills/business-analyse/templates/frd-discovery.md +78 -0
- package/templates/skills/business-analyse/templates/frd-handoff.md +118 -0
- package/templates/skills/business-analyse/templates/frd-spec.md +168 -0
- package/templates/skills/business-analyse/templates-frd.md +217 -217
- package/templates/skills/business-analyse/templates-react.md +26 -26
- package/templates/skills/controller/SKILL.md +141 -92
- package/templates/skills/controller/postman-templates.md +15 -15
- package/templates/skills/controller/steps/step-00-init.md +191 -0
- package/templates/skills/controller/steps/step-01-analyze.md +146 -0
- package/templates/skills/controller/steps/step-02-plan.md +176 -0
- package/templates/skills/controller/steps/step-03-generate.md +219 -0
- package/templates/skills/controller/steps/step-04-perms.md +219 -0
- package/templates/skills/controller/steps/step-05-validate.md +107 -0
- package/templates/skills/controller/templates.md +77 -77
- package/templates/skills/documentation/SKILL.md +79 -79
- package/templates/skills/feature-full/SKILL.md +38 -38
- package/templates/skills/gitflow/SKILL.md +277 -0
- package/templates/{commands → skills}/gitflow/_shared.md +20 -20
- package/templates/skills/gitflow/phases/abort.md +173 -0
- package/templates/skills/gitflow/phases/cleanup.md +226 -0
- package/templates/skills/gitflow/phases/status.md +178 -0
- package/templates/skills/gitflow/steps/step-commit.md +255 -0
- package/templates/skills/gitflow/steps/step-finish.md +255 -0
- package/templates/skills/gitflow/steps/step-init.md +209 -0
- package/templates/skills/gitflow/steps/step-merge.md +225 -0
- package/templates/skills/gitflow/steps/step-plan.md +208 -0
- package/templates/skills/gitflow/steps/step-pr.md +235 -0
- package/templates/skills/gitflow/steps/step-start.md +234 -0
- package/templates/skills/gitflow/steps/step-sync.md +200 -0
- package/templates/skills/gitflow/templates/config.json +53 -0
- package/templates/skills/notification/SKILL.md +51 -51
- package/templates/skills/ralph-loop/SKILL.md +228 -0
- package/templates/skills/ralph-loop/steps/step-00-init.md +201 -0
- package/templates/skills/ralph-loop/steps/step-01-task.md +169 -0
- package/templates/skills/ralph-loop/steps/step-02-execute.md +173 -0
- package/templates/skills/ralph-loop/steps/step-03-commit.md +170 -0
- package/templates/skills/ralph-loop/steps/step-04-check.md +162 -0
- package/templates/skills/ralph-loop/steps/step-05-report.md +181 -0
- package/templates/skills/review-code/SKILL.md +219 -0
- package/templates/skills/review-code/references/clean-code-principles.md +140 -0
- package/templates/skills/review-code/references/code-quality-metrics.md +174 -0
- package/templates/skills/review-code/references/feedback-patterns.md +149 -0
- package/templates/skills/review-code/references/security-checklist.md +127 -0
- package/templates/skills/ui-components/SKILL.md +54 -54
- package/templates/skills/workflow/SKILL.md +46 -46
- package/templates/commands/ai-prompt.md +0 -315
- package/templates/commands/apex/1-analyze.md +0 -100
- package/templates/commands/apex/2-plan.md +0 -145
- package/templates/commands/apex/3-execute.md +0 -171
- package/templates/commands/apex/4-examine.md +0 -116
- package/templates/commands/apex/5-tasks.md +0 -209
- package/templates/commands/apex.md +0 -76
- package/templates/commands/application/create.md +0 -362
- package/templates/commands/application/templates-backend.md +0 -463
- package/templates/commands/application/templates-frontend.md +0 -517
- package/templates/commands/application/templates-i18n.md +0 -478
- package/templates/commands/application/templates-seed.md +0 -362
- package/templates/commands/application.md +0 -303
- package/templates/commands/business-analyse/0-orchestrate.md +0 -156
- package/templates/commands/business-analyse/1-init.md +0 -99
- package/templates/commands/business-analyse/2-discover.md +0 -143
- package/templates/commands/business-analyse/3-analyse.md +0 -106
- package/templates/commands/business-analyse/4-specify.md +0 -133
- package/templates/commands/business-analyse/5-validate.md +0 -132
- package/templates/commands/business-analyse/6-handoff.md +0 -157
- package/templates/commands/business-analyse/7-doc-html.md +0 -103
- package/templates/commands/business-analyse/_shared.md +0 -176
- package/templates/commands/business-analyse/bug.md +0 -118
- package/templates/commands/business-analyse/change-request.md +0 -144
- package/templates/commands/business-analyse/hotfix.md +0 -116
- package/templates/commands/business-analyse.md +0 -121
- package/templates/commands/controller/create.md +0 -216
- package/templates/commands/controller/postman-templates.md +0 -528
- package/templates/commands/controller/templates.md +0 -600
- package/templates/commands/controller.md +0 -337
- package/templates/commands/create/agent.md +0 -138
- package/templates/commands/create/command.md +0 -166
- package/templates/commands/create/hook.md +0 -234
- package/templates/commands/create/plugin.md +0 -329
- package/templates/commands/create/project.md +0 -508
- package/templates/commands/create/skill.md +0 -199
- package/templates/commands/create.md +0 -220
- package/templates/commands/documentation/module.md +0 -202
- package/templates/commands/documentation/templates.md +0 -432
- package/templates/commands/documentation.md +0 -190
- package/templates/commands/epct.md +0 -69
- package/templates/commands/explain.md +0 -186
- package/templates/commands/feature-full.md +0 -267
- package/templates/commands/gitflow/1-init.md +0 -188
- package/templates/commands/gitflow/10-start.md +0 -190
- package/templates/commands/gitflow/11-finish.md +0 -382
- package/templates/commands/gitflow/12-cleanup.md +0 -103
- package/templates/commands/gitflow/13-sync.md +0 -216
- package/templates/commands/gitflow/14-rebase.md +0 -251
- package/templates/commands/gitflow/2-status.md +0 -122
- package/templates/commands/gitflow/3-commit.md +0 -209
- package/templates/commands/gitflow/4-plan.md +0 -174
- package/templates/commands/gitflow/5-exec.md +0 -202
- package/templates/commands/gitflow/6-abort.md +0 -121
- package/templates/commands/gitflow/7-pull-request.md +0 -176
- package/templates/commands/gitflow/8-review.md +0 -113
- package/templates/commands/gitflow/9-merge.md +0 -157
- package/templates/commands/gitflow.md +0 -128
- package/templates/commands/implement.md +0 -663
- package/templates/commands/init.md +0 -567
- package/templates/commands/mcp-integration.md +0 -330
- package/templates/commands/notification.md +0 -129
- package/templates/commands/oneshot.md +0 -57
- package/templates/commands/quickstart.md +0 -154
- package/templates/commands/ralph-loop/cancel-ralph.md +0 -18
- package/templates/commands/ralph-loop/help.md +0 -126
- package/templates/commands/ralph-loop/ralph-loop.md +0 -120
- package/templates/commands/review.md +0 -106
- package/templates/commands/workflow.md +0 -193
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: step-04-perms
|
|
3
|
+
description: Synchronize permissions in Permissions.cs and PermissionConfiguration.cs
|
|
4
|
+
next_step: steps/step-05-validate.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 4: Synchronize Permissions
|
|
8
|
+
|
|
9
|
+
## YOUR TASK:
|
|
10
|
+
|
|
11
|
+
Add permissions to both Permissions.cs (constants) and PermissionConfiguration.cs (database seeds).
|
|
12
|
+
|
|
13
|
+
**CRITICAL: Both files MUST be in sync. Missing permissions = runtime 403 errors.**
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## EXECUTION SEQUENCE:
|
|
18
|
+
|
|
19
|
+
### 1. Update Permissions.cs
|
|
20
|
+
|
|
21
|
+
**Target file:**
|
|
22
|
+
```
|
|
23
|
+
src/SmartStack.Application/Common/Authorization/Permissions.cs
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Find the correct parent class based on {permission_path}:**
|
|
27
|
+
|
|
28
|
+
| Permission Path | Parent Class |
|
|
29
|
+
|-----------------|--------------|
|
|
30
|
+
| `platform.administration.*` | `Platform.Administration` |
|
|
31
|
+
| `platform.support.*` | `Platform.Support` |
|
|
32
|
+
| `business.*` | `Business` |
|
|
33
|
+
| `personal.myspace.*` | `Personal.MySpace` |
|
|
34
|
+
|
|
35
|
+
**Add nested class:**
|
|
36
|
+
|
|
37
|
+
```csharp
|
|
38
|
+
public static class {module}
|
|
39
|
+
{
|
|
40
|
+
public const string View = "{permission_path}.read";
|
|
41
|
+
public const string Create = "{permission_path}.create";
|
|
42
|
+
public const string Update = "{permission_path}.update";
|
|
43
|
+
public const string Delete = "{permission_path}.delete";
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Example for platform.support.tickets:**
|
|
48
|
+
|
|
49
|
+
```csharp
|
|
50
|
+
public static partial class Permissions
|
|
51
|
+
{
|
|
52
|
+
public static class Platform
|
|
53
|
+
{
|
|
54
|
+
public static class Support
|
|
55
|
+
{
|
|
56
|
+
// Existing classes...
|
|
57
|
+
|
|
58
|
+
public static class Tickets // NEW
|
|
59
|
+
{
|
|
60
|
+
public const string View = "platform.support.tickets.read";
|
|
61
|
+
public const string Create = "platform.support.tickets.create";
|
|
62
|
+
public const string Update = "platform.support.tickets.update";
|
|
63
|
+
public const string Delete = "platform.support.tickets.delete";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 2. Update PermissionConfiguration.cs
|
|
71
|
+
|
|
72
|
+
**Target file:**
|
|
73
|
+
```
|
|
74
|
+
src/SmartStack.Infrastructure/Persistence/Configurations/PermissionConfiguration.cs
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Find HasData section and add seeds:**
|
|
78
|
+
|
|
79
|
+
```csharp
|
|
80
|
+
builder.HasData(
|
|
81
|
+
// Existing permissions...
|
|
82
|
+
|
|
83
|
+
// {module} permissions
|
|
84
|
+
new Permission
|
|
85
|
+
{
|
|
86
|
+
Id = Guid.NewGuid(), // Generate new GUID
|
|
87
|
+
Code = "{permission_path}.read",
|
|
88
|
+
Name = "View {module}",
|
|
89
|
+
Description = "Allows viewing {module_lowercase} list and details",
|
|
90
|
+
Category = "{area}",
|
|
91
|
+
IsSystem = true,
|
|
92
|
+
CreatedAt = new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)
|
|
93
|
+
},
|
|
94
|
+
new Permission
|
|
95
|
+
{
|
|
96
|
+
Id = Guid.NewGuid(),
|
|
97
|
+
Code = "{permission_path}.create",
|
|
98
|
+
Name = "Create {module}",
|
|
99
|
+
Description = "Allows creating new {module_lowercase}",
|
|
100
|
+
Category = "{area}",
|
|
101
|
+
IsSystem = true,
|
|
102
|
+
CreatedAt = new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)
|
|
103
|
+
},
|
|
104
|
+
new Permission
|
|
105
|
+
{
|
|
106
|
+
Id = Guid.NewGuid(),
|
|
107
|
+
Code = "{permission_path}.update",
|
|
108
|
+
Name = "Update {module}",
|
|
109
|
+
Description = "Allows updating existing {module_lowercase}",
|
|
110
|
+
Category = "{area}",
|
|
111
|
+
IsSystem = true,
|
|
112
|
+
CreatedAt = new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)
|
|
113
|
+
},
|
|
114
|
+
new Permission
|
|
115
|
+
{
|
|
116
|
+
Id = Guid.NewGuid(),
|
|
117
|
+
Code = "{permission_path}.delete",
|
|
118
|
+
Name = "Delete {module}",
|
|
119
|
+
Description = "Allows deleting {module_lowercase}",
|
|
120
|
+
Category = "{area}",
|
|
121
|
+
IsSystem = true,
|
|
122
|
+
CreatedAt = new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)
|
|
123
|
+
}
|
|
124
|
+
);
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 3. Generate Migration (Required)
|
|
128
|
+
|
|
129
|
+
**After updating PermissionConfiguration:**
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
IMPORTANT: New HasData entries require a migration!
|
|
133
|
+
|
|
134
|
+
Suggest command:
|
|
135
|
+
/efcore:migration Add{module}Permissions
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**If auto_mode:**
|
|
139
|
+
- Inform user that migration is needed
|
|
140
|
+
- Do NOT auto-run migration (user decision)
|
|
141
|
+
|
|
142
|
+
### 4. Validation Check
|
|
143
|
+
|
|
144
|
+
**Verify sync between files:**
|
|
145
|
+
|
|
146
|
+
| Permission Code | In Permissions.cs | In PermissionConfiguration.cs |
|
|
147
|
+
|-----------------|-------------------|------------------------------|
|
|
148
|
+
| `{permission_path}.read` | ✅ | ✅ |
|
|
149
|
+
| `{permission_path}.create` | ✅ | ✅ |
|
|
150
|
+
| `{permission_path}.update` | ✅ | ✅ |
|
|
151
|
+
| `{permission_path}.delete` | ✅ | ✅ |
|
|
152
|
+
|
|
153
|
+
### 5. Generate Postman Tests (if postman_mode)
|
|
154
|
+
|
|
155
|
+
**If {postman_mode} = true:**
|
|
156
|
+
|
|
157
|
+
Load `postman-templates.md` and generate tests:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"name": "{module} API Tests",
|
|
162
|
+
"item": [
|
|
163
|
+
{
|
|
164
|
+
"name": "GET {module} - SuperAdmin (200)",
|
|
165
|
+
"request": {
|
|
166
|
+
"method": "GET",
|
|
167
|
+
"url": "{{baseUrl}}/api/{area}/{module}"
|
|
168
|
+
},
|
|
169
|
+
"event": [
|
|
170
|
+
{
|
|
171
|
+
"listen": "test",
|
|
172
|
+
"script": {
|
|
173
|
+
"exec": ["pm.test('Status 200', () => pm.response.to.have.status(200));"]
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "GET {module} - No Permission (403)",
|
|
180
|
+
"request": { "method": "GET", "url": "{{baseUrl}}/api/{area}/{module}" },
|
|
181
|
+
"event": [
|
|
182
|
+
{
|
|
183
|
+
"listen": "prerequest",
|
|
184
|
+
"script": { "exec": ["// Use NoPermUser token"] }
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"listen": "test",
|
|
188
|
+
"script": { "exec": ["pm.test('Status 403', () => pm.response.to.have.status(403));"] }
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## OUTPUT FORMAT:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
Permissions Synchronized:
|
|
202
|
+
|
|
203
|
+
| File | Changes |
|
|
204
|
+
|------|---------|
|
|
205
|
+
| Permissions.cs | Added {module} class with 4 constants |
|
|
206
|
+
| PermissionConfiguration.cs | Added 4 permission seeds |
|
|
207
|
+
| Postman Collection | Added {test_count} tests |
|
|
208
|
+
|
|
209
|
+
⚠️ MIGRATION REQUIRED:
|
|
210
|
+
Run: /efcore:migration Add{module}Permissions
|
|
211
|
+
|
|
212
|
+
-> Validating build...
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## NEXT STEP:
|
|
218
|
+
|
|
219
|
+
After permissions synced, proceed to `./step-05-validate.md`
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: step-05-validate
|
|
3
|
+
description: Validate build and SmartStack conventions
|
|
4
|
+
next_step: null
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 5: Validate
|
|
8
|
+
|
|
9
|
+
## YOUR TASK:
|
|
10
|
+
|
|
11
|
+
Verify the generated code compiles and follows SmartStack conventions.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## EXECUTION SEQUENCE:
|
|
16
|
+
|
|
17
|
+
### 1. Build Check
|
|
18
|
+
|
|
19
|
+
**Run build to verify compilation:**
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dotnet build src/SmartStack.Api/SmartStack.Api.csproj --no-restore
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**If build fails:**
|
|
26
|
+
- Parse error messages
|
|
27
|
+
- Fix issues in generated files
|
|
28
|
+
- Re-run build until success
|
|
29
|
+
|
|
30
|
+
### 2. Convention Validation
|
|
31
|
+
|
|
32
|
+
**Use SmartStack MCP to validate:**
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
mcp__smartstack__validate_conventions:
|
|
36
|
+
checks: ["controllers", "services", "namespaces"]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Manual checks:**
|
|
40
|
+
|
|
41
|
+
| Convention | Check | Status |
|
|
42
|
+
|------------|-------|--------|
|
|
43
|
+
| Route attribute | `[Route("api/{area}/[controller]")]` | ✅/❌ |
|
|
44
|
+
| Authorize attribute | `[Authorize]` present | ✅/❌ |
|
|
45
|
+
| RequirePermission | Uses `Permissions.*` constants | ✅/❌ |
|
|
46
|
+
| ProducesResponseType | All endpoints documented | ✅/❌ |
|
|
47
|
+
| Logging | All CRUD operations logged | ✅/❌ |
|
|
48
|
+
| System account protection | Guard present (if applicable) | ✅/❌ |
|
|
49
|
+
|
|
50
|
+
### 3. Security Audit
|
|
51
|
+
|
|
52
|
+
**Verify security requirements:**
|
|
53
|
+
|
|
54
|
+
| Security Check | Required | Present |
|
|
55
|
+
|----------------|----------|---------|
|
|
56
|
+
| No string permission literals | Yes | ✅/❌ |
|
|
57
|
+
| No raw SQL | Yes | ✅/❌ |
|
|
58
|
+
| Input validation | Yes | ✅/❌ |
|
|
59
|
+
| Tenant isolation (if TenantEntity) | Yes | ✅/❌ |
|
|
60
|
+
| Audit logging | Yes | ✅/❌ |
|
|
61
|
+
|
|
62
|
+
### 4. Final Summary
|
|
63
|
+
|
|
64
|
+
**Display completion report:**
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
╔═══════════════════════════════════════════════════════════════════╗
|
|
68
|
+
║ CONTROLLER GENERATED ║
|
|
69
|
+
╠═══════════════════════════════════════════════════════════════════╣
|
|
70
|
+
║ Controller: {area}/{module}Controller ║
|
|
71
|
+
║ Entity: {entity} ║
|
|
72
|
+
║ Type: {controller_type} ║
|
|
73
|
+
╠═══════════════════════════════════════════════════════════════════╣
|
|
74
|
+
║ FILES CREATED: ║
|
|
75
|
+
║ ✅ src/.../Controllers/{area}/{module}Controller.cs ║
|
|
76
|
+
║ ✅ src/.../Authorization/Permissions.cs (updated) ║
|
|
77
|
+
║ ✅ src/.../Configurations/PermissionConfiguration.cs (updated) ║
|
|
78
|
+
║ {dto_mode ? "✅ src/.../DTOs/{module}/*.cs" : ""} ║
|
|
79
|
+
║ {postman_mode ? "✅ tests/SmartStack.Security.postman.json" : ""} ║
|
|
80
|
+
╠═══════════════════════════════════════════════════════════════════╣
|
|
81
|
+
║ PERMISSIONS ADDED: ║
|
|
82
|
+
║ 🔐 {permission_path}.read ║
|
|
83
|
+
║ 🔐 {permission_path}.create ║
|
|
84
|
+
║ 🔐 {permission_path}.update ║
|
|
85
|
+
║ 🔐 {permission_path}.delete ║
|
|
86
|
+
╠═══════════════════════════════════════════════════════════════════╣
|
|
87
|
+
║ NEXT STEPS: ║
|
|
88
|
+
║ 1. Create migration: /efcore:migration Add{module}Permissions ║
|
|
89
|
+
║ 2. Apply migration: /efcore:db-deploy ║
|
|
90
|
+
║ 3. Test endpoints in Swagger: /api/{area}/{module} ║
|
|
91
|
+
║ 4. Run Postman tests (if generated) ║
|
|
92
|
+
╚═══════════════════════════════════════════════════════════════════╝
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## SUCCESS CRITERIA:
|
|
98
|
+
|
|
99
|
+
- Build passes without errors
|
|
100
|
+
- All conventions validated
|
|
101
|
+
- Security requirements met
|
|
102
|
+
- Clear summary displayed
|
|
103
|
+
- Next steps documented
|
|
104
|
+
|
|
105
|
+
## COMPLETION:
|
|
106
|
+
|
|
107
|
+
Controller generation complete. No more steps.
|