@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,169 +1,169 @@
|
|
|
1
|
-
# Module Acceptance Criteria (Shared Reference)
|
|
2
|
-
|
|
3
|
-
> **Loaded by:** step-03d-validate (section 11-POST-CHECK-BASH), step-05a-handoff (pre-handoff gate), ralph-loop step-01-task (input validation)
|
|
4
|
-
> **Purpose:** Define measurable, bash-verifiable acceptance criteria that a module MUST pass before being marked "specified".
|
|
5
|
-
> **Key principle:** These checks read the REAL feature.json file on disk — NOT in-memory data the model "thinks" it wrote.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Why Bash-Verifiable?
|
|
10
|
-
|
|
11
|
-
All previous checks were **pseudocode interpreted by the model**. The model can "decide" a check passes even when it fails (hallucination of validation). Bash checks are **objective** — they read the actual file and count real elements.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Acceptance Criteria Table
|
|
16
|
-
|
|
17
|
-
| # | Criterion | Minimum | Field Path | Blocking | Category |
|
|
18
|
-
|---|-----------|---------|------------|----------|----------|
|
|
19
|
-
| AC-01 | Entities present | 1 | `analysis.entities[]` | YES | Data Model |
|
|
20
|
-
| AC-02 | Entity attributes have `type` field | ALL | `analysis.entities[].attributes[].type` | YES | Data Model |
|
|
21
|
-
| AC-03 | Use cases present | 2 | `specification.useCases[]` | YES | Requirements |
|
|
22
|
-
| AC-04 | Functional requirements present | 4 | `specification.functionalRequirements[]` | YES | Requirements |
|
|
23
|
-
| AC-05 | Wireframes present | 1 | `specification.uiWireframes[] \|\| specification.wireframes[]` | YES | UI |
|
|
24
|
-
| AC-06 | Wireframes >= sections | count match | wireframes.length >= sections.length | YES | UI |
|
|
25
|
-
| AC-07 | Wireframe content non-empty | ALL | `wireframe.mockup \|\| wireframe.ascii \|\| wireframe.content` | YES | UI |
|
|
26
|
-
| AC-08 | Sections present | 1 | `specification.sections[]` | YES | UI |
|
|
27
|
-
| AC-09 | SeedDataCore 7 arrays non-empty | 7/7 | `specification.seedDataCore.*` | YES | Seed Data |
|
|
28
|
-
| AC-10 | Gherkin scenarios is array | `Array.isArray` | `specification.gherkinScenarios` | YES | Format |
|
|
29
|
-
| AC-11 | API endpoints present | 1 | `specification.apiEndpoints[]` | YES | API |
|
|
30
|
-
| AC-12 | Messages present | 4 | `specification.messages[]` | YES | Messages |
|
|
31
|
-
| AC-13 | Validations present | 1 | `specification.validations[]` | YES | Validation |
|
|
32
|
-
| AC-14 | Wireframe field naming | canonical | `screen` not `title`, `mockup` not `ascii` | WARNING | Convention |
|
|
33
|
-
| AC-15 | Validation rules format | ALL array | `specification.validations[].rules` is `Array` | YES | Format |
|
|
34
|
-
| AC-16 | Messages have `message` field | ALL present | `specification.messages[].message` truthy | YES | Format |
|
|
35
|
-
| AC-17 | Gherkin content structure | ALL valid | Each element has `feature` (string) + `scenarios` (array) | YES | Format |
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Bash Verification Script (node -e)
|
|
40
|
-
|
|
41
|
-
> **Usage:** Called from step-03d section 11-POST-CHECK-BASH after writing module feature.json.
|
|
42
|
-
> Also callable standalone for debugging: `node -e "..." path/to/feature.json`
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
MODULE_JSON="{module_feature_json_path}"
|
|
46
|
-
node -e "
|
|
47
|
-
const fs = require('fs');
|
|
48
|
-
const data = JSON.parse(fs.readFileSync(process.argv[1], 'utf-8'));
|
|
49
|
-
const spec = data.specification || {};
|
|
50
|
-
const analysis = data.analysis || {};
|
|
51
|
-
const wf = spec.uiWireframes || spec.wireframes || [];
|
|
52
|
-
const sections = spec.sections || [];
|
|
53
|
-
const sdc = spec.seedDataCore || {};
|
|
54
|
-
|
|
55
|
-
const checks = [
|
|
56
|
-
['AC-01: entities >= 1', (analysis.entities||[]).length, 1],
|
|
57
|
-
['AC-03: useCases >= 2', (spec.useCases||[]).length, 2],
|
|
58
|
-
['AC-04: FRs >= 4', (spec.functionalRequirements||[]).length, 4],
|
|
59
|
-
['AC-05: wireframes >= 1', wf.length, 1],
|
|
60
|
-
['AC-06: wireframes >= sections', wf.length, sections.length],
|
|
61
|
-
['AC-08: sections >= 1', sections.length, 1],
|
|
62
|
-
['AC-09: seedDataCore 7 arrays', Object.keys(sdc).filter(k => Array.isArray(sdc[k]) && sdc[k].length > 0).length, 7],
|
|
63
|
-
['AC-10: gherkin is array', Array.isArray(spec.gherkinScenarios) ? 1 : 0, 1],
|
|
64
|
-
['AC-11: apiEndpoints >= 1', (spec.apiEndpoints||[]).length, 1],
|
|
65
|
-
['AC-12: messages >= 4', (spec.messages||[]).length, 4],
|
|
66
|
-
['AC-13: validations >= 1', (spec.validations||[]).length, 1]
|
|
67
|
-
];
|
|
68
|
-
|
|
69
|
-
const fails = [];
|
|
70
|
-
checks.forEach(c => {
|
|
71
|
-
if (c[1] < c[2]) {
|
|
72
|
-
fails.push(c);
|
|
73
|
-
console.error('FAIL: ' + c[0] + ' = ' + c[1] + ' (min: ' + c[2] + ')');
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
// AC-02: Entity attribute types
|
|
78
|
-
const badAttrs = (analysis.entities||[]).flatMap(e =>
|
|
79
|
-
(e.attributes||[]).filter(a => !a.type).map(a => e.name + '.' + a.name)
|
|
80
|
-
);
|
|
81
|
-
if (badAttrs.length > 0) {
|
|
82
|
-
fails.push(['AC-02: attr.type missing', badAttrs.length, 0]);
|
|
83
|
-
console.error('FAIL: AC-02: ' + badAttrs.length + ' attributes without type: ' + badAttrs.slice(0, 5).join(', ') + (badAttrs.length > 5 ? '...' : ''));
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// AC-07: Wireframe content non-empty
|
|
87
|
-
const emptyWf = wf.filter(w => !w.mockup && !w.ascii && !w.content);
|
|
88
|
-
if (emptyWf.length > 0) {
|
|
89
|
-
fails.push(['AC-07: wireframe content empty', emptyWf.length, 0]);
|
|
90
|
-
console.error('FAIL: AC-07: ' + emptyWf.length + ' wireframes have EMPTY content');
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// AC-14: Wireframe field naming (WARNING only)
|
|
94
|
-
const badFields = wf.filter(w => w.title || w.ascii || (w.name && !w.screen));
|
|
95
|
-
if (badFields.length > 0) {
|
|
96
|
-
console.warn('WARNING: AC-14: ' + badFields.length + ' wireframes use non-canonical field names (title/ascii/name)');
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// AC-15: Validation rules format (rules must be array, not string)
|
|
100
|
-
const badRules = (spec.validations||[]).filter(v => v.rules && !Array.isArray(v.rules));
|
|
101
|
-
if (badRules.length > 0) {
|
|
102
|
-
fails.push(['AC-15: validations[].rules not array', badRules.length, 0]);
|
|
103
|
-
console.error('FAIL: AC-15: ' + badRules.length + ' validations have rules as string instead of array');
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// AC-16: Messages must have 'message' field
|
|
107
|
-
const noMsg = (spec.messages||[]).filter(m => !m.message);
|
|
108
|
-
if (noMsg.length > 0) {
|
|
109
|
-
fails.push(['AC-16: messages[].message missing', noMsg.length, 0]);
|
|
110
|
-
console.error('FAIL: AC-16: ' + noMsg.length + ' messages missing "message" field');
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// AC-17: Gherkin content structure (each element needs feature + scenarios[])
|
|
114
|
-
if (Array.isArray(spec.gherkinScenarios)) {
|
|
115
|
-
const badGherkin = spec.gherkinScenarios.filter(g => !g.feature || !Array.isArray(g.scenarios));
|
|
116
|
-
if (badGherkin.length > 0) {
|
|
117
|
-
fails.push(['AC-17: gherkin content invalid', badGherkin.length, 0]);
|
|
118
|
-
console.error('FAIL: AC-17: ' + badGherkin.length + ' gherkin entries missing feature or scenarios[]');
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Summary
|
|
123
|
-
if (fails.length > 0) {
|
|
124
|
-
console.error('\\nBLOCKING: ' + fails.length + ' acceptance criteria FAILED');
|
|
125
|
-
process.exit(1);
|
|
126
|
-
}
|
|
127
|
-
console.log('PASS: All acceptance criteria met (AC-01 to AC-17)');
|
|
128
|
-
" "$MODULE_JSON"
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Integration Points
|
|
134
|
-
|
|
135
|
-
### 1. step-03d-validate.md (section 11-POST-CHECK-BASH)
|
|
136
|
-
|
|
137
|
-
After writing module feature.json, run the bash script above.
|
|
138
|
-
IF FAIL → re-execute section 11 write with corrected data → re-run until PASS.
|
|
139
|
-
|
|
140
|
-
### 2. step-05a-handoff.md (pre-handoff gate)
|
|
141
|
-
|
|
142
|
-
Before writing handoff for each module (section 7a step 3), run the bash script on the module feature.json.
|
|
143
|
-
IF FAIL → STOP handoff for this module, report which criteria failed.
|
|
144
|
-
|
|
145
|
-
### 3. ralph-loop step-01-task.md (input validation)
|
|
146
|
-
|
|
147
|
-
At PRD load time, run the bash script on each module feature.json.
|
|
148
|
-
IF FAIL → BLOCKING: "Module {name} does not meet acceptance criteria — run /business-analyse to fix".
|
|
149
|
-
This prevents ralph-loop from generating code from incomplete specifications.
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Recovery Actions per Criterion
|
|
154
|
-
|
|
155
|
-
| Criterion | Recovery |
|
|
156
|
-
|-----------|----------|
|
|
157
|
-
| AC-01/02 | Re-run step-03a2-analysis (entity definition) |
|
|
158
|
-
| AC-03/04 | Re-run step-03c-compile sections 8b/8c |
|
|
159
|
-
| AC-05/06/07 | Re-run step-03b-ui (wireframe generation) — step-03b now writes intermediately |
|
|
160
|
-
| AC-08 | Re-run step-03b section 3a-bis (section definition) |
|
|
161
|
-
| AC-09 | Re-run step-03c section 8f-bis (seedDataCore transform) |
|
|
162
|
-
| AC-10 | Auto-fix: wrap in array `[gherkinScenarios]` |
|
|
163
|
-
| AC-11 | Re-run step-03c section 8k |
|
|
164
|
-
| AC-12 | Re-run step-03c section 8i |
|
|
165
|
-
| AC-13 | Re-run step-03c section 8h |
|
|
166
|
-
| AC-14 | Auto-fix: rename title→screen, ascii→mockup (done by step-03c/03d auto-fix) |
|
|
167
|
-
| AC-15 | Auto-fix: wrap string in array `[rules]` (done by step-03c ABSOLUTE FORMAT CHECKS) |
|
|
168
|
-
| AC-16 | Auto-fix: copy `description` → `message` (done by step-03c ABSOLUTE FORMAT CHECKS) |
|
|
169
|
-
| AC-17 | Re-run step-03c section 8g — ensure each gherkin entry has `feature` string + `scenarios` array |
|
|
1
|
+
# Module Acceptance Criteria (Shared Reference)
|
|
2
|
+
|
|
3
|
+
> **Loaded by:** step-03d-validate (section 11-POST-CHECK-BASH), step-05a-handoff (pre-handoff gate), ralph-loop step-01-task (input validation)
|
|
4
|
+
> **Purpose:** Define measurable, bash-verifiable acceptance criteria that a module MUST pass before being marked "specified".
|
|
5
|
+
> **Key principle:** These checks read the REAL feature.json file on disk — NOT in-memory data the model "thinks" it wrote.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Why Bash-Verifiable?
|
|
10
|
+
|
|
11
|
+
All previous checks were **pseudocode interpreted by the model**. The model can "decide" a check passes even when it fails (hallucination of validation). Bash checks are **objective** — they read the actual file and count real elements.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Acceptance Criteria Table
|
|
16
|
+
|
|
17
|
+
| # | Criterion | Minimum | Field Path | Blocking | Category |
|
|
18
|
+
|---|-----------|---------|------------|----------|----------|
|
|
19
|
+
| AC-01 | Entities present | 1 | `analysis.entities[]` | YES | Data Model |
|
|
20
|
+
| AC-02 | Entity attributes have `type` field | ALL | `analysis.entities[].attributes[].type` | YES | Data Model |
|
|
21
|
+
| AC-03 | Use cases present | 2 | `specification.useCases[]` | YES | Requirements |
|
|
22
|
+
| AC-04 | Functional requirements present | 4 | `specification.functionalRequirements[]` | YES | Requirements |
|
|
23
|
+
| AC-05 | Wireframes present | 1 | `specification.uiWireframes[] \|\| specification.wireframes[]` | YES | UI |
|
|
24
|
+
| AC-06 | Wireframes >= sections | count match | wireframes.length >= sections.length | YES | UI |
|
|
25
|
+
| AC-07 | Wireframe content non-empty | ALL | `wireframe.mockup \|\| wireframe.ascii \|\| wireframe.content` | YES | UI |
|
|
26
|
+
| AC-08 | Sections present | 1 | `specification.sections[]` | YES | UI |
|
|
27
|
+
| AC-09 | SeedDataCore 7 arrays non-empty | 7/7 | `specification.seedDataCore.*` | YES | Seed Data |
|
|
28
|
+
| AC-10 | Gherkin scenarios is array | `Array.isArray` | `specification.gherkinScenarios` | YES | Format |
|
|
29
|
+
| AC-11 | API endpoints present | 1 | `specification.apiEndpoints[]` | YES | API |
|
|
30
|
+
| AC-12 | Messages present | 4 | `specification.messages[]` | YES | Messages |
|
|
31
|
+
| AC-13 | Validations present | 1 | `specification.validations[]` | YES | Validation |
|
|
32
|
+
| AC-14 | Wireframe field naming | canonical | `screen` not `title`, `mockup` not `ascii` | WARNING | Convention |
|
|
33
|
+
| AC-15 | Validation rules format | ALL array | `specification.validations[].rules` is `Array` | YES | Format |
|
|
34
|
+
| AC-16 | Messages have `message` field | ALL present | `specification.messages[].message` truthy | YES | Format |
|
|
35
|
+
| AC-17 | Gherkin content structure | ALL valid | Each element has `feature` (string) + `scenarios` (array) | YES | Format |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Bash Verification Script (node -e)
|
|
40
|
+
|
|
41
|
+
> **Usage:** Called from step-03d section 11-POST-CHECK-BASH after writing module feature.json.
|
|
42
|
+
> Also callable standalone for debugging: `node -e "..." path/to/feature.json`
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
MODULE_JSON="{module_feature_json_path}"
|
|
46
|
+
node -e "
|
|
47
|
+
const fs = require('fs');
|
|
48
|
+
const data = JSON.parse(fs.readFileSync(process.argv[1], 'utf-8'));
|
|
49
|
+
const spec = data.specification || {};
|
|
50
|
+
const analysis = data.analysis || {};
|
|
51
|
+
const wf = spec.uiWireframes || spec.wireframes || [];
|
|
52
|
+
const sections = spec.sections || [];
|
|
53
|
+
const sdc = spec.seedDataCore || {};
|
|
54
|
+
|
|
55
|
+
const checks = [
|
|
56
|
+
['AC-01: entities >= 1', (analysis.entities||[]).length, 1],
|
|
57
|
+
['AC-03: useCases >= 2', (spec.useCases||[]).length, 2],
|
|
58
|
+
['AC-04: FRs >= 4', (spec.functionalRequirements||[]).length, 4],
|
|
59
|
+
['AC-05: wireframes >= 1', wf.length, 1],
|
|
60
|
+
['AC-06: wireframes >= sections', wf.length, sections.length],
|
|
61
|
+
['AC-08: sections >= 1', sections.length, 1],
|
|
62
|
+
['AC-09: seedDataCore 7 arrays', Object.keys(sdc).filter(k => Array.isArray(sdc[k]) && sdc[k].length > 0).length, 7],
|
|
63
|
+
['AC-10: gherkin is array', Array.isArray(spec.gherkinScenarios) ? 1 : 0, 1],
|
|
64
|
+
['AC-11: apiEndpoints >= 1', (spec.apiEndpoints||[]).length, 1],
|
|
65
|
+
['AC-12: messages >= 4', (spec.messages||[]).length, 4],
|
|
66
|
+
['AC-13: validations >= 1', (spec.validations||[]).length, 1]
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const fails = [];
|
|
70
|
+
checks.forEach(c => {
|
|
71
|
+
if (c[1] < c[2]) {
|
|
72
|
+
fails.push(c);
|
|
73
|
+
console.error('FAIL: ' + c[0] + ' = ' + c[1] + ' (min: ' + c[2] + ')');
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// AC-02: Entity attribute types
|
|
78
|
+
const badAttrs = (analysis.entities||[]).flatMap(e =>
|
|
79
|
+
(e.attributes||[]).filter(a => !a.type).map(a => e.name + '.' + a.name)
|
|
80
|
+
);
|
|
81
|
+
if (badAttrs.length > 0) {
|
|
82
|
+
fails.push(['AC-02: attr.type missing', badAttrs.length, 0]);
|
|
83
|
+
console.error('FAIL: AC-02: ' + badAttrs.length + ' attributes without type: ' + badAttrs.slice(0, 5).join(', ') + (badAttrs.length > 5 ? '...' : ''));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// AC-07: Wireframe content non-empty
|
|
87
|
+
const emptyWf = wf.filter(w => !w.mockup && !w.ascii && !w.content);
|
|
88
|
+
if (emptyWf.length > 0) {
|
|
89
|
+
fails.push(['AC-07: wireframe content empty', emptyWf.length, 0]);
|
|
90
|
+
console.error('FAIL: AC-07: ' + emptyWf.length + ' wireframes have EMPTY content');
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// AC-14: Wireframe field naming (WARNING only)
|
|
94
|
+
const badFields = wf.filter(w => w.title || w.ascii || (w.name && !w.screen));
|
|
95
|
+
if (badFields.length > 0) {
|
|
96
|
+
console.warn('WARNING: AC-14: ' + badFields.length + ' wireframes use non-canonical field names (title/ascii/name)');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// AC-15: Validation rules format (rules must be array, not string)
|
|
100
|
+
const badRules = (spec.validations||[]).filter(v => v.rules && !Array.isArray(v.rules));
|
|
101
|
+
if (badRules.length > 0) {
|
|
102
|
+
fails.push(['AC-15: validations[].rules not array', badRules.length, 0]);
|
|
103
|
+
console.error('FAIL: AC-15: ' + badRules.length + ' validations have rules as string instead of array');
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// AC-16: Messages must have 'message' field
|
|
107
|
+
const noMsg = (spec.messages||[]).filter(m => !m.message);
|
|
108
|
+
if (noMsg.length > 0) {
|
|
109
|
+
fails.push(['AC-16: messages[].message missing', noMsg.length, 0]);
|
|
110
|
+
console.error('FAIL: AC-16: ' + noMsg.length + ' messages missing "message" field');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// AC-17: Gherkin content structure (each element needs feature + scenarios[])
|
|
114
|
+
if (Array.isArray(spec.gherkinScenarios)) {
|
|
115
|
+
const badGherkin = spec.gherkinScenarios.filter(g => !g.feature || !Array.isArray(g.scenarios));
|
|
116
|
+
if (badGherkin.length > 0) {
|
|
117
|
+
fails.push(['AC-17: gherkin content invalid', badGherkin.length, 0]);
|
|
118
|
+
console.error('FAIL: AC-17: ' + badGherkin.length + ' gherkin entries missing feature or scenarios[]');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Summary
|
|
123
|
+
if (fails.length > 0) {
|
|
124
|
+
console.error('\\nBLOCKING: ' + fails.length + ' acceptance criteria FAILED');
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
console.log('PASS: All acceptance criteria met (AC-01 to AC-17)');
|
|
128
|
+
" "$MODULE_JSON"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Integration Points
|
|
134
|
+
|
|
135
|
+
### 1. step-03d-validate.md (section 11-POST-CHECK-BASH)
|
|
136
|
+
|
|
137
|
+
After writing module feature.json, run the bash script above.
|
|
138
|
+
IF FAIL → re-execute section 11 write with corrected data → re-run until PASS.
|
|
139
|
+
|
|
140
|
+
### 2. step-05a-handoff.md (pre-handoff gate)
|
|
141
|
+
|
|
142
|
+
Before writing handoff for each module (section 7a step 3), run the bash script on the module feature.json.
|
|
143
|
+
IF FAIL → STOP handoff for this module, report which criteria failed.
|
|
144
|
+
|
|
145
|
+
### 3. ralph-loop step-01-task.md (input validation)
|
|
146
|
+
|
|
147
|
+
At PRD load time, run the bash script on each module feature.json.
|
|
148
|
+
IF FAIL → BLOCKING: "Module {name} does not meet acceptance criteria — run /business-analyse to fix".
|
|
149
|
+
This prevents ralph-loop from generating code from incomplete specifications.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Recovery Actions per Criterion
|
|
154
|
+
|
|
155
|
+
| Criterion | Recovery |
|
|
156
|
+
|-----------|----------|
|
|
157
|
+
| AC-01/02 | Re-run step-03a2-analysis (entity definition) |
|
|
158
|
+
| AC-03/04 | Re-run step-03c-compile sections 8b/8c |
|
|
159
|
+
| AC-05/06/07 | Re-run step-03b-ui (wireframe generation) — step-03b now writes intermediately |
|
|
160
|
+
| AC-08 | Re-run step-03b section 3a-bis (section definition) |
|
|
161
|
+
| AC-09 | Re-run step-03c section 8f-bis (seedDataCore transform) |
|
|
162
|
+
| AC-10 | Auto-fix: wrap in array `[gherkinScenarios]` |
|
|
163
|
+
| AC-11 | Re-run step-03c section 8k |
|
|
164
|
+
| AC-12 | Re-run step-03c section 8i |
|
|
165
|
+
| AC-13 | Re-run step-03c section 8h |
|
|
166
|
+
| AC-14 | Auto-fix: rename title→screen, ascii→mockup (done by step-03c/03d auto-fix) |
|
|
167
|
+
| AC-15 | Auto-fix: wrap string in array `[rules]` (done by step-03c ABSOLUTE FORMAT CHECKS) |
|
|
168
|
+
| AC-16 | Auto-fix: copy `description` → `message` (done by step-03c ABSOLUTE FORMAT CHECKS) |
|
|
169
|
+
| AC-17 | Re-run step-03c section 8g — ensure each gherkin entry has `feature` string + `scenarios` array |
|