cabloy 5.1.61 → 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/skills/cabloy-backend-scaffold/SKILL.md +2 -0
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -1
- package/.claude/skills/cabloy-domain-planning/SKILL.md +212 -0
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +2 -0
- package/CHANGELOG.md +42 -0
- package/CLAUDE.md +1 -0
- package/cabloy-docs/.vitepress/config.mjs +158 -12
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +8 -0
- package/cabloy-docs/ai/future-skill-roadmap.md +2 -0
- package/cabloy-docs/ai/skills.md +1 -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 +12 -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 +12 -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 +13 -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 +2 -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 +7 -7
- 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 +4 -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 +1 -1
- package/cabloy-docs/frontend/behavior-guide.md +16 -16
- package/cabloy-docs/frontend/cli.md +5 -5
- package/cabloy-docs/frontend/command-scene-authoring.md +17 -8
- 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/filter-query-select-data-flow-guide.md +260 -0
- package/cabloy-docs/frontend/form-guide.md +19 -28
- package/cabloy-docs/frontend/form-scene-to-page-meta-guide.md +303 -0
- package/cabloy-docs/frontend/foundation.md +10 -6
- 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 +29 -7
- package/cabloy-docs/frontend/model-architecture.md +38 -2
- package/cabloy-docs/frontend/model-resource-cookbook.md +11 -8
- package/cabloy-docs/frontend/model-resource-internals-deep-dive.md +238 -0
- package/cabloy-docs/frontend/model-resource-owner-pattern.md +22 -2
- package/cabloy-docs/frontend/model-resource-usage-guide.md +22 -6
- package/cabloy-docs/frontend/model-state-guide.md +12 -9
- 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 +12 -4
- package/cabloy-docs/frontend/page-guide.md +9 -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 +14 -2
- 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 +2 -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 +7 -9
- package/cabloy-docs/frontend/zova-form-under-the-hood.md +5 -0
- package/cabloy-docs/frontend/zova-router-under-the-hood.md +561 -0
- package/cabloy-docs/frontend/zova-source-reading-map.md +101 -7
- 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/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 +8 -2
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +6 -0
- package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +181 -48
- package/cabloy-docs/fullstack/introduction.md +3 -0
- package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -2
- 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 +4 -0
- package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +31 -19
- package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +5 -0
- package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +4 -0
- package/cabloy-docs/fullstack/tutorials-overview.md +1 -1
- package/cabloy-docs/reference/bean-scene-boilerplates.md +13 -13
- package/cabloy-docs/reference/package-map.md +4 -3
- package/package.json +1 -1
- package/vona/pnpm-lock.yaml +22 -258
- 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-zova/zova/package.json +2 -2
- package/zova/pnpm-lock.yaml +406 -680
- 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
|
@@ -36,6 +36,8 @@ Then classify the request:
|
|
|
36
36
|
|
|
37
37
|
Default to backend-first. Only escalate mentally to a broader fullstack workflow when the backend change obviously crosses the contract boundary.
|
|
38
38
|
|
|
39
|
+
If the user is still deciding a new business-domain boundary or suite/module naming, use the root `cabloy-domain-planning` skill before scaffolding.
|
|
40
|
+
|
|
39
41
|
If the task is really a broad cross-stack workflow, consider whether the root `cabloy-workflow` skill is the better primary router.
|
|
40
42
|
|
|
41
43
|
## Step 2: Start from Vona CLI and repo entrypoints
|
|
@@ -15,7 +15,7 @@ After generating or extending a backend thread, check which follow-up layers app
|
|
|
15
15
|
- OpenAPI metadata
|
|
16
16
|
- inferred DTO opportunities
|
|
17
17
|
- frontend contract impact
|
|
18
|
-
- `@Api.field(...)` ordering when explicit zod schema is present: put `
|
|
18
|
+
- `@Api.field(...)` / `$makeSchema(...)` ordering when an explicit zod/custom schema is present: put that schema last because `makeSchemaLikes(...)` applies arguments right-to-left and later helpers can otherwise be ignored
|
|
19
19
|
|
|
20
20
|
## Persistence follow-up
|
|
21
21
|
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cabloy-domain-planning
|
|
3
|
+
description: Use this skill whenever the user wants to plan a new business domain in this Cabloy repo, such as CRM, OA, training, ERP, or a similar long-lived domain. Trigger when the request is about deciding suite-first structure, proposing or validating providerId, suite, and module names, comparing naming options, confirming names before scaffolding, or keeping a custom naming path open. Prefer it before backend or frontend scaffolding when the main question is domain naming and structure rather than immediate file generation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cabloy Domain Planning
|
|
7
|
+
|
|
8
|
+
Use this skill when the user is still deciding how to name and structure a new business domain.
|
|
9
|
+
|
|
10
|
+
## Goals
|
|
11
|
+
|
|
12
|
+
1. detect whether the active repository is Cabloy Basic or Cabloy Start
|
|
13
|
+
2. classify the request as domain planning rather than immediate scaffolding
|
|
14
|
+
3. default to suite-first planning for real business domains
|
|
15
|
+
4. propose valid `providerId`, suite, and module names before any generation happens
|
|
16
|
+
5. require explicit confirmation before handing off to scaffold commands
|
|
17
|
+
6. always keep a custom naming path available for the user
|
|
18
|
+
7. finish with the CLI-first next step and matching verification guidance
|
|
19
|
+
|
|
20
|
+
## Step 1: Detect edition first
|
|
21
|
+
|
|
22
|
+
Check the repository root for these marker files:
|
|
23
|
+
|
|
24
|
+
- `__CABLOY_BASIC__`
|
|
25
|
+
- `__CABLOY_START__`
|
|
26
|
+
|
|
27
|
+
Interpretation:
|
|
28
|
+
|
|
29
|
+
- `__CABLOY_BASIC__` present → this is Cabloy Basic
|
|
30
|
+
- `__CABLOY_START__` present → this is Cabloy Start
|
|
31
|
+
- neither present → inspect nearby scripts and ask before making edition-specific assumptions
|
|
32
|
+
|
|
33
|
+
This matters most when examples, frontend flavors, or suite/module availability may differ between editions.
|
|
34
|
+
|
|
35
|
+
## Step 2: Confirm that this is a planning request
|
|
36
|
+
|
|
37
|
+
Use this skill when the user is asking things such as:
|
|
38
|
+
|
|
39
|
+
- how to plan a new CRM, OA, training, ERP, or similar business area
|
|
40
|
+
- whether the work should start as a suite or only a module
|
|
41
|
+
- how to choose `providerId`, `suiteName`, or first module names
|
|
42
|
+
- whether a proposed name is valid
|
|
43
|
+
- which naming option should be preferred before scaffolding
|
|
44
|
+
|
|
45
|
+
Do not use this skill once naming is already confirmed and the request is clearly about backend or frontend scaffolding. In that case, route to the appropriate scaffold skill.
|
|
46
|
+
|
|
47
|
+
## Step 3: Default to suite-first planning
|
|
48
|
+
|
|
49
|
+
For real business work, prefer the suite-first path described in:
|
|
50
|
+
|
|
51
|
+
- `cabloy-docs/fullstack/suites-and-modules.md`
|
|
52
|
+
|
|
53
|
+
Use this practical rule:
|
|
54
|
+
|
|
55
|
+
- prefer a **suite** for the business domain boundary
|
|
56
|
+
- prefer **modules** for the capabilities inside that domain
|
|
57
|
+
- treat a standalone module as the exception for very small, disposable, or tutorial-only work
|
|
58
|
+
|
|
59
|
+
Do not jump into `:create:module` first when the real question is still the domain boundary.
|
|
60
|
+
|
|
61
|
+
## Step 4: Collect or infer the planning inputs
|
|
62
|
+
|
|
63
|
+
Before proposing names, determine these inputs:
|
|
64
|
+
|
|
65
|
+
1. the business domain term
|
|
66
|
+
- examples: crm, oa, training
|
|
67
|
+
2. whether the user already has a required namespace or provider prefix
|
|
68
|
+
- examples: `demo`, `biz`, `mycorp`
|
|
69
|
+
3. whether the work is backend-only, frontend-only, or fullstack
|
|
70
|
+
4. whether the user wants a conservative functional naming style or a custom/branded naming style
|
|
71
|
+
|
|
72
|
+
If the user already provides names, validate them instead of replacing them silently.
|
|
73
|
+
|
|
74
|
+
## Step 5: Validate the naming rules
|
|
75
|
+
|
|
76
|
+
Reuse the durable naming rules from:
|
|
77
|
+
|
|
78
|
+
- `cabloy-docs/fullstack/suites-and-modules.md`
|
|
79
|
+
- `cabloy-docs/frontend/modules-and-suites.md`
|
|
80
|
+
|
|
81
|
+
### Suite short name rule
|
|
82
|
+
|
|
83
|
+
A suite short name follows:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
{providerId}-{suiteName}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
In this repository:
|
|
90
|
+
|
|
91
|
+
- `suiteName` must use lowercase English letters only
|
|
92
|
+
- `suiteName` must not contain another `-`
|
|
93
|
+
|
|
94
|
+
So a name such as `crm-core` is not valid as the `suiteName` segment.
|
|
95
|
+
|
|
96
|
+
When a proposed name is invalid:
|
|
97
|
+
|
|
98
|
+
- explain whether the invalid part is `providerId`, `suiteName`, or the combined short name
|
|
99
|
+
- do not collapse those layers into one vague error
|
|
100
|
+
- provide the nearest valid alternatives when possible
|
|
101
|
+
|
|
102
|
+
For example:
|
|
103
|
+
|
|
104
|
+
- `crm-core` is invalid as a `suiteName`
|
|
105
|
+
- `crm-core` can still be a valid suite short name if it is interpreted as:
|
|
106
|
+
- `providerId = crm`
|
|
107
|
+
- `suiteName = core`
|
|
108
|
+
|
|
109
|
+
### Module planning rule
|
|
110
|
+
|
|
111
|
+
Module names should represent capability ownership inside the suite.
|
|
112
|
+
|
|
113
|
+
Prefer names that:
|
|
114
|
+
|
|
115
|
+
- map cleanly to a business capability
|
|
116
|
+
- remain natural when they become resource owners, controller names, API paths, or menu/page anchors
|
|
117
|
+
- avoid technical placeholder words such as `base`, `core`, or `common` unless the module is truly a shared technical layer
|
|
118
|
+
|
|
119
|
+
If more detail is needed, prefer expressing it in the module name rather than by making the suite name longer.
|
|
120
|
+
|
|
121
|
+
## Step 6: Propose names in a compact planning table
|
|
122
|
+
|
|
123
|
+
When the user has not finalized naming, propose:
|
|
124
|
+
|
|
125
|
+
1. one **recommended** option
|
|
126
|
+
2. one or two **alternatives** if there is a meaningful trade-off
|
|
127
|
+
3. one **custom naming** path
|
|
128
|
+
|
|
129
|
+
The proposal should be compact and practical. Include:
|
|
130
|
+
|
|
131
|
+
- `providerId`
|
|
132
|
+
- suite short name
|
|
133
|
+
- Vona suite full name
|
|
134
|
+
- Zova suite full name
|
|
135
|
+
- 3-6 likely first module names
|
|
136
|
+
- which module should be scaffolded first
|
|
137
|
+
|
|
138
|
+
Use examples such as:
|
|
139
|
+
|
|
140
|
+
- suite: `demo-training`
|
|
141
|
+
- modules: `training-student`, `training-course`, `training-record`
|
|
142
|
+
|
|
143
|
+
When helpful, explain why the recommendation is better than obvious alternatives.
|
|
144
|
+
|
|
145
|
+
## Step 7: Require confirmation before scaffolding
|
|
146
|
+
|
|
147
|
+
Before suggesting any scaffold execution, explicitly confirm:
|
|
148
|
+
|
|
149
|
+
- `providerId`
|
|
150
|
+
- suite short name
|
|
151
|
+
- first module names
|
|
152
|
+
- whether the user wants backend-only, frontend-only, or fullstack scaffolding
|
|
153
|
+
|
|
154
|
+
Do not treat silence as confirmation.
|
|
155
|
+
|
|
156
|
+
Always leave a custom path available, for example:
|
|
157
|
+
|
|
158
|
+
- “If you want a different `providerId`, suite short name, or first module set, give the custom names and I will validate them against the repo rules.”
|
|
159
|
+
|
|
160
|
+
## Step 8: Hand off to CLI-first scaffolding only after confirmation
|
|
161
|
+
|
|
162
|
+
Once naming is confirmed, route to the real generators rather than hand-authoring structure.
|
|
163
|
+
|
|
164
|
+
Typical commands are:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm run vona :create:suite <suiteShortName>
|
|
168
|
+
npm run zova :create:suite <suiteShortName>
|
|
169
|
+
npm run vona :create:module <moduleName> -- --suite=<suiteShortName>
|
|
170
|
+
npm run zova :create:module <moduleName> -- --suite=<suiteShortName>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Then route to:
|
|
174
|
+
|
|
175
|
+
- `cabloy-backend-scaffold` for backend generation and follow-up
|
|
176
|
+
- `cabloy-frontend-scaffold` for frontend generation and follow-up
|
|
177
|
+
- `cabloy-workflow` if the task becomes a broader cross-stack routing problem
|
|
178
|
+
|
|
179
|
+
## Step 9: Verification
|
|
180
|
+
|
|
181
|
+
Always finish with a verification path that matches the scope.
|
|
182
|
+
|
|
183
|
+
Before generation, verify:
|
|
184
|
+
|
|
185
|
+
- the proposed suite name follows the naming rule
|
|
186
|
+
- the proposed module names are natural business capability owners
|
|
187
|
+
- the command family still exists through `npm run vona` / `npm run zova`
|
|
188
|
+
|
|
189
|
+
After generation, verify with the narrowest useful checks first:
|
|
190
|
+
|
|
191
|
+
- `npm run vona :`
|
|
192
|
+
- `npm run zova :`
|
|
193
|
+
- `npm run deps:vona`
|
|
194
|
+
- `npm run deps:zova`
|
|
195
|
+
- `npm run tsc`
|
|
196
|
+
|
|
197
|
+
For docs or AI-asset changes that accompany this workflow, also verify that referenced public docs and skill descriptions still tell a consistent story.
|
|
198
|
+
|
|
199
|
+
## Response pattern
|
|
200
|
+
|
|
201
|
+
When helpful, structure the response around these points:
|
|
202
|
+
|
|
203
|
+
1. detected edition
|
|
204
|
+
2. suite-first recommendation
|
|
205
|
+
3. recommended naming table
|
|
206
|
+
4. alternatives and trade-offs
|
|
207
|
+
5. custom naming path
|
|
208
|
+
6. confirmation gate before scaffolding
|
|
209
|
+
7. next CLI commands after confirmation
|
|
210
|
+
8. verification steps
|
|
211
|
+
|
|
212
|
+
Keep the response practical. The value of this skill is to turn vague new-domain requests into a confirmed, valid, and CLI-ready naming plan before any scaffolding starts.
|
|
@@ -36,6 +36,8 @@ Then classify the request:
|
|
|
36
36
|
|
|
37
37
|
Default to frontend-first. Only escalate mentally to a broader fullstack workflow when the frontend task obviously crosses the contract boundary.
|
|
38
38
|
|
|
39
|
+
If the user is still deciding a new business-domain boundary or suite/module naming, use the root `cabloy-domain-planning` skill before scaffolding.
|
|
40
|
+
|
|
39
41
|
If the task is really a broad cross-stack workflow, consider whether the root `cabloy-workflow` skill is the better primary router.
|
|
40
42
|
|
|
41
43
|
## Step 2: Start from Zova CLI and repo entrypoints
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.1.62
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Add a domain planning skill.
|
|
8
|
+
- Add a masked mobile field to the student resource.
|
|
9
|
+
- Generate an OpenAPI SDK for `demo-student`.
|
|
10
|
+
- Add student summary and force-delete actions.
|
|
11
|
+
- Customize student level renderers.
|
|
12
|
+
- Add the `demo-student` module with a full student CRUD flow.
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- Localize the student menu in `zh-cn`.
|
|
17
|
+
- Override the level filter placeholder correctly.
|
|
18
|
+
- Stabilize empty select value mapping.
|
|
19
|
+
- Polish inline select spacing.
|
|
20
|
+
- Forward select blur handling correctly.
|
|
21
|
+
- Refine borderless styling for filter selects.
|
|
22
|
+
- Place explicit schemas last in `demo-student` metadata.
|
|
23
|
+
|
|
24
|
+
### Improvements
|
|
25
|
+
|
|
26
|
+
- Clarify level renderer examples.
|
|
27
|
+
- Clarify the standalone tutorial sandbox.
|
|
28
|
+
- Refresh training-student references.
|
|
29
|
+
- Move `demo-student` into the `a-training` suite.
|
|
30
|
+
- Add a suite-first modularization guide.
|
|
31
|
+
- Clarify the thin model facade reading path.
|
|
32
|
+
- Include `demo-student` in the root npm package.
|
|
33
|
+
- Expand source-reading and contract-loop guides.
|
|
34
|
+
- Clean `demo-student` locale resources.
|
|
35
|
+
- Move `TableCell` beans to app scope.
|
|
36
|
+
- Align the student summary query flow.
|
|
37
|
+
- Simplify the student summary action flow.
|
|
38
|
+
- Refine the student level renderer hierarchy.
|
|
39
|
+
- Add a page meta guide and cross-links.
|
|
40
|
+
- Add a rest-resource runtime documentation set.
|
|
41
|
+
- Refine tutorial 4 AI prompt wording.
|
|
42
|
+
- Expand Zova Router ecosystem guides.
|
|
43
|
+
- Add the Zova Table documentation cluster.
|
|
44
|
+
|
|
3
45
|
## 5.1.61
|
|
4
46
|
|
|
5
47
|
### Features
|
package/CLAUDE.md
CHANGED
|
@@ -48,6 +48,7 @@ Before inventing a custom implementation path:
|
|
|
48
48
|
- After forward regeneration, keep frontend follow-up thin: prefer semantic model facades and reuse the existing resource-owner when the custom API still belongs to the same resource.
|
|
49
49
|
- For the reverse chain, when Vona consumes newly added or changed Zova Admin render/action/metadata, always run `npm run build:zova:admin` before `npm run deps:vona`. Do not treat `build:rest:cabloyBasicAdmin` alone as sufficient, because the Admin JS bundle and rest output must move together.
|
|
50
50
|
- If generated artifacts already contain the expected changes but consumers still behave stale, suspect local dependency drift before making more source edits.
|
|
51
|
+
- For Vona consumption drift after Zova-generated type/rest output changes, if `npm run deps:vona` still leaves stale consumer types, delete `vona/node_modules` and reinstall dependencies before further debugging or hand-patching dependency links.
|
|
51
52
|
- For Cabloy Start, apply the same reverse-chain logic but resolve the Start-specific flavor names and generated-output paths from the active Start repo before recommending commands.
|
|
52
53
|
- Treat legacy docs as input material, not as unquestioned truth. When docs conflict with source code, prefer current source code.
|
|
53
54
|
- For frontend work, assume Cabloy Basic and Cabloy Start share a frontend engineering layer but may diverge in UI layer, frontend flavors, suite/module availability, SSR site baselines, project assets, and generated outputs.
|
|
@@ -38,6 +38,7 @@ const fullstackGroups = [
|
|
|
38
38
|
items: [
|
|
39
39
|
{ text: 'Introduction', link: '/fullstack/introduction' },
|
|
40
40
|
{ text: 'Quickstart', link: '/fullstack/quickstart' },
|
|
41
|
+
{ text: 'Suites and Modules', link: '/fullstack/suites-and-modules' },
|
|
41
42
|
],
|
|
42
43
|
},
|
|
43
44
|
{
|
|
@@ -81,6 +82,22 @@ const fullstackGroups = [
|
|
|
81
82
|
{ text: 'Framework Performance', link: '/fullstack/framework-performance' },
|
|
82
83
|
{ text: 'Vona + Zova Integration', link: '/fullstack/vona-zova-integration' },
|
|
83
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
|
+
},
|
|
84
101
|
{ text: 'Backend OpenAPI to Frontend SDK', link: '/fullstack/openapi-to-sdk' },
|
|
85
102
|
{
|
|
86
103
|
text: 'Frontend Metadata Back to Backend',
|
|
@@ -166,6 +183,19 @@ export default defineConfig({
|
|
|
166
183
|
{ text: 'Foundation', link: '/backend/foundation' },
|
|
167
184
|
{ text: 'Backend Essentials', link: '/backend/backend-essentials' },
|
|
168
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
|
+
},
|
|
169
199
|
],
|
|
170
200
|
},
|
|
171
201
|
{
|
|
@@ -218,6 +248,10 @@ export default defineConfig({
|
|
|
218
248
|
{ text: 'Model Guide', link: '/backend/model-guide' },
|
|
219
249
|
{ text: 'Entity Guide', link: '/backend/entity-guide' },
|
|
220
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
|
+
},
|
|
221
255
|
],
|
|
222
256
|
},
|
|
223
257
|
{
|
|
@@ -263,6 +297,18 @@ export default defineConfig({
|
|
|
263
297
|
text: 'API & Testing',
|
|
264
298
|
items: [
|
|
265
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
|
+
},
|
|
266
312
|
{ text: 'DTO Infer and Generation', link: '/backend/dto-infer-generation' },
|
|
267
313
|
{ text: 'Unit Testing', link: '/backend/unit-testing' },
|
|
268
314
|
],
|
|
@@ -287,6 +333,10 @@ export default defineConfig({
|
|
|
287
333
|
text: 'Zova Reactivity Under the Hood',
|
|
288
334
|
link: '/frontend/zova-reactivity-under-the-hood',
|
|
289
335
|
},
|
|
336
|
+
{
|
|
337
|
+
text: 'Frontend Source Reading Roadmap',
|
|
338
|
+
link: '/frontend/frontend-source-reading-roadmap',
|
|
339
|
+
},
|
|
290
340
|
{
|
|
291
341
|
text: 'Zova Source Reading Map',
|
|
292
342
|
link: '/frontend/zova-source-reading-map',
|
|
@@ -309,6 +359,8 @@ export default defineConfig({
|
|
|
309
359
|
items: [
|
|
310
360
|
{ text: 'Environment and Config Guide', link: '/frontend/environment-config-guide' },
|
|
311
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' },
|
|
312
364
|
{ text: 'System Startup Guide', link: '/frontend/system-startup-guide' },
|
|
313
365
|
],
|
|
314
366
|
},
|
|
@@ -328,9 +380,19 @@ export default defineConfig({
|
|
|
328
380
|
{ text: 'Page Params Guide', link: '/frontend/page-params-guide' },
|
|
329
381
|
{ text: 'Zod Guide', link: '/frontend/zod-guide' },
|
|
330
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' },
|
|
331
386
|
{ text: 'Router Tabs Introduction', link: '/frontend/router-tabs-introduction' },
|
|
332
387
|
{ text: 'Router Tabs Overview', link: '/frontend/router-tabs-overview' },
|
|
333
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
|
+
},
|
|
334
396
|
{
|
|
335
397
|
text: 'Router Tabs Route Meta Cookbook',
|
|
336
398
|
link: '/frontend/router-tabs-route-meta-cookbook',
|
|
@@ -356,6 +418,36 @@ export default defineConfig({
|
|
|
356
418
|
text: 'Zova Form Source Reading Map',
|
|
357
419
|
link: '/frontend/zova-form-source-reading-map',
|
|
358
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
|
+
},
|
|
359
451
|
{ text: 'Component Props Guide', link: '/frontend/component-props-guide' },
|
|
360
452
|
{ text: 'Component v-model Guide', link: '/frontend/component-v-model-guide' },
|
|
361
453
|
{ text: 'Generic Component Guide', link: '/frontend/generic-component-guide' },
|
|
@@ -370,20 +462,54 @@ export default defineConfig({
|
|
|
370
462
|
{ text: 'Server Data', link: '/frontend/server-data' },
|
|
371
463
|
{ text: 'Fetch Interceptor Guide', link: '/frontend/fetch-interceptor-guide' },
|
|
372
464
|
{ text: 'API Guide', link: '/frontend/api-guide' },
|
|
465
|
+
{ text: 'OpenAPI Runtime Under the Hood', link: '/frontend/a-openapi-under-the-hood' },
|
|
373
466
|
{ text: 'Model Architecture', link: '/frontend/model-architecture' },
|
|
374
|
-
{ text: 'Model
|
|
375
|
-
{ text: 'Model Resource Owner Pattern', link: '/frontend/model-resource-owner-pattern' },
|
|
467
|
+
{ text: 'Model Runtime Under the Hood', link: '/frontend/a-model-under-the-hood' },
|
|
376
468
|
{
|
|
377
|
-
text: '
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
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
|
+
],
|
|
387
513
|
},
|
|
388
514
|
],
|
|
389
515
|
},
|
|
@@ -391,6 +517,26 @@ export default defineConfig({
|
|
|
391
517
|
text: 'API Contract & SDK',
|
|
392
518
|
items: [
|
|
393
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
|
+
},
|
|
394
540
|
{ text: 'API Schema Guide', link: '/frontend/api-schema-guide' },
|
|
395
541
|
{ text: 'SDK Guide', link: '/frontend/sdk-guide' },
|
|
396
542
|
],
|
|
@@ -150,6 +150,14 @@ Use this quick rule:
|
|
|
150
150
|
- avoid putting the full workflow in `CLAUDE.md` because the task needs branching, cleanup order, generated-runtime recovery, and verification
|
|
151
151
|
- procedural decision workflow → `cabloy-module-removal` skill
|
|
152
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
|
+
|
|
153
161
|
### Example: “What `@Api.field(...)` ordering rule should AI preserve when mixing helpers and zod?”
|
|
154
162
|
|
|
155
163
|
- full explanation → [Entity Guide](/backend/entity-guide) and [DTO Guide](/backend/dto-guide)
|
|
@@ -13,6 +13,7 @@ A roadmap helps convert that documented knowledge into a focused set of high-val
|
|
|
13
13
|
Current root skills include:
|
|
14
14
|
|
|
15
15
|
- `cabloy-workflow`
|
|
16
|
+
- `cabloy-domain-planning`
|
|
16
17
|
- `cabloy-contract-loop`
|
|
17
18
|
- `cabloy-resource-field-update`
|
|
18
19
|
- `cabloy-module-removal`
|
|
@@ -20,6 +21,7 @@ Current root skills include:
|
|
|
20
21
|
Their current roles are:
|
|
21
22
|
|
|
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
|
|
23
25
|
- `cabloy-contract-loop` → backend/frontend contract regeneration, reverse-chain handling, and drift diagnosis
|
|
24
26
|
- `cabloy-resource-field-update` → existing backend resource-field changes with `fileVersion` and renderer-aware follow-up
|
|
25
27
|
- `cabloy-module-removal` → backend/frontend/fullstack module deletion order, generated-runtime cleanup, and verification
|
package/cabloy-docs/ai/skills.md
CHANGED
|
@@ -41,6 +41,7 @@ For edition-aware skills, use [Edition Detection for AI Workflows](/ai/edition-d
|
|
|
41
41
|
Current examples include:
|
|
42
42
|
|
|
43
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
|
|
44
45
|
- `cabloy-contract-loop` for backend/frontend contract regeneration and drift diagnosis
|
|
45
46
|
- `cabloy-resource-field-update` for updating an existing backend resource field thread
|
|
46
47
|
- `cabloy-module-removal` for removing a backend, frontend, or fullstack module cleanly, including generated-runtime cleanup, stale-residue recovery, and verification
|