@atlashub/smartstack-cli 4.18.0 → 4.20.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 (164) hide show
  1. package/package.json +1 -1
  2. package/templates/agents/ba-reader.md +86 -80
  3. package/templates/agents/ba-writer.md +318 -415
  4. package/templates/agents/docs-context-reader.md +3 -3
  5. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -0
  6. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +126 -0
  7. package/templates/skills/apex/SKILL.md +29 -16
  8. package/templates/skills/apex/_shared.md +62 -9
  9. package/templates/skills/apex/references/analysis-methods.md +8 -6
  10. package/templates/skills/apex/references/challenge-questions.md +5 -5
  11. package/templates/skills/apex/references/core-seed-data.md +68 -45
  12. package/templates/skills/apex/references/frontend-route-wiring-app-tsx.md +26 -21
  13. package/templates/skills/apex/references/parallel-execution.md +156 -0
  14. package/templates/skills/apex/references/person-extension-pattern.md +12 -12
  15. package/templates/skills/apex/references/post-checks.md +1748 -1726
  16. package/templates/skills/apex/references/smartstack-api.md +63 -57
  17. package/templates/skills/apex/references/smartstack-frontend-compliance.md +594 -0
  18. package/templates/skills/apex/references/smartstack-frontend.md +1246 -1842
  19. package/templates/skills/apex/references/smartstack-layers.md +98 -145
  20. package/templates/skills/apex/steps/step-00-init.md +30 -6
  21. package/templates/skills/apex/steps/step-01-analyze.md +27 -23
  22. package/templates/skills/apex/steps/step-02-plan.md +12 -12
  23. package/templates/skills/apex/steps/step-03-execute.md +198 -143
  24. package/templates/skills/apex/steps/step-04-examine.md +24 -93
  25. package/templates/skills/apex/steps/step-05-deep-review.md +16 -16
  26. package/templates/skills/apex/steps/step-06-resolve.md +9 -9
  27. package/templates/skills/apex/steps/step-07-tests.md +3 -1
  28. package/templates/skills/apex/steps/step-08-run-tests.md +1 -1
  29. package/templates/skills/business-analyse/SKILL.md +182 -301
  30. package/templates/skills/business-analyse/_shared.md +119 -336
  31. package/templates/skills/business-analyse/html/ba-interactive.html +706 -85
  32. package/templates/skills/business-analyse/html/build-html.js +41 -3
  33. package/templates/skills/business-analyse/html/src/partials/cadrage-context.html +34 -0
  34. package/templates/skills/business-analyse/html/src/partials/cadrage-risks.html +48 -0
  35. package/templates/skills/business-analyse/html/src/partials/cadrage-scope.html +49 -0
  36. package/templates/skills/business-analyse/html/src/partials/cadrage-stakeholders.html +55 -0
  37. package/templates/skills/business-analyse/html/src/partials/cadrage-success.html +34 -0
  38. package/templates/skills/business-analyse/html/src/partials/consol-datamodel.html +8 -0
  39. package/templates/skills/business-analyse/html/src/partials/consol-flows.html +29 -0
  40. package/templates/skills/business-analyse/html/src/partials/consol-interactions.html +8 -0
  41. package/templates/skills/business-analyse/html/src/partials/consol-permissions.html +8 -0
  42. package/templates/skills/business-analyse/html/src/partials/decomp-dependencies.html +38 -0
  43. package/templates/skills/business-analyse/html/src/partials/decomp-modules.html +51 -0
  44. package/templates/skills/business-analyse/html/src/partials/handoff-summary.html +24 -0
  45. package/templates/skills/business-analyse/html/src/partials/module-spec-container.html +4 -0
  46. package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +17 -1
  47. package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +32 -6
  48. package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +100 -63
  49. package/templates/skills/business-analyse/html/src/scripts/06-render-mockups.js +372 -0
  50. package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +1 -1
  51. package/templates/skills/business-analyse/html/src/scripts/10-comments.js +41 -13
  52. package/templates/skills/business-analyse/html/src/styles/09-mockups-html.css +136 -0
  53. package/templates/skills/business-analyse/html/src/template.html +1 -1
  54. package/templates/skills/business-analyse/patterns/suggestion-catalog.md +7 -5
  55. package/templates/skills/business-analyse/questionnaire/01-context.md +11 -157
  56. package/templates/skills/business-analyse/questionnaire/02-stakeholders-scope.md +101 -0
  57. package/templates/skills/business-analyse/questionnaire/03-data-ui.md +92 -0
  58. package/templates/skills/business-analyse/questionnaire/04-risks-metrics.md +6 -0
  59. package/templates/skills/business-analyse/questionnaire/05-cross-module.md +69 -0
  60. package/templates/skills/business-analyse/questionnaire.md +22 -280
  61. package/templates/skills/business-analyse/react/application-viewer.md +2 -2
  62. package/templates/skills/business-analyse/react/components.md +4 -4
  63. package/templates/skills/business-analyse/react/i18n-template.md +1 -1
  64. package/templates/skills/business-analyse/react/schema.md +14 -14
  65. package/templates/skills/business-analyse/references/acceptance-criteria.md +21 -21
  66. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +3 -3
  67. package/templates/skills/business-analyse/references/compilation-structure-cards.md +1 -1
  68. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +5 -5
  69. package/templates/skills/business-analyse/references/deploy-data-build.md +12 -11
  70. package/templates/skills/business-analyse/references/deploy-modes.md +10 -10
  71. package/templates/skills/business-analyse/references/detection-strategies.md +6 -6
  72. package/templates/skills/business-analyse/references/html-data-mapping.md +15 -15
  73. package/templates/skills/business-analyse/references/naming-conventions.md +4 -4
  74. package/templates/skills/business-analyse/references/review-data-mapping.md +29 -29
  75. package/templates/skills/business-analyse/references/robustness-checks.md +36 -36
  76. package/templates/skills/business-analyse/references/spec-auto-inference.md +2 -2
  77. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
  78. package/templates/skills/business-analyse/references/ui-resource-cards.md +1 -1
  79. package/templates/skills/business-analyse/references/validation-checklist.md +3 -3
  80. package/templates/skills/business-analyse/references/wireframe-svg-style-guide.md +2 -2
  81. package/templates/skills/business-analyse/schemas/application-schema.json +8 -8
  82. package/templates/skills/business-analyse/schemas/feature-schema.json +3 -3
  83. package/templates/skills/business-analyse/schemas/index-schema.json +47 -0
  84. package/templates/skills/business-analyse/schemas/project-schema.json +6 -6
  85. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +1 -1
  86. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +5 -3
  87. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +4 -4
  88. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +1 -1
  89. package/templates/skills/business-analyse/schemas/shared/common-defs.json +4 -4
  90. package/templates/skills/business-analyse/steps/step-00-init.md +68 -77
  91. package/templates/skills/business-analyse/steps/step-01-cadrage.md +50 -216
  92. package/templates/skills/business-analyse/steps/step-02-structure.md +175 -0
  93. package/templates/skills/business-analyse/steps/step-03-specify.md +198 -0
  94. package/templates/skills/business-analyse/steps/step-04-consolidate.md +478 -0
  95. package/templates/skills/business-analyse/steps/step-05-deploy.md +220 -0
  96. package/templates/skills/business-analyse/steps/step-06-review.md +51 -69
  97. package/templates/skills/business-analyse/templates/tpl-frd.md +1 -1
  98. package/templates/skills/business-analyse/templates/tpl-handoff.md +20 -17
  99. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +2 -2
  100. package/templates/skills/business-analyse/templates-react.md +2 -2
  101. package/templates/skills/derive-prd/SKILL.md +92 -0
  102. package/templates/skills/derive-prd/references/acceptance-criteria.md +169 -0
  103. package/templates/skills/derive-prd/references/entity-domain-mapping.md +115 -0
  104. package/templates/skills/{business-analyse → derive-prd}/references/handoff-file-templates.md +131 -120
  105. package/templates/skills/{business-analyse → derive-prd}/references/handoff-mappings.md +95 -95
  106. package/templates/skills/{business-analyse → derive-prd}/references/handoff-seeddata-generation.md +312 -312
  107. package/templates/skills/{business-analyse → derive-prd}/references/prd-generation.md +262 -263
  108. package/templates/skills/derive-prd/references/readiness-scoring.md +104 -0
  109. package/templates/skills/derive-prd/schemas/handoff-schema.json +95 -0
  110. package/templates/skills/derive-prd/steps/step-00-validate.md +130 -0
  111. package/templates/skills/derive-prd/steps/step-01-transform.md +206 -0
  112. package/templates/skills/derive-prd/steps/step-02-export.md +181 -0
  113. package/templates/skills/{business-analyse → derive-prd}/templates/tpl-progress.md +172 -172
  114. package/templates/skills/documentation/SKILL.md +7 -0
  115. package/templates/skills/ralph-loop/SKILL.md +2 -1
  116. package/templates/skills/ralph-loop/references/init-resume-recovery.md +1 -1
  117. package/templates/skills/ralph-loop/steps/step-01-task.md +2 -2
  118. package/templates/skills/apex/references/agent-teams-protocol.md +0 -203
  119. package/templates/skills/business-analyse/_architecture.md +0 -124
  120. package/templates/skills/business-analyse/_elicitation.md +0 -206
  121. package/templates/skills/business-analyse/_module-loop.md +0 -115
  122. package/templates/skills/business-analyse/_rules.md +0 -142
  123. package/templates/skills/business-analyse/_suggestions.md +0 -34
  124. package/templates/skills/business-analyse/questionnaire/00-application.md +0 -160
  125. package/templates/skills/business-analyse/questionnaire/00b-project.md +0 -85
  126. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +0 -189
  127. package/templates/skills/business-analyse/questionnaire/03-scope.md +0 -164
  128. package/templates/skills/business-analyse/questionnaire/04-data.md +0 -88
  129. package/templates/skills/business-analyse/questionnaire/05-integrations.md +0 -58
  130. package/templates/skills/business-analyse/questionnaire/06-security.md +0 -68
  131. package/templates/skills/business-analyse/questionnaire/07-ui.md +0 -76
  132. package/templates/skills/business-analyse/questionnaire/08-performance.md +0 -42
  133. package/templates/skills/business-analyse/questionnaire/09-constraints.md +0 -45
  134. package/templates/skills/business-analyse/questionnaire/10-documentation.md +0 -58
  135. package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +0 -59
  136. package/templates/skills/business-analyse/questionnaire/12-migration.md +0 -58
  137. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +0 -69
  138. package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +0 -135
  139. package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +0 -136
  140. package/templates/skills/business-analyse/references/agent-module-prompt.md +0 -366
  141. package/templates/skills/business-analyse/references/agent-pooling-best-practices.md +0 -557
  142. package/templates/skills/business-analyse/references/cache-warming-strategy.md +0 -566
  143. package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +0 -41
  144. package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +0 -74
  145. package/templates/skills/business-analyse/references/cadrage-pre-analysis.md +0 -115
  146. package/templates/skills/business-analyse/references/cadrage-shared-modules.md +0 -68
  147. package/templates/skills/business-analyse/references/cadrage-structure-cards.md +0 -85
  148. package/templates/skills/business-analyse/references/team-orchestration.md +0 -1093
  149. package/templates/skills/business-analyse/references/validate-incremental-html.md +0 -121
  150. package/templates/skills/business-analyse/steps/step-01b-applications.md +0 -419
  151. package/templates/skills/business-analyse/steps/step-02-decomposition.md +0 -387
  152. package/templates/skills/business-analyse/steps/step-03a-data.md +0 -16
  153. package/templates/skills/business-analyse/steps/step-03a1-setup.md +0 -486
  154. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +0 -300
  155. package/templates/skills/business-analyse/steps/step-03b-ui.md +0 -405
  156. package/templates/skills/business-analyse/steps/step-03c-compile.md +0 -516
  157. package/templates/skills/business-analyse/steps/step-03d-validate.md +0 -691
  158. package/templates/skills/business-analyse/steps/step-04-consolidation.md +0 -17
  159. package/templates/skills/business-analyse/steps/step-04a-collect.md +0 -415
  160. package/templates/skills/business-analyse/steps/step-04b-analyze.md +0 -163
  161. package/templates/skills/business-analyse/steps/step-04c-decide.md +0 -186
  162. package/templates/skills/business-analyse/steps/step-05a-handoff.md +0 -937
  163. package/templates/skills/business-analyse/steps/step-05b-deploy.md +0 -522
  164. package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +0 -703
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: docs-context-reader
3
- description: Reads project documentation (docs/business/**/feature.json, web docs, docs-manifest.json) and produces a structured summary for context injection into skills and agents
3
+ description: Reads project documentation (docs/business/**/index.json, web docs, docs-manifest.json) and produces a structured summary for context injection into skills and agents
4
4
  color: green
5
5
  tools: Read, Glob, Grep
6
6
  model: haiku
@@ -24,10 +24,10 @@ If absent, fall back to directory scanning.
24
24
 
25
25
  **Business Analysis outputs (v3.0 - JSON format):**
26
26
  ```
27
- Glob: docs/business/**/business-analyse/v*/feature.json
27
+ Glob: docs/business/**/business-analyse/v*/index.json
28
28
  ```
29
29
 
30
- For each feature.json found, read the JSON and extract:
30
+ For each index.json found, read the JSON and extract:
31
31
  - `id` (FEAT-XXX)
32
32
  - `status` (draft/analysed/specified/approved/handed-off)
33
33
  - `metadata` (application, module, version, dates)
@@ -0,0 +1,133 @@
1
+ {{!-- SmartStack NavRoute Registry Template --}}
2
+ {{!-- Generates centralized route registry for frontend --}}
3
+
4
+ /**
5
+ * NavRoute Registry
6
+ *
7
+ * Auto-generated by SmartStack MCP - DO NOT EDIT MANUALLY
8
+ * Generated: {{generatedAt}}
9
+ * Source: {{source}}
10
+ * Routes: {{routeCount}}
11
+ */
12
+
13
+ export interface NavRoute {
14
+ /** NavRoute path (e.g., "administration.users") */
15
+ navRoute: string;
16
+ /** API endpoint path (e.g., "/api/administration/users") */
17
+ api: string;
18
+ /** Frontend route path (e.g., "/administration/users") */
19
+ web: string;
20
+ /** Required permissions to access this route */
21
+ permissions: string[];
22
+ /** Backend controller name */
23
+ controller?: string;
24
+ /** Supported HTTP methods */
25
+ methods: string[];
26
+ }
27
+
28
+ /**
29
+ * All registered NavRoutes
30
+ */
31
+ export const ROUTES: Record<string, NavRoute> = {
32
+ {{#each routes}}
33
+ '{{this.navRoute}}': {
34
+ navRoute: '{{this.navRoute}}',
35
+ api: '{{this.apiPath}}',
36
+ web: '{{this.webPath}}',
37
+ permissions: [{{#each this.permissions}}'{{this}}'{{#unless @last}}, {{/unless}}{{/each}}],
38
+ {{#if this.controller}}
39
+ controller: '{{this.controller}}',
40
+ {{/if}}
41
+ methods: [{{#each this.methods}}'{{this}}'{{#unless @last}}, {{/unless}}{{/each}}],
42
+ },
43
+ {{/each}}
44
+ };
45
+
46
+ /**
47
+ * Get route configuration by NavRoute path
48
+ * @throws Error if route not found
49
+ */
50
+ export function getRoute(navRoute: string): NavRoute {
51
+ const route = ROUTES[navRoute];
52
+ if (!route) {
53
+ throw new Error(`Route not found: ${navRoute}. Run scaffold_routes to regenerate.`);
54
+ }
55
+ return route;
56
+ }
57
+
58
+ /**
59
+ * Safely get route configuration, returns undefined if not found
60
+ */
61
+ export function tryGetRoute(navRoute: string): NavRoute | undefined {
62
+ return ROUTES[navRoute];
63
+ }
64
+
65
+ /**
66
+ * Check if user has permission for route
67
+ */
68
+ export function hasRoutePermission(navRoute: string, userPermissions: string[]): boolean {
69
+ const route = ROUTES[navRoute];
70
+ if (!route || route.permissions.length === 0) return true;
71
+ return route.permissions.some(p => userPermissions.includes(p));
72
+ }
73
+
74
+ /**
75
+ * Get all routes for an application (e.g., "administration")
76
+ */
77
+ export function getRoutesByApplication(application: string): NavRoute[] {
78
+ return Object.values(ROUTES).filter(r => r.navRoute.startsWith(`${application}.`));
79
+ }
80
+
81
+ /**
82
+ * Get all routes for an application and module (e.g., "administration.users")
83
+ */
84
+ export function getRoutesByModule(application: string, module: string): NavRoute[] {
85
+ const prefix = `${application}.${module}`;
86
+ return Object.values(ROUTES).filter(r => r.navRoute.startsWith(`${prefix}.`) || r.navRoute === prefix);
87
+ }
88
+
89
+ /**
90
+ * Get all unique applications
91
+ */
92
+ export function getApplications(): string[] {
93
+ const applications = new Set<string>();
94
+ for (const route of Object.values(ROUTES)) {
95
+ applications.add(route.navRoute.split('.')[0]);
96
+ }
97
+ return Array.from(applications);
98
+ }
99
+
100
+ /**
101
+ * Get all unique modules within an application
102
+ */
103
+ export function getModules(application: string): string[] {
104
+ const modules = new Set<string>();
105
+ for (const route of Object.values(ROUTES)) {
106
+ const parts = route.navRoute.split('.');
107
+ if (parts[0] === application && parts.length >= 2) {
108
+ modules.add(parts[1]);
109
+ }
110
+ }
111
+ return Array.from(modules);
112
+ }
113
+
114
+ /**
115
+ * Build API URL from NavRoute with optional path segments
116
+ */
117
+ export function buildApiUrl(navRoute: string, ...segments: string[]): string {
118
+ const route = getRoute(navRoute);
119
+ if (segments.length === 0) return route.api;
120
+ return `${route.api}/${segments.join('/')}`;
121
+ }
122
+
123
+ /**
124
+ * Build frontend URL from NavRoute with optional path segments
125
+ */
126
+ export function buildWebUrl(navRoute: string, ...segments: string[]): string {
127
+ const route = getRoute(navRoute);
128
+ if (segments.length === 0) return route.web;
129
+ return `${route.web}/${segments.join('/')}`;
130
+ }
131
+
132
+ // Route count for debugging
133
+ export const ROUTE_COUNT = {{routeCount}};
@@ -0,0 +1,126 @@
1
+ {{!-- SmartStack React Router Configuration Template --}}
2
+ {{!-- Generates router configuration from NavRoute registry --}}
3
+
4
+ /**
5
+ * React Router Configuration
6
+ *
7
+ * Auto-generated by SmartStack MCP - DO NOT EDIT MANUALLY
8
+ * Generated: {{generatedAt}}
9
+ */
10
+
11
+ import React, { Suspense, lazy } from 'react';
12
+ import { createBrowserRouter, RouteObject, Navigate } from 'react-router-dom';
13
+ import { ROUTES } from './navRoutes.generated';
14
+ {{#if includeGuards}}
15
+ import { ProtectedRoute, PermissionGuard } from './guards';
16
+ {{/if}}
17
+
18
+ // ============================================================================
19
+ // Layouts
20
+ // ============================================================================
21
+
22
+ {{#each applications}}
23
+ import { {{capitalize this}}Layout } from '../layouts/{{capitalize this}}Layout';
24
+ {{/each}}
25
+
26
+ // ============================================================================
27
+ // Pages (lazy loaded for code splitting)
28
+ // ============================================================================
29
+
30
+ {{#each routes}}
31
+ const {{pageName this.navRoute}}Page = lazy(() => import('../pages/{{pagePath this.navRoute}}'));
32
+ {{/each}}
33
+
34
+ // ============================================================================
35
+ // Loading Component
36
+ // ============================================================================
37
+
38
+ const PageLoader: React.FC = () => (
39
+ <div className="flex items-center justify-center h-64">
40
+ <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500" />
41
+ </div>
42
+ );
43
+
44
+ // ============================================================================
45
+ // Route Configuration
46
+ // ============================================================================
47
+
48
+ const routes: RouteObject[] = [
49
+ // Root redirect
50
+ {
51
+ path: '/',
52
+ element: <Navigate to="{{defaultPath}}" replace />,
53
+ },
54
+
55
+ {{#each applicationTree}}
56
+ // {{uppercase @key}} Application
57
+ {
58
+ path: '{{@key}}',
59
+ element: <{{capitalize @key}}Layout />,
60
+ children: [
61
+ {{#each this}}
62
+ {
63
+ path: '{{modulePath this.navRoute}}',
64
+ {{#if this.permissions.length}}
65
+ element: (
66
+ <PermissionGuard permissions={ROUTES['{{this.navRoute}}'].permissions}>
67
+ <Suspense fallback={<PageLoader />}>
68
+ <{{pageName this.navRoute}}Page />
69
+ </Suspense>
70
+ </PermissionGuard>
71
+ ),
72
+ {{else}}
73
+ element: (
74
+ <Suspense fallback={<PageLoader />}>
75
+ <{{pageName this.navRoute}}Page />
76
+ </Suspense>
77
+ ),
78
+ {{/if}}
79
+ },
80
+ {{/each}}
81
+ ],
82
+ },
83
+ {{/each}}
84
+
85
+ // 404 Not Found
86
+ {
87
+ path: '*',
88
+ element: (
89
+ <div className="flex flex-col items-center justify-center h-screen">
90
+ <h1 className="text-4xl font-bold text-gray-900">404</h1>
91
+ <p className="mt-2 text-gray-600">Page not found</p>
92
+ <a href="{{defaultPath}}" className="mt-4 text-blue-600 hover:underline">
93
+ Return to home
94
+ </a>
95
+ </div>
96
+ ),
97
+ },
98
+ ];
99
+
100
+ // ============================================================================
101
+ // Router Export
102
+ // ============================================================================
103
+
104
+ {{#if includeGuards}}
105
+ export const router = createBrowserRouter([
106
+ {
107
+ element: <ProtectedRoute />,
108
+ children: routes,
109
+ },
110
+ ]);
111
+ {{else}}
112
+ export const router = createBrowserRouter(routes);
113
+ {{/if}}
114
+
115
+ export default router;
116
+
117
+ // ============================================================================
118
+ // Type Exports
119
+ // ============================================================================
120
+
121
+ export type { RouteObject };
122
+
123
+ /**
124
+ * Get route configuration by NavRoute path
125
+ */
126
+ export const getRouteConfig = (navRoute: string) => ROUTES[navRoute];
@@ -59,7 +59,7 @@ Execute incremental SmartStack development using the APEX methodology. This skil
59
59
  | `{foundation_mode}` | boolean | Foundation mode: entities-only (no services/controllers/frontend). Used by ralph-loop Phase 0. |
60
60
  | `{app_name}` | string | Application name |
61
61
  | `{module_code}` | string | Module code |
62
- | `{sections}` | object[] | Sections (MANDATORY, min 1) with code/labels/icon/displayOrder |
62
+ | `{sections}` | object[] | Sections (required, min 1) with code/labels/icon/displayOrder |
63
63
  | `{entities}` | string[] | Main entities to manage (from need-challenge) |
64
64
  | `{module_complexity}` | string | "simple-crud", "crud-rules", "crud-workflow", "complex" |
65
65
  | `{has_dependencies}` | string | "none", "references", "unknown" |
@@ -73,6 +73,17 @@ Execute incremental SmartStack development using the APEX methodology. This skil
73
73
  | `{needs_notification}` | boolean | Notification integration required |
74
74
  </state_variables>
75
75
 
76
+ <state_persistence>
77
+
78
+ **These variables exist only in the conversation context.** There is no file-based persistence between sessions.
79
+
80
+ - Variables are set in step-00 (init) and propagated through subsequent steps via conversation context
81
+ - If the conversation is interrupted, use `-r` (resume) — the model will re-derive state from existing files and git history
82
+ - The `save_mode` (`-s`) flag writes step outputs to `.claude/output/apex/` but this is documentation, not resumable state
83
+ - Delegate mode (`-d`) reads initial state from the PRD file, making it more resilient to interruptions
84
+
85
+ </state_persistence>
86
+
76
87
  <entry_point>
77
88
 
78
89
  **FIRST ACTION:** Load `steps/step-00-init.md`
@@ -84,11 +95,11 @@ Execute incremental SmartStack development using the APEX methodology. This skil
84
95
 
85
96
  | Step | File | Model | Purpose |
86
97
  |------|------|-------|---------|
87
- | 00 | `steps/step-00-init.md` | Sonnet | Parse flags, detect application, verify MCP, define hierarchy (4 levels), challenge need |
88
- | 01 | `steps/step-01-analyze.md` | Opus | Explore existing code (Agent Teams or direct) |
98
+ | 00 | `steps/step-00-init.md` | Sonnet | Parse flags, detect application, verify MCP, define hierarchy (4 levels), scope validation |
99
+ | 01 | `steps/step-01-analyze.md` | Opus | Explore existing code (parallel Agent tool or sequential) |
89
100
  | 02 | `steps/step-02-plan.md` | Opus | Layer-by-layer plan with skill/MCP mapping |
90
101
  | 03 | `steps/step-03-execute.md` | Opus | Orchestrate execution via skills and MCP |
91
- | 04 | `steps/step-04-examine.md` | Opus | eXamine: MCP validation, build, 44 POST-CHECKs, acceptance criteria |
102
+ | 04 | `steps/step-04-examine.md` | Opus | eXamine: MCP validation, build, POST-CHECKs, acceptance criteria |
92
103
  | 05 | `steps/step-05-deep-review.md` | Opus | Deep Review: adversarial code review (if -x) |
93
104
  | 06 | `steps/step-06-resolve.md` | Opus | Fix BLOCKING findings (if any) |
94
105
  | 07 | `steps/step-07-tests.md` | Opus | Final Test Sweep: security tests, coverage, remaining failures |
@@ -98,13 +109,13 @@ Execute incremental SmartStack development using the APEX methodology. This skil
98
109
  <apex_phases>
99
110
  **APEX = Analyze → Plan → Execute → eXamine**
100
111
 
101
- | Phase | Step | Obligatory | Description |
102
- |-------|------|------------|-------------|
103
- | *Init* | 00 | Yes | Setup, hierarchy, challenge the need, **scope guard** (skipped in `-d` delegate mode) |
112
+ | Phase | Step | Required | Description |
113
+ |-------|------|----------|-------------|
114
+ | *Init* | 00 | Yes | Setup, hierarchy, scope validation, **scope guard** (skipped in `-d` delegate mode) |
104
115
  | **A** — Analyze | 01 | Yes | Explore existing code |
105
116
  | **P** — Plan | 02 | Yes | File-by-file plan with skill/MCP mapping |
106
117
  | **E** — Execute | 03 | Yes | Orchestrate creation via skills and MCP (5 layers: domain, seed, backend, frontend, devdata) |
107
- | **X** — eXamine | 04 | Yes | 3 MCP tools + 50 POST-CHECKs (6 security + 44 convention), build, acceptance criteria |
118
+ | **X** — eXamine | 04 | Yes | 3 MCP tools + POST-CHECKs (security + convention + architecture, see post-checks.md), build, acceptance criteria |
108
119
  | *Deep Review* | 05 (if -x) | No | Adversarial code review beyond automated checks |
109
120
  | *Resolve* | 06 (if BLOCKING) | No | Fix BLOCKING findings |
110
121
  | *Final Test Sweep* | 07-08 | **Yes** | Security tests, coverage sweep, remaining failures |
@@ -115,14 +126,15 @@ Execute incremental SmartStack development using the APEX methodology. This skil
115
126
 
116
127
  | File | Purpose | Loaded by | Stays in context for |
117
128
  |------|---------|-----------|---------------------|
118
- | `references/smartstack-api.md` | BaseEntity, interfaces, entity/config/controller patterns | step-01 | step-03 (do NOT re-read) |
119
- | `references/smartstack-layers.md` | Layer rules, skill/MCP mapping, planning templates, delegate fast path | step-02 | step-03 (do NOT re-read) |
120
- | `references/smartstack-frontend.md` | Frontend patterns, EntityLookup, i18n, compliance gates (sections 1-9) | step-03 | step-04 |
129
+ | `references/smartstack-api.md` | BaseEntity, interfaces, entity/config/controller patterns | step-01 | step-03 L0-L2 (released after L2) |
130
+ | `references/smartstack-layers.md` | Layer rules, skill/MCP mapping, planning templates, delegate fast path | step-02 | step-03 L0-L2 (released after L2) |
131
+ | `references/core-seed-data.md` | Comprehensive seed data templates (navigation, permissions, roles) | step-03 Layer 1 | released after Layer 1 |
132
+ | `references/smartstack-frontend.md` | Frontend patterns, EntityLookup, i18n (sections 1-6) | step-03 Layer 3 (deferred) | step-04 |
133
+ | `references/smartstack-frontend-compliance.md` | Documentation, form testing, compliance gates (sections 7-9) | step-03 Layer 3 (deferred) | step-04 |
121
134
  | `references/challenge-questions.md` | Hierarchy rules, challenge questions, delegate mode skip | step-00 | — |
122
- | `references/core-seed-data.md` | Comprehensive seed data templates (navigation, permissions, roles) | step-03 (ALWAYS for Layer 1) | — |
123
135
  | `references/error-classification.md` | Build error diagnosis categories A-F | step-03 (build failure), step-04 | — |
124
- | `references/agent-teams-protocol.md` | TeamCreate, coordination, shutdown protocol | step-01, step-03 (if NOT economy_mode) | — |
125
- | `references/post-checks.md` | 6 security + 44 convention bash checks (MCP tools run first) | step-04 | — |
136
+ | `references/parallel-execution.md` | Agent tool launch patterns, task coordination, decision matrix | step-01, step-03 (if NOT economy_mode) | — |
137
+ | `references/post-checks.md` | Security + convention + architecture bash checks (MCP tools run first) | step-04 | — |
126
138
 
127
139
  **Context propagation rule:** Files loaded in step N remain in conversation context for step N+1. Steps mark "do NOT re-read" to avoid duplicate reads.
128
140
  </reference_files>
@@ -134,8 +146,9 @@ Execute incremental SmartStack development using the APEX methodology. This skil
134
146
  - **MCP-first** - Use MCP scaffold/validate tools before manual approaches
135
147
  - **Verify MCP at startup** - step-00 checks MCP availability
136
148
  - **Layer order** - Layer 0 (domain+infra+migration) → Layer 1 (seed data) → Layer 2 (backend+tests) → Layer 3 (frontend+tests) → Layer 4 (devdata)
137
- - **Agent Teams** - Parallel execution for scan (step-01) and within Layer 2/3 (step-03) for multi-entity, unless economy_mode
149
+ - **Parallel Agent tool** - Parallel execution for scan (step-01) and within Layer 2/3 (step-03) for multi-entity, unless economy_mode
138
150
  - **Tests inline** - Backend tests run after Layer 2, frontend tests run after Layer 3 (max 3 fix iterations each). Step-07 = final sweep (security + coverage).
151
+ - **Exception: seed data** — The templates in core-seed-data.md and person-extension-pattern.md are generated directly because no MCP tool covers seed data creation. This is a documented exception to the "orchestrate, never generate" rule.
139
152
  - **Save outputs** if `{save_mode}` = true
140
153
  - **Commits per layer** - Atomic commits after each execution layer
141
154
  - **Delegate mode** (`-d`): Read PRD context, skip challenge questions, auto+economy mode implied. Used when `/ralph-loop` delegates code generation to `/apex`.
@@ -171,6 +184,6 @@ Execute incremental SmartStack development using the APEX methodology. This skil
171
184
  - Build: dotnet build PASS + npm run typecheck PASS (if frontend)
172
185
  - Seed data complete as dedicated Layer 1 (navigation, permissions, roles, provider) — impossible to skip
173
186
  - Tests inline: backend tests after Layer 2, frontend tests after Layer 3
174
- - Final test sweep: security tests + coverage >= 80% + 100% pass rate
187
+ - Final test sweep: security tests + coverage >= 80% + target 100% pass rate (acceptable fallback: skip with TODO after max retries)
175
188
  - Commits atomic per layer
176
189
  </success_criteria>
@@ -52,7 +52,7 @@ Write back to {delegate_prd_path}
52
52
 
53
53
  ## MCP Tools Reference
54
54
 
55
- ### Mandatory (every execution)
55
+ ### Required (every execution)
56
56
 
57
57
  | Tool | Purpose | Step |
58
58
  |------|---------|------|
@@ -74,14 +74,14 @@ Write back to {delegate_prd_path}
74
74
  - Section: `human-resources.employees.departments.read` (3+1)
75
75
  - Resource: `human-resources.employees.departments.export.execute` (4+1)
76
76
 
77
- > **CRITICAL — Permission codes use the SAME kebab-case segments as NavRoute codes.**
77
+ > Permission codes use the SAME kebab-case segments as NavRoute codes.
78
78
  > Every dot-separated segment in a permission path is a navigation entity code.
79
- > Multi-word codes MUST be kebab-case: `human-resources`, NOT `humanresources`.
79
+ > Multi-word codes must use kebab-case: `human-resources`, NOT `humanresources`.
80
80
  >
81
81
  > SmartStack.app reference: `support-client.my-tickets.read`, `administration.email-templates.read`
82
82
  >
83
- > **FORBIDDEN:** `humanresources.employees.read` (concatenated — no kebab-case)
84
- > **CORRECT:** `human-resources.employees.read` (kebab-case — matches NavRoute)
83
+ > Do not use: `humanresources.employees.read` (concatenated — no kebab-case)
84
+ > Correct: `human-resources.employees.read` (kebab-case — matches NavRoute)
85
85
 
86
86
  ### Generation (step-03)
87
87
 
@@ -93,7 +93,7 @@ Write back to {delegate_prd_path}
93
93
  | `scaffold_api_client` | Generate TypeScript API client | Frontend changes |
94
94
  | `scaffold_routes` | Generate React Router routes | Frontend changes |
95
95
 
96
- ### eXamine (step-04) — 43 POST-CHECKs
96
+ ### eXamine (step-04) — POST-CHECKs (see post-checks.md)
97
97
 
98
98
  | Tool | Purpose | Condition |
99
99
  |------|---------|-----------|
@@ -101,10 +101,10 @@ Write back to {delegate_prd_path}
101
101
  | `validate_frontend_routes` | Validate route/layout alignment | Frontend changes |
102
102
  | `validate_security` | Check security patterns | API changes |
103
103
 
104
- **Key BLOCKING POST-CHECKs (most common failures):**
105
- - **#8:** Forms must be full pages — ZERO modals/dialogs
104
+ **Key POST-CHECKs (most common failures):**
105
+ - **#8:** Forms must be full pages — no modals/dialogs
106
106
  - **#13:** No hardcoded Tailwind colors — use CSS variables only
107
- - **#6+27:** i18n in separate `locales/{lang}/{module}.json` — NEVER embedded in .ts
107
+ - **#6+27:** i18n in separate `locales/{lang}/{module}.json` — not embedded in .ts
108
108
  - **#10:** Form pages must have `.test.tsx` companion files
109
109
  - **#28:** Pages must use `useTranslation` — no hardcoded strings
110
110
 
@@ -132,6 +132,59 @@ Write back to {delegate_prd_path}
132
132
 
133
133
  ---
134
134
 
135
+ ## Severity Labels
136
+
137
+ | Label | Meaning | When to use |
138
+ |-------|---------|-------------|
139
+ | **BLOCKING** | Build fails or security vulnerability. Cannot proceed. | `dotnet build` / `npm typecheck` failure, OWASP violation, tenant isolation bypass |
140
+ | **CRITICAL** | Functionally broken at runtime but compiles. | Missing DI registration, wrong route, empty translations at runtime |
141
+ | **WARNING** | Suboptimal but works. Should fix before merge. | Missing tests, non-canonical naming, cosmetic issues |
142
+ | **INFO** | Suggestion or best practice. Non-blocking. | Performance tips, alternative patterns |
143
+
144
+ > **Rule:** Only use BLOCKING for issues that prevent compilation or create security vulnerabilities.
145
+ > CRITICAL is for runtime failures. Everything else is WARNING or INFO.
146
+
147
+ ---
148
+
149
+ ## MCP Degraded Mode
150
+
151
+ > When MCP is unavailable, fall back to manual patterns from reference files.
152
+
153
+ | MCP Tool | Fallback |
154
+ |----------|----------|
155
+ | `validate_conventions` | Manual review against `smartstack-api.md` patterns |
156
+ | `scaffold_extension` | Create files manually following `smartstack-api.md` entity/service/controller patterns |
157
+ | `suggest_migration` | Name format: `{context}_v{version}_{sequence}_{Description}` (see existing migrations for version) |
158
+ | `generate_permissions` | Write `HasData()` code manually following `core-seed-data.md` permission section |
159
+ | `scaffold_routes` | Create `applicationRoutes` array manually following `smartstack-frontend.md` §1 |
160
+ | `validate_frontend_routes` | Run POST-CHECK bash scripts from `post-checks.md` |
161
+ | `validate_security` | Run security POST-CHECKs S1-S6 from `post-checks.md` |
162
+ | `check_migrations` | Run `dotnet ef migrations has-pending-model-changes` manually |
163
+ | `scaffold_tests` | Create test files manually following `smartstack-frontend-compliance.md` §8 patterns |
164
+
165
+ ---
166
+
167
+ ## Context Bridge for Skill Delegation
168
+
169
+ > When delegating to `/controller`, `/ui-components`, `/application`, etc., pass this context block to ensure the skill has enough information.
170
+
171
+ ```
172
+ Context for {skill_name}:
173
+ - Application: {app_name}
174
+ - Module: {module_code}
175
+ - NavRoute: {navRoute} (e.g., "human-resources.employees")
176
+ - Entity: {entity_name} with properties: {key_properties}
177
+ - Tenant mode: {strict|optional|scoped|none}
178
+ - CSS: Use CSS variables ONLY (see smartstack-frontend.md §4)
179
+ - I18n: 4 languages (fr, en, it, de), namespace: {module-kebab}
180
+ - Forms: Full pages with own routes, ZERO modals/drawers
181
+ - FK fields: Use EntityLookup component (see smartstack-frontend.md §6)
182
+ ```
183
+
184
+ > Adjust the template based on the skill: backend skills don't need CSS/i18n context, frontend skills don't need tenant mode details.
185
+
186
+ ---
187
+
135
188
  ## Existing Skills Delegation
136
189
 
137
190
  | Skill | When to delegate |
@@ -12,7 +12,7 @@ For each entity found (or to be created), identify FK relationships:
12
12
  - Record: `{ entity, fkProperty, targetEntity, isRequired }`
13
13
 
14
14
  **Why:** FK fields drive two critical requirements:
15
- 1. **Frontend:** Each FK field MUST use `<EntityLookup />` (NEVER `<input>`, NEVER `<select>`)
15
+ 1. **Frontend:** Each FK field MUST use `<EntityLookup />` (not `<input>`, not `<select>`)
16
16
  2. **Backend:** Each target entity's GetAll MUST support `?search=` parameter + return `PaginatedResult<T>`
17
17
 
18
18
  See `references/smartstack-frontend.md` section 6 for EntityLookup patterns.
@@ -28,7 +28,7 @@ For each entity found (or to be created), determine the `tenantMode`:
28
28
  | `strict` | Data belongs to one tenant | Employee, Order, Invoice | `TenantId == current` |
29
29
  | `optional` | Can be shared or tenant-specific | Department, Currency, JobTitle | `TenantId == current OR TenantId == null` |
30
30
  | `scoped` | Explicit scope rules | Settings, Workflow, EmailTemplate | `TenantId == current AND Scope == current` |
31
- | `none` | Platform-wide (never filtered) | Navigation, Permission, User | No TenantId |
31
+ | `none` | Shared across all tenants (not filtered) | Navigation, Permission, User | No TenantId |
32
32
 
33
33
  **Why:** Tenant mode drives EF query filters, seed data generation, and API access control.
34
34
 
@@ -41,7 +41,7 @@ For each entity found (or to be created), determine the `tenantMode`:
41
41
  For each entity found (or to be created), identify code generation needs using the following **priority order**:
42
42
 
43
43
  ```
44
- PRIORITY 1 — User choice from challenge questions (step-00):
44
+ PRIORITY 1 — User choice from scope validation (step-00):
45
45
  IF {code_patterns} is set (from step-00 section 5c):
46
46
  → Use {code_patterns} for each entity
47
47
  → This is the user's explicit choice — always takes precedence
@@ -51,7 +51,7 @@ PRIORITY 2 — feature.json (from /business-analyse):
51
51
  → Use codePattern config from feature.json (strategy, prefix, digits, etc.)
52
52
  → Record in analysis: entity has auto-generated code
53
53
 
54
- PRIORITY 3 — Heuristic fallback (delegate mode ONLY):
54
+ PRIORITY 3 — Heuristic fallback (delegate mode only):
55
55
  IF delegate_mode AND no code pattern from Priority 1 or 2:
56
56
  → Apply heuristic default based on entity name:
57
57
  Invoice/Order/Receipt/PurchaseOrder → timestamp-daily
@@ -59,7 +59,7 @@ PRIORITY 3 — Heuristic fallback (delegate mode ONLY):
59
59
  Contract/Policy/Agreement → year-sequential
60
60
  Category/Status/Type (reference data) → uuid-short
61
61
  Employee/Customer/Project → sequential
62
- WARNING: heuristic applied — PRD was incomplete
62
+ Note: heuristic applied — PRD was incomplete
63
63
 
64
64
  FALLBACK — Manual (safest default):
65
65
  IF none of the above apply:
@@ -67,12 +67,14 @@ FALLBACK — Manual (safest default):
67
67
  → No auto-generation, no ICodeGenerator injection
68
68
  ```
69
69
 
70
- **IMPORTANT:** In interactive mode (no `-d` flag), heuristics are NEVER applied silently. The user is always asked via challenge questions (step-00 section 5c). Heuristics only serve as fallback in delegate mode when the PRD is incomplete.
70
+ **Important:** In interactive mode (no `-d` flag), heuristics are never applied silently. The user is always asked via scope validation (step-00 section 5c). Heuristics only serve as fallback in delegate mode when the PRD is incomplete.
71
71
 
72
72
  **Why:** Code generation strategy drives CreateDto structure, service injection (ICodeGenerator<T>), and DI registration.
73
73
 
74
74
  **Reference:** See `references/code-generation.md` for strategy table, volume-to-digits calculation, and backend patterns.
75
75
 
76
+
77
+
76
78
  ---
77
79
 
78
80
  ## Gap Analysis
@@ -2,11 +2,11 @@
2
2
 
3
3
  > **Referenced by:** step-00-init.md
4
4
  > Question templates for context detection, hierarchy validation, and need challenging.
5
- > Previously split across `challenge-questions.md` and `initialization-challenge-flow.md` now consolidated here.
5
+ > Consolidates all challenge questions and hierarchy validation in a single file.
6
6
 
7
7
  ---
8
8
 
9
- ## 4-Level Navigation Hierarchy (BLOCKING RULE)
9
+ ## 4-Level Navigation Hierarchy (MANDATORY)
10
10
 
11
11
  SmartStack uses a **4-level navigation hierarchy:**
12
12
  - **Level 1: Application** — e.g., "HumanResources", "ProjectManagement"
@@ -14,7 +14,7 @@ SmartStack uses a **4-level navigation hierarchy:**
14
14
  - **Level 3: Section** — e.g., "List", "Dashboard", "Approval"
15
15
  - **Level 4: Resource** — e.g., "Export", "Settings" (optional)
16
16
 
17
- **BLOCKING RULE:** Every module MUST have at least one section. A module without sections produces an incomplete navigation tree, broken seed data, and missing frontend routes.
17
+ Every module MUST have at least one section. A module without sections produces an incomplete navigation tree, broken seed data, and missing frontend routes.
18
18
 
19
19
  ---
20
20
 
@@ -61,7 +61,7 @@ questions:
61
61
 
62
62
  ## 4c. Section Selection
63
63
 
64
- > **BLOCKING:** This question MUST be asked. `{sections}` MUST contain at least one entry before proceeding.
64
+ > This question MUST be asked. `{sections}` MUST contain at least one entry before proceeding.
65
65
 
66
66
  Infer section suggestions from:
67
67
  1. Task description (extract nouns/concepts that suggest functional sub-areas)
@@ -82,7 +82,7 @@ questions:
82
82
  multiSelect: true
83
83
  ```
84
84
 
85
- **Validation (BLOCKING):**
85
+ **Validation:**
86
86
  ```
87
87
  IF {sections}.length == 0:
88
88
  DISPLAY: "Every module must have at least one section. Please select or define at least one."