@atlashub/smartstack-cli 1.14.0 → 1.14.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.
@@ -14,7 +14,7 @@
14
14
  }
15
15
  .platform-btn {
16
16
  flex: 1;
17
- padding: 1rem 1.5rem;
17
+ padding: 0.875rem 1rem;
18
18
  border: 2px solid var(--border);
19
19
  border-radius: 8px;
20
20
  background: var(--bg-card);
@@ -23,9 +23,11 @@
23
23
  transition: all 0.2s ease;
24
24
  display: flex;
25
25
  align-items: center;
26
- gap: 0.75rem;
27
- font-size: 1rem;
26
+ justify-content: center;
27
+ gap: 0.5rem;
28
+ font-size: 0.95rem;
28
29
  font-weight: 500;
30
+ min-height: 52px;
29
31
  }
30
32
  .platform-btn:hover {
31
33
  border-color: var(--primary);
@@ -36,7 +38,7 @@
36
38
  background: rgba(59, 130, 246, 0.1);
37
39
  }
38
40
  .platform-btn .platform-icon {
39
- font-size: 1.5rem;
41
+ font-size: 1.25rem;
40
42
  }
41
43
  .platform-content {
42
44
  display: none;
@@ -48,26 +50,35 @@
48
50
  /* OS Selector */
49
51
  .os-selector {
50
52
  display: flex;
51
- gap: 0.5rem;
52
- margin-bottom: 1rem;
53
+ gap: 0.75rem;
53
54
  }
54
55
  .os-btn {
55
- padding: 0.5rem 1rem;
56
- border: 1px solid var(--border);
57
- border-radius: 6px;
56
+ flex: 1;
57
+ padding: 0.875rem 1rem;
58
+ border: 2px solid var(--border);
59
+ border-radius: 8px;
58
60
  background: var(--bg-card);
59
61
  color: var(--text);
60
62
  cursor: pointer;
61
63
  transition: all 0.2s ease;
62
- font-size: 0.9rem;
64
+ font-size: 0.95rem;
65
+ font-weight: 500;
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ gap: 0.5rem;
70
+ min-height: 52px;
63
71
  }
64
72
  .os-btn:hover {
65
73
  border-color: var(--primary);
74
+ background: var(--bg-hover);
66
75
  }
67
76
  .os-btn.active {
68
77
  border-color: var(--primary);
69
78
  background: rgba(59, 130, 246, 0.1);
70
- font-weight: 500;
79
+ }
80
+ .os-btn .os-icon {
81
+ font-size: 1.25rem;
71
82
  }
72
83
  .os-content {
73
84
  display: none;
@@ -80,7 +91,7 @@
80
91
  .settings-panel {
81
92
  background: var(--bg-card);
82
93
  border: 1px solid var(--border);
83
- border-radius: 8px;
94
+ border-radius: 12px;
84
95
  padding: 1.5rem;
85
96
  margin-bottom: 2rem;
86
97
  }
@@ -91,13 +102,18 @@
91
102
  }
92
103
  .settings-group {
93
104
  flex: 1;
94
- min-width: 200px;
105
+ min-width: 280px;
95
106
  }
96
107
  .settings-label {
97
108
  font-weight: 600;
98
109
  color: var(--text);
99
110
  margin-bottom: 0.75rem;
100
- display: block;
111
+ display: flex;
112
+ align-items: center;
113
+ gap: 0.5rem;
114
+ }
115
+ .settings-label .label-icon {
116
+ font-size: 1.1rem;
101
117
  }
102
118
 
103
119
  /* Tutorial section */
@@ -489,17 +505,28 @@
489
505
  <div class="settings-row">
490
506
  <div class="settings-group">
491
507
  <span class="settings-label">
508
+ <span class="label-icon">&#128187;</span>
492
509
  <span data-lang="fr">Systeme d'exploitation</span>
493
510
  <span data-lang="en">Operating System</span>
494
511
  </span>
495
512
  <div class="os-selector">
496
- <button class="os-btn active" data-os="windows" onclick="setOS('windows')">Windows</button>
497
- <button class="os-btn" data-os="macos" onclick="setOS('macos')">macOS</button>
498
- <button class="os-btn" data-os="linux" onclick="setOS('linux')">Linux</button>
513
+ <button class="os-btn active" data-os="windows" onclick="setOS('windows')">
514
+ <span class="os-icon">&#129695;</span>
515
+ <span>Windows</span>
516
+ </button>
517
+ <button class="os-btn" data-os="macos" onclick="setOS('macos')">
518
+ <span class="os-icon">&#127822;</span>
519
+ <span>macOS</span>
520
+ </button>
521
+ <button class="os-btn" data-os="linux" onclick="setOS('linux')">
522
+ <span class="os-icon">&#128039;</span>
523
+ <span>Linux</span>
524
+ </button>
499
525
  </div>
500
526
  </div>
501
527
  <div class="settings-group">
502
528
  <span class="settings-label">
529
+ <span class="label-icon">&#128256;</span>
503
530
  <span data-lang="fr">Plateforme Git</span>
504
531
  <span data-lang="en">Git Platform</span>
505
532
  </span>
@@ -651,8 +678,10 @@ git config --global credential.helper manager</code></pre>
651
678
  </div>
652
679
  </div>
653
680
 
654
- <p data-lang="fr" style="margin-top: 1rem;">Git Credential Manager gerera automatiquement l'authentification via le navigateur lors du clone avec <code>/gitflow:10-start</code>.</p>
655
- <p data-lang="en" style="margin-top: 1rem;">Git Credential Manager will automatically handle authentication via browser when cloning with <code>/gitflow:10-start</code>.</p>
681
+ <div class="tutorial-note" style="margin-top: 1rem;">
682
+ <p data-lang="fr"><strong>Pas besoin de <code>az login</code></strong> - Git Credential Manager ouvrira automatiquement votre navigateur pour vous authentifier avec votre compte Azure AD lors de la premiere operation Git (clone, push, etc.).</p>
683
+ <p data-lang="en"><strong>No need for <code>az login</code></strong> - Git Credential Manager will automatically open your browser to authenticate with your Azure AD account on the first Git operation (clone, push, etc.).</p>
684
+ </div>
656
685
  </div>
657
686
  </div>
658
687
  </div>
@@ -815,14 +844,17 @@ claude mcp list</code></pre>
815
844
  <span data-lang="en">Start your first project</span>
816
845
  </h3>
817
846
 
818
- <div class="alert alert-info" style="margin-bottom: 1.5rem;">
819
- <span class="alert-icon">&#128161;</span>
847
+ <div class="alert alert-success" style="margin-bottom: 1.5rem;">
848
+ <span class="alert-icon">&#9989;</span>
820
849
  <div class="alert-content">
821
- <p data-lang="fr">Felicitations ! L'installation est terminee. Voici comment demarrer votre premier projet SmartStack.</p>
822
- <p data-lang="en">Congratulations! Installation is complete. Here's how to start your first SmartStack project.</p>
850
+ <p data-lang="fr"><strong>Vous lisez cette doc dans votre projet ?</strong> Vous etes deja pret ! Les etapes A, B, C sont deja faites. <a href="#step-d" style="color: var(--success); font-weight: 600;">Passez directement a l'etape D &rarr;</a></p>
851
+ <p data-lang="en"><strong>Reading this doc in your project?</strong> You're already set! Steps A, B, C are done. <a href="#step-d" style="color: var(--success); font-weight: 600;">Skip to step D &rarr;</a></p>
823
852
  </div>
824
853
  </div>
825
854
 
855
+ <p data-lang="fr" style="color: var(--text-muted); font-size: 0.9rem; margin-bottom: 1.5rem;">Les etapes A, B, C ci-dessous sont pour reference si vous devez configurer un nouveau projet.</p>
856
+ <p data-lang="en" style="color: var(--text-muted); font-size: 0.9rem; margin-bottom: 1.5rem;">Steps A, B, C below are for reference if you need to set up a new project.</p>
857
+
826
858
  <!-- Step A: Create repo -->
827
859
  <div class="tutorial-section">
828
860
  <h4>
@@ -907,19 +939,16 @@ claude mcp list</code></pre>
907
939
  <div class="tutorial-section">
908
940
  <h4>
909
941
  <span class="step-badge">C</span>
910
- <span data-lang="fr">Initialiser SmartStack</span>
911
- <span data-lang="en">Initialize SmartStack</span>
942
+ <span data-lang="fr">Installer les outils SmartStack</span>
943
+ <span data-lang="en">Install SmartStack tools</span>
912
944
  </h4>
913
945
 
914
- <p data-lang="fr">Une fois GitFlow configure, initialisez la structure du projet SmartStack :</p>
915
- <p data-lang="en">Once GitFlow is configured, initialize the SmartStack project structure:</p>
946
+ <p data-lang="fr">Vous etes maintenant dans votre projet clone. Installez les outils SmartStack :</p>
947
+ <p data-lang="en">You are now in your cloned project. Install SmartStack tools:</p>
916
948
 
917
949
  <div class="code-block">
918
950
  <button class="copy-btn">Copy</button>
919
- <pre><code># Pour un nouveau projet .NET (cree la structure Clean Architecture)
920
- smartstack init MonProjet
921
-
922
- # OU pour un projet existant (ajoute seulement les outils SmartStack)
951
+ <pre><code># Depuis la racine de votre projet clone
923
952
  smartstack init .</code></pre>
924
953
  </div>
925
954
 
@@ -927,39 +956,85 @@ smartstack init .</code></pre>
927
956
  <p data-lang="en" style="margin-top: 1rem;">This command will:</p>
928
957
 
929
958
  <ul style="margin: 0.5rem 0 1rem 1.5rem; color: var(--text-muted);">
930
- <li data-lang="fr">Creer la structure Clean Architecture (.NET)</li>
931
- <li data-lang="en">Create the Clean Architecture structure (.NET)</li>
932
959
  <li data-lang="fr">Installer les skills et agents SmartStack</li>
933
960
  <li data-lang="en">Install SmartStack skills and agents</li>
934
961
  <li data-lang="fr">Configurer les hooks Claude Code</li>
935
962
  <li data-lang="en">Configure Claude Code hooks</li>
963
+ <li data-lang="fr">Generer le fichier <code>CLAUDE.md</code> avec les regles du projet</li>
964
+ <li data-lang="en">Generate the <code>CLAUDE.md</code> file with project rules</li>
965
+ <li data-lang="fr">Generer cette documentation (<code>.documentation/</code>)</li>
966
+ <li data-lang="en">Generate this documentation (<code>.documentation/</code>)</li>
936
967
  <li data-lang="fr">Verifier les serveurs MCP</li>
937
968
  <li data-lang="en">Verify MCP servers</li>
938
969
  </ul>
970
+
971
+ <div class="tutorial-note">
972
+ <p data-lang="fr"><strong>Nouveau projet .NET ?</strong> Si vous partez de zero et voulez creer la structure Clean Architecture, utilisez plutot <code>smartstack init MonProjet</code> avant l'etape A (sans creer de repo au prealable).</p>
973
+ <p data-lang="en"><strong>New .NET project?</strong> If you're starting from scratch and want to create the Clean Architecture structure, use <code>smartstack init MyProject</code> before step A (without creating a repo beforehand).</p>
974
+ </div>
939
975
  </div>
940
976
 
941
977
  <!-- Step D: Start working -->
942
- <div class="tutorial-section">
978
+ <div class="tutorial-section" id="step-d">
943
979
  <h4>
944
980
  <span class="step-badge">D</span>
945
981
  <span data-lang="fr">Commencer a travailler</span>
946
982
  <span data-lang="en">Start working</span>
947
983
  </h4>
948
984
 
949
- <p data-lang="fr">Votre environnement est pret ! Pour commencer une nouvelle fonctionnalite :</p>
950
- <p data-lang="en">Your environment is ready! To start a new feature:</p>
985
+ <p data-lang="fr">Votre environnement est pret ! Le workflow GitFlow vous guide selon votre objectif :</p>
986
+ <p data-lang="en">Your environment is ready! The GitFlow workflow guides you based on your goal:</p>
987
+
988
+ <!-- Mini decision guide -->
989
+ <div style="display: flex; gap: 1rem; flex-wrap: wrap; margin: 1.5rem 0;">
990
+ <div style="flex: 1; min-width: 200px; padding: 1rem; background: rgba(34, 197, 94, 0.1); border: 1px solid #22c55e; border-radius: 8px;">
991
+ <div style="font-weight: 600; color: #22c55e; margin-bottom: 0.5rem;">
992
+ <span data-lang="fr">Nouvelle fonctionnalite</span>
993
+ <span data-lang="en">New feature</span>
994
+ </div>
995
+ <code style="font-size: 0.85rem;">/gitflow:10-start feature {nom}</code>
996
+ </div>
997
+ <div style="flex: 1; min-width: 200px; padding: 1rem; background: rgba(234, 179, 8, 0.1); border: 1px solid #eab308; border-radius: 8px;">
998
+ <div style="font-weight: 600; color: #eab308; margin-bottom: 0.5rem;">
999
+ <span data-lang="fr">Deployer en prod</span>
1000
+ <span data-lang="en">Deploy to prod</span>
1001
+ </div>
1002
+ <code style="font-size: 0.85rem;">/gitflow:10-start release</code>
1003
+ </div>
1004
+ <div style="flex: 1; min-width: 200px; padding: 1rem; background: rgba(236, 72, 153, 0.1); border: 1px solid #ec4899; border-radius: 8px;">
1005
+ <div style="font-weight: 600; color: #ec4899; margin-bottom: 0.5rem;">
1006
+ <span data-lang="fr">Bug urgent prod</span>
1007
+ <span data-lang="en">Urgent prod bug</span>
1008
+ </div>
1009
+ <code style="font-size: 0.85rem;">/gitflow:10-start hotfix {nom}</code>
1010
+ </div>
1011
+ </div>
1012
+
1013
+ <p data-lang="fr" style="margin-top: 1rem;">Cycle de travail type :</p>
1014
+ <p data-lang="en" style="margin-top: 1rem;">Typical work cycle:</p>
951
1015
 
952
1016
  <div class="code-block">
953
1017
  <button class="copy-btn">Copy</button>
954
- <pre><code># Creer une branche feature
1018
+ <pre><code># 1. Demarrer une branche
955
1019
  /gitflow:10-start feature ma-fonctionnalite
956
1020
 
957
- # Commiter vos changements
1021
+ # 2. Coder... puis commiter regulierement
958
1022
  /gitflow:3-commit
959
1023
 
960
- # Finaliser la feature
1024
+ # 3. Creer une Pull Request quand c'est pret
1025
+ /gitflow:7-pull-request
1026
+
1027
+ # 4. Finaliser apres le merge
961
1028
  /gitflow:11-finish</code></pre>
962
1029
  </div>
1030
+
1031
+ <div class="alert alert-info" style="margin-top: 1rem;">
1032
+ <span class="alert-icon">&#128218;</span>
1033
+ <div class="alert-content">
1034
+ <p data-lang="fr"><strong>Guide complet :</strong> Consultez le <a href="gitflow.html#workflow-decision" style="color: var(--primary);">schema decisonnel GitFlow</a> pour visualiser le workflow complet et choisir la bonne commande selon votre situation.</p>
1035
+ <p data-lang="en"><strong>Complete guide:</strong> See the <a href="gitflow.html#workflow-decision" style="color: var(--primary);">GitFlow decision diagram</a> to visualize the complete workflow and choose the right command for your situation.</p>
1036
+ </div>
1037
+ </div>
963
1038
  </div>
964
1039
 
965
1040
  <!-- Links to documentation -->
@@ -1,6 +1,15 @@
1
1
  {
2
2
  "$schema": "https://atlashub.ch/schemas/claude-gitflow-config.json",
3
- "version": "1.1.0",
3
+ "version": "2.0.0",
4
+ "worktrees": {
5
+ "enabled": true,
6
+ "mode": "organized",
7
+ "structure": {
8
+ "features": "../features",
9
+ "releases": "../releases",
10
+ "hotfixes": "../hotfixes"
11
+ }
12
+ },
4
13
  "git": {
5
14
  "branches": {
6
15
  "main": "main",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlashub/smartstack-cli",
3
- "version": "1.14.0",
3
+ "version": "1.14.2",
4
4
  "description": "SmartStack Claude Code automation toolkit - GitFlow, APEX, EF Core migrations, prompts and more",
5
5
  "author": {
6
6
  "name": "SmartStack",
@@ -64,16 +64,16 @@ grep -oP '"version":\s*"\K[^"]+' package.json
64
64
  find Migrations -name "core_*.cs" | grep -v Designer | grep -v Snapshot
65
65
 
66
66
  # Existing migrations for Extensions
67
- find Migrations -name "ext_*.cs" | grep -v Designer | grep -v Snapshot
67
+ find Persistence/Migrations -name "ext_*.cs" | grep -v Designer | grep -v Snapshot
68
68
 
69
69
  # Create Core migration
70
- dotnet ef migrations add $MIGRATION_NAME --context CoreDbContext
70
+ dotnet ef migrations add $MIGRATION_NAME --context CoreDbContext -o Persistence/Migrations
71
71
 
72
72
  # Create Extensions migration
73
- dotnet ef migrations add $MIGRATION_NAME --context ExtensionsDbContext
73
+ dotnet ef migrations add $MIGRATION_NAME --context ExtensionsDbContext -o Persistence/Migrations
74
74
 
75
75
  # Delete
76
- rm Migrations/*${OLD_NAME}*.cs
76
+ rm Persistence/Migrations/*${OLD_NAME}*.cs
77
77
  ```
78
78
 
79
79
  ## Context Detection
@@ -11,7 +11,7 @@ detect_efcore_project() {
11
11
  CSPROJ=$(find . -name "*.csproj" -exec grep -l "Microsoft.EntityFrameworkCore" {} \; | head -1)
12
12
  PROJECT_DIR=$(dirname "$CSPROJ")
13
13
  PROJECT_NAME=$(basename "$CSPROJ" .csproj)
14
- MIGRATIONS_DIR="$PROJECT_DIR/Migrations"
14
+ MIGRATIONS_DIR="$PROJECT_DIR/Persistence/Migrations"
15
15
 
16
16
  STARTUP_PROJECT=$(find . -name "*.Api.csproj" -o -name "*Web.csproj" | head -1)
17
17
  INFRA_PROJECT=$(find . -name "*Infrastructure.csproj" | head -1)
@@ -93,7 +93,7 @@ AskUserQuestion({
93
93
  ## STEP 5: Création
94
94
 
95
95
  ```bash
96
- dotnet ef migrations add "$MIGRATION_NAME" --verbose
96
+ dotnet ef migrations add "$MIGRATION_NAME" -o Persistence/Migrations --verbose
97
97
  ```
98
98
 
99
99
  ---
@@ -71,7 +71,7 @@ done
71
71
 
72
72
  ```bash
73
73
  MIGRATION_NAME="${BRANCH_TYPE}_${VERSION}_${BRANCH_NAME}_Consolidated"
74
- dotnet ef migrations add "$MIGRATION_NAME" --verbose
74
+ dotnet ef migrations add "$MIGRATION_NAME" -o Persistence/Migrations --verbose
75
75
  ```
76
76
 
77
77
  ---
@@ -165,6 +165,7 @@ esac
165
165
  dotnet ef migrations add "$MIGRATION_NAME" \
166
166
  --project "$INFRA_PROJECT" \
167
167
  --startup-project "$STARTUP_PROJECT" \
168
+ -o Persistence/Migrations \
168
169
  --verbose
169
170
  ```
170
171
 
@@ -109,9 +109,32 @@ if (entity.UserType == UserType.System || entity.UserType == UserType.LocalAdmin
109
109
 
110
110
  ## MCP Tools References
111
111
 
112
- | Tool | Usage |
113
- |------|-------|
114
- | `mcp__smartstack__validate_conventions` | Validate conventions |
115
- | `mcp__smartstack__scaffold_extension` | Code generation |
116
- | `mcp__smartstack__check_migrations` | Check migrations |
117
- | `mcp__smartstack__scaffold_tests` | Generate tests |
112
+ ### Outils Core
113
+
114
+ | Tool | Usage | Step APEX |
115
+ |------|-------|-----------|
116
+ | `mcp__smartstack__validate_conventions` | Valider conventions SmartStack (tables, migrations, services, namespaces, entities, tenants, controllers) | step-04-validate |
117
+ | `mcp__smartstack__scaffold_extension` | Génération code (feature, entity, service, controller, component, dto, validator, repository) | step-03-execute |
118
+ | `mcp__smartstack__check_migrations` | Analyser migrations EF Core (conflits, ordre, ModelSnapshot) | step-04-validate |
119
+ | `mcp__smartstack__api_docs` | Documentation API depuis Swagger/OpenAPI ou controllers | step-01-analyze |
120
+ | `mcp__smartstack__suggest_migration` | Suggérer nom migration ({context}_v{version}_{sequence}_{Description}) | step-03-execute |
121
+ | `mcp__smartstack__generate_permissions` | Générer permissions RBAC depuis NavRoute | step-03-execute |
122
+
123
+ ### Outils Tests
124
+
125
+ | Tool | Usage | Step APEX |
126
+ |------|-------|-----------|
127
+ | `mcp__smartstack__scaffold_tests` | Générer tests unitaires/intégration/sécurité | step-07-tests |
128
+ | `mcp__smartstack__analyze_test_coverage` | Analyser couverture de tests du projet | step-07-tests |
129
+ | `mcp__smartstack__validate_test_conventions` | Valider conventions de nommage des tests | step-07-tests |
130
+ | `mcp__smartstack__suggest_test_scenarios` | Suggérer scénarios de test basés sur le code | step-07-tests |
131
+
132
+ ### Outils Frontend
133
+
134
+ | Tool | Usage | Step APEX |
135
+ |------|-------|-----------|
136
+ | `mcp__smartstack__scaffold_api_client` | Générer client TypeScript avec NavRoute | step-03-execute |
137
+ | `mcp__smartstack__scaffold_routes` | Générer React Router depuis NavRoute backend | step-03-execute |
138
+ | `mcp__smartstack__validate_frontend_routes` | Valider synchronisation routes frontend/backend | step-04-validate |
139
+ | `mcp__smartstack__scaffold_frontend_extension` | Générer infrastructure extension frontend | step-03-execute |
140
+ | `mcp__smartstack__analyze_extension_points` | Analyser points d'extension dans les pages React | step-01-analyze |
@@ -225,6 +225,62 @@ When provided, step-00 will:
225
225
  - **Use parallel agents** for independent exploration tasks (unless economy_mode)
226
226
  </execution_rules>
227
227
 
228
+ <mcp_requirements>
229
+ **SmartStack MCP Integration:**
230
+
231
+ APEX est fortement couplé au développement SmartStack via les outils MCP.
232
+ Référence complète dans `_shared.md` section "MCP Tools References".
233
+
234
+ ### Outils obligatoires (chaque exécution APEX)
235
+
236
+ | Tool | Quand | Step |
237
+ |------|-------|------|
238
+ | `mcp__smartstack__api_docs` | Analyse contexte API existant | step-01-analyze |
239
+ | `mcp__smartstack__validate_conventions` | Validation finale du code généré | step-04-validate |
240
+
241
+ ### Outils conditionnels (step-03-execute)
242
+
243
+ | Tool | Condition |
244
+ |------|-----------|
245
+ | `mcp__smartstack__scaffold_extension` | Génération entités/services/controllers |
246
+ | `mcp__smartstack__suggest_migration` | Création nouvelle migration EF Core |
247
+ | `mcp__smartstack__generate_permissions` | Génération permissions RBAC |
248
+ | `mcp__smartstack__scaffold_api_client` | Génération client TypeScript |
249
+ | `mcp__smartstack__scaffold_routes` | Génération routes React Router |
250
+
251
+ ### Outils conditionnels (step-04-validate)
252
+
253
+ | Tool | Condition |
254
+ |------|-----------|
255
+ | `mcp__smartstack__check_migrations` | Si modifications EF Core détectées |
256
+ | `mcp__smartstack__validate_frontend_routes` | Si code frontend généré |
257
+
258
+ ### Outils tests (step-07-tests, si `-t`)
259
+
260
+ | Tool | Usage |
261
+ |------|-------|
262
+ | `mcp__smartstack__scaffold_tests` | Générer tests unitaires/intégration |
263
+ | `mcp__smartstack__suggest_test_scenarios` | Suggérer scénarios de test |
264
+ | `mcp__smartstack__analyze_test_coverage` | Analyser couverture existante |
265
+
266
+ ### Outils analyse (step-01-analyze)
267
+
268
+ | Tool | Usage |
269
+ |------|-------|
270
+ | `mcp__smartstack__analyze_extension_points` | Identifier points d'extension React |
271
+
272
+ ### Vérification MCP (step-00)
273
+
274
+ Au démarrage, vérifier la disponibilité du MCP SmartStack :
275
+ - Si disponible : utiliser les outils MCP pour génération et validation
276
+ - Si indisponible : avertir l'utilisateur, continuer en mode dégradé (outils manuels)
277
+
278
+ ### Mode économie (`-e`)
279
+
280
+ En mode économie, les outils MCP restent disponibles mais les subagents sont désactivés.
281
+ Privilégier les outils MCP (`scaffold_*`) pour la génération plutôt que l'écriture manuelle.
282
+ </mcp_requirements>
283
+
228
284
  <success_criteria>
229
285
 
230
286
  - Each step loaded progressively
@@ -50,7 +50,24 @@ From the task description, identify:
50
50
 
51
51
  These keywords guide exploration - NOT planning.
52
52
 
53
- ### 2. Explore Codebase
53
+ ### 2. SmartStack MCP Context (if available)
54
+
55
+ **Use MCP tools for SmartStack-specific context:**
56
+
57
+ ```
58
+ mcp__smartstack__api_docs:
59
+ format: "markdown"
60
+ # Récupère la documentation API existante
61
+ # Identifie les endpoints, DTOs, et patterns utilisés
62
+ ```
63
+
64
+ This provides:
65
+ - Existing API endpoints and their structure
66
+ - DTOs and request/response models
67
+ - Controller patterns and conventions
68
+ - NavRoute hierarchy
69
+
70
+ ### 3. Explore Codebase
54
71
 
55
72
  **If `{economy_mode}` = true:**
56
73
 
@@ -98,7 +115,7 @@ Find:
98
115
  3. Known pitfalls or gotchas
99
116
  ```
100
117
 
101
- ### 3. Synthesize Findings
118
+ ### 4. Synthesize Findings
102
119
 
103
120
  Combine results into structured context:
104
121
 
@@ -140,7 +157,7 @@ Combine results into structured context:
140
157
  - Use httpOnly cookies for tokens
141
158
  ```
142
159
 
143
- ### 4. Infer Acceptance Criteria
160
+ ### 5. Infer Acceptance Criteria
144
161
 
145
162
  Based on task and context, infer success criteria:
146
163
 
@@ -156,7 +173,7 @@ Based on "{task_description}" and existing patterns:
156
173
  _These will be refined in the planning step._
157
174
  ```
158
175
 
159
- ### 5. Save Output (if save_mode)
176
+ ### 6. Save Output (if save_mode)
160
177
 
161
178
  **If `{save_mode}` = true:**
162
179
 
@@ -165,7 +182,7 @@ Write findings to `{output_dir}/01-analyze.md`:
165
182
  - Add timestamp at the end
166
183
  - Update 00-context.md Progress table: 01-analyze -> Complete
167
184
 
168
- ### 6. Present Context Summary
185
+ ### 7. Present Context Summary
169
186
 
170
187
  ```
171
188
  **Context Gathering Complete**
@@ -85,7 +85,33 @@ pnpm run test
85
85
  3. Fix the root cause
86
86
  4. Re-run until passing
87
87
 
88
- ### 3. Self-Audit Checklist
88
+ ### 3. SmartStack Convention Validation (if MCP available)
89
+
90
+ **Use MCP to validate SmartStack conventions:**
91
+
92
+ ```
93
+ mcp__smartstack__validate_conventions:
94
+ checks: ["all"]
95
+ # Valide: tables, migrations, services, namespaces, entities, tenants, controllers
96
+ ```
97
+
98
+ **If EF Core changes detected, also run:**
99
+
100
+ ```
101
+ mcp__smartstack__check_migrations:
102
+ # Vérifie conflits, ordre chronologique, ModelSnapshot
103
+ ```
104
+
105
+ **MCP validation checks:**
106
+ - [ ] Table naming (domain prefixes: auth_, nav_, cfg_, etc.)
107
+ - [ ] Migration naming ({context}_v{version}_{sequence}_{Description})
108
+ - [ ] Service interfaces (I*Service pattern)
109
+ - [ ] Namespace structure (Domain → Application → Infrastructure → API)
110
+ - [ ] Entity conventions (base classes, soft delete, audit)
111
+ - [ ] Tenant isolation (ITenantEntity where required)
112
+ - [ ] Controller routes (NavRoute attributes)
113
+
114
+ ### 4. Self-Audit Checklist
89
115
 
90
116
  Verify each item:
91
117
 
@@ -109,14 +135,14 @@ Verify each item:
109
135
  - [ ] Error handling consistent
110
136
  - [ ] Naming conventions match
111
137
 
112
- ### 4. Format Code
138
+ ### 5. Format Code
113
139
 
114
140
  If format command available:
115
141
  ```bash
116
142
  pnpm run format
117
143
  ```
118
144
 
119
- ### 5. Final Verification
145
+ ### 6. Final Verification
120
146
 
121
147
  Re-run all checks:
122
148
  ```bash
@@ -125,7 +151,7 @@ pnpm run typecheck && pnpm run lint
125
151
 
126
152
  Both MUST pass.
127
153
 
128
- ### 6. Present Validation Results
154
+ ### 7. Present Validation Results
129
155
 
130
156
  ```
131
157
  **Validation Complete**
@@ -144,7 +170,7 @@ Both MUST pass.
144
170
  **Summary:** All checks passing, ready for next step.
145
171
  ```
146
172
 
147
- ### 7. Save Output (if save_mode)
173
+ ### 8. Save Output (if save_mode)
148
174
 
149
175
  **If `{save_mode}` = true:**
150
176
 
@@ -154,7 +180,7 @@ Write to `{output_dir}/04-validate.md`:
154
180
  - Timestamp
155
181
  - Update 00-context.md Progress table: 04-validate -> Complete
156
182
 
157
- ### 8. Determine Next Step
183
+ ### 9. Determine Next Step
158
184
 
159
185
  **Decision tree:**
160
186