cabloy 5.1.49 → 5.1.51

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 (276) hide show
  1. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +207 -0
  2. package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +29 -0
  3. package/.claude/skills/cabloy-backend-scaffold/references/backend-thread-map.md +52 -0
  4. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +39 -0
  5. package/.claude/skills/cabloy-contract-loop/SKILL.md +201 -0
  6. package/.claude/skills/cabloy-contract-loop/evals/evals.json +29 -0
  7. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +47 -0
  8. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -0
  9. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +230 -0
  10. package/.claude/skills/cabloy-frontend-scaffold/evals/evals.json +35 -0
  11. package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +41 -0
  12. package/.claude/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +54 -0
  13. package/.claude/skills/cabloy-workflow/SKILL.md +288 -0
  14. package/.claude/skills/cabloy-workflow/evals/evals.json +35 -0
  15. package/.claude/skills/cabloy-workflow/references/cli-strategy.md +39 -0
  16. package/.claude/skills/cabloy-workflow/references/edition-detection.md +29 -0
  17. package/.github/workflows/docs-pages.yml +54 -0
  18. package/.gitignore +1 -0
  19. package/CHANGELOG.md +46 -0
  20. package/CLAUDE.md +59 -0
  21. package/README.md +137 -0
  22. package/cabloy-docs/.vitepress/config.mjs +222 -0
  23. package/cabloy-docs/.vitepress/public/CNAME +1 -0
  24. package/cabloy-docs/.vitepress/theme/custom.css +64 -0
  25. package/cabloy-docs/.vitepress/theme/edition-badges.md +5 -0
  26. package/cabloy-docs/.vitepress/theme/index.js +5 -0
  27. package/cabloy-docs/ai/class-placement-rule.md +138 -0
  28. package/cabloy-docs/ai/cli-for-agents.md +56 -0
  29. package/cabloy-docs/ai/cli-to-skill-map.md +165 -0
  30. package/cabloy-docs/ai/docs-skills-rules-mapping.md +167 -0
  31. package/cabloy-docs/ai/edition-detection.md +30 -0
  32. package/cabloy-docs/ai/future-skill-roadmap.md +135 -0
  33. package/cabloy-docs/ai/global-bean-lookup.md +157 -0
  34. package/cabloy-docs/ai/introduction.md +62 -0
  35. package/cabloy-docs/ai/playbook-backend-module.md +111 -0
  36. package/cabloy-docs/ai/playbook-contract-regeneration.md +100 -0
  37. package/cabloy-docs/ai/playbook-frontend-page.md +99 -0
  38. package/cabloy-docs/ai/playbook-metadata-refresh.md +67 -0
  39. package/cabloy-docs/ai/repo-guidance.md +58 -0
  40. package/cabloy-docs/ai/rules-and-config.md +29 -0
  41. package/cabloy-docs/ai/skills.md +35 -0
  42. package/cabloy-docs/ai/verification.md +30 -0
  43. package/cabloy-docs/backend/aop-overview.md +128 -0
  44. package/cabloy-docs/backend/auth-guide.md +151 -0
  45. package/cabloy-docs/backend/backend-essentials.md +128 -0
  46. package/cabloy-docs/backend/broadcast-guide.md +138 -0
  47. package/cabloy-docs/backend/cache-guide.md +70 -0
  48. package/cabloy-docs/backend/captcha-guide.md +162 -0
  49. package/cabloy-docs/backend/cli.md +173 -0
  50. package/cabloy-docs/backend/config-guide.md +249 -0
  51. package/cabloy-docs/backend/controller-aop-guide.md +270 -0
  52. package/cabloy-docs/backend/controller-guide.md +347 -0
  53. package/cabloy-docs/backend/crud-workflow.md +118 -0
  54. package/cabloy-docs/backend/dto-guide.md +161 -0
  55. package/cabloy-docs/backend/dto-infer-generation.md +153 -0
  56. package/cabloy-docs/backend/dynamic-datasource-guide.md +70 -0
  57. package/cabloy-docs/backend/election-guide.md +141 -0
  58. package/cabloy-docs/backend/entity-guide.md +150 -0
  59. package/cabloy-docs/backend/error-guide.md +108 -0
  60. package/cabloy-docs/backend/event-guide.md +183 -0
  61. package/cabloy-docs/backend/external-aop-guide.md +149 -0
  62. package/cabloy-docs/backend/field-indexes.md +79 -0
  63. package/cabloy-docs/backend/foundation.md +281 -0
  64. package/cabloy-docs/backend/i18n-guide.md +211 -0
  65. package/cabloy-docs/backend/internal-aop-guide.md +181 -0
  66. package/cabloy-docs/backend/introduction.md +95 -0
  67. package/cabloy-docs/backend/jwt-guide.md +276 -0
  68. package/cabloy-docs/backend/logger-guide.md +223 -0
  69. package/cabloy-docs/backend/mail-guide.md +189 -0
  70. package/cabloy-docs/backend/menu-guide.md +80 -0
  71. package/cabloy-docs/backend/migration-and-changes.md +192 -0
  72. package/cabloy-docs/backend/model-guide.md +274 -0
  73. package/cabloy-docs/backend/multi-database-datasource.md +171 -0
  74. package/cabloy-docs/backend/multi-instance-and-instance-resolution.md +196 -0
  75. package/cabloy-docs/backend/openapi-guide.md +118 -0
  76. package/cabloy-docs/backend/orm-aggregate-group-guide.md +210 -0
  77. package/cabloy-docs/backend/orm-configuration-guide.md +165 -0
  78. package/cabloy-docs/backend/orm-guide.md +109 -0
  79. package/cabloy-docs/backend/orm-mutation-guide.md +195 -0
  80. package/cabloy-docs/backend/orm-select-guide.md +243 -0
  81. package/cabloy-docs/backend/queue-guide.md +271 -0
  82. package/cabloy-docs/backend/quickstart.md +141 -0
  83. package/cabloy-docs/backend/redis-guide.md +70 -0
  84. package/cabloy-docs/backend/redlock-guide.md +60 -0
  85. package/cabloy-docs/backend/relations-guide.md +250 -0
  86. package/cabloy-docs/backend/runtime-and-flavors.md +304 -0
  87. package/cabloy-docs/backend/schedule-guide.md +81 -0
  88. package/cabloy-docs/backend/scripts.md +116 -0
  89. package/cabloy-docs/backend/serialization-guide.md +192 -0
  90. package/cabloy-docs/backend/service-guide.md +166 -0
  91. package/cabloy-docs/backend/sharding-guide.md +49 -0
  92. package/cabloy-docs/backend/startup-guide.md +326 -0
  93. package/cabloy-docs/backend/transaction-guide.md +82 -0
  94. package/cabloy-docs/backend/unit-testing.md +209 -0
  95. package/cabloy-docs/backend/upload-guide.md +160 -0
  96. package/cabloy-docs/backend/user-access-guide.md +157 -0
  97. package/cabloy-docs/backend/validation-guide.md +80 -0
  98. package/cabloy-docs/backend/worker-guide.md +59 -0
  99. package/cabloy-docs/editions/cabloy-basic.md +25 -0
  100. package/cabloy-docs/editions/cabloy-start.md +24 -0
  101. package/cabloy-docs/editions/detection.md +31 -0
  102. package/cabloy-docs/editions/overview.md +44 -0
  103. package/cabloy-docs/frontend/api-guide.md +93 -0
  104. package/cabloy-docs/frontend/api-schema-guide.md +43 -0
  105. package/cabloy-docs/frontend/app-startup-guide.md +185 -0
  106. package/cabloy-docs/frontend/cli.md +78 -0
  107. package/cabloy-docs/frontend/component-guide.md +105 -0
  108. package/cabloy-docs/frontend/component-props-guide.md +97 -0
  109. package/cabloy-docs/frontend/component-v-model-guide.md +110 -0
  110. package/cabloy-docs/frontend/css-in-js-guide.md +151 -0
  111. package/cabloy-docs/frontend/design-principles.md +55 -0
  112. package/cabloy-docs/frontend/environment-config-guide.md +250 -0
  113. package/cabloy-docs/frontend/foundation.md +57 -0
  114. package/cabloy-docs/frontend/generic-component-guide.md +35 -0
  115. package/cabloy-docs/frontend/icon-engine-guide.md +88 -0
  116. package/cabloy-docs/frontend/introduction.md +32 -0
  117. package/cabloy-docs/frontend/ioc-and-beans.md +211 -0
  118. package/cabloy-docs/frontend/mock-guide.md +109 -0
  119. package/cabloy-docs/frontend/model-architecture.md +87 -0
  120. package/cabloy-docs/frontend/model-state-guide.md +70 -0
  121. package/cabloy-docs/frontend/module-scope.md +168 -0
  122. package/cabloy-docs/frontend/modules-and-suites.md +179 -0
  123. package/cabloy-docs/frontend/navigation-guards-guide.md +68 -0
  124. package/cabloy-docs/frontend/openapi-sdk-guide.md +102 -0
  125. package/cabloy-docs/frontend/page-guide.md +223 -0
  126. package/cabloy-docs/frontend/page-params-guide.md +87 -0
  127. package/cabloy-docs/frontend/page-query-guide.md +96 -0
  128. package/cabloy-docs/frontend/page-route-guide.md +147 -0
  129. package/cabloy-docs/frontend/quickstart.md +201 -0
  130. package/cabloy-docs/frontend/route-alias-guide.md +61 -0
  131. package/cabloy-docs/frontend/scripts.md +86 -0
  132. package/cabloy-docs/frontend/sdk-guide.md +45 -0
  133. package/cabloy-docs/frontend/server-data.md +74 -0
  134. package/cabloy-docs/frontend/ssr-client-only.md +40 -0
  135. package/cabloy-docs/frontend/ssr-env.md +51 -0
  136. package/cabloy-docs/frontend/ssr-init-data.md +46 -0
  137. package/cabloy-docs/frontend/ssr-overview.md +48 -0
  138. package/cabloy-docs/frontend/ssr-seo-meta.md +52 -0
  139. package/cabloy-docs/frontend/system-startup-guide.md +186 -0
  140. package/cabloy-docs/frontend/theme-guide.md +154 -0
  141. package/cabloy-docs/frontend/zod-guide.md +161 -0
  142. package/cabloy-docs/fullstack/edition-collaboration-differences.md +61 -0
  143. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +64 -0
  144. package/cabloy-docs/fullstack/introduction.md +69 -0
  145. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -0
  146. package/cabloy-docs/fullstack/quickstart.md +86 -0
  147. package/cabloy-docs/fullstack/vona-zova-integration.md +86 -0
  148. package/cabloy-docs/index.md +73 -0
  149. package/cabloy-docs/package.json +16 -0
  150. package/cabloy-docs/pnpm-lock.yaml +1607 -0
  151. package/cabloy-docs/reference/backend-directory-structure.md +88 -0
  152. package/cabloy-docs/reference/cli-reference.md +49 -0
  153. package/cabloy-docs/reference/glossary.md +38 -0
  154. package/cabloy-docs/reference/package-map.md +105 -0
  155. package/cabloy-docs/reference/repo-scripts.md +36 -0
  156. package/package.json +4 -1
  157. package/scripts/init.ts +12 -0
  158. package/scripts/upgrade.ts +31 -3
  159. package/vona/README.md +3 -3
  160. package/vona/README.zh-CN.md +4 -4
  161. package/vona/packages-vona/vona/package.json +1 -1
  162. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +1 -1
  163. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/src/bean/summerCache.datasourceWrite.ts +2 -2
  164. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  165. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +1 -1
  166. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/src/bean/cacheRedis.captcha.ts +2 -2
  167. package/vona/src/suite-vendor/a-captcha/package.json +1 -1
  168. package/vona/src/suite-vendor/a-vona/modules/a-bean/cli/bean/metadata/generate.ts +5 -6
  169. package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +1 -1
  170. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheMem/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  171. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheRedis/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  172. package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +1 -1
  173. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/.metadata/index.ts +13 -2
  174. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/bean/bean.cache.ts +6 -7
  175. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheMemBase.ts → service/cacheMemBase_.ts} +3 -3
  176. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheRedisBase.ts → service/cacheRedisBase_.ts} +3 -3
  177. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +1 -1
  178. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts +2 -2
  179. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts +2 -2
  180. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
  181. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/summerCache.json.ts +2 -2
  182. package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  183. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  184. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/.metadata/index.ts +4 -3
  185. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.database.ts +3 -3
  186. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.model.ts +1 -1
  187. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
  188. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/utils.ts +1 -1
  189. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/index.ts +1 -1
  190. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts +1 -1
  191. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts +1 -1
  192. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.modelBase.ts +0 -5
  193. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
  194. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
  195. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +1 -1
  196. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
  197. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +1 -1
  198. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
  199. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
  200. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/index.ts +1 -0
  201. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +3 -3
  202. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
  203. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
  204. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
  205. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
  206. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheEntity_.ts +1 -1
  207. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheQuery_.ts +1 -1
  208. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +2 -2
  209. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean/bean.databaseDialectBase.ts → service/databaseDialectBase_.ts} +38 -41
  210. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +2 -2
  211. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +3 -3
  212. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -5
  213. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +1 -1
  214. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +1 -1
  215. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoSelectAndCount.ts +1 -1
  216. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/model.ts +1 -1
  217. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelAggr.ts +1 -1
  218. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelCount.ts +1 -1
  219. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +1 -1
  220. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGroup.ts +1 -1
  221. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelIncrement.ts +1 -1
  222. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relations.ts +1 -1
  223. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +1 -1
  224. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDef.ts +1 -1
  225. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefDynamic.ts +1 -1
  226. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefMutate.ts +1 -1
  227. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsMutate.ts +1 -1
  228. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsTables.ts +1 -1
  229. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +1 -1
  230. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.betterSqlite3.ts +2 -2
  231. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.mysql.ts +2 -2
  232. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.pg.ts +2 -2
  233. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  234. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +109 -40
  235. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +2 -2
  236. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  237. package/vona/src/suite-vendor/a-vona/modules/a-startup/src/bean/cacheRedis.startupDebounce.ts +2 -2
  238. package/vona/src/suite-vendor/a-vona/modules/a-summer/cli/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  239. package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +1 -1
  240. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/.metadata/index.ts +1 -1
  241. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/bean/bean.summer.ts +3 -3
  242. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localMem_.ts +3 -3
  243. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localRedis_.ts +3 -3
  244. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/{bean/bean.summerCacheBase.ts → service/summerCacheBase_.ts} +3 -3
  245. package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +1 -1
  246. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.rapidoc.ts +2 -2
  247. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.swagger.ts +2 -2
  248. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
  249. package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/cacheRedis.authToken.ts +2 -2
  250. package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +1 -1
  251. package/vona/src/suite-vendor/a-vona/modules/a-worker/src/bean/cacheRedis.workerAlive.ts +2 -2
  252. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  253. package/zova/README.md +4 -4
  254. package/zova/README.zh-CN.md +4 -4
  255. package/zova/packages-zova/zova/package.json +2 -2
  256. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolTwo/controller.tsx +0 -2
  257. package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +1 -0
  258. package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +1 -0
  259. package/zova/src/suite/a-home/modules/home-base/src/page/errorNotFound/controller.tsx +8 -2
  260. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +1 -1
  261. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.header.tsx +1 -1
  262. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.locale.tsx +2 -5
  263. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.tabs.tsx +1 -4
  264. package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +1 -1
  265. package/zova/src/suite-vendor/a-zova/modules/a-router/src/bean/sys.router.ts +28 -6
  266. package/zova/src/suite-vendor/a-zova/modules/a-router/src/monkeySys.ts +15 -3
  267. package/zova/src/suite-vendor/a-zova/modules/a-router/src/types/router.ts +1 -0
  268. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +1 -1
  269. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts +4 -0
  270. package/zova/src/suite-vendor/a-zova/package.json +3 -3
  271. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud.ts +0 -0
  272. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_inner.ts +0 -0
  273. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_table.ts +0 -0
  274. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_knex.ts +0 -0
  275. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_utils.ts +0 -0
  276. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_view.ts +0 -0
@@ -0,0 +1,157 @@
1
+ # Global Bean Lookup
2
+
3
+ Use this page when AI or contributors need to identify which backend shorthand a bean name refers to, or decide where to continue searching after a shorthand lookup fails.
4
+
5
+ ## Why this lookup rule matters
6
+
7
+ Backend work often starts from code such as:
8
+
9
+ - `this.bean.database`
10
+ - `ctx.bean.model`
11
+ - `app.bean.xxx`
12
+
13
+ If an agent treats every bean-like class as part of one flat container, it wastes time and often inspects the wrong scene first.
14
+
15
+ The goal of this rule is to make global bean lookup fast and structurally correct:
16
+
17
+ - use `IBeanRecordGlobal` for global shorthand lookup
18
+ - use `IBeanRecordGeneral` for general full-name lookup
19
+ - use service-scene metadata and `src/service` for runtime-anchor and service lookup
20
+ - use class placement, not metadata exceptions, to keep these surfaces clean
21
+
22
+ ## The three lookup surfaces
23
+
24
+ ### 1. `IBeanRecordGlobal`
25
+
26
+ Use `IBeanRecordGlobal` for the **global shorthand authoring surface**.
27
+
28
+ This is the first static lookup surface when backend code references:
29
+
30
+ - `this.bean.xxx`
31
+ - `ctx.bean.xxx`
32
+ - `app.bean.xxx`
33
+
34
+ Typical source of truth:
35
+
36
+ - module `src/.metadata/index.ts`
37
+ - corresponding `src/bean` source file
38
+
39
+ Examples:
40
+
41
+ - `database`
42
+ - `model`
43
+
44
+ ### 2. `IBeanRecordGeneral`
45
+
46
+ Use `IBeanRecordGeneral` for the **general full-name bean surface**.
47
+
48
+ This is the right lookup surface when code references a bean by full name, such as:
49
+
50
+ - `bean._getBean('a-orm.service.database')`
51
+ - generated general bean registrations
52
+ - scene-qualified bean identities that are not global shorthand
53
+
54
+ Do not use `IBeanRecordGeneral` as the first lookup step for shorthand expressions like `this.bean.xxx`.
55
+
56
+ ### 3. Service-scene and runtime-anchor lookup
57
+
58
+ Use `src/service`, service metadata, and class-token/selector call sites for classes that are not global shorthand but still rely on container-managed behavior.
59
+
60
+ This is the right path for:
61
+
62
+ - runtime-anchor bases
63
+ - selector-based services
64
+ - class-token lookup targets
65
+ - `src/service/*_.ts` classes that should not participate in `IBeanRecordGeneral`
66
+
67
+ Examples:
68
+
69
+ - `databaseDialectBase_.ts`
70
+ - cache/summer runtime-anchor bases in `src/service`
71
+
72
+ ## The default lookup workflow
73
+
74
+ When backend code references `this.bean.xxx`, `ctx.bean.xxx`, or `app.bean.xxx`, prefer this sequence:
75
+
76
+ 1. check `IBeanRecordGlobal` in the relevant module `src/.metadata/index.ts`
77
+ 2. map the shorthand name to the generated bean type
78
+ 3. jump from the generated type to the source file in `src/bean`
79
+ 4. inspect neighboring bean-scene shorthand files only if needed for context
80
+ 5. only if the shorthand is not found, re-evaluate whether the target is actually:
81
+ - a general full-name bean
82
+ - a service-scene runtime-anchor
83
+ - a lib/helper class
84
+
85
+ This keeps shorthand lookup fast and avoids jumping into `src/service` or `src/lib` too early.
86
+
87
+ ## What to do when the shorthand is not found
88
+
89
+ If `IBeanRecordGlobal` does not contain the target name, do not assume the metadata is incomplete.
90
+
91
+ Re-check the problem category:
92
+
93
+ 1. **Is the code actually using a full-name bean?**
94
+ - then inspect `IBeanRecordGeneral`
95
+ 2. **Is the target really a service-scene runtime-anchor or selector target?**
96
+ - then inspect `src/service`, service metadata, and selector/class-token call sites
97
+ 3. **Is the target only a helper or superclass chain?**
98
+ - then inspect `src/lib`
99
+
100
+ The absence of a name from `IBeanRecordGlobal` often means the target is not a global shorthand at all.
101
+
102
+ ## Relationship to class placement
103
+
104
+ This lookup rule depends on correct backend class placement.
105
+
106
+ - `src/bean` defines the global shorthand surface
107
+ - classes that should not be global shorthand belong in `src/lib` or `src/service`
108
+ - `@Virtual()` does not remove a bean-scene class from `IBeanRecordGlobal`
109
+
110
+ That means lookup quality is improved structurally by placing classes correctly, not by adding more metadata exceptions.
111
+
112
+ For placement decisions, also read [Class Placement Rule](/ai/class-placement-rule).
113
+
114
+ ## Practical examples
115
+
116
+ ### Example: `this.bean.database`
117
+
118
+ 1. inspect the owning module `src/.metadata/index.ts`
119
+ 2. find `database` in `IBeanRecordGlobal`
120
+ 3. map it to the generated bean type
121
+ 4. jump to the corresponding `src/bean` source file
122
+
123
+ ### Example: `ctx.bean.model`
124
+
125
+ 1. inspect `IBeanRecordGlobal`
126
+ 2. find `model`
127
+ 3. jump to the bean-scene shorthand in `src/bean/bean.model.ts`
128
+ 4. continue into `src/lib` only if deeper superclass logic is needed
129
+
130
+ ### Example: database dialect runtime anchor
131
+
132
+ If the target is a dialect base or class-token runtime anchor and does not appear in `IBeanRecordGlobal`, that is expected.
133
+
134
+ Continue with:
135
+
136
+ - `src/service`
137
+ - service metadata
138
+ - class-token or selector call sites
139
+
140
+ ## Anti-patterns to avoid
141
+
142
+ Avoid these mistakes:
143
+
144
+ - treating `IBeanRecordGlobal` as a full container inventory
145
+ - jumping to `src/service` first when the code clearly uses `this.bean.xxx`
146
+ - assuming a missing shorthand means metadata is broken before checking whether the target is actually global
147
+ - keeping non-global classes in `src/bean` and compensating with metadata patches
148
+ - using `@Virtual()` as a shorthand-registration filter
149
+
150
+ ## Related guidance
151
+
152
+ Read these pages together:
153
+
154
+ - [Class Placement Rule](/ai/class-placement-rule)
155
+ - [Repo Guidance](/ai/repo-guidance)
156
+ - [Rules and Config](/ai/rules-and-config)
157
+ - [Verification](/ai/verification)
@@ -0,0 +1,62 @@
1
+ # AI Development Introduction
2
+
3
+ This page is the entrypoint for contributors who are designing, reviewing, or maintaining AI-assisted workflows in the Cabloy repository.
4
+
5
+ The Cabloy monorepo is a good fit for AI-assisted development because the source tree already contains most of the framework knowledge an agent needs:
6
+
7
+ - root scripts for shared workflows
8
+ - Vona CLI source and command groups
9
+ - Zova CLI source and command groups
10
+ - archived docs that still capture valuable concepts
11
+ - internal engineering docs for maintainers
12
+ - Claude commands and skills
13
+
14
+ ## The main design goal
15
+
16
+ The goal is not to make AI guess Cabloy conventions more effectively.
17
+
18
+ The goal is to make AI **reuse the repo’s existing conventions directly**, especially through:
19
+
20
+ - CLI commands
21
+ - root scripts
22
+ - repo markers
23
+ - internal architecture notes
24
+ - shared public documentation
25
+
26
+ ## The knowledge layers
27
+
28
+ ### Public docs
29
+
30
+ Use `cabloy-docs/` for user-facing and agent-facing guidance that should remain durable and source-aligned.
31
+
32
+ For normal project usage, prefer the user-facing entry docs such as [Fullstack Quickstart](/fullstack/quickstart). This AI section focuses on repository workflows and AI-assisted development.
33
+
34
+ ### Internal engineering docs
35
+
36
+ Use `.docs-internal/` for architecture notes, ADRs, and maintainership rationale that should not be mixed into public how-to documentation.
37
+
38
+ ### Claude rules and commands
39
+
40
+ Use root `CLAUDE.md` and `.claude/commands/` for concise operational behavior and repeatable workflows.
41
+
42
+ ### Skills
43
+
44
+ Use `.claude/skills/` for procedural workflows that benefit from reusable instructions, bundled references, or future deterministic scripts.
45
+
46
+ ## Recommended AI lookup rules
47
+
48
+ For backend shorthand lookup, prefer these surfaces in order:
49
+
50
+ 1. `IBeanRecordGlobal` for `this.bean.xxx`, `ctx.bean.xxx`, and `app.bean.xxx`
51
+ 2. module `src/.metadata/index.ts` to map shorthand names to generated bean types
52
+ 3. `src/bean` for the shorthand source file itself
53
+ 4. only then re-evaluate whether the target is really a general full-name bean, a service-scene runtime-anchor, or a lib/helper class
54
+
55
+ For the full lookup workflow, read [Global Bean Lookup](/ai/global-bean-lookup).
56
+
57
+ ## Common AI mistakes to avoid
58
+
59
+ - assuming Cabloy Basic and Cabloy Start are identical
60
+ - creating framework files manually when a CLI command already exists
61
+ - trusting stale legacy repo paths instead of current source
62
+ - mixing public documentation and internal rationale into one document set
@@ -0,0 +1,111 @@
1
+ # Playbook: Add a Backend Module
2
+
3
+ This playbook turns the Cabloy backend documentation into a repeatable AI-friendly workflow.
4
+
5
+ ## When to use this playbook
6
+
7
+ Use this playbook when the goal is to add a new backend feature thread in Vona, such as:
8
+
9
+ - a new module
10
+ - a new controller/service/model/entity/dto thread
11
+ - a new CRUD-oriented backend feature
12
+
13
+ ## Step 1: Detect the repo and scope
14
+
15
+ Before generating anything:
16
+
17
+ 1. confirm the active repo marker
18
+ 2. confirm whether the task is backend-only or fullstack
19
+ 3. inspect the root `package.json`
20
+ 4. inspect `npm run vona` command families
21
+
22
+ This avoids solving the wrong problem or choosing the wrong edition assumptions.
23
+
24
+ ## Step 2: Prefer the Vona CLI first
25
+
26
+ Choose the smallest matching Vona command family.
27
+
28
+ Typical options include:
29
+
30
+ - `create:*` for module/bean/test scaffolding
31
+ - `tools:*` for CRUD generation
32
+ - `init:*` for config/locale/constant/type helpers
33
+
34
+ Example paths:
35
+
36
+ ```bash
37
+ npm run vona :create:module ...
38
+ npm run vona :create:bean ...
39
+ npm run vona :tools:crud ...
40
+ ```
41
+
42
+ Do not start by hand-writing the whole thread if the generator already exists.
43
+
44
+ ## Step 3: Inspect the generated thread
45
+
46
+ After generation, inspect the resulting backend layers:
47
+
48
+ - controller
49
+ - service
50
+ - model
51
+ - entity
52
+ - dto
53
+ - migration/meta files if applicable
54
+ - locale and test files if applicable
55
+
56
+ Use the generated structure as the baseline rather than replacing it.
57
+
58
+ ## Step 4: Add contract and persistence details
59
+
60
+ Depending on the feature, extend the generated code with the right framework-level concerns:
61
+
62
+ - validation
63
+ - OpenAPI metadata
64
+ - DTO inference or explicit DTOs
65
+ - model relations
66
+ - migration and changes
67
+ - field indexes
68
+
69
+ Relevant docs:
70
+
71
+ - [Controller Guide](/backend/controller-guide)
72
+ - [Service Guide](/backend/service-guide)
73
+ - [Model Guide](/backend/model-guide)
74
+ - [Entity Guide](/backend/entity-guide)
75
+ - [DTO Guide](/backend/dto-guide)
76
+ - [Migration and Changes](/backend/migration-and-changes)
77
+
78
+ ## Step 5: Verify the backend path
79
+
80
+ Choose verification based on scope.
81
+
82
+ Typical checks include:
83
+
84
+ ```bash
85
+ npm run test
86
+ npm run tsc
87
+ npm run build
88
+ ```
89
+
90
+ Or narrower checks such as:
91
+
92
+ - module tests
93
+ - migration reset flow
94
+ - controller action testing
95
+
96
+ ## AI rule of thumb
97
+
98
+ A good AI backend workflow in Cabloy is usually:
99
+
100
+ 1. detect
101
+ 2. choose CLI
102
+ 3. generate
103
+ 4. inspect
104
+ 5. refine
105
+ 6. verify
106
+
107
+ Not:
108
+
109
+ 1. imagine the file structure
110
+ 2. write everything manually
111
+ 3. hope it matches framework conventions
@@ -0,0 +1,100 @@
1
+ # Playbook: Update a Backend Contract and Regenerate the Frontend
2
+
3
+ This playbook documents one of the highest-value fullstack AI workflows in Cabloy.
4
+
5
+ ## When to use this playbook
6
+
7
+ Use this playbook when a backend API contract changes and the frontend should be brought back into sync.
8
+
9
+ Typical triggers include:
10
+
11
+ - DTO field changes
12
+ - controller parameter or response changes
13
+ - validation changes
14
+ - OpenAPI metadata changes
15
+ - relation or DTO inference changes that affect API shape
16
+
17
+ ## Step 1: Update the backend contract at the correct layer
18
+
19
+ Inspect which backend layer actually owns the change:
20
+
21
+ - controller
22
+ - dto
23
+ - entity
24
+ - validation rule
25
+ - inferred DTO path
26
+ - OpenAPI configuration
27
+
28
+ Relevant docs:
29
+
30
+ - [Validation Guide](/backend/validation-guide)
31
+ - [OpenAPI Guide](/backend/openapi-guide)
32
+ - [DTO Guide](/backend/dto-guide)
33
+ - [DTO Infer and Generation](/backend/dto-infer-generation)
34
+
35
+ ## Step 2: Verify the backend contract output
36
+
37
+ Before touching the frontend, verify that the backend-side contract change is really reflected in the generated OpenAPI output.
38
+
39
+ That may include:
40
+
41
+ - rebuilding or running the backend
42
+ - checking Swagger / OpenAPI JSON
43
+ - confirming the contract shape matches intent
44
+
45
+ ## Step 3: Detect the edition and frontend target
46
+
47
+ Before regenerating frontend artifacts:
48
+
49
+ 1. detect Basic vs Start
50
+ 2. verify the relevant frontend flavor
51
+ 3. confirm whether the change affects Admin, Web, or both
52
+
53
+ ## Step 4: Regenerate the frontend-side contract artifacts
54
+
55
+ Use the Zova OpenAPI and REST-generation path rather than manually updating request code first.
56
+
57
+ Representative commands may include:
58
+
59
+ ```bash
60
+ npm run zova :openapi:generate ...
61
+ cd zova && npm run build:rest:cabloyBasicAdmin
62
+ cd zova && npm run build:rest:cabloyBasicWeb
63
+ ```
64
+
65
+ For Start, use the Start-specific flavor paths from that repo.
66
+
67
+ ## Step 5: Inspect affected frontend layers
68
+
69
+ After regeneration, inspect which frontend layers need follow-up changes:
70
+
71
+ - API services
72
+ - generated SDK
73
+ - model-managed data access
74
+ - schema-driven UI
75
+ - page or component assumptions
76
+
77
+ ## Step 6: Verify the end-to-end loop
78
+
79
+ Use a verification path that checks both sides:
80
+
81
+ - backend contract correctness
82
+ - regenerated frontend artifacts
83
+ - typecheck/build for the affected frontend edition or flavor
84
+
85
+ ## AI rule of thumb
86
+
87
+ A good fullstack contract update workflow is usually:
88
+
89
+ 1. change backend contract
90
+ 2. verify OpenAPI output
91
+ 3. detect edition and target flavor
92
+ 4. regenerate frontend contract artifacts
93
+ 5. inspect downstream breakage
94
+ 6. verify end to end
95
+
96
+ Not:
97
+
98
+ 1. change backend DTO
99
+ 2. hand-edit a few frontend request types
100
+ 3. leave the contract loop out of sync
@@ -0,0 +1,99 @@
1
+ # Playbook: Add a Frontend Page
2
+
3
+ This playbook turns the Zova frontend docs into a repeatable AI-friendly workflow.
4
+
5
+ ## When to use this playbook
6
+
7
+ Use this playbook when the goal is to add or extend a frontend page, especially when the work may involve:
8
+
9
+ - page creation
10
+ - route and params/query setup
11
+ - component integration
12
+ - model or API integration
13
+ - edition-sensitive UI assumptions
14
+
15
+ ## Step 1: Detect the edition first
16
+
17
+ Before generating or editing anything:
18
+
19
+ 1. check `__CABLOY_BASIC__` or `__CABLOY_START__`
20
+ 2. confirm the active frontend flavor assumptions
21
+ 3. inspect root `package.json` and `npm run zova`
22
+
23
+ This matters because frontend examples can differ between Basic and Start.
24
+
25
+ ## Step 2: Use the page generator first
26
+
27
+ Start from the Zova generator instead of creating the page structure manually.
28
+
29
+ Representative command:
30
+
31
+ ```bash
32
+ npm run zova :create:page ...
33
+ ```
34
+
35
+ ## Step 3: Add page capabilities with refactor commands
36
+
37
+ If the page needs additional framework features, prefer the dedicated refactor commands.
38
+
39
+ Representative examples:
40
+
41
+ ```bash
42
+ npm run zova :refactor:pageQuery ...
43
+ npm run zova :refactor:pageParams ...
44
+ ```
45
+
46
+ That is better than manually recreating the framework structure because the refactor commands preserve Zova conventions.
47
+
48
+ ## Step 4: Connect data and components the Zova way
49
+
50
+ Depending on the page, extend it through the right abstraction layer:
51
+
52
+ - API service
53
+ - model-managed remote state
54
+ - component wrappers
55
+ - SSR init data
56
+ - navigation guards or route metadata
57
+
58
+ Relevant docs:
59
+
60
+ - [Page Guide](/frontend/page-guide)
61
+ - [Page Query Guide](/frontend/page-query-guide)
62
+ - [Page Params Guide](/frontend/page-params-guide)
63
+ - [API Guide](/frontend/api-guide)
64
+ - [Model State Guide](/frontend/model-state-guide)
65
+ - [SSR Init Data](/frontend/ssr-init-data)
66
+
67
+ ## Step 5: Regenerate metadata when needed
68
+
69
+ If the page changes affect route structure or typed metadata, regenerate the relevant metadata through the Zova tool path.
70
+
71
+ Representative command family:
72
+
73
+ ```bash
74
+ npm run zova :tools:metadata ...
75
+ ```
76
+
77
+ ## Step 6: Verify the active edition workflow
78
+
79
+ Use the right verification path for the active repo and flavor.
80
+
81
+ Typical checks include:
82
+
83
+ ```bash
84
+ npm run tsc
85
+ npm run build:zova
86
+ ```
87
+
88
+ And if needed, the relevant `zova/` flavor-specific build or REST generation paths.
89
+
90
+ ## AI rule of thumb
91
+
92
+ A good AI frontend-page workflow in Cabloy is usually:
93
+
94
+ 1. detect edition
95
+ 2. choose generator or refactor command
96
+ 3. generate or transform
97
+ 4. connect API/model/SSR pieces
98
+ 5. regenerate metadata if needed
99
+ 6. verify
@@ -0,0 +1,67 @@
1
+ # Playbook: Metadata Refresh Workflow
2
+
3
+ This playbook documents when and how Cabloy contributors and AI systems should refresh generated metadata.
4
+
5
+ ## Why this workflow matters
6
+
7
+ In Cabloy, some framework behavior depends on generated metadata rather than only handwritten source files.
8
+
9
+ That means certain structural changes are incomplete until metadata is regenerated.
10
+
11
+ ## Common triggers
12
+
13
+ Typical triggers include:
14
+
15
+ - route changes
16
+ - page params/query structure changes
17
+ - component wrapper-related changes
18
+ - icon additions or module-level icon changes
19
+ - relation or type-surface changes that affect typed framework artifacts
20
+
21
+ ## Step 1: Recognize that the change is structural
22
+
23
+ Before editing more code, ask whether the change affects framework-generated structure rather than only business logic.
24
+
25
+ This is the key AI checkpoint.
26
+
27
+ ## Step 2: Choose the right metadata generation path
28
+
29
+ For frontend-side metadata work, the common path is the Zova tools family.
30
+
31
+ Representative command family:
32
+
33
+ ```bash
34
+ npm run zova :tools:metadata ...
35
+ ```
36
+
37
+ For icon changes or other generation-sensitive areas, the metadata refresh may be part of the same broader workflow.
38
+
39
+ ## Step 3: Detect edition before verifying downstream effects
40
+
41
+ If the generated metadata influences frontend build or runtime behavior, detect whether the active repo is Basic or Start before choosing verification examples.
42
+
43
+ ## Step 4: Re-run the dependent workflow
44
+
45
+ After metadata regeneration, re-run the relevant dependent flow, such as:
46
+
47
+ - typecheck
48
+ - page route verification
49
+ - component usage verification
50
+ - icon usage verification
51
+ - frontend build or REST generation
52
+
53
+ ## Step 5: Treat metadata generation as part of the change, not cleanup
54
+
55
+ Metadata regeneration should not be treated as an optional final polish step.
56
+
57
+ In Cabloy it is often part of the actual correctness path.
58
+
59
+ ## AI rule of thumb
60
+
61
+ If a change alters framework structure, ask immediately:
62
+
63
+ - does metadata need regeneration?
64
+ - which command family owns that regeneration?
65
+ - what downstream build or typecheck should confirm it worked?
66
+
67
+ That prevents a large class of false-positive “done” states.
@@ -0,0 +1,58 @@
1
+ # Repo Guidance for Agents
2
+
3
+ When an AI agent works in Cabloy, it should navigate the repo with deliberate layers of trust.
4
+
5
+ ## 1. Start from the root
6
+
7
+ Check the root repository signals first:
8
+
9
+ - `package.json`
10
+ - edition marker files such as `__CABLOY_BASIC__` or `__CABLOY_START__`
11
+ - `.docs-internal/README.md`
12
+ - root `.claude/` assets
13
+
14
+ These files tell the agent which repo it is in, which scripts are canonical, and where public versus internal documentation belongs.
15
+
16
+ ## 2. Prefer framework entrypoints over scattered examples
17
+
18
+ For backend workflows:
19
+
20
+ - start from `npm run vona`
21
+ - inspect Vona CLI command families
22
+
23
+ For frontend workflows:
24
+
25
+ - start from `npm run zova`
26
+ - inspect Zova CLI command families
27
+
28
+ This is more reliable than copying old file structures from examples without understanding the command surface that created them.
29
+
30
+ ## 3. Use docs and internal notes for different purposes
31
+
32
+ - use `cabloy-docs/` to explain how people and agents should work
33
+ - use `.docs-internal/` to explain why maintainers designed the repo a certain way
34
+
35
+ ## 4. Treat edition detection as mandatory for UI-sensitive work
36
+
37
+ Edition detection is especially important when the work touches:
38
+
39
+ - page creation
40
+ - component generation
41
+ - UI library usage
42
+ - frontend flavor scripts
43
+ - edition-specific modules or assets
44
+
45
+ ## 5. Use the right lookup surface before searching broadly
46
+
47
+ For backend lookup work, choose the surface before choosing the files:
48
+
49
+ - if code references `this.bean.xxx`, `ctx.bean.xxx`, or `app.bean.xxx`, start from `IBeanRecordGlobal` and module `src/.metadata/index.ts`
50
+ - if code references a full bean name, inspect `IBeanRecordGeneral`
51
+ - if the target is a runtime-anchor or selector/class-token service, inspect `src/service` and service metadata
52
+ - if the target is only a helper or superclass chain, inspect `src/lib`
53
+
54
+ This reduces wasted search and keeps bean lookup aligned with class placement.
55
+
56
+ ## 6. Verify before claiming success
57
+
58
+ Whenever a workflow recommendation is made, verify it against current scripts or command definitions before presenting it as guidance.
@@ -0,0 +1,29 @@
1
+ # Rules and Config
2
+
3
+ Cabloy’s AI behavior should be organized into a few clear layers instead of one oversized instruction file.
4
+
5
+ ## Root `CLAUDE.md`
6
+
7
+ Use the root `CLAUDE.md` for concise, durable operational guidance such as:
8
+
9
+ - how the monorepo is organized
10
+ - where public docs live
11
+ - where internal docs live
12
+ - which command entrypoints are preferred
13
+ - why edition detection is mandatory before UI-sensitive guidance
14
+
15
+ ## `.claude/commands/`
16
+
17
+ Use commands for reusable operator workflows that are naturally invoked as a named action, such as release or future docs migration helpers.
18
+
19
+ ## `.claude/skills/`
20
+
21
+ Use skills for workflows that need more procedural context, bundled references, or iterative selection logic.
22
+
23
+ ## `settings.json` and `settings.local.json`
24
+
25
+ Use Claude settings for permissions and execution environment, not as the primary place to explain framework concepts.
26
+
27
+ ## Documentation boundary
28
+
29
+ If a rule is important for people and agents to understand, it probably belongs in public docs too. If it explains internal rationale rather than user-facing workflow, it belongs in `.docs-internal/`.