@nextsparkjs/ai-workflow 0.1.0-beta.100

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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +115 -0
  3. package/claude/_docs/workflows-optimizations.md +359 -0
  4. package/claude/agents/api-tester.md +634 -0
  5. package/claude/agents/architecture-supervisor.md +1351 -0
  6. package/claude/agents/backend-developer.md +997 -0
  7. package/claude/agents/backend-validator.md +417 -0
  8. package/claude/agents/bdd-docs-writer.md +737 -0
  9. package/claude/agents/block-developer.md +677 -0
  10. package/claude/agents/code-reviewer.md +1432 -0
  11. package/claude/agents/db-developer.md +721 -0
  12. package/claude/agents/db-validator.md +407 -0
  13. package/claude/agents/demo-video-generator.md +493 -0
  14. package/claude/agents/documentation-writer.md +1268 -0
  15. package/claude/agents/frontend-developer.md +1234 -0
  16. package/claude/agents/frontend-validator.md +777 -0
  17. package/claude/agents/functional-validator.md +630 -0
  18. package/claude/agents/mock-analyst.md +387 -0
  19. package/claude/agents/product-manager.md +963 -0
  20. package/claude/agents/qa-automation.md +1762 -0
  21. package/claude/agents/release-manager.md +634 -0
  22. package/claude/agents/selectors-translator.md +262 -0
  23. package/claude/agents/unit-test-writer.md +785 -0
  24. package/claude/agents/visual-comparator.md +329 -0
  25. package/claude/agents/workflow-maintainer.md +352 -0
  26. package/claude/commands/do/README.md +88 -0
  27. package/claude/commands/do/create-api.md +64 -0
  28. package/claude/commands/do/create-entity.md +66 -0
  29. package/claude/commands/do/create-migration.md +64 -0
  30. package/claude/commands/do/create-plugin.md +56 -0
  31. package/claude/commands/do/create-theme.md +70 -0
  32. package/claude/commands/do/mock-data.md +67 -0
  33. package/claude/commands/do/reset-db.md +71 -0
  34. package/claude/commands/do/setup-scheduled-action.md +75 -0
  35. package/claude/commands/do/sync-code-review.md +117 -0
  36. package/claude/commands/do/update-selectors.md +112 -0
  37. package/claude/commands/do/use-skills.md +90 -0
  38. package/claude/commands/do/validate-blocks.md +69 -0
  39. package/claude/commands/how-to/README.md +261 -0
  40. package/claude/commands/how-to/add-metadata.md +692 -0
  41. package/claude/commands/how-to/add-taxonomies.md +806 -0
  42. package/claude/commands/how-to/add-translations.md +571 -0
  43. package/claude/commands/how-to/create-api.md +577 -0
  44. package/claude/commands/how-to/create-block.md +575 -0
  45. package/claude/commands/how-to/create-child-entities.md +771 -0
  46. package/claude/commands/how-to/create-entity.md +597 -0
  47. package/claude/commands/how-to/create-migrations.md +605 -0
  48. package/claude/commands/how-to/create-plugin.md +654 -0
  49. package/claude/commands/how-to/customize-app.md +481 -0
  50. package/claude/commands/how-to/customize-dashboard.md +553 -0
  51. package/claude/commands/how-to/customize-theme.md +438 -0
  52. package/claude/commands/how-to/define-features-flows.md +632 -0
  53. package/claude/commands/how-to/deploy.md +507 -0
  54. package/claude/commands/how-to/handle-file-uploads.md +746 -0
  55. package/claude/commands/how-to/implement-search.md +1001 -0
  56. package/claude/commands/how-to/install-plugins.md +352 -0
  57. package/claude/commands/how-to/manage-test-coverage.md +984 -0
  58. package/claude/commands/how-to/run-tests.md +400 -0
  59. package/claude/commands/how-to/set-app-languages.md +601 -0
  60. package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
  61. package/claude/commands/how-to/set-scheduled-actions.md +527 -0
  62. package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
  63. package/claude/commands/how-to/setup-authentication.md +388 -0
  64. package/claude/commands/how-to/setup-claude-code.md +440 -0
  65. package/claude/commands/how-to/setup-database.md +274 -0
  66. package/claude/commands/how-to/setup-email-providers.md +598 -0
  67. package/claude/commands/how-to/setup-mobile-dev.md +627 -0
  68. package/claude/commands/how-to/start.md +500 -0
  69. package/claude/commands/how-to/use-devtools.md +639 -0
  70. package/claude/commands/how-to/use-superadmin.md +622 -0
  71. package/claude/commands/session/README.md +193 -0
  72. package/claude/commands/session/block-create.md +190 -0
  73. package/claude/commands/session/block-list.md +203 -0
  74. package/claude/commands/session/block-update.md +192 -0
  75. package/claude/commands/session/block-validate.md +218 -0
  76. package/claude/commands/session/changelog.md +115 -0
  77. package/claude/commands/session/close.md +225 -0
  78. package/claude/commands/session/commit.md +174 -0
  79. package/claude/commands/session/db-entity.md +206 -0
  80. package/claude/commands/session/db-fix.md +212 -0
  81. package/claude/commands/session/db-sample.md +206 -0
  82. package/claude/commands/session/demo.md +178 -0
  83. package/claude/commands/session/doc-bdd.md +207 -0
  84. package/claude/commands/session/doc-feature.md +218 -0
  85. package/claude/commands/session/doc-read.md +225 -0
  86. package/claude/commands/session/execute.md +204 -0
  87. package/claude/commands/session/explain.md +202 -0
  88. package/claude/commands/session/fix-bug.md +210 -0
  89. package/claude/commands/session/fix-build.md +182 -0
  90. package/claude/commands/session/fix-test.md +189 -0
  91. package/claude/commands/session/pending.md +232 -0
  92. package/claude/commands/session/refine.md +188 -0
  93. package/claude/commands/session/resume.md +192 -0
  94. package/claude/commands/session/review.md +192 -0
  95. package/claude/commands/session/scope-change.md +181 -0
  96. package/claude/commands/session/start-blocks.md +347 -0
  97. package/claude/commands/session/start.md +604 -0
  98. package/claude/commands/session/status.md +169 -0
  99. package/claude/commands/session/test-fix.md +221 -0
  100. package/claude/commands/session/test-run.md +203 -0
  101. package/claude/commands/session/test-write.md +242 -0
  102. package/claude/commands/session/validate.md +162 -0
  103. package/claude/config/context.json +40 -0
  104. package/claude/config/github.json +69 -0
  105. package/claude/config/github.schema.json +106 -0
  106. package/claude/config/team.json +46 -0
  107. package/claude/config/team.schema.json +106 -0
  108. package/claude/config/workspace.json +43 -0
  109. package/claude/config/workspace.schema.json +75 -0
  110. package/claude/skills/README.md +228 -0
  111. package/claude/skills/accessibility/SKILL.md +573 -0
  112. package/claude/skills/api-bypass-layers/SKILL.md +550 -0
  113. package/claude/skills/asana-integration/SKILL.md +499 -0
  114. package/claude/skills/better-auth/SKILL.md +666 -0
  115. package/claude/skills/billing-subscriptions/SKILL.md +660 -0
  116. package/claude/skills/block-decision-matrix/SKILL.md +359 -0
  117. package/claude/skills/clickup-integration/SKILL.md +434 -0
  118. package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
  119. package/claude/skills/create-plugin/SKILL.md +425 -0
  120. package/claude/skills/create-theme/SKILL.md +331 -0
  121. package/claude/skills/cypress-api/SKILL.md +511 -0
  122. package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
  123. package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
  124. package/claude/skills/cypress-e2e/SKILL.md +526 -0
  125. package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
  126. package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
  127. package/claude/skills/cypress-selectors/SKILL.md +309 -0
  128. package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
  129. package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
  130. package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
  131. package/claude/skills/database-migrations/SKILL.md +335 -0
  132. package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
  133. package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
  134. package/claude/skills/design-system/SKILL.md +682 -0
  135. package/claude/skills/documentation/SKILL.md +540 -0
  136. package/claude/skills/entity-api/SKILL.md +482 -0
  137. package/claude/skills/entity-system/SKILL.md +635 -0
  138. package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
  139. package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
  140. package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
  141. package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
  142. package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
  143. package/claude/skills/github/SKILL.md +467 -0
  144. package/claude/skills/i18n-nextintl/SKILL.md +302 -0
  145. package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
  146. package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
  147. package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
  148. package/claude/skills/impact-analysis/SKILL.md +203 -0
  149. package/claude/skills/jest-unit/SKILL.md +306 -0
  150. package/claude/skills/jest-unit/references/component-testing.md +371 -0
  151. package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
  152. package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
  153. package/claude/skills/jira-integration/SKILL.md +539 -0
  154. package/claude/skills/media-library/SKILL.md +743 -0
  155. package/claude/skills/mock-analysis/SKILL.md +276 -0
  156. package/claude/skills/monorepo-architecture/SKILL.md +162 -0
  157. package/claude/skills/nextjs-api-development/SKILL.md +364 -0
  158. package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
  159. package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
  160. package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
  161. package/claude/skills/notion-integration/SKILL.md +641 -0
  162. package/claude/skills/npm-development-workflow/SKILL.md +480 -0
  163. package/claude/skills/page-builder-blocks/SKILL.md +530 -0
  164. package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
  165. package/claude/skills/permissions-system/SKILL.md +619 -0
  166. package/claude/skills/plugins/SKILL.md +340 -0
  167. package/claude/skills/plugins/references/plugin-templates.md +414 -0
  168. package/claude/skills/plugins/references/plugin-testing.md +353 -0
  169. package/claude/skills/plugins/references/plugin-types.md +198 -0
  170. package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
  171. package/claude/skills/pom-patterns/SKILL.md +452 -0
  172. package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
  173. package/claude/skills/rate-limiting/SKILL.md +342 -0
  174. package/claude/skills/react-best-practices/AGENTS.md +2410 -0
  175. package/claude/skills/react-best-practices/README.md +123 -0
  176. package/claude/skills/react-best-practices/SKILL.md +125 -0
  177. package/claude/skills/react-best-practices/metadata.json +15 -0
  178. package/claude/skills/react-best-practices/rules/_sections.md +46 -0
  179. package/claude/skills/react-best-practices/rules/_template.md +28 -0
  180. package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  181. package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  182. package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
  183. package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
  184. package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
  185. package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
  186. package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  187. package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  188. package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  189. package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  190. package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  191. package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
  192. package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  193. package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  194. package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  195. package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  196. package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  197. package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  198. package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  199. package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  200. package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  201. package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
  202. package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  203. package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
  204. package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  205. package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  206. package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  207. package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  208. package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
  209. package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  210. package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  211. package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  212. package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  213. package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  214. package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  215. package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  216. package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  217. package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  218. package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  219. package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  220. package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
  221. package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  222. package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  223. package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  224. package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
  225. package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  226. package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
  227. package/claude/skills/react-patterns/SKILL.md +688 -0
  228. package/claude/skills/registry-system/SKILL.md +331 -0
  229. package/claude/skills/scheduled-actions/SKILL.md +671 -0
  230. package/claude/skills/scope-enforcement/SKILL.md +542 -0
  231. package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
  232. package/claude/skills/server-actions/SKILL.md +493 -0
  233. package/claude/skills/service-layer/SKILL.md +587 -0
  234. package/claude/skills/session-management/SKILL.md +266 -0
  235. package/claude/skills/session-management/scripts/create-session.py +166 -0
  236. package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
  237. package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
  238. package/claude/skills/session-management/scripts/session-archive.sh +87 -0
  239. package/claude/skills/session-management/scripts/session-close.sh +133 -0
  240. package/claude/skills/session-management/scripts/session-init.sh +225 -0
  241. package/claude/skills/session-management/scripts/session-list.sh +163 -0
  242. package/claude/skills/session-management/scripts/split-plan.sh +116 -0
  243. package/claude/skills/shadcn-components/SKILL.md +586 -0
  244. package/claude/skills/shadcn-theming/SKILL.md +446 -0
  245. package/claude/skills/suspense-loading/SKILL.md +280 -0
  246. package/claude/skills/tailwind-theming/SKILL.md +507 -0
  247. package/claude/skills/tanstack-query/SKILL.md +608 -0
  248. package/claude/skills/test-coverage/SKILL.md +239 -0
  249. package/claude/skills/web-design-guidelines/SKILL.md +39 -0
  250. package/claude/skills/zod-validation/SKILL.md +537 -0
  251. package/claude/templates/blocks/progress.md +86 -0
  252. package/claude/templates/iteration/changes.md +61 -0
  253. package/claude/templates/iteration/progress.md +55 -0
  254. package/claude/templates/log.md +31 -0
  255. package/claude/templates/story/context.md +77 -0
  256. package/claude/templates/story/pendings.md +37 -0
  257. package/claude/templates/story/plan.md +299 -0
  258. package/claude/templates/story/requirements.md +109 -0
  259. package/claude/templates/story/scope.json +10 -0
  260. package/claude/templates/story/tests.md +91 -0
  261. package/claude/templates/task/progress.md +58 -0
  262. package/claude/templates/task/requirements.md +54 -0
  263. package/claude/workflows/README.md +154 -0
  264. package/claude/workflows/blocks.md +614 -0
  265. package/claude/workflows/story.md +1207 -0
  266. package/claude/workflows/task.md +927 -0
  267. package/claude/workflows/tweak.md +527 -0
  268. package/cursor/.gitkeep +0 -0
  269. package/package.json +35 -0
  270. package/scripts/postinstall.mjs +198 -0
  271. package/scripts/setup.mjs +282 -0
  272. package/scripts/sync.mjs +209 -0
@@ -0,0 +1,331 @@
1
+ ---
2
+ name: registry-system
3
+ description: |
4
+ Auto-generated registry system for this Next.js application.
5
+ Covers Data-Only pattern, zero dynamic imports policy, registry structure, and rebuild process.
6
+ Use this skill when working with registries or understanding import patterns.
7
+ allowed-tools: Read, Glob, Grep
8
+ version: 1.0.0
9
+ ---
10
+
11
+ # Registry System Skill
12
+
13
+ Patterns for working with the auto-generated registry system that provides O(1) lookups for blocks, entities, themes, and more.
14
+
15
+ ## Architecture Overview
16
+
17
+ ```
18
+ REGISTRY SYSTEM (Pre-built at build time):
19
+
20
+ core/lib/registries/
21
+ ├── block-registry.ts # BLOCK_REGISTRY - Page builder blocks
22
+ ├── entity-registry.ts # ENTITY_REGISTRY - Entity configurations
23
+ ├── entity-registry.client.ts # Client-safe entity registry
24
+ ├── theme-registry.ts # THEME_REGISTRY - Theme configurations
25
+ ├── plugin-registry.ts # PLUGIN_REGISTRY - Plugin configurations
26
+ ├── namespace-registry.ts # NAMESPACE_REGISTRY - Route namespaces
27
+ ├── scope-registry.ts # SCOPE_REGISTRY - API scopes
28
+ ├── route-handlers.ts # ROUTE_HANDLERS - API route handlers
29
+ ├── middleware-registry.ts # MIDDLEWARE_REGISTRY - Middleware configs
30
+ ├── permissions-registry.ts # PERMISSIONS_REGISTRY - Permission matrix
31
+ ├── billing-registry.ts # BILLING_REGISTRY - Plans and billing
32
+ ├── translation-registry.ts # TRANSLATION_REGISTRY - i18n configs
33
+ ├── testing-registry.ts # TESTING_REGISTRY - Test fixtures
34
+ ├── docs-registry.ts # DOCS_REGISTRY - Documentation index
35
+ └── index.ts # Unified exports
36
+
37
+ Build script: node core/scripts/build/registry.mjs
38
+ ```
39
+
40
+ > **📍 Context-Aware Paths:** Registries are auto-generated from core + theme. In consumer projects,
41
+ > theme configs go in `contents/themes/{theme}/config/`. Core registries are read-only.
42
+ > See `core-theme-responsibilities` skill for complete rules.
43
+
44
+ ## When to Use This Skill
45
+
46
+ - Understanding registry patterns
47
+ - Importing from registries correctly
48
+ - Debugging registry generation issues
49
+ - Working with entity, block, or theme configurations
50
+ - Avoiding dynamic import violations
51
+
52
+ ## Key Concepts
53
+
54
+ ### Data-Only Pattern
55
+
56
+ ```
57
+ Registries = Data (pre-computed, static)
58
+ Services = Logic (methods that use registries)
59
+ ```
60
+
61
+ **Registries provide:**
62
+ - O(1) lookups by key
63
+ - Type-safe TypeScript interfaces
64
+ - Pre-computed at build time
65
+ - Zero runtime I/O
66
+
67
+ **Services provide:**
68
+ - Business logic methods
69
+ - Filtering and querying
70
+ - Validation and transformation
71
+
72
+ ### Performance Impact
73
+
74
+ | Approach | Time | Notes |
75
+ |----------|------|-------|
76
+ | Dynamic Import | ~140ms | Per operation, I/O bound |
77
+ | Static Registry | ~6ms | O(1) lookup |
78
+ | **Improvement** | **~17,255x** | Build-time vs runtime |
79
+
80
+ ## Import Patterns
81
+
82
+ ### Correct Usage
83
+
84
+ ```typescript
85
+ // ✅ CORRECT - Import from registries
86
+ import { BLOCK_REGISTRY } from '@/core/lib/registries/block-registry'
87
+ import { ENTITY_REGISTRY } from '@/core/lib/registries/entity-registry'
88
+ import { THEME_REGISTRY } from '@/core/lib/registries/theme-registry'
89
+
90
+ // Access by key
91
+ const heroBlock = BLOCK_REGISTRY['hero']
92
+ const customerEntity = ENTITY_REGISTRY['customers']
93
+
94
+ // ✅ CORRECT - Use services for logic
95
+ import { BlockService } from '@/core/lib/services/block.service'
96
+ import { EntityTypeService } from '@/core/lib/services/entity-type.service'
97
+
98
+ const heroConfig = BlockService.getBySlug('hero')
99
+ const allEntities = EntityTypeService.getAll()
100
+ ```
101
+
102
+ ### Forbidden Patterns
103
+
104
+ ```typescript
105
+ // ❌ FORBIDDEN - Direct imports from @/contents
106
+ import { hero } from '@/contents/themes/default/blocks/hero'
107
+ import { customerEntityConfig } from '@/contents/themes/default/entities/customers'
108
+ import * as theme from '@/contents/themes/default'
109
+
110
+ // ❌ FORBIDDEN - Dynamic imports from @/contents
111
+ const module = await import('@/contents/themes/default/blocks/hero')
112
+ const config = await import(`@/contents/themes/${themeName}/config`)
113
+
114
+ // ❌ FORBIDDEN - Dynamic registry imports
115
+ const { ENTITY_REGISTRY } = await import('@/core/lib/registries/entity-registry')
116
+ ```
117
+
118
+ ## Available Registries
119
+
120
+ | Registry | Key Type | Value Type | Purpose |
121
+ |----------|----------|------------|---------|
122
+ | `BLOCK_REGISTRY` | slug | `BlockConfig` | Page builder blocks |
123
+ | `ENTITY_REGISTRY` | slug | `EntityRegistryEntry` | Entity configurations |
124
+ | `THEME_REGISTRY` | name | `ThemeConfig` | Theme settings |
125
+ | `PLUGIN_REGISTRY` | name | `PluginConfig` | Plugin configurations |
126
+ | `NAMESPACE_REGISTRY` | namespace | `NamespaceConfig` | Route namespaces |
127
+ | `SCOPE_REGISTRY` | scope | `ScopeConfig` | API permission scopes |
128
+ | `PERMISSIONS_REGISTRY` | permission | `PermissionConfig` | Permission definitions |
129
+ | `BILLING_REGISTRY` | planSlug | `PlanConfig` | Billing plans |
130
+ | `MIDDLEWARE_REGISTRY` | name | `MiddlewareConfig` | Route middlewares |
131
+ | `ROUTE_HANDLERS` | path | `RouteHandler` | API route handlers |
132
+
133
+ ## Registry Structure
134
+
135
+ ### Typical Registry File
136
+
137
+ ```typescript
138
+ /**
139
+ * Auto-generated Entity Registry
140
+ * Generated at: 2025-12-30T21:56:23.717Z
141
+ * Entities discovered: 4
142
+ * DO NOT EDIT - This file is auto-generated by scripts/build-registry.mjs
143
+ */
144
+
145
+ // 1. Static imports (generated)
146
+ import { customerEntityConfig } from '@/contents/themes/default/entities/customers/customers.config'
147
+ import { taskEntityConfig } from '@/contents/themes/default/entities/tasks/tasks.config'
148
+
149
+ // 2. TypeScript interface
150
+ export interface EntityRegistryEntry {
151
+ name: string
152
+ config: EntityConfig
153
+ tableName?: string
154
+ relativePath: string
155
+ depth: number
156
+ parent: string | null
157
+ children: string[]
158
+ source: 'core' | 'theme' | 'plugin'
159
+ }
160
+
161
+ // 3. Main registry object
162
+ export const ENTITY_REGISTRY: Record<string, EntityRegistryEntry> = {
163
+ 'customers': {
164
+ name: 'customers',
165
+ config: customerEntityConfig,
166
+ tableName: 'customers',
167
+ relativePath: 'customers',
168
+ depth: 0,
169
+ parent: null,
170
+ children: [],
171
+ source: 'theme'
172
+ },
173
+ // ... more entries
174
+ }
175
+
176
+ // 4. Type export
177
+ export type EntityName = keyof typeof ENTITY_REGISTRY
178
+
179
+ // 5. Metadata
180
+ export const ENTITY_METADATA = {
181
+ totalEntities: 4,
182
+ generatedAt: '2025-12-30T21:56:23.717Z',
183
+ entities: ['customers', 'pages', 'posts', 'tasks']
184
+ }
185
+ ```
186
+
187
+ ## Rebuild Command
188
+
189
+ ```bash
190
+ # One-time build (default)
191
+ node core/scripts/build/registry.mjs
192
+
193
+ # Watch mode (auto-rebuild on changes)
194
+ node core/scripts/build/registry.mjs --watch
195
+
196
+ # Build with verbose output
197
+ node core/scripts/build/registry.mjs --verbose
198
+ ```
199
+
200
+ **When to rebuild:**
201
+ - After adding/removing entities
202
+ - After adding/removing blocks
203
+ - After modifying entity configs
204
+ - After changing theme configurations
205
+ - After adding/removing plugins
206
+
207
+ ## Allowed Exceptions
208
+
209
+ ### 1. i18n/Translations (Lazy-load per locale)
210
+ ```typescript
211
+ const messages = await import(`@/core/messages/${locale}/${namespace}.json`)
212
+ ```
213
+
214
+ ### 2. React Code-Splitting (>100KB components)
215
+ ```typescript
216
+ const HeavyChart = lazy(() => import('./HeavyChart'))
217
+ ```
218
+
219
+ ### 3. Type-Only Imports (Eliminated at compile)
220
+ ```typescript
221
+ export type Messages = typeof import('./es/index.ts').default
222
+ ```
223
+
224
+ ### 4. Build Scripts Only (Development)
225
+ ```typescript
226
+ // core/scripts/build-theme.ts
227
+ const config = await import(`./${themeName}/theme.config`)
228
+ ```
229
+
230
+ ### 5. Development Tools (NODE_ENV gated)
231
+ ```typescript
232
+ if (process.env.NODE_ENV === 'development') {
233
+ const benchmark = await import('./dev-tools/benchmark')
234
+ }
235
+ ```
236
+
237
+ ### 6. Heavy User-Triggered Libraries (>500KB)
238
+ ```typescript
239
+ export async function extractTextFromPDF(file: File) {
240
+ const pdfjsLib = await import('pdfjs-dist') // ~2MB, only when needed
241
+ }
242
+ ```
243
+
244
+ ## Using Services with Registries
245
+
246
+ ### BlockService
247
+
248
+ ```typescript
249
+ import { BlockService } from '@/core/lib/services/block.service'
250
+
251
+ // Get block by slug
252
+ const hero = BlockService.getBySlug('hero')
253
+
254
+ // Get all blocks
255
+ const blocks = BlockService.getAll()
256
+
257
+ // Get blocks by category
258
+ const heroBlocks = BlockService.getByCategory('hero')
259
+
260
+ // Get blocks by scope
261
+ const pageBlocks = BlockService.getByScope('pages')
262
+ ```
263
+
264
+ ### EntityTypeService
265
+
266
+ ```typescript
267
+ import { EntityTypeService } from '@/core/lib/services/entity-type.service'
268
+
269
+ // Get entity config
270
+ const customerConfig = EntityTypeService.getBySlug('customers')
271
+
272
+ // Get all entities
273
+ const entities = EntityTypeService.getAll()
274
+
275
+ // Check if entity exists
276
+ const exists = EntityTypeService.exists('customers')
277
+ ```
278
+
279
+ ## Anti-Patterns
280
+
281
+ ```typescript
282
+ // NEVER: Import directly from contents
283
+ import { hero } from '@/contents/themes/default/blocks/hero'
284
+
285
+ // CORRECT: Use registry
286
+ import { BLOCK_REGISTRY } from '@/core/lib/registries/block-registry'
287
+ const hero = BLOCK_REGISTRY['hero']
288
+
289
+ // NEVER: Dynamic import from contents
290
+ const block = await import(`@/contents/themes/${theme}/blocks/${slug}`)
291
+
292
+ // CORRECT: Use service
293
+ import { BlockService } from '@/core/lib/services/block.service'
294
+ const block = BlockService.getBySlug(slug)
295
+
296
+ // NEVER: Modify registry files manually
297
+ // Registry files have "DO NOT EDIT" header
298
+
299
+ // CORRECT: Modify source files and rebuild
300
+ // node core/scripts/build/registry.mjs
301
+
302
+ // NEVER: Store logic in registries
303
+ export const ENTITY_REGISTRY = {
304
+ customers: {
305
+ validate: (data) => { ... } // Logic doesn't belong here!
306
+ }
307
+ }
308
+
309
+ // CORRECT: Logic goes in services
310
+ export class CustomerService {
311
+ static validate(data: CreateCustomer) { ... }
312
+ }
313
+ ```
314
+
315
+ ## Checklist
316
+
317
+ Before working with registries:
318
+
319
+ - [ ] Importing from `@/core/lib/registries/` not `@/contents/`
320
+ - [ ] Using services for logic, registries for data
321
+ - [ ] Rebuilding after config changes (`node core/scripts/build/registry.mjs`)
322
+ - [ ] Not modifying auto-generated registry files
323
+ - [ ] Using typed registry keys (e.g., `ENTITY_REGISTRY['customers']`)
324
+ - [ ] Checking registry exists before accessing (or using services)
325
+
326
+ ## Related Skills
327
+
328
+ - **`monorepo-architecture`** - Package hierarchy, dependency rules, Model B distribution
329
+ - `entity-system` - Entity configuration patterns
330
+ - `page-builder-blocks` - Block configuration patterns
331
+ - `service-layer` - Service patterns with registries