@atlashub/smartstack-cli 4.80.0 → 5.0.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/agents.html +124 -585
- package/.documentation/ba-develop.html +852 -0
- package/.documentation/ba-skills.html +465 -0
- package/.documentation/business-analyse.html +385 -1570
- package/.documentation/cli-commands.html +162 -799
- package/.documentation/commands.html +902 -1338
- package/.documentation/css/styles.css +34 -1
- package/.documentation/efcore.html +161 -2599
- package/.documentation/gitflow.html +62 -105
- package/.documentation/hooks.html +94 -343
- package/.documentation/index.html +116 -385
- package/.documentation/init.html +217 -1566
- package/.documentation/installation.html +121 -1470
- package/.documentation/license.html +90 -450
- package/.documentation/ralph-loop.html +105 -602
- package/dist/index.js +9421 -79036
- package/dist/index.js.map +1 -1
- package/package.json +5 -20
- package/scripts/generate-docs/README.md +87 -0
- package/scripts/generate-docs/index.ts +175 -0
- package/scripts/generate-docs/lib/context-builder.ts +81 -0
- package/scripts/generate-docs/lib/handlebars-setup.ts +162 -0
- package/scripts/generate-docs/lib/markdown-parser.ts +86 -0
- package/scripts/generate-docs/lib/sidebar-builder.ts +80 -0
- package/scripts/generate-docs/lib/skill-parser.ts +171 -0
- package/scripts/generate-docs/lib/stats.ts +32 -0
- package/scripts/generate-docs/lib/version.ts +17 -0
- package/scripts/generate-docs/templates/layout.hbs +33 -0
- package/scripts/generate-docs/templates/pages/_generic.hbs +12 -0
- package/scripts/generate-docs/templates/pages/ba-develop.hbs +10 -0
- package/scripts/generate-docs/templates/pages/ba-skills.hbs +8 -0
- package/scripts/generate-docs/templates/pages/business-analyse.hbs +1 -0
- package/scripts/generate-docs/templates/pages/commands.hbs +13 -0
- package/scripts/generate-docs/templates/pages/gitflow.hbs +2164 -0
- package/scripts/generate-docs/templates/pages/index.hbs +5 -0
- package/scripts/generate-docs/templates/partials/breadcrumb.hbs +6 -0
- package/scripts/generate-docs/templates/partials/header.hbs +22 -0
- package/scripts/generate-docs/templates/partials/sidebar.hbs +32 -0
- package/scripts/generate-docs/templates/partials/skill-card.hbs +22 -0
- package/scripts/generate-docs/templates/partials/skill-grid.hbs +5 -0
- package/scripts/generate-docs/templates/partials/skill-table.hbs +18 -0
- package/scripts/generate-docs/templates/partials/stats-bar.hbs +20 -0
- package/scripts/test-migration-program-cs.mts +94 -0
- package/templates/agents/explore-codebase.md +2 -3
- package/templates/agents/explore-docs.md +5 -5
- package/templates/hooks/hooks.json +0 -9
- package/templates/project/Program.cs.template +17 -5
- package/templates/project/appsettings.json.template +208 -195
- package/templates/project/claude-md/api.CLAUDE.md.template +27 -2
- package/templates/project/patch-smartstack-theme.cjs.template +42 -0
- package/templates/scripts/statusline/README.md +47 -0
- package/templates/scripts/statusline/index.js +224 -0
- package/templates/skills/CLAUDE.md +235 -0
- package/templates/skills/ba-develop/SKILL.md +310 -0
- package/templates/skills/ba-develop/cli/compute-page-diff/__tests__/compute-page-diff.test.ts +177 -0
- package/templates/skills/ba-develop/cli/compute-page-diff/compute-diff.ts +51 -0
- package/templates/skills/ba-develop/cli/compute-page-diff/disk-drift.ts +55 -0
- package/templates/skills/ba-develop/cli/compute-page-diff/index.ts +89 -0
- package/templates/skills/ba-develop/cli/compute-page-diff/scan-pagespecs.ts +115 -0
- package/templates/skills/ba-develop/cli/compute-page-diff/types.ts +63 -0
- package/templates/skills/ba-develop/cli/compute-page-diff/validate.ts +20 -0
- package/templates/skills/ba-develop/cli/update-snapshot/__tests__/update-snapshot.test.ts +73 -0
- package/templates/skills/ba-develop/cli/update-snapshot/execute.ts +24 -0
- package/templates/skills/ba-develop/cli/update-snapshot/index.ts +61 -0
- package/templates/skills/ba-develop/cli/update-snapshot/types.ts +40 -0
- package/templates/skills/ba-develop/cli/update-snapshot/validate.ts +17 -0
- package/templates/skills/ba-develop/references/anti-patterns.md +101 -0
- package/templates/skills/ba-develop/references/auto-healing.md +191 -0
- package/templates/skills/ba-develop/references/commit-checkpoints.md +79 -0
- package/templates/skills/ba-develop/references/gates.md +380 -0
- package/templates/skills/ba-develop/references/output-contract.md +95 -0
- package/templates/skills/ba-develop/references/phases-detail.md +592 -0
- package/templates/skills/ba-develop-plan/SKILL.md +239 -0
- package/templates/skills/ba-develop-plan/cli/preflight-develop-plan/__tests__/validate.test.ts +225 -0
- package/templates/skills/ba-develop-plan/cli/preflight-develop-plan/index.ts +102 -0
- package/templates/skills/ba-develop-plan/cli/preflight-develop-plan/types.ts +121 -0
- package/templates/skills/ba-develop-plan/cli/preflight-develop-plan/validate.ts +261 -0
- package/templates/skills/business-analyse/_workflow/README.md +34 -0
- package/templates/skills/business-analyse/_workflow/ba-files.md +174 -0
- package/templates/skills/business-analyse/_workflow/code-discipline.md +104 -0
- package/templates/skills/business-analyse/_workflow/communication.md +63 -0
- package/templates/skills/business-analyse/_workflow/completeAuto-discipline.md +79 -0
- package/templates/skills/business-analyse/_workflow/context-documents.md +45 -0
- package/templates/skills/business-analyse/_workflow/doc-templates.md +318 -0
- package/templates/skills/business-analyse/audit-actors/SKILL.md +97 -0
- package/templates/skills/business-analyse/audit-cross-dimension/SKILL.md +127 -0
- package/templates/skills/business-analyse/audit-cross-ref-code/SKILL.md +119 -0
- package/templates/skills/business-analyse/audit-data-model/SKILL.md +343 -0
- package/templates/skills/business-analyse/audit-menu/SKILL.md +97 -0
- package/templates/skills/business-analyse/audit-prd/SKILL.md +479 -0
- package/templates/skills/business-analyse/audit-pre-dev/SKILL.md +135 -0
- package/templates/skills/business-analyse/audit-rbac/SKILL.md +93 -0
- package/templates/skills/business-analyse/audit-rules/SKILL.md +182 -0
- package/templates/skills/business-analyse/audit-screens/SKILL.md +169 -0
- package/templates/skills/business-analyse/audit-sections/SKILL.md +174 -0
- package/templates/skills/business-analyse/audit-use-cases/SKILL.md +245 -0
- package/templates/skills/business-analyse/create-actors/SKILL.md +129 -0
- package/templates/skills/business-analyse/create-ba-order/SKILL.md +182 -0
- package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/__tests__/generate.test.ts +151 -0
- package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/__tests__/graph.test.ts +173 -0
- package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/generate.ts +273 -0
- package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/graph.ts +193 -0
- package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/index.ts +108 -0
- package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/types.ts +106 -0
- package/templates/skills/business-analyse/create-ba-order/cli/create-ba-order/validate.ts +79 -0
- package/templates/skills/business-analyse/create-business-rules/SKILL.md +302 -0
- package/templates/skills/business-analyse/create-business-rules/levels/access-rules.md +105 -0
- package/templates/skills/business-analyse/create-business-rules/levels/elaborate.md +193 -0
- package/templates/skills/business-analyse/create-business-rules/levels/identify.md +157 -0
- package/templates/skills/business-analyse/create-business-rules/levels/link.md +86 -0
- package/templates/skills/business-analyse/create-data-model/SKILL.md +319 -0
- package/templates/skills/business-analyse/create-data-model/levels/attributes.md +130 -0
- package/templates/skills/business-analyse/create-data-model/levels/identify.md +100 -0
- package/templates/skills/business-analyse/create-data-model/levels/relationships.md +97 -0
- package/templates/skills/business-analyse/create-menu/SKILL.md +191 -0
- package/templates/skills/business-analyse/create-menu/levels/applications.md +85 -0
- package/templates/skills/business-analyse/create-menu/levels/modules.md +81 -0
- package/templates/skills/business-analyse/create-menu/levels/resources.md +75 -0
- package/templates/skills/business-analyse/create-menu/levels/sections.md +82 -0
- package/templates/skills/business-analyse/create-plan-development/SKILL.md +93 -0
- package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/__tests__/graph.test.ts +271 -0
- package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/__tests__/parse.test.ts +177 -0
- package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/generate.ts +317 -0
- package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/graph.ts +233 -0
- package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/index.ts +106 -0
- package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/parse.ts +346 -0
- package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/types.ts +160 -0
- package/templates/skills/business-analyse/create-plan-development/cli/create-plan-development/validate.ts +118 -0
- package/templates/skills/business-analyse/create-prd/SKILL.md +228 -0
- package/templates/skills/business-analyse/create-rbac/SKILL.md +255 -0
- package/templates/skills/business-analyse/create-rbac/levels/detail.md +86 -0
- package/templates/skills/business-analyse/create-rbac/levels/discovery.md +63 -0
- package/templates/skills/business-analyse/create-rbac/levels/review.md +66 -0
- package/templates/skills/business-analyse/create-screen/SKILL.md +386 -0
- package/templates/skills/business-analyse/create-screen/levels/dashboard-screens.md +94 -0
- package/templates/skills/business-analyse/create-screen/levels/form-screens.md +142 -0
- package/templates/skills/business-analyse/create-screen/levels/home-screens.md +151 -0
- package/templates/skills/business-analyse/create-screen/levels/kanban-screens.md +86 -0
- package/templates/skills/business-analyse/create-screen/levels/list-screens.md +134 -0
- package/templates/skills/business-analyse/create-screen/references/post-check.md +101 -0
- package/templates/skills/business-analyse/create-screen/references/react-templates.md +252 -0
- package/templates/skills/business-analyse/create-screen/references/smartcomponents.md +419 -0
- package/templates/skills/business-analyse/create-screen/references/type-mapping.md +150 -0
- package/templates/skills/business-analyse/create-use-case/SKILL.md +347 -0
- package/templates/skills/business-analyse/create-use-case/levels/detail.md +136 -0
- package/templates/skills/business-analyse/create-use-case/levels/discovery.md +110 -0
- package/templates/skills/business-analyse/loop/SKILL.md +401 -0
- package/templates/skills/business-analyse/modeling-detail/SKILL.md +241 -0
- package/templates/skills/business-analyse/modeling-inventory/SKILL.md +174 -0
- package/templates/skills/business-analyse/reconcile-menu/SKILL.md +180 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/__tests__/clean.test.ts +266 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/__tests__/detect.test.ts +231 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/__tests__/scan.test.ts +154 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/clean.ts +319 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/detect.ts +256 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/index.ts +126 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/scan.ts +175 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/types.ts +136 -0
- package/templates/skills/business-analyse/reconcile-menu/cli/reconcile-menu/validate.ts +32 -0
- package/templates/skills/check-version/SKILL.md +196 -196
- package/templates/skills/cli-app-sync/SKILL.md +9 -9
- package/templates/skills/cli-app-sync/references/comparison-map.md +4 -4
- package/templates/skills/cli-app-sync/references/diff-entities.md +6 -6
- package/templates/skills/conventions/SKILL.md +64 -0
- package/templates/skills/dev-start/SKILL.md +190 -237
- package/templates/skills/development/SKILL.md +87 -0
- package/templates/skills/development/audit/SKILL.md +156 -0
- package/templates/skills/development/audit/routing-dynamic/SKILL.md +196 -0
- package/templates/skills/development/audit-dev-api/SKILL.md +331 -0
- package/templates/skills/development/audit-dev-api/cli/audit-dev-api/__tests__/end-to-end.test.ts +364 -0
- package/templates/skills/development/audit-dev-api/cli/audit-dev-api/audit.ts +646 -0
- package/templates/skills/development/audit-dev-api/cli/audit-dev-api/index.ts +140 -0
- package/templates/skills/development/audit-dev-api/cli/audit-dev-api/types.ts +158 -0
- package/templates/skills/development/audit-dev-api/cli/audit-dev-api/validate.ts +45 -0
- package/templates/skills/development/audit-dev-core/SKILL.md +182 -0
- package/templates/skills/development/audit-dev-data/SKILL.md +195 -0
- package/templates/skills/development/audit-dev-domain/SKILL.md +184 -0
- package/templates/skills/development/audit-dev-frontend/SKILL.md +530 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/__tests__/end-to-end.test.ts +202 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/apply.ts +31 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/audit.ts +734 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/index.ts +125 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/types.ts +165 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-actions-alignment/validate.ts +36 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/__tests__/dev-ui-022.test.ts +193 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/apply.ts +374 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/audit.ts +1126 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/index.ts +141 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/types.ts +218 -0
- package/templates/skills/development/audit-dev-frontend/cli/audit-dev-frontend/validate.ts +80 -0
- package/templates/skills/development/audit-dev-tests/SKILL.md +82 -0
- package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/__tests__/audit.test.ts +220 -0
- package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/audit.ts +185 -0
- package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/index.ts +84 -0
- package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/types.ts +48 -0
- package/templates/skills/development/audit-dev-tests/cli/audit-dev-tests/validate.ts +36 -0
- package/templates/skills/development/audit-dev-wire/SKILL.md +144 -0
- package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/__tests__/audit.test.ts +171 -0
- package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/audit.ts +307 -0
- package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/index.ts +139 -0
- package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/types.ts +110 -0
- package/templates/skills/development/audit-dev-wire/cli/audit-dev-wire/validate.ts +16 -0
- package/templates/skills/development/backend/business-layer/SKILL.md +255 -0
- package/templates/skills/development/backend/business-layer/cli/scaffold-business/__tests__/generate.test.ts +254 -0
- package/templates/skills/development/backend/business-layer/cli/scaffold-business/generate.ts +842 -0
- package/templates/skills/development/backend/business-layer/cli/scaffold-business/index.ts +56 -0
- package/templates/skills/development/backend/business-layer/cli/scaffold-business/types.ts +112 -0
- package/templates/skills/development/backend/business-layer/cli/scaffold-business/validate.ts +24 -0
- package/templates/skills/development/backend/controller/SKILL.md +154 -0
- package/templates/skills/development/backend/controller/cli/scaffold-controller/__tests__/generate.test.ts +345 -0
- package/templates/skills/development/backend/controller/cli/scaffold-controller/generate.ts +280 -0
- package/templates/skills/development/backend/controller/cli/scaffold-controller/index.ts +49 -0
- package/templates/skills/development/backend/controller/cli/scaffold-controller/types.ts +72 -0
- package/templates/skills/development/backend/controller/cli/scaffold-controller/validate.ts +14 -0
- package/templates/skills/development/backend/core-seed/SKILL.md +177 -0
- package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/__tests__/build-spec.test.ts +163 -0
- package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/__tests__/generate.test.ts +330 -0
- package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/__tests__/validate.test.ts +126 -0
- package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/build-spec.ts +287 -0
- package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/generate.ts +826 -0
- package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/index.ts +188 -0
- package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/types.ts +163 -0
- package/templates/skills/development/backend/core-seed/cli/scaffold-core-seed/validate.ts +129 -0
- package/templates/skills/development/backend/data-layer/SKILL.md +163 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-entity/__tests__/generate.test.ts +155 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-entity/generate.ts +232 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-entity/index.ts +34 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-entity/types.ts +60 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-entity/validate.ts +42 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-migration/execute.ts +13 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-migration/index.ts +25 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-migration/types.ts +11 -0
- package/templates/skills/development/backend/data-layer/cli/scaffold-migration/validate.ts +9 -0
- package/templates/skills/development/backend/screen-controller/SKILL.md +169 -0
- package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/__tests__/generate.test.ts +329 -0
- package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/__tests__/hub-views.test.ts +105 -0
- package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/__tests__/parse-pagespec.test.ts +137 -0
- package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/generate.ts +437 -0
- package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/index.ts +108 -0
- package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/parse-pagespec.ts +104 -0
- package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/types.ts +101 -0
- package/templates/skills/development/backend/screen-controller/cli/scaffold-screen-controller/validate.ts +26 -0
- package/templates/skills/development/backend/seed-data/SKILL.md +91 -0
- package/templates/skills/development/backend/seed-data/cli/scaffold-seed/generate.ts +471 -0
- package/templates/skills/development/backend/seed-data/cli/scaffold-seed/index.ts +74 -0
- package/templates/skills/development/backend/seed-data/cli/scaffold-seed/types.ts +104 -0
- package/templates/skills/development/backend/seed-data/cli/scaffold-seed/validate.ts +63 -0
- package/templates/skills/development/backend/structure/SKILL.md +47 -0
- package/templates/skills/development/debug/SKILL.md +62 -0
- package/templates/skills/development/debug/audit-bug/SKILL.md +185 -0
- package/templates/skills/development/debug/backend/SKILL.md +114 -0
- package/templates/skills/development/debug/discuss-bug/SKILL.md +193 -0
- package/templates/skills/development/debug/fix-bug/SKILL.md +172 -0
- package/templates/skills/development/debug/frontend/SKILL.md +215 -0
- package/templates/skills/development/frontend/api-client/SKILL.md +158 -0
- package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/__tests__/generate.test.ts +1180 -0
- package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/__tests__/screen-strata-contract.test.ts +261 -0
- package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/__tests__/url-parity.test.ts +201 -0
- package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/generate.ts +875 -0
- package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/index.ts +36 -0
- package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/types.ts +251 -0
- package/templates/skills/development/frontend/api-client/cli/scaffold-api-client/validate.ts +10 -0
- package/templates/skills/development/frontend/auth/SKILL.md +77 -0
- package/templates/skills/development/frontend/auth/cli/scaffold-frontend-auth/generate.ts +306 -0
- package/templates/skills/development/frontend/auth/cli/scaffold-frontend-auth/index.ts +179 -0
- package/templates/skills/development/frontend/auth/cli/scaffold-frontend-auth/types.ts +22 -0
- package/templates/skills/development/frontend/auth/cli/scaffold-frontend-auth/validate.ts +37 -0
- package/templates/skills/development/frontend/component/SKILL.md +347 -0
- package/templates/skills/development/frontend/component/cli/scaffold-component/__tests__/generate.test.ts +1237 -0
- package/templates/skills/development/frontend/component/cli/scaffold-component/generate.ts +1923 -0
- package/templates/skills/development/frontend/component/cli/scaffold-component/index.ts +155 -0
- package/templates/skills/development/frontend/component/cli/scaffold-component/types.ts +290 -0
- package/templates/skills/development/frontend/component/cli/scaffold-component/validate.ts +16 -0
- package/templates/skills/development/frontend/component/cli/validate-page/__tests__/execute.test.ts +231 -0
- package/templates/skills/development/frontend/component/cli/validate-page/execute.ts +598 -0
- package/templates/skills/development/frontend/component/cli/validate-page/index.ts +88 -0
- package/templates/skills/development/frontend/component/cli/validate-page/types.ts +58 -0
- package/templates/skills/development/frontend/component/cli/validate-page/validate.ts +28 -0
- package/templates/skills/development/frontend/component/patterns/README.md +42 -0
- package/templates/skills/development/frontend/component/patterns/detail-page.md +133 -0
- package/templates/skills/development/frontend/component/patterns/entity-card.md +148 -0
- package/templates/skills/development/frontend/component/patterns/form-page.md +191 -0
- package/templates/skills/development/frontend/component/patterns/kanban-board.md +195 -0
- package/templates/skills/development/frontend/component/patterns/list-page.md +175 -0
- package/templates/skills/development/frontend/extension-config/SKILL.md +108 -0
- package/templates/skills/development/frontend/extension-config/cli/scaffold-extension-config/generate.ts +64 -0
- package/templates/skills/development/frontend/extension-config/cli/scaffold-extension-config/index.ts +70 -0
- package/templates/skills/development/frontend/extension-config/cli/scaffold-extension-config/types.ts +27 -0
- package/templates/skills/development/frontend/extension-config/cli/scaffold-extension-config/validate.ts +16 -0
- package/templates/skills/development/frontend/layout/SKILL.md +52 -0
- package/templates/skills/development/frontend/layout/cli/scaffold-layout/__tests__/generate.test.ts +66 -0
- package/templates/skills/development/frontend/layout/cli/scaffold-layout/generate.ts +175 -0
- package/templates/skills/development/frontend/layout/cli/scaffold-layout/index.ts +104 -0
- package/templates/skills/development/frontend/layout/cli/scaffold-layout/types.ts +17 -0
- package/templates/skills/development/frontend/layout/cli/scaffold-layout/validate.ts +37 -0
- package/templates/skills/development/frontend/routes/SKILL.md +152 -0
- package/templates/skills/development/frontend/routes/cli/aggregate-component-registry/generate.ts +216 -0
- package/templates/skills/development/frontend/routes/cli/aggregate-component-registry/index.ts +121 -0
- package/templates/skills/development/frontend/routes/cli/aggregate-component-registry/types.ts +69 -0
- package/templates/skills/development/frontend/routes/cli/aggregate-component-registry/validate.ts +23 -0
- package/templates/skills/development/frontend/routes/cli/scaffold-routes/__tests__/generate.test.ts +292 -0
- package/templates/skills/development/frontend/routes/cli/scaffold-routes/generate.ts +270 -0
- package/templates/skills/development/frontend/routes/cli/scaffold-routes/index.ts +42 -0
- package/templates/skills/development/frontend/routes/cli/scaffold-routes/types.ts +114 -0
- package/templates/skills/development/frontend/routes/cli/scaffold-routes/validate.ts +68 -0
- package/templates/skills/development/frontend/structure/SKILL.md +119 -0
- package/templates/skills/development/frontend/theme/SKILL.md +48 -0
- package/templates/skills/development/frontend/theme/cli/scaffold-theme/__tests__/generate.test.ts +53 -0
- package/templates/skills/development/frontend/theme/cli/scaffold-theme/generate.ts +129 -0
- package/templates/skills/development/frontend/theme/cli/scaffold-theme/index.ts +102 -0
- package/templates/skills/development/frontend/theme/cli/scaffold-theme/types.ts +48 -0
- package/templates/skills/development/frontend/theme/cli/scaffold-theme/validate.ts +37 -0
- package/templates/skills/development/frontend/ui-polish/SKILL.md +192 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/__tests__/r18.test.ts +153 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/__tests__/r19.test.ts +307 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/__tests__/r20.test.ts +167 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/__tests__/shared-scan.test.ts +262 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/apply.ts +580 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/audit.ts +825 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/index.ts +133 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/types.ts +121 -0
- package/templates/skills/development/frontend/ui-polish/cli/ui-polish/validate.ts +73 -0
- package/templates/skills/development/frontend/ui-polish/tokens.json +292 -0
- package/templates/skills/development/frontend/ui-primitives/SKILL.md +88 -0
- package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/__tests__/generate.test.ts +158 -0
- package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/generate.ts +345 -0
- package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/index.ts +142 -0
- package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/types.ts +27 -0
- package/templates/skills/development/frontend/ui-primitives/cli/scaffold-ui-primitives/validate.ts +37 -0
- package/templates/skills/development/run/SKILL.md +61 -0
- package/templates/skills/development/run/backend/SKILL.md +106 -0
- package/templates/skills/development/run/frontend/SKILL.md +116 -0
- package/templates/skills/development/smoke-test/SKILL.md +99 -0
- package/templates/skills/development/smoke-test/cli/run-smoke/execute.ts +424 -0
- package/templates/skills/development/smoke-test/cli/run-smoke/index.ts +75 -0
- package/templates/skills/development/smoke-test/cli/run-smoke/types.ts +100 -0
- package/templates/skills/development/testing/SKILL.md +148 -0
- package/templates/skills/development/testing/cli/scaffold-tests/generate.ts +530 -0
- package/templates/skills/development/testing/cli/scaffold-tests/index.ts +83 -0
- package/templates/skills/development/testing/cli/scaffold-tests/types.ts +51 -0
- package/templates/skills/development/testing/cli/scaffold-tests/validate.ts +33 -0
- package/templates/skills/development/testing/cli/scaffold-tests-from-ac/__tests__/generate.test.ts +188 -0
- package/templates/skills/development/testing/cli/scaffold-tests-from-ac/__tests__/parse-ac.test.ts +191 -0
- package/templates/skills/development/testing/cli/scaffold-tests-from-ac/generate.ts +190 -0
- package/templates/skills/development/testing/cli/scaffold-tests-from-ac/index.ts +138 -0
- package/templates/skills/development/testing/cli/scaffold-tests-from-ac/parse-ac.ts +172 -0
- package/templates/skills/development/testing/cli/scaffold-tests-from-ac/types.ts +104 -0
- package/templates/skills/development/testing/cli/scaffold-tests-from-ac/validate.ts +57 -0
- package/templates/skills/development/testing/cli/test-report/execute.ts +140 -0
- package/templates/skills/development/testing/cli/test-report/index.ts +96 -0
- package/templates/skills/development/testing/cli/test-report/types.ts +52 -0
- package/templates/skills/development/testing/cli/test-report/validate.ts +26 -0
- package/templates/skills/development/testing/fix-build/SKILL.md +81 -0
- package/templates/skills/development/testing/smoke-http/SKILL.md +123 -0
- package/templates/skills/development/testing/smoke-http/cli/smoke-http/execute.ts +129 -0
- package/templates/skills/development/testing/smoke-http/cli/smoke-http/index.ts +113 -0
- package/templates/skills/development/testing/smoke-http/cli/smoke-http/types.ts +62 -0
- package/templates/skills/development/testing/smoke-http/cli/smoke-http/validate.ts +36 -0
- package/templates/skills/development/testing/ui-test/SKILL.md +128 -0
- package/templates/skills/development/testing/ui-test/cli/build-manifest/generate.ts +129 -0
- package/templates/skills/development/testing/ui-test/cli/build-manifest/index.ts +80 -0
- package/templates/skills/development/testing/ui-test/cli/build-manifest/types.ts +72 -0
- package/templates/skills/development/testing/ui-test/cli/build-manifest/validate.ts +44 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/execute.ts +136 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/index.ts +75 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/lib/dev-browser-driver.ts +250 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/delete.js.hbs +83 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/detail.js.hbs +87 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/edit.js.hbs +91 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/form-submit.js.hbs +82 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/list.js.hbs +125 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/templates/permission-negative.js.hbs +65 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/types.ts +57 -0
- package/templates/skills/development/testing/ui-test/cli/run-ui-test/validate.ts +56 -0
- package/templates/skills/documentation/SKILL.md +168 -139
- package/templates/skills/documentation/cli/extract-doc/__tests__/forbidden.test.ts +136 -0
- package/templates/skills/documentation/cli/extract-doc/__tests__/overflow.test.ts +76 -0
- package/templates/skills/documentation/cli/extract-doc/__tests__/required.test.ts +147 -0
- package/templates/skills/documentation/cli/extract-doc/extract.ts +657 -0
- package/templates/skills/documentation/cli/extract-doc/index.ts +102 -0
- package/templates/skills/documentation/cli/extract-doc/types.ts +133 -0
- package/templates/skills/documentation/cli/extract-doc/validate.ts +35 -0
- package/templates/skills/documentation/cli/scaffold-doc/generate.ts +198 -0
- package/templates/skills/documentation/cli/scaffold-doc/index.ts +61 -0
- package/templates/skills/documentation/cli/scaffold-doc/types.ts +72 -0
- package/templates/skills/documentation/cli/scaffold-doc/validate.ts +33 -0
- package/templates/skills/documentation/data-schema.md +18 -38
- package/templates/skills/documentation/steps/step-01-scan.md +59 -113
- package/templates/skills/documentation/steps/step-02-generate.md +158 -231
- package/templates/skills/documentation/steps/step-03-validate.md +101 -280
- package/templates/skills/documentation/templates.md +403 -92
- package/templates/skills/efcore/SKILL.md +88 -308
- package/templates/skills/efcore/_shared.md +140 -0
- package/templates/skills/efcore/agents/create.md +69 -0
- package/templates/skills/efcore/agents/db-update.md +58 -0
- package/templates/skills/efcore/agents/list.md +35 -0
- package/templates/skills/efcore/agents/rebase-snapshot.md +50 -0
- package/templates/skills/efcore/agents/recreate-db.md +78 -0
- package/templates/skills/efcore/agents/squash.md +78 -0
- package/templates/skills/efcore/agents/status.md +35 -0
- package/templates/skills/efcore/cli/create/execute.ts +164 -0
- package/templates/skills/efcore/cli/create/index.ts +51 -0
- package/templates/skills/efcore/cli/create/types.ts +35 -0
- package/templates/skills/efcore/cli/create/validate.ts +29 -0
- package/templates/skills/efcore/cli/lib/detect-dbcontexts.ts +195 -0
- package/templates/skills/efcore/cli/lib/ef-runner.ts +144 -0
- package/templates/skills/efcore/cli/lib/migration-name.ts +56 -0
- package/templates/skills/efcore/cli/lib/parse-csproj-version.ts +45 -0
- package/templates/skills/efcore/cli/list/execute.ts +83 -0
- package/templates/skills/efcore/cli/list/index.ts +60 -0
- package/templates/skills/efcore/cli/list/types.ts +46 -0
- package/templates/skills/efcore/cli/list/validate.ts +20 -0
- package/templates/skills/efcore/cli/rebase-snapshot/execute.ts +21 -0
- package/templates/skills/efcore/cli/rebase-snapshot/index.ts +53 -0
- package/templates/skills/efcore/cli/rebase-snapshot/types.ts +20 -0
- package/templates/skills/efcore/cli/rebase-snapshot/validate.ts +25 -0
- package/templates/skills/efcore/cli/squash/execute.ts +298 -0
- package/templates/skills/efcore/cli/squash/index.ts +57 -0
- package/templates/skills/efcore/cli/squash/types.ts +38 -0
- package/templates/skills/efcore/cli/squash/validate.ts +30 -0
- package/templates/skills/efcore/cli/status/execute.ts +152 -0
- package/templates/skills/efcore/cli/status/index.ts +45 -0
- package/templates/skills/efcore/cli/status/types.ts +32 -0
- package/templates/skills/efcore/cli/status/validate.ts +20 -0
- package/templates/skills/external/context7/SKILL.md +121 -0
- package/templates/skills/external/dev-browser/SKILL.md +134 -0
- package/templates/skills/gitflow/SKILL.md +139 -392
- package/templates/skills/gitflow/_shared.md +24 -620
- package/templates/skills/gitflow/agents/abort.md +47 -0
- package/templates/skills/gitflow/agents/cleanup.md +50 -0
- package/templates/skills/gitflow/agents/commit.md +41 -0
- package/templates/skills/gitflow/agents/finish.md +47 -0
- package/templates/skills/gitflow/agents/init.md +41 -0
- package/templates/skills/gitflow/agents/merge.md +44 -0
- package/templates/skills/gitflow/agents/pr.md +39 -0
- package/templates/skills/gitflow/agents/start.md +42 -0
- package/templates/skills/gitflow/agents/status.md +39 -0
- package/templates/skills/gitflow/agents/sync.md +38 -0
- package/templates/skills/gitflow/cli/abort/execute.ts +61 -0
- package/templates/skills/gitflow/cli/abort/index.ts +116 -0
- package/templates/skills/gitflow/cli/abort/types.ts +21 -0
- package/templates/skills/gitflow/cli/abort/validate.ts +38 -0
- package/templates/skills/gitflow/cli/cleanup/execute.ts +107 -0
- package/templates/skills/gitflow/cli/cleanup/index.ts +122 -0
- package/templates/skills/gitflow/cli/cleanup/types.ts +26 -0
- package/templates/skills/gitflow/cli/cleanup/validate.ts +33 -0
- package/templates/skills/gitflow/cli/commit/execute.ts +146 -0
- package/templates/skills/gitflow/cli/commit/index.ts +77 -0
- package/templates/skills/gitflow/cli/commit/types.ts +36 -0
- package/templates/skills/gitflow/cli/commit/validate.ts +38 -0
- package/templates/skills/gitflow/cli/finish/execute.ts +127 -0
- package/templates/skills/gitflow/cli/finish/index.ts +106 -0
- package/templates/skills/gitflow/cli/finish/types.ts +25 -0
- package/templates/skills/gitflow/cli/finish/validate.ts +44 -0
- package/templates/skills/gitflow/cli/generate-msg/execute.ts +51 -0
- package/templates/skills/gitflow/cli/generate-msg/index.ts +73 -0
- package/templates/skills/gitflow/cli/generate-msg/types.ts +37 -0
- package/templates/skills/gitflow/cli/generate-msg/validate.ts +42 -0
- package/templates/skills/gitflow/cli/init/execute.ts +186 -0
- package/templates/skills/gitflow/cli/init/index.ts +127 -0
- package/templates/skills/gitflow/cli/init/types.ts +63 -0
- package/templates/skills/gitflow/cli/init/validate.ts +56 -0
- package/templates/skills/gitflow/cli/lib/branch.ts +83 -0
- package/templates/skills/gitflow/cli/lib/config.ts +149 -0
- package/templates/skills/gitflow/cli/lib/efcore.ts +136 -0
- package/templates/skills/gitflow/cli/lib/git.ts +212 -0
- package/templates/skills/gitflow/cli/lib/output.ts +49 -0
- package/templates/skills/gitflow/cli/lib/paths.ts +54 -0
- package/templates/skills/gitflow/cli/lib/platform.ts +44 -0
- package/templates/skills/gitflow/cli/lib/provider.ts +147 -0
- package/templates/skills/gitflow/cli/lib/types.ts +189 -0
- package/templates/skills/gitflow/cli/lib/version.ts +152 -0
- package/templates/skills/gitflow/cli/lib/worktree.ts +170 -0
- package/templates/skills/gitflow/cli/merge/execute.ts +93 -0
- package/templates/skills/gitflow/cli/merge/index.ts +109 -0
- package/templates/skills/gitflow/cli/merge/types.ts +24 -0
- package/templates/skills/gitflow/cli/merge/validate.ts +33 -0
- package/templates/skills/gitflow/cli/pr/execute.ts +131 -0
- package/templates/skills/gitflow/cli/pr/index.ts +115 -0
- package/templates/skills/gitflow/cli/pr/types.ts +27 -0
- package/templates/skills/gitflow/cli/pr/validate.ts +27 -0
- package/templates/skills/gitflow/cli/start/execute.ts +98 -0
- package/templates/skills/gitflow/cli/start/index.ts +75 -0
- package/templates/skills/gitflow/cli/start/types.ts +26 -0
- package/templates/skills/gitflow/cli/start/validate.ts +47 -0
- package/templates/skills/gitflow/cli/status/execute.ts +251 -0
- package/templates/skills/gitflow/cli/status/index.ts +154 -0
- package/templates/skills/gitflow/cli/status/types.ts +75 -0
- package/templates/skills/gitflow/cli/status/validate.ts +38 -0
- package/templates/skills/gitflow/cli/sync/execute.ts +84 -0
- package/templates/skills/gitflow/cli/sync/index.ts +75 -0
- package/templates/skills/gitflow/cli/sync/types.ts +25 -0
- package/templates/skills/gitflow/cli/sync/validate.ts +34 -0
- package/templates/skills/gitflow/commit-message.md +46 -0
- package/templates/skills/init/SKILL.md +54 -0
- package/templates/skills/lib/__tests__/canonical-hash.test.ts +45 -0
- package/templates/skills/lib/__tests__/page-spec-actions.test.ts +232 -0
- package/templates/skills/lib/canonical-hash.ts +40 -0
- package/templates/skills/lib/detector.ts +243 -0
- package/templates/skills/lib/dotnet.ts +238 -0
- package/templates/skills/lib/frontend-fixers.ts +151 -0
- package/templates/skills/lib/fs.ts +238 -0
- package/templates/skills/lib/git.ts +134 -0
- package/templates/skills/lib/graph.ts +138 -0
- package/templates/skills/lib/navroute-parser.ts +51 -0
- package/templates/skills/lib/output.ts +117 -0
- package/templates/skills/lib/page-spec-actions.ts +350 -0
- package/templates/skills/lib/skill-slug.ts +121 -0
- package/templates/skills/lib/string-utils.ts +140 -0
- package/templates/skills/lib/template-loader.ts +115 -0
- package/templates/skills/lib/url-conventions.ts +151 -0
- package/templates/skills/package.json +5 -0
- package/templates/skills/quick-search/SKILL.md +99 -99
- package/templates/skills/review/SKILL.md +56 -0
- package/templates/skills/smoke-generation/SKILL.md +18 -16
- package/templates/skills/ui-components/SKILL.md +136 -457
- package/templates/skills/upgrade/SKILL.md +36 -0
- package/templates/skills/utils/SKILL.md +45 -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-feature/SKILL.md +102 -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/validation/conventions/SKILL.md +193 -0
- package/templates/skills/validation/conventions/cli/validate-conventions/execute.ts +368 -0
- package/templates/skills/validation/conventions/cli/validate-conventions/index.ts +67 -0
- package/templates/skills/validation/conventions/cli/validate-conventions/types.ts +91 -0
- package/templates/skills/validation/conventions/cli/validate-conventions/validate.ts +36 -0
- package/templates/skills/validation/cross-validate/SKILL.md +83 -0
- package/templates/skills/validation/cross-validate/cli/execute.ts +576 -0
- package/templates/skills/validation/cross-validate/cli/index.ts +87 -0
- package/templates/skills/validation/cross-validate/cli/types.ts +85 -0
- package/templates/skills/validation/cross-validate/cli/validate.ts +54 -0
- package/templates/skills/validation/eslint/SKILL.md +65 -0
- package/templates/skills/validation/eslint/cli/execute.ts +413 -0
- package/templates/skills/validation/eslint/cli/index.ts +102 -0
- package/templates/skills/validation/eslint/cli/types.ts +48 -0
- package/templates/skills/validation/eslint/cli/validate.ts +43 -0
- package/templates/skills/validation/project-inventory/SKILL.md +166 -0
- package/templates/skills/validation/project-inventory/cli/project-inventory/execute.ts +397 -0
- package/templates/skills/validation/project-inventory/cli/project-inventory/index.ts +80 -0
- package/templates/skills/validation/project-inventory/cli/project-inventory/types.ts +89 -0
- package/templates/skills/validation/project-inventory/cli/project-inventory/validate.ts +35 -0
- package/templates/skills/validation/readiness-report/SKILL.md +109 -0
- package/templates/skills/validation/readiness-report/cli/execute.ts +236 -0
- package/templates/skills/validation/readiness-report/cli/index.ts +234 -0
- package/templates/skills/validation/readiness-report/cli/types.ts +61 -0
- package/templates/skills/validation/readiness-report/cli/validate.ts +54 -0
- package/templates/skills/validation/roslyn/SKILL.md +103 -0
- package/templates/skills/validation/roslyn/cli/execute.ts +616 -0
- package/templates/skills/validation/roslyn/cli/index.ts +86 -0
- package/templates/skills/validation/roslyn/cli/types.ts +50 -0
- package/templates/skills/validation/roslyn/cli/validate.ts +43 -0
- package/.documentation/apex.html +0 -649
- package/dist/mcp-entry.mjs +0 -68888
- package/dist/mcp-entry.mjs.map +0 -1
- package/scripts/extract-api-endpoints.ts +0 -325
- package/scripts/extract-business-rules.ts +0 -440
- package/scripts/generate-doc-with-mock-ui.ts +0 -804
- package/templates/agents/ba-reader.md +0 -386
- package/templates/agents/ba-writer.md +0 -810
- package/templates/agents/efcore/migration.md +0 -204
- package/templates/agents/efcore/rebase-snapshot.md +0 -202
- package/templates/agents/efcore/squash.md +0 -269
- package/templates/agents/gitflow/abort.md +0 -45
- package/templates/agents/gitflow/cleanup.md +0 -107
- package/templates/agents/gitflow/commit.md +0 -236
- package/templates/agents/gitflow/exec.md +0 -48
- package/templates/agents/gitflow/finish.md +0 -146
- package/templates/agents/gitflow/init-clone.md +0 -199
- package/templates/agents/gitflow/init-detect.md +0 -137
- package/templates/agents/gitflow/init-validate.md +0 -225
- package/templates/agents/gitflow/init.md +0 -509
- package/templates/agents/gitflow/merge.md +0 -145
- package/templates/agents/gitflow/plan.md +0 -42
- package/templates/agents/gitflow/pr.md +0 -191
- package/templates/agents/gitflow/review.md +0 -49
- package/templates/agents/gitflow/start.md +0 -147
- package/templates/agents/gitflow/status.md +0 -95
- package/templates/agents/mcp-healthcheck.md +0 -163
- package/templates/hooks/docs-drift-check.md +0 -96
- package/templates/hooks/ef-migration-check.md +0 -139
- package/templates/hooks/mcp-check.md +0 -64
- package/templates/hooks/ralph-mcp-logger.sh +0 -46
- package/templates/mcp-scaffolding/component.tsx.hbs +0 -318
- package/templates/mcp-scaffolding/controller.cs.hbs +0 -118
- package/templates/mcp-scaffolding/entity-extension.cs.hbs +0 -239
- package/templates/mcp-scaffolding/frontend/api-client.ts.hbs +0 -117
- package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +0 -133
- package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +0 -261
- package/templates/mcp-scaffolding/service-extension.cs.hbs +0 -53
- package/templates/mcp-scaffolding/tests/controller.test.cs.hbs +0 -436
- package/templates/mcp-scaffolding/tests/entity.test.cs.hbs +0 -239
- package/templates/mcp-scaffolding/tests/repository.test.cs.hbs +0 -441
- package/templates/mcp-scaffolding/tests/security.test.cs.hbs +0 -442
- package/templates/mcp-scaffolding/tests/service.test.cs.hbs +0 -402
- package/templates/mcp-scaffolding/tests/validator.test.cs.hbs +0 -428
- package/templates/skills/_resources/config-safety.md +0 -61
- package/templates/skills/_resources/context-digest-template.md +0 -53
- package/templates/skills/_resources/doc-context-cache.md +0 -60
- package/templates/skills/_resources/docs-manifest-schema.md +0 -155
- package/templates/skills/_resources/formatting-guide.md +0 -124
- package/templates/skills/_resources/mcp-validate-documentation-spec.md +0 -181
- package/templates/skills/_shared.md +0 -228
- package/templates/skills/admin/SKILL.md +0 -48
- package/templates/skills/ai-prompt/SKILL.md +0 -171
- package/templates/skills/ai-prompt/references/ai-agent-modes.md +0 -89
- package/templates/skills/ai-prompt/references/eval-framework.md +0 -129
- package/templates/skills/ai-prompt/steps/step-00-init.md +0 -47
- package/templates/skills/ai-prompt/steps/step-01-implementation.md +0 -122
- package/templates/skills/apex/SKILL.md +0 -234
- package/templates/skills/apex/_shared.md +0 -197
- package/templates/skills/apex/references/analysis-methods.md +0 -178
- package/templates/skills/apex/references/challenge-questions.md +0 -359
- package/templates/skills/apex/references/checks/architecture-checks.sh +0 -154
- package/templates/skills/apex/references/checks/backend-checks.sh +0 -208
- package/templates/skills/apex/references/checks/frontend-checks.sh +0 -560
- package/templates/skills/apex/references/checks/infrastructure-checks.sh +0 -292
- package/templates/skills/apex/references/checks/security-checks.sh +0 -153
- package/templates/skills/apex/references/checks/seed-checks.sh +0 -610
- package/templates/skills/apex/references/code-generation.md +0 -412
- package/templates/skills/apex/references/core-seed-data.md +0 -1502
- package/templates/skills/apex/references/domain-events-pattern.md +0 -45
- package/templates/skills/apex/references/entity-hooks-pattern.md +0 -68
- package/templates/skills/apex/references/error-classification.md +0 -168
- package/templates/skills/apex/references/frontend-route-wiring-app-tsx.md +0 -91
- package/templates/skills/apex/references/licensing-enforcement.md +0 -52
- package/templates/skills/apex/references/parallel-execution.md +0 -187
- package/templates/skills/apex/references/person-extension-pattern.md +0 -619
- package/templates/skills/apex/references/post-checks.md +0 -162
- package/templates/skills/apex/references/smartstack-api.md +0 -591
- package/templates/skills/apex/references/smartstack-frontend-compliance.md +0 -616
- package/templates/skills/apex/references/smartstack-frontend.md +0 -442
- package/templates/skills/apex/references/smartstack-layers.md +0 -551
- package/templates/skills/apex/steps/step-00-init.md +0 -405
- package/templates/skills/apex/steps/step-01-analyze.md +0 -210
- package/templates/skills/apex/steps/step-02-plan.md +0 -303
- package/templates/skills/apex/steps/step-03-execute.md +0 -194
- package/templates/skills/apex/steps/step-03a-layer0-domain.md +0 -144
- package/templates/skills/apex/steps/step-03b-layer1-seed.md +0 -339
- package/templates/skills/apex/steps/step-03c-layer2-backend.md +0 -401
- package/templates/skills/apex/steps/step-03d-layer3-frontend.md +0 -562
- package/templates/skills/apex/steps/step-03e-layer4-devdata.md +0 -46
- package/templates/skills/apex/steps/step-04-examine.md +0 -404
- package/templates/skills/apex/steps/step-05-deep-review.md +0 -140
- package/templates/skills/apex/steps/step-06-resolve.md +0 -120
- package/templates/skills/apex/steps/step-07-tests.md +0 -271
- package/templates/skills/apex/steps/step-08-run-tests.md +0 -135
- package/templates/skills/apex-verify/SKILL.md +0 -110
- package/templates/skills/apex-verify/references/audit-rules.md +0 -50
- package/templates/skills/apex-verify/steps/step-00-init.md +0 -119
- package/templates/skills/apex-verify/steps/step-01-nav-audit.md +0 -96
- package/templates/skills/apex-verify/steps/step-02-crud-audit.md +0 -127
- package/templates/skills/apex-verify/steps/step-03-perm-audit.md +0 -119
- package/templates/skills/apex-verify/steps/step-04-route-audit.md +0 -98
- package/templates/skills/apex-verify/steps/step-05-report.md +0 -110
- package/templates/skills/application/SKILL.md +0 -241
- package/templates/skills/application/references/application-roles-template.md +0 -228
- package/templates/skills/application/references/backend-controller-hierarchy.md +0 -68
- package/templates/skills/application/references/backend-entity-seeding.md +0 -73
- package/templates/skills/application/references/backend-seeding-and-dto-output.md +0 -83
- package/templates/skills/application/references/backend-table-prefix-mapping.md +0 -80
- package/templates/skills/application/references/backend-verification.md +0 -88
- package/templates/skills/application/references/contexts-cheatsheet.md +0 -86
- package/templates/skills/application/references/extensions-system.md +0 -158
- package/templates/skills/application/references/frontend-i18n-and-output.md +0 -67
- package/templates/skills/application/references/frontend-route-naming.md +0 -123
- package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +0 -91
- package/templates/skills/application/references/frontend-verification.md +0 -158
- package/templates/skills/application/references/init-parameter-detection.md +0 -121
- package/templates/skills/application/references/migration-checklist-troubleshooting.md +0 -88
- package/templates/skills/application/references/nav-fallback-procedure.md +0 -198
- package/templates/skills/application/references/provider-template.md +0 -191
- package/templates/skills/application/references/roles-client-project-handling.md +0 -55
- package/templates/skills/application/references/roles-fallback-procedure.md +0 -144
- package/templates/skills/application/references/smartstack-provider.md +0 -118
- package/templates/skills/application/references/test-coverage-requirements.md +0 -213
- package/templates/skills/application/references/test-frontend.md +0 -73
- package/templates/skills/application/references/test-prerequisites.md +0 -72
- package/templates/skills/application/references/themes-db-driven.md +0 -484
- package/templates/skills/application/steps/step-00-init.md +0 -130
- package/templates/skills/application/steps/step-01-navigation.md +0 -170
- package/templates/skills/application/steps/step-02-permissions.md +0 -196
- package/templates/skills/application/steps/step-03-roles.md +0 -182
- package/templates/skills/application/steps/step-03b-provider.md +0 -134
- package/templates/skills/application/steps/step-04-backend.md +0 -174
- package/templates/skills/application/steps/step-05-frontend.md +0 -189
- package/templates/skills/application/steps/step-06-migration.md +0 -189
- package/templates/skills/application/steps/step-07-tests.md +0 -356
- package/templates/skills/application/steps/step-08-documentation.md +0 -137
- package/templates/skills/application/templates-backend.md +0 -463
- package/templates/skills/application/templates-frontend.md +0 -950
- package/templates/skills/application/templates-i18n.md +0 -520
- package/templates/skills/application/templates-seed.md +0 -1110
- package/templates/skills/audit-route/SKILL.md +0 -107
- package/templates/skills/audit-route/references/routing-pattern.md +0 -131
- package/templates/skills/audit-route/steps/step-00-init.md +0 -128
- package/templates/skills/audit-route/steps/step-01-inventory.md +0 -157
- package/templates/skills/audit-route/steps/step-02-conformity.md +0 -193
- package/templates/skills/audit-route/steps/step-03-report.md +0 -201
- package/templates/skills/business-analyse/SKILL.md +0 -252
- package/templates/skills/business-analyse/_shared.md +0 -276
- package/templates/skills/business-analyse/patterns/suggestion-catalog.md +0 -560
- package/templates/skills/business-analyse/questionnaire/01-context.md +0 -43
- package/templates/skills/business-analyse/questionnaire/02-stakeholders-scope.md +0 -111
- package/templates/skills/business-analyse/questionnaire/03-data-ui.md +0 -125
- package/templates/skills/business-analyse/questionnaire/04-risks-metrics.md +0 -6
- package/templates/skills/business-analyse/questionnaire/05-cross-module.md +0 -69
- package/templates/skills/business-analyse/questionnaire.md +0 -156
- package/templates/skills/business-analyse/react/application-viewer.md +0 -242
- package/templates/skills/business-analyse/react/components.md +0 -532
- package/templates/skills/business-analyse/react/i18n-template.md +0 -306
- package/templates/skills/business-analyse/react/schema.md +0 -831
- package/templates/skills/business-analyse/references/03-json-schemas.md +0 -221
- package/templates/skills/business-analyse/references/03-post-check-validation.md +0 -208
- package/templates/skills/business-analyse/references/03-smartstack-entity-guards.md +0 -32
- package/templates/skills/business-analyse/references/04-cross-module-validation.md +0 -95
- package/templates/skills/business-analyse/references/04-file-allocation.md +0 -162
- package/templates/skills/business-analyse/references/04-naming-audit-checks.md +0 -174
- package/templates/skills/business-analyse/references/04-semantic-validation-matrix.md +0 -118
- package/templates/skills/business-analyse/references/acceptance-criteria.md +0 -164
- package/templates/skills/business-analyse/references/analysis-semantic-checks.md +0 -190
- package/templates/skills/business-analyse/references/canonical-json-formats.md +0 -204
- package/templates/skills/business-analyse/references/compilation-structure-cards.md +0 -297
- package/templates/skills/business-analyse/references/consolidation-structural-checks.md +0 -124
- package/templates/skills/business-analyse/references/detection-strategies.md +0 -424
- package/templates/skills/business-analyse/references/domain-research-playbook.md +0 -234
- package/templates/skills/business-analyse/references/entity-architecture-decision.md +0 -240
- package/templates/skills/business-analyse/references/entity-sourcing-presentation.md +0 -166
- package/templates/skills/business-analyse/references/init-resume-logic.md +0 -70
- package/templates/skills/business-analyse/references/init-schema-deployment.md +0 -65
- package/templates/skills/business-analyse/references/module-completeness-challenge.md +0 -174
- package/templates/skills/business-analyse/references/multi-app-detection.md +0 -149
- package/templates/skills/business-analyse/references/naming-conventions.md +0 -253
- package/templates/skills/business-analyse/references/portal-classification.md +0 -52
- package/templates/skills/business-analyse/references/robustness-checks.md +0 -426
- package/templates/skills/business-analyse/references/ui-dashboard-spec.md +0 -85
- package/templates/skills/business-analyse/references/ui-resource-cards.md +0 -259
- package/templates/skills/business-analyse/references/validation-checklist.md +0 -378
- package/templates/skills/business-analyse/schemas/application-schema.json +0 -481
- package/templates/skills/business-analyse/schemas/feature-schema.json +0 -53
- package/templates/skills/business-analyse/schemas/index-schema.json +0 -47
- package/templates/skills/business-analyse/schemas/project-schema.json +0 -481
- package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +0 -245
- package/templates/skills/business-analyse/schemas/sections/discovery-schema.json +0 -80
- package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +0 -82
- package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +0 -70
- package/templates/skills/business-analyse/schemas/sections/specification-schema.json +0 -567
- package/templates/skills/business-analyse/schemas/sections/validation-schema.json +0 -93
- package/templates/skills/business-analyse/schemas/shared/common-defs.json +0 -227
- package/templates/skills/business-analyse/steps/step-00-init.md +0 -463
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +0 -901
- package/templates/skills/business-analyse/steps/step-02-structure.md +0 -315
- package/templates/skills/business-analyse/steps/step-03-specify.md +0 -986
- package/templates/skills/business-analyse/steps/step-04-consolidate.md +0 -928
- package/templates/skills/business-analyse/templates/tpl-frd.md +0 -168
- package/templates/skills/business-analyse/templates/tpl-handoff.md +0 -189
- package/templates/skills/business-analyse/templates/tpl-launch-displays.md +0 -59
- package/templates/skills/business-analyse/templates-frd.md +0 -476
- package/templates/skills/business-analyse/templates-react.md +0 -574
- package/templates/skills/business-analyse-design/SKILL.md +0 -101
- package/templates/skills/business-analyse-design/references/screens-post-check.md +0 -221
- package/templates/skills/business-analyse-design/references/screens-type-mapping.md +0 -138
- package/templates/skills/business-analyse-design/references/smartcomponents-templates.md +0 -225
- package/templates/skills/business-analyse-design/references/spec-auto-inference.md +0 -117
- package/templates/skills/business-analyse-design/steps/step-01-screens.md +0 -108
- package/templates/skills/business-analyse-design/steps/step-02-wireframes.md +0 -155
- package/templates/skills/business-analyse-design/steps/step-03-navigation.md +0 -189
- package/templates/skills/business-analyse-develop/SKILL.md +0 -250
- package/templates/skills/business-analyse-develop/references/category-completeness.md +0 -326
- package/templates/skills/business-analyse-develop/references/category-rules.md +0 -109
- package/templates/skills/business-analyse-develop/references/compact-loop.md +0 -478
- package/templates/skills/business-analyse-develop/references/handoff-quality-gate.md +0 -132
- package/templates/skills/business-analyse-develop/references/init-resume-recovery.md +0 -183
- package/templates/skills/business-analyse-develop/references/module-transition.md +0 -246
- package/templates/skills/business-analyse-develop/references/multi-module-queue.md +0 -171
- package/templates/skills/business-analyse-develop/references/parallel-execution.md +0 -246
- package/templates/skills/business-analyse-develop/references/prd-v3-transformation.md +0 -326
- package/templates/skills/business-analyse-develop/references/quality-gates.md +0 -160
- package/templates/skills/business-analyse-develop/references/report-reconciliation.md +0 -140
- package/templates/skills/business-analyse-develop/references/report-template.md +0 -142
- package/templates/skills/business-analyse-develop/references/section-splitting.md +0 -439
- package/templates/skills/business-analyse-develop/references/task-transform-legacy.md +0 -256
- package/templates/skills/business-analyse-develop/references/team-orchestration.md +0 -547
- package/templates/skills/business-analyse-develop/steps/step-00-init.md +0 -242
- package/templates/skills/business-analyse-develop/steps/step-01-task.md +0 -182
- package/templates/skills/business-analyse-develop/steps/step-01-v4-execute.md +0 -139
- package/templates/skills/business-analyse-develop/steps/step-02-execute.md +0 -216
- package/templates/skills/business-analyse-develop/steps/step-02-v4-verify.md +0 -176
- package/templates/skills/business-analyse-develop/steps/step-03-commit.md +0 -107
- package/templates/skills/business-analyse-develop/steps/step-04-check.md +0 -419
- package/templates/skills/business-analyse-develop/steps/step-05-report.md +0 -137
- package/templates/skills/business-analyse-handoff/SKILL.md +0 -101
- package/templates/skills/business-analyse-handoff/references/acceptance-criteria.md +0 -318
- package/templates/skills/business-analyse-handoff/references/agent-handoff-transform-prompt.md +0 -211
- package/templates/skills/business-analyse-handoff/references/context-isolation-pattern.md +0 -47
- package/templates/skills/business-analyse-handoff/references/entity-canonicalization.md +0 -158
- package/templates/skills/business-analyse-handoff/references/entity-domain-mapping.md +0 -115
- package/templates/skills/business-analyse-handoff/references/handoff-file-inventory.md +0 -49
- package/templates/skills/business-analyse-handoff/references/handoff-file-templates.md +0 -197
- package/templates/skills/business-analyse-handoff/references/handoff-global-validation.md +0 -142
- package/templates/skills/business-analyse-handoff/references/handoff-mappings.md +0 -108
- package/templates/skills/business-analyse-handoff/references/handoff-seeddata-generation.md +0 -314
- package/templates/skills/business-analyse-handoff/references/prd-generation.md +0 -362
- package/templates/skills/business-analyse-handoff/references/prd-validation-checks.md +0 -125
- package/templates/skills/business-analyse-handoff/references/project-index-update.md +0 -98
- package/templates/skills/business-analyse-handoff/references/readiness-scoring.md +0 -95
- package/templates/skills/business-analyse-handoff/schemas/handoff-schema.json +0 -95
- package/templates/skills/business-analyse-handoff/steps/step-00-validate.md +0 -158
- package/templates/skills/business-analyse-handoff/steps/step-01-transform.md +0 -85
- package/templates/skills/business-analyse-handoff/steps/step-02-export.md +0 -169
- package/templates/skills/business-analyse-handoff/templates/tpl-progress.md +0 -172
- package/templates/skills/business-analyse-html/SKILL.md +0 -89
- package/templates/skills/business-analyse-html/html/ba-interactive.html +0 -6134
- package/templates/skills/business-analyse-html/html/build-html.js +0 -137
- package/templates/skills/business-analyse-html/html/src/partials/cadrage-context.html +0 -34
- package/templates/skills/business-analyse-html/html/src/partials/cadrage-scope.html +0 -27
- package/templates/skills/business-analyse-html/html/src/partials/cadrage-stakeholders.html +0 -55
- package/templates/skills/business-analyse-html/html/src/partials/cadrage-success.html +0 -34
- package/templates/skills/business-analyse-html/html/src/partials/consol-datamodel.html +0 -8
- package/templates/skills/business-analyse-html/html/src/partials/consol-flows.html +0 -29
- package/templates/skills/business-analyse-html/html/src/partials/consol-interactions.html +0 -8
- package/templates/skills/business-analyse-html/html/src/partials/consol-permissions.html +0 -8
- package/templates/skills/business-analyse-html/html/src/partials/decomp-dependencies.html +0 -38
- package/templates/skills/business-analyse-html/html/src/partials/decomp-modules.html +0 -43
- package/templates/skills/business-analyse-html/html/src/partials/handoff-summary.html +0 -24
- package/templates/skills/business-analyse-html/html/src/partials/module-spec-container.html +0 -4
- package/templates/skills/business-analyse-html/html/src/scripts/01-data-init.js +0 -313
- package/templates/skills/business-analyse-html/html/src/scripts/02-navigation.js +0 -316
- package/templates/skills/business-analyse-html/html/src/scripts/03-render-cadrage.js +0 -162
- package/templates/skills/business-analyse-html/html/src/scripts/04-render-modules.js +0 -203
- package/templates/skills/business-analyse-html/html/src/scripts/05-render-specs.js +0 -866
- package/templates/skills/business-analyse-html/html/src/scripts/06-render-consolidation.js +0 -196
- package/templates/skills/business-analyse-html/html/src/scripts/06-render-mockups.js +0 -564
- package/templates/skills/business-analyse-html/html/src/scripts/07-render-handoff.js +0 -108
- package/templates/skills/business-analyse-html/html/src/scripts/08-editing.js +0 -137
- package/templates/skills/business-analyse-html/html/src/scripts/09-export.js +0 -138
- package/templates/skills/business-analyse-html/html/src/scripts/10-comments.js +0 -221
- package/templates/skills/business-analyse-html/html/src/scripts/11-review-panel.js +0 -167
- package/templates/skills/business-analyse-html/html/src/scripts/12-render-diagrams.js +0 -162
- package/templates/skills/business-analyse-html/html/src/styles/01-variables.css +0 -38
- package/templates/skills/business-analyse-html/html/src/styles/02-layout.css +0 -216
- package/templates/skills/business-analyse-html/html/src/styles/03-navigation.css +0 -120
- package/templates/skills/business-analyse-html/html/src/styles/04-cards.css +0 -194
- package/templates/skills/business-analyse-html/html/src/styles/05-modules.css +0 -518
- package/templates/skills/business-analyse-html/html/src/styles/06-wireframes.css +0 -263
- package/templates/skills/business-analyse-html/html/src/styles/07-comments.css +0 -184
- package/templates/skills/business-analyse-html/html/src/styles/08-review-panel.css +0 -241
- package/templates/skills/business-analyse-html/html/src/styles/09-mockups-html.css +0 -220
- package/templates/skills/business-analyse-html/html/src/styles/10-diagrams.css +0 -73
- package/templates/skills/business-analyse-html/html/src/template.html +0 -449
- package/templates/skills/business-analyse-html/references/02-embedded-artifacts-building.md +0 -144
- package/templates/skills/business-analyse-html/references/02-feature-data-building.md +0 -143
- package/templates/skills/business-analyse-html/references/02-mapping-tables.md +0 -442
- package/templates/skills/business-analyse-html/references/02-normalization-helpers.md +0 -139
- package/templates/skills/business-analyse-html/references/02-screen-format-detection.md +0 -283
- package/templates/skills/business-analyse-html/references/02-self-check-validation.md +0 -199
- package/templates/skills/business-analyse-html/references/data-build.md +0 -215
- package/templates/skills/business-analyse-html/references/data-mapping.md +0 -452
- package/templates/skills/business-analyse-html/references/output-modes.md +0 -119
- package/templates/skills/business-analyse-html/references/wireframe-svg-style-guide.md +0 -335
- package/templates/skills/business-analyse-html/steps/step-01-collect.md +0 -140
- package/templates/skills/business-analyse-html/steps/step-02-build-data.md +0 -76
- package/templates/skills/business-analyse-html/steps/step-03-render.md +0 -95
- package/templates/skills/business-analyse-html/steps/step-04-verify.md +0 -224
- package/templates/skills/business-analyse-quick/SKILL.md +0 -807
- package/templates/skills/business-analyse-quick/references/domain-heuristics.md +0 -172
- package/templates/skills/business-analyse-quick/references/prd-schema.md +0 -268
- package/templates/skills/business-analyse-review/SKILL.md +0 -71
- package/templates/skills/business-analyse-review/references/review-data-mapping.md +0 -367
- package/templates/skills/business-analyse-review/steps/step-00-init.md +0 -111
- package/templates/skills/business-analyse-review/steps/step-01-apply.md +0 -304
- package/templates/skills/business-analyse-status/SKILL.md +0 -136
- package/templates/skills/cc-agent/SKILL.md +0 -129
- package/templates/skills/cc-agent/references/agent-behavior-patterns.md +0 -95
- package/templates/skills/cc-agent/references/agent-frontmatter.md +0 -213
- package/templates/skills/cc-agent/references/permission-modes.md +0 -102
- package/templates/skills/cc-agent/references/tools-reference.md +0 -144
- package/templates/skills/cc-agent/steps/step-00-init.md +0 -134
- package/templates/skills/cc-agent/steps/step-01-design.md +0 -186
- package/templates/skills/cc-agent/steps/step-02-generate.md +0 -131
- package/templates/skills/cc-agent/steps/step-03-validate.md +0 -130
- package/templates/skills/cc-agent/templates/agent-categorized.md +0 -67
- package/templates/skills/cc-agent/templates/agent-standalone.md +0 -56
- package/templates/skills/cc-agent/templates/agent-with-skills.md +0 -94
- package/templates/skills/cc-audit/SKILL.md +0 -108
- package/templates/skills/cc-audit/references/agent-checklist.md +0 -91
- package/templates/skills/cc-audit/references/hook-checklist.md +0 -110
- package/templates/skills/cc-audit/references/skill-checklist.md +0 -70
- package/templates/skills/cc-audit/steps/step-00-init.md +0 -98
- package/templates/skills/cc-audit/steps/step-01-scan.md +0 -142
- package/templates/skills/cc-audit/steps/step-02-analyze.md +0 -158
- package/templates/skills/cc-audit/steps/step-03-report.md +0 -142
- package/templates/skills/cc-skill/SKILL.md +0 -134
- package/templates/skills/cc-skill/references/best-practices.md +0 -167
- package/templates/skills/cc-skill/references/frontmatter-reference.md +0 -182
- package/templates/skills/cc-skill/references/skill-patterns.md +0 -199
- package/templates/skills/cc-skill/steps/step-00-init.md +0 -119
- package/templates/skills/cc-skill/steps/step-01-design.md +0 -199
- package/templates/skills/cc-skill/steps/step-02-generate.md +0 -145
- package/templates/skills/cc-skill/steps/step-03-steps.md +0 -151
- package/templates/skills/cc-skill/steps/step-04-validate.md +0 -124
- package/templates/skills/cc-skill/templates/skill-forked.md +0 -85
- package/templates/skills/cc-skill/templates/skill-progressive.md +0 -102
- package/templates/skills/cc-skill/templates/skill-simple.md +0 -75
- package/templates/skills/cc-skill/templates/step-template.md +0 -82
- package/templates/skills/controller/SKILL.md +0 -162
- package/templates/skills/controller/postman-templates.md +0 -614
- package/templates/skills/controller/references/controller-code-templates.md +0 -162
- package/templates/skills/controller/references/mcp-scaffold-workflow.md +0 -237
- package/templates/skills/controller/references/permission-sync-templates.md +0 -149
- package/templates/skills/controller/steps/step-00-init.md +0 -193
- package/templates/skills/controller/steps/step-01-analyze.md +0 -152
- package/templates/skills/controller/steps/step-02-plan.md +0 -176
- package/templates/skills/controller/steps/step-03-generate.md +0 -189
- package/templates/skills/controller/steps/step-04-perms.md +0 -80
- package/templates/skills/controller/steps/step-05-validate.md +0 -107
- package/templates/skills/controller/templates.md +0 -1556
- package/templates/skills/debug/SKILL.md +0 -70
- package/templates/skills/debug/references/team-protocol.md +0 -232
- package/templates/skills/debug/steps/step-00-init.md +0 -57
- package/templates/skills/debug/steps/step-01-analyze.md +0 -219
- package/templates/skills/debug/steps/step-02-resolve.md +0 -85
- package/templates/skills/efcore/references/database-operations.md +0 -66
- package/templates/skills/efcore/references/reset-operations.md +0 -81
- package/templates/skills/efcore/references/seed-methods.md +0 -86
- package/templates/skills/efcore/references/shared-init-functions.md +0 -250
- package/templates/skills/efcore/references/sql-objects-injection.md +0 -19
- package/templates/skills/efcore/references/troubleshooting.md +0 -81
- package/templates/skills/efcore/references/zero-downtime-patterns.md +0 -229
- package/templates/skills/explore/SKILL.md +0 -98
- package/templates/skills/feature-full/SKILL.md +0 -111
- package/templates/skills/feature-full/steps/step-00-init.md +0 -57
- package/templates/skills/feature-full/steps/step-01-implementation.md +0 -133
- package/templates/skills/gitflow/phases/abort.md +0 -189
- package/templates/skills/gitflow/phases/cleanup.md +0 -264
- package/templates/skills/gitflow/phases/status.md +0 -192
- package/templates/skills/gitflow/references/commit-message-generation.md +0 -58
- package/templates/skills/gitflow/references/commit-migration-validation.md +0 -53
- package/templates/skills/gitflow/references/finish-cleanup.md +0 -55
- package/templates/skills/gitflow/references/finish-version-bumping.md +0 -45
- package/templates/skills/gitflow/references/init-config-template.md +0 -143
- package/templates/skills/gitflow/references/init-environment-detection.md +0 -41
- package/templates/skills/gitflow/references/init-name-normalization.md +0 -118
- package/templates/skills/gitflow/references/init-questions.md +0 -193
- package/templates/skills/gitflow/references/init-structure-creation.md +0 -75
- package/templates/skills/gitflow/references/init-version-detection.md +0 -23
- package/templates/skills/gitflow/references/init-workspace-detection.md +0 -43
- package/templates/skills/gitflow/references/merge-ci-status.md +0 -36
- package/templates/skills/gitflow/references/merge-execution.md +0 -62
- package/templates/skills/gitflow/references/merge-pr-context.md +0 -76
- package/templates/skills/gitflow/references/plan-template.md +0 -69
- package/templates/skills/gitflow/references/pr-build-checks.md +0 -60
- package/templates/skills/gitflow/references/pr-generation.md +0 -58
- package/templates/skills/gitflow/references/start-branch-normalization.md +0 -28
- package/templates/skills/gitflow/references/start-efcore-preflight.md +0 -70
- package/templates/skills/gitflow/references/start-local-config.md +0 -113
- package/templates/skills/gitflow/references/start-worktree-creation.md +0 -50
- package/templates/skills/gitflow/references/sync-push-verify.md +0 -44
- package/templates/skills/gitflow/references/sync-rebase-conflicts.md +0 -38
- package/templates/skills/gitflow/steps/step-commit.md +0 -199
- package/templates/skills/gitflow/steps/step-finish.md +0 -147
- package/templates/skills/gitflow/steps/step-init.md +0 -230
- package/templates/skills/gitflow/steps/step-merge.md +0 -85
- package/templates/skills/gitflow/steps/step-plan.md +0 -151
- package/templates/skills/gitflow/steps/step-pr.md +0 -247
- package/templates/skills/gitflow/steps/step-start.md +0 -195
- package/templates/skills/gitflow/steps/step-sync.md +0 -161
- package/templates/skills/gitflow/templates/config.json +0 -72
- package/templates/skills/mcp/SKILL.md +0 -62
- package/templates/skills/mcp/steps/step-01-healthcheck.md +0 -108
- package/templates/skills/mcp/steps/step-02-tools.md +0 -73
- package/templates/skills/migrate/SKILL.md +0 -312
- package/templates/skills/migrate/references/v3.34-to-v3.46.md +0 -289
- package/templates/skills/notification/SKILL.md +0 -173
- package/templates/skills/refactor/SKILL.md +0 -56
- package/templates/skills/refactor/steps/step-01-discover.md +0 -60
- package/templates/skills/refactor/steps/step-02-execute.md +0 -67
- package/templates/skills/review-code/SKILL.md +0 -95
- package/templates/skills/review-code/references/clean-code-principles.md +0 -292
- package/templates/skills/review-code/references/code-quality-metrics.md +0 -174
- package/templates/skills/review-code/references/feedback-patterns.md +0 -149
- package/templates/skills/review-code/references/owasp-api-top10.md +0 -243
- package/templates/skills/review-code/references/security-checklist.md +0 -212
- package/templates/skills/review-code/references/smartstack-conventions.md +0 -568
- package/templates/skills/review-code/steps/step-01-smartstack.md +0 -96
- package/templates/skills/review-code/steps/step-02-detailed-review.md +0 -80
- package/templates/skills/review-code/steps/step-03-react.md +0 -44
- package/templates/skills/sketch/SKILL.md +0 -34
- package/templates/skills/ui-components/accessibility.md +0 -170
- package/templates/skills/ui-components/patterns/dashboard-chart.md +0 -327
- package/templates/skills/ui-components/patterns/data-table.md +0 -175
- package/templates/skills/ui-components/patterns/entity-card.md +0 -77
- package/templates/skills/ui-components/patterns/grid-layout.md +0 -91
- package/templates/skills/ui-components/patterns/kanban.md +0 -43
- package/templates/skills/ui-components/references/component-catalog.md +0 -82
- package/templates/skills/ui-components/responsive-guidelines.md +0 -278
- package/templates/skills/ui-components/style-guide.md +0 -113
- package/templates/skills/validate/SKILL.md +0 -181
- package/templates/skills/workflow/SKILL.md +0 -196
- package/templates/skills/workflow/steps/step-00-init.md +0 -57
- package/templates/skills/workflow/steps/step-01-implementation.md +0 -84
|
@@ -0,0 +1,592 @@
|
|
|
1
|
+
# `/ba-develop` — Phase-by-phase detail
|
|
2
|
+
|
|
3
|
+
> Loaded on demand when the orchestrator needs to expand a phase. The compact
|
|
4
|
+
> overview lives in `SKILL.md` § The phases.
|
|
5
|
+
|
|
6
|
+
## The six phases — full description
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
Phase 0 — Core Foundation Seed → 5 IClientSeedDataProvider classes under
|
|
10
|
+
Persistence/Seeding/Core/ (navigation, roles,
|
|
11
|
+
permissions, role-permissions, dev test users).
|
|
12
|
+
Deterministic — agent only invokes the CLI.
|
|
13
|
+
Phase 1 — Entities → domain entities + invariants + EF configs
|
|
14
|
+
+ migrations + module-scoped reference data.
|
|
15
|
+
Merges what was Domain + Data.
|
|
16
|
+
Phase 2a — API Integration → integration controllers (/api/v1/integration/,
|
|
17
|
+
Swagger group "integration"), DTOs,
|
|
18
|
+
[RequirePermission], business handlers +
|
|
19
|
+
Create/Update validators, THEN the business-
|
|
20
|
+
logic pass — implement every rule / use-case
|
|
21
|
+
the scaffolder left as a // TODO[BR-…] or
|
|
22
|
+
NotImplementedException marker. CRUD + UC
|
|
23
|
+
transitions for machine-to-machine consumers.
|
|
24
|
+
Integration + Category=Business tests.
|
|
25
|
+
Phase 2b — API Screen-driven → ONE subagent per (section, entity). Each
|
|
26
|
+
reads <MODULE>/pagespecs/<Entity>.*.md,
|
|
27
|
+
invokes scaffold-screen-controller, then runs
|
|
28
|
+
`dotnet build` + targeted tests. Emits
|
|
29
|
+
{EntityPlural}ScreenController.cs under
|
|
30
|
+
Controllers/{Module}/Screens/ +
|
|
31
|
+
{Entity}{View}ScreenDto.cs under
|
|
32
|
+
DTOs/Screens/. Routes under
|
|
33
|
+
/api/screens/{plural}/{action}, Swagger group
|
|
34
|
+
"screens". Reuses Business methods from 2a —
|
|
35
|
+
NEVER duplicates rules. Missing Business
|
|
36
|
+
method → TODO[SCREEN-…] marker, caught by
|
|
37
|
+
audit-dev-api (Wave D, DEV-API-012..014).
|
|
38
|
+
Phase 3 — Frontend → six ordered sub-phases (3.0 → 3a → 3b → 3c → 3.5 → 3d);
|
|
39
|
+
3a fans out ONE subagent per feature/entity; the
|
|
40
|
+
other sub-phases run on the orchestrator.
|
|
41
|
+
3.0 — Theme + layout + UI primitives
|
|
42
|
+
scaffold-theme writes src/index.css (CSS vars + design
|
|
43
|
+
tokens). Pass `useShoelace: true` ONLY when the target
|
|
44
|
+
project depends on `@shoelace-style/shoelace` — detect
|
|
45
|
+
by reading `<projectPath>/<webRoot>/package.json` and
|
|
46
|
+
checking `dependencies['@shoelace-style/shoelace']`.
|
|
47
|
+
When absent, omit the flag (default: false) — Vite
|
|
48
|
+
would otherwise fail at boot with
|
|
49
|
+
`Can't resolve '@shoelace-style/shoelace/dist/themes/light.css'`.
|
|
50
|
+
scaffold-layout writes src/components/ui/PageTemplate.tsx
|
|
51
|
+
+ src/components/{AppShell,Sidebar}.tsx (idempotent;
|
|
52
|
+
honors `// @customised` markers). scaffold-ui-primitives
|
|
53
|
+
writes src/components/ui/EntityLookup.tsx + deep-merges
|
|
54
|
+
src/i18n/locales/{fr,en,it,de}/common.json with the
|
|
55
|
+
entityLookup.* namespace. Theme-compliant (zero
|
|
56
|
+
hardcoded Tailwind colors). MUST run before 3a.
|
|
57
|
+
3a — Pages ONE subagent PER FEATURE/ENTITY — **allowed-tools: [Read, Glob, Grep, Bash]
|
|
58
|
+
only** (NO Edit, NO Write). The subagent MUST NOT hand-write .tsx
|
|
59
|
+
files; it invokes scaffold-component via Bash and validate-page
|
|
60
|
+
checks the `@generated-by scaffold-component` marker.
|
|
61
|
+
The orchestrator fans out over slices.frontend.entities: features
|
|
62
|
+
in DIFFERENT modules MAY run in parallel; features of the SAME
|
|
63
|
+
module run SERIALLY (they share one
|
|
64
|
+
src/i18n/locales/{locale}/{module}.json — scaffold-component
|
|
65
|
+
deep-merges it, safe serially but a race under parallel writes).
|
|
66
|
+
Each feature-subagent owns ONLY its entity's files; its only
|
|
67
|
+
allowed Bash invocations are scaffold-api-client (its entity,
|
|
68
|
+
once), scaffold-component (per single view) and validate-page
|
|
69
|
+
(per page). The per-page audit-or-regenerate loop is detailed
|
|
70
|
+
below in § Phase 3a per-entity loop.
|
|
71
|
+
3b — Routes scaffold-routes emits BOTH src/extensions/{module}Registry.ts and
|
|
72
|
+
src/extensions/{module}Routes.ts per module.
|
|
73
|
+
3c — Aggregator invoke `aggregate-component-registry --project-path "<web-root>"`.
|
|
74
|
+
Phantom imports / collisions = exit 1 (gate fails, no file written).
|
|
75
|
+
Patch src/main.tsx with `import './extensions/componentRegistry.generated';`.
|
|
76
|
+
3.5 — Audit-apply audit-dev-frontend --mode apply (DEV-UI-001..022)
|
|
77
|
+
THEN ui-polish --mode apply (CSS tokens, design rules).
|
|
78
|
+
Re-runs even when 3a-3c reported filesChanged: 0.
|
|
79
|
+
3d — Build gate npm run build (Vite resolves every `lazyWithRetry(() => import('@/…'))`)
|
|
80
|
+
Phase 4 — Acceptance Tests → scaffold-tests-from-ac emits one [Fact] per AC
|
|
81
|
+
declared under each UC in <section>/use-case.md
|
|
82
|
+
(TODO[AC-NN] skeleton + Assert.Fail). The
|
|
83
|
+
subagent then fills every TODO body using the
|
|
84
|
+
AC text + the controller + DTO from Phases 2-3,
|
|
85
|
+
commits, and runs `dotnet test --filter
|
|
86
|
+
Category=Acceptance`. The gate enforces tests
|
|
87
|
+
compile, all Facts pass, and ZERO `// TODO[AC-`
|
|
88
|
+
markers remain (audit DEV-TEST-001 BLOCKING).
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Each phase is a subagent
|
|
92
|
+
|
|
93
|
+
### Pre-entry coverage checks (re-run only)
|
|
94
|
+
|
|
95
|
+
Before deciding to skip a phase on re-run, the orchestrator runs a fast
|
|
96
|
+
(<5 s) coverage check comparing the PRD/BA spec against what is on disk.
|
|
97
|
+
If items are missing → the phase MUST re-enter. Full protocol in
|
|
98
|
+
`references/gates.md` § "Pre-entry coverage checks (Phases 0-2)".
|
|
99
|
+
|
|
100
|
+
**Phase 0**: Grep `CoreNavigationSeedDataProvider.cs` for every BA module
|
|
101
|
+
code + count permissions per module. Missing module or < 2 permissions → re-enter.
|
|
102
|
+
|
|
103
|
+
**Phase 1**: Run `project-inventory --domains domain`. Compare entity names
|
|
104
|
+
and attributes against `entité.md`. Missing entity or attribute → re-enter.
|
|
105
|
+
|
|
106
|
+
**Phase 2a**: Run `project-inventory --domains api` (controller existence)
|
|
107
|
+
+ `audit-dev-api --rules DEV-API-010` (custom action coverage).
|
|
108
|
+
Missing controller or endpoint → re-enter.
|
|
109
|
+
|
|
110
|
+
**Phase 2b**: Run `audit-dev-api --rules DEV-API-012` (screen endpoint
|
|
111
|
+
coverage). Missing screen endpoint → re-enter.
|
|
112
|
+
|
|
113
|
+
**Phase 3**: always re-enters the pre-entry gate, but regenerates only the
|
|
114
|
+
**delta** — `compute-page-diff` (spec-drift) ∪ `validate-page` on the
|
|
115
|
+
`unchanged` set (disk-drift). Skip the per-entity fan-out only when BOTH are
|
|
116
|
+
empty. Full protocol in `references/gates.md` § "Phase 3 pre-entry".
|
|
117
|
+
**Phase 4**: always re-runs (tests are cheap, regressions are not).
|
|
118
|
+
|
|
119
|
+
- **Phase 0 (`core`)**: builds CoreSeedSpec from `index.md` (nav) + `<APP>/acteur.md`
|
|
120
|
+
(roles) + `<MODULE>/rbac.md` (permissions), invokes `scaffold-core-seed` via Bash.
|
|
121
|
+
- **Phases 1-3**: reads its slice file — Phase 1 → `prd.entities.md`; Phase 2 →
|
|
122
|
+
`prd.api.md`; Phase 3 → `prd.frontend.md`. Hand the subagent exactly that one
|
|
123
|
+
file path so it sees only its slice.
|
|
124
|
+
- **Phase 4 (`acceptance`)**: reads EVERY `<section>/use-case.md` (the AC source
|
|
125
|
+
of truth) + Phase 2 controllers + DTOs (to know what HTTP verb + path + DTO
|
|
126
|
+
shape each AC asserts against). Writes only to `Tests/{Module}/Acceptance/*.cs`.
|
|
127
|
+
|
|
128
|
+
Each subagent has Read / Glob / Grep / Edit / Write / Bash against `projectPath`,
|
|
129
|
+
plus the appropriate scaffold-skill SKILL.md content loaded in context. It
|
|
130
|
+
returns `{ artifacts: [...], testsRun, testsPassed, compileOk }`. Phase 4 also
|
|
131
|
+
returns `{ factsEmitted, acsParsed }`.
|
|
132
|
+
|
|
133
|
+
You never expose a Phase 1+ subagent to a slice other than its own. If a subagent
|
|
134
|
+
needs cross-slice data (e.g. frontend needs entity field shape), it fetches that
|
|
135
|
+
slice **read-only** — but writes only to its own phase's files. Phase 4 is the
|
|
136
|
+
only phase that legitimately reads multiple phases' output — it is the
|
|
137
|
+
verification phase.
|
|
138
|
+
|
|
139
|
+
## Phase 2a (API Integration) — derive scaffolder inputs from pagespecs
|
|
140
|
+
|
|
141
|
+
Before calling `scaffold-business` / `scaffold-controller` for an entity:
|
|
142
|
+
|
|
143
|
+
1. **Read every pagespec** for the entity in `<MODULE>/pagespecs/<Entity>.*.md`
|
|
144
|
+
and parse each fenced ```json block.
|
|
145
|
+
2. **Collect `actions[]`** across the parsed pagespecs.
|
|
146
|
+
3. **Filter** to `kind: "api"` AND `code ∉ STANDARD_CRUD_CODES` (the constant
|
|
147
|
+
exported by `lib/page-spec-actions.ts`: `create`, `read`, `edit`, `update`,
|
|
148
|
+
`delete`, `list`, `detail`).
|
|
149
|
+
4. **De-duplicate** by `(scope, endpoint, httpMethod)` — emit ONCE per route.
|
|
150
|
+
5. **Derive `ControllerCustomAction[]`** for `scaffold-controller`:
|
|
151
|
+
- `code`: `pageAction.endpoint` (URL segment, kebab-case)
|
|
152
|
+
- `scope`: `pageAction.scope`
|
|
153
|
+
- `httpMethod`: `pageAction.httpMethod` (defaults POST)
|
|
154
|
+
- `payloadDto`: `pageAction.payloadDto ?? null`
|
|
155
|
+
- `responseDto`: `pageAction.responseDto ?? 'NoContent'`
|
|
156
|
+
- `permissionAction`: `lastSegment(pageAction.permission)` (e.g.
|
|
157
|
+
`referentiels.types-affaire.execute` → `execute`)
|
|
158
|
+
- The C# method name is `PascalCase(endpoint)`, generated automatically.
|
|
159
|
+
6. **Derive `displayNameExpr` for `scaffold-business`**: when `entité.md` carries
|
|
160
|
+
an `**Affichage** : Name` line, pass that PascalCase token; otherwise omit
|
|
161
|
+
and let the generator fall back to `Name → Label → Code → Title`.
|
|
162
|
+
7. **Derive `BusinessCustomAction[]`** (same `code`, `scope`, `payloadDto`,
|
|
163
|
+
`responseDto`) plus workflow metadata: `ucReference`, `fromStatus`,
|
|
164
|
+
`toStatus`, `flowParameters`, `guardRules`, `crossModuleDeps`. Populate
|
|
165
|
+
from `prd.api.md` "Workflow:" sections + `règles-métier.md` (workflow type)
|
|
166
|
+
+ `use-case.md` flows. Conforms to SK-001/002/004/005.
|
|
167
|
+
|
|
168
|
+
### Cross-check inside the Phase 2a gate
|
|
169
|
+
|
|
170
|
+
After `scaffold-controller` + `scaffold-business` finish for an entity, the
|
|
171
|
+
subagent MUST verify that every `kind: "api"` action landed on the controller
|
|
172
|
+
with the right route attribute. For each custom action of entity `<E>`:
|
|
173
|
+
|
|
174
|
+
- Read `src/<Ns>.Api/Controllers/<Module>/<E>sController.cs`
|
|
175
|
+
- Locate a method with `[Http<VERB>("<expectedRoute>")]` where
|
|
176
|
+
`<expectedRoute>` is `expectedControllerRoute(scope, endpoint)` from
|
|
177
|
+
`lib/page-spec-actions.ts` (row → `{id:guid}/<endpoint>`, bulk →
|
|
178
|
+
`bulk/<endpoint>`, header → `<endpoint>`).
|
|
179
|
+
- If missing → fail the Phase 2a gate with `{ phase: "api.customActions",
|
|
180
|
+
entity, action_code, expected_verb, expected_path, controller_file }`.
|
|
181
|
+
|
|
182
|
+
This is the structural insurance that the pagespec contract reached the wire.
|
|
183
|
+
Audit `DEV-API-010` performs the same check post-hoc.
|
|
184
|
+
|
|
185
|
+
## Phase 2b (API Screen-driven) — one subagent per (section, entity)
|
|
186
|
+
|
|
187
|
+
After Phase 2a passes, the orchestrator scans every pagespec under
|
|
188
|
+
`<MODULE>/pagespecs/<Entity>.*.md`, groups by **(section, entity)**, and each
|
|
189
|
+
unique tuple yields ONE subagent.
|
|
190
|
+
|
|
191
|
+
**Per-subagent contract** (read-only on Business / Domain, writes only under
|
|
192
|
+
`Controllers/{Module}/Screens/` + `DTOs/Screens/`):
|
|
193
|
+
|
|
194
|
+
1. Invoke `scaffold-screen-controller` once with the spec
|
|
195
|
+
`{ section, entity, module, appCode, namespace, moduleDir, projectPath }`.
|
|
196
|
+
2. Capture the CLI's `todos[]`. Each entry is a `[SCREEN-<code>]` marker
|
|
197
|
+
(typically a missing `I{Entity}Service` method, e.g. `GetForListScreenAsync`).
|
|
198
|
+
For each missing method:
|
|
199
|
+
a. Add the signature to `I{Entity}Service`.
|
|
200
|
+
b. Implement it in `{Entity}Service` (Phase 2a's class), mapping through
|
|
201
|
+
Linq to the new `{Entity}{View}ScreenDto`. Reuse the SAME query
|
|
202
|
+
primitives Phase 2a's CRUD uses — **never duplicate rules across strata**.
|
|
203
|
+
c. Append a happy-path Fact to the existing `{Entity}ServiceTests`.
|
|
204
|
+
3. Run `dotnet build`. On compile error: return a structured failure
|
|
205
|
+
(`{ failureKind: "compile.*", ..., fingerprint }`) — the orchestrator's
|
|
206
|
+
auto-healing protocol takes over.
|
|
207
|
+
4. Run `dotnet test --filter "Category=Acceptance&FullyQualifiedName~Screens"`.
|
|
208
|
+
On test failure: return `{ failureKind: "tests.acceptance.fail", ... }`.
|
|
209
|
+
5. Stage and commit ONLY this subagent's files (regex of allowed paths is
|
|
210
|
+
`Controllers/{Module}/Screens/{EntityPlural}ScreenController.cs` +
|
|
211
|
+
`DTOs/Screens/{Entity}*.cs` + the modified service files).
|
|
212
|
+
|
|
213
|
+
**Parallelism rules**:
|
|
214
|
+
- Different (section, entity) tuples MAY run in parallel.
|
|
215
|
+
- Subagents that share an entity but differ on section MUST run serially.
|
|
216
|
+
- Failure of one subagent **defers its own item** (logs a blocker, best-effort
|
|
217
|
+
skip/stub); the others' commits remain and the run continues.
|
|
218
|
+
|
|
219
|
+
## Phase 3a.0 — Cross-module FK pre-flight (Bug 6)
|
|
220
|
+
|
|
221
|
+
Run ONCE per module before the per-entity loop starts. Detects every FK target
|
|
222
|
+
in another module and scaffolds it upstream so the per-entity agents can
|
|
223
|
+
`import { useTypeAuditLookup } from '@/features/referentiels/typeAudit/...'`
|
|
224
|
+
without resolving against an empty file.
|
|
225
|
+
|
|
226
|
+
Why this gate exists: AFFAIRES/Demande pagespec declared FK fields targeting
|
|
227
|
+
`TypeAudit`, `TypeTravaux`, `Client` (all in `referentiels`). The orchestrator
|
|
228
|
+
ran Phase 3a on `affaires/demande` only — the upstream `referentiels` module
|
|
229
|
+
was never re-scaffolded, the generated `Demande*Page.tsx` imported hooks that
|
|
230
|
+
didn't exist on disk, and TS2305 « no exported member » fired 5 times per page.
|
|
231
|
+
|
|
232
|
+
**Procedure**:
|
|
233
|
+
|
|
234
|
+
1. **Collect FK targets**. For every entity in the current module:
|
|
235
|
+
- Read `<MODULE>/entité.md` → parse `**Relations**` lines (e.g.
|
|
236
|
+
`Demande *→1 TypeAudit (FK TypeAuditId, restrict)`) → extract the FK
|
|
237
|
+
target entity name.
|
|
238
|
+
- Also scan `<MODULE>/pagespecs/<Entity>.<view>.md` for FK fields whose
|
|
239
|
+
`fkTo` block points at another module.
|
|
240
|
+
- Resolve the target module by reading `.smartstack/ba/<APP>/<targetModule>/entité.md`
|
|
241
|
+
and matching the entity name. If the target lives in the SAME module, skip —
|
|
242
|
+
it's covered by the per-entity loop. If the target lives in **another module**
|
|
243
|
+
of the SAME app, add to `upstreamDeps[]`. Cross-app FKs are out of scope
|
|
244
|
+
(and would trigger a separate audit).
|
|
245
|
+
|
|
246
|
+
2. **Check on disk**. For each `(targetModule, targetEntity)` in `upstreamDeps`:
|
|
247
|
+
- `targetLower = camelCase(targetEntity)` (e.g. `TypeAudit → typeAudit`)
|
|
248
|
+
- Expected hook path:
|
|
249
|
+
`src/web/<appCode>-web/src/features/<targetModule>/<targetLower>/hooks/use<targetEntity>.ts`
|
|
250
|
+
- If the file exists AND exports `use<targetEntity>Lookup`, mark as `present`.
|
|
251
|
+
- Otherwise, mark as `missing` — needs upstream scaffolding.
|
|
252
|
+
|
|
253
|
+
3. **Auto-scaffold missing upstream**. For each `missing` entry:
|
|
254
|
+
- Invoke `scaffold-api-client` with a minimal spec on the target entity
|
|
255
|
+
(parse its `entité.md` for fields). The lookup hook + service is the
|
|
256
|
+
primary deliverable; the rest is incidental but harmless.
|
|
257
|
+
- Invoke `scaffold-component` if any page on the current module navigates
|
|
258
|
+
to the upstream entity (e.g. via `routes.<targetSection>.detail(...)`).
|
|
259
|
+
- Invoke `scaffold-routes` to wire the upstream URL helpers.
|
|
260
|
+
- Persist the decision in `<MODULE>/_audit/cross-module-deps.md` for traceability.
|
|
261
|
+
|
|
262
|
+
4. **Heal vs defer**. If auto-scaffolding fails (target entity missing from BA,
|
|
263
|
+
ambiguous match, etc.), emit failure kind `fk.cross-module-missing` → the
|
|
264
|
+
auto-healing protocol retries with a wider context window. If retry budget
|
|
265
|
+
exhausts, **defer** (blocker `fk.cross-module-missing`, high): best-effort
|
|
266
|
+
skip/guard the unresolved import so the rest of the page compiles;
|
|
267
|
+
`userAction: run /ba-develop on {targetModule} first then retry`. Continue.
|
|
268
|
+
|
|
269
|
+
**Why this is upstream-not-per-entity**: the FK deps are KNOWN before the
|
|
270
|
+
per-entity loop starts. Running them in parallel with the loop creates a race
|
|
271
|
+
where Demande's agent imports `useTypeAudit` while another agent is still
|
|
272
|
+
generating it — silent partial scaffolding. The pre-flight is sequential by
|
|
273
|
+
design: scaffold all upstream first, then fan out.
|
|
274
|
+
|
|
275
|
+
## Phase 3a per-entity loop — audit-or-regenerate
|
|
276
|
+
|
|
277
|
+
Each per-feature subagent runs this loop for ITS entity:
|
|
278
|
+
|
|
279
|
+
0. **Detect sub-resource nesting** (read `entité.md` ONCE before invoking
|
|
280
|
+
any scaffolder). When the entity is a sub-resource — its `**Relations**`
|
|
281
|
+
line carries a `*→1 <Parent> (FK <ParentId> ...)` to a same-module entity
|
|
282
|
+
AND the controller URL nests under that parent — populate the
|
|
283
|
+
`parentPath` + `parentIdParam` fields BEFORE invoking `scaffold-api-client`
|
|
284
|
+
AND `scaffold-routes`:
|
|
285
|
+
|
|
286
|
+
- `parentPath`: URL template containing the literal `{parentId}` placeholder,
|
|
287
|
+
matching what the backend controller emits. Read the controller file
|
|
288
|
+
`src/<Ns>.Api/Controllers/<Module>/<E>sController.cs` and look at the
|
|
289
|
+
class-level `[Route("…")]` attribute. Examples:
|
|
290
|
+
```
|
|
291
|
+
[Route("api/gaf/referentiels/sites/{siteId:guid}/rues")]
|
|
292
|
+
→ parentPath: "/api/gaf/referentiels/sites/{parentId}/rues"
|
|
293
|
+
|
|
294
|
+
[Route("api/gaf/referentiels/types-affaire/{typeId:guid}/qualificatifs/audit")]
|
|
295
|
+
→ parentPath: "/api/gaf/referentiels/types-affaire/{parentId}/qualificatifs/audit"
|
|
296
|
+
```
|
|
297
|
+
Replace the backend's `{xxxId:guid}` constraint with the literal token
|
|
298
|
+
`{parentId}` — the api-client's URL builder substitutes it at runtime
|
|
299
|
+
using the `parentIdParam` value as the variable name in emitted JS.
|
|
300
|
+
|
|
301
|
+
- `parentIdParam`: a domain-readable camelCase identifier used in the
|
|
302
|
+
generated TS signatures. Derive from the parent entity name:
|
|
303
|
+
`Site → siteId`, `TypeAffaire → typeAffaireId`. NEVER pass the generic
|
|
304
|
+
`parentId` literal — generated code reads better as
|
|
305
|
+
`useRues(siteId: string)` than `useRues(parentId: string)`.
|
|
306
|
+
|
|
307
|
+
- `parentSection` (for `scaffold-routes`): the parent's section, kebab-case,
|
|
308
|
+
read from the parent entity's `index.md` (e.g. `sites`, `types-affaire`).
|
|
309
|
+
Drives the 4-segment componentKey + nested URL + nested page path.
|
|
310
|
+
|
|
311
|
+
For flat (non-nested) entities, leave all three undefined — the CLIs emit
|
|
312
|
+
their legacy flat URLs and skip the parent-arg plumbing.
|
|
313
|
+
|
|
314
|
+
**REFERENTIELS sub-resources detected at this step**:
|
|
315
|
+
- Rue (parent Site, FK SiteId) → `parentPath: /api/gaf/referentiels/sites/{parentId}/rues`, `parentIdParam: siteId`, `parentSection: sites`
|
|
316
|
+
- QualificatifTypeAudit (parent TypeAffaire, FK TypeAffaireId) → `parentPath: /api/gaf/referentiels/types-affaire/{parentId}/qualificatifs/audit`, `parentIdParam: typeAffaireId`, `parentSection: types-affaire`
|
|
317
|
+
- QualificatifTypeTravaux (parent TypeAffaire) → same as above, suffix `/qualificatifs/travaux`
|
|
318
|
+
|
|
319
|
+
Sub-resource detection is incompatible with `useScreens: true` — the screen
|
|
320
|
+
stratum has no nested URL convention. If the spec would set both, the
|
|
321
|
+
api-client throws at runtime. Reject the combination upstream by setting
|
|
322
|
+
`useScreens: false` for sub-resources (the screen stratum will be invoked
|
|
323
|
+
only on top-level entities).
|
|
324
|
+
|
|
325
|
+
1. If `src/features/{module}/{entityLower}/` does not exist, invoke
|
|
326
|
+
`scaffold-api-client --spec '<single entity>'`. The `<single entity>` JSON
|
|
327
|
+
MUST follow the strata detection contract spelled out below — the subagent
|
|
328
|
+
stats `Controllers/{Module}/Screens/{EntityPlural}ScreenController.cs` and
|
|
329
|
+
sets `useScreens` + `screenColumns` accordingly. When sub-resource detection
|
|
330
|
+
in step 0 set `parentPath` / `parentIdParam`, include them in the spec — the
|
|
331
|
+
CLI emits a parameterised `API_PATH = (siteId: string) =>` instead of the
|
|
332
|
+
flat constant, and every method/hook takes `siteId` as its first argument.
|
|
333
|
+
2. For each view in entity.views (order: list → detail → form → dashboard):
|
|
334
|
+
a. `target = src/pages/{appLower}/{module}/{section}/{Entity}{View}Page.tsx`
|
|
335
|
+
b. **Skip rule** (diff-aware on re-runs — F4.1):
|
|
336
|
+
- On a re-run, the orchestrator's Phase 3 pre-entry gate already computed
|
|
337
|
+
the regenerate set = spec-diff (`compute-page-diff`) ∪ disk-drift
|
|
338
|
+
(`validate-page` on the `unchanged` set). A view whose page key
|
|
339
|
+
(`{Entity}.{view}`) is **not** in that set — i.e. its pagespec is
|
|
340
|
+
unchanged AND its `.tsx` is valid on disk — was filtered out upstream
|
|
341
|
+
and never reaches this loop. This is the perf win: an unchanged module
|
|
342
|
+
re-runs in ~15 s, not ~3 min. On a first run (no `.run-snapshot.json`)
|
|
343
|
+
the set is "all views" → regenerate everything.
|
|
344
|
+
- A view that IS in the regenerate set is NEVER view-skipped: a present
|
|
345
|
+
pagespec carries data the validator can't see (i18n catalogue, column
|
|
346
|
+
hints, action permissions), so always re-invoke `scaffold-component`.
|
|
347
|
+
- No pagespec, target exists → run `validate-page`. Success → continue.
|
|
348
|
+
c. Build the spec for `scaffold-component`:
|
|
349
|
+
- Read `<MODULE>/pagespecs/{Entity}.{view}.md`, extract the fenced JSON
|
|
350
|
+
→ `pageSpec`. Match by file name (`entity === Entity, view === currentView`).
|
|
351
|
+
- **i18n labels — pagespec is the source of truth**. The pageSpec's
|
|
352
|
+
`i18nKeys` field carries the business-translated labels per locale
|
|
353
|
+
(`{ fr: {...}, en: {...}, it: {...}, de: {...} }`). scaffold-component
|
|
354
|
+
reads `pageSpec.i18nKeys[locale]` directly when present and falls back
|
|
355
|
+
to `humanize(entity.name)` only when the pagespec is absent. Phase 3a
|
|
356
|
+
does NOT transform these — pass the pageSpec verbatim. If a page
|
|
357
|
+
shipped with raw `humanize(name)` outputs (`"TypeAffaire"` instead of
|
|
358
|
+
`"Types d'affaire"`), the root cause is upstream: `ba-create-prd`
|
|
359
|
+
wrote a thin `i18nKeys` block. Fix it there, NOT in Phase 3a — the
|
|
360
|
+
derivation pipeline ALREADY threads the labels through correctly when
|
|
361
|
+
they exist in the pagespec.
|
|
362
|
+
- **labelKey case (Fix #9, 2026-05-27)** — column / filter `labelKey`s
|
|
363
|
+
can ship from the PRD in PascalCase (`list.columns.Code`,
|
|
364
|
+
`list.filters.EstActif`). scaffold-component now normalises the leaf
|
|
365
|
+
to camelCase symmetrically with the JSON catalogue via
|
|
366
|
+
`normalizeI18nKey()` — both the JSON `list.columns.code` and the TSX
|
|
367
|
+
`t('contact.list.columns.code')` end up matching. No Phase 3a action
|
|
368
|
+
needed; this is purely defense in depth in the CLI. Action labels
|
|
369
|
+
(`list.create`, `list.toggle-actif`) stay verbatim because their
|
|
370
|
+
parent is not a field-parent. Idempotent: camelCase leaves are
|
|
371
|
+
unaffected.
|
|
372
|
+
- **Enriched mode** (pagespec found): `{ module, appCode, entity, section,
|
|
373
|
+
views: ["{view}"], fields, projectPath, pageSpec, prdContext }`.
|
|
374
|
+
- **Legacy mode** (no pagespec): `{ module, appCode, entity, section,
|
|
375
|
+
views: ["{view}"], fields, projectPath }` — derive `fields` from `entité.md`.
|
|
376
|
+
- **FK resolution** (powers `<EntityLookup>`): for each field whose type
|
|
377
|
+
∈ {guid, uuid} AND name ends with `Id`, look up the matching
|
|
378
|
+
`Rel: ... *→1 {Target} (FK {ThisFieldName} ...)` line in the entity's
|
|
379
|
+
`entité.md`. If found, enrich with `fkTo: { entity, module }`. If the
|
|
380
|
+
FK is cross-module (bare Guid + "FK cross-module vers {APP}/{MODULE}.{Target}"
|
|
381
|
+
description), parse and set `module` accordingly. Otherwise warn — audit
|
|
382
|
+
DEV-UI-022 will surface it as BLOCKING on the next pass.
|
|
383
|
+
- Invoke `scaffold-component --spec '<JSON>'`.
|
|
384
|
+
|
|
385
|
+
**Concrete example — enriched spec for a form view:**
|
|
386
|
+
```bash
|
|
387
|
+
npx tsx skills/development/frontend/component/cli/scaffold-component/index.ts --spec '{
|
|
388
|
+
"module": "referentiels",
|
|
389
|
+
"appCode": "myapp",
|
|
390
|
+
"entity": "TypeAffaire",
|
|
391
|
+
"section": "types-affaire",
|
|
392
|
+
"views": ["form"],
|
|
393
|
+
"fields": [
|
|
394
|
+
{"name": "Code", "type": "string", "required": true},
|
|
395
|
+
{"name": "Libelle", "type": "string", "required": true},
|
|
396
|
+
{"name": "EstActif", "type": "boolean", "required": true}
|
|
397
|
+
],
|
|
398
|
+
"projectPath": "/path/to/web/myapp-web",
|
|
399
|
+
"pageSpec": { <the entire fenced JSON from pagespecs/TypeAffaire.form.md> }
|
|
400
|
+
}'
|
|
401
|
+
```
|
|
402
|
+
The `pageSpec` value is the ENTIRE parsed JSON block from the pagespec file
|
|
403
|
+
(including `i18nKeys`, `columns`, `actions`, `fields`, `permission`, etc.).
|
|
404
|
+
Copy it verbatim — do NOT extract or transform individual fields.
|
|
405
|
+
|
|
406
|
+
d. Run `validate-page` on the freshly-written file.
|
|
407
|
+
e. Success → continue. Failed (missing hook) → re-invoke `scaffold-api-client`
|
|
408
|
+
first (e.g. with `hasDashboard: true` if `useDashboard{Entity}` is missing).
|
|
409
|
+
f. Re-invoke `scaffold-component` with `priorErrors[]` from validate-page
|
|
410
|
+
violations + run `validate-page` once more. Keep `pageSpec` on retries.
|
|
411
|
+
g. Still failed → return a structured failure to the orchestrator
|
|
412
|
+
(`failureKind: "validate-page.persistent"`); the auto-healing protocol
|
|
413
|
+
takes over (typical fix: re-invoke `scaffold-api-client` for the entity,
|
|
414
|
+
then retry this page).
|
|
415
|
+
3. After all pages succeed, aggregate any pageSpec entries where
|
|
416
|
+
`needsRefinement === true` into a `refinementSummary[]` — non-blocking but
|
|
417
|
+
surfaced in the run summary.
|
|
418
|
+
4. **After ALL entities succeed and the Phase 3 build gate is green** (F4.1),
|
|
419
|
+
write the run baseline so the next re-run diffs against it:
|
|
420
|
+
```bash
|
|
421
|
+
npx tsx skills/ba-develop/cli/update-snapshot/index.ts \
|
|
422
|
+
--spec '{"moduleRoot":"<.smartstack/ba/{appCode}/{moduleCode}>"}'
|
|
423
|
+
```
|
|
424
|
+
Snapshot ONLY on success — a failed run must not poison the baseline. This
|
|
425
|
+
single write makes the NEXT `compute-page-diff` see today's pages as
|
|
426
|
+
`unchanged`, so an untouched module skips Phase 3a entirely.
|
|
427
|
+
|
|
428
|
+
The eight validate-page rules: imports-resolve, pagetemplate-wrapping,
|
|
429
|
+
useparams-null-check, permissionguard-on-mutations, no-local-usepermissions,
|
|
430
|
+
i18n-keys-resolve, hook-imports-exist, permission-keys-no-appcode (see
|
|
431
|
+
`frontend-component` SKILL.md).
|
|
432
|
+
|
|
433
|
+
## Phase 3a — derive api-client + component specs
|
|
434
|
+
|
|
435
|
+
Each per-entity feature subagent constructs its scaffolder inputs:
|
|
436
|
+
|
|
437
|
+
1. **Re-read pagespecs** (never re-derive — they are the source of truth).
|
|
438
|
+
2. **Filter customActions** down to API-bound, non-CRUD actions:
|
|
439
|
+
- DROP every action with `kind: "navigate"` (those become inline
|
|
440
|
+
`navigate(targetRoute)` buttons in scaffold-component; scaffold-api-client
|
|
441
|
+
emits NOTHING for them — the historical `POST /{id}/open` phantom
|
|
442
|
+
endpoint class of 404s is the bug this filter prevents).
|
|
443
|
+
- DROP every action whose `code` is in `STANDARD_CRUD_CODES`.
|
|
444
|
+
3. **De-duplicate** by `(scope, endpoint, httpMethod)`.
|
|
445
|
+
4. **Derive `ApiCustomAction[]`** for `scaffold-api-client` (2026-05-27 contract):
|
|
446
|
+
- `code`: `pageAction.code` — the **business identifier** (camelCase / kebab).
|
|
447
|
+
Drives TS naming: service member = `toCamel(code)`, hook =
|
|
448
|
+
`use${PascalCase(code)}${Entity}`. NEVER use `endpoint` for naming;
|
|
449
|
+
`endpoint` is for URLs only.
|
|
450
|
+
- `endpoint`: `pageAction.endpoint` (when present and ≠ `code`) — the
|
|
451
|
+
**URL segment**, kebab-case, MUST equal the backend route attribute. When
|
|
452
|
+
omitted, the api-client falls back to `code` as the URL segment.
|
|
453
|
+
This decoupling fixes the historical
|
|
454
|
+
`code: 'toggle-actif' → URL /toggle-actif vs controller [HttpPost("activate")]`
|
|
455
|
+
class of 404s: BA pagespecs keep the business name, controllers keep their
|
|
456
|
+
route name, the CLI emits both correctly.
|
|
457
|
+
- `kind`: pass `'api'` explicitly (or omit; defaults to `'api'`). Navigate
|
|
458
|
+
actions never reach this list — they were filtered out in step 2.
|
|
459
|
+
- `scope`, `payloadType`, `responseType` (default `'void'`), `httpMethod`
|
|
460
|
+
(lowercase).
|
|
461
|
+
|
|
462
|
+
**Example — REFERENTIELS Employe**:
|
|
463
|
+
```jsonc
|
|
464
|
+
// pagespec.actions[]
|
|
465
|
+
{ "code": "toggle-actif", "endpoint": "activate", "scope": "row", "kind": "api", "httpMethod": "POST" }
|
|
466
|
+
// → ApiCustomAction[]
|
|
467
|
+
{ "code": "toggle-actif", "endpoint": "activate", "scope": "row", "kind": "api", "httpMethod": "post", "responseType": "void" }
|
|
468
|
+
// → TS: useToggleActifEmploye() calls POST /api/.../{id}/activate
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
**When the controller route diverges from the pagespec code** (legacy
|
|
472
|
+
backend names): populate `endpoint` by reading
|
|
473
|
+
`src/<Ns>.Api/Controllers/<Module>/<E>sController.cs` and matching the
|
|
474
|
+
`[HttpPost("…")]` attribute next to the handler whose name PascalCases the
|
|
475
|
+
business action. The Phase 2a gate's cross-check (see § Phase 2a) already
|
|
476
|
+
verifies the controller carries the expected route — that's where the
|
|
477
|
+
`endpoint` value comes from.
|
|
478
|
+
5. **Detect screen-driven mode** (Wave F2) — applies ONLY to top-level entities.
|
|
479
|
+
When the per-entity loop's step 0 detected a sub-resource (parentPath set),
|
|
480
|
+
skip this step entirely and pass `useScreens: false` — the screen stratum
|
|
481
|
+
has no nested URL convention, and the api-client rejects the combination
|
|
482
|
+
at runtime. Otherwise, stat
|
|
483
|
+
`src/<Ns>.Api/Controllers/<Module>/Screens/{EntityPlural}ScreenController.cs`:
|
|
484
|
+
- **Absent** → `useScreens: false`, omit `screenColumns`. The api-client
|
|
485
|
+
emits `/api/v1/integration/{plural-kebab}` paths — the SAME route the
|
|
486
|
+
integration controller emits at the class level. Zero drift possible:
|
|
487
|
+
both sides import `buildIntegrationRoute` from `lib/url-conventions.ts`.
|
|
488
|
+
Do NOT pass `apiBasePath` — that free-form template was removed from the
|
|
489
|
+
api-client schema on 2026-05-27 (Wave 1 of the URL alignment) because it
|
|
490
|
+
was the source of orphan `/api/{appCode}/{module}/{section}/...` URLs
|
|
491
|
+
that no backend scaffolder ever served.
|
|
492
|
+
- **Present** → `useScreens: true` AND collect `screenColumns` from pagespecs:
|
|
493
|
+
```
|
|
494
|
+
screenColumns: {
|
|
495
|
+
list: pagespecsForEntity.find(p => p.view === 'list')?.columns ?? [],
|
|
496
|
+
detail: pagespecsForEntity.find(p => p.view === 'detail')?.columns ?? [],
|
|
497
|
+
}
|
|
498
|
+
```
|
|
499
|
+
Pass each column **verbatim** as `{ key, formatHint }`. The api-client's
|
|
500
|
+
`tsTypeForColumn` mirrors scaffold-screen-controller's `dotnetTypeFor`
|
|
501
|
+
byte-for-byte — that's what makes the wire match.
|
|
502
|
+
6. **Pass `pageSpec.actions[]` UNCHANGED** to `scaffold-component`. The
|
|
503
|
+
component generator branches on `kind`:
|
|
504
|
+
- `kind: "api"` → imports `use<…>${Entity}` hook + declares mutation + emits
|
|
505
|
+
button click handler calling `mutation.mutateAsync(...)`.
|
|
506
|
+
- `kind: "navigate"` → emits `navigate(<targetRoute>)` directly; no hook,
|
|
507
|
+
no mutation; synchronous handler.
|
|
508
|
+
|
|
509
|
+
The derivation is mechanical — the subagent does not "invent" code names or
|
|
510
|
+
routes. It transcribes `pageSpec.endpoint` verbatim into each scaffolder.
|
|
511
|
+
|
|
512
|
+
**Why detect-on-disk rather than passing a flag**: a single module can be
|
|
513
|
+
mid-migration (some entities have screen controllers, others don't). Resolving
|
|
514
|
+
per entity keeps the orchestrator decoupled from migration state.
|
|
515
|
+
|
|
516
|
+
## Custom-action propagation
|
|
517
|
+
|
|
518
|
+
The pagespec `actions[]` array carries every non-CRUD button. Canonical Zod
|
|
519
|
+
schema: `templates/skills/lib/page-spec-actions.ts` (`PageCustomActionSchema`).
|
|
520
|
+
Each entry has a `kind` discriminator:
|
|
521
|
+
|
|
522
|
+
- `kind: "api"` → backend endpoint + service method + React hook + button.
|
|
523
|
+
The `code` is the **business identifier** (drives TS naming). The `endpoint`
|
|
524
|
+
is the **URL segment** used verbatim by the controller's
|
|
525
|
+
`[HttpVerb("<endpoint>")]` attribute AND the api-client's
|
|
526
|
+
`apiClient.<verb>('/api/.../<endpoint>')` call. When `code === endpoint`
|
|
527
|
+
(the common case), `endpoint` MAY be omitted; the api-client falls back to
|
|
528
|
+
`code`. When they differ (legacy backend routes like `toggle-actif → activate`,
|
|
529
|
+
`sync-from-pce → sync-from-proconcept`), both MUST be provided.
|
|
530
|
+
- `kind: "navigate"` → ONLY a button calling `navigate(targetRoute)`. No
|
|
531
|
+
endpoint, no hook, no axios call. Phase 3a's derivation step 2 filters these
|
|
532
|
+
out BEFORE the customActions array reaches `scaffold-api-client`; the CLI
|
|
533
|
+
also self-defends with `(entity.customActions ?? []).filter(a => a.kind !== 'navigate')`
|
|
534
|
+
at the start of its generation loop — both layers prevent the 2026-05-27
|
|
535
|
+
REFERENTIELS post-mortem class of phantom `POST /{id}/open` endpoints.
|
|
536
|
+
|
|
537
|
+
### How Phase 3a populates `kind`
|
|
538
|
+
|
|
539
|
+
When constructing the `ApiCustomAction[]` array:
|
|
540
|
+
|
|
541
|
+
1. Read `pageAction.kind` from the pagespec. When present, pass it through verbatim.
|
|
542
|
+
2. When ABSENT (legacy pagespecs that predate the kind discriminator), infer:
|
|
543
|
+
- `targetScreen` OR `targetRoute` is set → `kind: 'navigate'` (and the action
|
|
544
|
+
is then filtered out before reaching the api-client).
|
|
545
|
+
- Otherwise → `kind: 'api'` (default).
|
|
546
|
+
3. Never invent a navigate action without `targetRoute`/`targetScreen` — the
|
|
547
|
+
pagespec schema enforces the discriminator (see
|
|
548
|
+
`PageCustomActionSchema.superRefine`).
|
|
549
|
+
|
|
550
|
+
## Domain notes
|
|
551
|
+
|
|
552
|
+
> **Test generation is mandatory.** Every phase 1+ invokes `scaffold-tests`
|
|
553
|
+
> after its scaffolds. The gate cannot be passed with `testsRun == 0`; Golden
|
|
554
|
+
> Rule #8. Phase 0 is exempt (Core providers are deterministic).
|
|
555
|
+
|
|
556
|
+
> **Frontend aggregator — deterministic CLI**. Sub-phase 3c calls
|
|
557
|
+
> `aggregate-component-registry`; the Frontend subagent must NOT hand-write
|
|
558
|
+
> `componentRegistry.generated.ts`.
|
|
559
|
+
|
|
560
|
+
> **Computed attributes — end-to-end cascade**. When the BA `data-model`
|
|
561
|
+
> declares an attribute with non-null `formula`:
|
|
562
|
+
> - Phase 1: `scaffold-entity` SKIPS the field on Domain + EF Config.
|
|
563
|
+
> - Phase 2: `scaffold-business` includes it in ListDto/DetailDto, EXCLUDES
|
|
564
|
+
> from Create/Update Dtos+Validators, injects formula into LINQ projections
|
|
565
|
+
> (one SQL query, no N+1).
|
|
566
|
+
> - Phase 3: `scaffold-component` excludes from Form, renders read-only on
|
|
567
|
+
> List + Detail. Audit DEV-UI-014 rejects stub helpers.
|
|
568
|
+
|
|
569
|
+
> **Relationships — same-module FKs become real constraints**. When `entité.md`
|
|
570
|
+
> declares a `**Relations**` line (e.g. `Opportunity *→1 Contact (FK ContactId)`),
|
|
571
|
+
> Phase 1 MUST forward it to `scaffold-entity` as `relations[]` — cardinality
|
|
572
|
+
> to `type` (`many-to-one` / `one-to-one` / `one-to-many`), BA cascade to
|
|
573
|
+
> `onDelete` (`restrict`/`cascade`/`set-null`/`no-action`). The generator
|
|
574
|
+
> emits a REAL FK constraint, not a bare `Guid`. Cross-module references stay
|
|
575
|
+
> plain `Guid`. Audit DEV-DAT-008 is BLOCKING.
|
|
576
|
+
|
|
577
|
+
> **Table prefix — derive `domainPrefix` from `entité.md`, never `ext`**. Each
|
|
578
|
+
> entity in `entité.md` carries a `**Préfixe table**` (`aff_`, `cli_`, `ref_`…).
|
|
579
|
+
> Phase 1 maps it to the `scaffold-entity` `domainPrefix` by stripping the
|
|
580
|
+
> trailing underscore (`aff_` → `aff`), so the table is `{domainPrefix}_{Plural}`
|
|
581
|
+
> in PascalCase (`aff_Demandes`) — aligned with SmartStack.app (`support_Tickets`,
|
|
582
|
+
> `ai_ApiKeys`). NEVER pass `ext`: that is the *migration* prefix of the
|
|
583
|
+
> `extensions` schema (`efcore/migration-name`), not a business-domain table
|
|
584
|
+
> prefix. The schema (`schemaTarget: "extensions"`) is the isolation boundary;
|
|
585
|
+
> the per-entity `domainPrefix` is the functional domain. Omit `pluralName` to
|
|
586
|
+
> let the generator pluralize consistently — do NOT pass the singular as
|
|
587
|
+
> `pluralName` (that produced the `ext_Demande` vs `ext_DossierValidations` mix).
|
|
588
|
+
|
|
589
|
+
> **Columns are PascalCase — `scaffold-entity` emits NO `HasColumnName`**. EF
|
|
590
|
+
> Core's default mapping (property → column) is PascalCase, exactly like
|
|
591
|
+
> SmartStack.app (`FirstName`, `CreatedAt`, `ClientId`). Phase 1 must not expect
|
|
592
|
+
> or inject snake_case column names anywhere.
|