cabloy 5.1.60 → 5.1.61

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.
Files changed (76) hide show
  1. package/.claude/hooks/contract-loop-gate.ts +296 -0
  2. package/.claude/settings.json +16 -0
  3. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -0
  4. package/.claude/skills/cabloy-contract-loop/SKILL.md +89 -16
  5. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +102 -14
  6. package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +4 -0
  7. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -14
  8. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +11 -0
  9. package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +2 -0
  10. package/.claude/skills/cabloy-module-removal/SKILL.md +144 -0
  11. package/.claude/skills/cabloy-resource-field-update/SKILL.md +7 -0
  12. package/.claude/skills/cabloy-zova-source-reading/SKILL.md +221 -0
  13. package/.claude/skills/cabloy-zova-source-reading/references/analysis-modes.md +91 -0
  14. package/.claude/skills/cabloy-zova-source-reading/references/core-reading-paths.md +117 -0
  15. package/CHANGELOG.md +22 -0
  16. package/CLAUDE.md +10 -0
  17. package/cabloy-docs/.vitepress/config.mjs +50 -4
  18. package/cabloy-docs/ai/cli-to-skill-map.md +7 -0
  19. package/cabloy-docs/ai/docs-skills-rules-mapping.md +14 -0
  20. package/cabloy-docs/ai/future-skill-roadmap.md +10 -7
  21. package/cabloy-docs/ai/introduction.md +1 -0
  22. package/cabloy-docs/ai/playbook-backend-module.md +6 -0
  23. package/cabloy-docs/ai/playbook-module-removal.md +164 -0
  24. package/cabloy-docs/ai/skills.md +11 -0
  25. package/cabloy-docs/backend/dto-guide.md +6 -0
  26. package/cabloy-docs/backend/entity-guide.md +18 -0
  27. package/cabloy-docs/backend/introduction.md +2 -0
  28. package/cabloy-docs/backend/serialization-guide.md +10 -0
  29. package/cabloy-docs/backend/status-guide.md +271 -0
  30. package/cabloy-docs/frontend/api-guide.md +2 -0
  31. package/cabloy-docs/frontend/bean-scene-authoring.md +2 -0
  32. package/cabloy-docs/frontend/cli.md +12 -0
  33. package/cabloy-docs/frontend/command-scene-authoring.md +495 -0
  34. package/cabloy-docs/frontend/design-principles.md +6 -0
  35. package/cabloy-docs/frontend/fetch-interceptor-guide.md +440 -0
  36. package/cabloy-docs/frontend/form-guide.md +795 -0
  37. package/cabloy-docs/frontend/foundation.md +29 -0
  38. package/cabloy-docs/frontend/introduction.md +12 -1
  39. package/cabloy-docs/frontend/ioc-and-beans.md +6 -0
  40. package/cabloy-docs/frontend/mock-guide.md +1 -0
  41. package/cabloy-docs/frontend/model-architecture.md +252 -39
  42. package/cabloy-docs/frontend/model-resource-best-practices.md +379 -0
  43. package/cabloy-docs/frontend/model-resource-cookbook.md +505 -0
  44. package/cabloy-docs/frontend/model-resource-owner-pattern.md +382 -0
  45. package/cabloy-docs/frontend/model-resource-usage-guide.md +318 -0
  46. package/cabloy-docs/frontend/model-state-guide.md +366 -13
  47. package/cabloy-docs/frontend/openapi-sdk-guide.md +5 -2
  48. package/cabloy-docs/frontend/page-guide.md +6 -0
  49. package/cabloy-docs/frontend/quickstart.md +4 -0
  50. package/cabloy-docs/frontend/reading-zova-for-vue-developers.md +266 -0
  51. package/cabloy-docs/frontend/server-data.md +2 -0
  52. package/cabloy-docs/frontend/zova-form-source-reading-map.md +295 -0
  53. package/cabloy-docs/frontend/zova-form-under-the-hood.md +556 -0
  54. package/cabloy-docs/frontend/zova-reactivity-under-the-hood.md +320 -0
  55. package/cabloy-docs/frontend/zova-source-reading-map.md +327 -0
  56. package/cabloy-docs/frontend/zova-vs-vue3-comparison.md +308 -0
  57. package/cabloy-docs/fullstack/contract-loop-playbook.md +350 -0
  58. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +44 -1
  59. package/cabloy-docs/fullstack/introduction.md +12 -1
  60. package/cabloy-docs/fullstack/openapi-to-sdk.md +19 -9
  61. package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +2 -2
  62. package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +30 -5
  63. package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +9 -7
  64. package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +2 -0
  65. package/cabloy-docs/fullstack/tutorials-overview.md +16 -3
  66. package/cabloy-docs/reference/bean-scene-boilerplates.md +2 -0
  67. package/package.json +2 -1
  68. package/scripts/init.ts +2 -18
  69. package/scripts/initTestData.ts +25 -0
  70. package/scripts/upgrade.ts +17 -2
  71. package/vona/pnpm-lock.yaml +94 -4
  72. package/zova/packages-cli/cli/package.json +2 -2
  73. package/zova/packages-cli/cli-set-front/cli/templates/openapi/config/boilerplate/module/openapi.config.ts +6 -1
  74. package/zova/packages-cli/cli-set-front/package.json +1 -1
  75. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.openapi.generate.ts +34 -4
  76. package/zova/pnpm-lock.yaml +20 -20
@@ -1,31 +1,47 @@
1
1
  # Verification Checklist
2
2
 
3
- After a contract-loop change, check both sides.
3
+ After a contract-loop change, verify the branch that actually applies.
4
4
 
5
- ## Backend verification
5
+ ## Edition verification
6
6
 
7
+ - Basic or Start marker confirmed
8
+ - affected flavor confirmed
9
+ - generation path matches the active edition
10
+
11
+ ## Forward chain verification
12
+
13
+ - backend contract source is correct
7
14
  - controller action contract is correct
8
15
  - DTO and validation align
9
16
  - OpenAPI output reflects the intended shape
10
- - backend tests pass
11
- - `npm run test`
17
+ - module ownership is constrained
18
+ - regeneration commands completed successfully
19
+ - generated SDK or schema outputs are updated
20
+ - thin model facades and downstream consumers still align with the regenerated contract
12
21
  - `npm run tsc`
13
22
  - `npm run build`
14
23
 
15
- ## Frontend verification
16
-
17
- - regeneration commands completed successfully
18
- - generated SDK/schema outputs are updated
19
- - API/model/page/component consumers still typecheck
24
+ ## Reverse chain verification
25
+
26
+ - frontend-owned source is correct
27
+ - metadata generation completed when applicable
28
+ - the relevant flavor build completed successfully
29
+ - `deps:vona` completed
30
+ - backend consumers can resolve the refreshed frontend-generated handoff
31
+ - prefer visible proof under `zova/src/**/.metadata/**` when it is available
32
+ - this repo does not rely on a contract-loop pre-commit gate; the active safeguard is the Claude hook layer
33
+ - if the change was a high-confidence Zova reverse-source edit through the Claude hook path, confirm whether the hook already auto-ran `npm run build:zova:admin` and `npm run deps:vona`
34
+ - if the change was consumer-side, low-confidence, outside the Claude hook path, or in another edition branch, run the reverse sync flow manually instead of assuming it already happened
35
+ - if the real handoff only appears in `.zova-rest`, treat the safeguard as conservative reminder/auto-sync assistance rather than strict proof
20
36
  - `npm run tsc:zova`
21
- - `npm run build:zova`
22
37
  - relevant flavor-specific or route-specific checks
23
38
 
24
- ## Edition verification
39
+ ## Consumer drift verification
25
40
 
26
- - Basic or Start marker confirmed
27
- - affected flavor confirmed
28
- - generation path matches the active edition
41
+ - source truth already looks correct
42
+ - generated output already looks correct
43
+ - the next consumer layer is the place that still looks stale
44
+ - do not patch source or generated artifacts again until the stale consumer path is identified
29
45
 
30
46
  ## Recovery rule for stale local file consumers
31
47
 
@@ -33,6 +49,8 @@ If all of these are true:
33
49
 
34
50
  - generated `.zova-rest` or related generated consumer artifacts already contain the expected new keys or types
35
51
  - the normal regeneration or sync flow already ran
52
+ - when relevant, the affected Zova flavor build already ran
53
+ - `deps:vona` already ran
36
54
  - Vona still behaves as if old consumer types are installed
37
55
 
38
56
  Then suspect a stale or unhealthy local installation state in `vona/node_modules`.
@@ -134,6 +134,16 @@ Check whether the feature needs:
134
134
  - SSR init-data updates
135
135
  - OpenAPI SDK regeneration
136
136
  - schema-driven UI or `$apiSchema` review
137
+ - reverse fullstack handoff when newly added frontend resources will later be consumed by backend metadata or backend tooling
138
+
139
+ If the frontend change introduces resources such as a custom form-field renderer, table-cell renderer, or other generated metadata that backend `ZovaRender.field(...)` / `ZovaRender.cell(...)` will consume, do not treat the task as frontend-only cleanup.
140
+
141
+ In that case, surface this operational sequence:
142
+
143
+ 1. refresh metadata when needed
144
+ 2. build the affected flavor output
145
+ 3. run `deps:vona`
146
+ 4. if backend-side shared types still look stale, escalate to the contract-loop recovery path instead of continuing source-level debugging
137
147
 
138
148
  ### Component and interaction follow-up
139
149
 
@@ -173,6 +183,7 @@ Stay frontend-first, but if the frontend task clearly depends on backend contrac
173
183
  - backend OpenAPI output may need refresh or inspection
174
184
  - backend DTO/controller response shape may be the real source of truth
175
185
  - frontend SDK or schema-driven layers should be regenerated from contract output rather than hand-patched
186
+ - newly added frontend resources that backend metadata will consume may require a reverse handoff through frontend build output and `deps:vona`
176
187
 
177
188
  Do not turn the skill into a backend workflow. Only surface the reminder when the contract boundary is clearly involved.
178
189
 
@@ -15,6 +15,8 @@ After generating or extending a frontend thread, check which follow-up layers ap
15
15
  - SSR init-data needs
16
16
  - OpenAPI SDK or schema-driven layer impact
17
17
  - backend contract reminder if frontend depends on generated backend contract output
18
+ - if backend metadata will consume newly added frontend render resources, run the relevant Zova build and then `deps:vona`
19
+ - if generated `.zova-rest` output is updated but backend still sees stale shared types, rebuild `vona/node_modules` and reinstall
18
20
 
19
21
  ## Interaction and UI follow-up
20
22
 
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: cabloy-module-removal
3
+ description: Use this skill whenever the user wants to remove or delete an existing Cabloy module, retire a demo module, or cleanly take a backend, frontend, or fullstack module out of the monorepo. Trigger for requests such as remove module, delete module, retire module, remove demo module, or remove fullstack module, including equivalent requests in other languages. Prefer it when the task is about deletion order, generated-runtime cleanup, and verification rather than scaffolding or contract evolution.
4
+ ---
5
+
6
+ # Cabloy Module Removal
7
+
8
+ Use this skill when the user wants to remove an existing module from the Cabloy monorepo.
9
+
10
+ Read the public [Module Removal Playbook](../../../cabloy-docs/ai/playbook-module-removal.md) for the canonical user/agent-facing workflow. This skill is the thinner orchestration layer: it should classify the removal path, choose the right cleanup branch, and point back to the playbook for the shared operational sequence.
11
+
12
+ ## Goals
13
+
14
+ 1. detect whether the active repository is Cabloy Basic or Cabloy Start
15
+ 2. classify the removal scope as backend-only, frontend-only, or fullstack
16
+ 3. keep the workflow source-first instead of debugging generated artifacts too early
17
+ 4. make the stale-generated-runtime recovery branch explicit when needed
18
+ 5. finish with verification guidance that proves the module is gone from the runtime/code graph
19
+
20
+ ## Step 1: Detect repo and classify the removal branch
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
+ Then classify the request into one of three branches:
34
+
35
+ ### Branch A: backend-only removal
36
+
37
+ Use this branch when the user is removing only Vona-side code such as:
38
+
39
+ - `vona/src/module/<module>`
40
+ - backend package references
41
+ - backend tests or metadata tied only to Vona
42
+
43
+ ### Branch B: frontend-only removal
44
+
45
+ Use this branch when the user is removing only Zova-side code such as:
46
+
47
+ - `zova/src/module/<module>`
48
+ - frontend package references
49
+ - Zova-only API/model/component assets
50
+
51
+ ### Branch C: fullstack removal
52
+
53
+ Use this branch when the module exists on both sides or the request affects both Vona and Zova.
54
+
55
+ This is the default branch for demo modules and shared business threads.
56
+
57
+ ## Step 2: Inventory real source and direct references first
58
+
59
+ Before proposing or making cleanup steps, inspect the real module surfaces first:
60
+
61
+ - backend and frontend module roots
62
+ - `vona/package.json`
63
+ - `zova/package.json`
64
+ - generated registries or lockfiles that may need refresh
65
+ - tests tied to the module
66
+ - optional docs/examples only if the user explicitly wants a public scrub
67
+
68
+ Start from the shared root scripts first:
69
+
70
+ - `package.json`
71
+ - `npm run vona`
72
+ - `npm run zova`
73
+
74
+ Do not assume a module lives only in one path family until the actual repo layout has been inspected.
75
+
76
+ ## Step 3: Keep the normal execution order source-first
77
+
78
+ Point the user or the main workflow to this order:
79
+
80
+ 1. remove backend source if in scope
81
+ 2. remove frontend source if in scope
82
+ 3. remove direct workspace dependency references
83
+ 4. run the repo-owned regeneration flow
84
+ 5. verify no references remain
85
+
86
+ Important rule:
87
+
88
+ - do not start by hand-editing generated caches or type surfaces while the real source and dependency references still exist
89
+
90
+ Use the playbook for the full operational sequence and representative commands.
91
+
92
+ ## Step 4: Use generated-runtime cleanup only as a recovery branch
93
+
94
+ When a module has already been removed from source and direct dependency references, but stale generated types or runtime entries still remain, treat generated runtime directories as disposable working state rather than source-of-truth files.
95
+
96
+ Primary recovery targets for this workflow are:
97
+
98
+ - `vona/.vona`
99
+ - `zova/.zova`
100
+
101
+ These directories are auto-generated by the Vona and Zova CLI flows and may survive when a service or build process does not stop cleanly.
102
+
103
+ This is a recovery branch, not the default first step.
104
+
105
+ After cleanup, rerun the normal build/deps/typecheck flow from the playbook.
106
+
107
+ ## Step 5: Finish with branch-aware verification
108
+
109
+ Use the verification path that matches the branch:
110
+
111
+ - backend-only → backend deps/typecheck/tests as needed
112
+ - frontend-only → relevant Zova build/deps/typecheck path
113
+ - fullstack → fullstack regeneration order plus typecheck and targeted tests
114
+
115
+ Verification should prove:
116
+
117
+ - no direct workspace dependency entries remain
118
+ - no stale generated registrations remain
119
+ - no typecheck failures still point at the removed module
120
+ - no important runtime or test surfaces still import the removed module
121
+
122
+ ## Step 6: Treat docs cleanup as a separate scope decision
123
+
124
+ Do not assume module deletion automatically means public docs cleanup.
125
+
126
+ Ask or confirm whether the task is:
127
+
128
+ - code/runtime removal only
129
+ - code/runtime removal plus docs/examples scrub
130
+
131
+ If docs cleanup is in scope, update `cabloy-docs/` separately from the runtime cleanup and keep maintainer rationale in `.docs-internal/`.
132
+
133
+ ## Response pattern
134
+
135
+ When using this skill, structure the response around these points when helpful:
136
+
137
+ 1. detected edition
138
+ 2. detected removal scope
139
+ 3. real module surfaces involved
140
+ 4. recommended cleanup/regeneration branch
141
+ 5. stale-generated-runtime recovery branch if needed
142
+ 6. verification steps
143
+
144
+ Keep the response practical. The value of this skill is to choose the right removal branch quickly and keep generated working state in the correct role.
@@ -164,6 +164,12 @@ Then check whether DTOs are already inferred through patterns such as:
164
164
 
165
165
  If the DTOs are inferred from the entity/model chain, let the entity change propagate. Do not hand-edit DTO field lists unless the source clearly requires it.
166
166
 
167
+ Important serialization reminder:
168
+
169
+ - if the returned field behavior depends on `v.serializerTransform(...)`, `v.serializerExclude()`, `v.serializerReplace(...)`, `v.serializerGetter(...)`, or `v.serializerCustom(...)`, do not assume those transforms run by default
170
+ - for performance reasons, Vona response serialization is opt-in per API action
171
+ - verify that the target controller action explicitly uses `@Core.serializer()` before concluding that serializer metadata is broken
172
+
167
173
  ## Step 6: Apply the renderer branch deliberately
168
174
 
169
175
  ### Default rule: prefer shared renderer reuse
@@ -251,6 +257,7 @@ Typical checks include:
251
257
  - `npm run tsc`
252
258
  - `npm run build`
253
259
  - narrow resource test runs
260
+ - when returned-field masking or exclusion uses `v.serializer*`, verify the action-level `@Core.serializer()` path with an API test, not only static field metadata inspection
254
261
  - renderer/build/deps synchronization when custom frontend renderers are involved
255
262
 
256
263
  ## Response pattern
@@ -0,0 +1,221 @@
1
+ ---
2
+ name: cabloy-zova-source-reading
3
+ description: Use this skill when the user wants to read, trace, or explain Zova frontend source code rather than scaffold new code: where a page/component/model/behavior/SSR flow is implemented, how a runtime path works internally, why a plain controller field is reactive, how Zova differs from generic Vue 3 habits, or which files to read first. Trigger for requests about Zova source reading, runtime tracing, Vue-vs-Zova explanation, controller/bean/IoC mental models, or the Zova-native way to understand frontend behavior. Do not use it for normal frontend scaffolding or backend/frontend contract regeneration.
4
+ ---
5
+
6
+ # Cabloy Zova Source Reading
7
+
8
+ Use this skill when the task is to understand, explain, or trace Zova frontend behavior in source code.
9
+
10
+ ## Goals
11
+
12
+ 1. detect whether the active repository is Cabloy Basic or Cabloy Start
13
+ 2. classify whether the user needs a source-entry map, a runtime-flow trace, or a Vue-vs-Zova explanation
14
+ 3. start from Zova-native public docs before diving into framework source
15
+ 4. explain Zova architecture in its own terms before translating it into Vue analogies
16
+ 5. separate source-confirmed runtime behavior from interpretive comparison
17
+ 6. finish with verification guidance that matches the analysis scope
18
+
19
+ ## Step 1: Detect the active edition
20
+
21
+ Check the repository root for these marker files:
22
+
23
+ - `__CABLOY_BASIC__`
24
+ - `__CABLOY_START__`
25
+
26
+ Interpretation:
27
+
28
+ - `__CABLOY_BASIC__` present → this is Cabloy Basic
29
+ - `__CABLOY_START__` present → this is Cabloy Start
30
+ - neither present → inspect the repo scripts and ask before making edition-specific frontend assumptions
31
+
32
+ This matters most when the analysis becomes UI-sensitive, SSR-site-sensitive, flavor-sensitive, or module-set-sensitive.
33
+
34
+ ## Step 2: Classify the analysis mode
35
+
36
+ Before reading files deeply, decide which kind of question the user is really asking.
37
+
38
+ ### Mode A: source-location mode
39
+
40
+ Use this mode when the user is asking questions like:
41
+
42
+ - where should I start reading?
43
+ - which files are relevant?
44
+ - what order should I read the source in?
45
+ - where is this implemented in Zova?
46
+
47
+ ### Mode B: runtime-flow mode
48
+
49
+ Use this mode when the user is asking questions like:
50
+
51
+ - how does this work internally?
52
+ - why is this field reactive?
53
+ - where does `$computed` / `$params` / `$query` come from?
54
+ - how does page/controller/component render enter the runtime?
55
+
56
+ ### Mode C: Vue-vs-Zova comparison mode
57
+
58
+ Use this mode when the user is asking questions like:
59
+
60
+ - how should I understand this relative to Vue 3?
61
+ - is this just Vue with classes?
62
+ - what is the Zova way instead of the generic Vue way?
63
+ - how do controller / bean / model / render roles map to Vue concepts?
64
+
65
+ If a request spans more than one mode, answer in this order:
66
+
67
+ 1. source-location mode
68
+ 2. runtime-flow mode
69
+ 3. Vue-vs-Zova comparison mode
70
+
71
+ That order reduces the risk of drifting into premature analogy before the source path is understood.
72
+
73
+ ## Step 3: Start from public Zova docs first
74
+
75
+ Do not begin by forcing the problem into generic Vue terminology.
76
+
77
+ Start from the public frontend reading docs in `cabloy-docs/frontend/`.
78
+
79
+ ### Primary reading surfaces
80
+
81
+ - `cabloy-docs/frontend/reading-zova-for-vue-developers.md`
82
+ - `cabloy-docs/frontend/zova-vs-vue3-comparison.md`
83
+ - `cabloy-docs/frontend/zova-reactivity-under-the-hood.md`
84
+ - `cabloy-docs/frontend/zova-source-reading-map.md`
85
+
86
+ For compact procedural summaries inside the skill bundle, also use:
87
+
88
+ - `references/analysis-modes.md`
89
+ - `references/core-reading-paths.md`
90
+
91
+ ### Core architecture surfaces
92
+
93
+ Use these when the question needs broader architectural context:
94
+
95
+ - `cabloy-docs/frontend/introduction.md`
96
+ - `cabloy-docs/frontend/foundation.md`
97
+ - `cabloy-docs/frontend/design-principles.md`
98
+ - `cabloy-docs/frontend/ioc-and-beans.md`
99
+ - `cabloy-docs/frontend/page-guide.md`
100
+ - `cabloy-docs/frontend/component-guide.md`
101
+ - `cabloy-docs/frontend/model-architecture.md`
102
+ - `cabloy-docs/frontend/page-route-guide.md`
103
+ - `cabloy-docs/frontend/behavior-guide.md`
104
+ - `cabloy-docs/frontend/ssr-architecture-overview.md`
105
+
106
+ ## Step 4: Choose the shortest correct source-reading path
107
+
108
+ After reading the public docs, choose the smallest source path that answers the question.
109
+
110
+ Use these bundled references to keep the workflow compact:
111
+
112
+ - `references/analysis-modes.md`
113
+ - `references/core-reading-paths.md`
114
+
115
+ Use the public `cabloy-docs/frontend/zova-source-reading-map.md` as the fuller explanation layer, but use the bundled references first when they are enough for the current task.
116
+
117
+ ## Step 5: Explain Zova-native meaning first
118
+
119
+ When answering, explain the Zova role first, then add Vue analogies only if they help.
120
+
121
+ ### Required answer posture
122
+
123
+ 1. identify the Zova-native role first
124
+ - page controller
125
+ - component controller
126
+ - render bean
127
+ - style bean
128
+ - model bean
129
+ - service bean
130
+ - behavior bean
131
+ - route/SSR integration layer
132
+
133
+ 2. explain the source-confirmed runtime path second
134
+
135
+ 3. only then offer Vue analogies as approximate translations
136
+
137
+ Do **not** lead with statements like:
138
+
139
+ - "this is basically just Vue setup with classes"
140
+ - "this should really be a normal Vue composable"
141
+ - "the right end state is probably `ref.value`"
142
+
143
+ Those translations can erase the actual Zova architecture.
144
+
145
+ For component-wrapper questions specifically, remember that `controllerRef` exposes the controller instance, not a generic DOM ref, and should not be treated as a generic Vue component-ref substitute without checking the current wrapper/controller source path.
146
+
147
+ ## Step 6: Distinguish source-confirmed behavior from interpretive comparison
148
+
149
+ Always make the boundary explicit.
150
+
151
+ ### Source-confirmed behavior
152
+
153
+ This includes claims you can support directly from current source files, such as:
154
+
155
+ - where a controller is created
156
+ - where a bean becomes reactive
157
+ - where route state is refreshed
158
+ - where render is redirected
159
+ - which helper wraps which Vue API
160
+
161
+ ### Interpretive comparison
162
+
163
+ This includes claims such as:
164
+
165
+ - why Zova feels more object-oriented than Vue
166
+ - how Zova growth paths differ from typical Vue growth paths
167
+ - which analogy is the closest Vue mental model
168
+
169
+ These can be useful, but they should be labeled as interpretation rather than current-source fact.
170
+
171
+ ## Step 7: Stay inside the right workflow boundary
172
+
173
+ Use this skill for explanation and source reading.
174
+
175
+ Do **not** use it as the primary workflow when the real task is:
176
+
177
+ - creating or refactoring frontend structures → prefer `cabloy-frontend-scaffold`
178
+ - diagnosing backend/frontend contract drift → prefer `cabloy-contract-loop`
179
+ - choosing whether the work belongs to backend, frontend, fullstack, docs, or AI guidance → prefer `cabloy-workflow`
180
+
181
+ ## Step 8: Verification guidance
182
+
183
+ Always finish with a verification path that matches the analysis task.
184
+
185
+ ### For source-reading answers
186
+
187
+ Verify:
188
+
189
+ - the cited file paths exist
190
+ - the described runtime path is actually visible in current source
191
+ - the answer does not contradict the public frontend docs
192
+
193
+ ### For Vue-vs-Zova explanation answers
194
+
195
+ Verify:
196
+
197
+ - the Zova-native explanation comes first
198
+ - Vue analogies are marked as approximate, not authoritative
199
+ - no claim quietly rewrites Zova back into generic Vue habits
200
+
201
+ ### For edition-sensitive frontend analysis
202
+
203
+ Verify:
204
+
205
+ - the active edition marker was considered
206
+ - Basic-only or Start-only UI assumptions were not silently generalized
207
+ - SSR, theme, and flavor-sensitive statements match the active edition context
208
+
209
+ ## Response pattern
210
+
211
+ When helpful, structure the response around these points:
212
+
213
+ 1. detected edition
214
+ 2. analysis mode
215
+ 3. public docs to read first
216
+ 4. source path to inspect next
217
+ 5. Zova-native explanation
218
+ 6. optional Vue analogy
219
+ 7. verification notes or caveats
220
+
221
+ Keep the response practical. The value of this skill is to help AI and users read Zova source accurately and in the right architectural order, not to flatten Zova into generic Vue prose.
@@ -0,0 +1,91 @@
1
+ # Analysis Modes
2
+
3
+ Use this reference to choose the shortest correct analysis posture before reading Zova source deeply.
4
+
5
+ ## Mode A: source-location mode
6
+
7
+ Use this mode when the user is mainly asking:
8
+
9
+ - where should I start reading?
10
+ - which files matter?
11
+ - what order should I read the source in?
12
+ - where is this implemented?
13
+
14
+ ### Workflow
15
+
16
+ 1. detect the active edition if UI-sensitive assumptions might matter
17
+ 2. start from the public frontend docs first
18
+ 3. pick the smallest matching thread from `cabloy-docs/frontend/zova-source-reading-map.md`
19
+ 4. cite the initial source files in the recommended reading order
20
+ 5. stop before tracing deeper runtime layers unless the user also wants runtime-flow analysis
21
+
22
+ ### Output emphasis
23
+
24
+ - reading order
25
+ - key file paths
26
+ - why those files are the right starting points
27
+
28
+ ## Mode B: runtime-flow mode
29
+
30
+ Use this mode when the user is mainly asking:
31
+
32
+ - how does this work internally?
33
+ - why is this reactive?
34
+ - where does this controller/page/component behavior come from?
35
+ - how does render, route state, or lifecycle enter the runtime?
36
+
37
+ ### Workflow
38
+
39
+ 1. read the public Zova-native explanation docs first:
40
+ - `reading-zova-for-vue-developers.md`
41
+ - `zova-reactivity-under-the-hood.md`
42
+ 2. identify the concrete thread:
43
+ - page controller
44
+ - component controller
45
+ - route/state
46
+ - model
47
+ - behavior
48
+ - SSR
49
+ 3. trace the smallest current-source path that confirms the runtime behavior
50
+ 4. distinguish source-confirmed behavior from interpretation
51
+ 5. only after the Zova-native explanation is clear, add Vue analogy if helpful
52
+
53
+ ### Output emphasis
54
+
55
+ - entrypoint
56
+ - intermediate runtime files
57
+ - what triggers the behavior
58
+ - what is source-confirmed
59
+
60
+ ## Mode C: Vue-vs-Zova comparison mode
61
+
62
+ Use this mode when the user is mainly asking:
63
+
64
+ - how should I understand this relative to Vue 3?
65
+ - is this just Vue with a different syntax?
66
+ - what is the Zova way here?
67
+
68
+ ### Workflow
69
+
70
+ 1. explain the Zova-native architectural role first
71
+ 2. identify which public Zova doc best defines that role
72
+ 3. if needed, trace one representative source path to confirm the runtime grounding
73
+ 4. only then provide Vue analogies as approximate translations
74
+ 5. explicitly avoid flattening Zova back into generic Vue habits
75
+
76
+ ### Output emphasis
77
+
78
+ - Zova-native role
79
+ - closest Vue analogy
80
+ - what is genuinely shared underneath
81
+ - what changes at the authoring-model level
82
+
83
+ ## Combined requests
84
+
85
+ If a request spans multiple modes, answer in this order:
86
+
87
+ 1. source-location mode
88
+ 2. runtime-flow mode
89
+ 3. Vue-vs-Zova comparison mode
90
+
91
+ This keeps the explanation anchored in the real source path before analogy work begins.