@ngockhoale/ukit 1.1.6

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 (344) hide show
  1. package/CHANGELOG.md +179 -0
  2. package/LICENSE +21 -0
  3. package/README.md +189 -0
  4. package/bin/ukit +30 -0
  5. package/manifests/platform.full.yaml +1194 -0
  6. package/package.json +71 -0
  7. package/scripts/bug/triage.mjs +37 -0
  8. package/scripts/index/build-index.mjs +35 -0
  9. package/scripts/index/query-index.mjs +92 -0
  10. package/scripts/index/refresh-index.mjs +85 -0
  11. package/scripts/release/verify-release.mjs +56 -0
  12. package/src/bug/triageBug.js +123 -0
  13. package/src/cli/adapters.js +148 -0
  14. package/src/cli/commands/diff.js +51 -0
  15. package/src/cli/commands/doctor.js +125 -0
  16. package/src/cli/commands/indexArgs.js +73 -0
  17. package/src/cli/commands/indexTools.js +509 -0
  18. package/src/cli/commands/install.js +293 -0
  19. package/src/cli/commands/memory.js +126 -0
  20. package/src/cli/commands/status.js +8 -0
  21. package/src/cli/commands/uninstall.js +51 -0
  22. package/src/cli/index.js +109 -0
  23. package/src/context/detectProjectContext.js +49 -0
  24. package/src/context/detectProviders.js +12 -0
  25. package/src/core/applyPlan.js +89 -0
  26. package/src/core/buildPlan.js +228 -0
  27. package/src/core/compact/index.js +294 -0
  28. package/src/core/compact/threshold.js +936 -0
  29. package/src/core/diffPlan.js +73 -0
  30. package/src/core/ensureGitignore.js +117 -0
  31. package/src/core/fileOps.js +188 -0
  32. package/src/core/memory/hygiene.js +160 -0
  33. package/src/core/memory/index.js +2 -0
  34. package/src/core/memory/retrieval.js +476 -0
  35. package/src/core/memory/store.js +202 -0
  36. package/src/core/metadata.js +132 -0
  37. package/src/core/migrateLegacy.js +139 -0
  38. package/src/core/output/index.js +1309 -0
  39. package/src/core/paths.js +13 -0
  40. package/src/core/report.js +17 -0
  41. package/src/core/router/advisor.js +42 -0
  42. package/src/core/router/index.js +2 -0
  43. package/src/core/router/router.js +164 -0
  44. package/src/core/runInstallPipeline.js +365 -0
  45. package/src/core/runtimeConfig.js +190 -0
  46. package/src/core/runtimePaths.js +24 -0
  47. package/src/core/status.js +186 -0
  48. package/src/core/token/index.js +328 -0
  49. package/src/core/uninstall.js +246 -0
  50. package/src/core/validation/confidence.js +89 -0
  51. package/src/core/validation/index.js +2 -0
  52. package/src/core/validation/validator.js +165 -0
  53. package/src/index/buildIndex.js +1392 -0
  54. package/src/index/gitHooks.js +109 -0
  55. package/src/index/importResolution.js +377 -0
  56. package/src/index/languageTools.js +127 -0
  57. package/src/index/paths.js +27 -0
  58. package/src/index/queryIndex.js +637 -0
  59. package/src/index/relatedTests.js +237 -0
  60. package/src/index/resolveContext.js +345 -0
  61. package/src/index/routeCatalog.js +258 -0
  62. package/src/index/taskRouting.js +677 -0
  63. package/src/index/verificationPlan.js +437 -0
  64. package/src/manifest/loadManifest.js +22 -0
  65. package/src/manifest/selectItems.js +78 -0
  66. package/src/manifest/validateManifest.js +115 -0
  67. package/src/render/buildVariables.js +39 -0
  68. package/src/render/renderTemplate.js +44 -0
  69. package/src/stack/detectStack.js +213 -0
  70. package/templates/.claude/agents/bug-debugger.md +57 -0
  71. package/templates/.claude/agents/feature-implementer.md +55 -0
  72. package/templates/.claude/config/providers.md +25 -0
  73. package/templates/.claude/hooks/auto-allow-bash.sh +155 -0
  74. package/templates/.claude/hooks/auto-prune-bash.sh +75 -0
  75. package/templates/.claude/hooks/block-dangerous.sh +54 -0
  76. package/templates/.claude/hooks/compress-output.sh +17 -0
  77. package/templates/.claude/hooks/protect-files.sh +37 -0
  78. package/templates/.claude/hooks/reinject-context.sh +28 -0
  79. package/templates/.claude/hooks/session-start.md +13 -0
  80. package/templates/.claude/hooks/skill-router.sh +1681 -0
  81. package/templates/.claude/hooks/verification-guard.sh +271 -0
  82. package/templates/.claude/settings.json +144 -0
  83. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  84. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  85. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  86. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  87. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  88. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  89. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  90. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  91. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  92. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  93. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  94. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  95. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  96. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  97. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  98. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  99. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  100. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  101. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  102. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  103. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  104. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  105. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  106. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  107. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  108. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  109. package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  110. package/templates/.claude/skills/_shared/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  111. package/templates/.claude/skills/_shared/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  112. package/templates/.claude/skills/_shared/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  113. package/templates/.claude/skills/_shared/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  114. package/templates/.claude/skills/_shared/ooxml/schemas/mce/mc.xsd +75 -0
  115. package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  116. package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  117. package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  118. package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  119. package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  120. package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  121. package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  122. package/templates/.claude/skills/_shared/ooxml/scripts/pack.py +159 -0
  123. package/templates/.claude/skills/_shared/ooxml/scripts/unpack.py +29 -0
  124. package/templates/.claude/skills/_shared/ooxml/scripts/validate.py +69 -0
  125. package/templates/.claude/skills/_shared/ooxml/scripts/validation/__init__.py +15 -0
  126. package/templates/.claude/skills/_shared/ooxml/scripts/validation/base.py +951 -0
  127. package/templates/.claude/skills/_shared/ooxml/scripts/validation/docx.py +274 -0
  128. package/templates/.claude/skills/_shared/ooxml/scripts/validation/pptx.py +315 -0
  129. package/templates/.claude/skills/_shared/ooxml/scripts/validation/redlining.py +279 -0
  130. package/templates/.claude/skills/backend-api/SKILL.md +26 -0
  131. package/templates/.claude/skills/canvas-design/LICENSE.txt +202 -0
  132. package/templates/.claude/skills/canvas-design/SKILL.md +130 -0
  133. package/templates/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  134. package/templates/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  135. package/templates/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  136. package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  137. package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  138. package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  139. package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  140. package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  141. package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  142. package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  143. package/templates/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  144. package/templates/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  145. package/templates/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  146. package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  147. package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  148. package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  149. package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  150. package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  151. package/templates/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  152. package/templates/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  153. package/templates/.claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  154. package/templates/.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  155. package/templates/.claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  156. package/templates/.claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  157. package/templates/.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  158. package/templates/.claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  159. package/templates/.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  160. package/templates/.claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  161. package/templates/.claude/skills/code-review/SKILL.md +97 -0
  162. package/templates/.claude/skills/debugging-toolkit/SKILL.md +156 -0
  163. package/templates/.claude/skills/delivery/SKILL.md +92 -0
  164. package/templates/.claude/skills/discover-security/SKILL.md +86 -0
  165. package/templates/.claude/skills/docker-packaging/SKILL.md +60 -0
  166. package/templates/.claude/skills/docs-manager/SKILL.md +465 -0
  167. package/templates/.claude/skills/docs-manager/init-project-docs.sh +70 -0
  168. package/templates/.claude/skills/docs-manager/templates/README.md.template +50 -0
  169. package/templates/.claude/skills/docs-manager/templates/agent-roles.md.template +24 -0
  170. package/templates/.claude/skills/docs-manager/templates/coding-conventions.md.template +28 -0
  171. package/templates/.claude/skills/docs-manager/templates/memory.md.template +30 -0
  172. package/templates/.claude/skills/docs-manager/templates/onboarding.md.template +20 -0
  173. package/templates/.claude/skills/docs-manager/templates/project.md.template +26 -0
  174. package/templates/.claude/skills/docs-quality/SKILL.md +148 -0
  175. package/templates/.claude/skills/docx/LICENSE.txt +30 -0
  176. package/templates/.claude/skills/docx/SKILL.md +197 -0
  177. package/templates/.claude/skills/docx/docx-js.md +350 -0
  178. package/templates/.claude/skills/docx/ooxml.md +610 -0
  179. package/templates/.claude/skills/docx/scripts/__init__.py +1 -0
  180. package/templates/.claude/skills/docx/scripts/document.py +1276 -0
  181. package/templates/.claude/skills/docx/scripts/templates/comments.xml +3 -0
  182. package/templates/.claude/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  183. package/templates/.claude/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  184. package/templates/.claude/skills/docx/scripts/templates/commentsIds.xml +3 -0
  185. package/templates/.claude/skills/docx/scripts/templates/people.xml +3 -0
  186. package/templates/.claude/skills/docx/scripts/utilities.py +374 -0
  187. package/templates/.claude/skills/duraone/SKILL.md +204 -0
  188. package/templates/.claude/skills/duraone/references/backend.md +636 -0
  189. package/templates/.claude/skills/duraone/references/frontend.md +1506 -0
  190. package/templates/.claude/skills/duraone/references/sql.md +631 -0
  191. package/templates/.claude/skills/duraone/references/workflow.md +520 -0
  192. package/templates/.claude/skills/executing-plans/SKILL.md +76 -0
  193. package/templates/.claude/skills/file-organizer/SKILL.md +433 -0
  194. package/templates/.claude/skills/frontend/SKILL.md +26 -0
  195. package/templates/.claude/skills/frontend-design/LICENSE.txt +177 -0
  196. package/templates/.claude/skills/frontend-design/SKILL.md +42 -0
  197. package/templates/.claude/skills/frontend-vue/SKILL.md +127 -0
  198. package/templates/.claude/skills/frontend-vue/components/Control/Box.vue +137 -0
  199. package/templates/.claude/skills/frontend-vue/components/Control/Button.vue +93 -0
  200. package/templates/.claude/skills/frontend-vue/components/Control/ButtonBar.vue +29 -0
  201. package/templates/.claude/skills/frontend-vue/components/Control/ButtonFloat.vue +62 -0
  202. package/templates/.claude/skills/frontend-vue/components/Control/CheckButton.vue +75 -0
  203. package/templates/.claude/skills/frontend-vue/components/Control/Checkbox.vue +58 -0
  204. package/templates/.claude/skills/frontend-vue/components/Control/Datetime.vue +148 -0
  205. package/templates/.claude/skills/frontend-vue/components/Control/Dropdownlist.vue +156 -0
  206. package/templates/.claude/skills/frontend-vue/components/Control/Input.vue +106 -0
  207. package/templates/.claude/skills/frontend-vue/components/Control/Label.vue +38 -0
  208. package/templates/.claude/skills/frontend-vue/components/Control/Master/BoxColumn.vue +24 -0
  209. package/templates/.claude/skills/frontend-vue/components/Control/Popup/Confirm.vue +33 -0
  210. package/templates/.claude/skills/frontend-vue/components/Control/Popup/Info.vue +32 -0
  211. package/templates/.claude/skills/frontend-vue/components/Control/Popup/ModalInfo.vue +39 -0
  212. package/templates/.claude/skills/frontend-vue/components/Control/Popup/Reject.vue +64 -0
  213. package/templates/.claude/skills/frontend-vue/components/Control/Tag.vue +82 -0
  214. package/templates/.claude/skills/frontend-vue/components/Control/Upload.vue +61 -0
  215. package/templates/.claude/skills/frontend-vue/components/ControlMobile/Dropdownlist.vue +103 -0
  216. package/templates/.claude/skills/frontend-vue/components/ControlMobile/PagingBar.vue +108 -0
  217. package/templates/.claude/skills/frontend-vue/components/ControlMobile/UploadImage.vue +137 -0
  218. package/templates/.claude/skills/frontend-vue/components/Grid/AG.vue +806 -0
  219. package/templates/.claude/skills/frontend-vue/components/Grid/AntTable.vue +253 -0
  220. package/templates/.claude/skills/frontend-vue/components/Grid/CustomDropdownEditor.vue +43 -0
  221. package/templates/.claude/skills/frontend-vue/components/Grid/CustomDropdownEditorEnable.vue +55 -0
  222. package/templates/.claude/skills/frontend-vue/components/Grid/HtmlTable.vue +40 -0
  223. package/templates/.claude/skills/frontend-vue/components/PDFViewer.vue +25 -0
  224. package/templates/.claude/skills/frontend-vue/components/Panel/FormView.vue +309 -0
  225. package/templates/.claude/skills/frontend-vue/components/Partial/Footer.vue +23 -0
  226. package/templates/.claude/skills/frontend-vue/components/Partial/Header.vue +265 -0
  227. package/templates/.claude/skills/frontend-vue/components/Partial/Sidebar.vue +122 -0
  228. package/templates/.claude/skills/frontend-vue/components/Template.vue +16 -0
  229. package/templates/.claude/skills/frontend-vue/components/View/Form.vue +89 -0
  230. package/templates/.claude/skills/frontend-vue/composables/indexDBStore.js +140 -0
  231. package/templates/.claude/skills/frontend-vue/composables/masterApi.js +362 -0
  232. package/templates/.claude/skills/frontend-vue/composables/state.js +578 -0
  233. package/templates/.claude/skills/frontend-vue/composables/useRequest.js +221 -0
  234. package/templates/.claude/skills/frontend-vue/composables/useSession.js +179 -0
  235. package/templates/.claude/skills/frontend-vue/composables/useTranslation.js +54 -0
  236. package/templates/.claude/skills/frontend-vue/composables/useWebSocket.js +257 -0
  237. package/templates/.claude/skills/frontend-vue/composables/userObj.js +111 -0
  238. package/templates/.claude/skills/frontend-vue/composables/utils.js +322 -0
  239. package/templates/.claude/skills/frontend-vue/reference/composables-example.vue +320 -0
  240. package/templates/.claude/skills/frontend-vue/reference/form-example.vue +183 -0
  241. package/templates/.claude/skills/frontend-vue/reference/grid-example.vue +147 -0
  242. package/templates/.claude/skills/frontend-vue/reference/masterdata-example/[id].vue +106 -0
  243. package/templates/.claude/skills/frontend-vue/reference/masterdata-example/index.vue +58 -0
  244. package/templates/.claude/skills/frontend-vue/reference/popup-example.vue +159 -0
  245. package/templates/.claude/skills/pdf/LICENSE.txt +30 -0
  246. package/templates/.claude/skills/pdf/SKILL.md +294 -0
  247. package/templates/.claude/skills/pdf/forms.md +205 -0
  248. package/templates/.claude/skills/pdf/reference.md +612 -0
  249. package/templates/.claude/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  250. package/templates/.claude/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  251. package/templates/.claude/skills/pdf/scripts/check_fillable_fields.py +12 -0
  252. package/templates/.claude/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  253. package/templates/.claude/skills/pdf/scripts/create_validation_image.py +41 -0
  254. package/templates/.claude/skills/pdf/scripts/extract_form_field_info.py +152 -0
  255. package/templates/.claude/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  256. package/templates/.claude/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  257. package/templates/.claude/skills/pdf-processing/SKILL.md +107 -0
  258. package/templates/.claude/skills/pdf-processing-pro/FORMS.md +610 -0
  259. package/templates/.claude/skills/pdf-processing-pro/OCR.md +137 -0
  260. package/templates/.claude/skills/pdf-processing-pro/SKILL.md +296 -0
  261. package/templates/.claude/skills/pdf-processing-pro/TABLES.md +626 -0
  262. package/templates/.claude/skills/pdf-processing-pro/scripts/analyze_form.py +307 -0
  263. package/templates/.claude/skills/postgres/SKILL.md +69 -0
  264. package/templates/.claude/skills/postgres/reference/fn_get_examples.sql +208 -0
  265. package/templates/.claude/skills/postgres/reference/fn_rpt_examples.sql +239 -0
  266. package/templates/.claude/skills/postgres/reference/utility_functions.sql +94 -0
  267. package/templates/.claude/skills/pptx/LICENSE.txt +30 -0
  268. package/templates/.claude/skills/pptx/SKILL.md +484 -0
  269. package/templates/.claude/skills/pptx/html2pptx.md +625 -0
  270. package/templates/.claude/skills/pptx/ooxml.md +427 -0
  271. package/templates/.claude/skills/pptx/scripts/html2pptx.js +979 -0
  272. package/templates/.claude/skills/pptx/scripts/inventory.py +1020 -0
  273. package/templates/.claude/skills/pptx/scripts/rearrange.py +231 -0
  274. package/templates/.claude/skills/pptx/scripts/replace.py +385 -0
  275. package/templates/.claude/skills/pptx/scripts/thumbnail.py +450 -0
  276. package/templates/.claude/skills/repo-maintenance/SKILL.md +97 -0
  277. package/templates/.claude/skills/research/EXAMPLES.md +434 -0
  278. package/templates/.claude/skills/research/REFERENCE.md +399 -0
  279. package/templates/.claude/skills/research/SKILL.md +136 -0
  280. package/templates/.claude/skills/root-cause-tracing/SKILL.md +174 -0
  281. package/templates/.claude/skills/root-cause-tracing/find-polluter.sh +63 -0
  282. package/templates/.claude/skills/sharing-skills/SKILL.md +194 -0
  283. package/templates/.claude/skills/sql-optimization-patterns/SKILL.md +493 -0
  284. package/templates/.claude/skills/subagent-driven-development/SKILL.md +189 -0
  285. package/templates/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
  286. package/templates/.claude/skills/systematic-debugging/SKILL.md +295 -0
  287. package/templates/.claude/skills/systematic-debugging/test-academic.md +14 -0
  288. package/templates/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
  289. package/templates/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
  290. package/templates/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
  291. package/templates/.claude/skills/test-driven-development/SKILL.md +364 -0
  292. package/templates/.claude/skills/testing-anti-patterns/SKILL.md +302 -0
  293. package/templates/.claude/skills/testing-quality/SKILL.md +97 -0
  294. package/templates/.claude/skills/verification-before-completion/SKILL.md +139 -0
  295. package/templates/.claude/skills/webapp-testing/LICENSE.txt +202 -0
  296. package/templates/.claude/skills/webapp-testing/SKILL.md +96 -0
  297. package/templates/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
  298. package/templates/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
  299. package/templates/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
  300. package/templates/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
  301. package/templates/.claude/ukit/index/build-index.mjs +28 -0
  302. package/templates/.claude/ukit/index/cache-utils.mjs +140 -0
  303. package/templates/.claude/ukit/index/lib/index-core.mjs +2800 -0
  304. package/templates/.claude/ukit/index/query-index.mjs +150 -0
  305. package/templates/.claude/ukit/index/refresh-index.mjs +57 -0
  306. package/templates/.claude/ukit/index/reset-auto-permissions.mjs +76 -0
  307. package/templates/.claude/ukit/index/resolve-context.mjs +279 -0
  308. package/templates/.claude/ukit/index/route-catalog.mjs +258 -0
  309. package/templates/.claude/ukit/index/route-task.mjs +1994 -0
  310. package/templates/.claude/ukit/index/triage.mjs +133 -0
  311. package/templates/.claude/ukit/index/verify-context.mjs +689 -0
  312. package/templates/.claude/ukit/runtime/compact-threshold.mjs +1013 -0
  313. package/templates/.claude/ukit/runtime/output-compression.mjs +1340 -0
  314. package/templates/.claude/ukit/runtime/reinject-context.mjs +874 -0
  315. package/templates/.claude/ukit/runtime/token-utils.mjs +500 -0
  316. package/templates/.codex/README.md +83 -0
  317. package/templates/.codex/settings.json +187 -0
  318. package/templates/.gitignore +75 -0
  319. package/templates/AGENTS.md +116 -0
  320. package/templates/CLAUDE.md +93 -0
  321. package/templates/adapter-presets/antigravity/README.md +22 -0
  322. package/templates/adapter-presets/antigravity/rules.md +49 -0
  323. package/templates/adapter-presets/claude/settings.local.json +42 -0
  324. package/templates/adapter-presets/codex/settings.local.json +6 -0
  325. package/templates/adapter-presets/opencode/opencode.template.json +1 -0
  326. package/templates/docs/BUGFIX.md +20 -0
  327. package/templates/docs/BUG_INDEX.md +12 -0
  328. package/templates/docs/BUG_METRICS.md +7 -0
  329. package/templates/docs/BUG_TEMPLATE.md +13 -0
  330. package/templates/docs/CODE_MAP.md +35 -0
  331. package/templates/docs/INSTALL.md +113 -0
  332. package/templates/docs/MEMORY.md +49 -0
  333. package/templates/docs/PROJECT.md +50 -0
  334. package/templates/docs/UKIT_USAGE_GUIDE.md +147 -0
  335. package/templates/docs/WORKLOG.md +10 -0
  336. package/templates/ukit/README.md +14 -0
  337. package/templates/ukit/storage/cache/compact-history.json +3 -0
  338. package/templates/ukit/storage/cache/compact-pressure.json +1 -0
  339. package/templates/ukit/storage/cache/output-history.json +3 -0
  340. package/templates/ukit/storage/cache/prompt-cache.json +3 -0
  341. package/templates/ukit/storage/config.json +37 -0
  342. package/templates/ukit/storage/memory/projects/.gitkeep +2 -0
  343. package/templates/ukit/storage/memory/sessions/.gitkeep +0 -0
  344. package/templates/ukit/storage/memory/user.json +5 -0
@@ -0,0 +1,320 @@
1
+ <!--
2
+ REFERENCE EXAMPLE: Composables Usage
3
+ This example demonstrates how to use the predefined composables from composables/ folder
4
+ All functions are auto-imported in Nuxt - no import statements needed
5
+ -->
6
+ <template>
7
+ <div class="container mt-4">
8
+ <!-- Search Form -->
9
+ <div class="row mb-3">
10
+ <div class="col-md-3">
11
+ <ControlDatetime v-model="from_date" name="From Date" :required="true" />
12
+ </div>
13
+ <div class="col-md-3">
14
+ <ControlDatetime v-model="to_date" name="To Date" :required="true" />
15
+ </div>
16
+ <div class="col-md-3">
17
+ <ControlDropdownlist v-model="selected_user" name="User" :list="user_list" placeholder="Select User" />
18
+ </div>
19
+ <div class="col-md-3 d-flex align-items-end">
20
+ <ControlButton type="primary" name="Search" @onClick="get_data" />
21
+ </div>
22
+ </div>
23
+
24
+ <!-- Data Grid -->
25
+ <GridAG
26
+ id="example_grid"
27
+ :columns="columns"
28
+ :rows="rows"
29
+ :can_add="true"
30
+ :can_edit="true"
31
+ :can_delete="true"
32
+ :table="table_name"
33
+ :table_schema="table_schema"
34
+ @onClickDetail="onClickDetail"
35
+ @onAdd="onAdd"
36
+ @reloadData="get_data"
37
+ />
38
+ </div>
39
+ </template>
40
+
41
+ <script>
42
+ export default {
43
+ computed: {
44
+ // Computed properties first
45
+ },
46
+
47
+ data() {
48
+ return {
49
+ // Filter data
50
+ from_date: "",
51
+ to_date: "",
52
+ selected_user: "",
53
+
54
+ // Dropdown data
55
+ user_list: [],
56
+
57
+ // Grid data
58
+ rows: [],
59
+ table_name: "orders",
60
+ table_schema: "",
61
+
62
+ // Column definitions
63
+ columns: [
64
+ { key: "order_no", title: "Order No", type: "text" },
65
+ { key: "customer_name", title: "Customer", type: "text" },
66
+ { key: "order_date", title: "Order Date", type: "date" },
67
+ { key: "total_amount", title: "Amount", type: "number" },
68
+ { key: "status", title: "Status", type: "text" },
69
+ ],
70
+ };
71
+ },
72
+
73
+ methods: {
74
+ // ============================================
75
+ // VALIDATION EXAMPLES (check_is_null_or_blank)
76
+ // ============================================
77
+ validateForm() {
78
+ // Check if required fields are filled
79
+ if (check_is_null_or_blank(this.from_date)) {
80
+ show_message("error", t("Please select from date"));
81
+ return false;
82
+ }
83
+ if (check_is_null_or_blank(this.to_date)) {
84
+ show_message("error", t("Please select to date"));
85
+ return false;
86
+ }
87
+ return true;
88
+ },
89
+
90
+ // ============================================
91
+ // API REQUEST EXAMPLES (request, get_schema)
92
+ // ============================================
93
+ async get_data() {
94
+ // Step 1: Validate
95
+ if (!this.validateForm()) {
96
+ return;
97
+ }
98
+
99
+ // Step 2: Build conditions with operators
100
+ let conditions = {
101
+ "(>=)order_date": this.from_date,
102
+ "(<=)order_date": this.to_date,
103
+ };
104
+
105
+ // Add optional filters
106
+ if (!check_is_null_or_blank(this.selected_user)) {
107
+ conditions.user_id = this.selected_user;
108
+ }
109
+
110
+ // Step 3: Build payload
111
+ let data = {
112
+ schema: get_schema(), // Returns 'qas' or 'prd' based on URL
113
+ table: this.table_name,
114
+ conditions: JSON.stringify(conditions),
115
+ order_by: ["order_date desc"],
116
+ };
117
+
118
+ // Step 4: Call API
119
+ this.rows = await request("/select", data, "get");
120
+ },
121
+
122
+ // ============================================
123
+ // DROPDOWN CONVERSION (convertToDropdownValue)
124
+ // ============================================
125
+ async load_users() {
126
+ let data = {
127
+ schema: get_schema(),
128
+ table: "users",
129
+ conditions: JSON.stringify({ status: "active" }),
130
+ order_by: ["fullname asc"],
131
+ };
132
+
133
+ let response = await request("/select", data, "get");
134
+
135
+ // Convert API response to dropdown format
136
+ // From: [{ id_user: 1, fullname: 'John' }, { id_user: 2, fullname: 'Jane' }]
137
+ // To: [{ value: 1, label: 'John' }, { value: 2, label: 'Jane' }]
138
+ this.user_list = convertToDropdownValue(response, "id_user", "fullname");
139
+ },
140
+
141
+ // ============================================
142
+ // DATE FORMATTING (dayjs, formatDate)
143
+ // ============================================
144
+ getFormattedDates() {
145
+ // Get today's date in YYYY-MM-DD format
146
+ const today = dayjs().format("YYYY-MM-DD");
147
+
148
+ // Get first day of current month
149
+ const firstDay = dayjs().startOf("month").format("YYYY-MM-DD");
150
+
151
+ // Get last day of current month
152
+ const lastDay = dayjs().endOf("month").format("YYYY-MM-DD");
153
+
154
+ // Format for display (DD/MM/YYYY)
155
+ const displayDate = formatDate(today, "read_date"); // "18/01/2026"
156
+
157
+ // Format with time
158
+ const displayDateTime = formatDate(today, "read_datetime"); // "18/01/2026 10:30:00"
159
+
160
+ return { today, firstDay, lastDay, displayDate };
161
+ },
162
+
163
+ setDefaultDates() {
164
+ // Set from_date to first day of month
165
+ this.from_date = dayjs().startOf("month").format("YYYY-MM-DD");
166
+ // Set to_date to today
167
+ this.to_date = dayjs().format("YYYY-MM-DD");
168
+ },
169
+
170
+ // ============================================
171
+ // SESSION MANAGEMENT (getSession, setSession)
172
+ // ============================================
173
+ checkLogin() {
174
+ const username = getSession("username");
175
+ if (check_is_null_or_blank(username)) {
176
+ // User not logged in, redirect to login
177
+ go_to_page("/login");
178
+ return false;
179
+ }
180
+ return true;
181
+ },
182
+
183
+ saveFilterToSession() {
184
+ // Save current filter values to session for persistence
185
+ setSession("order_filter", {
186
+ from_date: this.from_date,
187
+ to_date: this.to_date,
188
+ selected_user: this.selected_user,
189
+ });
190
+ },
191
+
192
+ loadFilterFromSession() {
193
+ // Restore filter values from session
194
+ const savedFilter = getSession("order_filter");
195
+ if (!check_is_null_or_blank(savedFilter)) {
196
+ this.from_date = savedFilter.from_date || "";
197
+ this.to_date = savedFilter.to_date || "";
198
+ this.selected_user = savedFilter.selected_user || "";
199
+ }
200
+ },
201
+
202
+ // ============================================
203
+ // TRANSLATION (t)
204
+ // ============================================
205
+ getTranslatedStatus(status) {
206
+ // t() translates strings based on user's language setting
207
+ const statusMap = {
208
+ pending: t("Pending"),
209
+ approved: t("Approved"),
210
+ rejected: t("Rejected"),
211
+ };
212
+ return statusMap[status] || status;
213
+ },
214
+
215
+ // ============================================
216
+ // MESSAGES (show_message)
217
+ // ============================================
218
+ async saveData() {
219
+ try {
220
+ let data = {
221
+ schema: get_schema(),
222
+ table: "orders",
223
+ data: JSON.stringify(this.form),
224
+ };
225
+
226
+ const result = await request("/insert", data, "post");
227
+
228
+ if (result.success) {
229
+ // Success message
230
+ show_message("success", t("Saved successfully"));
231
+ await this.get_data(); // Refresh grid
232
+ } else {
233
+ // Error message
234
+ show_message("error", t("Error saving data"));
235
+ }
236
+ } catch (error) {
237
+ show_message("error", t("Connection error"));
238
+ }
239
+ },
240
+
241
+ // ============================================
242
+ // NAVIGATION (go_to_page, go_back)
243
+ // ============================================
244
+ onClickDetail(row) {
245
+ // Navigate to detail page with query params
246
+ go_to_page("/orders/detail", { id: row.id_orders });
247
+ },
248
+
249
+ onAdd() {
250
+ // Navigate to create page
251
+ go_to_page("/orders/create");
252
+ },
253
+
254
+ onCancel() {
255
+ // Go back to previous page
256
+ go_back("/orders");
257
+ },
258
+
259
+ // ============================================
260
+ // UTILITY FUNCTIONS
261
+ // ============================================
262
+ async delayedAction() {
263
+ show_message("info", "Processing...");
264
+ await sleep(2000); // Wait 2 seconds
265
+ show_message("success", "Done!");
266
+ },
267
+
268
+ // Get list of dates for a range
269
+ getDateRange() {
270
+ // Returns array of dates: ['2024-01-01', '2024-01-02', ...]
271
+ return getDateList(this.from_date, this.to_date);
272
+ },
273
+
274
+ // Format numbers for display
275
+ formatAmount(amount) {
276
+ // 1234567 -> "1.234.567.00"
277
+ return formatNumber(amount, ".", 2);
278
+ },
279
+
280
+ // Extract IDs from list
281
+ getSelectedIds() {
282
+ // From: [{ id: 1, name: 'A' }, { id: 2, name: 'B' }]
283
+ // To: [1, 2]
284
+ return convertListToListOfField(this.rows, "id_orders");
285
+ },
286
+ },
287
+
288
+ async mounted() {
289
+ // Set schema
290
+ this.table_schema = get_schema();
291
+
292
+ // Check login
293
+ if (!this.checkLogin()) {
294
+ return;
295
+ }
296
+
297
+ // Load dropdown data
298
+ await this.load_users();
299
+
300
+ // Set default dates
301
+ this.setDefaultDates();
302
+
303
+ // Load filter from session (if any)
304
+ this.loadFilterFromSession();
305
+
306
+ // Load initial data
307
+ await this.get_data();
308
+ },
309
+
310
+ watch: {
311
+ // Auto-save filter when changed
312
+ from_date() {
313
+ this.saveFilterToSession();
314
+ },
315
+ to_date() {
316
+ this.saveFilterToSession();
317
+ },
318
+ },
319
+ };
320
+ </script>
@@ -0,0 +1,183 @@
1
+ <!--
2
+ REFERENCE EXAMPLE: Standard Form with Predefined Components
3
+ This example demonstrates how to use the predefined components in components/ folder
4
+ -->
5
+ <template>
6
+ <div class="container mt-4">
7
+ <!-- Using ControlInput for text inputs -->
8
+ <div class="row mb-3">
9
+ <div class="col-md-6">
10
+ <ControlInput
11
+ v-model="form.username"
12
+ name="Username"
13
+ :required="true"
14
+ placeholder="Enter username"
15
+ />
16
+ </div>
17
+ <div class="col-md-6">
18
+ <ControlInput
19
+ v-model="form.email"
20
+ name="Email"
21
+ type="text"
22
+ placeholder="Enter email"
23
+ />
24
+ </div>
25
+ </div>
26
+
27
+ <!-- Using ControlDatetime for date pickers -->
28
+ <div class="row mb-3">
29
+ <div class="col-md-6">
30
+ <ControlDatetime
31
+ v-model="form.from_date"
32
+ name="From Date"
33
+ :required="true"
34
+ />
35
+ </div>
36
+ <div class="col-md-6">
37
+ <ControlDatetime
38
+ v-model="form.to_date"
39
+ name="To Date"
40
+ :required="true"
41
+ />
42
+ </div>
43
+ </div>
44
+
45
+ <!-- Using ControlDropdownlist for select inputs -->
46
+ <div class="row mb-3">
47
+ <div class="col-md-6">
48
+ <ControlDropdownlist
49
+ v-model="form.status"
50
+ name="Status"
51
+ :required="true"
52
+ :list="status_list"
53
+ placeholder="Select status"
54
+ />
55
+ </div>
56
+ <div class="col-md-6">
57
+ <ControlDropdownlist
58
+ v-model="form.categories"
59
+ name="Categories"
60
+ :list="category_list"
61
+ :multiple="true"
62
+ placeholder="Select categories"
63
+ />
64
+ </div>
65
+ </div>
66
+
67
+ <!-- Using ControlInput for textarea -->
68
+ <div class="row mb-3">
69
+ <div class="col-12">
70
+ <ControlInput
71
+ v-model="form.description"
72
+ name="Description"
73
+ type="textarea"
74
+ rows="4"
75
+ placeholder="Enter description"
76
+ />
77
+ </div>
78
+ </div>
79
+
80
+ <!-- Using ControlCheckbox -->
81
+ <div class="row mb-3">
82
+ <div class="col-12">
83
+ <ControlCheckbox
84
+ v-model="form.is_active"
85
+ name="Active"
86
+ />
87
+ </div>
88
+ </div>
89
+
90
+ <!-- Using ControlButton for actions -->
91
+ <div class="row">
92
+ <div class="col-12">
93
+ <ControlButton
94
+ type="primary"
95
+ name="Save"
96
+ @onClick="onSave"
97
+ />
98
+ <ControlButton
99
+ type="secondary"
100
+ name="Cancel"
101
+ @onClick="onCancel"
102
+ />
103
+ </div>
104
+ </div>
105
+ </div>
106
+ </template>
107
+
108
+ <script>
109
+ export default {
110
+ computed: {
111
+ // Computed properties first
112
+ },
113
+ data() {
114
+ return {
115
+ form: {
116
+ username: "",
117
+ email: "",
118
+ from_date: "",
119
+ to_date: "",
120
+ status: "",
121
+ categories: [],
122
+ description: "",
123
+ is_active: false,
124
+ },
125
+ status_list: [
126
+ { value: "active", label: "Active" },
127
+ { value: "inactive", label: "Inactive" },
128
+ { value: "pending", label: "Pending" },
129
+ ],
130
+ category_list: [
131
+ { value: "cat1", label: "Category 1" },
132
+ { value: "cat2", label: "Category 2" },
133
+ { value: "cat3", label: "Category 3" },
134
+ ],
135
+ };
136
+ },
137
+
138
+ methods: {
139
+ async onSave() {
140
+ // Validate required fields
141
+ if (check_is_null_or_blank(this.form.username)) {
142
+ alert("Username is required");
143
+ return;
144
+ }
145
+
146
+ // Build payload
147
+ let data = {
148
+ schema: get_schema(),
149
+ table: "users",
150
+ data: JSON.stringify(this.form),
151
+ };
152
+
153
+ // Call backend
154
+ const result = await request("/insert", data, "post");
155
+ if (result.success) {
156
+ alert("Saved successfully!");
157
+ }
158
+ },
159
+
160
+ onCancel() {
161
+ // Reset form
162
+ this.form = {
163
+ username: "",
164
+ email: "",
165
+ from_date: "",
166
+ to_date: "",
167
+ status: "",
168
+ categories: [],
169
+ description: "",
170
+ is_active: false,
171
+ };
172
+ },
173
+ },
174
+
175
+ async mounted() {
176
+ // Load initial data if needed
177
+ },
178
+
179
+ watch: {
180
+ // Watchers here
181
+ },
182
+ };
183
+ </script>
@@ -0,0 +1,147 @@
1
+ <!--
2
+ REFERENCE EXAMPLE: Data Grid with AG Grid Component
3
+ This example demonstrates how to use GridAG component for displaying data tables
4
+ -->
5
+ <template>
6
+ <div class="container-fluid mt-4">
7
+ <!-- Filter Section using predefined components -->
8
+ <div class="row mb-3">
9
+ <div class="col-md-3">
10
+ <ControlDatetime
11
+ v-model="from_date"
12
+ name="From Date"
13
+ :required="true"
14
+ />
15
+ </div>
16
+ <div class="col-md-3">
17
+ <ControlDatetime
18
+ v-model="to_date"
19
+ name="To Date"
20
+ :required="true"
21
+ />
22
+ </div>
23
+ <div class="col-md-3">
24
+ <ControlDropdownlist
25
+ v-model="status"
26
+ name="Status"
27
+ :list="status_list"
28
+ placeholder="All Status"
29
+ />
30
+ </div>
31
+ <div class="col-md-3 d-flex align-items-end">
32
+ <ControlButton
33
+ type="primary"
34
+ name="Search"
35
+ @onClick="get_data"
36
+ />
37
+ </div>
38
+ </div>
39
+
40
+ <!-- AG Grid Component -->
41
+ <GridAG
42
+ id="user_grid"
43
+ :columns="columns"
44
+ :rows="rows"
45
+ :can_add="true"
46
+ :can_edit="true"
47
+ :can_delete="true"
48
+ :can_export="true"
49
+ :table="table_name"
50
+ :table_schema="table_schema"
51
+ @onClickDetail="onClickDetail"
52
+ @onAdd="onAdd"
53
+ @reloadData="get_data"
54
+ />
55
+ </div>
56
+ </template>
57
+
58
+ <script>
59
+ export default {
60
+ computed: {
61
+ // Computed properties first
62
+ },
63
+ data() {
64
+ return {
65
+ // Filter data
66
+ from_date: "",
67
+ to_date: "",
68
+ status: "",
69
+
70
+ // Grid data
71
+ rows: [],
72
+ table_name: "users",
73
+ table_schema: "",
74
+
75
+ // Dropdown options
76
+ status_list: [
77
+ { value: "active", label: "Active" },
78
+ { value: "inactive", label: "Inactive" },
79
+ ],
80
+
81
+ // Column definitions for AG Grid
82
+ columns: [
83
+ { key: "username", title: "Username", type: "text" },
84
+ { key: "email", title: "Email", type: "text" },
85
+ { key: "status", title: "Status", type: "text" },
86
+ { key: "created_date", title: "Created Date", type: "date" },
87
+ { key: "amount", title: "Amount", type: "number" },
88
+ ],
89
+ };
90
+ },
91
+
92
+ methods: {
93
+ async get_data() {
94
+ // Validate required fields
95
+ if (check_is_null_or_blank(this.from_date) || check_is_null_or_blank(this.to_date)) {
96
+ return;
97
+ }
98
+
99
+ // Build conditions object
100
+ let conditions = {
101
+ "(>=)created_date": this.from_date,
102
+ "(<=)created_date": this.to_date,
103
+ };
104
+
105
+ // Add optional filters
106
+ if (!check_is_null_or_blank(this.status)) {
107
+ conditions.status = this.status;
108
+ }
109
+
110
+ // Build payload
111
+ let data = {
112
+ schema: get_schema(),
113
+ table: this.table_name,
114
+ conditions: JSON.stringify(conditions),
115
+ order_by: ["created_date desc"],
116
+ };
117
+
118
+ // Call backend
119
+ this.rows = await request("/select", data, "get");
120
+ },
121
+
122
+ onClickDetail(row) {
123
+ // Handle edit click - navigate to detail page or open modal
124
+ console.log("Edit row:", row);
125
+ // Example: this.$router.push(`/users/${row.id_users}`);
126
+ },
127
+
128
+ onAdd() {
129
+ // Handle add new - navigate to create page or open modal
130
+ console.log("Add new");
131
+ // Example: this.$router.push('/users/create');
132
+ },
133
+ },
134
+
135
+ async mounted() {
136
+ // Set default dates
137
+ this.table_schema = get_schema();
138
+
139
+ // Load initial data
140
+ await this.get_data();
141
+ },
142
+
143
+ watch: {
144
+ // Watchers here
145
+ },
146
+ };
147
+ </script>