@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,347 +1,347 @@
|
|
|
1
|
-
# Module Specification Checklist
|
|
2
|
-
|
|
3
|
-
> **CRITICAL:** This checklist MUST be FULLY COMPLETED before marking module status = "specified".
|
|
4
|
-
> **Rationale:** Prevents incomplete modules from reaching handoff, reduces ralph-loop failures.
|
|
5
|
-
|
|
6
|
-
## Checklist Structure
|
|
7
|
-
|
|
8
|
-
**Execute BEFORE updating module status to "specified":**
|
|
9
|
-
|
|
10
|
-
```javascript
|
|
11
|
-
const checklist = {
|
|
12
|
-
// SECTION 1: DATA MODEL (BLOCKING)
|
|
13
|
-
entities: {
|
|
14
|
-
minimum: 2,
|
|
15
|
-
actual: specification.entities.length,
|
|
16
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
17
|
-
blocking: true,
|
|
18
|
-
details: "At least 2 entities required for a meaningful module"
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
entityAttributes: {
|
|
22
|
-
check: "All entities have ≥3 attributes",
|
|
23
|
-
status: validateAllEntities(e => e.attributes.length >= 3) ? "PASS" : "FAIL",
|
|
24
|
-
blocking: true,
|
|
25
|
-
details: "Entities with <3 attributes are likely incomplete"
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
entityRelationships: {
|
|
29
|
-
check: "All entities have relationships defined (or explicitly marked as standalone)",
|
|
30
|
-
status: validateEntityRelationships() ? "PASS" : "FAIL",
|
|
31
|
-
blocking: false, // WARNING only
|
|
32
|
-
details: "Standalone entities should be rare in business modules"
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
entitySchemaCompliance: {
|
|
36
|
-
check: "All entities use canonical format: attributes[] (not fields[]), relationships[] array present",
|
|
37
|
-
status: specification.entities.every(e =>
|
|
38
|
-
Array.isArray(e.attributes) && e.attributes.length > 0 &&
|
|
39
|
-
!e.fields && !e.tableName && !e.primaryKey
|
|
40
|
-
) ? "PASS" : "FAIL",
|
|
41
|
-
blocking: true,
|
|
42
|
-
details: "Entities with 'fields' instead of 'attributes' break HTML data model display and PRD extraction. " +
|
|
43
|
-
"Check: every entity must have attributes[] (not fields[]), every entity must have relationships[], " +
|
|
44
|
-
"no entity should have tableName or primaryKey (technical fields belong in implementation, not analysis)"
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
// SECTION 2: BUSINESS RULES (BLOCKING)
|
|
48
|
-
businessRules: {
|
|
49
|
-
minimum: 4,
|
|
50
|
-
actual: analysis.businessRules.length,
|
|
51
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
52
|
-
blocking: true,
|
|
53
|
-
details: "Minimum 4 BRs (mix of VAL/CALC/WF/SEC/DATA)"
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
businessRuleCategories: {
|
|
57
|
-
check: "BRs cover ≥2 categories (VAL, CALC, WF, SEC, DATA)",
|
|
58
|
-
status: countUniqueCategories(analysis.businessRules) >= 2 ? "PASS" : "FAIL",
|
|
59
|
-
blocking: true,
|
|
60
|
-
details: "Single-category modules are likely incomplete"
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
businessRulePrefixes: {
|
|
64
|
-
check: "All BR IDs use module prefix (e.g., BR-VAL-{PREFIX}-NNN)",
|
|
65
|
-
status: validateBRPrefixes() ? "PASS" : "FAIL",
|
|
66
|
-
blocking: true,
|
|
67
|
-
details: "Missing prefixes cause ID collisions in multi-module apps"
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
// SECTION 3: USE CASES & REQUIREMENTS (BLOCKING)
|
|
71
|
-
useCases: {
|
|
72
|
-
minimum: 6,
|
|
73
|
-
actual: specification.useCases.length,
|
|
74
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
75
|
-
blocking: true,
|
|
76
|
-
details: "Minimum 6 UCs (CRUD + 2 business-specific)"
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
useCasePrefixes: {
|
|
80
|
-
check: "All UC IDs use module prefix (UC-{PREFIX}-NNN)",
|
|
81
|
-
status: validateUCPrefixes() ? "PASS" : "FAIL",
|
|
82
|
-
blocking: true,
|
|
83
|
-
details: "Missing prefixes cause ID collisions"
|
|
84
|
-
},
|
|
85
|
-
|
|
86
|
-
functionalRequirements: {
|
|
87
|
-
minimum: 4,
|
|
88
|
-
actual: specification.functionalRequirements.length,
|
|
89
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
90
|
-
blocking: true,
|
|
91
|
-
details: "FRs must cover key functionality"
|
|
92
|
-
},
|
|
93
|
-
|
|
94
|
-
ucFrLinkage: {
|
|
95
|
-
check: "Every UC has ≥1 linked FR",
|
|
96
|
-
status: validateUCtoFRLinkage() ? "PASS" : "FAIL",
|
|
97
|
-
blocking: true,
|
|
98
|
-
details: "Orphan UCs indicate incomplete requirements"
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
frBrLinkage: {
|
|
102
|
-
check: "Every FR has ≥1 linked BR",
|
|
103
|
-
status: validateFRtoBRLinkage() ? "PASS" : "FAIL",
|
|
104
|
-
blocking: false, // WARNING only
|
|
105
|
-
details: "FRs without BRs may lack validation/calculation logic"
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
// SECTION 4: PERMISSIONS (BLOCKING)
|
|
109
|
-
permissions: {
|
|
110
|
-
minimum: 5,
|
|
111
|
-
actual: specification.permissionMatrix.permissions.length,
|
|
112
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
113
|
-
blocking: true,
|
|
114
|
-
details: "Minimum 5 permissions (CRUD + 1 business action)"
|
|
115
|
-
},
|
|
116
|
-
|
|
117
|
-
permissionFormat: {
|
|
118
|
-
check: "All permissions use correct format: module-level {app}.{module}.{action} or section-level {app}.{module}.{section}.{action}",
|
|
119
|
-
status: validatePermissionFormat() ? "PASS" : "FAIL",
|
|
120
|
-
blocking: true,
|
|
121
|
-
details: "Wrong format breaks RBAC system. Module-level = 3 segments, section-level = 4 segments."
|
|
122
|
-
},
|
|
123
|
-
|
|
124
|
-
rolePermissions: {
|
|
125
|
-
check: "All application roles have ≥1 permission assigned",
|
|
126
|
-
status: validateRoleAssignments() ? "PASS" : "FAIL",
|
|
127
|
-
blocking: true,
|
|
128
|
-
details: "Roles without permissions are useless"
|
|
129
|
-
},
|
|
130
|
-
|
|
131
|
-
// SECTION 5: UI & NAVIGATION (BLOCKING)
|
|
132
|
-
sections: {
|
|
133
|
-
minimum: 2,
|
|
134
|
-
actual: specification.sections.length,
|
|
135
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
136
|
-
blocking: true,
|
|
137
|
-
details: "Modules need ≥2 sections (list + form minimum)"
|
|
138
|
-
},
|
|
139
|
-
|
|
140
|
-
wireframes: {
|
|
141
|
-
minimum: specification.sections.length, // 1 wireframe PER section
|
|
142
|
-
actual: (specification.uiWireframes || specification.wireframes || []).length, // Check BOTH key names
|
|
143
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
144
|
-
blocking: true,
|
|
145
|
-
details: "EVERY section MUST have a wireframe (ASCII/SVG). Check both uiWireframes and wireframes keys."
|
|
146
|
-
},
|
|
147
|
-
|
|
148
|
-
wireframeSchemaCompliance: {
|
|
149
|
-
check: "All wireframes have required fields: screen, section, mockupFormat, elements[], componentMapping[], layout (object), permissionsRequired[]",
|
|
150
|
-
status: (specification.uiWireframes || specification.wireframes || []).every(wf =>
|
|
151
|
-
(wf.screen || wf.title) && wf.section && (wf.mockupFormat || wf.mockup || wf.ascii) &&
|
|
152
|
-
Array.isArray(wf.elements) && wf.elements.length > 0 &&
|
|
153
|
-
Array.isArray(wf.componentMapping) && wf.componentMapping.length > 0 &&
|
|
154
|
-
typeof wf.layout === 'object' && wf.layout !== null &&
|
|
155
|
-
Array.isArray(wf.permissionsRequired)
|
|
156
|
-
) ? "PASS" : "FAIL",
|
|
157
|
-
blocking: true,
|
|
158
|
-
details: "Wireframes missing metadata render as empty frames in HTML documentation. " +
|
|
159
|
-
"Check: screen (not name/id/title), section, mockupFormat, elements[] non-empty, " +
|
|
160
|
-
"componentMapping[] as array of {wireframeElement, reactComponent}, layout as object (not string). " +
|
|
161
|
-
"Also see references/acceptance-criteria.md for bash-verifiable checks."
|
|
162
|
-
},
|
|
163
|
-
|
|
164
|
-
navigation: {
|
|
165
|
-
check: "Module has ≥1 navigation entry",
|
|
166
|
-
status: specification.navigation.entries.length >= 1 ? "PASS" : "FAIL",
|
|
167
|
-
blocking: true,
|
|
168
|
-
details: "Module must be accessible in menu"
|
|
169
|
-
},
|
|
170
|
-
|
|
171
|
-
navigationRoutePatterns: {
|
|
172
|
-
check: "Navigation routes do NOT contain CRUD suffixes (/list, /detail/:id)",
|
|
173
|
-
status: (() => {
|
|
174
|
-
const allRoutes = [
|
|
175
|
-
...(specification.seedDataCore?.navigationSections || []).map(s => s.route),
|
|
176
|
-
...(specification.sections || []).map(s => s.route),
|
|
177
|
-
...(specification.navigation?.entries || []).map(e => e.route)
|
|
178
|
-
].filter(Boolean);
|
|
179
|
-
const forbidden = allRoutes.filter(r => r.match(/\/list$/) || r.match(/\/detail\/:id$/));
|
|
180
|
-
return forbidden.length === 0 ? "PASS" : "FAIL";
|
|
181
|
-
})(),
|
|
182
|
-
blocking: true,
|
|
183
|
-
details: "FORBIDDEN: /module/list (use /module), /module/detail/:id (use /module/:id). " +
|
|
184
|
-
"list route = module route (React Router index route). " +
|
|
185
|
-
"detail route = module route + /:id (React Router :id child). " +
|
|
186
|
-
"Other sections (dashboard, approve) add /{section} normally."
|
|
187
|
-
},
|
|
188
|
-
|
|
189
|
-
// SECTION 6: I18N & MESSAGES (BLOCKING)
|
|
190
|
-
i18nKeys: {
|
|
191
|
-
minimum: 42, // Realistic minimum for a module
|
|
192
|
-
actual: specification.i18nKeys.length,
|
|
193
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
194
|
-
blocking: true,
|
|
195
|
-
details: "Keys needed: entities (×2), fields, messages, validation, navigation"
|
|
196
|
-
},
|
|
197
|
-
|
|
198
|
-
i18nLanguages: {
|
|
199
|
-
check: "All i18n keys have 4 languages (fr, en, it, de)",
|
|
200
|
-
status: validateI18nCompleteness() ? "PASS" : "FAIL",
|
|
201
|
-
blocking: true,
|
|
202
|
-
details: "Missing translations break multi-language support"
|
|
203
|
-
},
|
|
204
|
-
|
|
205
|
-
messages: {
|
|
206
|
-
minimum: 4,
|
|
207
|
-
actual: specification.messages.length,
|
|
208
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
209
|
-
blocking: true,
|
|
210
|
-
details: "Minimum: 1 success, 1 error, 1 warning, 1 info"
|
|
211
|
-
},
|
|
212
|
-
|
|
213
|
-
// SECTION 7: SEED DATA (BLOCKING)
|
|
214
|
-
seedDataCore: {
|
|
215
|
-
check: "All 7 CORE seed data sections present",
|
|
216
|
-
requiredSections: [
|
|
217
|
-
"navigationModules",
|
|
218
|
-
"navigationSections",
|
|
219
|
-
"navigationResources",
|
|
220
|
-
"navigationTranslations",
|
|
221
|
-
"permissions",
|
|
222
|
-
"rolePermissions",
|
|
223
|
-
"permissionConstants"
|
|
224
|
-
],
|
|
225
|
-
status: validateSeedDataCore() ? "PASS" : "FAIL",
|
|
226
|
-
blocking: true,
|
|
227
|
-
details: "Missing CORE seed data breaks module deployment"
|
|
228
|
-
},
|
|
229
|
-
|
|
230
|
-
seedDataBusiness: {
|
|
231
|
-
check: "Business seed data template defined (if applicable — generated during implementation, not BA)",
|
|
232
|
-
status: specification.seedDataBusiness !== undefined ? "PASS" : "WARN",
|
|
233
|
-
blocking: false, // WARNING only — business seed data is generated during ralph-loop implementation, not during BA phase
|
|
234
|
-
details: "Business seed data (reference types, categories, statuses) is generated during implementation (ralph-loop). " +
|
|
235
|
-
"BA phase ensures seedDataCore is complete (navigation, permissions). seedDataBusiness is optional at this stage."
|
|
236
|
-
},
|
|
237
|
-
|
|
238
|
-
// SECTION 8: API ENDPOINTS (BLOCKING)
|
|
239
|
-
apiEndpoints: {
|
|
240
|
-
minimum: 5,
|
|
241
|
-
actual: specification.apiEndpoints.length,
|
|
242
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
243
|
-
blocking: true,
|
|
244
|
-
details: "Minimum 5 endpoints (CRUD + 1 business action)"
|
|
245
|
-
},
|
|
246
|
-
|
|
247
|
-
apiPermissions: {
|
|
248
|
-
check: "Every API endpoint has permission defined",
|
|
249
|
-
status: validateAPIPermissions() ? "PASS" : "FAIL",
|
|
250
|
-
blocking: true,
|
|
251
|
-
details: "Endpoints without permissions are security holes"
|
|
252
|
-
},
|
|
253
|
-
|
|
254
|
-
// SECTION 9: VALIDATIONS (BLOCKING)
|
|
255
|
-
validations: {
|
|
256
|
-
minimum: 1,
|
|
257
|
-
actual: specification.validations.length,
|
|
258
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
259
|
-
blocking: true,
|
|
260
|
-
details: "Modules need field validation rules"
|
|
261
|
-
},
|
|
262
|
-
|
|
263
|
-
// SECTION 10: GHERKIN SCENARIOS (BLOCKING for format, WARNING for count)
|
|
264
|
-
gherkinFormat: {
|
|
265
|
-
check: "gherkinScenarios is ARRAY (not single object)",
|
|
266
|
-
status: Array.isArray(specification.gherkinScenarios) ? "PASS" : "FAIL",
|
|
267
|
-
blocking: true,
|
|
268
|
-
details: "gherkinScenarios MUST be an array [{feature, scenarios}], not a single object. " +
|
|
269
|
-
"Auto-fix: wrap in array [gherkinScenarios]. See step-03c ABSOLUTE FORMAT CHECKS."
|
|
270
|
-
},
|
|
271
|
-
|
|
272
|
-
gherkinContent: {
|
|
273
|
-
check: "Each gherkin entry has feature (string) + scenarios (array)",
|
|
274
|
-
status: (Array.isArray(specification.gherkinScenarios) &&
|
|
275
|
-
specification.gherkinScenarios.every(g => g.feature && Array.isArray(g.scenarios))
|
|
276
|
-
) ? "PASS" : "FAIL",
|
|
277
|
-
blocking: true,
|
|
278
|
-
details: "Each gherkin entry must have {feature: string, scenarios: [{name, tags, given[], when[], then[]}]}"
|
|
279
|
-
},
|
|
280
|
-
|
|
281
|
-
gherkinScenarioCount: {
|
|
282
|
-
minimum: 2,
|
|
283
|
-
actual: (Array.isArray(specification.gherkinScenarios)
|
|
284
|
-
? specification.gherkinScenarios.reduce((sum, g) => sum + (g.scenarios || []).length, 0)
|
|
285
|
-
: 0),
|
|
286
|
-
status: actual >= minimum ? "PASS" : "FAIL",
|
|
287
|
-
blocking: false, // WARNING only — count is advisory
|
|
288
|
-
details: "Gherkin scenarios enable automated testing"
|
|
289
|
-
}
|
|
290
|
-
};
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
## Blocking Check Logic
|
|
294
|
-
|
|
295
|
-
```javascript
|
|
296
|
-
// BLOCKING CHECK: Count failures in BLOCKING items
|
|
297
|
-
const blockingFailures = Object.entries(checklist)
|
|
298
|
-
.filter(([key, check]) => check.blocking === true && check.status === "FAIL")
|
|
299
|
-
.map(([key, check]) => ({ section: key, ...check }));
|
|
300
|
-
|
|
301
|
-
IF blockingFailures.length > 0:
|
|
302
|
-
**BLOCKING ERROR:** Module specification incomplete
|
|
303
|
-
|
|
304
|
-
Display table:
|
|
305
|
-
| Section | Required | Actual | Status | Details |
|
|
306
|
-
|---------|----------|--------|--------|---------|
|
|
307
|
-
{for each blocking failure}
|
|
308
|
-
|
|
309
|
-
ACTIONS REQUIRED:
|
|
310
|
-
1. Fix ALL blocking failures listed above
|
|
311
|
-
2. Re-run step-03d validation
|
|
312
|
-
3. DO NOT mark module as "specified" until ALL blocking checks pass
|
|
313
|
-
|
|
314
|
-
STOP - DO NOT PROCEED TO UPDATE STATUS
|
|
315
|
-
ELSE:
|
|
316
|
-
All blocking checks passed ✓
|
|
317
|
-
{count} warnings (non-blocking)
|
|
318
|
-
Proceed to mark module as "specified"
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
## Display Format
|
|
322
|
-
|
|
323
|
-
```
|
|
324
|
-
═══════════════════════════════════════════════════════════════
|
|
325
|
-
MODULE SPECIFICATION CHECKLIST - {currentModule}
|
|
326
|
-
═══════════════════════════════════════════════════════════════
|
|
327
|
-
|
|
328
|
-
| Category | Checks | Passed | Failed | Warnings |
|
|
329
|
-
|----------|--------|--------|--------|----------|
|
|
330
|
-
| Data Model | 4 | {n} | {n} | {n} |
|
|
331
|
-
| Business Rules | 3 | {n} | {n} | {n} |
|
|
332
|
-
| Use Cases & FRs | 4 | {n} | {n} | {n} |
|
|
333
|
-
| Permissions | 3 | {n} | {n} | {n} |
|
|
334
|
-
| UI & Navigation | 4 | {n} | {n} | {n} |
|
|
335
|
-
| I18N & Messages | 3 | {n} | {n} | {n} |
|
|
336
|
-
| Seed Data | 2 | {n} | {n} | {n} |
|
|
337
|
-
| API Endpoints | 2 | {n} | {n} | {n} |
|
|
338
|
-
| Validations | 1 | {n} | {n} | {n} |
|
|
339
|
-
| Gherkin | 3 | {n} | {n} | {n} |
|
|
340
|
-
|
|
341
|
-
TOTAL: {total_checks} checks | {passed} ✓ | {failed} ✗ | {warnings} ⚠
|
|
342
|
-
|
|
343
|
-
STATUS: {failed === 0 ? "READY FOR SPECIFIED" : "INCOMPLETE - FIX REQUIRED"}
|
|
344
|
-
═══════════════════════════════════════════════════════════════
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
**IF ALL BLOCKING CHECKS PASS → Proceed to update module status to "specified"**
|
|
1
|
+
# Module Specification Checklist
|
|
2
|
+
|
|
3
|
+
> **CRITICAL:** This checklist MUST be FULLY COMPLETED before marking module status = "specified".
|
|
4
|
+
> **Rationale:** Prevents incomplete modules from reaching handoff, reduces ralph-loop failures.
|
|
5
|
+
|
|
6
|
+
## Checklist Structure
|
|
7
|
+
|
|
8
|
+
**Execute BEFORE updating module status to "specified":**
|
|
9
|
+
|
|
10
|
+
```javascript
|
|
11
|
+
const checklist = {
|
|
12
|
+
// SECTION 1: DATA MODEL (BLOCKING)
|
|
13
|
+
entities: {
|
|
14
|
+
minimum: 2,
|
|
15
|
+
actual: specification.entities.length,
|
|
16
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
17
|
+
blocking: true,
|
|
18
|
+
details: "At least 2 entities required for a meaningful module"
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
entityAttributes: {
|
|
22
|
+
check: "All entities have ≥3 attributes",
|
|
23
|
+
status: validateAllEntities(e => e.attributes.length >= 3) ? "PASS" : "FAIL",
|
|
24
|
+
blocking: true,
|
|
25
|
+
details: "Entities with <3 attributes are likely incomplete"
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
entityRelationships: {
|
|
29
|
+
check: "All entities have relationships defined (or explicitly marked as standalone)",
|
|
30
|
+
status: validateEntityRelationships() ? "PASS" : "FAIL",
|
|
31
|
+
blocking: false, // WARNING only
|
|
32
|
+
details: "Standalone entities should be rare in business modules"
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
entitySchemaCompliance: {
|
|
36
|
+
check: "All entities use canonical format: attributes[] (not fields[]), relationships[] array present",
|
|
37
|
+
status: specification.entities.every(e =>
|
|
38
|
+
Array.isArray(e.attributes) && e.attributes.length > 0 &&
|
|
39
|
+
!e.fields && !e.tableName && !e.primaryKey
|
|
40
|
+
) ? "PASS" : "FAIL",
|
|
41
|
+
blocking: true,
|
|
42
|
+
details: "Entities with 'fields' instead of 'attributes' break HTML data model display and PRD extraction. " +
|
|
43
|
+
"Check: every entity must have attributes[] (not fields[]), every entity must have relationships[], " +
|
|
44
|
+
"no entity should have tableName or primaryKey (technical fields belong in implementation, not analysis)"
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
// SECTION 2: BUSINESS RULES (BLOCKING)
|
|
48
|
+
businessRules: {
|
|
49
|
+
minimum: 4,
|
|
50
|
+
actual: analysis.businessRules.length,
|
|
51
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
52
|
+
blocking: true,
|
|
53
|
+
details: "Minimum 4 BRs (mix of VAL/CALC/WF/SEC/DATA)"
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
businessRuleCategories: {
|
|
57
|
+
check: "BRs cover ≥2 categories (VAL, CALC, WF, SEC, DATA)",
|
|
58
|
+
status: countUniqueCategories(analysis.businessRules) >= 2 ? "PASS" : "FAIL",
|
|
59
|
+
blocking: true,
|
|
60
|
+
details: "Single-category modules are likely incomplete"
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
businessRulePrefixes: {
|
|
64
|
+
check: "All BR IDs use module prefix (e.g., BR-VAL-{PREFIX}-NNN)",
|
|
65
|
+
status: validateBRPrefixes() ? "PASS" : "FAIL",
|
|
66
|
+
blocking: true,
|
|
67
|
+
details: "Missing prefixes cause ID collisions in multi-module apps"
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
// SECTION 3: USE CASES & REQUIREMENTS (BLOCKING)
|
|
71
|
+
useCases: {
|
|
72
|
+
minimum: 6,
|
|
73
|
+
actual: specification.useCases.length,
|
|
74
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
75
|
+
blocking: true,
|
|
76
|
+
details: "Minimum 6 UCs (CRUD + 2 business-specific)"
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
useCasePrefixes: {
|
|
80
|
+
check: "All UC IDs use module prefix (UC-{PREFIX}-NNN)",
|
|
81
|
+
status: validateUCPrefixes() ? "PASS" : "FAIL",
|
|
82
|
+
blocking: true,
|
|
83
|
+
details: "Missing prefixes cause ID collisions"
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
functionalRequirements: {
|
|
87
|
+
minimum: 4,
|
|
88
|
+
actual: specification.functionalRequirements.length,
|
|
89
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
90
|
+
blocking: true,
|
|
91
|
+
details: "FRs must cover key functionality"
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
ucFrLinkage: {
|
|
95
|
+
check: "Every UC has ≥1 linked FR",
|
|
96
|
+
status: validateUCtoFRLinkage() ? "PASS" : "FAIL",
|
|
97
|
+
blocking: true,
|
|
98
|
+
details: "Orphan UCs indicate incomplete requirements"
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
frBrLinkage: {
|
|
102
|
+
check: "Every FR has ≥1 linked BR",
|
|
103
|
+
status: validateFRtoBRLinkage() ? "PASS" : "FAIL",
|
|
104
|
+
blocking: false, // WARNING only
|
|
105
|
+
details: "FRs without BRs may lack validation/calculation logic"
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
// SECTION 4: PERMISSIONS (BLOCKING)
|
|
109
|
+
permissions: {
|
|
110
|
+
minimum: 5,
|
|
111
|
+
actual: specification.permissionMatrix.permissions.length,
|
|
112
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
113
|
+
blocking: true,
|
|
114
|
+
details: "Minimum 5 permissions (CRUD + 1 business action)"
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
permissionFormat: {
|
|
118
|
+
check: "All permissions use correct format: module-level {app}.{module}.{action} or section-level {app}.{module}.{section}.{action}",
|
|
119
|
+
status: validatePermissionFormat() ? "PASS" : "FAIL",
|
|
120
|
+
blocking: true,
|
|
121
|
+
details: "Wrong format breaks RBAC system. Module-level = 3 segments, section-level = 4 segments."
|
|
122
|
+
},
|
|
123
|
+
|
|
124
|
+
rolePermissions: {
|
|
125
|
+
check: "All application roles have ≥1 permission assigned",
|
|
126
|
+
status: validateRoleAssignments() ? "PASS" : "FAIL",
|
|
127
|
+
blocking: true,
|
|
128
|
+
details: "Roles without permissions are useless"
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
// SECTION 5: UI & NAVIGATION (BLOCKING)
|
|
132
|
+
sections: {
|
|
133
|
+
minimum: 2,
|
|
134
|
+
actual: specification.sections.length,
|
|
135
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
136
|
+
blocking: true,
|
|
137
|
+
details: "Modules need ≥2 sections (list + form minimum)"
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
wireframes: {
|
|
141
|
+
minimum: specification.sections.length, // 1 wireframe PER section
|
|
142
|
+
actual: (specification.uiWireframes || specification.wireframes || []).length, // Check BOTH key names
|
|
143
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
144
|
+
blocking: true,
|
|
145
|
+
details: "EVERY section MUST have a wireframe (ASCII/SVG). Check both uiWireframes and wireframes keys."
|
|
146
|
+
},
|
|
147
|
+
|
|
148
|
+
wireframeSchemaCompliance: {
|
|
149
|
+
check: "All wireframes have required fields: screen, section, mockupFormat, elements[], componentMapping[], layout (object), permissionsRequired[]",
|
|
150
|
+
status: (specification.uiWireframes || specification.wireframes || []).every(wf =>
|
|
151
|
+
(wf.screen || wf.title) && wf.section && (wf.mockupFormat || wf.mockup || wf.ascii) &&
|
|
152
|
+
Array.isArray(wf.elements) && wf.elements.length > 0 &&
|
|
153
|
+
Array.isArray(wf.componentMapping) && wf.componentMapping.length > 0 &&
|
|
154
|
+
typeof wf.layout === 'object' && wf.layout !== null &&
|
|
155
|
+
Array.isArray(wf.permissionsRequired)
|
|
156
|
+
) ? "PASS" : "FAIL",
|
|
157
|
+
blocking: true,
|
|
158
|
+
details: "Wireframes missing metadata render as empty frames in HTML documentation. " +
|
|
159
|
+
"Check: screen (not name/id/title), section, mockupFormat, elements[] non-empty, " +
|
|
160
|
+
"componentMapping[] as array of {wireframeElement, reactComponent}, layout as object (not string). " +
|
|
161
|
+
"Also see references/acceptance-criteria.md for bash-verifiable checks."
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
navigation: {
|
|
165
|
+
check: "Module has ≥1 navigation entry",
|
|
166
|
+
status: specification.navigation.entries.length >= 1 ? "PASS" : "FAIL",
|
|
167
|
+
blocking: true,
|
|
168
|
+
details: "Module must be accessible in menu"
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
navigationRoutePatterns: {
|
|
172
|
+
check: "Navigation routes do NOT contain CRUD suffixes (/list, /detail/:id)",
|
|
173
|
+
status: (() => {
|
|
174
|
+
const allRoutes = [
|
|
175
|
+
...(specification.seedDataCore?.navigationSections || []).map(s => s.route),
|
|
176
|
+
...(specification.sections || []).map(s => s.route),
|
|
177
|
+
...(specification.navigation?.entries || []).map(e => e.route)
|
|
178
|
+
].filter(Boolean);
|
|
179
|
+
const forbidden = allRoutes.filter(r => r.match(/\/list$/) || r.match(/\/detail\/:id$/));
|
|
180
|
+
return forbidden.length === 0 ? "PASS" : "FAIL";
|
|
181
|
+
})(),
|
|
182
|
+
blocking: true,
|
|
183
|
+
details: "FORBIDDEN: /module/list (use /module), /module/detail/:id (use /module/:id). " +
|
|
184
|
+
"list route = module route (React Router index route). " +
|
|
185
|
+
"detail route = module route + /:id (React Router :id child). " +
|
|
186
|
+
"Other sections (dashboard, approve) add /{section} normally."
|
|
187
|
+
},
|
|
188
|
+
|
|
189
|
+
// SECTION 6: I18N & MESSAGES (BLOCKING)
|
|
190
|
+
i18nKeys: {
|
|
191
|
+
minimum: 42, // Realistic minimum for a module
|
|
192
|
+
actual: specification.i18nKeys.length,
|
|
193
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
194
|
+
blocking: true,
|
|
195
|
+
details: "Keys needed: entities (×2), fields, messages, validation, navigation"
|
|
196
|
+
},
|
|
197
|
+
|
|
198
|
+
i18nLanguages: {
|
|
199
|
+
check: "All i18n keys have 4 languages (fr, en, it, de)",
|
|
200
|
+
status: validateI18nCompleteness() ? "PASS" : "FAIL",
|
|
201
|
+
blocking: true,
|
|
202
|
+
details: "Missing translations break multi-language support"
|
|
203
|
+
},
|
|
204
|
+
|
|
205
|
+
messages: {
|
|
206
|
+
minimum: 4,
|
|
207
|
+
actual: specification.messages.length,
|
|
208
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
209
|
+
blocking: true,
|
|
210
|
+
details: "Minimum: 1 success, 1 error, 1 warning, 1 info"
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
// SECTION 7: SEED DATA (BLOCKING)
|
|
214
|
+
seedDataCore: {
|
|
215
|
+
check: "All 7 CORE seed data sections present",
|
|
216
|
+
requiredSections: [
|
|
217
|
+
"navigationModules",
|
|
218
|
+
"navigationSections",
|
|
219
|
+
"navigationResources",
|
|
220
|
+
"navigationTranslations",
|
|
221
|
+
"permissions",
|
|
222
|
+
"rolePermissions",
|
|
223
|
+
"permissionConstants"
|
|
224
|
+
],
|
|
225
|
+
status: validateSeedDataCore() ? "PASS" : "FAIL",
|
|
226
|
+
blocking: true,
|
|
227
|
+
details: "Missing CORE seed data breaks module deployment"
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
seedDataBusiness: {
|
|
231
|
+
check: "Business seed data template defined (if applicable — generated during implementation, not BA)",
|
|
232
|
+
status: specification.seedDataBusiness !== undefined ? "PASS" : "WARN",
|
|
233
|
+
blocking: false, // WARNING only — business seed data is generated during ralph-loop implementation, not during BA phase
|
|
234
|
+
details: "Business seed data (reference types, categories, statuses) is generated during implementation (ralph-loop). " +
|
|
235
|
+
"BA phase ensures seedDataCore is complete (navigation, permissions). seedDataBusiness is optional at this stage."
|
|
236
|
+
},
|
|
237
|
+
|
|
238
|
+
// SECTION 8: API ENDPOINTS (BLOCKING)
|
|
239
|
+
apiEndpoints: {
|
|
240
|
+
minimum: 5,
|
|
241
|
+
actual: specification.apiEndpoints.length,
|
|
242
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
243
|
+
blocking: true,
|
|
244
|
+
details: "Minimum 5 endpoints (CRUD + 1 business action)"
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
apiPermissions: {
|
|
248
|
+
check: "Every API endpoint has permission defined",
|
|
249
|
+
status: validateAPIPermissions() ? "PASS" : "FAIL",
|
|
250
|
+
blocking: true,
|
|
251
|
+
details: "Endpoints without permissions are security holes"
|
|
252
|
+
},
|
|
253
|
+
|
|
254
|
+
// SECTION 9: VALIDATIONS (BLOCKING)
|
|
255
|
+
validations: {
|
|
256
|
+
minimum: 1,
|
|
257
|
+
actual: specification.validations.length,
|
|
258
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
259
|
+
blocking: true,
|
|
260
|
+
details: "Modules need field validation rules"
|
|
261
|
+
},
|
|
262
|
+
|
|
263
|
+
// SECTION 10: GHERKIN SCENARIOS (BLOCKING for format, WARNING for count)
|
|
264
|
+
gherkinFormat: {
|
|
265
|
+
check: "gherkinScenarios is ARRAY (not single object)",
|
|
266
|
+
status: Array.isArray(specification.gherkinScenarios) ? "PASS" : "FAIL",
|
|
267
|
+
blocking: true,
|
|
268
|
+
details: "gherkinScenarios MUST be an array [{feature, scenarios}], not a single object. " +
|
|
269
|
+
"Auto-fix: wrap in array [gherkinScenarios]. See step-03c ABSOLUTE FORMAT CHECKS."
|
|
270
|
+
},
|
|
271
|
+
|
|
272
|
+
gherkinContent: {
|
|
273
|
+
check: "Each gherkin entry has feature (string) + scenarios (array)",
|
|
274
|
+
status: (Array.isArray(specification.gherkinScenarios) &&
|
|
275
|
+
specification.gherkinScenarios.every(g => g.feature && Array.isArray(g.scenarios))
|
|
276
|
+
) ? "PASS" : "FAIL",
|
|
277
|
+
blocking: true,
|
|
278
|
+
details: "Each gherkin entry must have {feature: string, scenarios: [{name, tags, given[], when[], then[]}]}"
|
|
279
|
+
},
|
|
280
|
+
|
|
281
|
+
gherkinScenarioCount: {
|
|
282
|
+
minimum: 2,
|
|
283
|
+
actual: (Array.isArray(specification.gherkinScenarios)
|
|
284
|
+
? specification.gherkinScenarios.reduce((sum, g) => sum + (g.scenarios || []).length, 0)
|
|
285
|
+
: 0),
|
|
286
|
+
status: actual >= minimum ? "PASS" : "FAIL",
|
|
287
|
+
blocking: false, // WARNING only — count is advisory
|
|
288
|
+
details: "Gherkin scenarios enable automated testing"
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## Blocking Check Logic
|
|
294
|
+
|
|
295
|
+
```javascript
|
|
296
|
+
// BLOCKING CHECK: Count failures in BLOCKING items
|
|
297
|
+
const blockingFailures = Object.entries(checklist)
|
|
298
|
+
.filter(([key, check]) => check.blocking === true && check.status === "FAIL")
|
|
299
|
+
.map(([key, check]) => ({ section: key, ...check }));
|
|
300
|
+
|
|
301
|
+
IF blockingFailures.length > 0:
|
|
302
|
+
**BLOCKING ERROR:** Module specification incomplete
|
|
303
|
+
|
|
304
|
+
Display table:
|
|
305
|
+
| Section | Required | Actual | Status | Details |
|
|
306
|
+
|---------|----------|--------|--------|---------|
|
|
307
|
+
{for each blocking failure}
|
|
308
|
+
|
|
309
|
+
ACTIONS REQUIRED:
|
|
310
|
+
1. Fix ALL blocking failures listed above
|
|
311
|
+
2. Re-run step-03d validation
|
|
312
|
+
3. DO NOT mark module as "specified" until ALL blocking checks pass
|
|
313
|
+
|
|
314
|
+
STOP - DO NOT PROCEED TO UPDATE STATUS
|
|
315
|
+
ELSE:
|
|
316
|
+
All blocking checks passed ✓
|
|
317
|
+
{count} warnings (non-blocking)
|
|
318
|
+
Proceed to mark module as "specified"
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## Display Format
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
═══════════════════════════════════════════════════════════════
|
|
325
|
+
MODULE SPECIFICATION CHECKLIST - {currentModule}
|
|
326
|
+
═══════════════════════════════════════════════════════════════
|
|
327
|
+
|
|
328
|
+
| Category | Checks | Passed | Failed | Warnings |
|
|
329
|
+
|----------|--------|--------|--------|----------|
|
|
330
|
+
| Data Model | 4 | {n} | {n} | {n} |
|
|
331
|
+
| Business Rules | 3 | {n} | {n} | {n} |
|
|
332
|
+
| Use Cases & FRs | 4 | {n} | {n} | {n} |
|
|
333
|
+
| Permissions | 3 | {n} | {n} | {n} |
|
|
334
|
+
| UI & Navigation | 4 | {n} | {n} | {n} |
|
|
335
|
+
| I18N & Messages | 3 | {n} | {n} | {n} |
|
|
336
|
+
| Seed Data | 2 | {n} | {n} | {n} |
|
|
337
|
+
| API Endpoints | 2 | {n} | {n} | {n} |
|
|
338
|
+
| Validations | 1 | {n} | {n} | {n} |
|
|
339
|
+
| Gherkin | 3 | {n} | {n} | {n} |
|
|
340
|
+
|
|
341
|
+
TOTAL: {total_checks} checks | {passed} ✓ | {failed} ✗ | {warnings} ⚠
|
|
342
|
+
|
|
343
|
+
STATUS: {failed === 0 ? "READY FOR SPECIFIED" : "INCOMPLETE - FIX REQUIRED"}
|
|
344
|
+
═══════════════════════════════════════════════════════════════
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
**IF ALL BLOCKING CHECKS PASS → Proceed to update module status to "specified"**
|