@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.
- package/.documentation/gitflow.html +541 -378
- package/.documentation/installation.html +114 -39
- package/config/default-config.json +10 -1
- package/package.json +1 -1
- package/templates/agents/efcore/migration.md +4 -4
- package/templates/commands/efcore/_shared.md +1 -1
- package/templates/commands/efcore/migration.md +1 -1
- package/templates/commands/efcore/rebase-snapshot.md +1 -1
- package/templates/commands/efcore/squash.md +1 -0
- package/templates/skills/_shared.md +29 -6
- package/templates/skills/apex/SKILL.md +56 -0
- package/templates/skills/apex/steps/step-01-analyze.md +22 -5
- package/templates/skills/apex/steps/step-04-validate.md +32 -6
- package/templates/skills/gitflow/steps/step-start.md +109 -9
- package/templates/skills/ui-components/SKILL.md +167 -5
- package/templates/commands/gitflow/OPTIMIZATIONS.md +0 -206
- package/templates/gitflow/config.json +0 -138
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
}
|
|
15
15
|
.platform-btn {
|
|
16
16
|
flex: 1;
|
|
17
|
-
padding: 1rem
|
|
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
|
-
|
|
27
|
-
|
|
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.
|
|
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.
|
|
52
|
-
margin-bottom: 1rem;
|
|
53
|
+
gap: 0.75rem;
|
|
53
54
|
}
|
|
54
55
|
.os-btn {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
border
|
|
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.
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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">💻</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')">
|
|
497
|
-
|
|
498
|
-
|
|
513
|
+
<button class="os-btn active" data-os="windows" onclick="setOS('windows')">
|
|
514
|
+
<span class="os-icon">🪟</span>
|
|
515
|
+
<span>Windows</span>
|
|
516
|
+
</button>
|
|
517
|
+
<button class="os-btn" data-os="macos" onclick="setOS('macos')">
|
|
518
|
+
<span class="os-icon">🍎</span>
|
|
519
|
+
<span>macOS</span>
|
|
520
|
+
</button>
|
|
521
|
+
<button class="os-btn" data-os="linux" onclick="setOS('linux')">
|
|
522
|
+
<span class="os-icon">🐧</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">🔀</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
|
-
<
|
|
655
|
-
|
|
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-
|
|
819
|
-
<span class="alert-icon">&#
|
|
847
|
+
<div class="alert alert-success" style="margin-bottom: 1.5rem;">
|
|
848
|
+
<span class="alert-icon">✅</span>
|
|
820
849
|
<div class="alert-content">
|
|
821
|
-
<p data-lang="fr">
|
|
822
|
-
<p data-lang="en">
|
|
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 →</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 →</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">
|
|
911
|
-
<span data-lang="en">
|
|
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">
|
|
915
|
-
<p data-lang="en">
|
|
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>#
|
|
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 !
|
|
950
|
-
<p data-lang="en">Your environment is ready!
|
|
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>#
|
|
1018
|
+
<pre><code># 1. Demarrer une branche
|
|
955
1019
|
/gitflow:10-start feature ma-fonctionnalite
|
|
956
1020
|
|
|
957
|
-
#
|
|
1021
|
+
# 2. Coder... puis commiter regulierement
|
|
958
1022
|
/gitflow:3-commit
|
|
959
1023
|
|
|
960
|
-
#
|
|
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">📚</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": "
|
|
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
|
@@ -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)
|
|
@@ -109,9 +109,32 @@ if (entity.UserType == UserType.System || entity.UserType == UserType.LocalAdmin
|
|
|
109
109
|
|
|
110
110
|
## MCP Tools References
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
|
115
|
-
|
|
116
|
-
| `
|
|
117
|
-
| `
|
|
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.
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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.
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
183
|
+
### 9. Determine Next Step
|
|
158
184
|
|
|
159
185
|
**Decision tree:**
|
|
160
186
|
|