@atlashub/smartstack-cli 1.27.0 → 1.28.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.
@@ -666,13 +666,20 @@ git config --global credential.helper manager</code></pre>
666
666
  npm install -g @anthropic-ai/claude-code
667
667
 
668
668
  # 2. Installer l'extension VS Code
669
- code --install-extension anthropic.claude-code
669
+ code --install-extension anthropic.claude-code</code></pre>
670
+ </div>
670
671
 
671
- # 3. Activer le mode bypass permissions (recommande pour SmartStack)
672
- $settingsPath = "$env:APPDATA\Code\User\settings.json"
673
- $settings = if (Test-Path $settingsPath) { Get-Content $settingsPath -Raw | ConvertFrom-Json } else { @{} }
674
- $settings | Add-Member -NotePropertyName "claude-code.dangerouslySkipPermissions" -NotePropertyValue $true -Force
675
- $settings | ConvertTo-Json -Depth 10 | Set-Content $settingsPath</code></pre>
672
+ <p data-lang="fr" style="margin-top: 1rem;"><strong>3. Activer le mode bypass permissions</strong> (recommande pour SmartStack) :</p>
673
+ <p data-lang="en" style="margin-top: 1rem;"><strong>3. Enable bypass permissions mode</strong> (recommended for SmartStack):</p>
674
+ <ol style="margin: 0.5rem 0 0 1.5rem; color: var(--text-muted);">
675
+ <li data-lang="fr">Dans VS Code : <kbd>Ctrl+Shift+P</kbd> → "Preferences: Open User Settings (JSON)"</li>
676
+ <li data-lang="en">In VS Code: <kbd>Ctrl+Shift+P</kbd> "Preferences: Open User Settings (JSON)"</li>
677
+ <li data-lang="fr">Ajouter cette ligne dans le fichier JSON :</li>
678
+ <li data-lang="en">Add this line in the JSON file:</li>
679
+ </ol>
680
+ <div class="code-block" style="margin-top: 0.5rem;">
681
+ <button class="copy-btn">Copy</button>
682
+ <pre><code>"claude-code.dangerouslySkipPermissions": true</code></pre>
676
683
  </div>
677
684
  <div class="tutorial-note" style="margin-top: 0.5rem;">
678
685
  <p data-lang="fr"><strong>Note :</strong> Le mode bypass permissions permet a Claude d'executer des commandes sans confirmation manuelle. Recommande pour une utilisation fluide avec SmartStack.</p>
@@ -692,16 +699,30 @@ $settings | ConvertTo-Json -Depth 10 | Set-Content $settingsPath</code></pre>
692
699
  <span data-lang="en">Install SmartStack CLI</span>
693
700
  </div>
694
701
  <div class="checklist-description">
695
- <p data-lang="fr">Installez SmartStack CLI et deployez les skills :</p>
696
- <p data-lang="en">Install SmartStack CLI and deploy skills:</p>
702
+ <p data-lang="fr">Installez SmartStack CLI et configurez le PATH :</p>
703
+ <p data-lang="en">Install SmartStack CLI and configure PATH:</p>
697
704
  <div class="code-block">
698
705
  <button class="copy-btn">Copy</button>
699
706
  <pre><code># 1. Installer SmartStack CLI
700
707
  npm install -g @atlashub/smartstack-cli
701
708
 
702
- # 2. Deployer les skills, agents et hooks
709
+ # 2. Ajouter npm au PATH (permanent)
710
+ $npmPath = "$env:APPDATA\npm"
711
+ [Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";$npmPath", "User")
712
+
713
+ # 3. Recharger le PATH dans cette session
714
+ $env:PATH += ";$npmPath"
715
+
716
+ # 4. Verifier l'installation
717
+ smartstack --version
718
+
719
+ # 5. Deployer les skills, agents et hooks
703
720
  smartstack install</code></pre>
704
721
  </div>
722
+ <div class="tutorial-note" style="margin-top: 0.5rem;">
723
+ <p data-lang="fr"><strong>Alias disponible :</strong> Vous pouvez utiliser <code>ss</code> au lieu de <code>smartstack</code> (ex: <code>ss --version</code>).</p>
724
+ <p data-lang="en"><strong>Alias available:</strong> You can use <code>ss</code> instead of <code>smartstack</code> (e.g., <code>ss --version</code>).</p>
725
+ </div>
705
726
  </div>
706
727
  </div>
707
728
  </li>
@@ -736,8 +757,8 @@ claude mcp add smartstack -- smartstack-mcp</code></pre>
736
757
  <div class="checklist-checkbox" onclick="toggleStep(6)"></div>
737
758
  <div class="checklist-content">
738
759
  <div class="checklist-title">
739
- <span data-lang="fr">Installer Context7 MCP Server</span>
740
- <span data-lang="en">Install Context7 MCP Server</span>
760
+ <span data-lang="fr">Installer Context7 MCP Server (optionnel)</span>
761
+ <span data-lang="en">Install Context7 MCP Server (optional)</span>
741
762
  </div>
742
763
  <div class="checklist-description">
743
764
  <p data-lang="fr">Installez le serveur MCP Context7 pour acceder a la documentation des bibliotheques.</p>
@@ -761,18 +782,78 @@ claude mcp add context7 -- context7-mcp</code></pre>
761
782
  </div>
762
783
  </li>
763
784
 
764
- <!-- Step 7: Verification -->
785
+ <!-- Step 7: Azure DevOps MCP Server -->
765
786
  <li class="checklist-item" data-step="7">
766
787
  <span class="checklist-number">7</span>
767
788
  <div class="checklist-checkbox" onclick="toggleStep(7)"></div>
789
+ <div class="checklist-content">
790
+ <div class="checklist-title">
791
+ <span data-lang="fr">Installer Azure DevOps MCP Server (optionnel)</span>
792
+ <span data-lang="en">Install Azure DevOps MCP Server (optional)</span>
793
+ </div>
794
+ <div class="checklist-description">
795
+ <p data-lang="fr">Si vous utilisez Azure DevOps, installez ce serveur MCP pour interagir avec vos repos, PRs et pipelines.</p>
796
+ <p data-lang="en">If you use Azure DevOps, install this MCP server to interact with your repos, PRs, and pipelines.</p>
797
+
798
+ <p data-lang="fr">Vous aurez besoin d'un <strong>Personal Access Token (PAT)</strong> Azure DevOps avec les permissions adequates.</p>
799
+ <p data-lang="en">You'll need an Azure DevOps <strong>Personal Access Token (PAT)</strong> with the appropriate permissions.</p>
800
+
801
+ <div class="code-block">
802
+ <button class="copy-btn">Copy</button>
803
+ <pre><code># 1. Definir vos credentials Azure DevOps
804
+ $env:AZURE_DEVOPS_ORG_URL = "https://dev.azure.com/votre-org"
805
+ $env:AZURE_DEVOPS_PAT = "votre-pat-token"
806
+
807
+ # 2. Installer le package
808
+ npm install -g @anthropic/azure-devops-mcp
809
+
810
+ # 3. Enregistrer dans Claude
811
+ claude mcp add azure-devops -- azure-devops-mcp</code></pre>
812
+ </div>
813
+
814
+ <div class="tutorial-note" style="margin-top: 0.5rem;">
815
+ <p data-lang="fr"><strong>Creer un PAT :</strong> Azure DevOps → User Settings → Personal Access Tokens → New Token. Permissions recommandees : Code (Read & Write), Work Items (Read & Write), Build (Read).</p>
816
+ <p data-lang="en"><strong>Create a PAT:</strong> Azure DevOps → User Settings → Personal Access Tokens → New Token. Recommended permissions: Code (Read & Write), Work Items (Read & Write), Build (Read).</p>
817
+ </div>
818
+ </div>
819
+ </div>
820
+ </li>
821
+
822
+ <!-- Step 8: Restart VS Code -->
823
+ <li class="checklist-item" data-step="8">
824
+ <span class="checklist-number">8</span>
825
+ <div class="checklist-checkbox" onclick="toggleStep(8)"></div>
826
+ <div class="checklist-content">
827
+ <div class="checklist-title">
828
+ <span data-lang="fr">Redemarrer VS Code</span>
829
+ <span data-lang="en">Restart VS Code</span>
830
+ </div>
831
+ <div class="checklist-description">
832
+ <div class="alert alert-warning" style="margin-bottom: 1rem;">
833
+ <span class="alert-icon">&#9888;</span>
834
+ <div class="alert-content">
835
+ <p data-lang="fr"><strong>Important :</strong> Apres l'installation des serveurs MCP, vous devez redemarrer VS Code pour que les changements soient pris en compte.</p>
836
+ <p data-lang="en"><strong>Important:</strong> After installing MCP servers, you must restart VS Code for the changes to take effect.</p>
837
+ </div>
838
+ </div>
839
+ <p data-lang="fr">Fermez completement VS Code et rouvrez-le. Cela permet a Claude Code de detecter les nouveaux serveurs MCP.</p>
840
+ <p data-lang="en">Close VS Code completely and reopen it. This allows Claude Code to detect the new MCP servers.</p>
841
+ </div>
842
+ </div>
843
+ </li>
844
+
845
+ <!-- Step 9: Verification -->
846
+ <li class="checklist-item" data-step="9">
847
+ <span class="checklist-number">9</span>
848
+ <div class="checklist-checkbox" onclick="toggleStep(9)"></div>
768
849
  <div class="checklist-content">
769
850
  <div class="checklist-title">
770
851
  <span data-lang="fr">Verifier l'installation</span>
771
852
  <span data-lang="en">Verify Installation</span>
772
853
  </div>
773
854
  <div class="checklist-description">
774
- <p data-lang="fr">Verifiez que tout est correctement installe.</p>
775
- <p data-lang="en">Verify that everything is correctly installed.</p>
855
+ <p data-lang="fr">Verifiez que tout est correctement installe :</p>
856
+ <p data-lang="en">Verify that everything is correctly installed:</p>
776
857
  <div class="code-block">
777
858
  <button class="copy-btn">Copy</button>
778
859
  <pre><code># Verifier les versions
@@ -780,9 +861,18 @@ node --version
780
861
  claude --version
781
862
  smartstack --version
782
863
 
783
- # Verifier les serveurs MCP
864
+ # Verifier les serveurs MCP enregistres
784
865
  claude mcp list</code></pre>
785
866
  </div>
867
+
868
+ <p data-lang="fr" style="margin-top: 1rem;">Dans Claude Code, verifiez que les MCP fonctionnent :</p>
869
+ <p data-lang="en" style="margin-top: 1rem;">In Claude Code, verify that MCPs are working:</p>
870
+ <div class="code-block">
871
+ <button class="copy-btn">Copy</button>
872
+ <pre><code># Verifier le statut des serveurs MCP
873
+ /mcp healthcheck</code></pre>
874
+ </div>
875
+
786
876
  <div class="alert alert-success" style="margin-top: 1rem;">
787
877
  <span class="alert-icon">&#9989;</span>
788
878
  <div class="alert-content">
@@ -791,8 +881,8 @@ claude mcp list</code></pre>
791
881
  <ul style="margin: 0.5rem 0 0 1rem;">
792
882
  <li data-lang="fr">Creer un nouveau projet : <code>smartstack init MyProject</code></li>
793
883
  <li data-lang="en">Create a new project: <code>smartstack init MyProject</code></li>
794
- <li data-lang="fr">Ou initialiser sur un projet existant : <code>smartstack init .</code></li>
795
- <li data-lang="en">Or initialize on an existing project: <code>smartstack init .</code></li>
884
+ <li data-lang="fr">Ou initialiser sur un projet existant : <code>smartstack init</code></li>
885
+ <li data-lang="en">Or initialize on an existing project: <code>smartstack init</code></li>
796
886
  </ul>
797
887
  </div>
798
888
  </div>
@@ -800,6 +890,145 @@ claude mcp list</code></pre>
800
890
  </div>
801
891
  </li>
802
892
  </ul>
893
+
894
+ <!-- Troubleshooting Section -->
895
+ <div class="alert alert-info" style="margin-top: 2rem;">
896
+ <span class="alert-icon">&#128736;</span>
897
+ <div class="alert-content">
898
+ <h4 data-lang="fr" style="margin-top: 0;">Problemes courants</h4>
899
+ <h4 data-lang="en" style="margin-top: 0;">Common Issues</h4>
900
+ <ul style="margin: 0.5rem 0 0 1rem;">
901
+ <li data-lang="fr"><strong>MCP non detecte :</strong> Redemarrez VS Code completement (File → Exit, pas juste fermer la fenetre)</li>
902
+ <li data-lang="en"><strong>MCP not detected:</strong> Restart VS Code completely (File → Exit, not just closing the window)</li>
903
+ <li data-lang="fr"><strong>Erreur "command not found" :</strong> Fermez et rouvrez votre terminal PowerShell pour recharger le PATH</li>
904
+ <li data-lang="en"><strong>"command not found" error:</strong> Close and reopen your PowerShell terminal to reload the PATH</li>
905
+ <li data-lang="fr"><strong>Permissions refusees :</strong> Executez PowerShell en tant qu'administrateur</li>
906
+ <li data-lang="en"><strong>Permission denied:</strong> Run PowerShell as administrator</li>
907
+ <li data-lang="fr"><strong>MCP healthcheck echoue :</strong> Verifiez vos cles API et tokens dans les variables d'environnement</li>
908
+ <li data-lang="en"><strong>MCP healthcheck fails:</strong> Check your API keys and tokens in environment variables</li>
909
+ </ul>
910
+ </div>
911
+ </div>
912
+ </section>
913
+
914
+ <!-- Useful Commands Section -->
915
+ <section id="useful-commands">
916
+ <h3>
917
+ <span data-lang="fr">Commandes utiles</span>
918
+ <span data-lang="en">Useful Commands</span>
919
+ </h3>
920
+ <p data-lang="fr">Voici les commandes essentielles a connaitre apres l'installation :</p>
921
+ <p data-lang="en">Here are the essential commands to know after installation:</p>
922
+
923
+ <!-- Terminal Commands -->
924
+ <h4 style="margin-top: 1.5rem;">
925
+ <span data-lang="fr">Dans le terminal PowerShell</span>
926
+ <span data-lang="en">In PowerShell terminal</span>
927
+ </h4>
928
+ <div class="table-container">
929
+ <table>
930
+ <thead>
931
+ <tr>
932
+ <th data-lang="fr">Commande</th>
933
+ <th data-lang="en">Command</th>
934
+ <th data-lang="fr">Description</th>
935
+ <th data-lang="en">Description</th>
936
+ </tr>
937
+ </thead>
938
+ <tbody>
939
+ <tr>
940
+ <td><code>smartstack --version</code></td>
941
+ <td data-lang="fr">Afficher la version installee</td>
942
+ <td data-lang="en">Show installed version</td>
943
+ </tr>
944
+ <tr>
945
+ <td><code>smartstack install</code></td>
946
+ <td data-lang="fr">Reinstaller les skills et agents</td>
947
+ <td data-lang="en">Reinstall skills and agents</td>
948
+ </tr>
949
+ <tr>
950
+ <td><code>smartstack install --force</code></td>
951
+ <td data-lang="fr">Forcer la reinstallation (ecrase les fichiers existants)</td>
952
+ <td data-lang="en">Force reinstall (overwrites existing files)</td>
953
+ </tr>
954
+ <tr>
955
+ <td><code>smartstack init</code></td>
956
+ <td data-lang="fr">Initialiser SmartStack dans le projet actuel</td>
957
+ <td data-lang="en">Initialize SmartStack in current project</td>
958
+ </tr>
959
+ <tr>
960
+ <td><code>claude mcp list</code></td>
961
+ <td data-lang="fr">Lister les serveurs MCP enregistres</td>
962
+ <td data-lang="en">List registered MCP servers</td>
963
+ </tr>
964
+ <tr>
965
+ <td><code>claude mcp remove &lt;name&gt;</code></td>
966
+ <td data-lang="fr">Supprimer un serveur MCP</td>
967
+ <td data-lang="en">Remove an MCP server</td>
968
+ </tr>
969
+ </tbody>
970
+ </table>
971
+ </div>
972
+
973
+ <!-- Claude Code Commands -->
974
+ <h4 style="margin-top: 1.5rem;">
975
+ <span data-lang="fr">Dans Claude Code (VS Code)</span>
976
+ <span data-lang="en">In Claude Code (VS Code)</span>
977
+ </h4>
978
+ <div class="table-container">
979
+ <table>
980
+ <thead>
981
+ <tr>
982
+ <th data-lang="fr">Commande</th>
983
+ <th data-lang="en">Command</th>
984
+ <th data-lang="fr">Description</th>
985
+ <th data-lang="en">Description</th>
986
+ </tr>
987
+ </thead>
988
+ <tbody>
989
+ <tr>
990
+ <td><code>/mcp healthcheck</code></td>
991
+ <td data-lang="fr">Verifier le statut de tous les serveurs MCP</td>
992
+ <td data-lang="en">Check status of all MCP servers</td>
993
+ </tr>
994
+ <tr>
995
+ <td><code>/mcp tools</code></td>
996
+ <td data-lang="fr">Lister les outils disponibles dans les MCP</td>
997
+ <td data-lang="en">List available tools in MCPs</td>
998
+ </tr>
999
+ <tr>
1000
+ <td><code>/gitflow init</code></td>
1001
+ <td data-lang="fr">Initialiser GitFlow dans le projet</td>
1002
+ <td data-lang="en">Initialize GitFlow in project</td>
1003
+ </tr>
1004
+ <tr>
1005
+ <td><code>/gitflow status</code></td>
1006
+ <td data-lang="fr">Voir le statut GitFlow</td>
1007
+ <td data-lang="en">View GitFlow status</td>
1008
+ </tr>
1009
+ <tr>
1010
+ <td><code>/gitflow start feature &lt;nom&gt;</code></td>
1011
+ <td data-lang="fr">Demarrer une nouvelle feature</td>
1012
+ <td data-lang="en">Start a new feature</td>
1013
+ </tr>
1014
+ <tr>
1015
+ <td><code>/gitflow commit</code></td>
1016
+ <td data-lang="fr">Commit intelligent avec validation</td>
1017
+ <td data-lang="en">Smart commit with validation</td>
1018
+ </tr>
1019
+ <tr>
1020
+ <td><code>/validate</code></td>
1021
+ <td data-lang="fr">Valider les conventions SmartStack</td>
1022
+ <td data-lang="en">Validate SmartStack conventions</td>
1023
+ </tr>
1024
+ </tbody>
1025
+ </table>
1026
+ </div>
1027
+
1028
+ <div class="tutorial-note" style="margin-top: 1rem;">
1029
+ <p data-lang="fr"><strong>Astuce :</strong> Tapez <code>/</code> dans Claude Code pour voir toutes les commandes (skills) disponibles.</p>
1030
+ <p data-lang="en"><strong>Tip:</strong> Type <code>/</code> in Claude Code to see all available commands (skills).</p>
1031
+ </div>
803
1032
  </section>
804
1033
 
805
1034
  <!-- Next Steps - Tutorial -->
@@ -926,7 +1155,7 @@ code .</code></pre>
926
1155
  <div class="code-block">
927
1156
  <button class="copy-btn">Copy</button>
928
1157
  <pre><code># Depuis la racine de votre projet clone
929
- smartstack init .</code></pre>
1158
+ smartstack init</code></pre>
930
1159
  </div>
931
1160
 
932
1161
  <p data-lang="fr" style="margin-top: 1rem;">Cette commande va :</p>
package/dist/index.js CHANGED
@@ -112189,7 +112189,7 @@ var import_child_process = require("child_process");
112189
112189
  var import_fs_extra = __toESM(require_lib());
112190
112190
  var PACKAGE_ROOT = (0, import_path.join)(__dirname, "..");
112191
112191
  var TEMPLATES_DIR = (0, import_path.join)(PACKAGE_ROOT, "templates");
112192
- var INSTALL_DIRS = ["commands", "agents", "hooks", "skills", "scripts"];
112192
+ var INSTALL_DIRS = ["agents", "hooks", "skills", "scripts"];
112193
112193
  var MANIFEST_FILE = ".smartstack-manifest.json";
112194
112194
  async function readManifest(claudeDir) {
112195
112195
  const manifestPath = (0, import_path.join)(claudeDir, MANIFEST_FILE);
@@ -115576,10 +115576,13 @@ function validateCSharpNamespace(name) {
115576
115576
  }
115577
115577
  async function detectProjectContext(name, here) {
115578
115578
  const cwd = process.cwd();
115579
- if (name && !here) {
115579
+ if (name && name.trim() && !here) {
115580
115580
  const projectDir = (0, import_path4.isAbsolute)(name) ? name : (0, import_path4.join)(cwd, name);
115581
- const projectName = (0, import_path4.basename)(name);
115582
- return { projectName, projectDir, inPlace: false };
115581
+ if (projectDir === cwd || (0, import_path4.basename)(cwd) === name) {
115582
+ } else {
115583
+ const projectName = (0, import_path4.basename)(name);
115584
+ return { projectName, projectDir, inPlace: false };
115585
+ }
115583
115586
  }
115584
115587
  const parentDir = (0, import_path4.dirname)(cwd);
115585
115588
  const currentFolderName = (0, import_path4.basename)(cwd);