@atlashub/smartstack-cli 1.23.0 → 1.25.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 (46) hide show
  1. package/.documentation/agents.html +3 -3
  2. package/.documentation/apex.html +18 -18
  3. package/.documentation/business-analyse.html +38 -38
  4. package/.documentation/cli-commands.html +1 -1
  5. package/.documentation/commands.html +29 -29
  6. package/.documentation/efcore.html +246 -91
  7. package/.documentation/gitflow.html +1 -1
  8. package/.documentation/hooks.html +1 -1
  9. package/.documentation/index.html +8 -8
  10. package/.documentation/init.html +1 -1
  11. package/.documentation/installation.html +9 -9
  12. package/.documentation/ralph-loop.html +2 -2
  13. package/.documentation/test-web.html +2 -2
  14. package/dist/index.js +13 -0
  15. package/dist/index.js.map +1 -1
  16. package/package.json +1 -1
  17. package/templates/skills/check-version/SKILL.md +183 -0
  18. package/templates/skills/debug/SKILL.md +161 -0
  19. package/templates/skills/explore/SKILL.md +96 -0
  20. package/templates/skills/quick-search/SKILL.md +87 -0
  21. package/templates/skills/refactor/SKILL.md +219 -0
  22. package/templates/skills/review-code/SKILL.md +72 -44
  23. package/templates/skills/review-code/references/smartstack-conventions.md +93 -33
  24. package/templates/skills/ui-components/responsive-guidelines.md +278 -0
  25. package/templates/skills/utils/SKILL.md +37 -0
  26. package/templates/{commands/utils → skills/utils/subcommands}/test-web-config.md +35 -43
  27. package/templates/{commands/utils → skills/utils/subcommands}/test-web.md +25 -53
  28. package/templates/{commands/validate.md → skills/validate/SKILL.md} +80 -139
  29. package/templates/commands/check-version.md +0 -267
  30. package/templates/commands/debug.md +0 -95
  31. package/templates/commands/efcore/_env-check.md +0 -153
  32. package/templates/commands/efcore/_shared.md +0 -352
  33. package/templates/commands/efcore/conflicts.md +0 -90
  34. package/templates/commands/efcore/db-deploy.md +0 -109
  35. package/templates/commands/efcore/db-reset.md +0 -180
  36. package/templates/commands/efcore/db-seed.md +0 -103
  37. package/templates/commands/efcore/db-status.md +0 -102
  38. package/templates/commands/efcore/migration.md +0 -186
  39. package/templates/commands/efcore/rebase-snapshot.md +0 -172
  40. package/templates/commands/efcore/scan.md +0 -94
  41. package/templates/commands/efcore/squash.md +0 -329
  42. package/templates/commands/efcore.md +0 -96
  43. package/templates/commands/explore.md +0 -45
  44. package/templates/commands/quick-search.md +0 -72
  45. package/templates/commands/refactor.md +0 -164
  46. /package/templates/{commands → skills}/_resources/formatting-guide.md +0 -0
@@ -12,7 +12,7 @@
12
12
  <header class="global-header">
13
13
  <div class="logo">SS</div>
14
14
  <span class="site-title">SmartStack CLI</span>
15
- <span class="version-badge">v1.14.0</span>
15
+ <span class="version-badge">v1.25.0</span>
16
16
  <div class="header-divider"></div>
17
17
  <span class="page-title">EF Core Migrations</span>
18
18
  <nav class="breadcrumb">
@@ -94,6 +94,10 @@
94
94
  <span data-lang="fr">Comprendre EF Core</span>
95
95
  <span data-lang="en">Understanding EF Core</span>
96
96
  </a>
97
+ <a href="#dual-dbcontext" class="sidebar-toc-link">
98
+ <span data-lang="fr">Dual DbContext</span>
99
+ <span data-lang="en">Dual DbContext</span>
100
+ </a>
97
101
  <a href="#one-migration-rule" class="sidebar-toc-link">
98
102
  <span data-lang="fr">1 Migration par Feature</span>
99
103
  <span data-lang="en">1 Migration per Feature</span>
@@ -198,7 +202,7 @@
198
202
  </thead>
199
203
  <tbody>
200
204
  <tr>
201
- <td><a href="#cmd-migration"><code>/efcore:migration</code></a></td>
205
+ <td><a href="#cmd-migration"><code>/efcore migration</code></a></td>
202
206
  <td>
203
207
  <span data-lang="fr">Creer/recreer la migration unique pour la branche</span>
204
208
  <span data-lang="en">Create/recreate the unique migration for the branch</span>
@@ -207,7 +211,7 @@
207
211
  <td><span class="tag tag-workflow">MEDIUM</span></td>
208
212
  </tr>
209
213
  <tr>
210
- <td><a href="#cmd-db-status"><code>/efcore:db-status</code></a></td>
214
+ <td><a href="#cmd-db-status"><code>/efcore db-status</code></a></td>
211
215
  <td>
212
216
  <span data-lang="fr">Afficher l'etat des migrations et de la DB</span>
213
217
  <span data-lang="en">Show migrations and database status</span>
@@ -216,7 +220,7 @@
216
220
  <td><span class="tag tag-command">READ</span></td>
217
221
  </tr>
218
222
  <tr>
219
- <td><a href="#cmd-db-deploy"><code>/efcore:db-deploy</code></a></td>
223
+ <td><a href="#cmd-db-deploy"><code>/efcore db-deploy</code></a></td>
220
224
  <td>
221
225
  <span data-lang="fr">Appliquer les migrations en attente</span>
222
226
  <span data-lang="en">Apply pending migrations</span>
@@ -225,7 +229,7 @@
225
229
  <td><span class="tag tag-workflow">MEDIUM</span></td>
226
230
  </tr>
227
231
  <tr>
228
- <td><a href="#cmd-db-seed"><code>/efcore:db-seed</code></a></td>
232
+ <td><a href="#cmd-db-seed"><code>/efcore db-seed</code></a></td>
229
233
  <td>
230
234
  <span data-lang="fr">Peupler la base avec des donnees de test</span>
231
235
  <span data-lang="en">Populate database with test data</span>
@@ -234,7 +238,7 @@
234
238
  <td><span class="tag tag-workflow">MEDIUM</span></td>
235
239
  </tr>
236
240
  <tr>
237
- <td><a href="#cmd-db-reset"><code>/efcore:db-reset</code></a></td>
241
+ <td><a href="#cmd-db-reset"><code>/efcore db-reset</code></a></td>
238
242
  <td>
239
243
  <span data-lang="fr">Supprimer et recreer la base (DESTRUCTIF)</span>
240
244
  <span data-lang="en">Drop and recreate database (DESTRUCTIVE)</span>
@@ -243,7 +247,7 @@
243
247
  <td><span class="tag tag-danger">HIGH</span></td>
244
248
  </tr>
245
249
  <tr>
246
- <td><a href="#cmd-scan"><code>/efcore:scan</code></a></td>
250
+ <td><a href="#cmd-scan"><code>/efcore scan</code></a></td>
247
251
  <td>
248
252
  <span data-lang="fr">Scanner les migrations sur toutes les branches</span>
249
253
  <span data-lang="en">Scan migrations across all branches</span>
@@ -252,7 +256,7 @@
252
256
  <td><span class="tag tag-command">READ</span></td>
253
257
  </tr>
254
258
  <tr>
255
- <td><a href="#cmd-conflicts"><code>/efcore:conflicts</code></a></td>
259
+ <td><a href="#cmd-conflicts"><code>/efcore conflicts</code></a></td>
256
260
  <td>
257
261
  <span data-lang="fr">Analyser les conflits avant merge (BLOQUANT)</span>
258
262
  <span data-lang="en">Analyze conflicts before merge (BLOCKING)</span>
@@ -261,7 +265,7 @@
261
265
  <td><span class="tag tag-command">READ</span></td>
262
266
  </tr>
263
267
  <tr>
264
- <td><a href="#cmd-rebase-snapshot"><code>/efcore:rebase-snapshot</code></a></td>
268
+ <td><a href="#cmd-rebase-snapshot"><code>/efcore rebase-snapshot</code></a></td>
265
269
  <td>
266
270
  <span data-lang="fr">Rebaser ModelSnapshot sur develop</span>
267
271
  <span data-lang="en">Rebase ModelSnapshot on develop</span>
@@ -270,7 +274,7 @@
270
274
  <td><span class="tag tag-warning">MEDIUM</span></td>
271
275
  </tr>
272
276
  <tr>
273
- <td><a href="#cmd-squash"><code>/efcore:squash</code></a></td>
277
+ <td><a href="#cmd-squash"><code>/efcore squash</code></a></td>
274
278
  <td>
275
279
  <span data-lang="fr">Fusionner plusieurs migrations en une seule</span>
276
280
  <span data-lang="en">Merge multiple migrations into one</span>
@@ -288,10 +292,10 @@
288
292
  <h5 data-lang="fr">Workflow typique</h5>
289
293
  <h5 data-lang="en">Typical Workflow</h5>
290
294
  <p data-lang="fr">
291
- <code>/efcore:db-status</code> → <code>/efcore:migration</code> → <code>/efcore:db-deploy</code> → <code>/gitflow:3-commit</code>
295
+ <code>/efcore db-status</code> → <code>/efcore migration</code> → <code>/efcore db-deploy</code> → <code>/gitflow 3-commit</code>
292
296
  </p>
293
297
  <p data-lang="en">
294
- <code>/efcore:db-status</code> → <code>/efcore:migration</code> → <code>/efcore:db-deploy</code> → <code>/gitflow:3-commit</code>
298
+ <code>/efcore db-status</code> → <code>/efcore migration</code> → <code>/efcore db-deploy</code> → <code>/gitflow 3-commit</code>
295
299
  </p>
296
300
  </div>
297
301
  </div>
@@ -315,10 +319,10 @@
315
319
  <h5 data-lang="fr">Integration automatique</h5>
316
320
  <h5 data-lang="en">Automatic Integration</h5>
317
321
  <p data-lang="fr">
318
- Claude Tools detecte automatiquement les projets .NET utilisant EF Core lors de l'initialisation avec <code>/gitflow:1-init</code>.
322
+ Claude Tools detecte automatiquement les projets .NET utilisant EF Core lors de l'initialisation avec <code>/gitflow 1-init</code>.
319
323
  </p>
320
324
  <p data-lang="en">
321
- Claude Tools automatically detects .NET projects using EF Core during initialization with <code>/gitflow:1-init</code>.
325
+ Claude Tools automatically detects .NET projects using EF Core during initialization with <code>/gitflow 1-init</code>.
322
326
  </p>
323
327
  </div>
324
328
  </div>
@@ -582,6 +586,130 @@
582
586
  </div>
583
587
  </section>
584
588
 
589
+ <!-- ============================================================ -->
590
+ <!-- SECTION: DUAL DBCONTEXT ARCHITECTURE -->
591
+ <!-- ============================================================ -->
592
+ <section id="dual-dbcontext">
593
+ <h2>
594
+ <span data-lang="fr">Architecture Dual DbContext</span>
595
+ <span data-lang="en">Dual DbContext Architecture</span>
596
+ </h2>
597
+
598
+ <p data-lang="fr">
599
+ SmartStack utilise <strong>deux DbContexts separes</strong> avec des historiques de migration independants. Cette architecture permet de separer le code plateforme (SmartStack) du code client.
600
+ </p>
601
+ <p data-lang="en">
602
+ SmartStack uses <strong>two separate DbContexts</strong> with independent migration histories. This architecture separates platform code (SmartStack) from client code.
603
+ </p>
604
+
605
+ <div class="table-container">
606
+ <table>
607
+ <thead>
608
+ <tr>
609
+ <th>Context</th>
610
+ <th>DbContext</th>
611
+ <th>Schema</th>
612
+ <th>History Table</th>
613
+ <th>
614
+ <span data-lang="fr">Utilisation</span>
615
+ <span data-lang="en">Use Case</span>
616
+ </th>
617
+ </tr>
618
+ </thead>
619
+ <tbody>
620
+ <tr>
621
+ <td><code>core</code></td>
622
+ <td><code>CoreDbContext</code></td>
623
+ <td><code>core</code></td>
624
+ <td><code>core.__EFMigrationsHistory</code></td>
625
+ <td>
626
+ <span data-lang="fr">Entites plateforme SmartStack (User, Role, Navigation, etc.)</span>
627
+ <span data-lang="en">SmartStack platform entities (User, Role, Navigation, etc.)</span>
628
+ </td>
629
+ </tr>
630
+ <tr>
631
+ <td><code>extensions</code></td>
632
+ <td><code>ExtensionsDbContext</code></td>
633
+ <td><code>extensions</code></td>
634
+ <td><code>extensions.__EFMigrationsHistory</code></td>
635
+ <td>
636
+ <span data-lang="fr">Entites specifiques au client</span>
637
+ <span data-lang="en">Client-specific entities</span>
638
+ </td>
639
+ </tr>
640
+ </tbody>
641
+ </table>
642
+ </div>
643
+
644
+ <h3 data-lang="fr">Detection automatique</h3>
645
+ <h3 data-lang="en">Automatic Detection</h3>
646
+
647
+ <p data-lang="fr">Le systeme detecte automatiquement quel DbContext utiliser :</p>
648
+ <p data-lang="en">The system automatically detects which DbContext to use:</p>
649
+
650
+ <ol class="steps-list">
651
+ <li>
652
+ <div class="step-content">
653
+ <p data-lang="fr">Si le projet contient <code>SmartStack.Domain</code> → <code>CoreDbContext</code></p>
654
+ <p data-lang="en">If project contains <code>SmartStack.Domain</code> → <code>CoreDbContext</code></p>
655
+ </div>
656
+ </li>
657
+ <li>
658
+ <div class="step-content">
659
+ <p data-lang="fr">Si le projet contient un <code>{ClientName}.Domain</code> avec NuGet SmartStack → <code>ExtensionsDbContext</code></p>
660
+ <p data-lang="en">If project contains <code>{ClientName}.Domain</code> with SmartStack NuGet → <code>ExtensionsDbContext</code></p>
661
+ </div>
662
+ </li>
663
+ <li>
664
+ <div class="step-content">
665
+ <p data-lang="fr">Si ambigue → demande a l'utilisateur</p>
666
+ <p data-lang="en">If ambiguous → asks user</p>
667
+ </div>
668
+ </li>
669
+ </ol>
670
+
671
+ <div class="alert alert-warning">
672
+ <span class="alert-icon">&#9888;</span>
673
+ <div class="alert-content">
674
+ <h5 data-lang="fr">Regles importantes</h5>
675
+ <h5 data-lang="en">Important Rules</h5>
676
+ <div class="feature-grid">
677
+ <div class="feature-item">
678
+ <span class="feature-icon">&#128274;</span>
679
+ <span class="feature-text" data-lang="fr">Les entites Extensions ne peuvent <strong>pas</strong> avoir de navigation properties vers les entites Core</span>
680
+ <span class="feature-text" data-lang="en">Extensions entities <strong>cannot</strong> have navigation properties to Core entities</span>
681
+ </div>
682
+ <div class="feature-item">
683
+ <span class="feature-icon">&#128279;</span>
684
+ <span class="feature-text" data-lang="fr">Utilisez <code>ICoreDataService</code> pour acceder aux donnees Core depuis Extensions</span>
685
+ <span class="feature-text" data-lang="en">Use <code>ICoreDataService</code> to access Core data from Extensions</span>
686
+ </div>
687
+ <div class="feature-item">
688
+ <span class="feature-icon">&#128451;</span>
689
+ <span class="feature-text" data-lang="fr">Chaque DbContext a sa propre table <code>__EFMigrationsHistory</code></span>
690
+ <span class="feature-text" data-lang="en">Each DbContext has its own <code>__EFMigrationsHistory</code> table</span>
691
+ </div>
692
+ <div class="feature-item">
693
+ <span class="feature-icon">&#128260;</span>
694
+ <span class="feature-text" data-lang="fr">Migrations appliquees dans l'ordre : Core d'abord, puis Extensions</span>
695
+ <span class="feature-text" data-lang="en">Migrations applied in order: Core first, then Extensions</span>
696
+ </div>
697
+ </div>
698
+ </div>
699
+ </div>
700
+
701
+ <div class="code-block">
702
+ <button class="copy-btn">Copy</button>
703
+ <pre><code># Core migrations (SmartStack platform)
704
+ dotnet ef migrations add $MCP_NAME --context CoreDbContext -o Persistence/Migrations
705
+
706
+ # Extensions migrations (Client specific)
707
+ dotnet ef migrations add $MCP_NAME --context ExtensionsDbContext -o Persistence/Migrations
708
+
709
+ # Note: $MCP_NAME is generated by mcp__smartstack__suggest_migration</code></pre>
710
+ </div>
711
+ </section>
712
+
585
713
  <!-- ============================================================ -->
586
714
  <!-- SECTION: REGLE 1 MIGRATION PAR FEATURE -->
587
715
  <!-- ============================================================ -->
@@ -667,47 +795,62 @@
667
795
  </table>
668
796
  </div>
669
797
 
670
- <h3 data-lang="fr">Pattern de nommage</h3>
671
- <h3 data-lang="en">Naming Pattern</h3>
798
+ <h3 data-lang="fr">Pattern de nommage (MCP obligatoire)</h3>
799
+ <h3 data-lang="en">Naming Pattern (MCP mandatory)</h3>
800
+
801
+ <div class="alert alert-info">
802
+ <span class="alert-icon">&#128274;</span>
803
+ <div class="alert-content">
804
+ <h5 data-lang="fr">Nommage via MCP</h5>
805
+ <h5 data-lang="en">Naming via MCP</h5>
806
+ <p data-lang="fr">
807
+ Le nom de migration est <strong>toujours genere par le MCP</strong> via <code>mcp__smartstack__suggest_migration</code>. Ne jamais calculer le nom manuellement.
808
+ </p>
809
+ <p data-lang="en">
810
+ Migration name is <strong>always generated by MCP</strong> via <code>mcp__smartstack__suggest_migration</code>. Never calculate the name manually.
811
+ </p>
812
+ </div>
813
+ </div>
672
814
 
673
815
  <div class="code-block">
674
- <pre><code>{BranchType}_{Version}_{BranchName}_{Description}</code></pre>
816
+ <pre><code>{context}_v{version}_{sequence}_{Description}</code></pre>
675
817
  </div>
676
818
 
677
819
  <div class="table-container">
678
820
  <table>
679
821
  <thead>
680
822
  <tr>
681
- <th>
682
- <span data-lang="fr">Branche</span>
683
- <span data-lang="en">Branch</span>
684
- </th>
823
+ <th>Context</th>
685
824
  <th>Version</th>
825
+ <th>Sequence</th>
686
826
  <th>Description</th>
687
827
  <th>
688
- <span data-lang="fr">Nom genere</span>
689
- <span data-lang="en">Generated name</span>
828
+ <span data-lang="fr">Nom genere (MCP)</span>
829
+ <span data-lang="en">Generated name (MCP)</span>
690
830
  </th>
691
831
  </tr>
692
832
  </thead>
693
833
  <tbody>
694
834
  <tr>
695
- <td><code>feature/user-auth</code></td>
696
- <td>1.2.0</td>
697
- <td>AddRolesTable</td>
698
- <td><code>Feature_1_2_0_UserAuth_AddRolesTable</code></td>
835
+ <td><code>core</code></td>
836
+ <td>1.9.0</td>
837
+ <td>001</td>
838
+ <td>AddUserRoles</td>
839
+ <td><code>core_v1.9.0_001_AddUserRoles</code></td>
699
840
  </tr>
700
841
  <tr>
701
- <td><code>hotfix/login-fix</code></td>
702
- <td>1.2.1</td>
703
- <td>FixNullEmail</td>
704
- <td><code>Hotfix_1_2_1_LoginFix_FixNullEmail</code></td>
842
+ <td><code>extensions</code></td>
843
+ <td>1.2.0</td>
844
+ <td>001</td>
845
+ <td>AddCustomFields</td>
846
+ <td><code>extensions_v1.2.0_001_AddCustomFields</code></td>
705
847
  </tr>
706
848
  <tr>
707
- <td><code>release/v1.3.0</code></td>
708
- <td>1.3.0</td>
709
- <td>Initial</td>
710
- <td><code>Release_1_3_0_Initial</code></td>
849
+ <td><code>core</code></td>
850
+ <td>1.7.0</td>
851
+ <td>001</td>
852
+ <td>UserAuthConsolidated</td>
853
+ <td><code>core_v1.7.0_001_UserAuthConsolidated</code></td>
711
854
  </tr>
712
855
  </tbody>
713
856
  </table>
@@ -721,21 +864,21 @@
721
864
  <pre><code># Situation: You already have a migration and need to modify the model
722
865
 
723
866
  # 1. Check current state
724
- /efcore:db-status
867
+ /efcore db-status
725
868
 
726
869
  # 2. See there's already 1 migration for this branch
727
870
  # Output: "1 migration for feature/user-auth"
728
871
 
729
872
  # 3. Create/Recreate migration (deletes old one automatically)
730
- /efcore:migration
873
+ /efcore migration
731
874
 
732
875
  # 4. Choose "Recreate" when prompted
733
876
  # 5. Enter description (e.g., "AddRolesTable")
734
877
  # 6. Apply to local DB
735
- /efcore:db-deploy
878
+ /efcore db-deploy
736
879
 
737
880
  # 7. Commit
738
- /gitflow:3-commit</code></pre>
881
+ /gitflow 3-commit</code></pre>
739
882
  </div>
740
883
  </section>
741
884
 
@@ -755,10 +898,10 @@
755
898
  Claude Tools provides 9 specialized commands for EF Core migration management. Each command uses a dedicated agent optimized for its task.
756
899
  </p>
757
900
 
758
- <!-- ==================== /efcore:migration ==================== -->
901
+ <!-- ==================== /efcore migration ==================== -->
759
902
  <div class="command-card" id="cmd-migration">
760
903
  <div class="command-header">
761
- <code class="command-name">/efcore:migration</code>
904
+ <code class="command-name">/efcore migration</code>
762
905
  <span class="tag tag-workflow">MEDIUM</span>
763
906
  </div>
764
907
  <div class="command-body">
@@ -975,18 +1118,18 @@
975
1118
  <div class="code-block">
976
1119
  <button class="copy-btn">Copy</button>
977
1120
  <pre><code># Usage example
978
- /efcore:migration
1121
+ /efcore migration
979
1122
 
980
1123
  # With options
981
- /efcore:migration --force --no-apply</code></pre>
1124
+ /efcore migration --force --no-apply</code></pre>
982
1125
  </div>
983
1126
  </div>
984
1127
  </div>
985
1128
 
986
- <!-- ==================== /efcore:db-status ==================== -->
1129
+ <!-- ==================== /efcore db-status ==================== -->
987
1130
  <div class="command-card" id="cmd-db-status">
988
1131
  <div class="command-header">
989
- <code class="command-name">/efcore:db-status</code>
1132
+ <code class="command-name">/efcore db-status</code>
990
1133
  <span class="tag tag-command">READ</span>
991
1134
  </div>
992
1135
  <div class="command-body">
@@ -1112,10 +1255,10 @@ REGLE "1 MIGRATION PAR FEATURE"
1112
1255
  </div>
1113
1256
  </div>
1114
1257
 
1115
- <!-- ==================== /efcore:db-deploy ==================== -->
1258
+ <!-- ==================== /efcore db-deploy ==================== -->
1116
1259
  <div class="command-card" id="cmd-db-deploy">
1117
1260
  <div class="command-header">
1118
- <code class="command-name">/efcore:db-deploy</code>
1261
+ <code class="command-name">/efcore db-deploy</code>
1119
1262
  <span class="tag tag-workflow">MEDIUM</span>
1120
1263
  </div>
1121
1264
  <div class="command-body">
@@ -1168,7 +1311,7 @@ REGLE "1 MIGRATION PAR FEATURE"
1168
1311
  <div class="code-block">
1169
1312
  <button class="copy-btn">Copy</button>
1170
1313
  <pre><code># Deploy migrations
1171
- /efcore:db-deploy
1314
+ /efcore db-deploy
1172
1315
 
1173
1316
  # Equivalent to:
1174
1317
  dotnet ef database update --verbose</code></pre>
@@ -1211,18 +1354,18 @@ dotnet ef database update --verbose</code></pre>
1211
1354
  </div>
1212
1355
  </div>
1213
1356
 
1214
- <!-- ==================== /efcore:db-seed ==================== -->
1357
+ <!-- ==================== /efcore db-seed ==================== -->
1215
1358
  <div class="command-card" id="cmd-db-seed">
1216
1359
  <div class="command-header">
1217
- <code class="command-name">/efcore:db-seed</code>
1360
+ <code class="command-name">/efcore db-seed</code>
1218
1361
  <span class="tag tag-workflow">MEDIUM</span>
1219
1362
  </div>
1220
1363
  <div class="command-body">
1221
1364
  <p data-lang="fr">
1222
- Cette commande peuple la base de donnees avec des donnees de test ou initiales pour le developpement local. Elle detecte automatiquement les methodes de seeding disponibles dans le projet : classe Seeder dediee, methode HasData() dans le DbContext, script SQL seed.sql, ou argument CLI --seed. Elle vous propose ensuite de choisir la methode a utiliser. Ideale apres un /efcore:db-reset ou pour initialiser un nouvel environnement de developpement avec des donnees coherentes.
1365
+ Cette commande peuple la base de donnees avec des donnees de test ou initiales pour le developpement local. Elle detecte automatiquement les methodes de seeding disponibles dans le projet : classe Seeder dediee, methode HasData() dans le DbContext, script SQL seed.sql, ou argument CLI --seed. Elle vous propose ensuite de choisir la methode a utiliser. Ideale apres un /efcore db-reset ou pour initialiser un nouvel environnement de developpement avec des donnees coherentes.
1223
1366
  </p>
1224
1367
  <p data-lang="en">
1225
- This command populates the database with test or initial data for local development. It automatically detects available seeding methods in the project: dedicated Seeder class, HasData() method in DbContext, seed.sql SQL script, or CLI --seed argument. It then offers you to choose which method to use. Ideal after /efcore:db-reset or to initialize a new development environment with consistent data.
1368
+ This command populates the database with test or initial data for local development. It automatically detects available seeding methods in the project: dedicated Seeder class, HasData() method in DbContext, seed.sql SQL script, or CLI --seed argument. It then offers you to choose which method to use. Ideal after /efcore db-reset or to initialize a new development environment with consistent data.
1226
1369
  </p>
1227
1370
 
1228
1371
  <div class="table-container">
@@ -1296,7 +1439,7 @@ dotnet ef database update --verbose</code></pre>
1296
1439
  <div class="code-block">
1297
1440
  <button class="copy-btn">Copy</button>
1298
1441
  <pre><code># Execute seeding
1299
- /efcore:db-seed
1442
+ /efcore db-seed
1300
1443
 
1301
1444
  # The agent automatically detects available methods
1302
1445
  # and offers you a choice</code></pre>
@@ -1304,10 +1447,10 @@ dotnet ef database update --verbose</code></pre>
1304
1447
  </div>
1305
1448
  </div>
1306
1449
 
1307
- <!-- ==================== /efcore:db-reset ==================== -->
1450
+ <!-- ==================== /efcore db-reset ==================== -->
1308
1451
  <div class="command-card" id="cmd-db-reset">
1309
1452
  <div class="command-header">
1310
- <code class="command-name">/efcore:db-reset</code>
1453
+ <code class="command-name">/efcore db-reset</code>
1311
1454
  <span class="tag tag-danger">HIGH - DESTRUCTIVE</span>
1312
1455
  </div>
1313
1456
  <div class="command-body">
@@ -1374,7 +1517,7 @@ dotnet ef database update --verbose</code></pre>
1374
1517
  <div class="code-block">
1375
1518
  <button class="copy-btn">Copy</button>
1376
1519
  <pre><code># Complete database reset
1377
- /efcore:db-reset
1520
+ /efcore db-reset
1378
1521
 
1379
1522
  # Workflow:
1380
1523
  # 1. Mandatory confirmation
@@ -1386,10 +1529,10 @@ dotnet ef database update --verbose</code></pre>
1386
1529
  </div>
1387
1530
  </div>
1388
1531
 
1389
- <!-- ==================== /efcore:scan ==================== -->
1532
+ <!-- ==================== /efcore scan ==================== -->
1390
1533
  <div class="command-card" id="cmd-scan">
1391
1534
  <div class="command-header">
1392
- <code class="command-name">/efcore:scan</code>
1535
+ <code class="command-name">/efcore scan</code>
1393
1536
  <span class="tag tag-command">READ</span>
1394
1537
  </div>
1395
1538
  <div class="command-body">
@@ -1566,18 +1709,18 @@ ORDRE DE MERGE RECOMMANDE
1566
1709
  </div>
1567
1710
  </div>
1568
1711
 
1569
- <!-- ==================== /efcore:conflicts ==================== -->
1712
+ <!-- ==================== /efcore conflicts ==================== -->
1570
1713
  <div class="command-card" id="cmd-conflicts">
1571
1714
  <div class="command-header">
1572
- <code class="command-name">/efcore:conflicts</code>
1715
+ <code class="command-name">/efcore conflicts</code>
1573
1716
  <span class="tag tag-command">READ - BLOCKING</span>
1574
1717
  </div>
1575
1718
  <div class="command-body">
1576
1719
  <p data-lang="fr">
1577
- Cette commande analyse si la branche courante peut etre mergee dans develop sans conflit de migration EF Core. Elle compare le ModelSnapshot local avec celui de develop et des autres branches actives pour detecter les modifications qui se chevauchent : tables communes modifiees, colonnes identiques ajoutees, ou FK vers les memes entites. Si un conflit HIGH ou CRITICAL est detecte, la commande est BLOQUANTE et retourne un code d'erreur, empechant le merge. Elle recommande alors d'utiliser /efcore:rebase-snapshot pour resoudre le conflit avant de continuer.
1720
+ Cette commande analyse si la branche courante peut etre mergee dans develop sans conflit de migration EF Core. Elle compare le ModelSnapshot local avec celui de develop et des autres branches actives pour detecter les modifications qui se chevauchent : tables communes modifiees, colonnes identiques ajoutees, ou FK vers les memes entites. Si un conflit HIGH ou CRITICAL est detecte, la commande est BLOQUANTE et retourne un code d'erreur, empechant le merge. Elle recommande alors d'utiliser /efcore rebase-snapshot pour resoudre le conflit avant de continuer.
1578
1721
  </p>
1579
1722
  <p data-lang="en">
1580
- This command analyzes if the current branch can be merged into develop without EF Core migration conflict. It compares local ModelSnapshot with develop's and other active branches to detect overlapping modifications: common tables modified, identical columns added, or FK to same entities. If a HIGH or CRITICAL conflict is detected, the command is BLOCKING and returns an error code, preventing merge. It then recommends using /efcore:rebase-snapshot to resolve the conflict before continuing.
1723
+ This command analyzes if the current branch can be merged into develop without EF Core migration conflict. It compares local ModelSnapshot with develop's and other active branches to detect overlapping modifications: common tables modified, identical columns added, or FK to same entities. If a HIGH or CRITICAL conflict is detected, the command is BLOCKING and returns an error code, preventing merge. It then recommends using /efcore rebase-snapshot to resolve the conflict before continuing.
1581
1724
  </p>
1582
1725
 
1583
1726
  <div class="table-container">
@@ -1642,11 +1785,11 @@ ORDRE DE MERGE RECOMMANDE
1642
1785
  <div class="code-block">
1643
1786
  <button class="copy-btn">Copy</button>
1644
1787
  <pre><code># Check conflicts before merge
1645
- /efcore:conflicts
1788
+ /efcore conflicts
1646
1789
 
1647
1790
  # If conflict detected:
1648
- # → /efcore:rebase-snapshot (recommended)
1649
- # → /efcore:conflicts --force (not recommended)</code></pre>
1791
+ # → /efcore rebase-snapshot (recommended)
1792
+ # → /efcore conflicts --force (not recommended)</code></pre>
1650
1793
  </div>
1651
1794
 
1652
1795
  <h4>Options</h4>
@@ -1693,18 +1836,18 @@ ORDRE DE MERGE RECOMMANDE
1693
1836
  </div>
1694
1837
  </div>
1695
1838
 
1696
- <!-- ==================== /efcore:rebase-snapshot ==================== -->
1839
+ <!-- ==================== /efcore rebase-snapshot ==================== -->
1697
1840
  <div class="command-card" id="cmd-rebase-snapshot">
1698
1841
  <div class="command-header">
1699
- <code class="command-name">/efcore:rebase-snapshot</code>
1842
+ <code class="command-name">/efcore rebase-snapshot</code>
1700
1843
  <span class="tag tag-warning">MEDIUM</span>
1701
1844
  </div>
1702
1845
  <div class="command-body">
1703
1846
  <p data-lang="fr">
1704
- Cette commande resout les conflits ModelSnapshot detectes par /efcore:conflicts en resynchronisant votre branche avec develop. Elle commence par creer un backup automatique de vos migrations, identifie les migrations specifiques a votre branche, remplace le ModelSnapshot par la version de develop, supprime vos migrations de branche, puis regenere une nouvelle migration consolidee qui inclut tous vos changements mais base sur le snapshot actuel de develop. En cas d'echec du build, elle peut restaurer automatiquement depuis le backup. C'est la solution recommandee quand un conflit HIGH est detecte.
1847
+ Cette commande resout les conflits ModelSnapshot detectes par /efcore conflicts en resynchronisant votre branche avec develop. Elle commence par creer un backup automatique de vos migrations, identifie les migrations specifiques a votre branche, remplace le ModelSnapshot par la version de develop, supprime vos migrations de branche, puis regenere une nouvelle migration consolidee qui inclut tous vos changements mais base sur le snapshot actuel de develop. En cas d'echec du build, elle peut restaurer automatiquement depuis le backup. C'est la solution recommandee quand un conflit HIGH est detecte.
1705
1848
  </p>
1706
1849
  <p data-lang="en">
1707
- This command resolves ModelSnapshot conflicts detected by /efcore:conflicts by resynchronizing your branch with develop. It starts by creating an automatic backup of your migrations, identifies branch-specific migrations, replaces ModelSnapshot with develop's version, deletes your branch migrations, then regenerates a new consolidated migration that includes all your changes but based on develop's current snapshot. On build failure, it can automatically restore from backup. This is the recommended solution when a HIGH conflict is detected.
1850
+ This command resolves ModelSnapshot conflicts detected by /efcore conflicts by resynchronizing your branch with develop. It starts by creating an automatic backup of your migrations, identifies branch-specific migrations, replaces ModelSnapshot with develop's version, deletes your branch migrations, then regenerates a new consolidated migration that includes all your changes but based on develop's current snapshot. On build failure, it can automatically restore from backup. This is the recommended solution when a HIGH conflict is detected.
1708
1851
  </p>
1709
1852
 
1710
1853
  <div class="table-container">
@@ -1860,7 +2003,7 @@ ORDRE DE MERGE RECOMMANDE
1860
2003
  </thead>
1861
2004
  <tbody>
1862
2005
  <tr>
1863
- <td><code>/efcore:conflicts</code> retourne HIGH</td>
2006
+ <td><code>/efcore conflicts</code> retourne HIGH</td>
1864
2007
  <td>
1865
2008
  <span data-lang="fr">Utiliser rebase-snapshot</span>
1866
2009
  <span data-lang="en">Use rebase-snapshot</span>
@@ -1937,10 +2080,10 @@ ORDRE DE MERGE RECOMMANDE
1937
2080
  </div>
1938
2081
  </div>
1939
2082
 
1940
- <!-- ==================== /efcore:squash ==================== -->
2083
+ <!-- ==================== /efcore squash ==================== -->
1941
2084
  <div class="command-card" id="cmd-squash">
1942
2085
  <div class="command-header">
1943
- <code class="command-name">/efcore:squash</code>
2086
+ <code class="command-name">/efcore squash</code>
1944
2087
  <span class="tag tag-danger">HIGH - DESTRUCTIVE</span>
1945
2088
  </div>
1946
2089
  <div class="command-body">
@@ -2119,16 +2262,16 @@ ORDRE DE MERGE RECOMMANDE
2119
2262
  <div class="code-block">
2120
2263
  <button class="copy-btn">Copy</button>
2121
2264
  <pre><code># 1. Scan all active branches
2122
- /efcore:scan
2265
+ /efcore scan
2123
2266
 
2124
2267
  # 2. Check conflicts before creating a migration
2125
- /efcore:conflicts
2268
+ /efcore conflicts
2126
2269
 
2127
2270
  # 3. If conflict detected, rebase on develop
2128
- /efcore:rebase-snapshot
2271
+ /efcore rebase-snapshot
2129
2272
 
2130
2273
  # 4. Create migration (automatic cross-branch validation)
2131
- /efcore:migration</code></pre>
2274
+ /efcore migration</code></pre>
2132
2275
  </div>
2133
2276
 
2134
2277
  <h3>Configuration</h3>
@@ -2171,8 +2314,8 @@ ORDRE DE MERGE RECOMMANDE
2171
2314
  <tr>
2172
2315
  <td><code>scanOnMigrationCreate</code></td>
2173
2316
  <td>
2174
- <span data-lang="fr">Scanner avant /efcore:migration</span>
2175
- <span data-lang="en">Scan before /efcore:migration</span>
2317
+ <span data-lang="fr">Scanner avant /efcore migration</span>
2318
+ <span data-lang="en">Scan before /efcore migration</span>
2176
2319
  </td>
2177
2320
  <td><code>true</code></td>
2178
2321
  </tr>
@@ -2212,8 +2355,8 @@ ORDRE DE MERGE RECOMMANDE
2212
2355
  <span data-lang="fr">Toujours commiter les 3 fichiers ensemble</span>
2213
2356
  <span data-lang="en">Always commit all 3 files together</span>
2214
2357
  </h4>
2215
- <p data-lang="fr">Ne jamais commiter une migration incomplete. <code>/gitflow:3-commit</code> valide automatiquement la presence des 3 fichiers.</p>
2216
- <p data-lang="en">Never commit an incomplete migration. <code>/gitflow:3-commit</code> automatically validates the presence of all 3 files.</p>
2358
+ <p data-lang="fr">Ne jamais commiter une migration incomplete. <code>/gitflow 3-commit</code> valide automatiquement la presence des 3 fichiers.</p>
2359
+ <p data-lang="en">Never commit an incomplete migration. <code>/gitflow 3-commit</code> automatically validates the presence of all 3 files.</p>
2217
2360
  </div>
2218
2361
 
2219
2362
  <div class="best-practice">
@@ -2241,8 +2384,8 @@ dotnet ef migrations add Update</code></pre>
2241
2384
  <span data-lang="fr">Verifier les operations destructives</span>
2242
2385
  <span data-lang="en">Check destructive operations</span>
2243
2386
  </h4>
2244
- <p data-lang="fr"><code>/gitflow:3-commit</code> detecte automatiquement et alerte sur les operations suivantes :</p>
2245
- <p data-lang="en"><code>/gitflow:3-commit</code> automatically detects and alerts on the following operations:</p>
2387
+ <p data-lang="fr"><code>/gitflow 3-commit</code> detecte automatiquement et alerte sur les operations suivantes :</p>
2388
+ <p data-lang="en"><code>/gitflow 3-commit</code> automatically detects and alerts on the following operations:</p>
2246
2389
 
2247
2390
  <div class="table-container">
2248
2391
  <table>
@@ -2373,7 +2516,7 @@ dotnet ef migrations script --idempotent -o ./scripts/migrations/v1.2.0.sql
2373
2516
  <div class="card-header">
2374
2517
  <div class="card-icon" style="background: var(--primary);">1</div>
2375
2518
  <div>
2376
- <div class="card-title">/gitflow:1-init</div>
2519
+ <div class="card-title">/gitflow 1-init</div>
2377
2520
  <div class="card-subtitle" data-lang="fr">Detection automatique</div>
2378
2521
  <div class="card-subtitle" data-lang="en">Automatic detection</div>
2379
2522
  </div>
@@ -2388,7 +2531,7 @@ dotnet ef migrations script --idempotent -o ./scripts/migrations/v1.2.0.sql
2388
2531
  <div class="card-header">
2389
2532
  <div class="card-icon" style="background: var(--success);">3</div>
2390
2533
  <div>
2391
- <div class="card-title">/gitflow:3-commit</div>
2534
+ <div class="card-title">/gitflow 3-commit</div>
2392
2535
  <div class="card-subtitle" data-lang="fr">Validation des migrations</div>
2393
2536
  <div class="card-subtitle" data-lang="en">Migration validation</div>
2394
2537
  </div>
@@ -2403,7 +2546,7 @@ dotnet ef migrations script --idempotent -o ./scripts/migrations/v1.2.0.sql
2403
2546
  <div class="card-header">
2404
2547
  <div class="card-icon" style="background: var(--warning);">4</div>
2405
2548
  <div>
2406
- <div class="card-title">/gitflow:4-plan</div>
2549
+ <div class="card-title">/gitflow 4-plan</div>
2407
2550
  <div class="card-subtitle" data-lang="fr">Analyse des conflits</div>
2408
2551
  <div class="card-subtitle" data-lang="en">Conflict analysis</div>
2409
2552
  </div>
@@ -2418,7 +2561,7 @@ dotnet ef migrations script --idempotent -o ./scripts/migrations/v1.2.0.sql
2418
2561
  <div class="card-header">
2419
2562
  <div class="card-icon" style="background: var(--secondary);">5</div>
2420
2563
  <div>
2421
- <div class="card-title">/gitflow:5-exec</div>
2564
+ <div class="card-title">/gitflow 5-exec</div>
2422
2565
  <div class="card-subtitle" data-lang="fr">Resolution automatique</div>
2423
2566
  <div class="card-subtitle" data-lang="en">Automatic resolution</div>
2424
2567
  </div>
@@ -2448,10 +2591,20 @@ dotnet ef migrations script --idempotent -o ./scripts/migrations/v1.2.0.sql
2448
2591
  "autoDetect": true,
2449
2592
  "contexts": [
2450
2593
  {
2451
- "name": "ApplicationDbContext",
2452
- "projectPath": "./src/Data",
2453
- "migrationsFolder": "Migrations",
2454
- "startupProject": "./src/Api"
2594
+ "name": "CoreDbContext",
2595
+ "type": "core",
2596
+ "schema": "core",
2597
+ "projectPath": "./src/SmartStack.Domain",
2598
+ "migrationsFolder": "Persistence/Migrations",
2599
+ "startupProject": "./src/SmartStack.Api"
2600
+ },
2601
+ {
2602
+ "name": "ExtensionsDbContext",
2603
+ "type": "extensions",
2604
+ "schema": "extensions",
2605
+ "projectPath": "./src/Client.Domain",
2606
+ "migrationsFolder": "Persistence/Migrations",
2607
+ "startupProject": "./src/Client.Api"
2455
2608
  }
2456
2609
  ],
2457
2610
  "database": {
@@ -2460,7 +2613,9 @@ dotnet ef migrations script --idempotent -o ./scripts/migrations/v1.2.0.sql
2460
2613
  "provider": "SqlServer"
2461
2614
  },
2462
2615
  "naming": {
2463
- "pattern": "{BranchType}_{Version}_{BranchName}_{Description}"
2616
+ "pattern": "{context}_v{version}_{sequence}_{Description}",
2617
+ "useMcp": true,
2618
+ "mcpTool": "mcp__smartstack__suggest_migration"
2464
2619
  },
2465
2620
  "crossBranch": {
2466
2621
  "enabled": true,