@atlashub/smartstack-cli 1.5.1 → 1.5.2
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/css/styles.css +2168 -2168
- package/.documentation/js/app.js +794 -794
- package/config/default-config.json +86 -86
- package/config/settings.json +53 -53
- package/config/settings.local.example.json +16 -16
- package/dist/index.js +0 -0
- package/dist/index.js.map +1 -1
- package/package.json +88 -88
- package/templates/agents/action.md +36 -36
- package/templates/agents/efcore/conflicts.md +84 -84
- package/templates/agents/efcore/db-deploy.md +51 -51
- package/templates/agents/efcore/db-reset.md +59 -59
- package/templates/agents/efcore/db-seed.md +56 -56
- package/templates/agents/efcore/db-status.md +64 -64
- package/templates/agents/efcore/migration.md +85 -85
- package/templates/agents/efcore/rebase-snapshot.md +62 -62
- package/templates/agents/efcore/scan.md +90 -90
- package/templates/agents/efcore/squash.md +67 -67
- package/templates/agents/explore-codebase.md +65 -65
- package/templates/agents/explore-docs.md +97 -97
- package/templates/agents/fix-grammar.md +49 -49
- package/templates/agents/gitflow/abort.md +45 -45
- package/templates/agents/gitflow/cleanup.md +85 -85
- package/templates/agents/gitflow/commit.md +40 -40
- package/templates/agents/gitflow/exec.md +48 -48
- package/templates/agents/gitflow/finish.md +92 -92
- package/templates/agents/gitflow/init.md +139 -139
- package/templates/agents/gitflow/merge.md +62 -62
- package/templates/agents/gitflow/plan.md +42 -42
- package/templates/agents/gitflow/pr.md +78 -78
- package/templates/agents/gitflow/review.md +49 -49
- package/templates/agents/gitflow/start.md +61 -61
- package/templates/agents/gitflow/status.md +32 -32
- package/templates/agents/snipper.md +36 -36
- package/templates/agents/websearch.md +46 -46
- package/templates/commands/_resources/formatting-guide.md +124 -124
- package/templates/commands/ai-prompt.md +315 -315
- package/templates/commands/apex/1-analyze.md +100 -100
- package/templates/commands/apex/2-plan.md +145 -145
- package/templates/commands/apex/3-execute.md +171 -171
- package/templates/commands/apex/4-examine.md +116 -116
- package/templates/commands/apex/5-tasks.md +209 -209
- package/templates/commands/apex.md +76 -76
- package/templates/commands/application/create.md +362 -362
- package/templates/commands/application/templates-backend.md +463 -463
- package/templates/commands/application/templates-frontend.md +517 -517
- package/templates/commands/application/templates-i18n.md +478 -478
- package/templates/commands/application/templates-seed.md +362 -362
- package/templates/commands/application.md +303 -303
- package/templates/commands/business-analyse/0-orchestrate.md +640 -640
- package/templates/commands/business-analyse/1-init.md +269 -269
- package/templates/commands/business-analyse/2-discover.md +520 -520
- package/templates/commands/business-analyse/3-analyse.md +408 -408
- package/templates/commands/business-analyse/4-specify.md +598 -598
- package/templates/commands/business-analyse/5-validate.md +326 -326
- package/templates/commands/business-analyse/6-handoff.md +746 -746
- package/templates/commands/business-analyse/7-doc-html.md +602 -602
- package/templates/commands/business-analyse/bug.md +325 -325
- package/templates/commands/business-analyse/change-request.md +368 -368
- package/templates/commands/business-analyse/hotfix.md +200 -200
- package/templates/commands/business-analyse.md +640 -640
- package/templates/commands/controller/create.md +216 -216
- package/templates/commands/controller/postman-templates.md +528 -528
- package/templates/commands/controller/templates.md +600 -600
- package/templates/commands/controller.md +337 -337
- package/templates/commands/create/agent.md +138 -138
- package/templates/commands/create/command.md +166 -166
- package/templates/commands/create/hook.md +234 -234
- package/templates/commands/create/plugin.md +329 -329
- package/templates/commands/create/project.md +507 -507
- package/templates/commands/create/skill.md +199 -199
- package/templates/commands/create.md +220 -220
- package/templates/commands/debug.md +95 -95
- package/templates/commands/documentation/module.md +202 -202
- package/templates/commands/documentation/templates.md +432 -432
- package/templates/commands/documentation.md +190 -190
- package/templates/commands/efcore/_env-check.md +153 -153
- package/templates/commands/efcore/conflicts.md +186 -186
- package/templates/commands/efcore/db-deploy.md +193 -193
- package/templates/commands/efcore/db-reset.md +426 -426
- package/templates/commands/efcore/db-seed.md +326 -326
- package/templates/commands/efcore/db-status.md +226 -226
- package/templates/commands/efcore/migration.md +400 -400
- package/templates/commands/efcore/rebase-snapshot.md +264 -264
- package/templates/commands/efcore/scan.md +198 -198
- package/templates/commands/efcore/squash.md +298 -298
- package/templates/commands/efcore.md +224 -224
- package/templates/commands/epct.md +69 -69
- package/templates/commands/explain.md +186 -186
- package/templates/commands/explore.md +45 -45
- package/templates/commands/feature-full.md +267 -267
- package/templates/commands/gitflow/1-init.md +1038 -1038
- package/templates/commands/gitflow/10-start.md +768 -768
- package/templates/commands/gitflow/11-finish.md +457 -457
- package/templates/commands/gitflow/12-cleanup.md +276 -276
- package/templates/commands/gitflow/13-sync.md +216 -216
- package/templates/commands/gitflow/14-rebase.md +251 -251
- package/templates/commands/gitflow/2-status.md +277 -277
- package/templates/commands/gitflow/3-commit.md +344 -344
- package/templates/commands/gitflow/4-plan.md +145 -145
- package/templates/commands/gitflow/5-exec.md +147 -147
- package/templates/commands/gitflow/6-abort.md +344 -344
- package/templates/commands/gitflow/7-pull-request.md +453 -355
- package/templates/commands/gitflow/8-review.md +240 -176
- package/templates/commands/gitflow/9-merge.md +451 -365
- package/templates/commands/gitflow.md +128 -128
- package/templates/commands/implement.md +663 -663
- package/templates/commands/init.md +567 -567
- package/templates/commands/mcp-integration.md +330 -330
- package/templates/commands/notification.md +129 -129
- package/templates/commands/oneshot.md +57 -57
- package/templates/commands/quick-search.md +72 -72
- package/templates/commands/ralph-loop/cancel-ralph.md +18 -18
- package/templates/commands/ralph-loop/help.md +126 -126
- package/templates/commands/ralph-loop/ralph-loop.md +18 -18
- package/templates/commands/review.md +106 -106
- package/templates/commands/utils/test-web-config.md +160 -160
- package/templates/commands/utils/test-web.md +151 -151
- package/templates/commands/validate.md +233 -233
- package/templates/commands/workflow.md +193 -193
- package/templates/gitflow/config.json +138 -138
- package/templates/hooks/ef-migration-check.md +139 -139
- package/templates/hooks/hooks.json +25 -25
- package/templates/hooks/stop-hook.sh +177 -177
- package/templates/skills/ai-prompt/SKILL.md +778 -778
- package/templates/skills/application/SKILL.md +563 -563
- package/templates/skills/application/templates-backend.md +450 -450
- package/templates/skills/application/templates-frontend.md +531 -531
- package/templates/skills/application/templates-i18n.md +520 -520
- package/templates/skills/application/templates-seed.md +647 -647
- package/templates/skills/business-analyse/SKILL.md +191 -191
- package/templates/skills/business-analyse/questionnaire.md +283 -283
- package/templates/skills/business-analyse/templates-frd.md +477 -477
- package/templates/skills/business-analyse/templates-react.md +580 -580
- package/templates/skills/controller/SKILL.md +240 -240
- package/templates/skills/controller/postman-templates.md +614 -614
- package/templates/skills/controller/templates.md +1468 -1468
- package/templates/skills/documentation/SKILL.md +133 -133
- package/templates/skills/documentation/templates.md +476 -476
- package/templates/skills/feature-full/SKILL.md +838 -838
- package/templates/skills/notification/SKILL.md +555 -555
- package/templates/skills/ui-components/SKILL.md +870 -870
- package/templates/skills/workflow/SKILL.md +582 -582
- package/templates/test-web/api-health.json +38 -38
- package/templates/test-web/minimal.json +19 -19
- package/templates/test-web/npm-package.json +46 -46
- package/templates/test-web/seo-check.json +54 -54
|
@@ -1,303 +1,303 @@
|
|
|
1
|
-
# /application - Skill Application SmartStack
|
|
2
|
-
|
|
3
|
-
> **Synergie Skill/Commande:**
|
|
4
|
-
> - **Skill** (`.claude/skills/application/`) → Invocation automatique par Claude
|
|
5
|
-
> - **Commande** (`/application:create`) → Invocation manuelle par l'utilisateur
|
|
6
|
-
> - Templates partagés dans `.claude/skills/application/templates-*.md`
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## ARGUMENTS
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
/application:create <level> <parent> <code> [options]
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
| Variable | Description | Valeurs |
|
|
17
|
-
|----------|-------------|---------|
|
|
18
|
-
| `level` | Niveau de navigation | `context`, `application`, `module`, `section` |
|
|
19
|
-
| `parent` | Code du parent | Ex: `platform`, `platform.administration` |
|
|
20
|
-
| `code` | Code de l'entité | Ex: `products`, `crm`, `erp` |
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## PHASE 0: VALIDATION CONTEXTES RÉSERVÉS (CRITIQUE)
|
|
25
|
-
|
|
26
|
-
> **SÉCURITÉ:** Cette phase est OBLIGATOIRE avant toute génération.
|
|
27
|
-
> Elle protège les contextes core de SmartStack contre les modifications non autorisées.
|
|
28
|
-
|
|
29
|
-
### Règles de Protection
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
33
|
-
│ CONTEXTES RÉSERVÉS (CORE SMARTSTACK) │
|
|
34
|
-
├─────────────────────────────────────────────────────────────────────────────┤
|
|
35
|
-
│ │
|
|
36
|
-
│ 🔒 platform → Administration système, NE PAS MODIFIER │
|
|
37
|
-
│ 🔒 personal → Espace personnel utilisateur, NE PAS MODIFIER │
|
|
38
|
-
│ ✅ business → Applications métier client, ZONE LIBRE │
|
|
39
|
-
│ │
|
|
40
|
-
│ APPLICATIONS RÉSERVÉES: │
|
|
41
|
-
│ 🔒 platform.administration → Admin core SmartStack │
|
|
42
|
-
│ 🔒 personal.myspace → Espace perso core SmartStack │
|
|
43
|
-
│ │
|
|
44
|
-
└─────────────────────────────────────────────────────────────────────────────┘
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### Validation Automatique
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
AVANT toute génération, VÉRIFIER:
|
|
51
|
-
|
|
52
|
-
1. SI $LEVEL = "context":
|
|
53
|
-
RESERVED_CONTEXTS = ["platform", "personal", "business", "system"]
|
|
54
|
-
SI $CODE IN RESERVED_CONTEXTS:
|
|
55
|
-
❌ ERREUR: "Les contextes sont prédéfinis et ne peuvent pas être créés."
|
|
56
|
-
ABORT
|
|
57
|
-
|
|
58
|
-
2. SI $LEVEL = "application":
|
|
59
|
-
SI $PARENT IN ["platform", "personal"]:
|
|
60
|
-
❌ ERREUR: "Le context '$PARENT' est réservé au core SmartStack."
|
|
61
|
-
❌ ERREUR: "Utilisez le context 'business' pour vos applications métier."
|
|
62
|
-
SUGGÉRER: "/application:create application business $CODE"
|
|
63
|
-
ABORT
|
|
64
|
-
|
|
65
|
-
3. SI $LEVEL = "module":
|
|
66
|
-
SI $PARENT commence par "platform." OU "personal.":
|
|
67
|
-
❌ ERREUR: "Les modules core ne peuvent pas être modifiés."
|
|
68
|
-
❌ ERREUR: "Créez vos modules dans 'business.*'"
|
|
69
|
-
ABORT
|
|
70
|
-
|
|
71
|
-
4. SI tout est OK:
|
|
72
|
-
✅ Continuer vers PHASE 1
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Messages d'Erreur Standards
|
|
76
|
-
|
|
77
|
-
| Situation | Message |
|
|
78
|
-
|-----------|---------|
|
|
79
|
-
| Création context réservé | "Les contextes sont prédéfinis (platform, personal, business). Créez vos applications dans 'business'." |
|
|
80
|
-
| Application dans platform | "Le context 'platform' est réservé à l'administration SmartStack. Utilisez 'business' pour vos applications métier." |
|
|
81
|
-
| Application dans personal | "Le context 'personal' est réservé aux fonctionnalités utilisateur core. Utilisez 'business'." |
|
|
82
|
-
| Module dans platform.* | "Les modules platform.* sont gérés par SmartStack. Créez vos modules dans business.*" |
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## PHASE 1: PARSING & VALIDATION
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
1. EXTRAIRE level, parent, code des arguments
|
|
90
|
-
2. EXÉCUTER PHASE 0 (validation contextes)
|
|
91
|
-
3. SI validation OK → VALIDER que le parent existe (sauf pour context)
|
|
92
|
-
4. DÉTECTER le context racine
|
|
93
|
-
5. GÉNÉRER les chemins de route et permission
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## PHASE 2: COLLECTE DES TRADUCTIONS
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
AskUserQuestion({
|
|
102
|
-
questions: [
|
|
103
|
-
{
|
|
104
|
-
header: "Labels FR",
|
|
105
|
-
question: "Libellés en français ?",
|
|
106
|
-
options: [
|
|
107
|
-
{ label: "$CODE_PASCAL", description: "Label par défaut" }
|
|
108
|
-
]
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
header: "Icône",
|
|
112
|
-
question: "Quelle icône Lucide ?",
|
|
113
|
-
options: [
|
|
114
|
-
{ label: "Package", description: "Icône produit" },
|
|
115
|
-
{ label: "Folder", description: "Icône générique" },
|
|
116
|
-
{ label: "Settings", description: "Icône configuration" }
|
|
117
|
-
]
|
|
118
|
-
}
|
|
119
|
-
]
|
|
120
|
-
})
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## PHASE 3: GÉNÉRATION DB SEED
|
|
126
|
-
|
|
127
|
-
| Fichier | Action |
|
|
128
|
-
|---------|--------|
|
|
129
|
-
| `Navigation{Level}Configuration.cs` | Ajouter entité |
|
|
130
|
-
| `NavigationTranslationConfiguration.cs` | Ajouter 4 traductions |
|
|
131
|
-
| `PermissionConfiguration.cs` | Ajouter permissions CRUD |
|
|
132
|
-
| `RolePermissionConfiguration.cs` | Assigner aux rôles |
|
|
133
|
-
|
|
134
|
-
**Templates:** → `.claude/skills/application/templates-seed.md`
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## PHASE 4: GÉNÉRATION BACKEND
|
|
139
|
-
|
|
140
|
-
| Fichier | Action |
|
|
141
|
-
|---------|--------|
|
|
142
|
-
| `Permissions.cs` | Ajouter classe permissions |
|
|
143
|
-
| `I{Entity}Service.cs` | Créer interface |
|
|
144
|
-
| `{Entity}Service.cs` | Créer implémentation |
|
|
145
|
-
| `{Entity}Dto.cs` | Créer DTOs |
|
|
146
|
-
| `{Entity}.cs` | Créer entité Domain |
|
|
147
|
-
| `{Entity}Configuration.cs` | Créer config EF |
|
|
148
|
-
| `IApplicationDbContext.cs` | Ajouter DbSet |
|
|
149
|
-
| `DependencyInjection.cs` | Enregistrer service |
|
|
150
|
-
|
|
151
|
-
**Templates:** → `.claude/skills/application/templates-backend.md`
|
|
152
|
-
|
|
153
|
-
**Chaîner:** → `/controller:create $AREA $MODULE $ENTITY`
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## PHASE 5: GÉNÉRATION FRONTEND
|
|
158
|
-
|
|
159
|
-
| Fichier | Action |
|
|
160
|
-
|---------|--------|
|
|
161
|
-
| `{Module}Page.tsx` | Créer page principale |
|
|
162
|
-
| `{Module}ListView.tsx` | Créer composant liste |
|
|
163
|
-
| `use{Module}Preferences.ts` | Créer hook préférences |
|
|
164
|
-
| `{module}Api.ts` | Créer service API |
|
|
165
|
-
| `App.tsx` | Ajouter routes |
|
|
166
|
-
|
|
167
|
-
**Templates:** → `.claude/skills/application/templates-frontend.md`
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## PHASE 6: GÉNÉRATION I18N
|
|
172
|
-
|
|
173
|
-
| Fichier | Action |
|
|
174
|
-
|---------|--------|
|
|
175
|
-
| `fr/{module}.json` | Créer traductions FR |
|
|
176
|
-
| `en/{module}.json` | Créer traductions EN |
|
|
177
|
-
| `it/{module}.json` | Créer traductions IT |
|
|
178
|
-
| `de/{module}.json` | Créer traductions DE |
|
|
179
|
-
| `navigation.json` (×4) | Mettre à jour |
|
|
180
|
-
| `i18n/index.ts` | Enregistrer namespace |
|
|
181
|
-
|
|
182
|
-
**Templates:** → `.claude/skills/application/templates-i18n.md`
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## PHASE 7: MIGRATION
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
# Chaîner automatiquement
|
|
190
|
-
/efcore:migration Add{Level}{Code}
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## PHASE 8: VALIDATION
|
|
196
|
-
|
|
197
|
-
```bash
|
|
198
|
-
# Backend
|
|
199
|
-
dotnet build
|
|
200
|
-
dotnet test
|
|
201
|
-
|
|
202
|
-
# Frontend
|
|
203
|
-
cd web/smartstack-web
|
|
204
|
-
npm run build
|
|
205
|
-
npm run lint
|
|
206
|
-
npm run test
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## PHASE 9: RÉSUMÉ
|
|
212
|
-
|
|
213
|
-
```markdown
|
|
214
|
-
## ✅ Création terminée
|
|
215
|
-
|
|
216
|
-
### Fichiers créés
|
|
217
|
-
- Backend: X fichiers
|
|
218
|
-
- Frontend: X fichiers
|
|
219
|
-
- i18n: 4 langues
|
|
220
|
-
|
|
221
|
-
### Navigation
|
|
222
|
-
- Route: /$ROUTE
|
|
223
|
-
- Permission: $PERMISSION_PATH.*
|
|
224
|
-
|
|
225
|
-
### Prochaines étapes
|
|
226
|
-
1. Vérifier les seeds générés
|
|
227
|
-
2. Tester avec Swagger
|
|
228
|
-
3. Valider l'UI
|
|
229
|
-
|
|
230
|
-
### Commandes utiles
|
|
231
|
-
- `dotnet ef database update` - Appliquer migration
|
|
232
|
-
- `npm run dev` - Lancer frontend
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## RÈGLES ABSOLUES
|
|
238
|
-
|
|
239
|
-
1. **TOUJOURS** exécuter PHASE 0 (validation contextes) en premier
|
|
240
|
-
2. **TOUJOURS** 4 langues (FR, EN, IT, DE)
|
|
241
|
-
3. **TOUJOURS** respecter l'architecture en couches
|
|
242
|
-
4. **TOUJOURS** implémenter les préférences utilisateur (template complet)
|
|
243
|
-
5. **TOUJOURS** chaîner avec `/controller:create` et `/efcore:migration`
|
|
244
|
-
6. **TOUJOURS** utiliser des GUIDs aléatoires (voir templates-seed.md)
|
|
245
|
-
7. **JAMAIS** de violation d'architecture (WEB → Infrastructure)
|
|
246
|
-
8. **JAMAIS** de traduction manquante
|
|
247
|
-
9. **JAMAIS** de création dans les contextes réservés (platform, personal)
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## EXEMPLES VALIDES ET INVALIDES
|
|
252
|
-
|
|
253
|
-
### ✅ VALIDE - Applications métier client
|
|
254
|
-
|
|
255
|
-
```bash
|
|
256
|
-
# Créer une application dans business
|
|
257
|
-
/application:create application business crm
|
|
258
|
-
|
|
259
|
-
# Créer un module dans business.crm
|
|
260
|
-
/application:create module business.crm leads
|
|
261
|
-
|
|
262
|
-
# Créer une section dans business.crm.leads
|
|
263
|
-
/application:create section business.crm.leads import
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
### ❌ INVALIDE - Tentatives sur contextes réservés
|
|
267
|
-
|
|
268
|
-
```bash
|
|
269
|
-
# ERREUR: Création de context
|
|
270
|
-
/application:create context _ erp
|
|
271
|
-
→ "Les contextes sont prédéfinis. Utilisez 'business'."
|
|
272
|
-
|
|
273
|
-
# ERREUR: Application dans platform
|
|
274
|
-
/application:create application platform sales
|
|
275
|
-
→ "Le context 'platform' est réservé. Utilisez 'business'."
|
|
276
|
-
|
|
277
|
-
# ERREUR: Module dans platform.administration
|
|
278
|
-
/application:create module platform.administration custom
|
|
279
|
-
→ "Les modules core ne peuvent pas être modifiés."
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
---
|
|
283
|
-
|
|
284
|
-
## MAPPING NIVEAU → GÉNÉRATION
|
|
285
|
-
|
|
286
|
-
| Niveau | DB Seed | Backend | Frontend | i18n |
|
|
287
|
-
|--------|---------|---------|----------|------|
|
|
288
|
-
| Context | ❌ (prédéfini) | ❌ | ❌ | ❌ |
|
|
289
|
-
| Application | ✅ | ❌ | ✅ (layout) | ✅ (nav) |
|
|
290
|
-
| Module | ✅ | ✅ (complet) | ✅ (complet) | ✅ (complet) |
|
|
291
|
-
| Section | ✅ | ✅ (optionnel) | ✅ (tabs) | ✅ (nav) |
|
|
292
|
-
|
|
293
|
-
---
|
|
294
|
-
|
|
295
|
-
## SOURCES DE DONNÉES
|
|
296
|
-
|
|
297
|
-
| Donnée | Source |
|
|
298
|
-
|--------|--------|
|
|
299
|
-
| Navigation entities | `src/SmartStack.Infrastructure/Persistence/Configurations/Navigation/` |
|
|
300
|
-
| Translations | `NavigationTranslationConfiguration.cs` |
|
|
301
|
-
| Permissions | `src/SmartStack.Application/Common/Authorization/Permissions.cs` |
|
|
302
|
-
| i18n locales | `web/smartstack-web/src/i18n/locales/` |
|
|
303
|
-
| Routes | `web/smartstack-web/src/App.tsx` |
|
|
1
|
+
# /application - Skill Application SmartStack
|
|
2
|
+
|
|
3
|
+
> **Synergie Skill/Commande:**
|
|
4
|
+
> - **Skill** (`.claude/skills/application/`) → Invocation automatique par Claude
|
|
5
|
+
> - **Commande** (`/application:create`) → Invocation manuelle par l'utilisateur
|
|
6
|
+
> - Templates partagés dans `.claude/skills/application/templates-*.md`
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## ARGUMENTS
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/application:create <level> <parent> <code> [options]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
| Variable | Description | Valeurs |
|
|
17
|
+
|----------|-------------|---------|
|
|
18
|
+
| `level` | Niveau de navigation | `context`, `application`, `module`, `section` |
|
|
19
|
+
| `parent` | Code du parent | Ex: `platform`, `platform.administration` |
|
|
20
|
+
| `code` | Code de l'entité | Ex: `products`, `crm`, `erp` |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## PHASE 0: VALIDATION CONTEXTES RÉSERVÉS (CRITIQUE)
|
|
25
|
+
|
|
26
|
+
> **SÉCURITÉ:** Cette phase est OBLIGATOIRE avant toute génération.
|
|
27
|
+
> Elle protège les contextes core de SmartStack contre les modifications non autorisées.
|
|
28
|
+
|
|
29
|
+
### Règles de Protection
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
33
|
+
│ CONTEXTES RÉSERVÉS (CORE SMARTSTACK) │
|
|
34
|
+
├─────────────────────────────────────────────────────────────────────────────┤
|
|
35
|
+
│ │
|
|
36
|
+
│ 🔒 platform → Administration système, NE PAS MODIFIER │
|
|
37
|
+
│ 🔒 personal → Espace personnel utilisateur, NE PAS MODIFIER │
|
|
38
|
+
│ ✅ business → Applications métier client, ZONE LIBRE │
|
|
39
|
+
│ │
|
|
40
|
+
│ APPLICATIONS RÉSERVÉES: │
|
|
41
|
+
│ 🔒 platform.administration → Admin core SmartStack │
|
|
42
|
+
│ 🔒 personal.myspace → Espace perso core SmartStack │
|
|
43
|
+
│ │
|
|
44
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Validation Automatique
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
AVANT toute génération, VÉRIFIER:
|
|
51
|
+
|
|
52
|
+
1. SI $LEVEL = "context":
|
|
53
|
+
RESERVED_CONTEXTS = ["platform", "personal", "business", "system"]
|
|
54
|
+
SI $CODE IN RESERVED_CONTEXTS:
|
|
55
|
+
❌ ERREUR: "Les contextes sont prédéfinis et ne peuvent pas être créés."
|
|
56
|
+
ABORT
|
|
57
|
+
|
|
58
|
+
2. SI $LEVEL = "application":
|
|
59
|
+
SI $PARENT IN ["platform", "personal"]:
|
|
60
|
+
❌ ERREUR: "Le context '$PARENT' est réservé au core SmartStack."
|
|
61
|
+
❌ ERREUR: "Utilisez le context 'business' pour vos applications métier."
|
|
62
|
+
SUGGÉRER: "/application:create application business $CODE"
|
|
63
|
+
ABORT
|
|
64
|
+
|
|
65
|
+
3. SI $LEVEL = "module":
|
|
66
|
+
SI $PARENT commence par "platform." OU "personal.":
|
|
67
|
+
❌ ERREUR: "Les modules core ne peuvent pas être modifiés."
|
|
68
|
+
❌ ERREUR: "Créez vos modules dans 'business.*'"
|
|
69
|
+
ABORT
|
|
70
|
+
|
|
71
|
+
4. SI tout est OK:
|
|
72
|
+
✅ Continuer vers PHASE 1
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Messages d'Erreur Standards
|
|
76
|
+
|
|
77
|
+
| Situation | Message |
|
|
78
|
+
|-----------|---------|
|
|
79
|
+
| Création context réservé | "Les contextes sont prédéfinis (platform, personal, business). Créez vos applications dans 'business'." |
|
|
80
|
+
| Application dans platform | "Le context 'platform' est réservé à l'administration SmartStack. Utilisez 'business' pour vos applications métier." |
|
|
81
|
+
| Application dans personal | "Le context 'personal' est réservé aux fonctionnalités utilisateur core. Utilisez 'business'." |
|
|
82
|
+
| Module dans platform.* | "Les modules platform.* sont gérés par SmartStack. Créez vos modules dans business.*" |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## PHASE 1: PARSING & VALIDATION
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
1. EXTRAIRE level, parent, code des arguments
|
|
90
|
+
2. EXÉCUTER PHASE 0 (validation contextes)
|
|
91
|
+
3. SI validation OK → VALIDER que le parent existe (sauf pour context)
|
|
92
|
+
4. DÉTECTER le context racine
|
|
93
|
+
5. GÉNÉRER les chemins de route et permission
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## PHASE 2: COLLECTE DES TRADUCTIONS
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
AskUserQuestion({
|
|
102
|
+
questions: [
|
|
103
|
+
{
|
|
104
|
+
header: "Labels FR",
|
|
105
|
+
question: "Libellés en français ?",
|
|
106
|
+
options: [
|
|
107
|
+
{ label: "$CODE_PASCAL", description: "Label par défaut" }
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
header: "Icône",
|
|
112
|
+
question: "Quelle icône Lucide ?",
|
|
113
|
+
options: [
|
|
114
|
+
{ label: "Package", description: "Icône produit" },
|
|
115
|
+
{ label: "Folder", description: "Icône générique" },
|
|
116
|
+
{ label: "Settings", description: "Icône configuration" }
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
})
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## PHASE 3: GÉNÉRATION DB SEED
|
|
126
|
+
|
|
127
|
+
| Fichier | Action |
|
|
128
|
+
|---------|--------|
|
|
129
|
+
| `Navigation{Level}Configuration.cs` | Ajouter entité |
|
|
130
|
+
| `NavigationTranslationConfiguration.cs` | Ajouter 4 traductions |
|
|
131
|
+
| `PermissionConfiguration.cs` | Ajouter permissions CRUD |
|
|
132
|
+
| `RolePermissionConfiguration.cs` | Assigner aux rôles |
|
|
133
|
+
|
|
134
|
+
**Templates:** → `.claude/skills/application/templates-seed.md`
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## PHASE 4: GÉNÉRATION BACKEND
|
|
139
|
+
|
|
140
|
+
| Fichier | Action |
|
|
141
|
+
|---------|--------|
|
|
142
|
+
| `Permissions.cs` | Ajouter classe permissions |
|
|
143
|
+
| `I{Entity}Service.cs` | Créer interface |
|
|
144
|
+
| `{Entity}Service.cs` | Créer implémentation |
|
|
145
|
+
| `{Entity}Dto.cs` | Créer DTOs |
|
|
146
|
+
| `{Entity}.cs` | Créer entité Domain |
|
|
147
|
+
| `{Entity}Configuration.cs` | Créer config EF |
|
|
148
|
+
| `IApplicationDbContext.cs` | Ajouter DbSet |
|
|
149
|
+
| `DependencyInjection.cs` | Enregistrer service |
|
|
150
|
+
|
|
151
|
+
**Templates:** → `.claude/skills/application/templates-backend.md`
|
|
152
|
+
|
|
153
|
+
**Chaîner:** → `/controller:create $AREA $MODULE $ENTITY`
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## PHASE 5: GÉNÉRATION FRONTEND
|
|
158
|
+
|
|
159
|
+
| Fichier | Action |
|
|
160
|
+
|---------|--------|
|
|
161
|
+
| `{Module}Page.tsx` | Créer page principale |
|
|
162
|
+
| `{Module}ListView.tsx` | Créer composant liste |
|
|
163
|
+
| `use{Module}Preferences.ts` | Créer hook préférences |
|
|
164
|
+
| `{module}Api.ts` | Créer service API |
|
|
165
|
+
| `App.tsx` | Ajouter routes |
|
|
166
|
+
|
|
167
|
+
**Templates:** → `.claude/skills/application/templates-frontend.md`
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## PHASE 6: GÉNÉRATION I18N
|
|
172
|
+
|
|
173
|
+
| Fichier | Action |
|
|
174
|
+
|---------|--------|
|
|
175
|
+
| `fr/{module}.json` | Créer traductions FR |
|
|
176
|
+
| `en/{module}.json` | Créer traductions EN |
|
|
177
|
+
| `it/{module}.json` | Créer traductions IT |
|
|
178
|
+
| `de/{module}.json` | Créer traductions DE |
|
|
179
|
+
| `navigation.json` (×4) | Mettre à jour |
|
|
180
|
+
| `i18n/index.ts` | Enregistrer namespace |
|
|
181
|
+
|
|
182
|
+
**Templates:** → `.claude/skills/application/templates-i18n.md`
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## PHASE 7: MIGRATION
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Chaîner automatiquement
|
|
190
|
+
/efcore:migration Add{Level}{Code}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## PHASE 8: VALIDATION
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# Backend
|
|
199
|
+
dotnet build
|
|
200
|
+
dotnet test
|
|
201
|
+
|
|
202
|
+
# Frontend
|
|
203
|
+
cd web/smartstack-web
|
|
204
|
+
npm run build
|
|
205
|
+
npm run lint
|
|
206
|
+
npm run test
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## PHASE 9: RÉSUMÉ
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
## ✅ Création terminée
|
|
215
|
+
|
|
216
|
+
### Fichiers créés
|
|
217
|
+
- Backend: X fichiers
|
|
218
|
+
- Frontend: X fichiers
|
|
219
|
+
- i18n: 4 langues
|
|
220
|
+
|
|
221
|
+
### Navigation
|
|
222
|
+
- Route: /$ROUTE
|
|
223
|
+
- Permission: $PERMISSION_PATH.*
|
|
224
|
+
|
|
225
|
+
### Prochaines étapes
|
|
226
|
+
1. Vérifier les seeds générés
|
|
227
|
+
2. Tester avec Swagger
|
|
228
|
+
3. Valider l'UI
|
|
229
|
+
|
|
230
|
+
### Commandes utiles
|
|
231
|
+
- `dotnet ef database update` - Appliquer migration
|
|
232
|
+
- `npm run dev` - Lancer frontend
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## RÈGLES ABSOLUES
|
|
238
|
+
|
|
239
|
+
1. **TOUJOURS** exécuter PHASE 0 (validation contextes) en premier
|
|
240
|
+
2. **TOUJOURS** 4 langues (FR, EN, IT, DE)
|
|
241
|
+
3. **TOUJOURS** respecter l'architecture en couches
|
|
242
|
+
4. **TOUJOURS** implémenter les préférences utilisateur (template complet)
|
|
243
|
+
5. **TOUJOURS** chaîner avec `/controller:create` et `/efcore:migration`
|
|
244
|
+
6. **TOUJOURS** utiliser des GUIDs aléatoires (voir templates-seed.md)
|
|
245
|
+
7. **JAMAIS** de violation d'architecture (WEB → Infrastructure)
|
|
246
|
+
8. **JAMAIS** de traduction manquante
|
|
247
|
+
9. **JAMAIS** de création dans les contextes réservés (platform, personal)
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## EXEMPLES VALIDES ET INVALIDES
|
|
252
|
+
|
|
253
|
+
### ✅ VALIDE - Applications métier client
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
# Créer une application dans business
|
|
257
|
+
/application:create application business crm
|
|
258
|
+
|
|
259
|
+
# Créer un module dans business.crm
|
|
260
|
+
/application:create module business.crm leads
|
|
261
|
+
|
|
262
|
+
# Créer une section dans business.crm.leads
|
|
263
|
+
/application:create section business.crm.leads import
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### ❌ INVALIDE - Tentatives sur contextes réservés
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
# ERREUR: Création de context
|
|
270
|
+
/application:create context _ erp
|
|
271
|
+
→ "Les contextes sont prédéfinis. Utilisez 'business'."
|
|
272
|
+
|
|
273
|
+
# ERREUR: Application dans platform
|
|
274
|
+
/application:create application platform sales
|
|
275
|
+
→ "Le context 'platform' est réservé. Utilisez 'business'."
|
|
276
|
+
|
|
277
|
+
# ERREUR: Module dans platform.administration
|
|
278
|
+
/application:create module platform.administration custom
|
|
279
|
+
→ "Les modules core ne peuvent pas être modifiés."
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## MAPPING NIVEAU → GÉNÉRATION
|
|
285
|
+
|
|
286
|
+
| Niveau | DB Seed | Backend | Frontend | i18n |
|
|
287
|
+
|--------|---------|---------|----------|------|
|
|
288
|
+
| Context | ❌ (prédéfini) | ❌ | ❌ | ❌ |
|
|
289
|
+
| Application | ✅ | ❌ | ✅ (layout) | ✅ (nav) |
|
|
290
|
+
| Module | ✅ | ✅ (complet) | ✅ (complet) | ✅ (complet) |
|
|
291
|
+
| Section | ✅ | ✅ (optionnel) | ✅ (tabs) | ✅ (nav) |
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## SOURCES DE DONNÉES
|
|
296
|
+
|
|
297
|
+
| Donnée | Source |
|
|
298
|
+
|--------|--------|
|
|
299
|
+
| Navigation entities | `src/SmartStack.Infrastructure/Persistence/Configurations/Navigation/` |
|
|
300
|
+
| Translations | `NavigationTranslationConfiguration.cs` |
|
|
301
|
+
| Permissions | `src/SmartStack.Application/Common/Authorization/Permissions.cs` |
|
|
302
|
+
| i18n locales | `web/smartstack-web/src/i18n/locales/` |
|
|
303
|
+
| Routes | `web/smartstack-web/src/App.tsx` |
|