cabloy 5.1.50 → 5.1.52
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 +207 -0
- package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +29 -0
- package/.claude/skills/cabloy-backend-scaffold/references/backend-thread-map.md +52 -0
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +39 -0
- package/.claude/skills/cabloy-contract-loop/SKILL.md +201 -0
- package/.claude/skills/cabloy-contract-loop/evals/evals.json +29 -0
- package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +47 -0
- package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -0
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +230 -0
- package/.claude/skills/cabloy-frontend-scaffold/evals/evals.json +35 -0
- package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +41 -0
- package/.claude/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +54 -0
- package/.claude/skills/cabloy-workflow/SKILL.md +292 -0
- package/.claude/skills/cabloy-workflow/evals/evals.json +35 -0
- package/.claude/skills/cabloy-workflow/references/cli-strategy.md +39 -0
- package/.claude/skills/cabloy-workflow/references/edition-detection.md +30 -0
- package/.github/workflows/docs-pages.yml +56 -0
- package/.gitignore +1 -0
- package/CHANGELOG.md +54 -0
- package/CLAUDE.md +59 -0
- package/README.md +152 -0
- package/cabloy-docs/.vitepress/config.mjs +255 -0
- package/cabloy-docs/.vitepress/public/CNAME +1 -0
- package/cabloy-docs/.vitepress/theme/custom.css +64 -0
- package/cabloy-docs/.vitepress/theme/edition-badges.md +5 -0
- package/cabloy-docs/.vitepress/theme/index.js +5 -0
- package/cabloy-docs/ai/class-placement-rule.md +139 -0
- package/cabloy-docs/ai/cli-for-agents.md +56 -0
- package/cabloy-docs/ai/cli-to-skill-map.md +165 -0
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +168 -0
- package/cabloy-docs/ai/edition-consistency-checklist.md +150 -0
- package/cabloy-docs/ai/edition-detection.md +30 -0
- package/cabloy-docs/ai/future-skill-roadmap.md +135 -0
- package/cabloy-docs/ai/global-bean-lookup.md +158 -0
- package/cabloy-docs/ai/introduction.md +62 -0
- package/cabloy-docs/ai/playbook-backend-module.md +111 -0
- package/cabloy-docs/ai/playbook-contract-regeneration.md +100 -0
- package/cabloy-docs/ai/playbook-frontend-page.md +99 -0
- package/cabloy-docs/ai/playbook-metadata-refresh.md +67 -0
- package/cabloy-docs/ai/repo-guidance.md +58 -0
- package/cabloy-docs/ai/rules-and-config.md +29 -0
- package/cabloy-docs/ai/skills.md +37 -0
- package/cabloy-docs/ai/verification.md +31 -0
- package/cabloy-docs/ai/virtual-decorator-guidance.md +206 -0
- package/cabloy-docs/backend/aop-overview.md +128 -0
- package/cabloy-docs/backend/auth-guide.md +151 -0
- package/cabloy-docs/backend/backend-essentials.md +128 -0
- package/cabloy-docs/backend/broadcast-guide.md +138 -0
- package/cabloy-docs/backend/cache-guide.md +70 -0
- package/cabloy-docs/backend/captcha-guide.md +162 -0
- package/cabloy-docs/backend/cli.md +173 -0
- package/cabloy-docs/backend/config-guide.md +249 -0
- package/cabloy-docs/backend/controller-aop-guide.md +270 -0
- package/cabloy-docs/backend/controller-guide.md +347 -0
- package/cabloy-docs/backend/crud-workflow.md +118 -0
- package/cabloy-docs/backend/dto-guide.md +161 -0
- package/cabloy-docs/backend/dto-infer-generation.md +153 -0
- package/cabloy-docs/backend/dynamic-datasource-guide.md +70 -0
- package/cabloy-docs/backend/election-guide.md +141 -0
- package/cabloy-docs/backend/entity-guide.md +150 -0
- package/cabloy-docs/backend/error-guide.md +108 -0
- package/cabloy-docs/backend/event-guide.md +183 -0
- package/cabloy-docs/backend/external-aop-guide.md +149 -0
- package/cabloy-docs/backend/field-indexes.md +79 -0
- package/cabloy-docs/backend/foundation.md +281 -0
- package/cabloy-docs/backend/i18n-guide.md +211 -0
- package/cabloy-docs/backend/internal-aop-guide.md +181 -0
- package/cabloy-docs/backend/introduction.md +95 -0
- package/cabloy-docs/backend/jwt-guide.md +276 -0
- package/cabloy-docs/backend/logger-guide.md +223 -0
- package/cabloy-docs/backend/mail-guide.md +189 -0
- package/cabloy-docs/backend/menu-guide.md +80 -0
- package/cabloy-docs/backend/migration-and-changes.md +192 -0
- package/cabloy-docs/backend/model-guide.md +274 -0
- package/cabloy-docs/backend/multi-database-datasource.md +171 -0
- package/cabloy-docs/backend/multi-instance-and-instance-resolution.md +196 -0
- package/cabloy-docs/backend/openapi-guide.md +118 -0
- package/cabloy-docs/backend/orm-aggregate-group-guide.md +210 -0
- package/cabloy-docs/backend/orm-configuration-guide.md +165 -0
- package/cabloy-docs/backend/orm-guide.md +109 -0
- package/cabloy-docs/backend/orm-mutation-guide.md +195 -0
- package/cabloy-docs/backend/orm-select-guide.md +243 -0
- package/cabloy-docs/backend/queue-guide.md +271 -0
- package/cabloy-docs/backend/quickstart.md +141 -0
- package/cabloy-docs/backend/redis-guide.md +70 -0
- package/cabloy-docs/backend/redlock-guide.md +60 -0
- package/cabloy-docs/backend/relations-guide.md +250 -0
- package/cabloy-docs/backend/runtime-and-flavors.md +304 -0
- package/cabloy-docs/backend/schedule-guide.md +81 -0
- package/cabloy-docs/backend/scripts.md +116 -0
- package/cabloy-docs/backend/serialization-guide.md +192 -0
- package/cabloy-docs/backend/service-guide.md +166 -0
- package/cabloy-docs/backend/sharding-guide.md +49 -0
- package/cabloy-docs/backend/startup-guide.md +326 -0
- package/cabloy-docs/backend/transaction-guide.md +82 -0
- package/cabloy-docs/backend/unit-testing.md +209 -0
- package/cabloy-docs/backend/upload-guide.md +160 -0
- package/cabloy-docs/backend/user-access-guide.md +157 -0
- package/cabloy-docs/backend/validation-guide.md +80 -0
- package/cabloy-docs/backend/worker-guide.md +59 -0
- package/cabloy-docs/editions/cabloy-basic.md +26 -0
- package/cabloy-docs/editions/cabloy-start.md +55 -0
- package/cabloy-docs/editions/choosing-between-basic-and-start.md +84 -0
- package/cabloy-docs/editions/detection.md +31 -0
- package/cabloy-docs/editions/overview.md +107 -0
- package/cabloy-docs/frontend/api-guide.md +93 -0
- package/cabloy-docs/frontend/api-schema-guide.md +43 -0
- package/cabloy-docs/frontend/app-startup-guide.md +185 -0
- package/cabloy-docs/frontend/cli.md +78 -0
- package/cabloy-docs/frontend/component-guide.md +105 -0
- package/cabloy-docs/frontend/component-props-guide.md +97 -0
- package/cabloy-docs/frontend/component-v-model-guide.md +110 -0
- package/cabloy-docs/frontend/css-in-js-guide.md +151 -0
- package/cabloy-docs/frontend/design-principles.md +55 -0
- package/cabloy-docs/frontend/environment-config-guide.md +250 -0
- package/cabloy-docs/frontend/foundation.md +58 -0
- package/cabloy-docs/frontend/generic-component-guide.md +35 -0
- package/cabloy-docs/frontend/icon-engine-guide.md +88 -0
- package/cabloy-docs/frontend/introduction.md +33 -0
- package/cabloy-docs/frontend/ioc-and-beans.md +211 -0
- package/cabloy-docs/frontend/mock-guide.md +109 -0
- package/cabloy-docs/frontend/model-architecture.md +87 -0
- package/cabloy-docs/frontend/model-state-guide.md +70 -0
- package/cabloy-docs/frontend/module-scope.md +168 -0
- package/cabloy-docs/frontend/modules-and-suites.md +179 -0
- package/cabloy-docs/frontend/navigation-guards-guide.md +68 -0
- package/cabloy-docs/frontend/openapi-sdk-guide.md +102 -0
- package/cabloy-docs/frontend/page-guide.md +223 -0
- package/cabloy-docs/frontend/page-params-guide.md +87 -0
- package/cabloy-docs/frontend/page-query-guide.md +96 -0
- package/cabloy-docs/frontend/page-route-guide.md +147 -0
- package/cabloy-docs/frontend/quickstart.md +202 -0
- package/cabloy-docs/frontend/route-alias-guide.md +61 -0
- package/cabloy-docs/frontend/scripts.md +86 -0
- package/cabloy-docs/frontend/sdk-guide.md +45 -0
- package/cabloy-docs/frontend/server-data.md +74 -0
- package/cabloy-docs/frontend/ssr-client-only.md +40 -0
- package/cabloy-docs/frontend/ssr-env.md +51 -0
- package/cabloy-docs/frontend/ssr-init-data.md +46 -0
- package/cabloy-docs/frontend/ssr-overview.md +48 -0
- package/cabloy-docs/frontend/ssr-seo-meta.md +52 -0
- package/cabloy-docs/frontend/system-startup-guide.md +186 -0
- package/cabloy-docs/frontend/theme-guide.md +154 -0
- package/cabloy-docs/frontend/zod-guide.md +161 -0
- package/cabloy-docs/fullstack/cli.md +118 -0
- package/cabloy-docs/fullstack/comparison-with-other-frameworks.md +117 -0
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +62 -0
- package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +64 -0
- package/cabloy-docs/fullstack/introduction.md +81 -0
- package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -0
- package/cabloy-docs/fullstack/quickstart.md +89 -0
- package/cabloy-docs/fullstack/vona-zova-integration.md +86 -0
- package/cabloy-docs/fullstack/vscode-extensions.md +126 -0
- package/cabloy-docs/index.md +72 -0
- package/cabloy-docs/package.json +16 -0
- package/cabloy-docs/pnpm-lock.yaml +1607 -0
- package/cabloy-docs/reference/backend-directory-structure.md +88 -0
- package/cabloy-docs/reference/cli-reference.md +49 -0
- package/cabloy-docs/reference/glossary.md +38 -0
- package/cabloy-docs/reference/package-map.md +105 -0
- package/cabloy-docs/reference/repo-scripts.md +36 -0
- package/package.json +4 -1
- package/scripts/init.ts +12 -0
- package/scripts/upgrade.ts +31 -3
- package/vona/README.md +4 -4
- package/vona/README.zh-CN.md +4 -4
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/pnpm-lock.yaml +383 -38
- package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/src/bean/summerCache.datasourceWrite.ts +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/.metadata/index.ts +49 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/controller/memoryDiag.ts +97 -0
- package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
- package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +1 -1
- package/vona/src/suite-vendor/a-captcha/modules/a-captcha/src/bean/cacheRedis.captcha.ts +2 -2
- package/vona/src/suite-vendor/a-captcha/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-bean/cli/bean/metadata/generate.ts +5 -6
- package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheMem/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheRedis/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/.metadata/index.ts +13 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/bean/bean.cache.ts +6 -7
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheMemBase.ts → service/cacheMemBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheRedisBase.ts → service/cacheRedisBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/summerCache.json.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/.metadata/index.ts +4 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.database.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.model.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/utils.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/index.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.modelBase.ts +0 -5
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/index.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheEntity_.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheQuery_.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean/bean.databaseDialectBase.ts → service/databaseDialectBase_.ts} +38 -41
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -5
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoSelectAndCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/model.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelAggr.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGroup.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelIncrement.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relations.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDef.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefDynamic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsTables.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.betterSqlite3.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.mysql.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.pg.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +109 -40
- package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-startup/src/bean/cacheRedis.startupDebounce.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-summer/cli/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/.metadata/index.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/bean/bean.summer.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localMem_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localRedis_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/{bean/bean.summerCacheBase.ts → service/summerCacheBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.rapidoc.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.swagger.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/cacheRedis.authToken.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-worker/src/bean/cacheRedis.workerAlive.ts +2 -2
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/README.md +5 -5
- package/zova/README.zh-CN.md +4 -4
- package/zova/package.original.json +4 -4
- package/zova/packages-cli/cli/package.json +2 -2
- package/zova/packages-cli/cli-set-front/package.json +2 -2
- package/zova/packages-utils/zova-jsx/package.json +2 -2
- package/zova/packages-utils/zova-vite/package.json +2 -2
- package/zova/packages-utils/zova-vite/templates/app/controller.tsx_ +3 -3
- package/zova/packages-zova/zova/package.json +3 -3
- package/zova/packages-zova/zova-core/package.json +2 -2
- package/zova/packages-zova/zova-core/src/bean/beanContainer.ts +3 -3
- package/zova/packages-zova/zova-core/src/bean/beanControllerPageBase.ts +1 -0
- package/zova/packages-zova/zova-core/src/core/component/module.ts +16 -16
- package/zova/packages-zova/zova-core/src/core/context/component.ts +35 -3
- package/zova/packages-zova/zova-core/src/core/context/util.ts +15 -11
- package/zova/pnpm-lock.yaml +1596 -1679
- package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/index.ts +11 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/page/toolMinimal.ts +9 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolMinimal/controller.tsx +11 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/routes.ts +10 -0
- package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-model/src/service/storage.ts +4 -5
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/monkey.ts +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +36 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrMetaStore.ts +7 -2
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +3 -0
- package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/src/service/ssrHandler.ts +70 -29
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/package.json +6 -6
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_inner.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_table.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_knex.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_utils.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_view.ts +0 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cabloy-frontend-scaffold
|
|
3
|
+
description: Use this skill whenever the user wants the Zova frontend path in this Cabloy repo: create or extend pages, components, api or model beans, route/query/params work, metadata refresh, SSR-sensitive frontend work, or component props, v-model, and generic refactors. Trigger for questions about which npm run zova create or refactor command to use and what frontend follow-up is required after generation, especially when the user wants the Zova way instead of generic Vue advice. Prefer it for frontend-first requests, even if backend context exists in the story. Do not use it for pure Vona scaffolding or backend/frontend contract-sync diagnosis.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cabloy Frontend Scaffold
|
|
7
|
+
|
|
8
|
+
Use this skill when the user wants to add or extend a Zova frontend feature thread.
|
|
9
|
+
|
|
10
|
+
## Goals
|
|
11
|
+
|
|
12
|
+
1. detect whether the active repository is Cabloy Basic or Cabloy Start
|
|
13
|
+
2. stay frontend-first unless the request clearly becomes a broader fullstack contract or backend workflow
|
|
14
|
+
3. prefer Zova CLI generation and refactor tools over manual scaffolding
|
|
15
|
+
4. always perform a frontend follow-up review so route metadata, API/model integration, SSR behavior, style/theme/icon implications, and metadata regeneration are not forgotten
|
|
16
|
+
5. add a backend-contract reminder only when the frontend change clearly depends on backend OpenAPI or DTO contract changes
|
|
17
|
+
6. finish with verification guidance that matches the scope of the change
|
|
18
|
+
|
|
19
|
+
## Step 1: Detect repo and task scope
|
|
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 nearby scripts and ask before making edition-specific assumptions
|
|
31
|
+
|
|
32
|
+
Then classify the request:
|
|
33
|
+
|
|
34
|
+
- **frontend-only** if the task is about Zova pages, components, API services, models, routing, params/query, metadata, icons, styles, or SSR behavior
|
|
35
|
+
- **fullstack** only if the task clearly requires backend contract changes, SDK regeneration, or broader cross-stack contract work
|
|
36
|
+
|
|
37
|
+
Default to frontend-first. Only escalate mentally to a broader fullstack workflow when the frontend task obviously crosses the contract boundary.
|
|
38
|
+
|
|
39
|
+
If the task is really a broad cross-stack workflow, consider whether the root `cabloy-workflow` skill is the better primary router.
|
|
40
|
+
|
|
41
|
+
## Step 2: Start from Zova CLI and repo entrypoints
|
|
42
|
+
|
|
43
|
+
Inspect these surfaces before proposing implementation:
|
|
44
|
+
|
|
45
|
+
- the repository or workspace `package.json` that owns the scripts
|
|
46
|
+
- `npm run zova`
|
|
47
|
+
- Zova command families such as `create:*`, `init:*`, `refactor:*`, `tools:*`, `openapi:*`, and `bin:*`
|
|
48
|
+
- `cabloy-docs/frontend/` for the relevant frontend thread
|
|
49
|
+
|
|
50
|
+
For deeper reference material, read:
|
|
51
|
+
|
|
52
|
+
- `references/frontend-thread-map.md`
|
|
53
|
+
- `references/follow-up-checklist.md`
|
|
54
|
+
|
|
55
|
+
## Step 3: Choose the correct frontend scaffolding path
|
|
56
|
+
|
|
57
|
+
### Path A: create a new frontend structural piece
|
|
58
|
+
|
|
59
|
+
Use `create:*` when the user needs a new structural piece such as:
|
|
60
|
+
|
|
61
|
+
- page
|
|
62
|
+
- component
|
|
63
|
+
- api
|
|
64
|
+
- model
|
|
65
|
+
- module
|
|
66
|
+
- mock
|
|
67
|
+
- bean
|
|
68
|
+
|
|
69
|
+
Typical examples:
|
|
70
|
+
|
|
71
|
+
- `npm run zova :create:page ...`
|
|
72
|
+
- `npm run zova :create:component ...`
|
|
73
|
+
- `npm run zova :create:bean api ...`
|
|
74
|
+
- `npm run zova :create:bean model ...`
|
|
75
|
+
|
|
76
|
+
### Path B: add framework capabilities to an existing page or component
|
|
77
|
+
|
|
78
|
+
Use `refactor:*` when the user is extending an existing Zova structure rather than creating a new one.
|
|
79
|
+
|
|
80
|
+
Typical examples:
|
|
81
|
+
|
|
82
|
+
- `npm run zova :refactor:pageQuery ...`
|
|
83
|
+
- `npm run zova :refactor:pageParams ...`
|
|
84
|
+
- `npm run zova :refactor:componentProps ...`
|
|
85
|
+
- `npm run zova :refactor:componentModel ...`
|
|
86
|
+
- `npm run zova :refactor:componentGeneric ...`
|
|
87
|
+
|
|
88
|
+
Choose this path when the user already has a page or component and wants to add framework-native structure to it.
|
|
89
|
+
|
|
90
|
+
### Path C: refresh metadata or generated contract output
|
|
91
|
+
|
|
92
|
+
Use `tools:*` or `openapi:*` when the task is about generation rather than hand-authored frontend code.
|
|
93
|
+
|
|
94
|
+
Typical examples:
|
|
95
|
+
|
|
96
|
+
- `npm run zova :tools:metadata ...`
|
|
97
|
+
- `npm run zova :openapi:config ...`
|
|
98
|
+
- `npm run zova :openapi:generate ...`
|
|
99
|
+
|
|
100
|
+
## Step 4: Inspect the generated or transformed frontend thread
|
|
101
|
+
|
|
102
|
+
After generation or refactor, inspect what the CLI created and keep it as the baseline.
|
|
103
|
+
|
|
104
|
+
Typical frontend thread pieces may include:
|
|
105
|
+
|
|
106
|
+
- page or component controller
|
|
107
|
+
- wrapper component
|
|
108
|
+
- route record implications
|
|
109
|
+
- API service or model bean
|
|
110
|
+
- query/params schema additions
|
|
111
|
+
- generated metadata-dependent artifacts
|
|
112
|
+
|
|
113
|
+
Do not throw away the generated structure and rewrite it from scratch unless the generator clearly does not match the task.
|
|
114
|
+
|
|
115
|
+
## Step 5: Apply frontend follow-up logic deliberately
|
|
116
|
+
|
|
117
|
+
Frontend scaffolding is rarely complete after generation alone. Treat this follow-up review as mandatory.
|
|
118
|
+
|
|
119
|
+
### Route and metadata follow-up
|
|
120
|
+
|
|
121
|
+
Check whether the feature needs:
|
|
122
|
+
|
|
123
|
+
- page route review
|
|
124
|
+
- params/query schema alignment
|
|
125
|
+
- alias or guard review
|
|
126
|
+
- metadata regeneration
|
|
127
|
+
|
|
128
|
+
### Data and contract follow-up
|
|
129
|
+
|
|
130
|
+
Check whether the feature needs:
|
|
131
|
+
|
|
132
|
+
- API service updates
|
|
133
|
+
- model-managed remote state
|
|
134
|
+
- SSR init-data updates
|
|
135
|
+
- OpenAPI SDK regeneration
|
|
136
|
+
- schema-driven UI or `$apiSchema` review
|
|
137
|
+
|
|
138
|
+
### Component and interaction follow-up
|
|
139
|
+
|
|
140
|
+
Check whether the feature needs:
|
|
141
|
+
|
|
142
|
+
- props contract review
|
|
143
|
+
- `v-model` review
|
|
144
|
+
- generic component conversion
|
|
145
|
+
- style/theme/icon updates
|
|
146
|
+
- wrapper usage review
|
|
147
|
+
- async-loading or controllerRef implications
|
|
148
|
+
|
|
149
|
+
### Verification
|
|
150
|
+
|
|
151
|
+
Check whether the feature needs:
|
|
152
|
+
|
|
153
|
+
- typecheck
|
|
154
|
+
- build
|
|
155
|
+
- metadata regeneration verification
|
|
156
|
+
- SSR or route-path verification
|
|
157
|
+
- edition-specific flavor, SSR site baseline, and project-asset verification
|
|
158
|
+
|
|
159
|
+
### Optional backend-contract reminder
|
|
160
|
+
|
|
161
|
+
Stay frontend-first, but if the frontend task clearly depends on backend contract output, add a reminder such as:
|
|
162
|
+
|
|
163
|
+
- backend OpenAPI output may need refresh or inspection
|
|
164
|
+
- backend DTO/controller response shape may be the real source of truth
|
|
165
|
+
- frontend SDK or schema-driven layers should be regenerated from contract output rather than hand-patched
|
|
166
|
+
|
|
167
|
+
Do not turn the skill into a backend workflow. Only surface the reminder when the contract boundary is clearly involved.
|
|
168
|
+
|
|
169
|
+
## Step 6: Use docs to avoid missing layers
|
|
170
|
+
|
|
171
|
+
Use the docs to decide what the generated frontend thread still needs.
|
|
172
|
+
|
|
173
|
+
Especially relevant pages include:
|
|
174
|
+
|
|
175
|
+
- `cabloy-docs/frontend/page-guide.md`
|
|
176
|
+
- `cabloy-docs/frontend/page-query-guide.md`
|
|
177
|
+
- `cabloy-docs/frontend/page-params-guide.md`
|
|
178
|
+
- `cabloy-docs/frontend/page-route-guide.md`
|
|
179
|
+
- `cabloy-docs/frontend/route-alias-guide.md`
|
|
180
|
+
- `cabloy-docs/frontend/navigation-guards-guide.md`
|
|
181
|
+
- `cabloy-docs/frontend/component-guide.md`
|
|
182
|
+
- `cabloy-docs/frontend/component-props-guide.md`
|
|
183
|
+
- `cabloy-docs/frontend/component-v-model-guide.md`
|
|
184
|
+
- `cabloy-docs/frontend/generic-component-guide.md`
|
|
185
|
+
- `cabloy-docs/frontend/api-guide.md`
|
|
186
|
+
- `cabloy-docs/frontend/model-architecture.md`
|
|
187
|
+
- `cabloy-docs/frontend/model-state-guide.md`
|
|
188
|
+
- `cabloy-docs/frontend/openapi-sdk-guide.md`
|
|
189
|
+
- `cabloy-docs/frontend/api-schema-guide.md`
|
|
190
|
+
- `cabloy-docs/frontend/sdk-guide.md`
|
|
191
|
+
- `cabloy-docs/frontend/ssr-overview.md`
|
|
192
|
+
- `cabloy-docs/frontend/ssr-init-data.md`
|
|
193
|
+
- `cabloy-docs/frontend/ssr-client-only.md`
|
|
194
|
+
- `cabloy-docs/frontend/ssr-seo-meta.md`
|
|
195
|
+
- `cabloy-docs/frontend/ssr-env.md`
|
|
196
|
+
- `cabloy-docs/frontend/css-in-js-guide.md`
|
|
197
|
+
- `cabloy-docs/frontend/theme-guide.md`
|
|
198
|
+
- `cabloy-docs/frontend/icon-engine-guide.md`
|
|
199
|
+
|
|
200
|
+
## Step 7: Verification guidance
|
|
201
|
+
|
|
202
|
+
Always end with a verification path that matches the scope of the frontend change.
|
|
203
|
+
|
|
204
|
+
Typical shared checks include:
|
|
205
|
+
|
|
206
|
+
- `npm run tsc`
|
|
207
|
+
- `npm run build:zova`
|
|
208
|
+
|
|
209
|
+
If the task is inside `zova/` rather than the monorepo root wrapper path, use the smallest correct `zova/` script surface for the affected flavor or generation path.
|
|
210
|
+
|
|
211
|
+
Narrower checks may include:
|
|
212
|
+
|
|
213
|
+
- metadata refresh verification
|
|
214
|
+
- page route verification
|
|
215
|
+
- component wrapper or `v-model` behavior verification
|
|
216
|
+
- SSR or flavor-specific build verification
|
|
217
|
+
- edition-specific frontend script verification
|
|
218
|
+
|
|
219
|
+
## Response pattern
|
|
220
|
+
|
|
221
|
+
When helpful, structure the response around these points:
|
|
222
|
+
|
|
223
|
+
1. detected edition
|
|
224
|
+
2. frontend-first or clearly fullstack-sensitive classification
|
|
225
|
+
3. recommended Zova CLI path
|
|
226
|
+
4. required frontend follow-up layers to check
|
|
227
|
+
5. optional backend-contract reminder if applicable
|
|
228
|
+
6. verification steps
|
|
229
|
+
|
|
230
|
+
Keep the response practical. The value of this skill is turning Cabloy frontend requests into the right generation + refactor + verification workflow, not writing more prose than necessary.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "cabloy-frontend-scaffold",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "I need to add a new frontend page for invoice management in Cabloy. Please tell me the right Zova workflow and what I should generate first.",
|
|
7
|
+
"expected_output": "Chooses a frontend scaffolding path, prefers Zova page generation or closely related CLI generation, and mentions follow-up layers like route/query/params, model/API, metadata, or verification.",
|
|
8
|
+
"files": []
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": 2,
|
|
12
|
+
"prompt": "Please help me add page params and page query support to an existing Zova page. I do not want generic Vue Router advice; I want the Cabloy way.",
|
|
13
|
+
"expected_output": "Routes to the Zova frontend refactor thread, recommends the right refactor path, and includes metadata or route follow-up instead of generic framework advice.",
|
|
14
|
+
"files": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 3,
|
|
18
|
+
"prompt": "I changed a route and component structure in Cabloy Basic and now I am not sure what else I should update. What should Claude check before saying the frontend work is done?",
|
|
19
|
+
"expected_output": "Identifies likely frontend follow-up such as metadata regeneration, page/component/API/model or SSR impact, and verification commands.",
|
|
20
|
+
"files": []
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": 4,
|
|
24
|
+
"prompt": "I updated a Zova page and component contract, but I do not want backend implementation help yet. Keep this frontend-first and only mention backend if it is truly a contract reminder.",
|
|
25
|
+
"expected_output": "Stays frontend-first, covers page/component/metadata or model follow-up, and only adds a light backend-contract reminder if frontend work depends on backend OpenAPI or SDK output.",
|
|
26
|
+
"files": []
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": 5,
|
|
30
|
+
"prompt": "Help me add a new frontend page thread in Cabloy Start. I want the Zova way first, including what frontend follow-up review is mandatory after generation.",
|
|
31
|
+
"expected_output": "Detects Start or Start-sensitive edition handling, recommends Zova scaffolding first, and treats metadata, routing, API/model or SSR checks, and verification as mandatory frontend follow-up rather than optional extras.",
|
|
32
|
+
"files": []
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Follow-up Checklist
|
|
2
|
+
|
|
3
|
+
After generating or extending a frontend thread, check which follow-up layers apply.
|
|
4
|
+
|
|
5
|
+
## Structural follow-up
|
|
6
|
+
|
|
7
|
+
- page/controller structure
|
|
8
|
+
- component wrapper usage
|
|
9
|
+
- route record implications
|
|
10
|
+
- params/query schema alignment
|
|
11
|
+
|
|
12
|
+
## Data and contract follow-up
|
|
13
|
+
|
|
14
|
+
- API service or model alignment
|
|
15
|
+
- SSR init-data needs
|
|
16
|
+
- OpenAPI SDK or schema-driven layer impact
|
|
17
|
+
- backend contract reminder if frontend depends on generated backend contract output
|
|
18
|
+
|
|
19
|
+
## Interaction and UI follow-up
|
|
20
|
+
|
|
21
|
+
- props contract
|
|
22
|
+
- `v-model`
|
|
23
|
+
- generic typing
|
|
24
|
+
- style / theme / icon implications
|
|
25
|
+
|
|
26
|
+
## Metadata follow-up
|
|
27
|
+
|
|
28
|
+
- `:tools:metadata`
|
|
29
|
+
- route/component/icon regeneration-sensitive changes
|
|
30
|
+
- edition-specific generated output review
|
|
31
|
+
|
|
32
|
+
## Verification follow-up
|
|
33
|
+
|
|
34
|
+
- `npm run tsc`
|
|
35
|
+
- `npm run build:zova`
|
|
36
|
+
- flavor-specific checks
|
|
37
|
+
- route or SSR verification
|
|
38
|
+
|
|
39
|
+
## Escalation rule
|
|
40
|
+
|
|
41
|
+
If the request clearly changes backend contract output or requires SDK regeneration from backend changes, mentally escalate to a fullstack workflow instead of pretending it is frontend-only.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Frontend Thread Map
|
|
2
|
+
|
|
3
|
+
Use this reference when a frontend request needs to be turned into the right Zova thread.
|
|
4
|
+
|
|
5
|
+
## Common request -> likely thread
|
|
6
|
+
|
|
7
|
+
### “Add a new page”
|
|
8
|
+
|
|
9
|
+
Usually means:
|
|
10
|
+
|
|
11
|
+
- page generation
|
|
12
|
+
- route review
|
|
13
|
+
- params/query additions if needed
|
|
14
|
+
- API/model integration
|
|
15
|
+
- metadata refresh if routing changes affect typed artifacts
|
|
16
|
+
|
|
17
|
+
### “Add a new component”
|
|
18
|
+
|
|
19
|
+
Usually means:
|
|
20
|
+
|
|
21
|
+
- component generation
|
|
22
|
+
- props/v-model/generic follow-up if needed
|
|
23
|
+
- wrapper-based usage review
|
|
24
|
+
- style/theme/icon review if UI behavior changes
|
|
25
|
+
|
|
26
|
+
### “Add data access to a page”
|
|
27
|
+
|
|
28
|
+
Usually means:
|
|
29
|
+
|
|
30
|
+
- API service or model bean
|
|
31
|
+
- possible OpenAPI SDK usage
|
|
32
|
+
- possible SSR init-data follow-up
|
|
33
|
+
- metadata or route refresh if the page shape changes too
|
|
34
|
+
|
|
35
|
+
### “Change route/query/params behavior”
|
|
36
|
+
|
|
37
|
+
Usually means:
|
|
38
|
+
|
|
39
|
+
- page route review
|
|
40
|
+
- `refactor:*` path first
|
|
41
|
+
- metadata regeneration
|
|
42
|
+
- route alias / guard / SSR review
|
|
43
|
+
|
|
44
|
+
### “Change UI contract of a component”
|
|
45
|
+
|
|
46
|
+
Usually means:
|
|
47
|
+
|
|
48
|
+
- component props
|
|
49
|
+
- `v-model`
|
|
50
|
+
- generic component or wrapper behavior
|
|
51
|
+
|
|
52
|
+
## Generation-first rule
|
|
53
|
+
|
|
54
|
+
If a Zova generator or refactor command exists for the frontend thread, use it first and refine second.
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cabloy-workflow
|
|
3
|
+
description: Use this skill first when a Cabloy request is about choosing the right path before implementation: whether the work belongs to Vona backend scaffolding, Zova frontend scaffolding, backend/frontend contract sync, or docs, .docs-internal, CLAUDE.md, commands, or skills; which Cabloy Basic or Cabloy Start assumptions apply; or where Cabloy guidance should live. Trigger on requests that ask to route, classify, choose a workflow, choose an edition-specific path, or decide between docs, rules, and skills. Do not use it once the task is already clearly a backend scaffold, frontend scaffold, or contract-loop job.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cabloy Workflow
|
|
7
|
+
|
|
8
|
+
Use this skill to choose the right workflow before making Cabloy changes.
|
|
9
|
+
|
|
10
|
+
## Goals
|
|
11
|
+
|
|
12
|
+
1. detect whether the active repository is Cabloy Basic or Cabloy Start
|
|
13
|
+
2. choose the correct layer of work: fullstack, backend, frontend, docs, or AI-enablement
|
|
14
|
+
3. prefer Vona or Zova CLI capabilities over manual scaffolding whenever possible
|
|
15
|
+
4. keep public docs, internal docs, rules, and skills in the correct locations
|
|
16
|
+
5. finish with verification guidance that matches the scope of the task
|
|
17
|
+
|
|
18
|
+
## Step 1: Detect the active edition
|
|
19
|
+
|
|
20
|
+
Check the repository root for these marker files:
|
|
21
|
+
|
|
22
|
+
- `__CABLOY_BASIC__`
|
|
23
|
+
- `__CABLOY_START__`
|
|
24
|
+
|
|
25
|
+
Interpretation:
|
|
26
|
+
|
|
27
|
+
- `__CABLOY_BASIC__` present → this is Cabloy Basic
|
|
28
|
+
- `__CABLOY_START__` present → this is Cabloy Start
|
|
29
|
+
- neither present → inspect the repo scripts and ask the user before making a strong edition-specific assumption
|
|
30
|
+
|
|
31
|
+
This matters most for frontend work, UI-layer assumptions, flavor names, suite/module availability, SSR site baselines, project assets, and edition-specific AI guidance.
|
|
32
|
+
|
|
33
|
+
## Step 2: Identify the task layer
|
|
34
|
+
|
|
35
|
+
Classify the request before proposing a workflow.
|
|
36
|
+
|
|
37
|
+
### Fullstack
|
|
38
|
+
|
|
39
|
+
Use the fullstack path when the task spans backend and frontend or touches shared scripts, integration, docs architecture, or cross-stack generation.
|
|
40
|
+
|
|
41
|
+
Typical signals:
|
|
42
|
+
|
|
43
|
+
- "fullstack"
|
|
44
|
+
- "Cabloy"
|
|
45
|
+
- backend + frontend in one request
|
|
46
|
+
- OpenAPI + SDK + DTO + page generation
|
|
47
|
+
- docs/rules/skills that must support both Vona and Zova
|
|
48
|
+
|
|
49
|
+
### Backend (Vona)
|
|
50
|
+
|
|
51
|
+
Use the backend path when the task is about:
|
|
52
|
+
|
|
53
|
+
- suite, module, bean, service, controller, model, entity, DTO
|
|
54
|
+
- CRUD generation
|
|
55
|
+
- ORM, cache, queue, worker, schedule, auth, permissions
|
|
56
|
+
- backend tests, build, play, or database reset
|
|
57
|
+
|
|
58
|
+
### Frontend (Zova)
|
|
59
|
+
|
|
60
|
+
Use the frontend path when the task is about:
|
|
61
|
+
|
|
62
|
+
- page, component, mock, bean
|
|
63
|
+
- SSR, Web, Admin, SPA
|
|
64
|
+
- UI-layer-sensitive work
|
|
65
|
+
- OpenAPI SDK generation
|
|
66
|
+
- frontend refactors such as page params, page query, component props, or model helpers
|
|
67
|
+
|
|
68
|
+
### Docs and AI-enablement
|
|
69
|
+
|
|
70
|
+
Use the docs/AI path when the task is about:
|
|
71
|
+
|
|
72
|
+
- `cabloy-docs/`
|
|
73
|
+
- `.docs-internal/`
|
|
74
|
+
- `CLAUDE.md`
|
|
75
|
+
- `.claude/commands/`
|
|
76
|
+
- `.claude/skills/`
|
|
77
|
+
- repo guidance for AI development
|
|
78
|
+
|
|
79
|
+
## Step 3: Start from shared entrypoints
|
|
80
|
+
|
|
81
|
+
Before inventing a workflow, inspect these shared surfaces:
|
|
82
|
+
|
|
83
|
+
- the repository or workspace `package.json` that owns the active scripts
|
|
84
|
+
- `npm run vona`
|
|
85
|
+
- `npm run zova`
|
|
86
|
+
- root `CLAUDE.md` if present
|
|
87
|
+
- `cabloy-docs/` for public guidance
|
|
88
|
+
- `.docs-internal/` for maintainer rationale
|
|
89
|
+
|
|
90
|
+
If the request spans backend and frontend, classify it as fullstack by default unless the user clearly wants only one side.
|
|
91
|
+
|
|
92
|
+
If edition markers are missing or the repo shape is ambiguous, inspect the nearby scripts and ask the user before making a strong edition-specific assumption.
|
|
93
|
+
|
|
94
|
+
For deeper reference material, read:
|
|
95
|
+
|
|
96
|
+
- `references/edition-detection.md`
|
|
97
|
+
- `references/cli-strategy.md`
|
|
98
|
+
|
|
99
|
+
The reason is simple: these files are where Cabloy already encodes its real workflows.
|
|
100
|
+
|
|
101
|
+
## Step 4: Prefer CLI-first workflows
|
|
102
|
+
|
|
103
|
+
Whenever the task maps to an existing generator, initializer, refactor, or metadata command, prefer the CLI.
|
|
104
|
+
|
|
105
|
+
### Vona CLI families
|
|
106
|
+
|
|
107
|
+
Typical families:
|
|
108
|
+
|
|
109
|
+
- `bin:*`
|
|
110
|
+
- `create:*`
|
|
111
|
+
- `init:*`
|
|
112
|
+
- `tools:*`
|
|
113
|
+
|
|
114
|
+
Typical use cases:
|
|
115
|
+
|
|
116
|
+
- scaffold suite/module/bean/test resources
|
|
117
|
+
- initialize config/locale/constant/error/assets/types
|
|
118
|
+
- generate CRUD-related artifacts
|
|
119
|
+
- refresh metadata or dependency-related output
|
|
120
|
+
- run backend verification flows
|
|
121
|
+
|
|
122
|
+
### Zova CLI families
|
|
123
|
+
|
|
124
|
+
Typical families:
|
|
125
|
+
|
|
126
|
+
- `bin:*`
|
|
127
|
+
- `create:*`
|
|
128
|
+
- `init:*`
|
|
129
|
+
- `refactor:*`
|
|
130
|
+
- `tools:*`
|
|
131
|
+
- `openapi:*`
|
|
132
|
+
|
|
133
|
+
Typical use cases:
|
|
134
|
+
|
|
135
|
+
- scaffold suite/module/page/component/mock/bean resources
|
|
136
|
+
- initialize app/system assets and typing helpers
|
|
137
|
+
- run focused refactors for page/component patterns
|
|
138
|
+
- generate OpenAPI-related output
|
|
139
|
+
- refresh metadata or dependency-related output
|
|
140
|
+
|
|
141
|
+
## Step 5: Choose where the knowledge belongs
|
|
142
|
+
|
|
143
|
+
When the user is asking for guidance or automation assets, route the work to the correct home.
|
|
144
|
+
|
|
145
|
+
### Public docs
|
|
146
|
+
|
|
147
|
+
Use `cabloy-docs/` for:
|
|
148
|
+
|
|
149
|
+
- user-facing explanations
|
|
150
|
+
- reusable AI-facing workflow guidance
|
|
151
|
+
- edition-aware public documentation
|
|
152
|
+
|
|
153
|
+
### Internal engineering docs
|
|
154
|
+
|
|
155
|
+
Use `.docs-internal/` for:
|
|
156
|
+
|
|
157
|
+
- ADRs
|
|
158
|
+
- architecture notes
|
|
159
|
+
- maintainer rationale
|
|
160
|
+
- invariants and design boundaries
|
|
161
|
+
|
|
162
|
+
### Root rules and commands
|
|
163
|
+
|
|
164
|
+
Use `CLAUDE.md` and `.claude/commands/` for:
|
|
165
|
+
|
|
166
|
+
- concise operational guidance
|
|
167
|
+
- named recurring workflows
|
|
168
|
+
- repo-wide behavior for Claude
|
|
169
|
+
|
|
170
|
+
### Skills
|
|
171
|
+
|
|
172
|
+
Use `.claude/skills/` for:
|
|
173
|
+
|
|
174
|
+
- procedural workflows that benefit from reusable instructions
|
|
175
|
+
- edition-aware decision trees
|
|
176
|
+
- CLI-first orchestration paths
|
|
177
|
+
- future bundled references or deterministic helper scripts
|
|
178
|
+
|
|
179
|
+
### Class-placement questions
|
|
180
|
+
|
|
181
|
+
When the request is about whether a backend base class belongs in `src/lib`, `src/service`, or the global bean shorthand surface, apply the A / B1 / B2 rule.
|
|
182
|
+
|
|
183
|
+
- **A**: pure helper base -> `src/lib`
|
|
184
|
+
- **B1**: subclass-only base -> evaluate case by case, often `src/lib`
|
|
185
|
+
- **B2**: runtime-anchor base that still needs container-managed or selector/class-token behavior but should not be a global bean -> prefer `src/service` with `@Service()`
|
|
186
|
+
|
|
187
|
+
For these requests:
|
|
188
|
+
|
|
189
|
+
- put the durable operational explanation in `cabloy-docs/`
|
|
190
|
+
- put rationale and invariants in `.docs-internal/`
|
|
191
|
+
- keep `CLAUDE.md` short and behavioral
|
|
192
|
+
- do not treat `@Service()` as a business-layer naming decision only; for B2 it is a runtime-anchor placement choice
|
|
193
|
+
|
|
194
|
+
### Service underscore files
|
|
195
|
+
|
|
196
|
+
When a backend base class should move into `src/service`, do not treat the file name as a cosmetic choice.
|
|
197
|
+
|
|
198
|
+
Prefer `src/service/*_.ts` when the class:
|
|
199
|
+
|
|
200
|
+
- should remain container-managed
|
|
201
|
+
- mainly acts as a runtime-anchor base, selector anchor, or class-token contract
|
|
202
|
+
- should not participate in the general full-name registration surface
|
|
203
|
+
- may need to keep meaningful `@Virtual()` semantics
|
|
204
|
+
|
|
205
|
+
Prefer a normal `src/service/*.ts` file when the service-scene class itself should remain part of the general full-name surface.
|
|
206
|
+
|
|
207
|
+
Do not apply this mechanically to all concrete beans or all abstract classes. Judge by runtime role and registration surface.
|
|
208
|
+
|
|
209
|
+
### Bean-scene and global shorthand
|
|
210
|
+
|
|
211
|
+
Treat `src/bean` as the structural definition of the global shorthand surface.
|
|
212
|
+
|
|
213
|
+
For these requests:
|
|
214
|
+
|
|
215
|
+
- do not treat `@Virtual()` as a reason to exclude a bean-scene class from `IBeanRecordGlobal`
|
|
216
|
+
- if a class in `src/bean` should not be global shorthand, re-evaluate placement first
|
|
217
|
+
- prefer B1/B2 relocation over metadata exceptions or manual `IBeanRecordGlobal` patching
|
|
218
|
+
- use `IBeanRecordGlobal` as the static authoring-surface registry for global shorthand, not as a full runtime-container inventory
|
|
219
|
+
|
|
220
|
+
### Global bean lookup workflow
|
|
221
|
+
|
|
222
|
+
When backend code references `this.bean.xxx`, `ctx.bean.xxx`, or `app.bean.xxx`, prefer this lookup sequence:
|
|
223
|
+
|
|
224
|
+
1. check `IBeanRecordGlobal` in the relevant module `src/.metadata/index.ts`
|
|
225
|
+
2. map the shorthand name to the generated bean type
|
|
226
|
+
3. jump from the generated type to the source file in `src/bean`
|
|
227
|
+
4. only if the shorthand is not found, re-evaluate whether the target is actually a general full-name bean, a service-scene runtime-anchor, or a lib/helper class
|
|
228
|
+
|
|
229
|
+
Use `IBeanRecordGeneral` for general full-name beans and `src/service` or service metadata for runtime-anchor/service-scene lookup. Do not treat `IBeanRecordGlobal` as a full container inventory.
|
|
230
|
+
|
|
231
|
+
## Step 6: Apply edition-aware branching
|
|
232
|
+
|
|
233
|
+
When the task is frontend-sensitive or examples differ between editions, branch explicitly.
|
|
234
|
+
|
|
235
|
+
### Cabloy Basic
|
|
236
|
+
|
|
237
|
+
Bias toward:
|
|
238
|
+
|
|
239
|
+
- the public framework/reference edition
|
|
240
|
+
- current public monorepo source
|
|
241
|
+
- the default `npm create cabloy` project route
|
|
242
|
+
- public docs examples
|
|
243
|
+
- the Basic repo marker
|
|
244
|
+
- current Basic frontend flavors, module layout, and DaisyUI + Tailwind CSS UI assumptions
|
|
245
|
+
|
|
246
|
+
### Cabloy Start
|
|
247
|
+
|
|
248
|
+
Bias toward:
|
|
249
|
+
|
|
250
|
+
- the private commercial edition
|
|
251
|
+
- the Start repo marker
|
|
252
|
+
- the licensed private repository source
|
|
253
|
+
- Vuetify-sensitive examples
|
|
254
|
+
- Start-specific frontend flavor names
|
|
255
|
+
- Start-specific suites/modules, SSR site baselines, project assets, and licensed private-repo structure
|
|
256
|
+
|
|
257
|
+
Do not silently reuse Basic examples when Start-specific assumptions matter.
|
|
258
|
+
|
|
259
|
+
## Step 7: Verification
|
|
260
|
+
|
|
261
|
+
Always finish with a verification plan that matches the work.
|
|
262
|
+
|
|
263
|
+
### For docs or AI-asset changes
|
|
264
|
+
|
|
265
|
+
Verify:
|
|
266
|
+
|
|
267
|
+
- referenced paths exist
|
|
268
|
+
- command names still exist
|
|
269
|
+
- public docs, internal docs, and rules tell a consistent story
|
|
270
|
+
- edition-specific notes point to the right repo assumptions
|
|
271
|
+
|
|
272
|
+
### For backend/frontend workflow changes
|
|
273
|
+
|
|
274
|
+
Prefer the narrowest useful checks first, then broader checks when needed.
|
|
275
|
+
|
|
276
|
+
Typical shared checks include:
|
|
277
|
+
|
|
278
|
+
- root scripts such as `npm run tsc`, `npm run test`, `npm run build`
|
|
279
|
+
- command help or discovery output from `npm run vona` / `npm run zova`
|
|
280
|
+
- targeted build/dev/typecheck flows for the affected side
|
|
281
|
+
|
|
282
|
+
## Response pattern
|
|
283
|
+
|
|
284
|
+
When you use this skill, structure the response around these points when helpful:
|
|
285
|
+
|
|
286
|
+
1. detected edition
|
|
287
|
+
2. detected task layer
|
|
288
|
+
3. recommended CLI or repo entrypoint
|
|
289
|
+
4. files or directories likely involved
|
|
290
|
+
5. verification steps
|
|
291
|
+
|
|
292
|
+
Keep the response practical. The value of this skill is not extra prose. The value is choosing the right Cabloy workflow quickly and accurately.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "cabloy-workflow",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "I am in the cabloy-basic repo and want to add a new backend bean plus the related frontend page for an admin workflow. Please tell me the right Cabloy workflow and what command families I should inspect first.",
|
|
7
|
+
"expected_output": "Detects Cabloy Basic, classifies the work as cross-stack, recommends root package.json plus Vona/Zova CLI families instead of manual scaffolding, and mentions verification.",
|
|
8
|
+
"files": []
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": 2,
|
|
12
|
+
"prompt": "We are working in cabloy-start and I need to create a new page with Vuetify-specific assumptions. Which repo checks should Claude do before recommending code changes?",
|
|
13
|
+
"expected_output": "Detects Cabloy Start, highlights the edition marker, treats the task as frontend-sensitive, and avoids reusing Cabloy Basic assumptions blindly.",
|
|
14
|
+
"files": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 3,
|
|
18
|
+
"prompt": "Please help me decide whether this new AI guidance belongs in public docs, .docs-internal, CLAUDE.md, or a skill. The guidance is about when to use npm run zova instead of hand-written scaffolding.",
|
|
19
|
+
"expected_output": "Routes the request to the right knowledge homes, prefers public docs plus Claude rules/skills as appropriate, and reinforces the CLI-first principle.",
|
|
20
|
+
"files": []
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": 4,
|
|
24
|
+
"prompt": "I found a Cabloy-like repo without __CABLOY_BASIC__ or __CABLOY_START__. Before I scaffold a frontend page, what should Claude verify so it does not assume the wrong edition?",
|
|
25
|
+
"expected_output": "Does not force an edition, inspects the owning package scripts and nearby repo structure, and asks before making a strong edition-specific assumption.",
|
|
26
|
+
"files": []
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": 5,
|
|
30
|
+
"prompt": "I want to update the public guidance for Cabloy contributors about using CLI generators first, but I also think Claude should follow the same rule automatically. Where should each part of that knowledge live?",
|
|
31
|
+
"expected_output": "Splits the guidance across public docs and Claude rules/skills appropriately, keeping maintainer rationale out of public docs unless needed.",
|
|
32
|
+
"files": []
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|