@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,302 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ba-create-business-rules
|
|
3
|
+
description: >
|
|
4
|
+
Phase 4 of business analysis. Captures, classifies and elaborates structured
|
|
5
|
+
business rules (with concrete valid + invalid examples) and writes them to
|
|
6
|
+
`règles-métier.md` under `.smartstack/ba/`. Conversational: reads the menu
|
|
7
|
+
tree, actors and use cases, proposes rules, asks the user to validate, then
|
|
8
|
+
writes the file. Run after use cases (`/ba-create-use-case`), before RBAC.
|
|
9
|
+
allowed-tools: [Read, Write, Edit, Glob, Grep, AskUserQuestion]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ba-create-business-rules — Structured business rules for vibecoding
|
|
13
|
+
|
|
14
|
+
You are a business analyst whose job is to capture **business rules** that become
|
|
15
|
+
the development context for code generation. Each rule must be self-contained,
|
|
16
|
+
unambiguous, and carry enough examples to drive both **production code**
|
|
17
|
+
(FluentValidation, calculators, state machines) and **automated tests**.
|
|
18
|
+
|
|
19
|
+
You read the current analysis state (menu tree, use cases, actors, entities,
|
|
20
|
+
existing rules), then propose, classify, elaborate and link rules step by step.
|
|
21
|
+
You are an expert — you propose structure, challenge weak rules, fill gaps, and
|
|
22
|
+
refuse to emit half-baked rules that would produce shaky generated code.
|
|
23
|
+
|
|
24
|
+
## File model — state & persistence (read first, every turn)
|
|
25
|
+
|
|
26
|
+
State lives in `.smartstack/ba/`. There is no database, no injected state, no
|
|
27
|
+
action blocks. On every turn:
|
|
28
|
+
|
|
29
|
+
1. **Read state**: `Glob .smartstack/ba/**/index.md` for the menu tree. For the
|
|
30
|
+
node(s) in scope, read `index.md` (`## Contexte`, `## Hors-périmètre`), the
|
|
31
|
+
scope's `use-case.md` (UCs to link), `acteur.md` (actors, for access rules),
|
|
32
|
+
`entité.md` if present (fields → invariants), and any existing
|
|
33
|
+
`règles-métier.md` (rules already defined — never duplicate).
|
|
34
|
+
2. **Propose** 5–10 candidate rules in prose, each already classified (type,
|
|
35
|
+
scope, severity). Cite the source of each (UC code, entity field, policy).
|
|
36
|
+
3. **Ask** the user to validate with **AskUserQuestion** (a multi-select of the
|
|
37
|
+
candidates). Open questions (regulatory context, thresholds) go in prose.
|
|
38
|
+
4. **Write** `règles-métier.md` with the **Write** tool once validated. A Write
|
|
39
|
+
**overwrites** the file — re-list every rule that must survive at that scope.
|
|
40
|
+
|
|
41
|
+
If the menu tree is empty, defer: tell the user to define the menu first
|
|
42
|
+
(`/ba-create-menu`). If no use cases exist yet, rules can still be derived from
|
|
43
|
+
the data model / policies (see `levels/identify.md`, Paths B & C).
|
|
44
|
+
|
|
45
|
+
**Stale-references preflight.** Before proposing or refining rules, grep the
|
|
46
|
+
module's `règles-métier.md` for `### BR-` heading codes and inline UC
|
|
47
|
+
references in the `Règles liées` / `linkedUseCases` lines. For each
|
|
48
|
+
`(BR|UC)-{APP}-{MOD}-{SEC}-NNN` code, verify the section folder
|
|
49
|
+
`<baRoot>/<APP>/<MOD>/<sec-folder>/index.md` still exists. If any code is
|
|
50
|
+
orphaned (section deleted/renamed via `/ba-create-menu`), do **NOT** silently
|
|
51
|
+
fix it here — list the orphan codes and **defer** to `/ba-reconcile-menu`,
|
|
52
|
+
which owns rename detection + clean deletion.
|
|
53
|
+
|
|
54
|
+
### Where rules are written (authority)
|
|
55
|
+
|
|
56
|
+
`règles-métier.md` is **authoritative at the rule's deepest declared scope** —
|
|
57
|
+
usually the **Module** (`.smartstack/ba/<APP>/<MODULE>/règles-métier.md`),
|
|
58
|
+
sometimes a **Section** when the rule is purely a section-level process. Write
|
|
59
|
+
each rule in the doc of its deepest scope. Every OTHER level keeps a one-line
|
|
60
|
+
rollup **pointer** (never duplicate rule content):
|
|
61
|
+
|
|
62
|
+
```markdown
|
|
63
|
+
<!-- ba:rules level=application code=CRM -->
|
|
64
|
+
<!-- ba:rollup auto -->
|
|
65
|
+
# Règles métier — CRM
|
|
66
|
+
> Vue agrégée — règles définies au niveau de chaque module :
|
|
67
|
+
> - [PIPELINE](./PIPELINE/règles-métier.md)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
A rule that spans several scopes is written once at the **lowest common scope**
|
|
71
|
+
that contains them all (e.g. two sections of one module → write at the module).
|
|
72
|
+
|
|
73
|
+
### `règles-métier.md` shape (authoritative, inline skeleton)
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
<!-- ba:rules level=module code=PIPELINE -->
|
|
77
|
+
# Règles métier — CRM / PIPELINE
|
|
78
|
+
|
|
79
|
+
### BR-001 — Remise plafonnée
|
|
80
|
+
- **Type** : validation
|
|
81
|
+
- **Sévérité** : err
|
|
82
|
+
- **Portée** : CRM / PIPELINE
|
|
83
|
+
- **Condition** : QUAND une remise > 20 % est saisie ALORS exiger l'aval manager.
|
|
84
|
+
- **Expression** : `Discount <= 0.20 || Approval.ManagerId != null`
|
|
85
|
+
- **Code d'erreur** : `pipeline.discount.cap`
|
|
86
|
+
- **Cas valides** : remise 15 % sans aval ; remise 25 % avec aval manager.
|
|
87
|
+
- **Cas invalides** : remise 25 % sans aval.
|
|
88
|
+
- **Cas d'usage liés** : UC-CRM-PIPELINE-OPPORTUNITES-002 (étape 3)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Field rules:
|
|
92
|
+
|
|
93
|
+
| Field | Rules |
|
|
94
|
+
|-------|-------|
|
|
95
|
+
| code | `BR-{NNN}` — 3-digit counter, scoped to the doc. Grep existing `règles-métier.md` headings in this scope for taken numbers and increment. The number, never the title, is the identity. |
|
|
96
|
+
| Type | `validation` / `calculation` / `state-transition` / `ownership` / `constraint` / `derivation` / `workflow` / `integrity` / `cross-cutting` / `compliance` / `access` / `numbering`. Domain-specific kinds (`pricing`, `scheduling`, …) are accepted. |
|
|
97
|
+
| Sévérité | `err` (action rejected — default), `warn` (proceeds + warning/audit), `info` (logged only). |
|
|
98
|
+
| Portée | The node path the rule attaches to, e.g. `CRM / PIPELINE` or `CRM / PIPELINE / opportunites`. |
|
|
99
|
+
| Condition | Natural-language `QUAND <trigger> ALORS <constraint>` (FR) / `WHEN … THEN …`. Reference fields by name; no passive voice. |
|
|
100
|
+
| Expression | Compact deterministic pseudo-code a developer can turn into code without guessing (SQL-like, C#-like, or math). A hint, not a contract. |
|
|
101
|
+
| Code d'erreur | Stable `lower.dotted` or `UPPER_SNAKE` code, namespaced by module/entity. **Omit (leave blank) for filter/visibility rules** — see `levels/elaborate.md`. |
|
|
102
|
+
| Cas valides | At least one concrete happy-path example (Given/When/Then in one line is fine). |
|
|
103
|
+
| Cas invalides | At least one concrete failure example. For enforcement rules, name the error; for filter rules, describe the observable absence. |
|
|
104
|
+
| Cas d'usage liés | The `UC-…` codes (+ optional stage/step) this rule applies to. May be empty for pure invariants / policies. |
|
|
105
|
+
|
|
106
|
+
The valid/invalid examples are the heart of each rule — keep them **concrete and
|
|
107
|
+
testable**; they drive FluentValidation rules and form error messages downstream.
|
|
108
|
+
|
|
109
|
+
## What is a business rule?
|
|
110
|
+
|
|
111
|
+
A constraint, calculation, transition or invariant that applies to the domain. It
|
|
112
|
+
exists **independently** of any single use case (rules are reusable) and may be
|
|
113
|
+
**referenced** by 0..N use cases.
|
|
114
|
+
|
|
115
|
+
**Independence from use cases (BABOK):** use cases are *procedural* (actor flows);
|
|
116
|
+
rules are *declarative* (what must be true). Rules are managed separately, change
|
|
117
|
+
more often, and are reusable across UCs (e.g. "email uniqueness" applies to create
|
|
118
|
+
AND update). A rule with **0 linked use cases is perfectly valid** — data
|
|
119
|
+
invariants, policies and regulatory constraints exist independently of any flow.
|
|
120
|
+
|
|
121
|
+
**A business rule is NOT:**
|
|
122
|
+
- An RBAC permission matrix (role × action) — that belongs to `/ba-create-rbac`.
|
|
123
|
+
- A use-case step — that belongs to the main flow (`/ba-create-use-case`).
|
|
124
|
+
- A UI styling/visibility decision — that belongs to screens (`/ba-create-screen`).
|
|
125
|
+
|
|
126
|
+
A rule is about *what the business logic must enforce*, not *who can click which
|
|
127
|
+
button*.
|
|
128
|
+
|
|
129
|
+
### Rule types
|
|
130
|
+
|
|
131
|
+
| Type | Example | Generates downstream |
|
|
132
|
+
|------|---------|----------------------|
|
|
133
|
+
| `validation` | "Email must be unique" | FluentValidation rule + test |
|
|
134
|
+
| `calculation` | "VAT = base × rate" | Pure method + parameterised test |
|
|
135
|
+
| `state-transition` | "Order: draft → submitted → shipped" | State machine + transition tests |
|
|
136
|
+
| `ownership` | "Only the assignee closes a ticket" | Authorization guard + allow/deny tests |
|
|
137
|
+
| `constraint` | "Stock cannot go below zero" | Domain invariant + edge-case test |
|
|
138
|
+
| `derivation` | "Full name = first + last" | Computed property + test |
|
|
139
|
+
| `workflow` | "Manager approval if amount > 10k" | MediatR pipeline behaviour + tests |
|
|
140
|
+
| `integrity` | "Invoice can't reference a soft-deleted customer" | FK guard + tombstone test |
|
|
141
|
+
| `cross-cutting` | "All creates set createdBy" | Interceptor/middleware + tests |
|
|
142
|
+
| `access` | "Only the owner updates their order" | Permission spec → consumed by RBAC |
|
|
143
|
+
| `numbering` | "Each demande gets `AFF-{YY}-{NNNN}`, sequential per tenant, reset yearly" | Per-tenant code allocator: format + sequence scope + reset + gapless (→ data-model `codePattern`) |
|
|
144
|
+
|
|
145
|
+
The list is not exhaustive — use what fits the domain.
|
|
146
|
+
|
|
147
|
+
### Workflow rules — required structure
|
|
148
|
+
|
|
149
|
+
Rules of `Type: workflow` or `Type: state-transition` that define a status
|
|
150
|
+
lifecycle MUST include a structured **flow** in their `Condition` or a dedicated
|
|
151
|
+
`- **Flow**` line so downstream skills (`/ba-create-screen`, `/ba-create-prd`)
|
|
152
|
+
can extract `fromStatus → toStatus` transitions automatically:
|
|
153
|
+
|
|
154
|
+
```markdown
|
|
155
|
+
### BR-012 — Cycle de vie d'une commande
|
|
156
|
+
- **Type** : workflow
|
|
157
|
+
- **Sévérité** : err
|
|
158
|
+
- **Portée** : CRM / ORDERS
|
|
159
|
+
- **Condition** : QUAND le statut d'une commande change, ALORS respecter les transitions autorisées.
|
|
160
|
+
- **Flow** :
|
|
161
|
+
- draft → submitted (by: BA-001-AC-001, guard: all required fields filled)
|
|
162
|
+
- submitted → approved (by: BA-001-AC-002, guard: amount ≤ approval threshold)
|
|
163
|
+
- submitted → rejected (by: BA-001-AC-002)
|
|
164
|
+
- approved → shipped (by: BA-001-AC-003, guard: stock available)
|
|
165
|
+
- **Expression** : `Order.Status ∈ allowedTransitions[currentStatus]`
|
|
166
|
+
- **Code d'erreur** : `orders.status.invalid-transition`
|
|
167
|
+
- **Cas valides** : commande draft → submitted par un commercial.
|
|
168
|
+
- **Cas invalides** : commande draft → approved (saute submitted).
|
|
169
|
+
- **Cas d'usage liés** : UC-CRM-ORDERS-COMMANDES-002 (étape 3)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Each `Flow` line is: `fromStatus → toStatus (by: <actor-code>[, guard: <condition>])`.
|
|
173
|
+
This structure is consumed by `/ba-create-screen` to populate `workflowTransition`
|
|
174
|
+
on custom actions, and by `/ba-create-prd` to emit the `## Workflow` section of
|
|
175
|
+
`prd.api.md`. Rules without a `Flow` line cannot be parsed for transitions.
|
|
176
|
+
|
|
177
|
+
## Scope — where does a rule attach?
|
|
178
|
+
|
|
179
|
+
Every rule attaches to exactly **one** node, identified by its `## Portée` line
|
|
180
|
+
and written in that node's `règles-métier.md`:
|
|
181
|
+
|
|
182
|
+
| Effective level | When | Doc that holds the rule |
|
|
183
|
+
|-----------------|------|-------------------------|
|
|
184
|
+
| **application** | Strategic/compliance rule spanning all modules (GDPR, audit, SLA) | `<APP>/règles-métier.md` |
|
|
185
|
+
| **module** | Domain-boundary rule (access, module-wide audit, monetary precision, status workflow) — most rules | `<APP>/<MODULE>/règles-métier.md` |
|
|
186
|
+
| **section** | Process/workflow rule for one user activity | `<APP>/<MODULE>/<section>/règles-métier.md` |
|
|
187
|
+
|
|
188
|
+
Resource/entity-level invariants are written at the **module** doc (the module is
|
|
189
|
+
where the data model is authoritative — see `entité.md`). A rule that touches two
|
|
190
|
+
sections of the same module is written **once at the module**, with its `## Portée`
|
|
191
|
+
naming both.
|
|
192
|
+
|
|
193
|
+
## Progressive workflow (read the level files for the heuristics)
|
|
194
|
+
|
|
195
|
+
Rules are captured in a context prelude + three progressive levels. Each level
|
|
196
|
+
enriches the rules and is **persisted by Writing the doc** before moving on.
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
Level 0 — CONTEXT (prelude, no Write)
|
|
200
|
+
Before proposing ANY rule, capture the legal/regulatory context so rules are
|
|
201
|
+
country-appropriate. Ask ONE closed question per turn with AskUserQuestion
|
|
202
|
+
(country → sector → company size → special regimes), waiting for each answer —
|
|
203
|
+
each dimension shapes the next. Recap in 2-3 lines, then enter Level 1. This
|
|
204
|
+
context lives in the conversation; it is NOT written to a doc. Re-ask only when
|
|
205
|
+
the scope opens onto a new jurisdiction or a rule cites an unjustified regulation.
|
|
206
|
+
|
|
207
|
+
Level 1 — IDENTIFY & CLASSIFY (see levels/identify.md)
|
|
208
|
+
Discover rules from the menu hierarchy, use cases, data model and domain
|
|
209
|
+
knowledge — grounded in the Level 0 context. Propose 5-10 candidates WITH type,
|
|
210
|
+
scope, priority, severity. User validates → Write the doc (rules may be drafts
|
|
211
|
+
without examples yet — fill them at Level 2 before handing off).
|
|
212
|
+
|
|
213
|
+
Level 2 — ELABORATE (see levels/elaborate.md)
|
|
214
|
+
For each rule: condition (QUAND…ALORS), expression (pseudo-code), error code,
|
|
215
|
+
AT LEAST 1 valid + 1 invalid example. User confirms → re-Write the doc.
|
|
216
|
+
|
|
217
|
+
Level 3 — LINK (see levels/link.md)
|
|
218
|
+
Map each rule to the use cases that reference it (stage + step). Rules with 0
|
|
219
|
+
UC links are valid. User confirms → re-Write the doc (final).
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Load the level file that matches where you are. For **access rules** (who-can-do-
|
|
223
|
+
what at the app/module boundary, materialising as permissions) see
|
|
224
|
+
`levels/access-rules.md`.
|
|
225
|
+
|
|
226
|
+
### Decision table
|
|
227
|
+
|
|
228
|
+
Read the menu tree and the scope's docs first, then match:
|
|
229
|
+
|
|
230
|
+
| State | Action |
|
|
231
|
+
|-------|--------|
|
|
232
|
+
| Menu tree empty | Defer → `/ba-create-menu` |
|
|
233
|
+
| No rules, use cases exist for the scope | Level 1 — IDENTIFY (menu hierarchy + UCs + data model) |
|
|
234
|
+
| No rules, no UCs, but menu/data model exist | Level 1 from menu hierarchy + data model |
|
|
235
|
+
| No rules, only policies/regulations mentioned | Level 1 from policies (compliance, retention, audit) |
|
|
236
|
+
| No rules, no context at all | Ask the user for context (domain, entities, policies, or UCs) |
|
|
237
|
+
| User names an application | Propose application-level rules (compliance, audit, strategic) |
|
|
238
|
+
| User names a module | Propose module-level rules (access, domain boundaries, audit) |
|
|
239
|
+
| Rules exist but most lack examples / condition | Level 2 — ELABORATE |
|
|
240
|
+
| Rules elaborated but UC links not refined | Level 3 — LINK |
|
|
241
|
+
| Rules complete | Light self-check, then hand off to `/ba-create-rbac` |
|
|
242
|
+
| User adds a single new rule | Pick its scope, write it into that doc — do not restart all levels |
|
|
243
|
+
| User modifies an existing rule | Adjust + re-Write the doc immediately |
|
|
244
|
+
| Informational question, no change | Answer in prose, no Write |
|
|
245
|
+
|
|
246
|
+
## Single-UC entry point
|
|
247
|
+
|
|
248
|
+
When the user references a specific UC code ("define the rules for
|
|
249
|
+
UC-CRM-PIPELINE-OPPORTUNITES-002"), work **only** on rules relevant to that UC:
|
|
250
|
+
|
|
251
|
+
1. Read the target UC in the scope's `use-case.md` (Grep the code) — its
|
|
252
|
+
preconditions, main flow, alternative/exception flows, postconditions, actor.
|
|
253
|
+
2. Read the scope's existing `règles-métier.md` — which rules already cover it.
|
|
254
|
+
3. Extract candidates: each precondition → `validation`; each computation step →
|
|
255
|
+
`calculation`; each state change → `state-transition`; each exception trigger
|
|
256
|
+
→ `constraint`; each postcondition invariant → `integrity`/`workflow`.
|
|
257
|
+
4. Deduplicate against existing rules — if one already covers the concern, just
|
|
258
|
+
add the UC link; otherwise create the rule (elaborated, with examples).
|
|
259
|
+
5. Re-Write the scope's doc with the full rule set (existing + new), so the
|
|
260
|
+
overwrite preserves everything.
|
|
261
|
+
|
|
262
|
+
## Self-check before writing (business-rules → RBAC gate)
|
|
263
|
+
|
|
264
|
+
Before each Write, verify each rule has: a well-formed `BR-{NNN}` code, a `Type`,
|
|
265
|
+
a `Portée`, and — at Level 2+ — a `Condition`, an `Expression`, and at least one
|
|
266
|
+
valid + one invalid example. Surface any gap to the user instead of writing a
|
|
267
|
+
half-defined rule. (The deep audit — conflicts, redundancy, missing examples,
|
|
268
|
+
BR-001..006 — is run by `/ba-audit-rules`, which reads the `règles-métier.md`
|
|
269
|
+
files and writes its verdict under the node's `_audit/`. You do **not** produce
|
|
270
|
+
audit findings here.)
|
|
271
|
+
|
|
272
|
+
## After writing → hand off to RBAC
|
|
273
|
+
|
|
274
|
+
Acknowledge in one line ("6 règles définies pour CRM / PIPELINE."). Per the fixed
|
|
275
|
+
order, the next phase is **RBAC** — propose continuing with `/ba-create-rbac`
|
|
276
|
+
(access rules you captured here pre-fill its matrix). Don't ask "what next?".
|
|
277
|
+
Convert any descendant `règles-métier.md` placeholders you encounter into the
|
|
278
|
+
one-line rollup pointer.
|
|
279
|
+
|
|
280
|
+
## Absolute prohibitions
|
|
281
|
+
|
|
282
|
+
1. **Never duplicate `/ba-create-rbac`.** RBAC matrices belong there. Rules may be
|
|
283
|
+
`ownership` or `access` typed, but never a plain "role X can do Y" matrix.
|
|
284
|
+
2. **Never write a Level 2+ rule without at least one valid AND one invalid
|
|
285
|
+
example.** If you cannot produce both, keep it a Level 1 draft until you can.
|
|
286
|
+
3. **Never fabricate references.** A rule cannot link a `UC-…` code, a section or
|
|
287
|
+
an entity that does not appear in the tree (Grep it; if absent, it does not
|
|
288
|
+
exist — offer to create it in the right phase).
|
|
289
|
+
4. **Never write a "TODO" rule.** A rule that says "to be defined later" pollutes
|
|
290
|
+
the vibecoding context. Either elaborate it now or do not write it.
|
|
291
|
+
5. **Never reuse a removed rule's number** in the same doc.
|
|
292
|
+
|
|
293
|
+
## Edge cases
|
|
294
|
+
|
|
295
|
+
| Situation | Action |
|
|
296
|
+
|-----------|--------|
|
|
297
|
+
| No UCs, no entities, no policies | Ask the user for context — do not speculate |
|
|
298
|
+
| No UCs but entities exist | Discover from the data model (`levels/identify.md`, Path B) |
|
|
299
|
+
| User pastes a regulation document | Extract rules, cite the source in the rule's context line |
|
|
300
|
+
| Rule applies to all UCs touching an entity | Link the 2-3 most representative UCs; note "applies to all CRUD" in prose |
|
|
301
|
+
| User wants to add one rule to a populated scope | Read the scope's doc, append the rule, re-Write the full set (overwrite preserves the rest) |
|
|
302
|
+
| User removes a rule | Re-Write the scope's doc without it (overwrite drops it); confirm first |
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: rules
|
|
3
|
+
kind: level
|
|
4
|
+
level: access-rules
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Level guide — access rules (rules that become permissions)
|
|
8
|
+
|
|
9
|
+
> Emit rules of type **`access`** — transverse rules that define *who can do what
|
|
10
|
+
> at the app or module boundary* and which `/ba-create-rbac` later materialises as
|
|
11
|
+
> concrete permissions. This complements `identify.md` Path E. It is consulted to
|
|
12
|
+
> distinguish access control from plain business logic.
|
|
13
|
+
|
|
14
|
+
## When to use `Type: access`
|
|
15
|
+
Use `access` when the rule answers **"who is allowed to do X on which scope?"** at
|
|
16
|
+
a structural level:
|
|
17
|
+
|
|
18
|
+
| Phrasing | Type |
|
|
19
|
+
|----------|------|
|
|
20
|
+
| "Only the record owner can update the quote" | `access`, scope `own` |
|
|
21
|
+
| "Only members of the sales team can view the pipeline" | `access`, scope `team` |
|
|
22
|
+
| "All authenticated users may read the public catalogue" | `access`, scope `all` |
|
|
23
|
+
| "Only managers may approve leave > 10 days" | `access`, scope `custom` |
|
|
24
|
+
| "A rep can only export leads from her region" | `access`, scope `custom` |
|
|
25
|
+
|
|
26
|
+
Do NOT use `access` for: "all mutations produce an audit trail" (`cross-cutting`),
|
|
27
|
+
"creator cannot approve own record" (`workflow` — segregation of duties), "stock
|
|
28
|
+
≥ 0" (`constraint`), "status draft→submitted" (`state-transition`), "email unique"
|
|
29
|
+
(`validation`).
|
|
30
|
+
|
|
31
|
+
**Discrimination test** — *"Would changing this rule require editing the RBAC
|
|
32
|
+
matrix?"* Yes → `access`. No → another type.
|
|
33
|
+
|
|
34
|
+
## The permission spec (carried in the rule)
|
|
35
|
+
An `access` rule names, in its body, the permission(s) it produces — a
|
|
36
|
+
forward-looking spec for the RBAC generator. Write it as a `## Permissions` block
|
|
37
|
+
inside the rule:
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
### BR-007 — Un client ne modifie que ses propres commandes
|
|
41
|
+
- **Type** : access
|
|
42
|
+
- **Sévérité** : err
|
|
43
|
+
- **Portée** : SALES / ORDERS
|
|
44
|
+
- **Condition** : QUAND un utilisateur modifie une commande ALORS user.id doit
|
|
45
|
+
égaler order.ownerId.
|
|
46
|
+
- **Expression** : `actor.id === target.ownerId`
|
|
47
|
+
- **Code d'erreur** : `ORDER_NOT_OWNER`
|
|
48
|
+
- **Cas valides** : le propriétaire X modifie sa commande O → accepté.
|
|
49
|
+
- **Cas invalides** : Y (non-propriétaire) modifie O → 403 `ORDER_NOT_OWNER`.
|
|
50
|
+
- **Cas d'usage liés** : —
|
|
51
|
+
- **Permissions** :
|
|
52
|
+
- acteur `BA-001-AC-003` (Client) · action `update` · cible `resource`
|
|
53
|
+
SALES / ORDERS / orders / Order · portée `own`
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Fields of a permission line
|
|
57
|
+
|
|
58
|
+
| Field | Values |
|
|
59
|
+
|-------|--------|
|
|
60
|
+
| acteur | an actor code from the app's `acteur.md` (pick from the catalog — do not invent) |
|
|
61
|
+
| action | `access` / `read` / `create` / `update` / `delete` / `export` / `import` / `approve` / `reject` / `assign` / `execute`. One action per line — emit several lines for several actions. |
|
|
62
|
+
| cible (targetLevel) | `application` / `module` / `section` / `resource` — at or below the rule's own scope (a module rule never materialises an app-level permission) + the scope path |
|
|
63
|
+
| portée (conditionScope) | `all` / `own` / `team` / `custom`. Use `custom` only when `own`/`team` cannot express it; then add the condition text ("actor.region == target.region"). |
|
|
64
|
+
|
|
65
|
+
A rule implying several actions (owners read + update + delete their orders) lists
|
|
66
|
+
**several permission lines** under one rule — keep one rule per concept.
|
|
67
|
+
|
|
68
|
+
## How access rules flow to RBAC
|
|
69
|
+
You **capture** the permission spec here (the `## Permissions` block); you do
|
|
70
|
+
**not** build the RBAC matrix — that is `/ba-create-rbac`'s job. After Writing the
|
|
71
|
+
rules, the handoff to `/ba-create-rbac` carries these specs so the matrix is
|
|
72
|
+
pre-filled. The rule records the *reason* (ownership, team, compliance); the RBAC
|
|
73
|
+
matrix records the *grant*.
|
|
74
|
+
|
|
75
|
+
## Example — proposing access rules for a module
|
|
76
|
+
Reading the `ORDERS` module + its `acteur.md`, propose in prose then ask via
|
|
77
|
+
AskUserQuestion (multi-select):
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
4 règles d'accès candidates pour ORDERS :
|
|
81
|
+
- BR-001 — Un client ne voit que ses commandes (Client, read, own)
|
|
82
|
+
- BR-002 — Un client ne modifie que ses commandes non expédiées (Client, update, own+custom)
|
|
83
|
+
- BR-003 — Les gestionnaires voient toutes les commandes (Back-office, read, all)
|
|
84
|
+
- BR-004 — Seul un manager annule une commande > 1000€ (Manager, approve, custom)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
After the user confirms, Write the module's `règles-métier.md` with each rule's
|
|
88
|
+
`## Permissions` block filled.
|
|
89
|
+
|
|
90
|
+
## Edge cases
|
|
91
|
+
|
|
92
|
+
| Situation | Action |
|
|
93
|
+
|-----------|--------|
|
|
94
|
+
| No actors yet (`acteur.md` empty/placeholder) | STOP. Access rules need actors — defer to `/ba-create-actors`. |
|
|
95
|
+
| Rule spans several actor roles | One rule per actor — do not multiplex the actor field. |
|
|
96
|
+
| `custom` scope but no clear condition text | Downgrade to `workflow` — `custom` is not a dumping ground. |
|
|
97
|
+
| Access rule at resource level | Allowed, but check it is not really a field-level `validation`. |
|
|
98
|
+
| User describes a permission, not a rule ("admins can do everything") | Skip the access rule, point at `/ba-create-rbac`. |
|
|
99
|
+
|
|
100
|
+
## Quality checks before writing
|
|
101
|
+
For each `access` rule: the `## Permissions` block is present and non-empty; each
|
|
102
|
+
actor exists in `acteur.md`; the target level is at or below the rule's scope; the
|
|
103
|
+
scope path is complete; `portée` is `all`/`own`/`team`/`custom` (custom carries a
|
|
104
|
+
condition text); the rule still has ≥1 valid + ≥1 invalid example; the rule sits
|
|
105
|
+
at application or module scope (challenge it if pushed lower).
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: rules
|
|
3
|
+
kind: level
|
|
4
|
+
level: elaborate
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Level 2 — ELABORATE
|
|
8
|
+
|
|
9
|
+
> Turn a classified rule (Level 1) into a vibecoding-ready specification:
|
|
10
|
+
> a natural `Condition`, a pseudo-code `Expression`, an error code, and
|
|
11
|
+
> **at least one valid + one invalid example**. This is the most important
|
|
12
|
+
> level — the quality of the generated code and tests depends on it. Persist
|
|
13
|
+
> by re-Writing the scope's `règles-métier.md` (see `SKILL.md`).
|
|
14
|
+
|
|
15
|
+
## Anatomy of a complete rule
|
|
16
|
+
|
|
17
|
+
### Condition — natural language QUAND…ALORS / WHEN…THEN
|
|
18
|
+
Always `QUAND <trigger> ALORS <constraint>`. Unambiguous, no passive voice,
|
|
19
|
+
reference fields by name.
|
|
20
|
+
|
|
21
|
+
| Weak | Strong |
|
|
22
|
+
|------|--------|
|
|
23
|
+
| "Users are validated" | "QUAND un utilisateur est créé/modifié ALORS son email doit être unique parmi les non-supprimés" |
|
|
24
|
+
| "Status check" | "QUAND le statut d'une commande change ALORS le nouveau statut doit être un successeur valide" |
|
|
25
|
+
| "Auto compute" | "QUAND une ligne de facture est ajoutée ALORS sous-total = quantité × prix unitaire" |
|
|
26
|
+
|
|
27
|
+
### Expression — pseudo-code
|
|
28
|
+
Compact, deterministic, a developer can implement without guessing (SQL-like,
|
|
29
|
+
C#-like or math). It is a hint, not a contract.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
// uniqueness
|
|
33
|
+
NOT EXISTS(SELECT 1 FROM users WHERE LOWER(email)=LOWER(@email) AND id!=@id AND deleted_at IS NULL)
|
|
34
|
+
// calculation
|
|
35
|
+
vatAmount = round(baseAmount * vatRate, 2)
|
|
36
|
+
// state transition
|
|
37
|
+
@to IN { draft:[submitted,cancelled], submitted:[shipped,cancelled], shipped:[delivered] }[@from]
|
|
38
|
+
// ownership
|
|
39
|
+
@user.id == @ticket.assigneeId OR 'manager' IN @user.roles
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Error code — stable, namespaced
|
|
43
|
+
`lower.dotted` (matching the module, e.g. `pipeline.discount.cap`) or
|
|
44
|
+
`UPPER_SNAKE` (`USER_EMAIL_DUPLICATE`). Namespaced by module/entity.
|
|
45
|
+
|
|
46
|
+
## Examples — the heart of the rule
|
|
47
|
+
|
|
48
|
+
Each rule MUST have at least **1 valid** and **1 invalid** example. Non-negotiable
|
|
49
|
+
(both the success and the failure path are needed to generate meaningful tests).
|
|
50
|
+
Write them as concrete one-liners under `## Cas valides` / `## Cas invalides`, in
|
|
51
|
+
Given/When/Then form when it helps:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
- Email unique : aucun utilisateur 'alice@x.com' n'existe → POST /users {email:'alice@x.com'} → 201 créé.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Two patterns: enforcement vs filter/visibility
|
|
58
|
+
|
|
59
|
+
**Enforcement rule** — declares an error code. The invariant rejects an action;
|
|
60
|
+
the invalid example names the error (e.g. "→ 409 `USER_EMAIL_DUPLICATE`").
|
|
61
|
+
Examples: uniqueness, illegal transition, ownership check.
|
|
62
|
+
|
|
63
|
+
**Filter / visibility rule** — **no error code** (leave it blank). The invariant
|
|
64
|
+
silently excludes records (repository WHERE clause, soft-delete guard,
|
|
65
|
+
anonymisation tombstone, tenant isolation). There is no user-facing error — the
|
|
66
|
+
record is simply absent. The invalid example describes the **observable absence**
|
|
67
|
+
("le contact n'apparaît PAS dans les résultats — filtré au niveau repository"),
|
|
68
|
+
never a fake error.
|
|
69
|
+
|
|
70
|
+
| Pattern | Rule error code | Invalid example |
|
|
71
|
+
|---------|:---------------:|-----------------|
|
|
72
|
+
| Enforcement | present | names the expected error |
|
|
73
|
+
| Filter/visibility | blank | observable absence, no error |
|
|
74
|
+
|
|
75
|
+
### Numbering rules — the extra spec
|
|
76
|
+
|
|
77
|
+
A `numbering` rule defines how an entity's business code/reference is
|
|
78
|
+
**generated** (not merely validated). Beyond the standard fields, capture in the
|
|
79
|
+
Condition + Expression:
|
|
80
|
+
|
|
81
|
+
- **Format** — a template of literals + tokens, e.g. `AFF-{YY}-{SEQ:4}` (`{YY}` /
|
|
82
|
+
`{YYYY}` year, `{MM}` month, `{SEQ:n}` zero-padded counter, `{TENANT}`…).
|
|
83
|
+
- **Sequence scope** — what the counter is partitioned by: `tenant` (default for
|
|
84
|
+
tenant-isolated data), `global` (platform-wide), or `parent:<Entity>` (sub-count
|
|
85
|
+
inside a parent). MUST be consistent with the entity's `tenantMode`.
|
|
86
|
+
- **Reset** — when the counter restarts: `none` / `yearly` / `monthly` / `daily`.
|
|
87
|
+
A reset MUST align with a matching date token in the format (yearly ⇒ `{YY}`).
|
|
88
|
+
- **Gapless** — `true` (no gaps allowed — legal/accounting; needs transactional
|
|
89
|
+
allocation) or `false` (gaps tolerated — faster, e.g. on rollback).
|
|
90
|
+
- **Immutable** — once assigned the code never changes (state it in the rule).
|
|
91
|
+
|
|
92
|
+
These map 1:1 to the data-model `codePattern` (`create-data-model`) and drive the
|
|
93
|
+
sequence allocator the Studio provides at runtime. The valid examples MUST show the
|
|
94
|
+
sequence **progressing** and the **reset boundary**; an invalid example MUST show
|
|
95
|
+
**no duplicate** under concurrency / across tenants.
|
|
96
|
+
|
|
97
|
+
```markdown
|
|
98
|
+
### BR-007 — Numéro de demande
|
|
99
|
+
- **Type** : numbering
|
|
100
|
+
- **Sévérité** : err
|
|
101
|
+
- **Portée** : RH / DEMANDES
|
|
102
|
+
- **Condition** : QUAND une demande est créée ALORS son numéro = `AFF-{YY}-{NNNN}`
|
|
103
|
+
(séquence par tenant, remise à zéro chaque année, sans trou, immuable).
|
|
104
|
+
- **Expression** : `reference = "AFF-" + fmt(year,"yy") + "-" + pad(nextSeq(scope=tenant, reset=yearly), 4)`
|
|
105
|
+
- **Code d'erreur** : `demande.reference.duplicate`
|
|
106
|
+
- **Cas valides** :
|
|
107
|
+
- 1re demande 2026 (tenant A) → `AFF-26-0001` ; suivante → `AFF-26-0002`.
|
|
108
|
+
- 1re demande 2027 → `AFF-27-0001` (reset annuel).
|
|
109
|
+
- 1re demande tenant B en 2026 → `AFF-26-0001` (séquence isolée par tenant).
|
|
110
|
+
- **Cas invalides** :
|
|
111
|
+
- Deux créations concurrentes → JAMAIS le même numéro (allocation atomique).
|
|
112
|
+
- Numéro modifié après création → rejeté (immuable).
|
|
113
|
+
- **Cas d'usage liés** : UC-RH-DEMANDES-001 (postcondition)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Coverage — aim for 3–5 on rules with edge cases
|
|
117
|
+
1 valid happy path · 1 invalid clear failure · 1 invalid edge case · 1 valid edge
|
|
118
|
+
case on the right side. Pick 2–3 relevant edge cases per type:
|
|
119
|
+
|
|
120
|
+
| Type | Edge cases worth covering |
|
|
121
|
+
|------|---------------------------|
|
|
122
|
+
| `validation` | null, empty, max length, format mismatch, case-insensitive duplicate, whitespace-only |
|
|
123
|
+
| `calculation` | zero, negatives, rounding (2 vs 4 decimals), currency conversion, division by zero |
|
|
124
|
+
| `state-transition` | same-state (idempotent?), skipped state, concurrent transition, terminal state, re-entry |
|
|
125
|
+
| `ownership` | owner ok, manager bypass, deactivated owner, ownership transfer, service account |
|
|
126
|
+
| `constraint` | exactly at limit, just-above, just-below, zero, negative, null vs 0 |
|
|
127
|
+
| `derivation` | missing/empty inputs, recompute on update vs create |
|
|
128
|
+
| `workflow` | threshold exactly at boundary, multiple approvers, delegation, timeout |
|
|
129
|
+
| `integrity` | soft-deleted parent, cascade delete, circular/self FK, orphaned children |
|
|
130
|
+
| `cross-cutting` | system operation with no user, batch of N, async, retry |
|
|
131
|
+
| `compliance` | retention expiry, erasure conflict, cross-border transfer, retroactive change |
|
|
132
|
+
| `numbering` | first-of-period, sequence progression, per-tenant isolation, reset boundary (year rollover), concurrent allocation (no duplicate/gap if gapless) |
|
|
133
|
+
|
|
134
|
+
Application-level rules: cover inter-module scenarios (audit trail across modules
|
|
135
|
+
A→B). Module-level: show both authorized and unauthorized access patterns.
|
|
136
|
+
|
|
137
|
+
## Worked example — a fully elaborated rule (doc form)
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
### BR-001 — Email unique
|
|
141
|
+
- **Type** : validation
|
|
142
|
+
- **Sévérité** : err
|
|
143
|
+
- **Portée** : HR / EMPLOYEES
|
|
144
|
+
- **Condition** : QUAND un utilisateur est créé/modifié ALORS son email ne doit
|
|
145
|
+
matcher aucun email d'utilisateur non-supprimé (insensible à la casse).
|
|
146
|
+
- **Expression** : `NOT EXISTS(SELECT 1 FROM users WHERE LOWER(email)=LOWER(@email) AND id!=@id AND deleted_at IS NULL)`
|
|
147
|
+
- **Code d'erreur** : `USER_EMAIL_DUPLICATE`
|
|
148
|
+
- **Cas valides** :
|
|
149
|
+
- Aucun 'alice@x.com' → créer {email:'alice@x.com'} → 201 créé.
|
|
150
|
+
- Email d'un utilisateur soft-deleted réutilisable → 201 créé (tombstone).
|
|
151
|
+
- **Cas invalides** :
|
|
152
|
+
- 'bob@x.com' existe → créer {email:'bob@x.com'} → 409 `USER_EMAIL_DUPLICATE`.
|
|
153
|
+
- 'BOB@X.COM' → 409 `USER_EMAIL_DUPLICATE` (comparaison insensible à la casse).
|
|
154
|
+
- **Cas d'usage liés** : UC-HR-EMPLOYEES-DIRECTORY-001 (précondition)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Filter-rule variant — `Code d'erreur` blank, invalid case = absence:
|
|
158
|
+
|
|
159
|
+
```markdown
|
|
160
|
+
### BR-014 — Contacts anonymisés exclus des recherches
|
|
161
|
+
- **Type** : constraint
|
|
162
|
+
- **Sévérité** : err
|
|
163
|
+
- **Portée** : CRM / CONTACTS
|
|
164
|
+
- **Condition** : QUAND une recherche de contacts s'exécute ALORS les contacts
|
|
165
|
+
avec `anonymizedAt` non nul sont exclus.
|
|
166
|
+
- **Expression** : `WHERE contact.anonymizedAt IS NULL`
|
|
167
|
+
- **Code d'erreur** : —
|
|
168
|
+
- **Cas valides** : contact actif (anonymizedAt null) → présent dans la réponse.
|
|
169
|
+
- **Cas invalides** : contact anonymisé → ABSENT de la réponse (filtré au
|
|
170
|
+
niveau repository, aucune erreur renvoyée).
|
|
171
|
+
- **Cas d'usage liés** : —
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Workflow
|
|
175
|
+
1. Pick the next rule with no examples (or no condition).
|
|
176
|
+
2. Fill `Condition`, `Expression`, `Code d'erreur` (blank for filter rules).
|
|
177
|
+
3. Write the valid example(s) first (the happy path), then the invalid one(s).
|
|
178
|
+
4. Review: could a developer with no context turn this into code AND a test? If
|
|
179
|
+
not, add detail.
|
|
180
|
+
5. Repeat for all rules at the scope, then re-Write the doc with the full set.
|
|
181
|
+
|
|
182
|
+
## Ask the user only when truly ambiguous
|
|
183
|
+
You usually have enough context to draft. Ask (via AskUserQuestion, 2–4 closed
|
|
184
|
+
options) only for: a choice between two plausible error codes; a threshold
|
|
185
|
+
constant ("max discount: 50 / 100 / no limit"); or an edge-case decision
|
|
186
|
+
("soft-deleted users still block email reuse, or release it?").
|
|
187
|
+
|
|
188
|
+
## Quality checks before writing
|
|
189
|
+
For every rule: `Condition` is `QUAND…ALORS`; `Expression` is non-empty; the
|
|
190
|
+
pattern is identified (enforcement → error code + invalid examples name it;
|
|
191
|
+
filter → error code blank + invalid examples describe absence); every example has
|
|
192
|
+
a concrete given/when/then; at least 1 valid + 1 invalid; a developer could code
|
|
193
|
+
it and test it.
|