cabloy 5.1.161 → 5.1.162
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/.cabloy-version +1 -1
- package/CHANGELOG.md +13 -0
- package/CLAUDE.md +1 -1
- package/CONTRIBUTING.md +1 -1
- package/README.md +34 -58
- package/package.json +1 -1
- package/repo-docs/.vitepress/config.mjs +58 -32
- package/repo-docs/ai/ai-spec-driven-development.md +99 -0
- package/repo-docs/ai/docs-skills-rules-mapping.md +25 -8
- package/repo-docs/ai/edition-consistency-checklist.md +2 -3
- package/repo-docs/ai/introduction.md +7 -4
- package/repo-docs/ai/playbook-spec-execution.md +19 -5
- package/repo-docs/ai/playbook-spec-generation.md +69 -101
- package/repo-docs/ai/repo-guidance.md +1 -1
- package/repo-docs/ai/skills.md +31 -10
- package/repo-docs/backend/dto-guide.md +1 -0
- package/repo-docs/backend/openapi-guide.md +1 -1
- package/repo-docs/editions/overview.md +51 -120
- package/repo-docs/frontend/environment-config-guide.md +1 -1
- package/repo-docs/frontend/form-layout-guide.md +4 -2
- package/repo-docs/frontend/introduction.md +2 -1
- package/repo-docs/frontend/quickstart.md +2 -8
- package/repo-docs/frontend/scripts.md +7 -3
- package/repo-docs/frontend/ssr-architecture-overview.md +1 -1
- package/repo-docs/frontend/ssr-build-deploy-guide.md +4 -2
- package/repo-docs/fullstack/comparison-with-other-frameworks.md +6 -2
- package/repo-docs/fullstack/contract-loop-playbook.md +4 -0
- package/repo-docs/fullstack/introduction.md +13 -4
- package/repo-docs/fullstack/parallel-worktree-environment.md +2 -0
- package/repo-docs/fullstack/quickstart.md +65 -74
- package/repo-docs/fullstack/semantic-presentation-contract.md +121 -0
- package/repo-docs/fullstack/ssr-site-and-flavor-setup.md +2 -2
- package/repo-docs/index.md +16 -11
- package/repo-docs/reference/glossary.md +30 -0
- package/repo-docs/reference/package-map.md +1 -1
- package/repo-docs/reference/repo-scripts.md +6 -4
- package/vona/pnpm-lock.yaml +10 -96
- package/zova/pnpm-lock.yaml +8 -0
- package/zova/src/suite/a-home/modules/home-base/src/.metadata/component/siteEntryTables.ts +12 -0
- package/zova/src/suite/a-home/modules/home-base/src/.metadata/index.ts +13 -0
- package/zova/src/suite/a-home/modules/home-base/src/component/siteEntryTables/controller.tsx +71 -0
- package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +8 -0
- package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +8 -0
- package/zova/src/suite/a-home/modules/home-indexadmin/package.json +3 -0
- package/zova/src/suite/a-home/modules/home-indexadmin/src/page/dashboard/controller.tsx +6 -13
- package/zova/src/suite/a-home/modules/home-indexweb/package.json +3 -1
- package/zova/src/suite/a-home/modules/home-indexweb/src/page/home/controller.tsx +6 -14
- package/repo-docs/ai/edition-detection.md +0 -30
- package/repo-docs/editions/cabloy-basic.md +0 -26
- package/repo-docs/editions/cabloy-start.md +0 -53
- package/repo-docs/editions/choosing-between-basic-and-start.md +0 -83
- package/repo-docs/editions/detection.md +0 -31
|
@@ -1,82 +1,56 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Generate a Cabloy Suite Specification
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
In Claude Code, describe the business capability you want to plan:
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Use `cabloy-spec-generation` when you need to:
|
|
10
|
-
|
|
11
|
-
- establish a new suite's PRD, SRS, WBS, test plan, progress register, and initial ADR
|
|
12
|
-
- extend an existing suite's authoritative planning records
|
|
13
|
-
- turn product intent into traceable delivery and acceptance records
|
|
14
|
-
- prepare an approved handoff for implementation
|
|
15
|
-
|
|
16
|
-
Use a different workflow when:
|
|
17
|
-
|
|
18
|
-
- provider, suite, or module identity is unresolved — use `cabloy-domain-planning`
|
|
19
|
-
- the task is approved backend or frontend scaffolding — use `cabloy-backend-scaffold` or `cabloy-frontend-scaffold`
|
|
20
|
-
- the task is Vona/Zova contract synchronization or generated-consumer drift — use `cabloy-contract-loop`
|
|
21
|
-
- the task is one already approved, bounded WBS increment — use [Playbook: Execute an Approved Cabloy Specification Increment](/ai/playbook-spec-execution)
|
|
22
|
-
|
|
23
|
-
## Start with repository and edition discovery
|
|
24
|
-
|
|
25
|
-
Before naming a suite, describing source topology, or recommending a site, flavor, UI, SSR, or command path:
|
|
26
|
-
|
|
27
|
-
1. inspect the active repository root and edition marker
|
|
28
|
-
2. inspect the root `package.json`, `CLAUDE.md`, relevant CLI entrypoints, and existing suite records
|
|
29
|
-
3. separate observed source facts from confirmed user inputs, proposed targets, and `TODO(confirm from active source)` items
|
|
30
|
-
|
|
31
|
-
Cabloy Basic and Cabloy Start share the planning model, but their runtime details can differ. Do not carry a Basic command, site identifier, flavor, UI assumption, or generated-output path into Start without confirming it in the active Start source.
|
|
32
|
-
|
|
33
|
-
Read [Edition Detection for AI Workflows](/ai/edition-detection), [Repo Guidance](/ai/repo-guidance), [Repo Scripts](/reference/repo-scripts), and [Package Map](/reference/package-map) before making repository-specific claims.
|
|
34
|
-
|
|
35
|
-
## Classify the planning request
|
|
5
|
+
```text
|
|
6
|
+
/cabloy-spec-generation <business description>
|
|
7
|
+
```
|
|
36
8
|
|
|
37
|
-
|
|
9
|
+
For example:
|
|
38
10
|
|
|
39
|
-
|
|
11
|
+
```text
|
|
12
|
+
/cabloy-spec-generation Plan a multi-tenant equipment-maintenance suite for technicians and operations managers, with work orders, asset history, role-based access, and an Admin dashboard.
|
|
13
|
+
```
|
|
40
14
|
|
|
41
|
-
|
|
15
|
+
You do not need to provide every product or technical decision in the first prompt. Cabloy AI inspects the active repository, asks focused questions, recommends boundaries where needed, and shows a confirmation summary. It generates or updates the suite specification set only after you explicitly approve that summary.
|
|
42
16
|
|
|
43
|
-
|
|
17
|
+
A specification set establishes product intent, technical contracts, delivery structure, acceptance procedures, and decision history. It does **not** prove that application code, generated artifacts, tests, or acceptance evidence already exist.
|
|
44
18
|
|
|
45
|
-
|
|
19
|
+
This guide is the planning half of [AI Spec-Driven Development](/ai/ai-spec-driven-development). It explains the visible workflow; the `cabloy-spec-generation` Skill retains the detailed procedural checks that operate it.
|
|
46
20
|
|
|
47
|
-
|
|
21
|
+
## When to use it
|
|
48
22
|
|
|
49
|
-
|
|
23
|
+
Run `/cabloy-spec-generation <business description>` when you want to:
|
|
50
24
|
|
|
51
|
-
|
|
25
|
+
- establish a new long-lived business suite and its PRD, SRS, WBS, test plan, progress register, and initial ADR
|
|
26
|
+
- update an existing suite's requirements, contracts, scope, delivery plan, or acceptance planning
|
|
27
|
+
- turn confirmed product intent into traceable delivery and acceptance records before implementation
|
|
52
28
|
|
|
53
|
-
|
|
29
|
+
Use a different path when the task is already an approved bounded WBS increment, direct backend or frontend implementation, or Vona/Zova contract synchronization. If the provider, suite, or capability identity is still unresolved, AI guides that decision before it creates a competing suite hierarchy.
|
|
54
30
|
|
|
55
|
-
|
|
31
|
+
## What happens after you invoke it
|
|
56
32
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
33
|
+
1. **AI checks the current repository.** It detects the active Cabloy edition, reads the relevant repository guidance and existing suite records, and distinguishes observed source facts from your confirmed decisions, proposals, and unresolved items.
|
|
34
|
+
2. **AI identifies the planning scope.** It distinguishes a new suite, an update to an existing specification set, and a deliberately smaller planning request. Cabloy Basic and Cabloy Start share the planning model, but their runtime details can differ, so the active source remains authoritative for edition-specific facts.
|
|
35
|
+
3. **AI asks focused questions.** You provide only the decisions that are needed to make the plan coherent. AI can recommend a boundary, but it identifies a recommendation as a proposal rather than treating it as confirmed input.
|
|
36
|
+
4. **AI presents a confirmation summary.** The summary states what will be created or changed, what remains unresolved, and which decisions or WBS branches remain gated.
|
|
37
|
+
5. **You approve or revise the summary.** No specification file is generated, replaced, or treated as approved merely because a question was asked or left unanswered. A confirmation to generate records also does not accept a durable ADR; a decision remains proposed until it is explicitly accepted.
|
|
38
|
+
6. **AI generates or updates the set.** It links the planning records, preserves traceability and stable identifiers, refreshes applicable derived planning views, and reports the resulting files, unresolved decisions, and next workflow.
|
|
60
39
|
|
|
61
|
-
|
|
40
|
+
## What you may be asked to confirm
|
|
62
41
|
|
|
63
|
-
|
|
64
|
-
| ---------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
65
|
-
| `README.md` | Index, reading order, topology summary, and authority map |
|
|
66
|
-
| `prd.md` | Product outcomes, personas, scope, journeys, business rules, and launch criteria |
|
|
67
|
-
| `srs.md` | Technical contracts, ownership, data, tenant, authorization, lifecycle, API, and nonfunctional boundaries |
|
|
68
|
-
| `pdp-wbs.md` | Dependency order, bounded delivery tasks, completion checks, and contract-loop checkpoints |
|
|
69
|
-
| `test-plan.md` | Formal ATP scenarios, procedures, fixtures, expected proof, and release gates |
|
|
70
|
-
| `decisions/*.md` | Durable suite decisions and their alternatives, consequences, and gates |
|
|
71
|
-
| Evidence records | Observed, redacted proof only |
|
|
72
|
-
| `progress.md` | Derived execution status, blockers, evidence links, and next proof |
|
|
73
|
-
| `implementation-*.svg` | Deterministic derived views of planning and progress records |
|
|
42
|
+
The initial business description can be short. During the conversation, AI may ask you to confirm:
|
|
74
43
|
|
|
75
|
-
|
|
44
|
+
- the business outcome, audiences, in-scope capabilities, exclusions, and deferred scope
|
|
45
|
+
- suite identity, capability ownership, and the target `repo-specs/<suite>/` directory
|
|
46
|
+
- the Web, Admin, or other site strategy that current source and confirmed requirements support
|
|
47
|
+
- persistence, ownership, tenant, authorization, privacy, lifecycle, migration, and integration constraints
|
|
48
|
+
- delivery, release, and verification expectations
|
|
49
|
+
- unresolved durable decisions, the WBS branches they block, justified optional records, and the initial delivery status
|
|
76
50
|
|
|
77
|
-
|
|
51
|
+
This is a design confirmation, not a request to invent implementation details prematurely. When a fact must come from the active repository, AI verifies it rather than carrying assumptions across editions.
|
|
78
52
|
|
|
79
|
-
##
|
|
53
|
+
## What gets generated or updated
|
|
80
54
|
|
|
81
55
|
For a new long-lived suite, the normal core set is:
|
|
82
56
|
|
|
@@ -94,62 +68,56 @@ repo-specs/<suite>/
|
|
|
94
68
|
└── 0001-*.md
|
|
95
69
|
```
|
|
96
70
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
71
|
+
| Record | What it provides |
|
|
72
|
+
| -------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
73
|
+
| `README.md` | Index, reading order, topology summary, and authority map |
|
|
74
|
+
| `prd.md` | Product outcomes, audiences, scope, journeys, and business rules |
|
|
75
|
+
| `srs.md` and accepted ADRs | Technical contracts and durable decisions |
|
|
76
|
+
| `pdp-wbs.md` | Bounded delivery work, dependencies, completion checks, and applicable Contract Loop checkpoints |
|
|
77
|
+
| `test-plan.md` | Acceptance procedures, expected proof, and release gates |
|
|
78
|
+
| `progress.md` and charts | Derived delivery status and planning views, not upstream authority |
|
|
100
79
|
|
|
101
|
-
|
|
102
|
-
- intended product outcome, audiences, in-scope capabilities, and deferred scope
|
|
103
|
-
- confirmed and unresolved tenant, authorization, privacy, ownership, lifecycle, migration, and integration constraints
|
|
104
|
-
- site strategy at the level actually supported by current source and confirmed inputs
|
|
105
|
-
- required core documents and justified optional records
|
|
106
|
-
- unresolved decision gates and which WBS branches they block
|
|
107
|
-
- the initial delivery-status policy
|
|
80
|
+
AI adds presentation contracts, staged rollout records, runbooks, extra ADRs, or an `evidence/` directory only when the confirmed scope justifies them. It does not create empty evidence records to make testing or delivery appear to have started.
|
|
108
81
|
|
|
109
|
-
|
|
82
|
+
For an existing suite, the workflow updates the owning upstream authority before dependent records. It preserves existing identifiers, accepted decisions, history, and evidence conventions rather than silently overwriting them or creating a parallel planning set.
|
|
110
83
|
|
|
111
|
-
##
|
|
84
|
+
## Change or add requirements
|
|
112
85
|
|
|
113
|
-
Use
|
|
86
|
+
Use the same Skill whenever an existing suite needs a changed requirement or a new capability. Describe the requested change in Claude Code:
|
|
114
87
|
|
|
115
|
-
|
|
88
|
+
```text
|
|
89
|
+
/cabloy-spec-generation <changed or new business requirement>
|
|
90
|
+
```
|
|
116
91
|
|
|
117
|
-
-
|
|
118
|
-
- `in-progress`
|
|
119
|
-
- `implementation-complete`
|
|
120
|
-
- `verified`
|
|
121
|
-
- `blocked`
|
|
122
|
-
- `waived`
|
|
123
|
-
- `deferred`
|
|
92
|
+
AI reads the existing specification set, identifies the product, contract, decision, WBS, acceptance, and progress records affected by the change, then asks you to confirm the revised scope and any new boundaries. It updates the upstream PRD, SRS, or proposed/accepted ADR before it updates dependent WBS, ATP, progress, and derived-chart records.
|
|
124
93
|
|
|
125
|
-
|
|
94
|
+
If the change affects an approved or in-progress increment, return to planning first. Confirm the revised authority and delivery boundary before resuming execution; do not use an execution handoff or source workaround to redefine the requirement or contract.
|
|
126
95
|
|
|
127
|
-
##
|
|
96
|
+
## How traceability and evidence work
|
|
128
97
|
|
|
129
|
-
|
|
98
|
+
Cabloy connects the specification set through **Traceable Spec Delivery**:
|
|
130
99
|
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
# Use this non-mutating check when verifying an existing chart state:
|
|
134
|
-
npm run spec:charts:check -- <suite>
|
|
100
|
+
```text
|
|
101
|
+
PRD → SRS → WBS → ATP → Evidence
|
|
135
102
|
```
|
|
136
103
|
|
|
137
|
-
|
|
104
|
+
A product or technical change belongs in its PRD, SRS, or accepted ADR before its WBS, acceptance, progress, evidence, and chart implications are updated. A progress entry or chart cannot introduce a requirement, resolve a contract conflict, or accept an ADR.
|
|
138
105
|
|
|
139
|
-
|
|
106
|
+
Planning records and derived charts do not establish `implementation-complete` or `verified`. `verified` requires the applicable acceptance procedure and retained, redacted observed evidence. A generated plan, planned command, scaffold, screenshot, or unrelated check is not automatically sufficient proof.
|
|
140
107
|
|
|
141
|
-
|
|
108
|
+
## What happens next
|
|
142
109
|
|
|
143
|
-
|
|
110
|
+
After the specification set is coherent and one bounded WBS increment is approved, execute that increment in Claude Code:
|
|
144
111
|
|
|
145
|
-
|
|
112
|
+
```text
|
|
113
|
+
/cabloy-spec-execution <WBS-ID>
|
|
114
|
+
```
|
|
146
115
|
|
|
147
|
-
|
|
148
|
-
- approved backend increment → `cabloy-backend-scaffold`
|
|
149
|
-
- approved frontend increment → `cabloy-frontend-scaffold`
|
|
150
|
-
- contract synchronization or generated-consumer drift → `cabloy-contract-loop`
|
|
151
|
-
- an approved bounded WBS increment → [Playbook: Execute an Approved Cabloy Specification Increment](/ai/playbook-spec-execution)
|
|
116
|
+
Choose one named WBS item, or an explicitly approved finite phase with a closure boundary. Do not use execution to implement an entire suite automatically or to resolve an upstream product, contract, dependency, scope, or durable-decision conflict; return to planning when those records need to change.
|
|
152
117
|
|
|
153
|
-
|
|
118
|
+
## Further reading
|
|
154
119
|
|
|
155
|
-
|
|
120
|
+
- [AI Spec-Driven Development](/ai/ai-spec-driven-development) for the authority and evidence model
|
|
121
|
+
- [Execute an Approved Cabloy Specification Increment](/ai/playbook-spec-execution) for bounded implementation, verification, evidence, and progress handoff
|
|
122
|
+
- [Docs, Skills, Rules, and CLI Mapping](/ai/docs-skills-rules-mapping) for the boundary between public guidance, skills, suite records, and internal rationale
|
|
123
|
+
- [Repo Scripts](/reference/repo-scripts#chart-input-contract) for the derived-chart input contract and manual chart commands
|
|
@@ -35,7 +35,7 @@ This is more reliable than copying old file structures from examples without und
|
|
|
35
35
|
- use `repo-docs-internal/` for supporting maintainer rationale
|
|
36
36
|
- continue from public docs, rules, skills, source, and tests when a specific internal record is unavailable or irrelevant; do not create a replacement document implicitly
|
|
37
37
|
|
|
38
|
-
For planning work, read the suite README, PRD, SRS, WBS, test plan, and progress records in the order appropriate to the task. `cabloy-spec-generation` maintains planning authority; `cabloy-spec-execution` acts only on a confirmed, bounded WBS increment. Both require active-source and edition discovery before topology or command claims.
|
|
38
|
+
For planning work, read the suite README, PRD, SRS, WBS, test plan, and progress records in the order appropriate to the task. [AI Spec-Driven Development](/ai/ai-spec-driven-development) explains the public Traceable Spec Delivery method; the suite records retain product, technical, delivery, acceptance, and evidence authority. `cabloy-spec-generation` maintains planning authority; `cabloy-spec-execution` acts only on a confirmed, bounded WBS increment. Both require active-source and edition discovery before topology or command claims.
|
|
39
39
|
|
|
40
40
|
## 4. Treat edition detection as mandatory for UI-sensitive work
|
|
41
41
|
|
package/repo-docs/ai/skills.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Skills are the procedural layer of Cabloy’s AI development model.
|
|
4
4
|
|
|
5
|
+
## Using a Skill in Claude Code
|
|
6
|
+
|
|
7
|
+
Invoke a Cabloy Skill by typing its slash name followed by the task input. For example, describe the business capability you want to plan:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
/cabloy-spec-generation <business description>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The AI guides you through the task-specific confirmation and next steps. See [Generate a Cabloy Suite Specification](/ai/playbook-spec-generation) for the complete planning experience.
|
|
14
|
+
|
|
5
15
|
## What a skill should do here
|
|
6
16
|
|
|
7
17
|
A Cabloy skill should reduce repeated reasoning cost by encoding workflows such as:
|
|
@@ -34,20 +44,31 @@ A strong Cabloy skill usually includes:
|
|
|
34
44
|
|
|
35
45
|
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
46
|
|
|
37
|
-
For edition-aware skills, use [
|
|
47
|
+
For edition-aware skills, use [Cabloy Editions: For AI Development](/editions/overview#for-ai-development) and [Edition Consistency Checklist](/ai/edition-consistency-checklist) as the durable review surfaces before expanding edition-specific branches.
|
|
38
48
|
|
|
39
|
-
##
|
|
49
|
+
## Current root workflow skills
|
|
40
50
|
|
|
41
|
-
|
|
51
|
+
The repository currently provides these cross-stack and monorepo-wide workflows in root `.claude/skills/`:
|
|
42
52
|
|
|
43
53
|
- `cabloy-workflow` for choosing the correct Cabloy work path before implementation
|
|
44
54
|
- `cabloy-domain-planning` for proposing and confirming providerId, suite, and initial module names before scaffolding a new business domain
|
|
45
|
-
- `cabloy-spec-generation` for creating or maintaining suite-local planning authority, traceability, and derived planning views before implementation
|
|
46
|
-
- `cabloy-spec-execution` for coordinating one confirmed WBS increment through specialist implementation, evidence, and derived progress updates
|
|
47
|
-
- `cabloy-contract-loop` for backend/frontend contract regeneration and drift diagnosis
|
|
48
|
-
- `cabloy-resource-field-update` for updating an existing backend resource field thread
|
|
49
|
-
- `cabloy-module-removal` for removing a backend, frontend, or fullstack module cleanly, including generated-runtime cleanup, stale-residue recovery, and verification
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
- `cabloy-spec-generation` for creating or maintaining suite-local planning authority, traceability, and derived planning views before implementation; see [Generate a Cabloy Suite Specification](/ai/playbook-spec-generation)
|
|
56
|
+
- `cabloy-spec-execution` for coordinating one confirmed WBS increment through specialist implementation, evidence, and derived progress updates; see [Execute an Approved Cabloy Specification Increment](/ai/playbook-spec-execution)
|
|
57
|
+
- `cabloy-contract-loop` for backend/frontend contract regeneration and drift diagnosis; see [Contract Loop Playbook](/fullstack/contract-loop-playbook)
|
|
58
|
+
- `cabloy-resource-field-update` for updating an existing backend resource field thread; see [Existing Resource Field Update](/backend/resource-field-update)
|
|
59
|
+
- `cabloy-module-removal` for removing a backend, frontend, or fullstack module cleanly, including generated-runtime cleanup, stale-residue recovery, and verification; see [Module Removal](/ai/playbook-module-removal)
|
|
60
|
+
- `cabloy-backend-scaffold` for selecting the CLI-first Vona path to create or extend backend modules, beans, CRUD resources, DTOs, persistence, and tests, then checking contract, migration, metadata, and verification follow-up; see [Backend CLI](/backend/cli) and [CRUD Workflow](/backend/crud-workflow)
|
|
61
|
+
- `cabloy-frontend-scaffold` for selecting the Zova CLI create, refactor, metadata, or OpenAPI path for pages, components, APIs, models, routes, and SSR-aware frontend work, then checking routing, state/contracts, hydration, UI, and verification follow-up; see [Frontend CLI](/frontend/cli) and [Page Guide](/frontend/page-guide)
|
|
62
|
+
- `cabloy-master-detail` for generator-first parent-owned detail and recursive nested-detail scaffolding, including aggregate-versus-standalone choices and nested `detail*` DTO naming and placement rules; see [Master-Detail Workflow](/backend/master-detail-workflow) and [Master-Detail Source Reading Map](/backend/master-detail-source-reading-map)
|
|
63
|
+
- `cabloy-worktree-environment` for explicitly invoked, confirmation-gated setup of deterministic, secret-safe Vona and Zova local environment overrides for an existing linked worktree. It does not allocate ports or isolate every external service; see [Parallel Worktree Environment](/fullstack/parallel-worktree-environment)
|
|
64
|
+
- `cabloy-zova-source-reading` for Zova-native source reading and runtime tracing through controllers, beans, IoC, reactivity, routing, and SSR before offering approximate Vue comparisons; see [Reading Zova for Vue Developers](/frontend/reading-zova-for-vue-developers) and [Zova Source Reading Map](/frontend/zova-source-reading-map)
|
|
65
|
+
|
|
66
|
+
The specification workflows show the same boundary: [AI Spec-Driven Development](/ai/ai-spec-driven-development) explains the public Traceable Spec Delivery method, while [Generate a Cabloy Suite Specification](/ai/playbook-spec-generation) and [Execute an Approved Cabloy Specification Increment](/ai/playbook-spec-execution) explain its operational paths. The skills retain branching, confirmation gates, specialist routing, and evidence protocol; suite-local records remain the authority for a specific increment.
|
|
52
67
|
|
|
53
68
|
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.
|
|
69
|
+
|
|
70
|
+
## Advanced subtree-local diagnostics
|
|
71
|
+
|
|
72
|
+
`detect-ssr-leak` is an advanced Skill local to the Vona workspace for investigating suspected Node.js SSR memory growth. See [Framework Performance](/fullstack/framework-performance#how-to-read-this-example) for the relevant diagnostic context.
|
|
73
|
+
|
|
74
|
+
Use its instrumentation and snapshot stages only in a controlled local or nonproduction environment. Some stages create temporary diagnostic access or artifacts; remove them and restore the diagnostic environment when finished. Heap snapshots can contain sensitive in-memory application or request data, so keep them access-controlled, never commit or share them, and delete them promptly.
|
|
@@ -47,6 +47,7 @@ Read this guide together with:
|
|
|
47
47
|
- [DTO Infer and Generation](/backend/dto-infer-generation)
|
|
48
48
|
- [Validation Guide](/backend/validation-guide)
|
|
49
49
|
- [OpenAPI Guide](/backend/openapi-guide)
|
|
50
|
+
- [Semantic Presentation Contract](/fullstack/semantic-presentation-contract) for the boundary between an operation DTO and its presentation translation
|
|
50
51
|
|
|
51
52
|
## `@Api.field`
|
|
52
53
|
|
|
@@ -74,7 +74,7 @@ The same emitted metadata has coordinated but distinct consumers:
|
|
|
74
74
|
|
|
75
75
|
For the form-derived scenes `form-view`, `form-create`, and `filter`, a field's base `rest` metadata is followed by the shared `rest.form` overlay and then the exact scene overlay. This lets one contract describe common form behavior while still declaring a create- or filter-specific exception.
|
|
76
76
|
|
|
77
|
-
The end-to-end rule is therefore not “the frontend hides a field.” Vona uses the DTO contract to sanitize read-only request input, while Zova uses compatible metadata to render the relevant scene. See [DTO Guide](/backend/dto-guide) for declaring a DTO scene, [Validation Guide](/backend/validation-guide) for server-side readonly handling, [OpenAPI Runtime Under the Hood](/frontend/a-openapi-under-the-hood) for Zova schema loading, and [Form Scene to Page Meta Guide](/frontend/form-scene-to-page-meta-guide) for frontend form-scene flow.
|
|
77
|
+
The end-to-end rule is therefore not “the frontend hides a field.” Vona uses the DTO contract to sanitize read-only request input, while Zova uses compatible metadata to render the relevant scene. See [DTO Guide](/backend/dto-guide) for declaring a DTO scene, [Semantic Presentation Contract](/fullstack/semantic-presentation-contract) for the authority boundary behind presentation translation, [Validation Guide](/backend/validation-guide) for server-side readonly handling, [OpenAPI Runtime Under the Hood](/frontend/a-openapi-under-the-hood) for Zova schema loading, and [Form Scene to Page Meta Guide](/frontend/form-scene-to-page-meta-guide) for frontend form-scene flow.
|
|
78
78
|
|
|
79
79
|
## Controllers, DTOs, entities, and examples all contribute
|
|
80
80
|
|
|
@@ -1,150 +1,81 @@
|
|
|
1
|
-
# Editions
|
|
1
|
+
# Cabloy Editions
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Cabloy is available through two complete project baselines: Cabloy Basic and Cabloy Start. Both use the same Cabloy fullstack direction—Vona for the backend framework and runtime layer, Zova for the frontend framework and application layer—but intentionally provide different default application baselines.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## At a glance
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
| Edition | Repository | License | Default path | UI layer |
|
|
8
|
+
| ------------ | ------------------------------------------------------------------------ | --------------------------------------------------------------- | --------------------------------------------- | ---------------------- |
|
|
9
|
+
| Cabloy Basic | [github.com/cabloy/cabloy](https://github.com/cabloy/cabloy) | [MIT](https://github.com/cabloy/cabloy/blob/main/LICENSE) | `npm create cabloy` | DaisyUI + Tailwind CSS |
|
|
10
|
+
| Cabloy Start | [github.com/cabloy/cabloy-start](https://github.com/cabloy/cabloy-start) | [MIT](https://github.com/cabloy/cabloy-start/blob/main/LICENSE) | Clone the repository, then run `npm run init` | Vuetify |
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
Both editions share Vona + Zova, suite-based modular delivery, CLI-first workflows, bidirectional type synchronization, and coordinated SSR application delivery. Their UI layer, frontend flavors, suites and modules, SSR site baselines, project assets, generated outputs, root scripts, and onboarding paths can differ.
|
|
11
13
|
|
|
12
|
-
##
|
|
14
|
+
## Comparison
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
| ------------ | --------------------------------------------------------------------------------- |
|
|
16
|
-
| Cabloy | The coordinated Node.js fullstack system. |
|
|
17
|
-
| Vona | Cabloy's backend framework and runtime layer. |
|
|
18
|
-
| Zova | Cabloy's frontend framework and application layer. |
|
|
19
|
-
| Cabloy Basic | The public reference and community edition baseline. |
|
|
20
|
-
| Cabloy Start | The public MIT-licensed business-system edition baseline in a sibling repository. |
|
|
16
|
+
**Legend:** ✅ Included in the default edition baseline · — Not included in the default edition baseline
|
|
21
17
|
|
|
22
|
-
|
|
18
|
+
### Included core capabilities
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
| Capability | Description | Cabloy Basic | Cabloy Start |
|
|
21
|
+
| -------------------- | --------------------------------------------------------------------------------- | ------------ | ------------ |
|
|
22
|
+
| Master–detail forms | Supports nested master–detail forms, including multiple levels of detail records. | ✅ | ✅ |
|
|
23
|
+
| Image uploads | Supports local storage and Cloudflare storage backends. | ✅ | ✅ |
|
|
24
|
+
| File uploads | Supports local storage and Cloudflare storage backends. | ✅ | ✅ |
|
|
25
|
+
| Payment integrations | Demonstrates simulated payments, PayPal, and Stripe integrations. | ✅ | ✅ |
|
|
26
|
+
| Markdown editor | Includes image uploads and syntax highlighting. | ✅ | ✅ |
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
### Included demonstration suites
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
| Suite | What it demonstrates | Cabloy Basic | Cabloy Start |
|
|
31
|
+
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------ | ------------ |
|
|
32
|
+
| Student Training Management | Master–detail forms, nested detail records, image uploads, and file uploads. Cabloy Start additionally demonstrates data-scope-based RBAC. | ✅ | ✅ |
|
|
33
|
+
| E-commerce | A complete Admin site, Web site, personal center, payment flows, Markdown editing, and related capabilities. | ✅ | — |
|
|
34
|
+
| System Management | User management, role management, department management, RBAC authorization, and menu authorization. | — | ✅ |
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
2. explain the shared Cabloy architecture once before branching into edition-specific notes
|
|
32
|
-
3. split documentation or workflow guidance only where the editions intentionally diverge
|
|
33
|
-
4. use explicit edition markers and flavor names instead of treating the editions as interchangeable
|
|
36
|
+
> “Not included” means that the suite is not part of the default edition baseline. It does not limit what can be built with Cabloy.
|
|
34
37
|
|
|
35
|
-
##
|
|
38
|
+
## Choosing an edition
|
|
36
39
|
|
|
37
|
-
|
|
40
|
+
Choose **Cabloy Basic** when you want the public framework and reference edition, the default `npm create cabloy` path, and the examples and workflows provided by this repository.
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
Choose **Cabloy Start** when you want the public MIT-licensed sibling repository and its business-system-oriented baseline with Start-specific assets, SSR sites, and a Vuetify UI layer.
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
This is a choice of default baseline, not a general capability limit. Both editions follow the same Cabloy fullstack architecture.
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
- [Cabloy Basic](/editions/cabloy-basic)
|
|
45
|
-
- [Cabloy Start](/editions/cabloy-start)
|
|
46
|
+
## Cabloy Basic
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
Cabloy Basic is the public framework and reference edition. Projects created with `npm create cabloy` follow the Basic route, and the public examples and root scripts in this repository use it as their default baseline.
|
|
48
49
|
|
|
49
|
-
Use
|
|
50
|
+
Use the [Fullstack Quickstart](/fullstack/quickstart) to create a new Basic project. When working in this repository, verify its current scripts before choosing a flavor or implementation workflow.
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
- [Fullstack Introduction](/fullstack/introduction)
|
|
53
|
-
- [AI Development Introduction](/ai/introduction)
|
|
52
|
+
## Cabloy Start
|
|
54
53
|
|
|
55
|
-
|
|
54
|
+
Cabloy Start is a public MIT-licensed edition maintained in its own repository. Clone [github.com/cabloy/cabloy-start](https://github.com/cabloy/cabloy-start), then run `npm run init` in that checkout.
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
Start has its own frontend flavors, suite and module composition, SSR site baselines, project assets, scripts, and generated outputs. Inspect the active Start repository before naming or relying on any of those edition-specific surfaces.
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
- **Zova** as the frontend framework and application layer
|
|
61
|
-
- suite-based modules across the stack
|
|
62
|
-
- root-level `npm run vona` and `npm run zova` entrypoints
|
|
63
|
-
- CLI-backed workflows for generation, refactoring, metadata, and verification
|
|
58
|
+
## Working in an existing checkout
|
|
64
59
|
|
|
65
|
-
|
|
60
|
+
Detect the active edition before making UI-sensitive, flavor-sensitive, module-sensitive, SSR-sensitive, or asset-sensitive assumptions:
|
|
66
61
|
|
|
67
|
-
|
|
62
|
+
| Repository-root markers | Result |
|
|
63
|
+
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
64
|
+
| Only `__CABLOY_BASIC__` | Cabloy Basic |
|
|
65
|
+
| Only `__CABLOY_START__` | Cabloy Start |
|
|
66
|
+
| Both markers | Invalid or ambiguous checkout; stop before making edition-specific assumptions. |
|
|
67
|
+
| Neither marker | Inspect the owning `package.json` and nearby repository structure, then ask before making an edition-specific assumption. |
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
## For AI Development
|
|
70
70
|
|
|
71
|
-
-
|
|
72
|
-
- projects created with `npm create cabloy` follow the Cabloy Basic route
|
|
73
|
-
- the public docs and examples in this repo use Cabloy Basic as the default baseline
|
|
71
|
+
AI-assisted work benefits from edition awareness whenever it depends on the UI library, frontend flavors, module availability, SSR sites, project assets, generated-output locations, or root scripts.
|
|
74
72
|
|
|
75
|
-
|
|
73
|
+
Before recommending an implementation path:
|
|
76
74
|
|
|
77
|
-
|
|
75
|
+
1. detect the active edition from the repository marker
|
|
76
|
+
2. verify the relevant current scripts or CLI entry points
|
|
77
|
+
3. branch guidance only where the editions genuinely diverge
|
|
78
78
|
|
|
79
|
-
Cabloy
|
|
79
|
+
Keep shared Cabloy and contract-loop guidance shared. Do not project Basic-specific examples, flavors, UI assumptions, or `npm create cabloy` onboarding onto a Start checkout, or the reverse.
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
- users clone the public repository source directly, then run `npm run init`
|
|
83
|
-
- Start uses its own edition-specific flavors, SSR site baselines, and project assets
|
|
84
|
-
|
|
85
|
-
Cabloy Start is optimized as a business-system baseline for more complex systems while staying on the same Cabloy fullstack direction.
|
|
86
|
-
|
|
87
|
-
## Architecture layering
|
|
88
|
-
|
|
89
|
-
Most of the frontend engineering layer is shared, while the edition-specific UI layer differs.
|
|
90
|
-
|
|
91
|
-
### Shared frontend engineering layer
|
|
92
|
-
|
|
93
|
-
Across editions, Zova uses the same frontend framework direction and engineering tooling, including:
|
|
94
|
-
|
|
95
|
-
- Vue
|
|
96
|
-
- Vite
|
|
97
|
-
- Quasar tooling such as `quasar dev` and `quasar build`
|
|
98
|
-
- TanStack libraries where applicable
|
|
99
|
-
|
|
100
|
-
Here, Quasar is used for engineering tooling rather than as the edition UI component library.
|
|
101
|
-
|
|
102
|
-
### Edition-specific UI layer
|
|
103
|
-
|
|
104
|
-
The UI component strategy diverges by edition:
|
|
105
|
-
|
|
106
|
-
- **Cabloy Basic**: DaisyUI + Tailwind CSS
|
|
107
|
-
- **Cabloy Start**: Vuetify
|
|
108
|
-
|
|
109
|
-
This difference affects not only UI code, but also module composition, frontend flavor assumptions, SSR site baselines, examples, and AI workflow guidance.
|
|
110
|
-
|
|
111
|
-
## Edition-specific assets
|
|
112
|
-
|
|
113
|
-
The editions intentionally diverge in several surfaces:
|
|
114
|
-
|
|
115
|
-
- UI layer assumptions
|
|
116
|
-
- frontend flavor names
|
|
117
|
-
- suite and module composition
|
|
118
|
-
- admin/web SSR site baselines
|
|
119
|
-
- separate-repository structure and edition-specific project assets
|
|
120
|
-
- generated outputs and root scripts
|
|
121
|
-
- rules, skills, and docs used for AI vibe coding
|
|
122
|
-
|
|
123
|
-
For example:
|
|
124
|
-
|
|
125
|
-
- **Cabloy Basic** provides the `cabloy-basic` suites and the `cabloyBasicAdmin` / `cabloyBasicWeb` Zova flavors
|
|
126
|
-
- **Cabloy Start** uses public flavors such as `cabloyStartAdmin` and `cabloyStartWeb`
|
|
127
|
-
|
|
128
|
-
## Why the repo markers matter
|
|
129
|
-
|
|
130
|
-
The edition markers are not just labels for humans.
|
|
131
|
-
|
|
132
|
-
`__CABLOY_BASIC__` and `__CABLOY_START__` help tools, docs, and AI workflows choose the correct assumptions for:
|
|
133
|
-
|
|
134
|
-
- UI component usage
|
|
135
|
-
- flavor selection
|
|
136
|
-
- module availability
|
|
137
|
-
- SSR site expectations
|
|
138
|
-
- rules, skills, and verification guidance
|
|
139
|
-
|
|
140
|
-
This is why the two editions should be identified explicitly instead of being treated as interchangeable.
|
|
141
|
-
|
|
142
|
-
## Documentation rule
|
|
143
|
-
|
|
144
|
-
Write shared explanations once. Split or annotate only when a workflow changes because of:
|
|
145
|
-
|
|
146
|
-
- UI library assumptions
|
|
147
|
-
- frontend flavor names
|
|
148
|
-
- different modules or assets
|
|
149
|
-
- repository and initialization model
|
|
150
|
-
- edition-specific scripts, generated outputs, or AI workflow guidance
|
|
81
|
+
For the shared architecture and delivery model, see [Fullstack Introduction](/fullstack/introduction) and [AI Development Introduction](/ai/introduction). For front-end command selection, see [Frontend Scripts](/frontend/scripts).
|
|
@@ -124,7 +124,7 @@ For the theme-side contract and edition-aware checklist, see [Theme Guide](/fron
|
|
|
124
124
|
|
|
125
125
|
## Scripts and runtime variants
|
|
126
126
|
|
|
127
|
-
Frontend scripts map directly onto the same runtime dimensions.
|
|
127
|
+
Frontend scripts map directly onto the same runtime dimensions. In the Cabloy Basic default environment, `dev:ssr:*` commands use the Zova standalone SSR development listener (`DEV_SERVER_PORT=9000`), while Vona integrated SSR uses Vona's `SERVER_LISTEN_PORT=7102`. These are separate listeners; `API_BASE_URL` still points from Zova to the Vona server.
|
|
128
128
|
|
|
129
129
|
Representative commands include variants such as:
|
|
130
130
|
|
|
@@ -9,6 +9,8 @@ This guide covers the **structural** layout contract authored in DTO metadata an
|
|
|
9
9
|
|
|
10
10
|
## Choose the layout from the business form
|
|
11
11
|
|
|
12
|
+
Before selecting Form Layout nodes or renderers, define the scene's audience, task, meaningful information areas, and operation-specific contract boundary. See [Semantic Presentation Contract](/fullstack/semantic-presentation-contract).
|
|
13
|
+
|
|
12
14
|
Start with the user's task, information hierarchy, and audience—not with the available layout node types or the number of fields. The generated CRUD layout is a valid baseline to review and refine, not a requirement to preserve unchanged.
|
|
13
15
|
|
|
14
16
|
Choose the smallest structure that communicates the business form:
|
|
@@ -30,7 +32,7 @@ When the business grouping is unknown, keep the simpler layout or clarify the gr
|
|
|
30
32
|
|
|
31
33
|
## The layout layers are different
|
|
32
34
|
|
|
33
|
-
Several APIs contain the word “layout,” but they own different concerns:
|
|
35
|
+
Several APIs contain the word “layout,” but they own different concerns. Presentation metadata translates an already authorized scene contract; it does not define API membership, persistence, validation, authorization, page/state ownership, or SSR privacy:
|
|
34
36
|
|
|
35
37
|
| Surface | Owns | Does not own |
|
|
36
38
|
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
|
|
@@ -377,7 +379,7 @@ Here `formFieldLayout.inline: true` controls how each field wrapper is presented
|
|
|
377
379
|
|
|
378
380
|
## Authoring checklist
|
|
379
381
|
|
|
380
|
-
1.
|
|
382
|
+
1. Use the [Semantic Presentation Contract](/fullstack/semantic-presentation-contract) to identify the audience, task, scene, meaningful information areas, and operation-specific DTO boundary before choosing a structural tree.
|
|
381
383
|
2. Start with DTO or resource metadata; do not hand-patch generated `.zova-rest` artifacts.
|
|
382
384
|
3. Use no structural layout when schema order is sufficient. Otherwise use the smallest layout that communicates the business structure; reserve tabs for genuinely separate business domains or workflows.
|
|
383
385
|
4. Use `formLayout` when the requirement is field placement, Grid or flow structure, groups, or tabs.
|
|
@@ -80,6 +80,7 @@ Use this path when the task is about UI composition, component contracts, form o
|
|
|
80
80
|
|
|
81
81
|
- [Component Guide](/frontend/component-guide)
|
|
82
82
|
- [Form Guide](/frontend/form-guide)
|
|
83
|
+
- [Semantic Presentation Contract](/fullstack/semantic-presentation-contract)
|
|
83
84
|
- [Form Layout Guide](/frontend/form-layout-guide)
|
|
84
85
|
- [Image Guide](/frontend/image-guide)
|
|
85
86
|
- [Zova Form Under the Hood](/frontend/zova-form-under-the-hood)
|
|
@@ -121,7 +122,7 @@ Use this path when the task is about data loading, API contracts, generated SDKs
|
|
|
121
122
|
- [SSR Init Data](/frontend/ssr-init-data)
|
|
122
123
|
- [SSR ClientOnly](/frontend/ssr-client-only)
|
|
123
124
|
- [SSR SEO Meta](/frontend/ssr-seo-meta)
|
|
124
|
-
- [SSR
|
|
125
|
+
- [SSR Environment Variables](/frontend/ssr-env)
|
|
125
126
|
|
|
126
127
|
### Tooling support
|
|
127
128
|
|