@atlashub/smartstack-cli 1.36.0 → 2.0.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 (103) hide show
  1. package/config/mcp-defaults.json +62 -0
  2. package/dist/index.js +57 -4
  3. package/dist/index.js.map +1 -1
  4. package/dist/mcp-entry.mjs +16984 -0
  5. package/dist/mcp-entry.mjs.map +1 -0
  6. package/package.json +14 -5
  7. package/templates/agents/gitflow/start.md +5 -4
  8. package/templates/agents/mcp-healthcheck.md +15 -13
  9. package/templates/mcp-scaffolding/component.tsx.hbs +298 -0
  10. package/templates/mcp-scaffolding/controller.cs.hbs +184 -0
  11. package/templates/mcp-scaffolding/entity-extension.cs.hbs +231 -0
  12. package/templates/mcp-scaffolding/frontend/api-client.ts.hbs +116 -0
  13. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -0
  14. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +134 -0
  15. package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +261 -0
  16. package/templates/mcp-scaffolding/service-extension.cs.hbs +53 -0
  17. package/templates/mcp-scaffolding/tests/controller.test.cs.hbs +413 -0
  18. package/templates/mcp-scaffolding/tests/entity.test.cs.hbs +239 -0
  19. package/templates/mcp-scaffolding/tests/repository.test.cs.hbs +441 -0
  20. package/templates/mcp-scaffolding/tests/security.test.cs.hbs +442 -0
  21. package/templates/mcp-scaffolding/tests/service.test.cs.hbs +390 -0
  22. package/templates/mcp-scaffolding/tests/validator.test.cs.hbs +428 -0
  23. package/templates/ralph/README.md +3 -3
  24. package/templates/ralph/ralph.config.yaml +2 -2
  25. package/templates/skills/admin/SKILL.md +42 -0
  26. package/templates/skills/application/steps/step-01-navigation.md +226 -43
  27. package/templates/skills/application/steps/step-03-roles.md +160 -38
  28. package/templates/skills/application/steps/step-04-backend.md +109 -2
  29. package/templates/skills/application/templates-seed.md +200 -1
  30. package/templates/skills/business-analyse/_shared.md +24 -1
  31. package/templates/skills/business-analyse/questionnaire/01-context.md +4 -4
  32. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +3 -3
  33. package/templates/skills/business-analyse/questionnaire/03-scope.md +4 -4
  34. package/templates/skills/business-analyse/questionnaire/04-data.md +7 -7
  35. package/templates/skills/business-analyse/questionnaire/05-integrations.md +1 -1
  36. package/templates/skills/business-analyse/questionnaire/06-security.md +3 -3
  37. package/templates/skills/business-analyse/questionnaire/07-ui.md +1 -1
  38. package/templates/skills/business-analyse/questionnaire/08-performance.md +3 -3
  39. package/templates/skills/business-analyse/questionnaire/09-constraints.md +4 -4
  40. package/templates/skills/business-analyse/questionnaire/10-documentation.md +2 -2
  41. package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +2 -2
  42. package/templates/skills/business-analyse/questionnaire/12-migration.md +1 -1
  43. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +2 -2
  44. package/templates/skills/business-analyse/steps/step-01-discover.md +50 -25
  45. package/templates/skills/business-analyse/steps/step-05-handoff.md +133 -34
  46. package/templates/skills/cc-agent/SKILL.md +129 -0
  47. package/templates/skills/cc-agent/references/agent-frontmatter.md +213 -0
  48. package/templates/skills/cc-agent/references/permission-modes.md +102 -0
  49. package/templates/skills/cc-agent/references/tools-reference.md +144 -0
  50. package/templates/skills/cc-agent/steps/step-00-init.md +134 -0
  51. package/templates/skills/cc-agent/steps/step-01-design.md +186 -0
  52. package/templates/skills/cc-agent/steps/step-02-generate.md +204 -0
  53. package/templates/skills/cc-agent/steps/step-03-validate.md +130 -0
  54. package/templates/skills/cc-agent/templates/agent-categorized.md +67 -0
  55. package/templates/skills/cc-agent/templates/agent-standalone.md +56 -0
  56. package/templates/skills/cc-agent/templates/agent-with-skills.md +94 -0
  57. package/templates/skills/cc-audit/SKILL.md +108 -0
  58. package/templates/skills/cc-audit/references/agent-checklist.md +91 -0
  59. package/templates/skills/cc-audit/references/hook-checklist.md +110 -0
  60. package/templates/skills/cc-audit/references/skill-checklist.md +70 -0
  61. package/templates/skills/cc-audit/steps/step-00-init.md +98 -0
  62. package/templates/skills/cc-audit/steps/step-01-scan.md +142 -0
  63. package/templates/skills/cc-audit/steps/step-02-analyze.md +158 -0
  64. package/templates/skills/cc-audit/steps/step-03-report.md +142 -0
  65. package/templates/skills/cc-skill/SKILL.md +134 -0
  66. package/templates/skills/cc-skill/references/best-practices.md +167 -0
  67. package/templates/skills/cc-skill/references/frontmatter-reference.md +182 -0
  68. package/templates/skills/cc-skill/references/skill-patterns.md +199 -0
  69. package/templates/skills/cc-skill/steps/step-00-init.md +119 -0
  70. package/templates/skills/cc-skill/steps/step-01-design.md +199 -0
  71. package/templates/skills/cc-skill/steps/step-02-generate.md +145 -0
  72. package/templates/skills/cc-skill/steps/step-03-steps.md +151 -0
  73. package/templates/skills/cc-skill/steps/step-04-validate.md +124 -0
  74. package/templates/skills/cc-skill/templates/skill-forked.md +85 -0
  75. package/templates/skills/cc-skill/templates/skill-progressive.md +102 -0
  76. package/templates/skills/cc-skill/templates/skill-simple.md +75 -0
  77. package/templates/skills/cc-skill/templates/step-template.md +82 -0
  78. package/templates/skills/check-version/SKILL.md +6 -0
  79. package/templates/skills/debug/SKILL.md +4 -0
  80. package/templates/skills/documentation/SKILL.md +1 -0
  81. package/templates/skills/efcore/SKILL.md +5 -0
  82. package/templates/skills/efcore/steps/db/step-deploy.md +26 -5
  83. package/templates/skills/efcore/steps/shared/step-00-init.md +21 -7
  84. package/templates/skills/explore/SKILL.md +28 -32
  85. package/templates/skills/feature-full/SKILL.md +1 -0
  86. package/templates/skills/gitflow/SKILL.md +8 -0
  87. package/templates/skills/gitflow/steps/step-start.md +45 -10
  88. package/templates/skills/mcp/SKILL.md +38 -18
  89. package/templates/skills/quick-search/SKILL.md +8 -1
  90. package/templates/skills/ralph-loop/SKILL.md +1 -1
  91. package/templates/skills/ralph-loop/steps/step-00-init.md +8 -68
  92. package/templates/skills/ralph-loop/steps/step-04-check.md +1 -1
  93. package/templates/skills/refactor/SKILL.md +1 -0
  94. package/templates/skills/review-code/SKILL.md +7 -1
  95. package/templates/skills/ui-components/SKILL.md +31 -438
  96. package/templates/skills/ui-components/accessibility.md +170 -0
  97. package/templates/skills/ui-components/patterns/data-table.md +39 -0
  98. package/templates/skills/ui-components/patterns/entity-card.md +77 -0
  99. package/templates/skills/ui-components/patterns/grid-layout.md +91 -0
  100. package/templates/skills/ui-components/patterns/kanban.md +43 -0
  101. package/templates/skills/ui-components/style-guide.md +86 -0
  102. package/templates/skills/utils/SKILL.md +1 -0
  103. package/templates/skills/validate/SKILL.md +1 -0
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "https://atlashub.ch/schemas/smartstack-mcp-config.json",
3
+ "version": "1.0.0",
4
+ "smartstack": {
5
+ "projectPath": "D:/SmartStack.app/features/Rework-to-package",
6
+ "apiUrl": "https://localhost:7055",
7
+ "apiEnabled": true
8
+ },
9
+ "conventions": {
10
+ "schemas": {
11
+ "platform": "core",
12
+ "extensions": "extensions"
13
+ },
14
+ "tablePrefixes": [
15
+ "auth_",
16
+ "nav_",
17
+ "usr_",
18
+ "ai_",
19
+ "cfg_",
20
+ "wkf_",
21
+ "support_",
22
+ "entra_",
23
+ "ref_",
24
+ "loc_",
25
+ "lic_"
26
+ ],
27
+ "migrationFormat": "YYYYMMDD_NNN_{Description}",
28
+ "namespaces": {
29
+ "domain": "SmartStack.Domain",
30
+ "application": "SmartStack.Application",
31
+ "infrastructure": "SmartStack.Infrastructure",
32
+ "api": "SmartStack.Api"
33
+ },
34
+ "servicePattern": {
35
+ "interface": "I{Name}Service",
36
+ "implementation": "{Name}Service"
37
+ }
38
+ },
39
+ "efcore": {
40
+ "contexts": [
41
+ {
42
+ "name": "ApplicationDbContext",
43
+ "projectPath": "auto-detect",
44
+ "migrationsFolder": "Migrations"
45
+ }
46
+ ],
47
+ "validation": {
48
+ "checkModelSnapshot": true,
49
+ "checkMigrationOrder": true,
50
+ "requireBuildSuccess": true
51
+ }
52
+ },
53
+ "scaffolding": {
54
+ "outputPath": "auto-detect",
55
+ "templates": {
56
+ "service": "templates/service-extension.cs.hbs",
57
+ "entity": "templates/entity-extension.cs.hbs",
58
+ "controller": "templates/controller.cs.hbs",
59
+ "component": "templates/component.tsx.hbs"
60
+ }
61
+ }
62
+ }
package/dist/index.js CHANGED
@@ -112303,6 +112303,7 @@ async function installCommands(options = {}) {
112303
112303
  }
112304
112304
  }
112305
112305
  }
112306
+ await registerMcpServer();
112306
112307
  const now = (/* @__PURE__ */ new Date()).toISOString();
112307
112308
  const manifest = {
112308
112309
  version: getPackageVersion(),
@@ -112316,6 +112317,54 @@ async function installCommands(options = {}) {
112316
112317
  await writeManifest(claudeDir, manifest);
112317
112318
  return result;
112318
112319
  }
112320
+ async function registerMcpServer() {
112321
+ try {
112322
+ const claudeAvailable = (0, import_child_process.spawnSync)("claude", ["--version"], {
112323
+ encoding: "utf-8",
112324
+ shell: true,
112325
+ timeout: 5e3
112326
+ });
112327
+ if (claudeAvailable.status !== 0) {
112328
+ logger.warning("Claude Code CLI not available - skipping MCP registration");
112329
+ return;
112330
+ }
112331
+ const listResult = (0, import_child_process.spawnSync)("claude", ["mcp", "list"], {
112332
+ encoding: "utf-8",
112333
+ shell: true,
112334
+ timeout: 1e4
112335
+ });
112336
+ const mcpList = listResult.stdout || "";
112337
+ const hasSmartstack = mcpList.toLowerCase().includes("smartstack");
112338
+ if (hasSmartstack && mcpList.includes("@atlashub/smartstack-mcp")) {
112339
+ logger.info("Migrating from standalone @atlashub/smartstack-mcp to bundled version...");
112340
+ (0, import_child_process.spawnSync)("claude", ["mcp", "remove", "smartstack"], {
112341
+ encoding: "utf-8",
112342
+ shell: true,
112343
+ timeout: 1e4
112344
+ });
112345
+ }
112346
+ if (!hasSmartstack || mcpList.includes("@atlashub/smartstack-mcp")) {
112347
+ const addResult = (0, import_child_process.spawnSync)(
112348
+ "claude",
112349
+ ["mcp", "add", "smartstack", "--", "npx", "-p", "@atlashub/smartstack-cli", "smartstack-mcp"],
112350
+ {
112351
+ encoding: "utf-8",
112352
+ shell: true,
112353
+ timeout: 15e3
112354
+ }
112355
+ );
112356
+ if (addResult.status === 0) {
112357
+ logger.success("Registered SmartStack MCP server (bundled)");
112358
+ } else {
112359
+ logger.warning("Failed to register MCP server - register manually: claude mcp add smartstack -- npx -p @atlashub/smartstack-cli smartstack-mcp");
112360
+ }
112361
+ } else {
112362
+ logger.info("SmartStack MCP server already registered");
112363
+ }
112364
+ } catch {
112365
+ logger.warning("MCP registration skipped (error occurred)");
112366
+ }
112367
+ }
112319
112368
  async function uninstallCommands(options = {}) {
112320
112369
  const global3 = options.global ?? true;
112321
112370
  const claudeDir = getClaudeDir(global3);
@@ -124530,8 +124579,8 @@ var REQUIRED_MCP_SERVERS = [
124530
124579
  },
124531
124580
  {
124532
124581
  name: "smartstack",
124533
- description: "SmartStack validation and scaffolding",
124534
- installCommand: "npm install -g @atlashub/smartstack-mcp && claude mcp add smartstack -- npx @atlashub/smartstack-mcp"
124582
+ description: "SmartStack validation and scaffolding (bundled)",
124583
+ installCommand: "claude mcp add smartstack -- npx -p @atlashub/smartstack-cli smartstack-mcp"
124535
124584
  }
124536
124585
  ];
124537
124586
  function getInstalledMcpServers() {
@@ -125422,7 +125471,10 @@ adminCommand.command("reset").description("Reset the localAdmin account password
125422
125471
  process.exit(1);
125423
125472
  }
125424
125473
  let selectedFile;
125425
- if (appSettingsFiles.length === 1) {
125474
+ const localFile = appSettingsFiles.find((f) => (0, import_path9.basename)(f) === "appsettings.Local.json");
125475
+ if (localFile && extractConnectionString(localFile)) {
125476
+ selectedFile = localFile;
125477
+ } else if (appSettingsFiles.length === 1) {
125426
125478
  selectedFile = appSettingsFiles[0];
125427
125479
  } else {
125428
125480
  const choices = appSettingsFiles.map((f) => ({
@@ -125434,7 +125486,8 @@ adminCommand.command("reset").description("Reset the localAdmin account password
125434
125486
  type: "list",
125435
125487
  name: "file",
125436
125488
  message: "Select environment:",
125437
- choices
125489
+ choices,
125490
+ default: localFile || void 0
125438
125491
  }
125439
125492
  ]);
125440
125493
  selectedFile = file;