@atlashub/smartstack-cli 1.4.0 → 1.5.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.
Files changed (66) hide show
  1. package/.documentation/agents.html +8 -4
  2. package/.documentation/apex.html +8 -4
  3. package/.documentation/business-analyse.html +833 -406
  4. package/.documentation/commands.html +8 -4
  5. package/.documentation/css/styles.css +153 -15
  6. package/.documentation/efcore.html +8 -4
  7. package/.documentation/gitflow.html +795 -230
  8. package/.documentation/hooks.html +8 -4
  9. package/.documentation/index.html +13 -9
  10. package/.documentation/installation.html +23 -19
  11. package/.documentation/ralph-loop.html +530 -0
  12. package/.documentation/test-web.html +8 -4
  13. package/README.md +52 -10
  14. package/dist/index.js +813 -283
  15. package/dist/index.js.map +1 -1
  16. package/package.json +1 -1
  17. package/templates/agents/efcore/conflicts.md +44 -17
  18. package/templates/agents/efcore/db-status.md +27 -6
  19. package/templates/agents/efcore/scan.md +43 -13
  20. package/templates/commands/ai-prompt.md +315 -315
  21. package/templates/commands/application/create.md +362 -362
  22. package/templates/commands/controller/create.md +216 -216
  23. package/templates/commands/controller.md +59 -0
  24. package/templates/commands/create/agent.md +138 -0
  25. package/templates/commands/create/command.md +166 -0
  26. package/templates/commands/create/hook.md +234 -0
  27. package/templates/commands/create/plugin.md +329 -0
  28. package/templates/commands/create/project.md +507 -0
  29. package/templates/commands/create/skill.md +199 -0
  30. package/templates/commands/create.md +220 -0
  31. package/templates/commands/documentation/module.md +202 -202
  32. package/templates/commands/efcore/_env-check.md +153 -153
  33. package/templates/commands/efcore/conflicts.md +109 -192
  34. package/templates/commands/efcore/db-status.md +101 -89
  35. package/templates/commands/efcore/migration.md +23 -11
  36. package/templates/commands/efcore/scan.md +115 -119
  37. package/templates/commands/efcore.md +54 -6
  38. package/templates/commands/feature-full.md +267 -267
  39. package/templates/commands/gitflow/11-finish.md +145 -11
  40. package/templates/commands/gitflow/13-sync.md +216 -216
  41. package/templates/commands/gitflow/14-rebase.md +251 -251
  42. package/templates/commands/gitflow/2-status.md +120 -10
  43. package/templates/commands/gitflow/3-commit.md +150 -0
  44. package/templates/commands/gitflow/7-pull-request.md +134 -5
  45. package/templates/commands/gitflow/9-merge.md +142 -1
  46. package/templates/commands/implement.md +663 -663
  47. package/templates/commands/init.md +562 -0
  48. package/templates/commands/mcp-integration.md +330 -0
  49. package/templates/commands/notification.md +129 -129
  50. package/templates/commands/validate.md +233 -0
  51. package/templates/commands/workflow.md +193 -193
  52. package/templates/skills/ai-prompt/SKILL.md +778 -778
  53. package/templates/skills/application/SKILL.md +563 -563
  54. package/templates/skills/application/templates-backend.md +450 -450
  55. package/templates/skills/application/templates-frontend.md +531 -531
  56. package/templates/skills/application/templates-i18n.md +520 -520
  57. package/templates/skills/application/templates-seed.md +647 -647
  58. package/templates/skills/controller/SKILL.md +240 -240
  59. package/templates/skills/controller/postman-templates.md +614 -614
  60. package/templates/skills/controller/templates.md +1468 -1468
  61. package/templates/skills/documentation/SKILL.md +133 -133
  62. package/templates/skills/documentation/templates.md +476 -476
  63. package/templates/skills/feature-full/SKILL.md +838 -838
  64. package/templates/skills/notification/SKILL.md +555 -555
  65. package/templates/skills/ui-components/SKILL.md +870 -870
  66. package/templates/skills/workflow/SKILL.md +582 -582
@@ -1,216 +1,216 @@
1
- # /controller:create - Génération Controller API SmartStack
2
-
3
- > **Synergie Skill/Commande:**
4
- > - **Skill** (`.claude/skills/controller/`) → Invocation automatique par Claude
5
- > - **Commande** (`/controller:create`) → Invocation manuelle par l'utilisateur
6
- > - Templates partagés dans `.claude/skills/controller/templates.md`
7
-
8
- ---
9
-
10
- ## ARGUMENTS
11
-
12
- ```
13
- /controller:create <area> <module> [entity]
14
- ```
15
-
16
- | Variable | Extraction | Valeurs |
17
- |----------|------------|---------|
18
- | `$AREA` | Premier mot | `Admin`, `Support`, `Business`, `User`, `Auth` |
19
- | `$MODULE` | Deuxième mot | Nom du module (PascalCase) |
20
- | `$ENTITY` | Troisième mot (optionnel) | Nom de l'entité Domain (défaut = singulier de $MODULE) |
21
-
22
- **Exemples:**
23
- ```
24
- /controller:create Admin Users
25
- /controller:create Support Tickets Ticket
26
- /controller:create Support Sla SlaDefinition
27
- ```
28
-
29
- ---
30
-
31
- ## RÈGLES ABSOLUES
32
-
33
- 1. **TOUJOURS** utiliser `[RequirePermission(Permissions.*)]` - jamais de strings
34
- 2. **TOUJOURS** ajouter `[ProducesResponseType]` pour chaque status possible
35
- 3. **TOUJOURS** logger les opérations (Info pour CRUD, Warning pour Delete/Sensitive)
36
- 4. **TOUJOURS** protéger les comptes système (UserType.System/LocalAdmin)
37
- 5. **JAMAIS** de SQL direct - utiliser EF Core
38
- 6. **JAMAIS** d'endpoint sans permission (sauf [AllowAnonymous] pour auth)
39
-
40
- ---
41
-
42
- ## WORKFLOW
43
-
44
- ### ÉTAPE 1: PARSING DES ARGUMENTS
45
-
46
- ```
47
- EXTRAIRE $AREA = premier mot des arguments (PascalCase)
48
- EXTRAIRE $MODULE = deuxième mot des arguments (PascalCase)
49
- EXTRAIRE $ENTITY = troisième mot OU singulier de $MODULE
50
-
51
- SI $AREA absent → AskUserQuestion (options: Admin, Support, Business, User, Auth)
52
- SI $MODULE absent → AskUserQuestion (texte libre)
53
- ```
54
-
55
- ### ÉTAPE 2: ANALYSE EXISTANTE
56
-
57
- | Action | Commande |
58
- |--------|----------|
59
- | Entity Domain | `Glob "Domain/**/{Entity}.cs"` |
60
- | Permissions existantes | `Read Permissions.cs` |
61
- | DbContext DbSet | `Grep "{Entity}s" ApplicationDbContext.cs` |
62
- | Controller existant | `Glob "Controllers/{Area}/{Module}Controller.cs"` |
63
-
64
- ### ÉTAPE 3: CONFIRMATION UTILISATEUR
65
-
66
- ```typescript
67
- AskUserQuestion({
68
- questions: [
69
- {
70
- header: "Type",
71
- question: "Quel type de controller ?",
72
- options: [
73
- { label: "CRUD Complet (Recommended)", description: "GET list, GET by ID, POST, PUT, PATCH, DELETE" },
74
- { label: "Read-Only", description: "GET list, GET by ID uniquement" },
75
- { label: "Custom", description: "Actions spécifiques à définir" }
76
- ]
77
- },
78
- {
79
- header: "Postman",
80
- question: "Générer les tests Postman ?",
81
- options: [
82
- { label: "Oui (Recommended)", description: "Ajoute tests dans SmartStack.Security.postman_collection.json" },
83
- { label: "Non", description: "Controller uniquement" }
84
- ]
85
- }
86
- ]
87
- })
88
- ```
89
-
90
- ### ÉTAPE 4: VALIDATION SÉCURITÉ
91
-
92
- **Vérifications obligatoires avant génération:**
93
-
94
- 1. ✅ Permission path existe ou sera créée
95
- 2. ✅ Format permission: `context.application.module.action`
96
- 3. ✅ DbSet existe dans ApplicationDbContext
97
- 4. ✅ Entity a les méthodes Create/Update nécessaires
98
-
99
- ### ÉTAPE 5: GÉNÉRATION
100
-
101
- | Fichier | Chemin | Action |
102
- |---------|--------|--------|
103
- | Controller | `src/SmartStack.Api/Controllers/{Area}/{Module}Controller.cs` | CREATE |
104
- | Permissions | `src/SmartStack.Application/Common/Authorization/Permissions.cs` | UPDATE |
105
- | Tests Postman | `tests/SmartStack.Security.postman_collection.json` | UPDATE (si choisi) |
106
-
107
- **Utiliser templates de** → `.claude/skills/controller/templates.md`
108
-
109
- ### ÉTAPE 6: LOGS CRITIQUES - VÉRIFICATION
110
-
111
- Après génération, **VÉRIFIER** que le controller contient :
112
-
113
- | Événement | Niveau Requis | Présent ? |
114
- |-----------|---------------|-----------|
115
- | Login échoué (si auth) | `LogCritical` | ☐ |
116
- | Compte verrouillé (si auth) | `LogCritical` | ☐ |
117
- | Password change | `LogWarning` | ☐ |
118
- | Création | `LogInformation` | ☐ |
119
- | Modification | `LogInformation` | ☐ |
120
- | Suppression | `LogWarning` | ☐ |
121
- | Désactivation | `LogWarning` | ☐ |
122
-
123
- ### ÉTAPE 7: RÉSUMÉ FINAL
124
-
125
- Afficher:
126
- - ✅ Fichiers créés (chemins cliquables)
127
- - 🔐 Permissions ajoutées
128
- - 🧪 Tests Postman générés (si applicable)
129
- - 📝 Prochaines étapes:
130
- - Vérifier les DTOs
131
- - Ajouter validation métier si nécessaire
132
- - Tester avec Swagger/Postman
133
-
134
- ---
135
-
136
- ## SOURCES DE DONNÉES
137
-
138
- | Donnée | Source |
139
- |--------|--------|
140
- | Entity Domain | `src/SmartStack.Domain/**/{Entity}.cs` |
141
- | DbContext | `src/SmartStack.Application/Common/Interfaces/IApplicationDbContext.cs` |
142
- | Permissions | `src/SmartStack.Application/Common/Authorization/Permissions.cs` |
143
- | Controllers existants | `src/SmartStack.Api/Controllers/**/*.cs` |
144
- | Tests Postman | `tests/SmartStack.Security.postman_collection.json` |
145
-
146
- ---
147
-
148
- ## MAPPING AREA → ROUTE
149
-
150
- | Area | Route Prefix | Permission Context |
151
- |------|--------------|-------------------|
152
- | `Admin` | `api/admin/` | `platform.administration.` |
153
- | `Support` | `api/support/` | `platform.support.` |
154
- | `Business` | `api/business/` | `business.` |
155
- | `User` | `api/user/` | `personal.myspace.` |
156
- | `Auth` | `api/auth/` | (AllowAnonymous pour login) |
157
-
158
- ---
159
-
160
- ## TEMPLATES
161
-
162
- → **Voir `.claude/skills/controller/templates.md`**
163
-
164
- Templates disponibles:
165
- - CRUD Controller (standard)
166
- - Auth Controller (login/logout/change-password)
167
- - Controller avec Relations (nested resources)
168
- - Patterns réutilisables (pagination, error responses)
169
-
170
- → **Voir `.claude/skills/controller/postman-templates.md`**
171
-
172
- Templates tests:
173
- - GET list (200, 403, 401)
174
- - POST create (201, 403)
175
- - DELETE (403)
176
- - Auth (login success/fail, invalid token)
177
-
178
- ---
179
-
180
- ## CONTRAINTES TECHNIQUES
181
-
182
- ### Injection de Dépendances (Obligatoire)
183
-
184
- ```csharp
185
- public {Module}Controller(
186
- IApplicationDbContext context, // TOUJOURS
187
- ICurrentUserService currentUser, // TOUJOURS
188
- ILogger<{Module}Controller> logger // TOUJOURS
189
- // + services spécifiques au module
190
- )
191
- ```
192
-
193
- ### ProducesResponseType (Obligatoire)
194
-
195
- ```csharp
196
- [ProducesResponseType(typeof(PagedResult<T>), StatusCodes.Status200OK)]
197
- [ProducesResponseType(StatusCodes.Status401Unauthorized)] // Si [Authorize]
198
- [ProducesResponseType(StatusCodes.Status403Forbidden)] // Si [RequirePermission]
199
- [ProducesResponseType(StatusCodes.Status404NotFound)] // Si GET/PUT/DELETE by ID
200
- ```
201
-
202
- ### Logging Pattern (Obligatoire)
203
-
204
- ```csharp
205
- // Information - opérations standard
206
- _logger.LogInformation("User {User} created {Entity} {Id}",
207
- _currentUser.Email, entity.Id);
208
-
209
- // Warning - opérations sensibles
210
- _logger.LogWarning("User {User} deleted {Entity} {Id} ({Name})",
211
- _currentUser.Email, id, entity.Name);
212
-
213
- // Critical - sécurité (automatique via middleware pour 401/403)
214
- _logger.LogCritical("SECURITY: Login attempt on locked account - {Email} from {IP}",
215
- email, ipAddress);
216
- ```
1
+ # /controller:create - Génération Controller API SmartStack
2
+
3
+ > **Synergie Skill/Commande:**
4
+ > - **Skill** (`.claude/skills/controller/`) → Invocation automatique par Claude
5
+ > - **Commande** (`/controller:create`) → Invocation manuelle par l'utilisateur
6
+ > - Templates partagés dans `.claude/skills/controller/templates.md`
7
+
8
+ ---
9
+
10
+ ## ARGUMENTS
11
+
12
+ ```
13
+ /controller:create <area> <module> [entity]
14
+ ```
15
+
16
+ | Variable | Extraction | Valeurs |
17
+ |----------|------------|---------|
18
+ | `$AREA` | Premier mot | `Admin`, `Support`, `Business`, `User`, `Auth` |
19
+ | `$MODULE` | Deuxième mot | Nom du module (PascalCase) |
20
+ | `$ENTITY` | Troisième mot (optionnel) | Nom de l'entité Domain (défaut = singulier de $MODULE) |
21
+
22
+ **Exemples:**
23
+ ```
24
+ /controller:create Admin Users
25
+ /controller:create Support Tickets Ticket
26
+ /controller:create Support Sla SlaDefinition
27
+ ```
28
+
29
+ ---
30
+
31
+ ## RÈGLES ABSOLUES
32
+
33
+ 1. **TOUJOURS** utiliser `[RequirePermission(Permissions.*)]` - jamais de strings
34
+ 2. **TOUJOURS** ajouter `[ProducesResponseType]` pour chaque status possible
35
+ 3. **TOUJOURS** logger les opérations (Info pour CRUD, Warning pour Delete/Sensitive)
36
+ 4. **TOUJOURS** protéger les comptes système (UserType.System/LocalAdmin)
37
+ 5. **JAMAIS** de SQL direct - utiliser EF Core
38
+ 6. **JAMAIS** d'endpoint sans permission (sauf [AllowAnonymous] pour auth)
39
+
40
+ ---
41
+
42
+ ## WORKFLOW
43
+
44
+ ### ÉTAPE 1: PARSING DES ARGUMENTS
45
+
46
+ ```
47
+ EXTRAIRE $AREA = premier mot des arguments (PascalCase)
48
+ EXTRAIRE $MODULE = deuxième mot des arguments (PascalCase)
49
+ EXTRAIRE $ENTITY = troisième mot OU singulier de $MODULE
50
+
51
+ SI $AREA absent → AskUserQuestion (options: Admin, Support, Business, User, Auth)
52
+ SI $MODULE absent → AskUserQuestion (texte libre)
53
+ ```
54
+
55
+ ### ÉTAPE 2: ANALYSE EXISTANTE
56
+
57
+ | Action | Commande |
58
+ |--------|----------|
59
+ | Entity Domain | `Glob "Domain/**/{Entity}.cs"` |
60
+ | Permissions existantes | `Read Permissions.cs` |
61
+ | DbContext DbSet | `Grep "{Entity}s" ApplicationDbContext.cs` |
62
+ | Controller existant | `Glob "Controllers/{Area}/{Module}Controller.cs"` |
63
+
64
+ ### ÉTAPE 3: CONFIRMATION UTILISATEUR
65
+
66
+ ```typescript
67
+ AskUserQuestion({
68
+ questions: [
69
+ {
70
+ header: "Type",
71
+ question: "Quel type de controller ?",
72
+ options: [
73
+ { label: "CRUD Complet (Recommended)", description: "GET list, GET by ID, POST, PUT, PATCH, DELETE" },
74
+ { label: "Read-Only", description: "GET list, GET by ID uniquement" },
75
+ { label: "Custom", description: "Actions spécifiques à définir" }
76
+ ]
77
+ },
78
+ {
79
+ header: "Postman",
80
+ question: "Générer les tests Postman ?",
81
+ options: [
82
+ { label: "Oui (Recommended)", description: "Ajoute tests dans SmartStack.Security.postman_collection.json" },
83
+ { label: "Non", description: "Controller uniquement" }
84
+ ]
85
+ }
86
+ ]
87
+ })
88
+ ```
89
+
90
+ ### ÉTAPE 4: VALIDATION SÉCURITÉ
91
+
92
+ **Vérifications obligatoires avant génération:**
93
+
94
+ 1. ✅ Permission path existe ou sera créée
95
+ 2. ✅ Format permission: `context.application.module.action`
96
+ 3. ✅ DbSet existe dans ApplicationDbContext
97
+ 4. ✅ Entity a les méthodes Create/Update nécessaires
98
+
99
+ ### ÉTAPE 5: GÉNÉRATION
100
+
101
+ | Fichier | Chemin | Action |
102
+ |---------|--------|--------|
103
+ | Controller | `src/SmartStack.Api/Controllers/{Area}/{Module}Controller.cs` | CREATE |
104
+ | Permissions | `src/SmartStack.Application/Common/Authorization/Permissions.cs` | UPDATE |
105
+ | Tests Postman | `tests/SmartStack.Security.postman_collection.json` | UPDATE (si choisi) |
106
+
107
+ **Utiliser templates de** → `.claude/skills/controller/templates.md`
108
+
109
+ ### ÉTAPE 6: LOGS CRITIQUES - VÉRIFICATION
110
+
111
+ Après génération, **VÉRIFIER** que le controller contient :
112
+
113
+ | Événement | Niveau Requis | Présent ? |
114
+ |-----------|---------------|-----------|
115
+ | Login échoué (si auth) | `LogCritical` | ☐ |
116
+ | Compte verrouillé (si auth) | `LogCritical` | ☐ |
117
+ | Password change | `LogWarning` | ☐ |
118
+ | Création | `LogInformation` | ☐ |
119
+ | Modification | `LogInformation` | ☐ |
120
+ | Suppression | `LogWarning` | ☐ |
121
+ | Désactivation | `LogWarning` | ☐ |
122
+
123
+ ### ÉTAPE 7: RÉSUMÉ FINAL
124
+
125
+ Afficher:
126
+ - ✅ Fichiers créés (chemins cliquables)
127
+ - 🔐 Permissions ajoutées
128
+ - 🧪 Tests Postman générés (si applicable)
129
+ - 📝 Prochaines étapes:
130
+ - Vérifier les DTOs
131
+ - Ajouter validation métier si nécessaire
132
+ - Tester avec Swagger/Postman
133
+
134
+ ---
135
+
136
+ ## SOURCES DE DONNÉES
137
+
138
+ | Donnée | Source |
139
+ |--------|--------|
140
+ | Entity Domain | `src/SmartStack.Domain/**/{Entity}.cs` |
141
+ | DbContext | `src/SmartStack.Application/Common/Interfaces/IApplicationDbContext.cs` |
142
+ | Permissions | `src/SmartStack.Application/Common/Authorization/Permissions.cs` |
143
+ | Controllers existants | `src/SmartStack.Api/Controllers/**/*.cs` |
144
+ | Tests Postman | `tests/SmartStack.Security.postman_collection.json` |
145
+
146
+ ---
147
+
148
+ ## MAPPING AREA → ROUTE
149
+
150
+ | Area | Route Prefix | Permission Context |
151
+ |------|--------------|-------------------|
152
+ | `Admin` | `api/admin/` | `platform.administration.` |
153
+ | `Support` | `api/support/` | `platform.support.` |
154
+ | `Business` | `api/business/` | `business.` |
155
+ | `User` | `api/user/` | `personal.myspace.` |
156
+ | `Auth` | `api/auth/` | (AllowAnonymous pour login) |
157
+
158
+ ---
159
+
160
+ ## TEMPLATES
161
+
162
+ → **Voir `.claude/skills/controller/templates.md`**
163
+
164
+ Templates disponibles:
165
+ - CRUD Controller (standard)
166
+ - Auth Controller (login/logout/change-password)
167
+ - Controller avec Relations (nested resources)
168
+ - Patterns réutilisables (pagination, error responses)
169
+
170
+ → **Voir `.claude/skills/controller/postman-templates.md`**
171
+
172
+ Templates tests:
173
+ - GET list (200, 403, 401)
174
+ - POST create (201, 403)
175
+ - DELETE (403)
176
+ - Auth (login success/fail, invalid token)
177
+
178
+ ---
179
+
180
+ ## CONTRAINTES TECHNIQUES
181
+
182
+ ### Injection de Dépendances (Obligatoire)
183
+
184
+ ```csharp
185
+ public {Module}Controller(
186
+ IApplicationDbContext context, // TOUJOURS
187
+ ICurrentUserService currentUser, // TOUJOURS
188
+ ILogger<{Module}Controller> logger // TOUJOURS
189
+ // + services spécifiques au module
190
+ )
191
+ ```
192
+
193
+ ### ProducesResponseType (Obligatoire)
194
+
195
+ ```csharp
196
+ [ProducesResponseType(typeof(PagedResult<T>), StatusCodes.Status200OK)]
197
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)] // Si [Authorize]
198
+ [ProducesResponseType(StatusCodes.Status403Forbidden)] // Si [RequirePermission]
199
+ [ProducesResponseType(StatusCodes.Status404NotFound)] // Si GET/PUT/DELETE by ID
200
+ ```
201
+
202
+ ### Logging Pattern (Obligatoire)
203
+
204
+ ```csharp
205
+ // Information - opérations standard
206
+ _logger.LogInformation("User {User} created {Entity} {Id}",
207
+ _currentUser.Email, entity.Id);
208
+
209
+ // Warning - opérations sensibles
210
+ _logger.LogWarning("User {User} deleted {Entity} {Id} ({Name})",
211
+ _currentUser.Email, id, entity.Name);
212
+
213
+ // Critical - sécurité (automatique via middleware pour 401/403)
214
+ _logger.LogCritical("SECURITY: Login attempt on locked account - {Email} from {IP}",
215
+ email, ipAddress);
216
+ ```
@@ -5,6 +5,65 @@
5
5
  > - **Commande** (`/controller:create`) → Invocation manuelle par l'utilisateur
6
6
  > - Templates partagés dans `.claude/skills/controller/templates.md`
7
7
 
8
+ > **MCP INTEGRATION:** This command can use `mcp__smartstack__scaffold_extension` for code generation.
9
+
10
+ ---
11
+
12
+ ## MCP SCAFFOLDING (Recommended)
13
+
14
+ > **NEW:** Use SmartStack MCP for consistent code generation across all projects.
15
+
16
+ ### When to Use MCP
17
+
18
+ | Scenario | Use MCP | Use Templates |
19
+ |----------|---------|---------------|
20
+ | Standard CRUD controller | Yes | - |
21
+ | Controller with custom logic | - | Yes |
22
+ | Need validation before | Yes | - |
23
+ | Offline mode | - | Yes |
24
+
25
+ ### MCP Invocation
26
+
27
+ **Claude instruction:** For standard controller generation, invoke MCP first:
28
+
29
+ ```json
30
+ {
31
+ "tool": "mcp__smartstack__scaffold_extension",
32
+ "parameters": {
33
+ "type": "controller",
34
+ "name": "{MODULE}",
35
+ "options": {
36
+ "namespace": "SmartStack.Api.Controllers.{AREA}",
37
+ "methods": ["GetAll", "GetById", "Create", "Update", "Delete"]
38
+ }
39
+ }
40
+ }
41
+ ```
42
+
43
+ The MCP returns a `ScaffoldResult`:
44
+
45
+ ```typescript
46
+ interface ScaffoldResult {
47
+ success: boolean;
48
+ files: GeneratedFile[];
49
+ instructions: string[];
50
+ }
51
+
52
+ interface GeneratedFile {
53
+ path: string;
54
+ content: string;
55
+ type: 'created' | 'modified';
56
+ }
57
+ ```
58
+
59
+ ### Post-MCP Steps
60
+
61
+ After MCP generates the controller:
62
+ 1. Review generated code
63
+ 2. Add to `Permissions.cs` (STEP 6 below)
64
+ 3. Add to `PermissionConfiguration.cs`
65
+ 4. Create migration if needed
66
+
8
67
  ---
9
68
 
10
69
  ## ARGUMENTS
@@ -0,0 +1,138 @@
1
+ ---
2
+ description: Create a SmartStack agent extension project
3
+ argument-hint: <name> [description]
4
+ ---
5
+
6
+ # Create Agent Extension
7
+
8
+ Scaffold a complete SmartStack **agent** extension project.
9
+
10
+ ## What is an Agent?
11
+
12
+ An agent is a specialized execution unit:
13
+ - Launched by commands for parallel execution
14
+ - Focused on specific tasks (search, analysis, etc.)
15
+ - Defined in markdown with YAML frontmatter
16
+ - Optimized with model selection (haiku/sonnet/opus)
17
+
18
+ ## Arguments
19
+
20
+ Parse from `$ARGUMENTS`:
21
+ - **name** (required): Agent name in kebab-case
22
+ - **description** (optional): What the agent does
23
+
24
+ ## Project Structure
25
+
26
+ ```
27
+ smartstack-{name}/
28
+ ├── package.json
29
+ ├── tsconfig.json
30
+ ├── tsup.config.ts
31
+ ├── README.md
32
+ ├── .gitignore
33
+ ├── src/
34
+ │ └── index.ts
35
+ └── templates/
36
+ └── agents/
37
+ └── {name}.md # Agent template
38
+ ```
39
+
40
+ ## Generated Agent Template
41
+
42
+ Create `templates/agents/{name}.md`:
43
+
44
+ ```markdown
45
+ ---
46
+ name: {name}
47
+ description: {description}
48
+ color: yellow
49
+ model: haiku
50
+ ---
51
+
52
+ # {PascalCaseName} Agent
53
+
54
+ {description}
55
+
56
+ ## Purpose
57
+
58
+ This agent specializes in:
59
+ - [Primary capability 1]
60
+ - [Primary capability 2]
61
+ - [Primary capability 3]
62
+
63
+ ## Search Strategy
64
+
65
+ ### 1. Initial Discovery
66
+ - Use `Glob` to find files matching patterns
67
+ - Focus on: `**/*.{relevant-extensions}`
68
+
69
+ ### 2. Deep Analysis
70
+ - Use `Grep` for specific code patterns
71
+ - Look for: `pattern1`, `pattern2`
72
+
73
+ ### 3. Context Building
74
+ - Use `Read` to examine key files
75
+ - Extract: imports, exports, dependencies
76
+
77
+ ### 4. Synthesis
78
+ - Compile findings
79
+ - Identify patterns
80
+ - Generate recommendations
81
+
82
+ ## Output Format
83
+
84
+ **CRITICAL**: Output findings directly in response. NEVER create files.
85
+
86
+ ### Findings Report
87
+
88
+ #### Relevant Files
89
+ | File | Purpose | Key Patterns |
90
+ |------|---------|--------------|
91
+ | path/to/file | description | patterns found |
92
+
93
+ #### Analysis
94
+ [Detailed analysis of findings]
95
+
96
+ #### Recommendations
97
+ 1. [First recommendation]
98
+ 2. [Second recommendation]
99
+ 3. [Third recommendation]
100
+
101
+ ## Tool Usage
102
+
103
+ Preferred tools for this agent:
104
+ - `Glob` - File discovery
105
+ - `Grep` - Pattern search
106
+ - `Read` - File content
107
+
108
+ ## Anti-Patterns
109
+
110
+ - **NEVER** create markdown files
111
+ - **NEVER** guess without evidence
112
+ - **NEVER** skip verification
113
+ - **ALWAYS** cite specific file paths
114
+
115
+ ## Priority
116
+
117
+ Accuracy > Completeness > Speed
118
+ ```
119
+
120
+ ## Model Selection Guide
121
+
122
+ | Use Case | Model | Reason |
123
+ |----------|-------|--------|
124
+ | Simple search | haiku | Fast, cheap |
125
+ | Analysis | sonnet | Good balance |
126
+ | Complex reasoning | opus | Best quality |
127
+
128
+ ## Workflow
129
+
130
+ 1. Parse name and description from `$ARGUMENTS`
131
+ 2. Validate name is kebab-case
132
+ 3. Create project directory
133
+ 4. Generate all files using Write tool
134
+ 5. Display success message
135
+
136
+ ---
137
+
138
+ User: $ARGUMENTS