@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,185 +1,185 @@
|
|
|
1
|
-
# Category Completeness Check
|
|
2
|
-
|
|
3
|
-
> **Reference for:** step-01-task.md section 4b and step-04-check.md section 1.7
|
|
4
|
-
> **Purpose:** Ensure PRD contains tasks for ALL required categories before/during execution
|
|
5
|
-
> **Frequency:** On load (step-01) and every iteration (step-04)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## The Problem
|
|
10
|
-
|
|
11
|
-
**Test-v4-005 Failure Mode:**
|
|
12
|
-
- PRD generated with only backend categories (domain, infrastructure, application, api, seedData)
|
|
13
|
-
- Frontend and test categories were entirely absent
|
|
14
|
-
- Result: 0 frontend pages, 0 tests generated across 3 modules
|
|
15
|
-
- Root cause: No guardrail detection during load
|
|
16
|
-
|
|
17
|
-
## The Solution: Required Categories
|
|
18
|
-
|
|
19
|
-
**CRITICAL:** Every PRD MUST have tasks for these categories:
|
|
20
|
-
|
|
21
|
-
```javascript
|
|
22
|
-
const REQUIRED_CATEGORIES = ['domain', 'infrastructure', 'application', 'api', 'seedData', 'frontend', 'test'];
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
> **Why seedData is required:**
|
|
26
|
-
> - Without it: Navigation/Permissions are not seeded
|
|
27
|
-
> - Result: Frontend/test tasks execute against empty database
|
|
28
|
-
> - Guardrail must inject NavigationApplicationSeedData, ApplicationRolesSeedData, etc.
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Completeness Check Function
|
|
33
|
-
|
|
34
|
-
```javascript
|
|
35
|
-
function checkCategoryCompleteness(prd) {
|
|
36
|
-
const presentCategories = new Set(prd.tasks.map(t => t.category));
|
|
37
|
-
const REQUIRED_CATEGORIES = ['domain', 'infrastructure', 'application', 'api', 'seedData', 'frontend', 'test'];
|
|
38
|
-
const missingCategories = REQUIRED_CATEGORIES.filter(c => !presentCategories.has(c));
|
|
39
|
-
|
|
40
|
-
if (missingCategories.length === 0) {
|
|
41
|
-
return { missing: [], guardrailsNeeded: [] };
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
console.warn(`⚠ PRD MISSING CATEGORIES: ${missingCategories.join(', ')}`);
|
|
45
|
-
|
|
46
|
-
// Calculate max ID for new guardrails
|
|
47
|
-
let maxIdNum = Math.max(...prd.tasks.map(t => {
|
|
48
|
-
const num = parseInt(t.id.replace(/[^0-9]/g, ''), 10);
|
|
49
|
-
return isNaN(num) ? 0 : num;
|
|
50
|
-
}), 0);
|
|
51
|
-
|
|
52
|
-
const prefix = prd.tasks[0]?.id?.replace(/[0-9]+$/, '') || 'GUARD-';
|
|
53
|
-
const lastApiTask = prd.tasks.filter(t => t.category === 'api').pop()?.id;
|
|
54
|
-
const lastSeedDataTask = prd.tasks.filter(t => t.category === 'seedData').pop()?.id;
|
|
55
|
-
|
|
56
|
-
// Dependency chain: domain → infrastructure → application → api → seedData → frontend → test
|
|
57
|
-
// Frontend MUST depend on seedData (navigation/permissions must be seeded first)
|
|
58
|
-
const frontendDep = lastSeedDataTask || lastApiTask;
|
|
59
|
-
|
|
60
|
-
const guardrailTasks = [];
|
|
61
|
-
|
|
62
|
-
for (const cat of missingCategories) {
|
|
63
|
-
maxIdNum++;
|
|
64
|
-
const taskId = `${prefix}${String(maxIdNum).padStart(3, '0')}`;
|
|
65
|
-
|
|
66
|
-
// Determine dependencies based on category order
|
|
67
|
-
let deps;
|
|
68
|
-
if (cat === 'seedData') {
|
|
69
|
-
deps = [lastApiTask]; // seedData depends on API infrastructure
|
|
70
|
-
} else if (cat === 'frontend') {
|
|
71
|
-
deps = [frontendDep]; // frontend depends on seedData (navigation must be seeded)
|
|
72
|
-
} else if (cat === 'test') {
|
|
73
|
-
deps = [frontendDep]; // test depends on seedData too
|
|
74
|
-
} else {
|
|
75
|
-
deps = [];
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const guardrailTask = {
|
|
79
|
-
id: taskId,
|
|
80
|
-
description: `[GUARDRAIL] Generate ${cat} layer for ${prd.project?.module || 'module'}`,
|
|
81
|
-
status: 'pending',
|
|
82
|
-
category: cat,
|
|
83
|
-
dependencies: deps,
|
|
84
|
-
acceptance_criteria: determineAcceptanceCriteria(cat),
|
|
85
|
-
started_at: null,
|
|
86
|
-
completed_at: null,
|
|
87
|
-
iteration: null,
|
|
88
|
-
commit_hash: null,
|
|
89
|
-
files_changed: [],
|
|
90
|
-
validation: null,
|
|
91
|
-
error: null
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
guardrailTasks.push(guardrailTask);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return { missing: missingCategories, guardrailsNeeded: guardrailTasks };
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function determineAcceptanceCriteria(category) {
|
|
101
|
-
const criteria = {
|
|
102
|
-
domain: 'Entity classes created with required properties',
|
|
103
|
-
infrastructure: 'EF Core configs, migrations created, dotnet build passes',
|
|
104
|
-
application: 'Service classes implementing business logic',
|
|
105
|
-
api: 'REST controllers with [RequirePermission] attributes',
|
|
106
|
-
seedData: 'NavigationApplicationSeedData + ApplicationRolesSeedData + PermissionsSeedData created, IClientSeedDataProvider wired, startup test passes',
|
|
107
|
-
frontend: 'React pages created via MCP scaffold_api_client + scaffold_routes, wired to App.tsx, navigation seed data verified in DB',
|
|
108
|
-
test: 'Unit + Integration test projects created, scaffold_tests MCP called, dotnet test passes'
|
|
109
|
-
};
|
|
110
|
-
return criteria[category] || `${category} layer fully implemented per category-rules.md`;
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Application in step-01
|
|
115
|
-
|
|
116
|
-
```javascript
|
|
117
|
-
// After loading prd.json or generating tasks
|
|
118
|
-
const { missing, guardrailsNeeded } = checkCategoryCompleteness(prd);
|
|
119
|
-
|
|
120
|
-
if (guardrailsNeeded.length > 0) {
|
|
121
|
-
console.log(`PRD updated: ${prd.tasks.length} → ${prd.tasks.length + guardrailsNeeded.length} tasks (${guardrailsNeeded.length} guardrails added)`);
|
|
122
|
-
prd.tasks.push(...guardrailsNeeded);
|
|
123
|
-
|
|
124
|
-
// Update frontendDep for any frontend guardrail if seedData was just injected
|
|
125
|
-
if (missing.includes('seedData')) {
|
|
126
|
-
const seedDataGuard = guardrailsNeeded.find(t => t.category === 'seedData');
|
|
127
|
-
const frontendGuard = prd.tasks.find(t => t.category === 'frontend' && t.description.includes('[GUARDRAIL]'));
|
|
128
|
-
if (frontendGuard && seedDataGuard) {
|
|
129
|
-
frontendGuard.dependencies = [seedDataGuard.id];
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
writeJSON('.ralph/prd.json', prd);
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Application in step-04 (every iteration)
|
|
138
|
-
|
|
139
|
-
```javascript
|
|
140
|
-
// RUNS EVERY ITERATION — not just once
|
|
141
|
-
const { missing, guardrailsNeeded } = checkCategoryCompleteness(prd);
|
|
142
|
-
|
|
143
|
-
if (guardrailsNeeded.length > 0) {
|
|
144
|
-
prd.tasks.push(...guardrailsNeeded);
|
|
145
|
-
writeJSON('.ralph/prd.json', prd);
|
|
146
|
-
|
|
147
|
-
const newPending = prd.tasks.filter(t => t.status === 'pending').length;
|
|
148
|
-
console.log(`PRD updated: +${guardrailsNeeded.length} guardrails, ${newPending} pending tasks`);
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Artifact Verification
|
|
153
|
-
|
|
154
|
-
After category check, verify artifacts actually exist for completed tasks:
|
|
155
|
-
|
|
156
|
-
```javascript
|
|
157
|
-
const completedCats = new Set(prd.tasks.filter(t => t.status === 'completed').map(t => t.category));
|
|
158
|
-
const artifactChecks = {
|
|
159
|
-
'frontend': () => glob.sync('**/src/pages/**/*.tsx').length > 0,
|
|
160
|
-
'test': () => glob.sync('tests/**/*Tests.cs').length > 0,
|
|
161
|
-
'api': () => glob.sync('src/*/Controllers/**/*Controller.cs').length > 0
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
for (const [cat, check] of Object.entries(artifactChecks)) {
|
|
165
|
-
if (completedCats.has(cat) && !check()) {
|
|
166
|
-
console.warn(`ARTIFACT MISSING: ${cat} tasks marked completed but no files found — resetting to pending`);
|
|
167
|
-
prd.tasks.filter(t => t.category === cat && t.status === 'completed')
|
|
168
|
-
.forEach(t => {
|
|
169
|
-
t.status = 'pending';
|
|
170
|
-
t.error = 'Artifacts missing — re-execute';
|
|
171
|
-
t.completed_at = null;
|
|
172
|
-
});
|
|
173
|
-
writeJSON('.ralph/prd.json', prd);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## Key Rules
|
|
181
|
-
|
|
182
|
-
- **Inject EVERY iteration:** Not just once during load
|
|
183
|
-
- **Frontend depends on seedData:** Not just API
|
|
184
|
-
- **Check artifacts:** Mark tasks pending if files don't exist
|
|
185
|
-
- **Never skip:** This is the blocker for "missing frontend/test" failures
|
|
1
|
+
# Category Completeness Check
|
|
2
|
+
|
|
3
|
+
> **Reference for:** step-01-task.md section 4b and step-04-check.md section 1.7
|
|
4
|
+
> **Purpose:** Ensure PRD contains tasks for ALL required categories before/during execution
|
|
5
|
+
> **Frequency:** On load (step-01) and every iteration (step-04)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## The Problem
|
|
10
|
+
|
|
11
|
+
**Test-v4-005 Failure Mode:**
|
|
12
|
+
- PRD generated with only backend categories (domain, infrastructure, application, api, seedData)
|
|
13
|
+
- Frontend and test categories were entirely absent
|
|
14
|
+
- Result: 0 frontend pages, 0 tests generated across 3 modules
|
|
15
|
+
- Root cause: No guardrail detection during load
|
|
16
|
+
|
|
17
|
+
## The Solution: Required Categories
|
|
18
|
+
|
|
19
|
+
**CRITICAL:** Every PRD MUST have tasks for these categories:
|
|
20
|
+
|
|
21
|
+
```javascript
|
|
22
|
+
const REQUIRED_CATEGORIES = ['domain', 'infrastructure', 'application', 'api', 'seedData', 'frontend', 'test'];
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
> **Why seedData is required:**
|
|
26
|
+
> - Without it: Navigation/Permissions are not seeded
|
|
27
|
+
> - Result: Frontend/test tasks execute against empty database
|
|
28
|
+
> - Guardrail must inject NavigationApplicationSeedData, ApplicationRolesSeedData, etc.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Completeness Check Function
|
|
33
|
+
|
|
34
|
+
```javascript
|
|
35
|
+
function checkCategoryCompleteness(prd) {
|
|
36
|
+
const presentCategories = new Set(prd.tasks.map(t => t.category));
|
|
37
|
+
const REQUIRED_CATEGORIES = ['domain', 'infrastructure', 'application', 'api', 'seedData', 'frontend', 'test'];
|
|
38
|
+
const missingCategories = REQUIRED_CATEGORIES.filter(c => !presentCategories.has(c));
|
|
39
|
+
|
|
40
|
+
if (missingCategories.length === 0) {
|
|
41
|
+
return { missing: [], guardrailsNeeded: [] };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
console.warn(`⚠ PRD MISSING CATEGORIES: ${missingCategories.join(', ')}`);
|
|
45
|
+
|
|
46
|
+
// Calculate max ID for new guardrails
|
|
47
|
+
let maxIdNum = Math.max(...prd.tasks.map(t => {
|
|
48
|
+
const num = parseInt(t.id.replace(/[^0-9]/g, ''), 10);
|
|
49
|
+
return isNaN(num) ? 0 : num;
|
|
50
|
+
}), 0);
|
|
51
|
+
|
|
52
|
+
const prefix = prd.tasks[0]?.id?.replace(/[0-9]+$/, '') || 'GUARD-';
|
|
53
|
+
const lastApiTask = prd.tasks.filter(t => t.category === 'api').pop()?.id;
|
|
54
|
+
const lastSeedDataTask = prd.tasks.filter(t => t.category === 'seedData').pop()?.id;
|
|
55
|
+
|
|
56
|
+
// Dependency chain: domain → infrastructure → application → api → seedData → frontend → test
|
|
57
|
+
// Frontend MUST depend on seedData (navigation/permissions must be seeded first)
|
|
58
|
+
const frontendDep = lastSeedDataTask || lastApiTask;
|
|
59
|
+
|
|
60
|
+
const guardrailTasks = [];
|
|
61
|
+
|
|
62
|
+
for (const cat of missingCategories) {
|
|
63
|
+
maxIdNum++;
|
|
64
|
+
const taskId = `${prefix}${String(maxIdNum).padStart(3, '0')}`;
|
|
65
|
+
|
|
66
|
+
// Determine dependencies based on category order
|
|
67
|
+
let deps;
|
|
68
|
+
if (cat === 'seedData') {
|
|
69
|
+
deps = [lastApiTask]; // seedData depends on API infrastructure
|
|
70
|
+
} else if (cat === 'frontend') {
|
|
71
|
+
deps = [frontendDep]; // frontend depends on seedData (navigation must be seeded)
|
|
72
|
+
} else if (cat === 'test') {
|
|
73
|
+
deps = [frontendDep]; // test depends on seedData too
|
|
74
|
+
} else {
|
|
75
|
+
deps = [];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const guardrailTask = {
|
|
79
|
+
id: taskId,
|
|
80
|
+
description: `[GUARDRAIL] Generate ${cat} layer for ${prd.project?.module || 'module'}`,
|
|
81
|
+
status: 'pending',
|
|
82
|
+
category: cat,
|
|
83
|
+
dependencies: deps,
|
|
84
|
+
acceptance_criteria: determineAcceptanceCriteria(cat),
|
|
85
|
+
started_at: null,
|
|
86
|
+
completed_at: null,
|
|
87
|
+
iteration: null,
|
|
88
|
+
commit_hash: null,
|
|
89
|
+
files_changed: [],
|
|
90
|
+
validation: null,
|
|
91
|
+
error: null
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
guardrailTasks.push(guardrailTask);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return { missing: missingCategories, guardrailsNeeded: guardrailTasks };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function determineAcceptanceCriteria(category) {
|
|
101
|
+
const criteria = {
|
|
102
|
+
domain: 'Entity classes created with required properties',
|
|
103
|
+
infrastructure: 'EF Core configs, migrations created, dotnet build passes',
|
|
104
|
+
application: 'Service classes implementing business logic',
|
|
105
|
+
api: 'REST controllers with [RequirePermission] attributes',
|
|
106
|
+
seedData: 'NavigationApplicationSeedData + ApplicationRolesSeedData + PermissionsSeedData created, IClientSeedDataProvider wired, startup test passes',
|
|
107
|
+
frontend: 'React pages created via MCP scaffold_api_client + scaffold_routes, wired to App.tsx, navigation seed data verified in DB',
|
|
108
|
+
test: 'Unit + Integration test projects created, scaffold_tests MCP called, dotnet test passes'
|
|
109
|
+
};
|
|
110
|
+
return criteria[category] || `${category} layer fully implemented per category-rules.md`;
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Application in step-01
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
// After loading prd.json or generating tasks
|
|
118
|
+
const { missing, guardrailsNeeded } = checkCategoryCompleteness(prd);
|
|
119
|
+
|
|
120
|
+
if (guardrailsNeeded.length > 0) {
|
|
121
|
+
console.log(`PRD updated: ${prd.tasks.length} → ${prd.tasks.length + guardrailsNeeded.length} tasks (${guardrailsNeeded.length} guardrails added)`);
|
|
122
|
+
prd.tasks.push(...guardrailsNeeded);
|
|
123
|
+
|
|
124
|
+
// Update frontendDep for any frontend guardrail if seedData was just injected
|
|
125
|
+
if (missing.includes('seedData')) {
|
|
126
|
+
const seedDataGuard = guardrailsNeeded.find(t => t.category === 'seedData');
|
|
127
|
+
const frontendGuard = prd.tasks.find(t => t.category === 'frontend' && t.description.includes('[GUARDRAIL]'));
|
|
128
|
+
if (frontendGuard && seedDataGuard) {
|
|
129
|
+
frontendGuard.dependencies = [seedDataGuard.id];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
writeJSON('.ralph/prd.json', prd);
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Application in step-04 (every iteration)
|
|
138
|
+
|
|
139
|
+
```javascript
|
|
140
|
+
// RUNS EVERY ITERATION — not just once
|
|
141
|
+
const { missing, guardrailsNeeded } = checkCategoryCompleteness(prd);
|
|
142
|
+
|
|
143
|
+
if (guardrailsNeeded.length > 0) {
|
|
144
|
+
prd.tasks.push(...guardrailsNeeded);
|
|
145
|
+
writeJSON('.ralph/prd.json', prd);
|
|
146
|
+
|
|
147
|
+
const newPending = prd.tasks.filter(t => t.status === 'pending').length;
|
|
148
|
+
console.log(`PRD updated: +${guardrailsNeeded.length} guardrails, ${newPending} pending tasks`);
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Artifact Verification
|
|
153
|
+
|
|
154
|
+
After category check, verify artifacts actually exist for completed tasks:
|
|
155
|
+
|
|
156
|
+
```javascript
|
|
157
|
+
const completedCats = new Set(prd.tasks.filter(t => t.status === 'completed').map(t => t.category));
|
|
158
|
+
const artifactChecks = {
|
|
159
|
+
'frontend': () => glob.sync('**/src/pages/**/*.tsx').length > 0,
|
|
160
|
+
'test': () => glob.sync('tests/**/*Tests.cs').length > 0,
|
|
161
|
+
'api': () => glob.sync('src/*/Controllers/**/*Controller.cs').length > 0
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
for (const [cat, check] of Object.entries(artifactChecks)) {
|
|
165
|
+
if (completedCats.has(cat) && !check()) {
|
|
166
|
+
console.warn(`ARTIFACT MISSING: ${cat} tasks marked completed but no files found — resetting to pending`);
|
|
167
|
+
prd.tasks.filter(t => t.category === cat && t.status === 'completed')
|
|
168
|
+
.forEach(t => {
|
|
169
|
+
t.status = 'pending';
|
|
170
|
+
t.error = 'Artifacts missing — re-execute';
|
|
171
|
+
t.completed_at = null;
|
|
172
|
+
});
|
|
173
|
+
writeJSON('.ralph/prd.json', prd);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Key Rules
|
|
181
|
+
|
|
182
|
+
- **Inject EVERY iteration:** Not just once during load
|
|
183
|
+
- **Frontend depends on seedData:** Not just API
|
|
184
|
+
- **Check artifacts:** Mark tasks pending if files don't exist
|
|
185
|
+
- **Never skip:** This is the blocker for "missing frontend/test" failures
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
# Category Ordering & Dependency Rules
|
|
2
|
-
|
|
3
|
-
> **Loaded by:** step-02 (task ordering validation) and compact-loop.md (batch grouping)
|
|
4
|
-
> **Purpose:** Defines execution order, dependencies, and batch grouping rules.
|
|
5
|
-
> **Note:** All execution rules, MCP tool usage, conventions, and POST-CHECKs are in `/apex` references.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Execution Order
|
|
10
|
-
|
|
11
|
-
Tasks MUST be executed in this order. Each category depends on the previous ones.
|
|
12
|
-
|
|
13
|
-
| Order | Category | Depends On | Description |
|
|
14
|
-
|-------|----------|------------|-------------|
|
|
15
|
-
| 0 | `domain` | — | Entities, enums, value objects |
|
|
16
|
-
| 1 | `infrastructure` | domain | EF configs, migrations, seed data |
|
|
17
|
-
| 2 | `application` | infrastructure | Services, DTOs, validators, DI |
|
|
18
|
-
| 3 | `api` | application | Controllers, route attributes |
|
|
19
|
-
| 4 | `seedData` | api | Navigation, permissions, roles, dev data |
|
|
20
|
-
| 5 | `frontend` | seedData | Pages, routes, i18n, components |
|
|
21
|
-
| 6 | `test` | frontend | Unit tests, integration tests, coverage |
|
|
22
|
-
|
|
23
|
-
> **Key dependency:** `frontend` depends on `seedData` (not just `api`).
|
|
24
|
-
> Navigation seed data drives the menu — without it, frontend routes have no menu entries.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Dependency Rules
|
|
29
|
-
|
|
30
|
-
1. **A task can only start when ALL its dependencies are `completed`**
|
|
31
|
-
2. **If a dependency is `failed` or `blocked`, the task becomes `blocked`**
|
|
32
|
-
3. **Cross-category dependencies are implicit** — domain before infrastructure, etc.
|
|
33
|
-
4. **Same-category tasks MAY run in parallel** (batched together)
|
|
34
|
-
5. **PRD `dependencies[]` array overrides implicit ordering** — explicit deps always checked first
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Batch Grouping Rules
|
|
39
|
-
|
|
40
|
-
When selecting tasks for a batch:
|
|
41
|
-
|
|
42
|
-
1. **Group by category** — take the first eligible category with pending tasks
|
|
43
|
-
2. **Max batch size: 5 tasks** — prevents overloading a single apex invocation
|
|
44
|
-
3. **Same category only** — never mix domain + infrastructure in one batch
|
|
45
|
-
4. **Order within batch: by task ID** (ascending) — preserves PRD creation order
|
|
46
|
-
|
|
47
|
-
```javascript
|
|
48
|
-
const eligible = prd.tasks.filter(/* pending + deps met */);
|
|
49
|
-
const firstCategory = eligible[0].category;
|
|
50
|
-
const batch = eligible.filter(t => t.category === firstCategory).slice(0, 5);
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## PRD Category Completeness
|
|
56
|
-
|
|
57
|
-
A valid PRD MUST contain tasks in these categories:
|
|
58
|
-
|
|
59
|
-
- `domain` — at least 1 entity task
|
|
60
|
-
- `infrastructure` — at least 1 EF config + migration task
|
|
61
|
-
- `application` — at least 1 service task
|
|
62
|
-
- `api` — at least 1 controller task
|
|
63
|
-
- `seedData` — at least 1 navigation/permission task
|
|
64
|
-
- `frontend` — at least 1 page task
|
|
65
|
-
- `test` — at least 1 test task
|
|
66
|
-
|
|
67
|
-
If any category is missing, ralph step-01 injects a guardrail task.
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Section-Level Splitting (>4 Entities)
|
|
72
|
-
|
|
73
|
-
When a module has many entities, a single `/apex -d` call saturates the context window.
|
|
74
|
-
Section-level splitting breaks the module into smaller, manageable phases.
|
|
75
|
-
|
|
76
|
-
**Activation threshold:** `> 4 domain tasks` AND `> 1 architecture section`
|
|
77
|
-
|
|
78
|
-
| Phase | Content | Depends On |
|
|
79
|
-
|-------|---------|------------|
|
|
80
|
-
| Phase 0 | ALL domain + infrastructure + migration + module seed data | — |
|
|
81
|
-
| Phase 1 | Section A: services, controllers, section seed, pages, i18n, tests | Phase 0 |
|
|
82
|
-
| Phase 2 | Section B: idem | Phase 0 (+ Phase 1 if FK cross-section) |
|
|
83
|
-
| Phase N | Section N: idem | Phase 0 (+ earlier phases if FK) |
|
|
84
|
-
| Final | Cross-validation (dotnet build, typecheck, MCP validate) | All phases |
|
|
85
|
-
|
|
86
|
-
**Key rules:**
|
|
87
|
-
- Phase 0 creates ALL entity classes + ALL EF configs + ONE migration (avoids ModelSnapshot conflicts)
|
|
88
|
-
- Section phases NEVER create entities or migrations — only services, controllers, pages on top
|
|
89
|
-
- FK cross-section dependencies determine section execution order (topological sort)
|
|
90
|
-
- Orphan entities (not in any section) are included in Phase 0 with their services/controllers
|
|
91
|
-
- Each phase produces a temporary PRD file: `.ralph/prd-{module}-phase0.json`, `.ralph/prd-{module}-section-{code}.json`
|
|
92
|
-
- Temporary PRD files are cleaned up in step-05 (report)
|
|
93
|
-
|
|
94
|
-
**Backward compatible:** Modules with `<= 4 domain tasks` or `1 section` → standard execution, zero impact.
|
|
95
|
-
|
|
96
|
-
See `references/section-splitting.md` for full detection, mapping, and execution logic.
|
|
1
|
+
# Category Ordering & Dependency Rules
|
|
2
|
+
|
|
3
|
+
> **Loaded by:** step-02 (task ordering validation) and compact-loop.md (batch grouping)
|
|
4
|
+
> **Purpose:** Defines execution order, dependencies, and batch grouping rules.
|
|
5
|
+
> **Note:** All execution rules, MCP tool usage, conventions, and POST-CHECKs are in `/apex` references.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Execution Order
|
|
10
|
+
|
|
11
|
+
Tasks MUST be executed in this order. Each category depends on the previous ones.
|
|
12
|
+
|
|
13
|
+
| Order | Category | Depends On | Description |
|
|
14
|
+
|-------|----------|------------|-------------|
|
|
15
|
+
| 0 | `domain` | — | Entities, enums, value objects |
|
|
16
|
+
| 1 | `infrastructure` | domain | EF configs, migrations, seed data |
|
|
17
|
+
| 2 | `application` | infrastructure | Services, DTOs, validators, DI |
|
|
18
|
+
| 3 | `api` | application | Controllers, route attributes |
|
|
19
|
+
| 4 | `seedData` | api | Navigation, permissions, roles, dev data |
|
|
20
|
+
| 5 | `frontend` | seedData | Pages, routes, i18n, components |
|
|
21
|
+
| 6 | `test` | frontend | Unit tests, integration tests, coverage |
|
|
22
|
+
|
|
23
|
+
> **Key dependency:** `frontend` depends on `seedData` (not just `api`).
|
|
24
|
+
> Navigation seed data drives the menu — without it, frontend routes have no menu entries.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Dependency Rules
|
|
29
|
+
|
|
30
|
+
1. **A task can only start when ALL its dependencies are `completed`**
|
|
31
|
+
2. **If a dependency is `failed` or `blocked`, the task becomes `blocked`**
|
|
32
|
+
3. **Cross-category dependencies are implicit** — domain before infrastructure, etc.
|
|
33
|
+
4. **Same-category tasks MAY run in parallel** (batched together)
|
|
34
|
+
5. **PRD `dependencies[]` array overrides implicit ordering** — explicit deps always checked first
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Batch Grouping Rules
|
|
39
|
+
|
|
40
|
+
When selecting tasks for a batch:
|
|
41
|
+
|
|
42
|
+
1. **Group by category** — take the first eligible category with pending tasks
|
|
43
|
+
2. **Max batch size: 5 tasks** — prevents overloading a single apex invocation
|
|
44
|
+
3. **Same category only** — never mix domain + infrastructure in one batch
|
|
45
|
+
4. **Order within batch: by task ID** (ascending) — preserves PRD creation order
|
|
46
|
+
|
|
47
|
+
```javascript
|
|
48
|
+
const eligible = prd.tasks.filter(/* pending + deps met */);
|
|
49
|
+
const firstCategory = eligible[0].category;
|
|
50
|
+
const batch = eligible.filter(t => t.category === firstCategory).slice(0, 5);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## PRD Category Completeness
|
|
56
|
+
|
|
57
|
+
A valid PRD MUST contain tasks in these categories:
|
|
58
|
+
|
|
59
|
+
- `domain` — at least 1 entity task
|
|
60
|
+
- `infrastructure` — at least 1 EF config + migration task
|
|
61
|
+
- `application` — at least 1 service task
|
|
62
|
+
- `api` — at least 1 controller task
|
|
63
|
+
- `seedData` — at least 1 navigation/permission task
|
|
64
|
+
- `frontend` — at least 1 page task
|
|
65
|
+
- `test` — at least 1 test task
|
|
66
|
+
|
|
67
|
+
If any category is missing, ralph step-01 injects a guardrail task.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Section-Level Splitting (>4 Entities)
|
|
72
|
+
|
|
73
|
+
When a module has many entities, a single `/apex -d` call saturates the context window.
|
|
74
|
+
Section-level splitting breaks the module into smaller, manageable phases.
|
|
75
|
+
|
|
76
|
+
**Activation threshold:** `> 4 domain tasks` AND `> 1 architecture section`
|
|
77
|
+
|
|
78
|
+
| Phase | Content | Depends On |
|
|
79
|
+
|-------|---------|------------|
|
|
80
|
+
| Phase 0 | ALL domain + infrastructure + migration + module seed data | — |
|
|
81
|
+
| Phase 1 | Section A: services, controllers, section seed, pages, i18n, tests | Phase 0 |
|
|
82
|
+
| Phase 2 | Section B: idem | Phase 0 (+ Phase 1 if FK cross-section) |
|
|
83
|
+
| Phase N | Section N: idem | Phase 0 (+ earlier phases if FK) |
|
|
84
|
+
| Final | Cross-validation (dotnet build, typecheck, MCP validate) | All phases |
|
|
85
|
+
|
|
86
|
+
**Key rules:**
|
|
87
|
+
- Phase 0 creates ALL entity classes + ALL EF configs + ONE migration (avoids ModelSnapshot conflicts)
|
|
88
|
+
- Section phases NEVER create entities or migrations — only services, controllers, pages on top
|
|
89
|
+
- FK cross-section dependencies determine section execution order (topological sort)
|
|
90
|
+
- Orphan entities (not in any section) are included in Phase 0 with their services/controllers
|
|
91
|
+
- Each phase produces a temporary PRD file: `.ralph/prd-{module}-phase0.json`, `.ralph/prd-{module}-section-{code}.json`
|
|
92
|
+
- Temporary PRD files are cleaned up in step-05 (report)
|
|
93
|
+
|
|
94
|
+
**Backward compatible:** Modules with `<= 4 domain tasks` or `1 section` → standard execution, zero impact.
|
|
95
|
+
|
|
96
|
+
See `references/section-splitting.md` for full detection, mapping, and execution logic.
|