@atlashub/smartstack-cli 3.39.0 → 3.41.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.
- package/.documentation/apex.html +644 -644
- package/.documentation/css/styles.css +2320 -2320
- package/.documentation/init.html +1377 -1377
- package/.documentation/js/app.js +780 -780
- package/.documentation/prd-json-v2.0.0.md +396 -396
- package/.documentation/testing-ba-e2e.md +462 -462
- package/config/default-config.json +95 -95
- package/config/mcp-defaults.json +62 -62
- package/config/settings.json +53 -53
- package/config/settings.local.example.json +16 -16
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +6 -4
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +115 -115
- package/scripts/extract-api-endpoints.ts +325 -325
- package/scripts/extract-business-rules.ts +440 -440
- package/scripts/generate-doc-with-mock-ui.ts +804 -804
- package/scripts/health-check.sh +168 -168
- package/scripts/postinstall.js +18 -18
- package/templates/agents/action.md +37 -37
- package/templates/agents/ba-reader.md +378 -378
- package/templates/agents/ba-writer.md +861 -861
- package/templates/agents/code-reviewer.md +163 -163
- package/templates/agents/db-reader.md +149 -149
- package/templates/agents/docs-context-reader.md +143 -143
- package/templates/agents/docs-sync-checker.md +122 -122
- package/templates/agents/efcore/conflicts.md +95 -84
- package/templates/agents/efcore/db-deploy.md +85 -74
- package/templates/agents/efcore/db-reset.md +96 -85
- package/templates/agents/efcore/db-seed.md +72 -61
- package/templates/agents/efcore/db-status.md +97 -86
- package/templates/agents/efcore/migration.md +197 -186
- package/templates/agents/efcore/rebase-snapshot.md +119 -108
- package/templates/agents/efcore/scan.md +103 -92
- package/templates/agents/efcore/squash.md +172 -161
- package/templates/agents/explore-codebase.md +66 -66
- package/templates/agents/explore-docs.md +98 -98
- package/templates/agents/fix-grammar.md +50 -50
- package/templates/agents/gitflow/abort.md +45 -45
- package/templates/agents/gitflow/cleanup.md +96 -96
- package/templates/agents/gitflow/commit.md +236 -236
- package/templates/agents/gitflow/exec.md +48 -48
- package/templates/agents/gitflow/finish.md +146 -146
- package/templates/agents/gitflow/init-clone.md +199 -199
- package/templates/agents/gitflow/init-detect.md +137 -137
- package/templates/agents/gitflow/init-validate.md +225 -225
- package/templates/agents/gitflow/init.md +340 -340
- package/templates/agents/gitflow/merge.md +145 -145
- package/templates/agents/gitflow/plan.md +42 -42
- package/templates/agents/gitflow/pr.md +191 -191
- package/templates/agents/gitflow/review.md +49 -49
- package/templates/agents/gitflow/start.md +147 -147
- package/templates/agents/gitflow/status.md +95 -95
- package/templates/agents/mcp-healthcheck.md +163 -163
- package/templates/agents/snipper.md +37 -37
- package/templates/agents/websearch.md +46 -46
- package/templates/hooks/appsettings-guard.sh +76 -76
- package/templates/hooks/docs-drift-check.md +96 -96
- package/templates/hooks/ef-migration-check.md +139 -139
- package/templates/hooks/hooks.json +58 -58
- package/templates/hooks/mcp-check.md +64 -64
- package/templates/hooks/ralph-mcp-logger.sh +46 -46
- package/templates/hooks/ralph-session-end.sh +69 -69
- package/templates/hooks/stop-hook.sh +177 -177
- package/templates/hooks/wsl-dotnet-cleanup.sh +24 -24
- package/templates/mcp-scaffolding/component.tsx.hbs +318 -318
- package/templates/mcp-scaffolding/controller.cs.hbs +192 -192
- package/templates/mcp-scaffolding/entity-extension.cs.hbs +239 -239
- package/templates/mcp-scaffolding/frontend/api-client.ts.hbs +116 -116
- package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -133
- package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +126 -126
- package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +261 -261
- package/templates/mcp-scaffolding/service-extension.cs.hbs +53 -53
- package/templates/mcp-scaffolding/tests/controller.test.cs.hbs +436 -436
- package/templates/mcp-scaffolding/tests/entity.test.cs.hbs +239 -239
- package/templates/mcp-scaffolding/tests/repository.test.cs.hbs +441 -441
- package/templates/mcp-scaffolding/tests/security.test.cs.hbs +442 -442
- package/templates/mcp-scaffolding/tests/service.test.cs.hbs +402 -402
- package/templates/mcp-scaffolding/tests/validator.test.cs.hbs +428 -428
- package/templates/project/DependencyInjection.Application.cs.template +25 -25
- package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -61
- package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -70
- package/templates/project/ExampleEntity.cs.template +116 -116
- package/templates/project/ExampleEntityConfiguration.cs.template +64 -64
- package/templates/project/ExampleService.cs.template +146 -146
- package/templates/project/ExtensionsDbContext.cs.template +41 -41
- package/templates/project/IExtensionsDbContext.cs.template +22 -22
- package/templates/project/Program.cs.template +47 -47
- package/templates/project/README.md +79 -79
- package/templates/project/api.ts.template +12 -12
- package/templates/project/appsettings.json.template +170 -170
- package/templates/project/claude-settings.json.template +5 -5
- package/templates/project/test-frontend/msw/handlers.ts +58 -58
- package/templates/project/test-frontend/msw/server.ts +25 -25
- package/templates/project/test-frontend/setup.ts +16 -16
- package/templates/project/test-frontend/test-utils.tsx +59 -59
- package/templates/project/test-frontend/vitest.config.ts +31 -31
- package/templates/ralph/README.md +93 -93
- package/templates/ralph/ralph.config.yaml +113 -113
- package/templates/scripts/setup-ralph-loop.sh +173 -173
- package/templates/skills/_resources/config-safety.md +61 -61
- package/templates/skills/_resources/context-digest-template.md +53 -53
- package/templates/skills/_resources/doc-context-cache.md +60 -60
- package/templates/skills/_resources/docs-manifest-schema.md +155 -155
- package/templates/skills/_resources/formatting-guide.md +124 -124
- package/templates/skills/_resources/mcp-validate-documentation-spec.md +181 -181
- package/templates/skills/_shared.md +228 -228
- package/templates/skills/admin/SKILL.md +48 -48
- package/templates/skills/ai-prompt/SKILL.md +107 -107
- package/templates/skills/ai-prompt/steps/step-00-init.md +47 -47
- package/templates/skills/ai-prompt/steps/step-01-implementation.md +122 -122
- package/templates/skills/apex/SKILL.md +168 -168
- package/templates/skills/apex/_shared.md +141 -141
- package/templates/skills/apex/references/agent-teams-protocol.md +164 -164
- package/templates/skills/apex/references/analysis-methods.md +141 -141
- package/templates/skills/apex/references/challenge-questions.md +145 -145
- package/templates/skills/apex/references/code-generation.md +412 -412
- package/templates/skills/apex/references/core-seed-data.md +1437 -1437
- package/templates/skills/apex/references/error-classification.md +144 -144
- package/templates/skills/apex/references/examine-build-validation.md +82 -82
- package/templates/skills/apex/references/execution-frontend-gates.md +177 -177
- package/templates/skills/apex/references/execution-frontend-patterns.md +105 -105
- package/templates/skills/apex/references/execution-layer1-rules.md +96 -96
- package/templates/skills/apex/references/initialization-challenge-flow.md +110 -110
- package/templates/skills/apex/references/planning-layer-mapping.md +151 -151
- package/templates/skills/apex/references/post-checks.md +1584 -1584
- package/templates/skills/apex/references/smartstack-api.md +1053 -1053
- package/templates/skills/apex/references/smartstack-frontend.md +1571 -1571
- package/templates/skills/apex/references/smartstack-layers.md +402 -402
- package/templates/skills/apex/steps/step-00-init.md +307 -307
- package/templates/skills/apex/steps/step-01-analyze.md +165 -165
- package/templates/skills/apex/steps/step-02-plan.md +144 -144
- package/templates/skills/apex/steps/step-03-execute.md +328 -328
- package/templates/skills/apex/steps/step-04-examine.md +263 -263
- package/templates/skills/apex/steps/step-05-deep-review.md +129 -129
- package/templates/skills/apex/steps/step-06-resolve.md +101 -101
- package/templates/skills/apex/steps/step-07-tests.md +238 -238
- package/templates/skills/apex/steps/step-08-run-tests.md +125 -125
- package/templates/skills/application/SKILL.md +4 -4
- package/templates/skills/application/references/application-roles-template.md +227 -227
- package/templates/skills/application/references/backend-controller-hierarchy.md +58 -58
- package/templates/skills/application/references/backend-entity-seeding.md +72 -72
- package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -83
- package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -79
- package/templates/skills/application/references/backend-verification.md +88 -88
- package/templates/skills/application/references/frontend-i18n-and-output.md +67 -67
- package/templates/skills/application/references/frontend-route-naming.md +117 -117
- package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -107
- package/templates/skills/application/references/frontend-verification.md +156 -156
- package/templates/skills/application/references/migration-checklist-troubleshooting.md +1 -1
- package/templates/skills/application/references/provider-template.md +177 -177
- package/templates/skills/application/references/roles-client-project-handling.md +55 -55
- package/templates/skills/application/references/roles-fallback-procedure.md +149 -149
- package/templates/skills/application/references/test-coverage-requirements.md +213 -213
- package/templates/skills/application/references/test-frontend.md +73 -73
- package/templates/skills/application/references/test-prerequisites.md +72 -72
- package/templates/skills/application/steps/step-05-frontend.md +176 -176
- package/templates/skills/application/steps/step-06-migration.md +193 -193
- package/templates/skills/application/steps/step-07-tests.md +356 -356
- package/templates/skills/application/steps/step-08-documentation.md +137 -137
- package/templates/skills/application/templates-backend.md +463 -463
- package/templates/skills/application/templates-frontend.md +685 -685
- package/templates/skills/application/templates-i18n.md +520 -520
- package/templates/skills/application/templates-seed.md +1096 -1096
- package/templates/skills/business-analyse/SKILL.md +327 -327
- package/templates/skills/business-analyse/_architecture.md +123 -123
- package/templates/skills/business-analyse/_elicitation.md +206 -206
- package/templates/skills/business-analyse/_module-loop.md +115 -115
- package/templates/skills/business-analyse/_shared.md +383 -383
- package/templates/skills/business-analyse/_suggestions.md +34 -34
- package/templates/skills/business-analyse/html/ba-interactive.html +4477 -4477
- package/templates/skills/business-analyse/html/build-html.js +77 -77
- package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +150 -150
- package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +227 -227
- package/templates/skills/business-analyse/html/src/scripts/03-render-cadrage.js +199 -199
- package/templates/skills/business-analyse/html/src/scripts/04-render-modules.js +205 -205
- package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +647 -647
- package/templates/skills/business-analyse/html/src/scripts/06-render-consolidation.js +195 -195
- package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +92 -92
- package/templates/skills/business-analyse/html/src/scripts/08-editing.js +135 -135
- package/templates/skills/business-analyse/html/src/scripts/09-export.js +168 -168
- package/templates/skills/business-analyse/html/src/scripts/10-comments.js +171 -171
- package/templates/skills/business-analyse/html/src/scripts/11-review-panel.js +166 -166
- package/templates/skills/business-analyse/html/src/styles/01-variables.css +38 -38
- package/templates/skills/business-analyse/html/src/styles/02-layout.css +101 -101
- package/templates/skills/business-analyse/html/src/styles/03-navigation.css +120 -120
- package/templates/skills/business-analyse/html/src/styles/04-cards.css +196 -196
- package/templates/skills/business-analyse/html/src/styles/05-modules.css +454 -454
- package/templates/skills/business-analyse/html/src/styles/06-wireframes.css +272 -272
- package/templates/skills/business-analyse/html/src/styles/07-comments.css +184 -184
- package/templates/skills/business-analyse/html/src/styles/08-review-panel.css +241 -241
- package/templates/skills/business-analyse/html/src/template.html +516 -516
- package/templates/skills/business-analyse/patterns/suggestion-catalog.md +546 -546
- package/templates/skills/business-analyse/questionnaire/00-application.md +160 -160
- package/templates/skills/business-analyse/questionnaire/00b-project.md +85 -85
- package/templates/skills/business-analyse/questionnaire/01-context.md +185 -185
- package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +189 -189
- package/templates/skills/business-analyse/questionnaire/03-scope.md +164 -164
- package/templates/skills/business-analyse/questionnaire/04-data.md +88 -88
- package/templates/skills/business-analyse/questionnaire/05-integrations.md +58 -58
- package/templates/skills/business-analyse/questionnaire/06-security.md +68 -68
- package/templates/skills/business-analyse/questionnaire/07-ui.md +76 -76
- package/templates/skills/business-analyse/questionnaire/08-performance.md +42 -42
- package/templates/skills/business-analyse/questionnaire/09-constraints.md +45 -45
- package/templates/skills/business-analyse/questionnaire/10-documentation.md +43 -43
- package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +59 -59
- package/templates/skills/business-analyse/questionnaire/12-migration.md +58 -58
- package/templates/skills/business-analyse/questionnaire/13-cross-module.md +69 -69
- package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +135 -135
- package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +136 -136
- package/templates/skills/business-analyse/questionnaire.md +337 -337
- package/templates/skills/business-analyse/react/application-viewer.md +242 -242
- package/templates/skills/business-analyse/react/components.md +551 -551
- package/templates/skills/business-analyse/react/i18n-template.md +306 -306
- package/templates/skills/business-analyse/references/acceptance-criteria.md +169 -169
- package/templates/skills/business-analyse/references/agent-module-prompt.md +362 -362
- package/templates/skills/business-analyse/references/agent-pooling-best-practices.md +557 -557
- package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -190
- package/templates/skills/business-analyse/references/cache-warming-strategy.md +566 -566
- package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -41
- package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -74
- package/templates/skills/business-analyse/references/cadrage-pre-analysis.md +115 -115
- package/templates/skills/business-analyse/references/cadrage-shared-modules.md +68 -69
- package/templates/skills/business-analyse/references/cadrage-structure-cards.md +85 -85
- package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -297
- package/templates/skills/business-analyse/references/consolidation-structural-checks.md +107 -107
- package/templates/skills/business-analyse/references/deploy-data-build.md +180 -180
- package/templates/skills/business-analyse/references/deploy-modes.md +118 -118
- package/templates/skills/business-analyse/references/detection-strategies.md +424 -424
- package/templates/skills/business-analyse/references/entity-architecture-decision.md +218 -218
- package/templates/skills/business-analyse/references/handoff-file-templates.md +120 -120
- package/templates/skills/business-analyse/references/handoff-mappings.md +81 -81
- package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -312
- package/templates/skills/business-analyse/references/html-data-mapping.md +299 -299
- package/templates/skills/business-analyse/references/init-schema-deployment.md +65 -65
- package/templates/skills/business-analyse/references/naming-conventions.md +243 -243
- package/templates/skills/business-analyse/references/prd-generation.md +258 -258
- package/templates/skills/business-analyse/references/review-data-mapping.md +363 -363
- package/templates/skills/business-analyse/references/robustness-checks.md +542 -542
- package/templates/skills/business-analyse/references/spec-auto-inference.md +111 -111
- package/templates/skills/business-analyse/references/team-orchestration.md +1022 -1022
- package/templates/skills/business-analyse/references/ui-dashboard-spec.md +85 -85
- package/templates/skills/business-analyse/references/ui-resource-cards.md +259 -259
- package/templates/skills/business-analyse/references/validate-incremental-html.md +121 -121
- package/templates/skills/business-analyse/references/validation-checklist.md +347 -347
- package/templates/skills/business-analyse/references/wireframe-svg-style-guide.md +335 -335
- package/templates/skills/business-analyse/schemas/application-schema.json +453 -453
- package/templates/skills/business-analyse/schemas/feature-schema.json +53 -53
- package/templates/skills/business-analyse/schemas/project-schema.json +485 -485
- package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +201 -201
- package/templates/skills/business-analyse/schemas/sections/discovery-schema.json +82 -82
- package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +80 -80
- package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +70 -70
- package/templates/skills/business-analyse/schemas/sections/specification-schema.json +547 -547
- package/templates/skills/business-analyse/schemas/sections/validation-schema.json +93 -93
- package/templates/skills/business-analyse/schemas/shared/common-defs.json +226 -226
- package/templates/skills/business-analyse/steps/step-00-init.md +575 -576
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +767 -767
- package/templates/skills/business-analyse/steps/step-01b-applications.md +419 -419
- package/templates/skills/business-analyse/steps/step-02-decomposition.md +387 -387
- package/templates/skills/business-analyse/steps/step-03a-data.md +16 -16
- package/templates/skills/business-analyse/steps/step-03a1-setup.md +506 -506
- package/templates/skills/business-analyse/steps/step-03a2-analysis.md +252 -252
- package/templates/skills/business-analyse/steps/step-03b-ui.md +425 -425
- package/templates/skills/business-analyse/steps/step-03c-compile.md +611 -611
- package/templates/skills/business-analyse/steps/step-03d-validate.md +783 -783
- package/templates/skills/business-analyse/steps/step-04-consolidation.md +17 -17
- package/templates/skills/business-analyse/steps/step-04a-collect.md +415 -415
- package/templates/skills/business-analyse/steps/step-04b-analyze.md +163 -163
- package/templates/skills/business-analyse/steps/step-04c-decide.md +186 -186
- package/templates/skills/business-analyse/steps/step-05a-handoff.md +840 -840
- package/templates/skills/business-analyse/steps/step-05b-deploy.md +522 -522
- package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +703 -703
- package/templates/skills/business-analyse/steps/step-06-review.md +278 -278
- package/templates/skills/business-analyse/templates/tpl-frd.md +168 -168
- package/templates/skills/business-analyse/templates/tpl-handoff.md +186 -186
- package/templates/skills/business-analyse/templates/tpl-launch-displays.md +59 -59
- package/templates/skills/business-analyse/templates/tpl-progress.md +172 -172
- package/templates/skills/business-analyse/templates-frd.md +476 -476
- package/templates/skills/business-analyse/templates-react.md +574 -574
- package/templates/skills/cc-agent/SKILL.md +129 -129
- package/templates/skills/cc-agent/references/agent-behavior-patterns.md +95 -95
- package/templates/skills/cc-agent/references/agent-frontmatter.md +213 -213
- package/templates/skills/cc-agent/references/permission-modes.md +102 -102
- package/templates/skills/cc-agent/references/tools-reference.md +144 -144
- package/templates/skills/cc-agent/steps/step-00-init.md +134 -134
- package/templates/skills/cc-agent/steps/step-01-design.md +186 -186
- package/templates/skills/cc-agent/steps/step-02-generate.md +131 -131
- package/templates/skills/cc-agent/steps/step-03-validate.md +130 -130
- package/templates/skills/cc-agent/templates/agent-categorized.md +67 -67
- package/templates/skills/cc-agent/templates/agent-standalone.md +56 -56
- package/templates/skills/cc-agent/templates/agent-with-skills.md +94 -94
- package/templates/skills/cc-audit/SKILL.md +108 -108
- package/templates/skills/cc-audit/references/agent-checklist.md +91 -91
- package/templates/skills/cc-audit/references/hook-checklist.md +110 -110
- package/templates/skills/cc-audit/references/skill-checklist.md +70 -70
- package/templates/skills/cc-audit/steps/step-00-init.md +98 -98
- package/templates/skills/cc-audit/steps/step-01-scan.md +142 -142
- package/templates/skills/cc-audit/steps/step-02-analyze.md +158 -158
- package/templates/skills/cc-audit/steps/step-03-report.md +142 -142
- package/templates/skills/cc-skill/SKILL.md +134 -134
- package/templates/skills/cc-skill/references/best-practices.md +167 -167
- package/templates/skills/cc-skill/references/frontmatter-reference.md +182 -182
- package/templates/skills/cc-skill/references/skill-patterns.md +199 -199
- package/templates/skills/cc-skill/steps/step-00-init.md +119 -119
- package/templates/skills/cc-skill/steps/step-01-design.md +199 -199
- package/templates/skills/cc-skill/steps/step-02-generate.md +145 -145
- package/templates/skills/cc-skill/steps/step-03-steps.md +151 -151
- package/templates/skills/cc-skill/steps/step-04-validate.md +124 -124
- package/templates/skills/cc-skill/templates/skill-forked.md +85 -85
- package/templates/skills/cc-skill/templates/skill-progressive.md +102 -102
- package/templates/skills/cc-skill/templates/skill-simple.md +75 -75
- package/templates/skills/cc-skill/templates/step-template.md +82 -82
- package/templates/skills/check-version/SKILL.md +196 -196
- package/templates/skills/controller/SKILL.md +162 -162
- package/templates/skills/controller/postman-templates.md +614 -614
- package/templates/skills/controller/references/controller-code-templates.md +159 -159
- package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -209
- package/templates/skills/controller/references/permission-sync-templates.md +149 -149
- package/templates/skills/controller/steps/step-00-init.md +193 -191
- package/templates/skills/controller/steps/step-01-analyze.md +146 -146
- package/templates/skills/controller/steps/step-02-plan.md +176 -176
- package/templates/skills/controller/steps/step-03-generate.md +189 -189
- package/templates/skills/controller/steps/step-04-perms.md +80 -80
- package/templates/skills/controller/steps/step-05-validate.md +107 -107
- package/templates/skills/controller/templates.md +1555 -1555
- package/templates/skills/debug/SKILL.md +70 -70
- package/templates/skills/debug/references/team-protocol.md +232 -232
- package/templates/skills/debug/steps/step-00-init.md +57 -57
- package/templates/skills/debug/steps/step-01-analyze.md +219 -219
- package/templates/skills/debug/steps/step-02-resolve.md +85 -85
- package/templates/skills/documentation/SKILL.md +132 -132
- package/templates/skills/documentation/data-schema.md +227 -227
- package/templates/skills/documentation/steps/step-00-init.md +70 -70
- package/templates/skills/documentation/steps/step-01-scan.md +113 -113
- package/templates/skills/documentation/steps/step-02-generate.md +231 -231
- package/templates/skills/documentation/steps/step-03-validate.md +251 -238
- package/templates/skills/documentation/templates.md +662 -663
- package/templates/skills/efcore/SKILL.md +168 -167
- package/templates/skills/efcore/references/both-contexts.md +32 -32
- package/templates/skills/efcore/references/database-operations.md +67 -67
- package/templates/skills/efcore/references/destructive-operations.md +38 -38
- package/templates/skills/efcore/references/reset-operations.md +81 -81
- package/templates/skills/efcore/references/seed-methods.md +86 -86
- package/templates/skills/efcore/references/shared-init-functions.md +250 -250
- package/templates/skills/efcore/references/sql-objects-injection.md +61 -61
- package/templates/skills/efcore/references/troubleshooting.md +81 -81
- package/templates/skills/efcore/references/zero-downtime-patterns.md +227 -227
- package/templates/skills/efcore/steps/db/step-deploy.md +217 -217
- package/templates/skills/efcore/steps/db/step-reset.md +186 -186
- package/templates/skills/efcore/steps/db/step-seed.md +166 -166
- package/templates/skills/efcore/steps/db/step-status.md +173 -173
- package/templates/skills/efcore/steps/migration/step-00-init.md +102 -102
- package/templates/skills/efcore/steps/migration/step-01-check.md +164 -164
- package/templates/skills/efcore/steps/migration/step-02-create.md +160 -160
- package/templates/skills/efcore/steps/migration/step-03-validate.md +168 -168
- package/templates/skills/efcore/steps/rebase-snapshot/step-00-init.md +173 -173
- package/templates/skills/efcore/steps/rebase-snapshot/step-01-backup.md +100 -100
- package/templates/skills/efcore/steps/rebase-snapshot/step-02-fetch.md +115 -115
- package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +112 -112
- package/templates/skills/efcore/steps/rebase-snapshot/step-04-validate.md +157 -157
- package/templates/skills/efcore/steps/shared/step-00-init.md +131 -131
- package/templates/skills/efcore/steps/squash/step-00-init.md +141 -141
- package/templates/skills/efcore/steps/squash/step-01-backup.md +120 -120
- package/templates/skills/efcore/steps/squash/step-02-fetch.md +168 -168
- package/templates/skills/efcore/steps/squash/step-03-create.md +184 -184
- package/templates/skills/efcore/steps/squash/step-04-validate.md +174 -174
- package/templates/skills/explore/SKILL.md +98 -98
- package/templates/skills/feature-full/SKILL.md +111 -111
- package/templates/skills/feature-full/steps/step-00-init.md +57 -57
- package/templates/skills/feature-full/steps/step-01-implementation.md +120 -120
- package/templates/skills/gitflow/SKILL.md +377 -377
- package/templates/skills/gitflow/_shared.md +620 -620
- package/templates/skills/gitflow/phases/abort.md +189 -189
- package/templates/skills/gitflow/phases/cleanup.md +234 -234
- package/templates/skills/gitflow/phases/status.md +192 -192
- package/templates/skills/gitflow/references/commit-message-generation.md +58 -58
- package/templates/skills/gitflow/references/commit-migration-validation.md +49 -49
- package/templates/skills/gitflow/references/finish-cleanup.md +55 -55
- package/templates/skills/gitflow/references/finish-version-bumping.md +45 -45
- package/templates/skills/gitflow/references/init-config-template.md +135 -135
- package/templates/skills/gitflow/references/init-environment-detection.md +41 -41
- package/templates/skills/gitflow/references/init-name-normalization.md +103 -103
- package/templates/skills/gitflow/references/init-questions.md +185 -185
- package/templates/skills/gitflow/references/init-structure-creation.md +75 -75
- package/templates/skills/gitflow/references/init-version-detection.md +21 -21
- package/templates/skills/gitflow/references/init-workspace-detection.md +43 -43
- package/templates/skills/gitflow/references/merge-ci-status.md +36 -36
- package/templates/skills/gitflow/references/merge-execution.md +62 -62
- package/templates/skills/gitflow/references/merge-pr-context.md +76 -76
- package/templates/skills/gitflow/references/plan-template.md +69 -69
- package/templates/skills/gitflow/references/pr-build-checks.md +60 -60
- package/templates/skills/gitflow/references/pr-generation.md +58 -58
- package/templates/skills/gitflow/references/start-branch-normalization.md +28 -28
- package/templates/skills/gitflow/references/start-efcore-preflight.md +70 -70
- package/templates/skills/gitflow/references/start-local-config.md +113 -113
- package/templates/skills/gitflow/references/start-worktree-creation.md +50 -50
- package/templates/skills/gitflow/references/sync-push-verify.md +44 -44
- package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -38
- package/templates/skills/gitflow/steps/step-commit.md +199 -199
- package/templates/skills/gitflow/steps/step-finish.md +147 -147
- package/templates/skills/gitflow/steps/step-init.md +190 -190
- package/templates/skills/gitflow/steps/step-merge.md +85 -85
- package/templates/skills/gitflow/steps/step-plan.md +151 -151
- package/templates/skills/gitflow/steps/step-pr.md +199 -199
- package/templates/skills/gitflow/steps/step-start.md +195 -195
- package/templates/skills/gitflow/steps/step-sync.md +161 -161
- package/templates/skills/gitflow/templates/config.json +72 -72
- package/templates/skills/mcp/SKILL.md +62 -62
- package/templates/skills/mcp/steps/step-01-healthcheck.md +108 -108
- package/templates/skills/mcp/steps/step-02-tools.md +73 -73
- package/templates/skills/notification/SKILL.md +173 -173
- package/templates/skills/quick-search/SKILL.md +99 -99
- package/templates/skills/ralph-loop/SKILL.md +234 -234
- package/templates/skills/ralph-loop/references/category-completeness.md +185 -185
- package/templates/skills/ralph-loop/references/category-rules.md +96 -96
- package/templates/skills/ralph-loop/references/compact-loop.md +300 -300
- package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -127
- package/templates/skills/ralph-loop/references/module-transition.md +151 -151
- package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -171
- package/templates/skills/ralph-loop/references/parallel-execution.md +246 -246
- package/templates/skills/ralph-loop/references/section-splitting.md +439 -439
- package/templates/skills/ralph-loop/references/task-transform-legacy.md +256 -256
- package/templates/skills/ralph-loop/references/team-orchestration.md +547 -547
- package/templates/skills/ralph-loop/steps/step-00-init.md +150 -150
- package/templates/skills/ralph-loop/steps/step-01-task.md +174 -174
- package/templates/skills/ralph-loop/steps/step-02-execute.md +177 -177
- package/templates/skills/ralph-loop/steps/step-03-commit.md +92 -92
- package/templates/skills/ralph-loop/steps/step-04-check.md +207 -207
- package/templates/skills/ralph-loop/steps/step-05-report.md +175 -175
- package/templates/skills/refactor/SKILL.md +56 -56
- package/templates/skills/refactor/steps/step-01-discover.md +60 -60
- package/templates/skills/refactor/steps/step-02-execute.md +67 -67
- package/templates/skills/review-code/SKILL.md +95 -94
- package/templates/skills/review-code/references/clean-code-principles.md +292 -292
- package/templates/skills/review-code/references/code-quality-metrics.md +174 -174
- package/templates/skills/review-code/references/feedback-patterns.md +149 -149
- package/templates/skills/review-code/references/owasp-api-top10.md +243 -243
- package/templates/skills/review-code/references/security-checklist.md +212 -212
- package/templates/skills/review-code/steps/step-01-smartstack.md +96 -96
- package/templates/skills/review-code/steps/step-02-detailed-review.md +80 -80
- package/templates/skills/review-code/steps/step-03-react.md +44 -44
- package/templates/skills/ui-components/SKILL.md +137 -137
- package/templates/skills/ui-components/accessibility.md +170 -170
- package/templates/skills/ui-components/patterns/dashboard-chart.md +327 -327
- package/templates/skills/ui-components/patterns/data-table.md +39 -39
- package/templates/skills/ui-components/patterns/entity-card.md +77 -77
- package/templates/skills/ui-components/patterns/grid-layout.md +91 -91
- package/templates/skills/ui-components/patterns/kanban.md +43 -43
- package/templates/skills/ui-components/responsive-guidelines.md +278 -278
- package/templates/skills/ui-components/style-guide.md +113 -113
- package/templates/skills/utils/SKILL.md +44 -44
- package/templates/skills/utils/subcommands/test-web-config.md +152 -152
- package/templates/skills/utils/subcommands/test-web.md +123 -123
- package/templates/skills/validate/SKILL.md +181 -181
- package/templates/skills/validate-feature/SKILL.md +101 -101
- package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -140
- package/templates/skills/validate-feature/references/db-validation-checks.md +180 -180
- package/templates/skills/validate-feature/steps/step-00-dependencies.md +121 -121
- package/templates/skills/validate-feature/steps/step-01-compile.md +39 -39
- package/templates/skills/validate-feature/steps/step-02-unit-tests.md +45 -45
- package/templates/skills/validate-feature/steps/step-03-integration-tests.md +53 -53
- package/templates/skills/validate-feature/steps/step-04-api-smoke.md +94 -94
- package/templates/skills/validate-feature/steps/step-05-db-validation.md +149 -149
- package/templates/skills/workflow/SKILL.md +127 -127
- package/templates/skills/workflow/steps/step-00-init.md +57 -57
- package/templates/skills/workflow/steps/step-01-implementation.md +84 -84
- package/templates/test-web/api-health.json +38 -38
- package/templates/test-web/minimal.json +19 -19
- package/templates/test-web/npm-package.json +46 -46
- package/templates/test-web/seo-check.json +54 -54
|
@@ -1,177 +1,177 @@
|
|
|
1
|
-
# Frontend Compliance Gate — 5 Mandatory Checks
|
|
2
|
-
|
|
3
|
-
> **Loaded by:** step-03-execute.md (FRONTEND COMPLIANCE GATE section)
|
|
4
|
-
> **Condition:** MANDATORY before any frontend commit
|
|
5
|
-
> **Purpose:** Automated checks that catch the most common failures in generated code.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Gate 1: CSS Variables (Theme System)
|
|
10
|
-
|
|
11
|
-
Check for hardcoded Tailwind colors — MUST use CSS variables.
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
ALL_PAGES=$(find src/pages/ src/components/ -name "*.tsx" 2>/dev/null | grep -v node_modules | grep -v "\.test\.")
|
|
15
|
-
if [ -n "$ALL_PAGES" ]; then
|
|
16
|
-
HARDCODED=$(grep -Pn '(bg|text|border)-(?!\[)(red|blue|green|gray|white|black|slate|zinc|neutral|stone)-' $ALL_PAGES 2>/dev/null)
|
|
17
|
-
if [ -n "$HARDCODED" ]; then
|
|
18
|
-
echo "FAIL: Hardcoded Tailwind colors found — must use CSS variables"
|
|
19
|
-
echo "$HARDCODED"
|
|
20
|
-
else
|
|
21
|
-
echo "PASS: CSS variables"
|
|
22
|
-
fi
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
**If hardcoded colors found, replace BEFORE committing:**
|
|
27
|
-
|
|
28
|
-
| Old | New |
|
|
29
|
-
|-----|-----|
|
|
30
|
-
| `bg-white` | `bg-[var(--bg-card)]` |
|
|
31
|
-
| `bg-gray-50` | `bg-[var(--bg-primary)]` |
|
|
32
|
-
| `text-gray-900` | `text-[var(--text-primary)]` |
|
|
33
|
-
| `text-gray-500/600` | `text-[var(--text-secondary)]` |
|
|
34
|
-
| `border-gray-200` | `border-[var(--border-color)]` |
|
|
35
|
-
| `bg-blue-600` / `text-blue-600` | `bg-[var(--color-accent-500)]` / `text-[var(--color-accent-500)]` |
|
|
36
|
-
| `hover:bg-blue-700` | `hover:bg-[var(--color-accent-600)]` |
|
|
37
|
-
| `text-red-500` | `text-[var(--error-text)]` |
|
|
38
|
-
| `bg-green-500` | `bg-[var(--success-bg)]` |
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Gate 2: Forms as Pages (ZERO Modals/Drawers/Slide-overs)
|
|
43
|
-
|
|
44
|
-
Check for modal/dialog/drawer/slide-over imports and inline form patterns — FORBIDDEN.
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
PAGE_FILES=$(find src/pages/ -name "*.tsx" 2>/dev/null)
|
|
48
|
-
if [ -n "$PAGE_FILES" ]; then
|
|
49
|
-
FAIL=false
|
|
50
|
-
|
|
51
|
-
# 2a. Component imports
|
|
52
|
-
MODAL_IMPORTS=$(grep -Pn "import.*(?:Modal|Dialog|Drawer|Popup|Sheet|SlideOver|Overlay)" $PAGE_FILES 2>/dev/null)
|
|
53
|
-
if [ -n "$MODAL_IMPORTS" ]; then
|
|
54
|
-
echo "FAIL: Modal/Dialog/Drawer component imports — forms MUST be full pages"
|
|
55
|
-
echo "$MODAL_IMPORTS"
|
|
56
|
-
FAIL=true
|
|
57
|
-
fi
|
|
58
|
-
|
|
59
|
-
# 2b. State variables for inline forms (catches drawers/slide-overs without imports)
|
|
60
|
-
MODAL_STATE=$(grep -Pn "useState.*(?:isOpen|showModal|showDialog|showCreate|showEdit|showForm|isCreating|isEditing|showDrawer|showPanel|showSlideOver|selectedEntity|editingEntity)" $PAGE_FILES 2>/dev/null)
|
|
61
|
-
if [ -n "$MODAL_STATE" ]; then
|
|
62
|
-
echo "FAIL: Inline form state detected — forms MUST be separate page components with own routes"
|
|
63
|
-
echo "$MODAL_STATE"
|
|
64
|
-
FAIL=true
|
|
65
|
-
fi
|
|
66
|
-
|
|
67
|
-
if [ "$FAIL" = true ]; then
|
|
68
|
-
echo "Fix: Create EntityCreatePage.tsx (route: /create) and EntityEditPage.tsx (route: /:id/edit)"
|
|
69
|
-
echo "See smartstack-frontend.md section 3b"
|
|
70
|
-
else
|
|
71
|
-
echo "PASS: No modals/drawers"
|
|
72
|
-
fi
|
|
73
|
-
fi
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
**If modals/drawers found:** Replace with separate `EntityCreatePage.tsx` (route: `/{module}/create`) and `EntityEditPage.tsx` (route: `/{module}/:id/edit`). See `smartstack-frontend.md` section 3b.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Gate 3: I18n File Structure
|
|
81
|
-
|
|
82
|
-
Verify translation files exist as separate JSON per language.
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
if [ ! -d "src/i18n/locales" ]; then
|
|
86
|
-
echo "FAIL: Missing src/i18n/locales/ directory — create it with 4 languages"
|
|
87
|
-
else
|
|
88
|
-
for LANG in fr en it de; do
|
|
89
|
-
JSON_FILES=$(find "src/i18n/locales/$LANG" -name "*.json" 2>/dev/null | wc -l)
|
|
90
|
-
if [ "$JSON_FILES" -eq 0 ]; then
|
|
91
|
-
echo "FAIL: No JSON files in src/i18n/locales/$LANG/"
|
|
92
|
-
else
|
|
93
|
-
echo "PASS: $LANG ($JSON_FILES files)"
|
|
94
|
-
fi
|
|
95
|
-
done
|
|
96
|
-
fi
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**If i18n structure wrong:** Create `src/i18n/locales/{fr,en,it,de}/{module}.json` following the template in `smartstack-frontend.md` section 2. NEVER embed translations in a single `.ts` file.
|
|
100
|
-
|
|
101
|
-
**Correct structure:**
|
|
102
|
-
```
|
|
103
|
-
src/i18n/locales/
|
|
104
|
-
├── fr/{module}.json ← French (primary)
|
|
105
|
-
├── en/{module}.json ← English
|
|
106
|
-
├── it/{module}.json ← Italian
|
|
107
|
-
└── de/{module}.json ← German
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Each file MUST contain: `title`, `description`, `actions`, `labels`, `columns`, `form`, `errors`, `validation`, `messages`, `empty`.
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Gate 4: Lazy Loading
|
|
115
|
-
|
|
116
|
-
Check for static page imports in route/App files.
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
APP_TSX=$(find src/ -name "App.tsx" -not -path "*/node_modules/*" 2>/dev/null | head -1)
|
|
120
|
-
ROUTE_FILES=$(find src/routes/ -name "*.tsx" -o -name "*.ts" 2>/dev/null)
|
|
121
|
-
if [ -n "$APP_TSX" ]; then
|
|
122
|
-
STATIC_IMPORTS=$(grep -Pn "^import .+ from '@/pages/" "$APP_TSX" $ROUTE_FILES 2>/dev/null)
|
|
123
|
-
if [ -n "$STATIC_IMPORTS" ]; then
|
|
124
|
-
echo "FAIL: Static page imports in App.tsx/routes — MUST use React.lazy()"
|
|
125
|
-
echo "$STATIC_IMPORTS"
|
|
126
|
-
else
|
|
127
|
-
echo "PASS: Lazy loading"
|
|
128
|
-
fi
|
|
129
|
-
fi
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## Gate 5: useTranslation in Pages
|
|
135
|
-
|
|
136
|
-
Verify pages use i18n.
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
PAGE_FILES=$(find src/pages/ -name "*.tsx" 2>/dev/null | grep -v "\.test\." | grep -v node_modules)
|
|
140
|
-
if [ -n "$PAGE_FILES" ]; then
|
|
141
|
-
TOTAL=$(echo "$PAGE_FILES" | wc -l)
|
|
142
|
-
WITH_I18N=$(grep -l "useTranslation" $PAGE_FILES 2>/dev/null | wc -l)
|
|
143
|
-
if [ "$WITH_I18N" -eq 0 ]; then
|
|
144
|
-
echo "FAIL: No pages use useTranslation — all text must be translated"
|
|
145
|
-
else
|
|
146
|
-
echo "PASS: $WITH_I18N/$TOTAL pages use useTranslation"
|
|
147
|
-
fi
|
|
148
|
-
fi
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Explicit I18n File Creation
|
|
154
|
-
|
|
155
|
-
When creating i18n files, generate EXACTLY this structure:
|
|
156
|
-
|
|
157
|
-
```
|
|
158
|
-
src/i18n/locales/
|
|
159
|
-
├── fr/{module}.json ← French (primary)
|
|
160
|
-
├── en/{module}.json ← English
|
|
161
|
-
├── it/{module}.json ← Italian
|
|
162
|
-
└── de/{module}.json ← German
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
Each file MUST contain these keys: `title`, `description`, `actions`, `labels`, `columns`, `form`, `errors`, `validation`, `messages`, `empty`. See `smartstack-frontend.md` section 2 for the complete JSON template.
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## ALL 5 Gates MUST PASS
|
|
170
|
-
|
|
171
|
-
**Before creating the frontend commit:**
|
|
172
|
-
1. Do NOT commit frontend changes until ALL checks pass
|
|
173
|
-
2. If ANY gate fails, fix the issues first
|
|
174
|
-
3. When delegating to `/ui-components` skill, include explicit instructions:
|
|
175
|
-
- "CSS: Use CSS variables ONLY — `bg-[var(--bg-card)]`, `text-[var(--text-primary)]`. NEVER use hardcoded Tailwind colors."
|
|
176
|
-
- "Forms: Create/Edit forms are FULL PAGES with own routes (e.g., `/create`, `/:id/edit`). NEVER use modals/dialogs."
|
|
177
|
-
- "I18n: ALL text must use `t('namespace:key', 'Fallback')`. Generate JSON files in `src/i18n/locales/`."
|
|
1
|
+
# Frontend Compliance Gate — 5 Mandatory Checks
|
|
2
|
+
|
|
3
|
+
> **Loaded by:** step-03-execute.md (FRONTEND COMPLIANCE GATE section)
|
|
4
|
+
> **Condition:** MANDATORY before any frontend commit
|
|
5
|
+
> **Purpose:** Automated checks that catch the most common failures in generated code.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Gate 1: CSS Variables (Theme System)
|
|
10
|
+
|
|
11
|
+
Check for hardcoded Tailwind colors — MUST use CSS variables.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
ALL_PAGES=$(find src/pages/ src/components/ -name "*.tsx" 2>/dev/null | grep -v node_modules | grep -v "\.test\.")
|
|
15
|
+
if [ -n "$ALL_PAGES" ]; then
|
|
16
|
+
HARDCODED=$(grep -Pn '(bg|text|border)-(?!\[)(red|blue|green|gray|white|black|slate|zinc|neutral|stone)-' $ALL_PAGES 2>/dev/null)
|
|
17
|
+
if [ -n "$HARDCODED" ]; then
|
|
18
|
+
echo "FAIL: Hardcoded Tailwind colors found — must use CSS variables"
|
|
19
|
+
echo "$HARDCODED"
|
|
20
|
+
else
|
|
21
|
+
echo "PASS: CSS variables"
|
|
22
|
+
fi
|
|
23
|
+
fi
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**If hardcoded colors found, replace BEFORE committing:**
|
|
27
|
+
|
|
28
|
+
| Old | New |
|
|
29
|
+
|-----|-----|
|
|
30
|
+
| `bg-white` | `bg-[var(--bg-card)]` |
|
|
31
|
+
| `bg-gray-50` | `bg-[var(--bg-primary)]` |
|
|
32
|
+
| `text-gray-900` | `text-[var(--text-primary)]` |
|
|
33
|
+
| `text-gray-500/600` | `text-[var(--text-secondary)]` |
|
|
34
|
+
| `border-gray-200` | `border-[var(--border-color)]` |
|
|
35
|
+
| `bg-blue-600` / `text-blue-600` | `bg-[var(--color-accent-500)]` / `text-[var(--color-accent-500)]` |
|
|
36
|
+
| `hover:bg-blue-700` | `hover:bg-[var(--color-accent-600)]` |
|
|
37
|
+
| `text-red-500` | `text-[var(--error-text)]` |
|
|
38
|
+
| `bg-green-500` | `bg-[var(--success-bg)]` |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Gate 2: Forms as Pages (ZERO Modals/Drawers/Slide-overs)
|
|
43
|
+
|
|
44
|
+
Check for modal/dialog/drawer/slide-over imports and inline form patterns — FORBIDDEN.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
PAGE_FILES=$(find src/pages/ -name "*.tsx" 2>/dev/null)
|
|
48
|
+
if [ -n "$PAGE_FILES" ]; then
|
|
49
|
+
FAIL=false
|
|
50
|
+
|
|
51
|
+
# 2a. Component imports
|
|
52
|
+
MODAL_IMPORTS=$(grep -Pn "import.*(?:Modal|Dialog|Drawer|Popup|Sheet|SlideOver|Overlay)" $PAGE_FILES 2>/dev/null)
|
|
53
|
+
if [ -n "$MODAL_IMPORTS" ]; then
|
|
54
|
+
echo "FAIL: Modal/Dialog/Drawer component imports — forms MUST be full pages"
|
|
55
|
+
echo "$MODAL_IMPORTS"
|
|
56
|
+
FAIL=true
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# 2b. State variables for inline forms (catches drawers/slide-overs without imports)
|
|
60
|
+
MODAL_STATE=$(grep -Pn "useState.*(?:isOpen|showModal|showDialog|showCreate|showEdit|showForm|isCreating|isEditing|showDrawer|showPanel|showSlideOver|selectedEntity|editingEntity)" $PAGE_FILES 2>/dev/null)
|
|
61
|
+
if [ -n "$MODAL_STATE" ]; then
|
|
62
|
+
echo "FAIL: Inline form state detected — forms MUST be separate page components with own routes"
|
|
63
|
+
echo "$MODAL_STATE"
|
|
64
|
+
FAIL=true
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
if [ "$FAIL" = true ]; then
|
|
68
|
+
echo "Fix: Create EntityCreatePage.tsx (route: /create) and EntityEditPage.tsx (route: /:id/edit)"
|
|
69
|
+
echo "See smartstack-frontend.md section 3b"
|
|
70
|
+
else
|
|
71
|
+
echo "PASS: No modals/drawers"
|
|
72
|
+
fi
|
|
73
|
+
fi
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**If modals/drawers found:** Replace with separate `EntityCreatePage.tsx` (route: `/{module}/create`) and `EntityEditPage.tsx` (route: `/{module}/:id/edit`). See `smartstack-frontend.md` section 3b.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Gate 3: I18n File Structure
|
|
81
|
+
|
|
82
|
+
Verify translation files exist as separate JSON per language.
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
if [ ! -d "src/i18n/locales" ]; then
|
|
86
|
+
echo "FAIL: Missing src/i18n/locales/ directory — create it with 4 languages"
|
|
87
|
+
else
|
|
88
|
+
for LANG in fr en it de; do
|
|
89
|
+
JSON_FILES=$(find "src/i18n/locales/$LANG" -name "*.json" 2>/dev/null | wc -l)
|
|
90
|
+
if [ "$JSON_FILES" -eq 0 ]; then
|
|
91
|
+
echo "FAIL: No JSON files in src/i18n/locales/$LANG/"
|
|
92
|
+
else
|
|
93
|
+
echo "PASS: $LANG ($JSON_FILES files)"
|
|
94
|
+
fi
|
|
95
|
+
done
|
|
96
|
+
fi
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**If i18n structure wrong:** Create `src/i18n/locales/{fr,en,it,de}/{module}.json` following the template in `smartstack-frontend.md` section 2. NEVER embed translations in a single `.ts` file.
|
|
100
|
+
|
|
101
|
+
**Correct structure:**
|
|
102
|
+
```
|
|
103
|
+
src/i18n/locales/
|
|
104
|
+
├── fr/{module}.json ← French (primary)
|
|
105
|
+
├── en/{module}.json ← English
|
|
106
|
+
├── it/{module}.json ← Italian
|
|
107
|
+
└── de/{module}.json ← German
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Each file MUST contain: `title`, `description`, `actions`, `labels`, `columns`, `form`, `errors`, `validation`, `messages`, `empty`.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Gate 4: Lazy Loading
|
|
115
|
+
|
|
116
|
+
Check for static page imports in route/App files.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
APP_TSX=$(find src/ -name "App.tsx" -not -path "*/node_modules/*" 2>/dev/null | head -1)
|
|
120
|
+
ROUTE_FILES=$(find src/routes/ -name "*.tsx" -o -name "*.ts" 2>/dev/null)
|
|
121
|
+
if [ -n "$APP_TSX" ]; then
|
|
122
|
+
STATIC_IMPORTS=$(grep -Pn "^import .+ from '@/pages/" "$APP_TSX" $ROUTE_FILES 2>/dev/null)
|
|
123
|
+
if [ -n "$STATIC_IMPORTS" ]; then
|
|
124
|
+
echo "FAIL: Static page imports in App.tsx/routes — MUST use React.lazy()"
|
|
125
|
+
echo "$STATIC_IMPORTS"
|
|
126
|
+
else
|
|
127
|
+
echo "PASS: Lazy loading"
|
|
128
|
+
fi
|
|
129
|
+
fi
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Gate 5: useTranslation in Pages
|
|
135
|
+
|
|
136
|
+
Verify pages use i18n.
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
PAGE_FILES=$(find src/pages/ -name "*.tsx" 2>/dev/null | grep -v "\.test\." | grep -v node_modules)
|
|
140
|
+
if [ -n "$PAGE_FILES" ]; then
|
|
141
|
+
TOTAL=$(echo "$PAGE_FILES" | wc -l)
|
|
142
|
+
WITH_I18N=$(grep -l "useTranslation" $PAGE_FILES 2>/dev/null | wc -l)
|
|
143
|
+
if [ "$WITH_I18N" -eq 0 ]; then
|
|
144
|
+
echo "FAIL: No pages use useTranslation — all text must be translated"
|
|
145
|
+
else
|
|
146
|
+
echo "PASS: $WITH_I18N/$TOTAL pages use useTranslation"
|
|
147
|
+
fi
|
|
148
|
+
fi
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Explicit I18n File Creation
|
|
154
|
+
|
|
155
|
+
When creating i18n files, generate EXACTLY this structure:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
src/i18n/locales/
|
|
159
|
+
├── fr/{module}.json ← French (primary)
|
|
160
|
+
├── en/{module}.json ← English
|
|
161
|
+
├── it/{module}.json ← Italian
|
|
162
|
+
└── de/{module}.json ← German
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Each file MUST contain these keys: `title`, `description`, `actions`, `labels`, `columns`, `form`, `errors`, `validation`, `messages`, `empty`. See `smartstack-frontend.md` section 2 for the complete JSON template.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## ALL 5 Gates MUST PASS
|
|
170
|
+
|
|
171
|
+
**Before creating the frontend commit:**
|
|
172
|
+
1. Do NOT commit frontend changes until ALL checks pass
|
|
173
|
+
2. If ANY gate fails, fix the issues first
|
|
174
|
+
3. When delegating to `/ui-components` skill, include explicit instructions:
|
|
175
|
+
- "CSS: Use CSS variables ONLY — `bg-[var(--bg-card)]`, `text-[var(--text-primary)]`. NEVER use hardcoded Tailwind colors."
|
|
176
|
+
- "Forms: Create/Edit forms are FULL PAGES with own routes (e.g., `/create`, `/:id/edit`). NEVER use modals/dialogs."
|
|
177
|
+
- "I18n: ALL text must use `t('namespace:key', 'Fallback')`. Generate JSON files in `src/i18n/locales/`."
|
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
# Frontend Patterns — Economy Mode Guidelines
|
|
2
|
-
|
|
3
|
-
> **Loaded by:** step-03-execute.md (Layer 1 section: economy_mode frontend tasks)
|
|
4
|
-
> **Purpose:** Quick reference for frontend creation in sequential (economy) mode.
|
|
5
|
-
> **Detailed patterns:** See `smartstack-frontend.md` (referenced from smartstack-layers.md)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Frontend Tasks — Sequential Execution (economy_mode)
|
|
10
|
-
|
|
11
|
-
For each frontend task in the plan (Layer 1):
|
|
12
|
-
|
|
13
|
-
1. **API Client:** `MCP scaffold_api_client` → API client + types + React Query hook
|
|
14
|
-
2. **Routes:** `MCP scaffold_routes` with `outputFormat: 'clientRoutes'` for lazy imports
|
|
15
|
-
3. **Pages:** **INVOKE `/ui-components` skill** (read SKILL.md + ALL patterns) — MANDATORY for ALL page types
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## Required Page Types Per Module
|
|
20
|
-
|
|
21
|
-
Create ALL 4 page types per module:
|
|
22
|
-
- `ListPage.tsx` — entity list with SmartTable/EntityCard
|
|
23
|
-
- `DetailPage.tsx` — entity detail view
|
|
24
|
-
- `EntityCreatePage.tsx` (route: `/create`) — FULL PAGE form, NEVER modal
|
|
25
|
-
- `EntityEditPage.tsx` (route: `/:id/edit`) — FULL PAGE form, NEVER modal
|
|
26
|
-
|
|
27
|
-
**Wire ALL routes in App.tsx:** `index` (ListPage), `:id` (DetailPage), `create` (CreatePage), `:id/edit` (EditPage)
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Foreign Key (FK) Fields — CRITICAL
|
|
32
|
-
|
|
33
|
-
Any Guid FK property (e.g., EmployeeId, DepartmentId) MUST use `EntityLookup` component:
|
|
34
|
-
- **NEVER** a `<select>` dropdown
|
|
35
|
-
- **NEVER** a `<input type="text">`
|
|
36
|
-
- **A `<select>` loaded from API state is NOT a substitute for EntityLookup**
|
|
37
|
-
|
|
38
|
-
See `smartstack-frontend.md` section 6 for the full EntityLookup pattern. Backend GetAll endpoints MUST support `?search=` parameter (enables EntityLookup on frontend).
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Forms: ZERO Modals/Popups/Drawers/Slide-overs
|
|
43
|
-
|
|
44
|
-
**ALL forms are full pages with their own URL:**
|
|
45
|
-
- Create forms: route `/{module}/create`
|
|
46
|
-
- Edit forms: route `/{module}/:id/edit`
|
|
47
|
-
- NEVER embed forms as drawers, panels, or slide-overs
|
|
48
|
-
- Back button with `navigate(-1)` on every form page
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Detail Pages: Tab Behavior (CRITICAL)
|
|
53
|
-
|
|
54
|
-
**Tabs MUST switch content LOCALLY via `setActiveTab()` — NEVER `navigate()` to another page.**
|
|
55
|
-
|
|
56
|
-
Sub-resource data (e.g., employee's leaves) loads inline via API call filtered by parent entity ID. See `smartstack-frontend.md` section 3 "Tab Behavior Rules".
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## Tests (MANDATORY)
|
|
61
|
-
|
|
62
|
-
Generate form tests as co-located files:
|
|
63
|
-
- `EntityCreatePage.test.tsx` (next to CreatePage.tsx)
|
|
64
|
-
- `EntityEditPage.test.tsx` (next to EditPage.tsx)
|
|
65
|
-
|
|
66
|
-
Cover: rendering, validation, submit, pre-fill, navigation, errors. See `smartstack-frontend.md` section 8 for test templates.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Section-Level Routes (if sections exist)
|
|
71
|
-
|
|
72
|
-
**SECTION PERMISSIONS:** After calling `MCP generate_permissions` for the module navRoute (2 segments: `{app}.{module}`), also call it for EACH section navRoute (3 segments: `{app}.{module}.{section}`)
|
|
73
|
-
|
|
74
|
-
**SECTION ROUTES:** After generating module routes, add section child routes to the module's `children` array. Wire `PermissionGuard` for section routes with section-level permissions.
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## Sub-Resource Handling
|
|
79
|
-
|
|
80
|
-
If a section controller has sub-resource endpoints (e.g., `[HttpGet("types")]` for LeaveTypes inside LeavesController), you MUST EITHER:
|
|
81
|
-
1. Create dedicated frontend pages for the sub-resource (ListPage, CreatePage, EditPage) with routes wired in App.tsx, OR
|
|
82
|
-
2. NOT include any `navigate()` button that links to those sub-resource pages
|
|
83
|
-
|
|
84
|
-
**Prefer separate controllers** with `[NavRoute(..., Suffix = "types")]` — see `smartstack-api.md` Sub-Resource Pattern. A dead link (navigate to a route with no page) is a BLOCKING issue (POST-CHECK 42).
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## I18n (Translations)
|
|
89
|
-
|
|
90
|
-
Generate i18n JSON files for all 4 languages (fr, en, it, de):
|
|
91
|
-
- Location: `src/i18n/locales/{lang}/{module}.json`
|
|
92
|
-
- Keys: `actions`, `labels`, `errors`, `validation`, `columns`, `form`, `messages`, `empty`
|
|
93
|
-
- ALL `t()` calls MUST use namespace prefix + fallback: `t('ns:key', 'Default text')`
|
|
94
|
-
|
|
95
|
-
**CRITICAL:** After creating i18n JSON files, register EACH new namespace in the i18n config file (config.ts/index.ts/i18n.ts). Unregistered namespaces → `useTranslation(['module'])` returns empty strings at runtime. POST-CHECK 45 validates this.
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Folder Structure
|
|
100
|
-
|
|
101
|
-
MUST use: `src/pages/{App}/{Module}/` hierarchy (NOT flat).
|
|
102
|
-
|
|
103
|
-
All pages must follow: **hooks → useEffect(load) → loading state → error state → content**
|
|
104
|
-
|
|
105
|
-
Use **CSS variables ONLY** for styling — hardcoded Tailwind colors are BLOCKING (POST-CHECK 13).
|
|
1
|
+
# Frontend Patterns — Economy Mode Guidelines
|
|
2
|
+
|
|
3
|
+
> **Loaded by:** step-03-execute.md (Layer 1 section: economy_mode frontend tasks)
|
|
4
|
+
> **Purpose:** Quick reference for frontend creation in sequential (economy) mode.
|
|
5
|
+
> **Detailed patterns:** See `smartstack-frontend.md` (referenced from smartstack-layers.md)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Frontend Tasks — Sequential Execution (economy_mode)
|
|
10
|
+
|
|
11
|
+
For each frontend task in the plan (Layer 1):
|
|
12
|
+
|
|
13
|
+
1. **API Client:** `MCP scaffold_api_client` → API client + types + React Query hook
|
|
14
|
+
2. **Routes:** `MCP scaffold_routes` with `outputFormat: 'clientRoutes'` for lazy imports
|
|
15
|
+
3. **Pages:** **INVOKE `/ui-components` skill** (read SKILL.md + ALL patterns) — MANDATORY for ALL page types
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Required Page Types Per Module
|
|
20
|
+
|
|
21
|
+
Create ALL 4 page types per module:
|
|
22
|
+
- `ListPage.tsx` — entity list with SmartTable/EntityCard
|
|
23
|
+
- `DetailPage.tsx` — entity detail view
|
|
24
|
+
- `EntityCreatePage.tsx` (route: `/create`) — FULL PAGE form, NEVER modal
|
|
25
|
+
- `EntityEditPage.tsx` (route: `/:id/edit`) — FULL PAGE form, NEVER modal
|
|
26
|
+
|
|
27
|
+
**Wire ALL routes in App.tsx:** `index` (ListPage), `:id` (DetailPage), `create` (CreatePage), `:id/edit` (EditPage)
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Foreign Key (FK) Fields — CRITICAL
|
|
32
|
+
|
|
33
|
+
Any Guid FK property (e.g., EmployeeId, DepartmentId) MUST use `EntityLookup` component:
|
|
34
|
+
- **NEVER** a `<select>` dropdown
|
|
35
|
+
- **NEVER** a `<input type="text">`
|
|
36
|
+
- **A `<select>` loaded from API state is NOT a substitute for EntityLookup**
|
|
37
|
+
|
|
38
|
+
See `smartstack-frontend.md` section 6 for the full EntityLookup pattern. Backend GetAll endpoints MUST support `?search=` parameter (enables EntityLookup on frontend).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Forms: ZERO Modals/Popups/Drawers/Slide-overs
|
|
43
|
+
|
|
44
|
+
**ALL forms are full pages with their own URL:**
|
|
45
|
+
- Create forms: route `/{module}/create`
|
|
46
|
+
- Edit forms: route `/{module}/:id/edit`
|
|
47
|
+
- NEVER embed forms as drawers, panels, or slide-overs
|
|
48
|
+
- Back button with `navigate(-1)` on every form page
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Detail Pages: Tab Behavior (CRITICAL)
|
|
53
|
+
|
|
54
|
+
**Tabs MUST switch content LOCALLY via `setActiveTab()` — NEVER `navigate()` to another page.**
|
|
55
|
+
|
|
56
|
+
Sub-resource data (e.g., employee's leaves) loads inline via API call filtered by parent entity ID. See `smartstack-frontend.md` section 3 "Tab Behavior Rules".
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Tests (MANDATORY)
|
|
61
|
+
|
|
62
|
+
Generate form tests as co-located files:
|
|
63
|
+
- `EntityCreatePage.test.tsx` (next to CreatePage.tsx)
|
|
64
|
+
- `EntityEditPage.test.tsx` (next to EditPage.tsx)
|
|
65
|
+
|
|
66
|
+
Cover: rendering, validation, submit, pre-fill, navigation, errors. See `smartstack-frontend.md` section 8 for test templates.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Section-Level Routes (if sections exist)
|
|
71
|
+
|
|
72
|
+
**SECTION PERMISSIONS:** After calling `MCP generate_permissions` for the module navRoute (2 segments: `{app}.{module}`), also call it for EACH section navRoute (3 segments: `{app}.{module}.{section}`)
|
|
73
|
+
|
|
74
|
+
**SECTION ROUTES:** After generating module routes, add section child routes to the module's `children` array. Wire `PermissionGuard` for section routes with section-level permissions.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Sub-Resource Handling
|
|
79
|
+
|
|
80
|
+
If a section controller has sub-resource endpoints (e.g., `[HttpGet("types")]` for LeaveTypes inside LeavesController), you MUST EITHER:
|
|
81
|
+
1. Create dedicated frontend pages for the sub-resource (ListPage, CreatePage, EditPage) with routes wired in App.tsx, OR
|
|
82
|
+
2. NOT include any `navigate()` button that links to those sub-resource pages
|
|
83
|
+
|
|
84
|
+
**Prefer separate controllers** with `[NavRoute(..., Suffix = "types")]` — see `smartstack-api.md` Sub-Resource Pattern. A dead link (navigate to a route with no page) is a BLOCKING issue (POST-CHECK 42).
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## I18n (Translations)
|
|
89
|
+
|
|
90
|
+
Generate i18n JSON files for all 4 languages (fr, en, it, de):
|
|
91
|
+
- Location: `src/i18n/locales/{lang}/{module}.json`
|
|
92
|
+
- Keys: `actions`, `labels`, `errors`, `validation`, `columns`, `form`, `messages`, `empty`
|
|
93
|
+
- ALL `t()` calls MUST use namespace prefix + fallback: `t('ns:key', 'Default text')`
|
|
94
|
+
|
|
95
|
+
**CRITICAL:** After creating i18n JSON files, register EACH new namespace in the i18n config file (config.ts/index.ts/i18n.ts). Unregistered namespaces → `useTranslation(['module'])` returns empty strings at runtime. POST-CHECK 45 validates this.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Folder Structure
|
|
100
|
+
|
|
101
|
+
MUST use: `src/pages/{App}/{Module}/` hierarchy (NOT flat).
|
|
102
|
+
|
|
103
|
+
All pages must follow: **hooks → useEffect(load) → loading state → error state → content**
|
|
104
|
+
|
|
105
|
+
Use **CSS variables ONLY** for styling — hardcoded Tailwind colors are BLOCKING (POST-CHECK 13).
|