cabloy 5.1.60 → 5.1.62
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/.claude/hooks/contract-loop-gate.ts +296 -0
- package/.claude/settings.json +16 -0
- package/.claude/skills/cabloy-backend-scaffold/SKILL.md +2 -0
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -0
- package/.claude/skills/cabloy-contract-loop/SKILL.md +89 -16
- package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +102 -14
- package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +4 -0
- package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -14
- package/.claude/skills/cabloy-domain-planning/SKILL.md +212 -0
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +13 -0
- package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +2 -0
- package/.claude/skills/cabloy-module-removal/SKILL.md +144 -0
- package/.claude/skills/cabloy-resource-field-update/SKILL.md +7 -0
- package/.claude/skills/cabloy-zova-source-reading/SKILL.md +221 -0
- package/.claude/skills/cabloy-zova-source-reading/references/analysis-modes.md +91 -0
- package/.claude/skills/cabloy-zova-source-reading/references/core-reading-paths.md +117 -0
- package/CHANGELOG.md +64 -0
- package/CLAUDE.md +11 -0
- package/cabloy-docs/.vitepress/config.mjs +197 -5
- package/cabloy-docs/ai/cli-to-skill-map.md +7 -0
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +22 -0
- package/cabloy-docs/ai/future-skill-roadmap.md +12 -7
- package/cabloy-docs/ai/introduction.md +1 -0
- package/cabloy-docs/ai/playbook-backend-module.md +6 -0
- package/cabloy-docs/ai/playbook-module-removal.md +164 -0
- package/cabloy-docs/ai/skills.md +12 -0
- package/cabloy-docs/backend/backend-contract-emission-output-inspection.md +189 -0
- package/cabloy-docs/backend/backend-contract-emission-source-reading-map.md +160 -0
- package/cabloy-docs/backend/backend-contract-emission-specimen.md +170 -0
- package/cabloy-docs/backend/backend-resource-module-contract-chain.md +323 -0
- package/cabloy-docs/backend/backend-source-reading-debug-checklist.md +173 -0
- package/cabloy-docs/backend/backend-source-reading-roadmap.md +129 -0
- package/cabloy-docs/backend/backend-source-reading-verify-playbook.md +166 -0
- package/cabloy-docs/backend/bean-scene-authoring.md +4 -4
- package/cabloy-docs/backend/broadcast-guide.md +3 -3
- package/cabloy-docs/backend/cli.md +20 -11
- package/cabloy-docs/backend/config-guide.md +4 -4
- package/cabloy-docs/backend/controller-aop-guide.md +10 -10
- package/cabloy-docs/backend/controller-guide.md +12 -2
- package/cabloy-docs/backend/crud-workflow.md +7 -3
- package/cabloy-docs/backend/dto-guide.md +18 -2
- package/cabloy-docs/backend/dto-infer-generation.md +201 -25
- package/cabloy-docs/backend/election-guide.md +2 -2
- package/cabloy-docs/backend/entity-guide.md +30 -3
- package/cabloy-docs/backend/error-guide.md +3 -3
- package/cabloy-docs/backend/event-guide.md +4 -4
- package/cabloy-docs/backend/external-aop-guide.md +2 -2
- package/cabloy-docs/backend/field-indexes.md +9 -3
- package/cabloy-docs/backend/foundation.md +8 -8
- package/cabloy-docs/backend/i18n-guide.md +6 -6
- package/cabloy-docs/backend/internal-aop-guide.md +2 -2
- package/cabloy-docs/backend/introduction.md +15 -0
- package/cabloy-docs/backend/migration-and-changes.md +3 -3
- package/cabloy-docs/backend/model-guide.md +16 -6
- package/cabloy-docs/backend/openapi-guide.md +3 -0
- package/cabloy-docs/backend/queue-guide.md +3 -3
- package/cabloy-docs/backend/redlock-guide.md +2 -2
- package/cabloy-docs/backend/schedule-guide.md +2 -2
- package/cabloy-docs/backend/scripts.md +8 -0
- package/cabloy-docs/backend/serialization-guide.md +12 -2
- package/cabloy-docs/backend/service-guide.md +18 -9
- package/cabloy-docs/backend/startup-guide.md +5 -5
- package/cabloy-docs/backend/status-guide.md +271 -0
- package/cabloy-docs/backend/unit-testing.md +3 -3
- package/cabloy-docs/backend/vona-source-reading-map.md +157 -0
- package/cabloy-docs/backend/websocket-protocol-guide.md +5 -5
- package/cabloy-docs/backend/websocket-usage-guide.md +15 -8
- package/cabloy-docs/frontend/a-model-under-the-hood.md +281 -0
- package/cabloy-docs/frontend/a-openapi-under-the-hood.md +248 -0
- package/cabloy-docs/frontend/a-router-guide.md +307 -0
- package/cabloy-docs/frontend/api-guide.md +6 -4
- package/cabloy-docs/frontend/api-schema-guide.md +1 -0
- package/cabloy-docs/frontend/app-startup-guide.md +7 -4
- package/cabloy-docs/frontend/bean-scene-authoring.md +3 -1
- package/cabloy-docs/frontend/behavior-guide.md +16 -16
- package/cabloy-docs/frontend/cli.md +14 -2
- package/cabloy-docs/frontend/command-scene-authoring.md +504 -0
- package/cabloy-docs/frontend/component-guide.md +5 -5
- package/cabloy-docs/frontend/component-props-guide.md +1 -1
- package/cabloy-docs/frontend/component-v-model-guide.md +2 -2
- package/cabloy-docs/frontend/design-principles.md +6 -0
- package/cabloy-docs/frontend/fetch-interceptor-guide.md +440 -0
- package/cabloy-docs/frontend/filter-query-select-data-flow-guide.md +260 -0
- package/cabloy-docs/frontend/form-guide.md +786 -0
- package/cabloy-docs/frontend/form-scene-to-page-meta-guide.md +303 -0
- package/cabloy-docs/frontend/foundation.md +33 -0
- package/cabloy-docs/frontend/frontend-source-reading-roadmap.md +249 -0
- package/cabloy-docs/frontend/generated-contract-consumption-debug-checklist.md +190 -0
- package/cabloy-docs/frontend/generated-contract-consumption-entry-branch.md +205 -0
- package/cabloy-docs/frontend/generated-contract-consumption-list-branch.md +157 -0
- package/cabloy-docs/frontend/generated-contract-consumption-specimen.md +203 -0
- package/cabloy-docs/frontend/generated-contract-consumption-verify-playbook.md +189 -0
- package/cabloy-docs/frontend/generic-component-guide.md +1 -1
- package/cabloy-docs/frontend/introduction.md +38 -5
- package/cabloy-docs/frontend/ioc-and-beans.md +6 -0
- package/cabloy-docs/frontend/mock-guide.md +1 -0
- package/cabloy-docs/frontend/model-architecture.md +288 -39
- package/cabloy-docs/frontend/model-resource-best-practices.md +379 -0
- package/cabloy-docs/frontend/model-resource-cookbook.md +508 -0
- package/cabloy-docs/frontend/model-resource-internals-deep-dive.md +238 -0
- package/cabloy-docs/frontend/model-resource-owner-pattern.md +402 -0
- package/cabloy-docs/frontend/model-resource-usage-guide.md +334 -0
- package/cabloy-docs/frontend/model-state-guide.md +371 -15
- package/cabloy-docs/frontend/module-scope.md +8 -8
- package/cabloy-docs/frontend/modules-and-suites.md +2 -1
- package/cabloy-docs/frontend/navigation-guards-guide.md +7 -0
- package/cabloy-docs/frontend/openapi-sdk-guide.md +17 -6
- package/cabloy-docs/frontend/page-guide.md +15 -9
- package/cabloy-docs/frontend/page-meta-guide.md +466 -0
- package/cabloy-docs/frontend/page-params-guide.md +3 -3
- package/cabloy-docs/frontend/page-query-guide.md +2 -2
- package/cabloy-docs/frontend/page-route-guide.md +6 -0
- package/cabloy-docs/frontend/permission-formscene-action-visibility-guide.md +263 -0
- package/cabloy-docs/frontend/quickstart.md +18 -2
- package/cabloy-docs/frontend/reading-zova-for-vue-developers.md +266 -0
- package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +271 -0
- package/cabloy-docs/frontend/resource-list-page-deep-dive.md +279 -0
- package/cabloy-docs/frontend/rest-resource-source-reading-map.md +522 -0
- package/cabloy-docs/frontend/rest-resource-under-the-hood.md +622 -0
- package/cabloy-docs/frontend/root-behaviors-guide.md +282 -0
- package/cabloy-docs/frontend/route-alias-guide.md +6 -0
- package/cabloy-docs/frontend/router-stack-guide.md +229 -0
- package/cabloy-docs/frontend/router-tabs-introduction.md +26 -3
- package/cabloy-docs/frontend/router-tabs-layout-integration.md +367 -0
- package/cabloy-docs/frontend/router-tabs-mechanism.md +6 -0
- package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +7 -0
- package/cabloy-docs/frontend/router-tabs-vs-stack.md +167 -0
- package/cabloy-docs/frontend/router-view-hosts-guide.md +450 -0
- package/cabloy-docs/frontend/server-data.md +4 -1
- package/cabloy-docs/frontend/system-startup-guide.md +2 -2
- package/cabloy-docs/frontend/table-action-visibility-permission-flow-guide.md +263 -0
- package/cabloy-docs/frontend/table-cell-cookbook.md +568 -0
- package/cabloy-docs/frontend/table-guide.md +373 -0
- package/cabloy-docs/frontend/table-resource-crud-cookbook.md +496 -0
- package/cabloy-docs/frontend/zova-app-guide.md +251 -0
- package/cabloy-docs/frontend/zova-form-source-reading-map.md +293 -0
- package/cabloy-docs/frontend/zova-form-under-the-hood.md +561 -0
- package/cabloy-docs/frontend/zova-reactivity-under-the-hood.md +320 -0
- package/cabloy-docs/frontend/zova-router-under-the-hood.md +561 -0
- package/cabloy-docs/frontend/zova-source-reading-map.md +421 -0
- package/cabloy-docs/frontend/zova-table-controller-render-supplement.md +225 -0
- package/cabloy-docs/frontend/zova-table-source-reading-map.md +317 -0
- package/cabloy-docs/frontend/zova-table-under-the-hood.md +532 -0
- package/cabloy-docs/frontend/zova-vs-vue3-comparison.md +308 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +245 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +139 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +248 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions.md +511 -0
- package/cabloy-docs/fullstack/contract-loop-playbook.md +356 -0
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +6 -0
- package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +199 -23
- package/cabloy-docs/fullstack/introduction.md +15 -1
- package/cabloy-docs/fullstack/openapi-to-sdk.md +135 -11
- package/cabloy-docs/fullstack/suites-and-modules.md +333 -0
- package/cabloy-docs/fullstack/tutorial-1-first-module.md +3 -0
- package/cabloy-docs/fullstack/tutorial-2-first-crud.md +4 -0
- package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +6 -2
- package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +60 -23
- package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +14 -7
- package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +6 -0
- package/cabloy-docs/fullstack/tutorials-overview.md +17 -4
- package/cabloy-docs/reference/bean-scene-boilerplates.md +15 -13
- package/cabloy-docs/reference/package-map.md +4 -3
- package/package.json +2 -1
- package/scripts/init.ts +2 -18
- package/scripts/initTestData.ts +25 -0
- package/scripts/upgrade.ts +17 -2
- package/vona/pnpm-lock.yaml +48 -194
- package/vona/src/suite/a-training/modules/training-student/package.json +53 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +400 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +18 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/meta.index.ts +12 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +21 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/ssrMenu.student.ts +29 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +15 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +15 -0
- package/vona/src/suite/a-training/modules/training-student/src/controller/student.ts +74 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +28 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx +44 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx +11 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +45 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +42 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +28 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +25 -0
- package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +84 -0
- package/vona/src/suite/a-training/modules/training-student/src/index.ts +2 -0
- package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +10 -0
- package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +57 -0
- package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +173 -0
- package/vona/src/suite/a-training/modules/training-student/tsconfig.build.json +11 -0
- package/vona/src/suite/a-training/modules/training-student/tsconfig.json +7 -0
- package/vona/src/suite/a-training/package.json +12 -0
- package/vona/src/suite/a-training/tsconfig.base.json +4 -0
- package/vona/src/suite/a-training/tsconfig.json +10 -0
- package/zova/packages-cli/cli/package.json +2 -2
- package/zova/packages-cli/cli-set-front/cli/templates/openapi/config/boilerplate/module/openapi.config.ts +6 -1
- package/zova/packages-cli/cli-set-front/package.json +1 -1
- package/zova/packages-cli/cli-set-front/src/lib/bean/cli.openapi.generate.ts +34 -4
- package/zova/packages-zova/zova/package.json +2 -2
- package/zova/pnpm-lock.yaml +416 -690
- package/zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/package.json +52 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/component/formFieldLevel.ts +31 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +258 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +7 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/baseURL.ts +5 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/index.ts +3 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +196 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +4146 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts +151 -0
- package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +43 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +51 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +56 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.level.tsx +63 -0
- package/zova/src/suite/a-training/modules/training-student/src/component/formFieldLevel/controller.tsx +117 -0
- package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/src/index.ts +2 -0
- package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +42 -0
- package/zova/src/suite/a-training/modules/training-student/tsconfig.build.json +13 -0
- package/zova/src/suite/a-training/modules/training-student/tsconfig.json +5 -0
- package/zova/src/suite/a-training/package.json +12 -0
- package/zova/src/suite/a-training/tsconfig.base.json +4 -0
- package/zova/src/suite/a-training/tsconfig.json +4 -0
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +29 -7
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/select/controller.tsx +34 -11
- package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +3 -3
- package/zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.ts +1 -1
- package/zova/src/suite-vendor/a-zova/package.json +2 -2
|
@@ -23,6 +23,7 @@ const aiItems = [
|
|
|
23
23
|
{ text: 'Playbook: Backend Module', link: '/ai/playbook-backend-module' },
|
|
24
24
|
{ text: 'Playbook: Frontend Page', link: '/ai/playbook-frontend-page' },
|
|
25
25
|
{ text: 'Playbook: Contract Regeneration', link: '/ai/playbook-contract-regeneration' },
|
|
26
|
+
{ text: 'Playbook: Module Removal', link: '/ai/playbook-module-removal' },
|
|
26
27
|
{ text: 'Playbook: Metadata Refresh', link: '/ai/playbook-metadata-refresh' },
|
|
27
28
|
{ text: 'CLI for Agents', link: '/ai/cli-for-agents' },
|
|
28
29
|
{ text: 'Rules and Config', link: '/ai/rules-and-config' },
|
|
@@ -37,6 +38,7 @@ const fullstackGroups = [
|
|
|
37
38
|
items: [
|
|
38
39
|
{ text: 'Introduction', link: '/fullstack/introduction' },
|
|
39
40
|
{ text: 'Quickstart', link: '/fullstack/quickstart' },
|
|
41
|
+
{ text: 'Suites and Modules', link: '/fullstack/suites-and-modules' },
|
|
40
42
|
],
|
|
41
43
|
},
|
|
42
44
|
{
|
|
@@ -50,12 +52,16 @@ const fullstackGroups = [
|
|
|
50
52
|
link: '/fullstack/tutorial-3-frontend-metadata-sharing',
|
|
51
53
|
},
|
|
52
54
|
{
|
|
53
|
-
text: 'Tutorial 4:
|
|
54
|
-
link: '/fullstack/tutorial-4-
|
|
55
|
+
text: 'Tutorial 4: Custom Form/Table Renderers for Level',
|
|
56
|
+
link: '/fullstack/tutorial-4-custom-level-renderers',
|
|
55
57
|
},
|
|
56
58
|
{
|
|
57
|
-
text: 'Tutorial 5:
|
|
58
|
-
link: '/fullstack/tutorial-5-
|
|
59
|
+
text: 'Tutorial 5: Backend Contract Sharing',
|
|
60
|
+
link: '/fullstack/tutorial-5-backend-contract-sharing',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
text: 'Tutorial 6: One Contract Surface, Four Uses',
|
|
64
|
+
link: '/fullstack/tutorial-6-one-contract-four-uses',
|
|
59
65
|
},
|
|
60
66
|
],
|
|
61
67
|
},
|
|
@@ -75,6 +81,23 @@ const fullstackGroups = [
|
|
|
75
81
|
},
|
|
76
82
|
{ text: 'Framework Performance', link: '/fullstack/framework-performance' },
|
|
77
83
|
{ text: 'Vona + Zova Integration', link: '/fullstack/vona-zova-integration' },
|
|
84
|
+
{ text: 'Contract Loop Playbook', link: '/fullstack/contract-loop-playbook' },
|
|
85
|
+
{
|
|
86
|
+
text: 'Backend Metadata to Frontend Table Actions',
|
|
87
|
+
link: '/fullstack/backend-metadata-to-frontend-table-actions',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
text: 'Backend Metadata to Frontend Table Actions Verify Playbook',
|
|
91
|
+
link: '/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
text: 'Backend Metadata to Frontend Table Actions Debug Checklist',
|
|
95
|
+
link: '/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
text: 'Backend Metadata to Frontend Table Actions Source Reading Map',
|
|
99
|
+
link: '/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map',
|
|
100
|
+
},
|
|
78
101
|
{ text: 'Backend OpenAPI to Frontend SDK', link: '/fullstack/openapi-to-sdk' },
|
|
79
102
|
{
|
|
80
103
|
text: 'Frontend Metadata Back to Backend',
|
|
@@ -160,6 +183,19 @@ export default defineConfig({
|
|
|
160
183
|
{ text: 'Foundation', link: '/backend/foundation' },
|
|
161
184
|
{ text: 'Backend Essentials', link: '/backend/backend-essentials' },
|
|
162
185
|
{ text: 'Quickstart', link: '/backend/quickstart' },
|
|
186
|
+
{
|
|
187
|
+
text: 'Backend Source Reading Roadmap',
|
|
188
|
+
link: '/backend/backend-source-reading-roadmap',
|
|
189
|
+
},
|
|
190
|
+
{ text: 'Vona Source Reading Map', link: '/backend/vona-source-reading-map' },
|
|
191
|
+
{
|
|
192
|
+
text: 'Backend Source Reading Verify Playbook',
|
|
193
|
+
link: '/backend/backend-source-reading-verify-playbook',
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
text: 'Backend Source Reading Debug Checklist',
|
|
197
|
+
link: '/backend/backend-source-reading-debug-checklist',
|
|
198
|
+
},
|
|
163
199
|
],
|
|
164
200
|
},
|
|
165
201
|
{
|
|
@@ -212,6 +248,10 @@ export default defineConfig({
|
|
|
212
248
|
{ text: 'Model Guide', link: '/backend/model-guide' },
|
|
213
249
|
{ text: 'Entity Guide', link: '/backend/entity-guide' },
|
|
214
250
|
{ text: 'DTO Guide', link: '/backend/dto-guide' },
|
|
251
|
+
{
|
|
252
|
+
text: 'Backend Resource/Module Contract Chain',
|
|
253
|
+
link: '/backend/backend-resource-module-contract-chain',
|
|
254
|
+
},
|
|
215
255
|
],
|
|
216
256
|
},
|
|
217
257
|
{
|
|
@@ -243,6 +283,7 @@ export default defineConfig({
|
|
|
243
283
|
{ text: 'Queue Guide', link: '/backend/queue-guide' },
|
|
244
284
|
{ text: 'Election Guide', link: '/backend/election-guide' },
|
|
245
285
|
{ text: 'Schedule Guide', link: '/backend/schedule-guide' },
|
|
286
|
+
{ text: 'Status Guide', link: '/backend/status-guide' },
|
|
246
287
|
{ text: 'Worker Guide', link: '/backend/worker-guide' },
|
|
247
288
|
{ text: 'Broadcast Guide', link: '/backend/broadcast-guide' },
|
|
248
289
|
{ text: 'Web Socket Guide', link: '/backend/websocket-guide' },
|
|
@@ -256,6 +297,18 @@ export default defineConfig({
|
|
|
256
297
|
text: 'API & Testing',
|
|
257
298
|
items: [
|
|
258
299
|
{ text: 'OpenAPI Guide', link: '/backend/openapi-guide' },
|
|
300
|
+
{
|
|
301
|
+
text: 'Backend Contract Emission Specimen',
|
|
302
|
+
link: '/backend/backend-contract-emission-specimen',
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
text: 'Backend Contract Emission Source Reading Map',
|
|
306
|
+
link: '/backend/backend-contract-emission-source-reading-map',
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
text: 'Backend Contract Emission Output Inspection',
|
|
310
|
+
link: '/backend/backend-contract-emission-output-inspection',
|
|
311
|
+
},
|
|
259
312
|
{ text: 'DTO Infer and Generation', link: '/backend/dto-infer-generation' },
|
|
260
313
|
{ text: 'Unit Testing', link: '/backend/unit-testing' },
|
|
261
314
|
],
|
|
@@ -268,6 +321,26 @@ export default defineConfig({
|
|
|
268
321
|
{ text: 'Introduction', link: '/frontend/introduction' },
|
|
269
322
|
{ text: 'Quickstart', link: '/frontend/quickstart' },
|
|
270
323
|
{ text: 'Foundation', link: '/frontend/foundation' },
|
|
324
|
+
{
|
|
325
|
+
text: 'Reading Zova for Vue Developers',
|
|
326
|
+
link: '/frontend/reading-zova-for-vue-developers',
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
text: 'Zova vs Vue 3 Comparison',
|
|
330
|
+
link: '/frontend/zova-vs-vue3-comparison',
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
text: 'Zova Reactivity Under the Hood',
|
|
334
|
+
link: '/frontend/zova-reactivity-under-the-hood',
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
text: 'Frontend Source Reading Roadmap',
|
|
338
|
+
link: '/frontend/frontend-source-reading-roadmap',
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
text: 'Zova Source Reading Map',
|
|
342
|
+
link: '/frontend/zova-source-reading-map',
|
|
343
|
+
},
|
|
271
344
|
],
|
|
272
345
|
},
|
|
273
346
|
{
|
|
@@ -286,6 +359,8 @@ export default defineConfig({
|
|
|
286
359
|
items: [
|
|
287
360
|
{ text: 'Environment and Config Guide', link: '/frontend/environment-config-guide' },
|
|
288
361
|
{ text: 'App Startup Guide', link: '/frontend/app-startup-guide' },
|
|
362
|
+
{ text: 'Zova App Guide', link: '/frontend/zova-app-guide' },
|
|
363
|
+
{ text: 'Root Behaviors Guide', link: '/frontend/root-behaviors-guide' },
|
|
289
364
|
{ text: 'System Startup Guide', link: '/frontend/system-startup-guide' },
|
|
290
365
|
],
|
|
291
366
|
},
|
|
@@ -305,9 +380,19 @@ export default defineConfig({
|
|
|
305
380
|
{ text: 'Page Params Guide', link: '/frontend/page-params-guide' },
|
|
306
381
|
{ text: 'Zod Guide', link: '/frontend/zod-guide' },
|
|
307
382
|
{ text: 'Page Route Guide', link: '/frontend/page-route-guide' },
|
|
383
|
+
{ text: 'A-Router Guide', link: '/frontend/a-router-guide' },
|
|
384
|
+
{ text: 'Zova Router Under the Hood', link: '/frontend/zova-router-under-the-hood' },
|
|
385
|
+
{ text: 'Router View Hosts Guide', link: '/frontend/router-view-hosts-guide' },
|
|
308
386
|
{ text: 'Router Tabs Introduction', link: '/frontend/router-tabs-introduction' },
|
|
309
387
|
{ text: 'Router Tabs Overview', link: '/frontend/router-tabs-overview' },
|
|
310
388
|
{ text: 'Router Tabs Mechanism', link: '/frontend/router-tabs-mechanism' },
|
|
389
|
+
{ text: 'Router Tabs vs Stack', link: '/frontend/router-tabs-vs-stack' },
|
|
390
|
+
{ text: 'Router Stack Guide', link: '/frontend/router-stack-guide' },
|
|
391
|
+
{ text: 'Page Meta Guide', link: '/frontend/page-meta-guide' },
|
|
392
|
+
{
|
|
393
|
+
text: 'Router Tabs Layout Integration',
|
|
394
|
+
link: '/frontend/router-tabs-layout-integration',
|
|
395
|
+
},
|
|
311
396
|
{
|
|
312
397
|
text: 'Router Tabs Route Meta Cookbook',
|
|
313
398
|
link: '/frontend/router-tabs-route-meta-cookbook',
|
|
@@ -324,6 +409,45 @@ export default defineConfig({
|
|
|
324
409
|
text: 'Components & UI',
|
|
325
410
|
items: [
|
|
326
411
|
{ text: 'Component Guide', link: '/frontend/component-guide' },
|
|
412
|
+
{ text: 'Form Guide', link: '/frontend/form-guide' },
|
|
413
|
+
{
|
|
414
|
+
text: 'Zova Form Under the Hood',
|
|
415
|
+
link: '/frontend/zova-form-under-the-hood',
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
text: 'Zova Form Source Reading Map',
|
|
419
|
+
link: '/frontend/zova-form-source-reading-map',
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
text: 'Form Scene to Page Meta',
|
|
423
|
+
link: '/frontend/form-scene-to-page-meta-guide',
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
text: 'Permission, formScene, and Action Visibility',
|
|
427
|
+
link: '/frontend/permission-formscene-action-visibility-guide',
|
|
428
|
+
},
|
|
429
|
+
{ text: 'Table Guide', link: '/frontend/table-guide' },
|
|
430
|
+
{ text: 'TableCell Authoring Cookbook', link: '/frontend/table-cell-cookbook' },
|
|
431
|
+
{
|
|
432
|
+
text: 'Table + Resource CRUD Cookbook',
|
|
433
|
+
link: '/frontend/table-resource-crud-cookbook',
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
text: 'Table Action Visibility & Permission Flow',
|
|
437
|
+
link: '/frontend/table-action-visibility-permission-flow-guide',
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
text: 'Zova Table Under the Hood',
|
|
441
|
+
link: '/frontend/zova-table-under-the-hood',
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
text: 'Zova Table Controller Render Deep Dive',
|
|
445
|
+
link: '/frontend/zova-table-controller-render-supplement',
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
text: 'Zova Table Source Reading Map',
|
|
449
|
+
link: '/frontend/zova-table-source-reading-map',
|
|
450
|
+
},
|
|
327
451
|
{ text: 'Component Props Guide', link: '/frontend/component-props-guide' },
|
|
328
452
|
{ text: 'Component v-model Guide', link: '/frontend/component-v-model-guide' },
|
|
329
453
|
{ text: 'Generic Component Guide', link: '/frontend/generic-component-guide' },
|
|
@@ -336,15 +460,83 @@ export default defineConfig({
|
|
|
336
460
|
text: 'Data & State',
|
|
337
461
|
items: [
|
|
338
462
|
{ text: 'Server Data', link: '/frontend/server-data' },
|
|
463
|
+
{ text: 'Fetch Interceptor Guide', link: '/frontend/fetch-interceptor-guide' },
|
|
339
464
|
{ text: 'API Guide', link: '/frontend/api-guide' },
|
|
465
|
+
{ text: 'OpenAPI Runtime Under the Hood', link: '/frontend/a-openapi-under-the-hood' },
|
|
340
466
|
{ text: 'Model Architecture', link: '/frontend/model-architecture' },
|
|
341
|
-
{ text: 'Model
|
|
467
|
+
{ text: 'Model Runtime Under the Hood', link: '/frontend/a-model-under-the-hood' },
|
|
468
|
+
{
|
|
469
|
+
text: 'Resource Models & CRUD',
|
|
470
|
+
items: [
|
|
471
|
+
{ text: 'Model State Guide', link: '/frontend/model-state-guide' },
|
|
472
|
+
{
|
|
473
|
+
text: 'Model Resource Owner Pattern',
|
|
474
|
+
link: '/frontend/model-resource-owner-pattern',
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
text: 'Rest Resource Under the Hood',
|
|
478
|
+
link: '/frontend/rest-resource-under-the-hood',
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
text: 'Rest Resource Source Reading Map',
|
|
482
|
+
link: '/frontend/rest-resource-source-reading-map',
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
text: 'Resource Entry Page Deep Dive',
|
|
486
|
+
link: '/frontend/resource-entry-page-deep-dive',
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
text: 'Resource List Page Deep Dive',
|
|
490
|
+
link: '/frontend/resource-list-page-deep-dive',
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
text: 'ModelResource Internals Deep Dive',
|
|
494
|
+
link: '/frontend/model-resource-internals-deep-dive',
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
text: 'Filter to Query to Select Data Flow',
|
|
498
|
+
link: '/frontend/filter-query-select-data-flow-guide',
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
text: 'Using ModelResource in Your Module',
|
|
502
|
+
link: '/frontend/model-resource-usage-guide',
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
text: 'Resource Model Best Practices and Anti-Patterns',
|
|
506
|
+
link: '/frontend/model-resource-best-practices',
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
text: 'Resource Model Cookbook',
|
|
510
|
+
link: '/frontend/model-resource-cookbook',
|
|
511
|
+
},
|
|
512
|
+
],
|
|
513
|
+
},
|
|
342
514
|
],
|
|
343
515
|
},
|
|
344
516
|
{
|
|
345
517
|
text: 'API Contract & SDK',
|
|
346
518
|
items: [
|
|
347
519
|
{ text: 'OpenAPI SDK Guide', link: '/frontend/openapi-sdk-guide' },
|
|
520
|
+
{
|
|
521
|
+
text: 'Generated Contract Consumption Specimen',
|
|
522
|
+
link: '/frontend/generated-contract-consumption-specimen',
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
text: 'Generated Contract Consumption: List Branch',
|
|
526
|
+
link: '/frontend/generated-contract-consumption-list-branch',
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
text: 'Generated Contract Consumption: Entry Branch',
|
|
530
|
+
link: '/frontend/generated-contract-consumption-entry-branch',
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
text: 'Generated Contract Consumption Verify Playbook',
|
|
534
|
+
link: '/frontend/generated-contract-consumption-verify-playbook',
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
text: 'Generated Contract Consumption Debug Checklist',
|
|
538
|
+
link: '/frontend/generated-contract-consumption-debug-checklist',
|
|
539
|
+
},
|
|
348
540
|
{ text: 'API Schema Guide', link: '/frontend/api-schema-guide' },
|
|
349
541
|
{ text: 'SDK Guide', link: '/frontend/sdk-guide' },
|
|
350
542
|
],
|
|
@@ -152,6 +152,13 @@ Typical skill role:
|
|
|
152
152
|
- likely CLI path: Vona persistence verification plus Zova metadata/build flows only if renderer follow-up is required
|
|
153
153
|
- skill then verifies entity, locale, tests, `fileVersion` logic, and renderer/build/deps follow-up when applicable
|
|
154
154
|
|
|
155
|
+
### Example: “Remove an existing module cleanly”
|
|
156
|
+
|
|
157
|
+
- skill decides this is a module-removal workflow rather than scaffolding or contract evolution
|
|
158
|
+
- skill classifies backend-only vs frontend-only vs fullstack removal
|
|
159
|
+
- likely CLI path: root build/deps/typecheck scripts such as `npm run build:zova:admin`, `npm run deps:vona`, `npm run deps:zova`, and `npm run tsc`
|
|
160
|
+
- skill then verifies that source, package references, generated registrations, and stale runtime directories are handled in the correct order
|
|
161
|
+
|
|
155
162
|
## Anti-patterns
|
|
156
163
|
|
|
157
164
|
Avoid these mistakes in skills:
|
|
@@ -143,6 +143,28 @@ Use this quick rule:
|
|
|
143
143
|
- full explanation → [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
|
|
144
144
|
- workflow steering → skill and rules can point to the docs and choose the right CLI path
|
|
145
145
|
|
|
146
|
+
### Example: “How should AI remove an existing module cleanly?”
|
|
147
|
+
|
|
148
|
+
- public operational explanation → [Playbook: Module Removal](/ai/playbook-module-removal)
|
|
149
|
+
- maintainer rationale and pitfalls → `.docs-internal/architecture/module-removal-workflow.md`
|
|
150
|
+
- avoid putting the full workflow in `CLAUDE.md` because the task needs branching, cleanup order, generated-runtime recovery, and verification
|
|
151
|
+
- procedural decision workflow → `cabloy-module-removal` skill
|
|
152
|
+
|
|
153
|
+
### Example: “How should AI plan a new business domain name and structure?”
|
|
154
|
+
|
|
155
|
+
- public naming and suite-first explanation → [Suites and Modules](/fullstack/suites-and-modules)
|
|
156
|
+
- frontend-side naming companion → [Modules and Suites](/frontend/modules-and-suites)
|
|
157
|
+
- keep the durable naming rules in docs instead of duplicating them in repo rules
|
|
158
|
+
- avoid putting the full branching workflow in `CLAUDE.md` because the task needs proposal, validation, confirmation, and CLI handoff
|
|
159
|
+
- procedural decision workflow → `cabloy-domain-planning` skill
|
|
160
|
+
|
|
161
|
+
### Example: “What `@Api.field(...)` ordering rule should AI preserve when mixing helpers and zod?”
|
|
162
|
+
|
|
163
|
+
- full explanation → [Entity Guide](/backend/entity-guide) and [DTO Guide](/backend/dto-guide)
|
|
164
|
+
- AI workflow reminder → [Playbook: Add a Backend Module](/ai/playbook-backend-module)
|
|
165
|
+
- procedural checklist reminder → backend scaffold skill references
|
|
166
|
+
- avoid putting the full explanation only in `CLAUDE.md` because this is a framework-specific authoring rule, not a short global behavior rule
|
|
167
|
+
|
|
146
168
|
## Anti-patterns to avoid
|
|
147
169
|
|
|
148
170
|
Avoid these mistakes:
|
|
@@ -10,18 +10,23 @@ A roadmap helps convert that documented knowledge into a focused set of high-val
|
|
|
10
10
|
|
|
11
11
|
## What already exists
|
|
12
12
|
|
|
13
|
-
Current root
|
|
13
|
+
Current root skills include:
|
|
14
14
|
|
|
15
15
|
- `cabloy-workflow`
|
|
16
|
+
- `cabloy-domain-planning`
|
|
17
|
+
- `cabloy-contract-loop`
|
|
18
|
+
- `cabloy-resource-field-update`
|
|
19
|
+
- `cabloy-module-removal`
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
Their current roles are:
|
|
18
22
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
+
- `cabloy-workflow` → broad workflow selection, edition detection, CLI-first routing, and verification framing
|
|
24
|
+
- `cabloy-domain-planning` → suite-first naming proposals, providerId confirmation, module-boundary suggestions, and scaffold handoff for new business domains
|
|
25
|
+
- `cabloy-contract-loop` → backend/frontend contract regeneration, reverse-chain handling, and drift diagnosis
|
|
26
|
+
- `cabloy-resource-field-update` → existing backend resource-field changes with `fileVersion` and renderer-aware follow-up
|
|
27
|
+
- `cabloy-module-removal` → backend/frontend/fullstack module deletion order, generated-runtime cleanup, and verification
|
|
23
28
|
|
|
24
|
-
This is a
|
|
29
|
+
This is now a stronger foundation skill set, but it still leaves several useful workflow families for future specialization.
|
|
25
30
|
|
|
26
31
|
## Recommended next skill families
|
|
27
32
|
|
|
@@ -75,6 +75,7 @@ Use this path when the task is about implementing or reviewing Cabloy code with
|
|
|
75
75
|
- [Playbook: Backend Module](/ai/playbook-backend-module)
|
|
76
76
|
- [Playbook: Frontend Page](/ai/playbook-frontend-page)
|
|
77
77
|
- [Playbook: Contract Regeneration](/ai/playbook-contract-regeneration)
|
|
78
|
+
- [Playbook: Module Removal](/ai/playbook-module-removal)
|
|
78
79
|
- [Playbook: Metadata Refresh](/ai/playbook-metadata-refresh)
|
|
79
80
|
|
|
80
81
|
### Verification and roadmap path
|
|
@@ -66,6 +66,12 @@ Depending on the feature, extend the generated code with the right framework-lev
|
|
|
66
66
|
- migration and changes
|
|
67
67
|
- field indexes
|
|
68
68
|
|
|
69
|
+
When refining entity or DTO fields that use `@Api.field(...)`, apply this framework-specific guardrail:
|
|
70
|
+
|
|
71
|
+
- if you include an explicit zod schema such as `z.number().int().min(1)`, place it as the **last argument**
|
|
72
|
+
- keep helper metadata such as `v.xxx(...)` and `ZovaRender.xxx(...)` before the zod schema
|
|
73
|
+
- otherwise helpers written after the zod schema may stop taking effect
|
|
74
|
+
|
|
69
75
|
Relevant docs:
|
|
70
76
|
|
|
71
77
|
- [Controller Guide](/backend/controller-guide)
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Playbook: Remove a Cabloy Module
|
|
2
|
+
|
|
3
|
+
This playbook turns Cabloy module deletion into a repeatable AI-friendly workflow.
|
|
4
|
+
|
|
5
|
+
## When to use this playbook
|
|
6
|
+
|
|
7
|
+
Use this playbook when the goal is to remove an existing module from the Cabloy monorepo.
|
|
8
|
+
|
|
9
|
+
Typical triggers include:
|
|
10
|
+
|
|
11
|
+
- delete a demo module
|
|
12
|
+
- retire a backend module
|
|
13
|
+
- remove a frontend module
|
|
14
|
+
- remove a fullstack module that exists in both Vona and Zova
|
|
15
|
+
- clean up stale generated runtime or type residues after a module was removed
|
|
16
|
+
|
|
17
|
+
## Step 1: Detect the repo and scope
|
|
18
|
+
|
|
19
|
+
Before deleting anything:
|
|
20
|
+
|
|
21
|
+
1. detect whether the active repo is Cabloy Basic or Cabloy Start
|
|
22
|
+
2. confirm whether the module is backend-only, frontend-only, or fullstack
|
|
23
|
+
3. inspect the root `package.json`
|
|
24
|
+
4. inspect `npm run vona` and `npm run zova`
|
|
25
|
+
|
|
26
|
+
This avoids deleting the wrong surfaces or using the wrong edition-specific assumptions.
|
|
27
|
+
|
|
28
|
+
## Step 2: Inventory the real module surfaces
|
|
29
|
+
|
|
30
|
+
Inspect the real source and direct dependency surfaces first.
|
|
31
|
+
|
|
32
|
+
Typical locations include:
|
|
33
|
+
|
|
34
|
+
- `vona/src/module/<module>` or suite-based backend module roots
|
|
35
|
+
- `zova/src/module/<module>` or suite-based frontend module roots
|
|
36
|
+
- `vona/package.json`
|
|
37
|
+
- `zova/package.json`
|
|
38
|
+
- generated registries and lockfiles
|
|
39
|
+
- tests that still target the module
|
|
40
|
+
|
|
41
|
+
If the user asked for a public scrub, also inspect `cabloy-docs/`. Otherwise, treat docs cleanup as a separate scope decision.
|
|
42
|
+
|
|
43
|
+
## Step 3: Remove source and direct references first
|
|
44
|
+
|
|
45
|
+
Start by removing the real source and direct workspace package references.
|
|
46
|
+
|
|
47
|
+
Typical order:
|
|
48
|
+
|
|
49
|
+
1. remove backend module source if in scope
|
|
50
|
+
2. remove frontend module source if in scope
|
|
51
|
+
3. remove direct workspace dependency entries from the relevant `package.json` files
|
|
52
|
+
4. refresh or clean generated registrations only after source removal
|
|
53
|
+
|
|
54
|
+
Do not start by hand-editing generated caches while the real module source or package references still exist.
|
|
55
|
+
|
|
56
|
+
## Step 4: Regenerate with the repo-owned workflow
|
|
57
|
+
|
|
58
|
+
After source cleanup, use the existing root scripts to refresh generated outputs.
|
|
59
|
+
|
|
60
|
+
Representative root commands in Cabloy Basic include:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm run build:zova:admin
|
|
64
|
+
npm run deps:vona
|
|
65
|
+
npm run deps:zova
|
|
66
|
+
npm run tsc
|
|
67
|
+
npm run test
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Fullstack default sequence
|
|
71
|
+
|
|
72
|
+
When the module exists on both the Vona and Zova sides, the usual sequence is:
|
|
73
|
+
|
|
74
|
+
1. `npm run build:zova:admin`
|
|
75
|
+
2. `npm run deps:vona`
|
|
76
|
+
3. `npm run deps:zova`
|
|
77
|
+
4. `npm run tsc`
|
|
78
|
+
|
|
79
|
+
This keeps the Zova Admin JS bundle and rest output aligned before Vona consumes downstream artifacts.
|
|
80
|
+
|
|
81
|
+
### Narrower branches
|
|
82
|
+
|
|
83
|
+
For backend-only removal, prefer the narrowest meaningful verification first:
|
|
84
|
+
|
|
85
|
+
- `npm run deps:vona`
|
|
86
|
+
- `npm run tsc`
|
|
87
|
+
- `npm run test` when runtime/test coupling is likely
|
|
88
|
+
|
|
89
|
+
For frontend-only removal, use the relevant Zova build/deps path first, then typecheck.
|
|
90
|
+
|
|
91
|
+
## Step 5: Clean generated runtime directories when residues remain stale
|
|
92
|
+
|
|
93
|
+
If stale module types or runtime entries still remain after the normal cleanup and regeneration flow, treat generated runtime directories as disposable working state.
|
|
94
|
+
|
|
95
|
+
In particular, the primary recovery targets for this workflow are:
|
|
96
|
+
|
|
97
|
+
- `vona/.vona`
|
|
98
|
+
- `zova/.zova`
|
|
99
|
+
|
|
100
|
+
These are not necessarily the only generated working directories in the repo, but they are the main stale-runtime targets for normal module-removal recovery.
|
|
101
|
+
|
|
102
|
+
Why this is safe:
|
|
103
|
+
|
|
104
|
+
- these directories are generated by the Vona and Zova CLI flows
|
|
105
|
+
- they are ignored by the repo because they are not source-of-truth files
|
|
106
|
+
- they may survive when a service or build process does not stop cleanly
|
|
107
|
+
|
|
108
|
+
After deleting them, rerun the normal regeneration flow and typecheck again.
|
|
109
|
+
|
|
110
|
+
## Step 6: Verify that the module is really gone
|
|
111
|
+
|
|
112
|
+
Search for remaining references to:
|
|
113
|
+
|
|
114
|
+
- the module relative name
|
|
115
|
+
- the backend workspace package name
|
|
116
|
+
- the frontend workspace package name
|
|
117
|
+
- route or resource names if applicable
|
|
118
|
+
|
|
119
|
+
Then verify with the narrowest meaningful commands first, followed by broader checks when needed.
|
|
120
|
+
|
|
121
|
+
Typical verification commands:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npm run build:zova:admin
|
|
125
|
+
npm run deps:vona
|
|
126
|
+
npm run deps:zova
|
|
127
|
+
npm run tsc
|
|
128
|
+
npm run test
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The expected result is:
|
|
132
|
+
|
|
133
|
+
- no direct workspace dependency entries remain
|
|
134
|
+
- no generated registry still points at the removed module
|
|
135
|
+
- no stale typecheck failures still reference the module
|
|
136
|
+
- no important runtime or test surfaces still import it
|
|
137
|
+
|
|
138
|
+
## Step 7: Treat docs cleanup as an explicit second scope
|
|
139
|
+
|
|
140
|
+
Removing code/runtime surfaces does not automatically mean public docs should be rewritten.
|
|
141
|
+
|
|
142
|
+
Make this an explicit scope decision:
|
|
143
|
+
|
|
144
|
+
- code/runtime removal only
|
|
145
|
+
- code/runtime removal plus docs/examples scrub
|
|
146
|
+
|
|
147
|
+
If docs cleanup is in scope, update `cabloy-docs/` as a separate pass after runtime cleanup is stable.
|
|
148
|
+
|
|
149
|
+
## AI rule of thumb
|
|
150
|
+
|
|
151
|
+
A good Cabloy module-removal workflow is usually:
|
|
152
|
+
|
|
153
|
+
1. detect edition and scope
|
|
154
|
+
2. inventory real module surfaces
|
|
155
|
+
3. remove source and direct references
|
|
156
|
+
4. regenerate with repo entrypoints
|
|
157
|
+
5. clean generated runtime dirs only when stale residues remain
|
|
158
|
+
6. verify the module is really gone
|
|
159
|
+
|
|
160
|
+
Not:
|
|
161
|
+
|
|
162
|
+
1. delete a few generated files first
|
|
163
|
+
2. guess which paths matter
|
|
164
|
+
3. leave workspace dependencies or generated registrations stale
|
package/cabloy-docs/ai/skills.md
CHANGED
|
@@ -35,3 +35,15 @@ A strong Cabloy skill usually includes:
|
|
|
35
35
|
When a skill needs to apply an architectural rule such as backend class placement, prefer a branching decision tree that points back to durable docs instead of embedding the full architecture rationale inside the skill itself.
|
|
36
36
|
|
|
37
37
|
For edition-aware skills, use [Edition Detection for AI Workflows](/ai/edition-detection) and [Edition Consistency Checklist](/ai/edition-consistency-checklist) as the durable review surfaces before expanding edition-specific branches.
|
|
38
|
+
|
|
39
|
+
## Example workflow skills in this repo
|
|
40
|
+
|
|
41
|
+
Current examples include:
|
|
42
|
+
|
|
43
|
+
- `cabloy-workflow` for choosing the correct Cabloy work path before implementation
|
|
44
|
+
- `cabloy-domain-planning` for proposing and confirming providerId, suite, and initial module names before scaffolding a new business domain
|
|
45
|
+
- `cabloy-contract-loop` for backend/frontend contract regeneration and drift diagnosis
|
|
46
|
+
- `cabloy-resource-field-update` for updating an existing backend resource field thread
|
|
47
|
+
- `cabloy-module-removal` for removing a backend, frontend, or fullstack module cleanly, including generated-runtime cleanup, stale-residue recovery, and verification
|
|
48
|
+
|
|
49
|
+
The module-removal workflow is a good example of why skills belong in `.claude/skills/` instead of `CLAUDE.md`: the task needs branching, cleanup order, recovery guidance for generated runtime directories such as `vona/.vona` and `zova/.zova`, and a verification checklist that would be too large for a short repo-wide rule.
|