@atlashub/smartstack-cli 2.0.0 β†’ 2.2.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 (59) hide show
  1. package/.documentation/agents.html +147 -40
  2. package/.documentation/apex.html +1 -1
  3. package/.documentation/business-analyse.html +3 -3
  4. package/.documentation/cli-commands.html +2 -2
  5. package/.documentation/commands.html +14 -14
  6. package/.documentation/efcore.html +14 -14
  7. package/.documentation/gitflow.html +12 -12
  8. package/.documentation/hooks.html +41 -3
  9. package/.documentation/index.html +1 -1
  10. package/.documentation/init.html +2 -2
  11. package/.documentation/installation.html +11 -11
  12. package/.documentation/js/app.js +1 -1
  13. package/.documentation/ralph-loop.html +1 -1
  14. package/.documentation/test-web.html +4 -4
  15. package/dist/index.js +19 -11
  16. package/dist/index.js.map +1 -1
  17. package/dist/mcp-entry.mjs +57595 -4569
  18. package/dist/mcp-entry.mjs.map +1 -1
  19. package/package.json +1 -1
  20. package/templates/agents/ba-reader.md +250 -0
  21. package/templates/agents/ba-writer.md +210 -0
  22. package/templates/agents/docs-context-reader.md +51 -33
  23. package/templates/skills/_shared.md +2 -0
  24. package/templates/skills/business-analyse/SKILL.md +120 -108
  25. package/templates/skills/business-analyse/_shared.md +191 -160
  26. package/templates/skills/business-analyse/patterns/suggestion-catalog.md +478 -0
  27. package/templates/skills/business-analyse/questionnaire/01-context.md +3 -15
  28. package/templates/skills/business-analyse/questionnaire/08-performance.md +7 -21
  29. package/templates/skills/business-analyse/questionnaire/09-constraints.md +0 -13
  30. package/templates/skills/business-analyse/questionnaire/10-documentation.md +0 -13
  31. package/templates/skills/business-analyse/questionnaire.md +72 -76
  32. package/templates/skills/business-analyse/react/components.md +317 -154
  33. package/templates/skills/business-analyse/react/i18n-template.md +167 -106
  34. package/templates/skills/business-analyse/react/schema.md +325 -106
  35. package/templates/skills/business-analyse/schemas/feature-schema.json +690 -0
  36. package/templates/skills/business-analyse/steps/step-00-init.md +395 -285
  37. package/templates/skills/business-analyse/steps/step-01-analyse.md +505 -0
  38. package/templates/skills/business-analyse/steps/step-02-specify.md +833 -0
  39. package/templates/skills/business-analyse/steps/step-03-validate.md +862 -0
  40. package/templates/skills/business-analyse/steps/step-04-handoff.md +1593 -0
  41. package/templates/skills/business-analyse/templates/tpl-handoff.md +95 -43
  42. package/templates/skills/controller/templates.md +82 -0
  43. package/templates/skills/efcore/references/zero-downtime-patterns.md +227 -0
  44. package/templates/skills/efcore/steps/migration/step-03-validate.md +19 -0
  45. package/templates/skills/review-code/SKILL.md +4 -2
  46. package/templates/skills/review-code/references/owasp-api-top10.md +243 -0
  47. package/templates/skills/review-code/references/security-checklist.md +86 -1
  48. package/templates/skills/review-code/references/smartstack-conventions.md +166 -0
  49. package/templates/skills/workflow/SKILL.md +27 -0
  50. package/templates/skills/business-analyse/steps/step-01-discover.md +0 -737
  51. package/templates/skills/business-analyse/steps/step-02-analyse.md +0 -299
  52. package/templates/skills/business-analyse/steps/step-03-specify.md +0 -409
  53. package/templates/skills/business-analyse/steps/step-04-validate.md +0 -313
  54. package/templates/skills/business-analyse/steps/step-05-handoff.md +0 -658
  55. package/templates/skills/business-analyse/steps/step-06-doc-html.md +0 -320
  56. package/templates/skills/business-analyse/templates/00-context.md +0 -105
  57. package/templates/skills/business-analyse/templates/tpl-brd.md +0 -97
  58. package/templates/skills/business-analyse/templates/tpl-discovery.md +0 -78
  59. package/templates/skills/business-analyse/tracking/change-template.md +0 -30
@@ -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.25.0</span>
15
+ <span class="version-badge">v2.0.0</span>
16
16
  <div class="header-divider"></div>
17
17
  <span class="page-title">@atlashub/smartstack-cli</span>
18
18
  <!-- Language Select -->
@@ -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.25.0</span>
15
+ <span class="version-badge">v2.0.0</span>
16
16
  <div class="header-divider"></div>
17
17
  <span class="page-title">Project Init</span>
18
18
  <nav class="breadcrumb">
@@ -198,7 +198,7 @@
198
198
  <span data-lang="fr">Validation conventions, scaffolding, API docs</span>
199
199
  <span data-lang="en">Conventions validation, scaffolding, API docs</span>
200
200
  </td>
201
- <td><code>npm install -g @atlashub/smartstack-mcp && claude mcp add smartstack -- npx @atlashub/smartstack-mcp</code></td>
201
+ <td><code>claude mcp add smartstack -- npx -p @atlashub/smartstack-cli smartstack-mcp</code> <em data-lang="fr">(auto via install)</em><em data-lang="en">(auto via install)</em></td>
202
202
  </tr>
203
203
  <tr>
204
204
  <td><strong>Context7 MCP</strong></td>
@@ -302,7 +302,7 @@
302
302
  <header class="global-header">
303
303
  <div class="logo">SS</div>
304
304
  <span class="site-title">SmartStack CLI</span>
305
- <span class="version-badge">v1.25.0</span>
305
+ <span class="version-badge">v2.0.0</span>
306
306
  <div class="header-divider"></div>
307
307
  <span class="page-title">Installation</span>
308
308
  <nav class="breadcrumb">
@@ -749,25 +749,25 @@ smartstack install</code></pre>
749
749
  </div>
750
750
  </li>
751
751
 
752
- <!-- Step 6: SmartStack MCP Server -->
752
+ <!-- Step 6: SmartStack MCP Server (bundled) -->
753
753
  <li class="checklist-item" data-step="6">
754
754
  <span class="checklist-number">6</span>
755
755
  <div class="checklist-checkbox" onclick="toggleStep(6)"></div>
756
756
  <div class="checklist-content">
757
757
  <div class="checklist-title">
758
- <span data-lang="fr">Installer SmartStack MCP Server</span>
759
- <span data-lang="en">Install SmartStack MCP Server</span>
758
+ <span data-lang="fr">SmartStack MCP Server (inclus dans la CLI)</span>
759
+ <span data-lang="en">SmartStack MCP Server (bundled in CLI)</span>
760
760
  </div>
761
761
  <div class="checklist-description">
762
- <p data-lang="fr">Installez le serveur MCP SmartStack pour la validation des conventions et le scaffolding.</p>
763
- <p data-lang="en">Install the SmartStack MCP server for conventions validation and scaffolding.</p>
762
+ <p data-lang="fr">Le serveur MCP SmartStack est <strong>inclus dans la CLI</strong>. Il est enregistre automatiquement lors du <code>smartstack install</code>. Si besoin d'un enregistrement manuel :</p>
763
+ <p data-lang="en">The SmartStack MCP server is <strong>bundled in the CLI</strong>. It is automatically registered during <code>smartstack install</code>. For manual registration if needed:</p>
764
764
  <div class="code-block">
765
765
  <button class="copy-btn">Copy</button>
766
- <pre><code># 1. Installer le package
767
- npm install -g @atlashub/smartstack-mcp
766
+ <pre><code># Enregistrement automatique (recommande)
767
+ smartstack install --force
768
768
 
769
- # 2. Enregistrer dans Claude
770
- claude mcp add smartstack -- smartstack-mcp</code></pre>
769
+ # Enregistrement manuel (si necessaire)
770
+ claude mcp add smartstack -- npx -p @atlashub/smartstack-cli smartstack-mcp</code></pre>
771
771
  </div>
772
772
  </div>
773
773
  </div>
@@ -810,7 +810,7 @@ $env:CONTEXT7_API_KEY = "<span class="context7-key-placeholder" style="color: va
810
810
  npm install -g @upstash/context7-mcp
811
811
 
812
812
  # 3. Enregistrer dans Claude
813
- claude mcp add context7 -- context7-mcp</code></pre>
813
+ claude mcp add context7 -- npx @upstash/context7-mcp</code></pre>
814
814
  </div>
815
815
  </div>
816
816
  </div>
@@ -398,7 +398,7 @@ function initSearch() {
398
398
  { page: 'installation.html', icon: 'πŸ“¦', title: { fr: 'Installation', en: 'Installation' }, section: { fr: 'PrΓ©requis', en: 'Prerequisites' }, anchor: 'prerequisites',
399
399
  keywords: 'prΓ©requis prerequisites nodejs node version 18 npm git' },
400
400
  { page: 'installation.html', icon: 'πŸ“¦', title: { fr: 'Installation', en: 'Installation' }, section: { fr: 'Installation globale', en: 'Global Installation' }, anchor: 'global-install',
401
- keywords: 'npm install global atlashub claude-tools registry package' },
401
+ keywords: 'npm install global atlashub smartstack smartstack-cli registry package' },
402
402
 
403
403
  // GitFlow
404
404
  { page: 'gitflow.html', icon: 'πŸ”€', title: { fr: 'GitFlow', en: 'GitFlow' }, section: '', anchor: '',
@@ -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.25.0</span>
15
+ <span class="version-badge">v2.0.0</span>
16
16
  <div class="header-divider"></div>
17
17
  <span class="page-title">Ralph Loop</span>
18
18
  <nav class="breadcrumb">
@@ -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.25.0</span>
15
+ <span class="version-badge">v2.0.0</span>
16
16
  <div class="header-divider"></div>
17
17
  <span class="page-title">Test Web</span>
18
18
  <nav class="breadcrumb">
@@ -327,8 +327,8 @@
327
327
  <span data-lang="en">Pre-configured Templates</span>
328
328
  </h2>
329
329
 
330
- <p data-lang="fr">Claude Tools inclut des templates de configuration pour les cas d'usage courants :</p>
331
- <p data-lang="en">Claude Tools includes configuration templates for common use cases:</p>
330
+ <p data-lang="fr">SmartStack CLI inclut des templates de configuration pour les cas d'usage courants :</p>
331
+ <p data-lang="en">SmartStack CLI includes configuration templates for common use cases:</p>
332
332
 
333
333
  <div class="table-container">
334
334
  <table>
@@ -397,7 +397,7 @@
397
397
  <pre><code>TEST WEB RESULTS
398
398
  ────────────────────────────────
399
399
  GitHub Repository 200 OK "README" found
400
- npm Package 200 OK "claude-tools" found
400
+ npm Package 200 OK "smartstack-cli" found
401
401
  Google Indexation Results Found in search
402
402
 
403
403
  Status: 3/3 PASS
package/dist/index.js CHANGED
@@ -112215,6 +112215,10 @@ function getPackageVersion() {
112215
112215
  return "0.0.0";
112216
112216
  }
112217
112217
  }
112218
+ function processTemplateVariables(content, version2) {
112219
+ const sanitized = version2.replace(/[^0-9a-zA-Z.\-+]/g, "");
112220
+ return content.replace(/\{\{SMARTSTACK_VERSION\}\}/g, sanitized);
112221
+ }
112218
112222
  var DEFAULT_PLUGINS = [];
112219
112223
  function getClaudeDir(global3) {
112220
112224
  if (global3) {
@@ -112250,6 +112254,7 @@ async function installCommands(options = {}) {
112250
112254
  };
112251
112255
  logger.info(`Installing to: ${claudeDir}`);
112252
112256
  const dirsToInstall = installAll ? INSTALL_DIRS : INSTALL_DIRS.filter((d) => components.includes(d));
112257
+ const version2 = getPackageVersion();
112253
112258
  for (const dir of dirsToInstall) {
112254
112259
  const sourceDir = (0, import_path.join)(TEMPLATES_DIR, dir);
112255
112260
  const targetDir = (0, import_path.join)(claudeDir, dir);
@@ -112270,7 +112275,13 @@ async function installCommands(options = {}) {
112270
112275
  continue;
112271
112276
  }
112272
112277
  await import_fs_extra.default.ensureDir((0, import_path.dirname)(dest));
112273
- await import_fs_extra.default.copy(src, dest, { overwrite: options.force });
112278
+ if (file.endsWith(".md")) {
112279
+ const content = await import_fs_extra.default.readFile(src, "utf-8");
112280
+ const processed = processTemplateVariables(content, version2);
112281
+ await import_fs_extra.default.writeFile(dest, processed, "utf-8");
112282
+ } else {
112283
+ await import_fs_extra.default.copy(src, dest, { overwrite: options.force });
112284
+ }
112274
112285
  result.installed++;
112275
112286
  result.installedFiles.push(relativePath);
112276
112287
  if (file.endsWith(".md") && !file.includes("/")) {
@@ -115452,7 +115463,7 @@ var updateCommand = new Command("update").description("Update commands to the la
115452
115463
  // src/commands/docs.ts
115453
115464
  var import_path3 = require("path");
115454
115465
  var import_fs2 = require("fs");
115455
- var DOCS_PAGES = ["index", "installation", "commands", "agents", "apex", "business-analyse", "gitflow", "efcore", "hooks", "test-web"];
115466
+ var DOCS_PAGES = ["index", "installation", "init", "commands", "cli-commands", "agents", "apex", "business-analyse", "gitflow", "efcore", "hooks", "ralph-loop", "test-web"];
115456
115467
  var docsCommand = new Command("docs").alias("d").description("Open SmartStack documentation in browser").argument("[page]", "Documentation page to open", "index").option("-l, --list", "List available documentation pages").action(async (page, options) => {
115457
115468
  if (options.list) {
115458
115469
  logger.header("Available Documentation Pages");
@@ -125428,15 +125439,12 @@ async function promptSqlCredentials() {
125428
125439
  }
125429
125440
  function detectSmartStackApp() {
125430
125441
  const cwd = process.cwd();
125431
- const configPath = (0, import_path9.join)(cwd, ".smartstack", "config.json");
125432
- if ((0, import_fs4.existsSync)(configPath)) {
125433
- const srcDir = (0, import_path9.join)(cwd, "src");
125434
- if ((0, import_fs4.existsSync)(srcDir)) {
125435
- const folders = (0, import_fs4.readdirSync)(srcDir);
125436
- const apiFolder = folders.find((f) => f.endsWith(".Api"));
125437
- if (apiFolder) {
125438
- return (0, import_path9.join)(srcDir, apiFolder);
125439
- }
125442
+ const srcDir = (0, import_path9.join)(cwd, "src");
125443
+ if ((0, import_fs4.existsSync)(srcDir)) {
125444
+ const folders = (0, import_fs4.readdirSync)(srcDir);
125445
+ const apiFolder = folders.find((f) => f.endsWith(".Api"));
125446
+ if (apiFolder) {
125447
+ return (0, import_path9.join)(srcDir, apiFolder);
125440
125448
  }
125441
125449
  }
125442
125450
  const possiblePaths = [