@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,493 @@
1
+ ---
2
+ name: sql-optimization-patterns
3
+ description: Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries. Use when debugging slow queries, designing database schemas, or optimizing application performance.
4
+ ---
5
+
6
+ # SQL Optimization Patterns
7
+
8
+ Transform slow database queries into lightning-fast operations through systematic optimization, proper indexing, and query plan analysis.
9
+
10
+ ## When to Use This Skill
11
+
12
+ - Debugging slow-running queries
13
+ - Designing performant database schemas
14
+ - Optimizing application response times
15
+ - Reducing database load and costs
16
+ - Improving scalability for growing datasets
17
+ - Analyzing EXPLAIN query plans
18
+ - Implementing efficient indexes
19
+ - Resolving N+1 query problems
20
+
21
+ ## Core Concepts
22
+
23
+ ### 1. Query Execution Plans (EXPLAIN)
24
+
25
+ Understanding EXPLAIN output is fundamental to optimization.
26
+
27
+ **PostgreSQL EXPLAIN:**
28
+ ```sql
29
+ -- Basic explain
30
+ EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';
31
+
32
+ -- With actual execution stats
33
+ EXPLAIN ANALYZE
34
+ SELECT * FROM users WHERE email = 'user@example.com';
35
+
36
+ -- Verbose output with more details
37
+ EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
38
+ SELECT u.*, o.order_total
39
+ FROM users u
40
+ JOIN orders o ON u.id = o.user_id
41
+ WHERE u.created_at > NOW() - INTERVAL '30 days';
42
+ ```
43
+
44
+ **Key Metrics to Watch:**
45
+ - **Seq Scan**: Full table scan (usually slow for large tables)
46
+ - **Index Scan**: Using index (good)
47
+ - **Index Only Scan**: Using index without touching table (best)
48
+ - **Nested Loop**: Join method (okay for small datasets)
49
+ - **Hash Join**: Join method (good for larger datasets)
50
+ - **Merge Join**: Join method (good for sorted data)
51
+ - **Cost**: Estimated query cost (lower is better)
52
+ - **Rows**: Estimated rows returned
53
+ - **Actual Time**: Real execution time
54
+
55
+ ### 2. Index Strategies
56
+
57
+ Indexes are the most powerful optimization tool.
58
+
59
+ **Index Types:**
60
+ - **B-Tree**: Default, good for equality and range queries
61
+ - **Hash**: Only for equality (=) comparisons
62
+ - **GIN**: Full-text search, array queries, JSONB
63
+ - **GiST**: Geometric data, full-text search
64
+ - **BRIN**: Block Range INdex for very large tables with correlation
65
+
66
+ ```sql
67
+ -- Standard B-Tree index
68
+ CREATE INDEX idx_users_email ON users(email);
69
+
70
+ -- Composite index (order matters!)
71
+ CREATE INDEX idx_orders_user_status ON orders(user_id, status);
72
+
73
+ -- Partial index (index subset of rows)
74
+ CREATE INDEX idx_active_users ON users(email)
75
+ WHERE status = 'active';
76
+
77
+ -- Expression index
78
+ CREATE INDEX idx_users_lower_email ON users(LOWER(email));
79
+
80
+ -- Covering index (include additional columns)
81
+ CREATE INDEX idx_users_email_covering ON users(email)
82
+ INCLUDE (name, created_at);
83
+
84
+ -- Full-text search index
85
+ CREATE INDEX idx_posts_search ON posts
86
+ USING GIN(to_tsvector('english', title || ' ' || body));
87
+
88
+ -- JSONB index
89
+ CREATE INDEX idx_metadata ON events USING GIN(metadata);
90
+ ```
91
+
92
+ ### 3. Query Optimization Patterns
93
+
94
+ **Avoid SELECT \*:**
95
+ ```sql
96
+ -- Bad: Fetches unnecessary columns
97
+ SELECT * FROM users WHERE id = 123;
98
+
99
+ -- Good: Fetch only what you need
100
+ SELECT id, email, name FROM users WHERE id = 123;
101
+ ```
102
+
103
+ **Use WHERE Clause Efficiently:**
104
+ ```sql
105
+ -- Bad: Function prevents index usage
106
+ SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
107
+
108
+ -- Good: Create functional index or use exact match
109
+ CREATE INDEX idx_users_email_lower ON users(LOWER(email));
110
+ -- Then:
111
+ SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
112
+
113
+ -- Or store normalized data
114
+ SELECT * FROM users WHERE email = 'user@example.com';
115
+ ```
116
+
117
+ **Optimize JOINs:**
118
+ ```sql
119
+ -- Bad: Cartesian product then filter
120
+ SELECT u.name, o.total
121
+ FROM users u, orders o
122
+ WHERE u.id = o.user_id AND u.created_at > '2024-01-01';
123
+
124
+ -- Good: Filter before join
125
+ SELECT u.name, o.total
126
+ FROM users u
127
+ JOIN orders o ON u.id = o.user_id
128
+ WHERE u.created_at > '2024-01-01';
129
+
130
+ -- Better: Filter both tables
131
+ SELECT u.name, o.total
132
+ FROM (SELECT * FROM users WHERE created_at > '2024-01-01') u
133
+ JOIN orders o ON u.id = o.user_id;
134
+ ```
135
+
136
+ ## Optimization Patterns
137
+
138
+ ### Pattern 1: Eliminate N+1 Queries
139
+
140
+ **Problem: N+1 Query Anti-Pattern**
141
+ ```python
142
+ # Bad: Executes N+1 queries
143
+ users = db.query("SELECT * FROM users LIMIT 10")
144
+ for user in users:
145
+ orders = db.query("SELECT * FROM orders WHERE user_id = ?", user.id)
146
+ # Process orders
147
+ ```
148
+
149
+ **Solution: Use JOINs or Batch Loading**
150
+ ```sql
151
+ -- Solution 1: JOIN
152
+ SELECT
153
+ u.id, u.name,
154
+ o.id as order_id, o.total
155
+ FROM users u
156
+ LEFT JOIN orders o ON u.id = o.user_id
157
+ WHERE u.id IN (1, 2, 3, 4, 5);
158
+
159
+ -- Solution 2: Batch query
160
+ SELECT * FROM orders
161
+ WHERE user_id IN (1, 2, 3, 4, 5);
162
+ ```
163
+
164
+ ```python
165
+ # Good: Single query with JOIN or batch load
166
+ # Using JOIN
167
+ results = db.query("""
168
+ SELECT u.id, u.name, o.id as order_id, o.total
169
+ FROM users u
170
+ LEFT JOIN orders o ON u.id = o.user_id
171
+ WHERE u.id IN (1, 2, 3, 4, 5)
172
+ """)
173
+
174
+ # Or batch load
175
+ users = db.query("SELECT * FROM users LIMIT 10")
176
+ user_ids = [u.id for u in users]
177
+ orders = db.query(
178
+ "SELECT * FROM orders WHERE user_id IN (?)",
179
+ user_ids
180
+ )
181
+ # Group orders by user_id
182
+ orders_by_user = {}
183
+ for order in orders:
184
+ orders_by_user.setdefault(order.user_id, []).append(order)
185
+ ```
186
+
187
+ ### Pattern 2: Optimize Pagination
188
+
189
+ **Bad: OFFSET on Large Tables**
190
+ ```sql
191
+ -- Slow for large offsets
192
+ SELECT * FROM users
193
+ ORDER BY created_at DESC
194
+ LIMIT 20 OFFSET 100000; -- Very slow!
195
+ ```
196
+
197
+ **Good: Cursor-Based Pagination**
198
+ ```sql
199
+ -- Much faster: Use cursor (last seen ID)
200
+ SELECT * FROM users
201
+ WHERE created_at < '2024-01-15 10:30:00' -- Last cursor
202
+ ORDER BY created_at DESC
203
+ LIMIT 20;
204
+
205
+ -- With composite sorting
206
+ SELECT * FROM users
207
+ WHERE (created_at, id) < ('2024-01-15 10:30:00', 12345)
208
+ ORDER BY created_at DESC, id DESC
209
+ LIMIT 20;
210
+
211
+ -- Requires index
212
+ CREATE INDEX idx_users_cursor ON users(created_at DESC, id DESC);
213
+ ```
214
+
215
+ ### Pattern 3: Aggregate Efficiently
216
+
217
+ **Optimize COUNT Queries:**
218
+ ```sql
219
+ -- Bad: Counts all rows
220
+ SELECT COUNT(*) FROM orders; -- Slow on large tables
221
+
222
+ -- Good: Use estimates for approximate counts
223
+ SELECT reltuples::bigint AS estimate
224
+ FROM pg_class
225
+ WHERE relname = 'orders';
226
+
227
+ -- Good: Filter before counting
228
+ SELECT COUNT(*) FROM orders
229
+ WHERE created_at > NOW() - INTERVAL '7 days';
230
+
231
+ -- Better: Use index-only scan
232
+ CREATE INDEX idx_orders_created ON orders(created_at);
233
+ SELECT COUNT(*) FROM orders
234
+ WHERE created_at > NOW() - INTERVAL '7 days';
235
+ ```
236
+
237
+ **Optimize GROUP BY:**
238
+ ```sql
239
+ -- Bad: Group by then filter
240
+ SELECT user_id, COUNT(*) as order_count
241
+ FROM orders
242
+ GROUP BY user_id
243
+ HAVING COUNT(*) > 10;
244
+
245
+ -- Better: Filter first, then group (if possible)
246
+ SELECT user_id, COUNT(*) as order_count
247
+ FROM orders
248
+ WHERE status = 'completed'
249
+ GROUP BY user_id
250
+ HAVING COUNT(*) > 10;
251
+
252
+ -- Best: Use covering index
253
+ CREATE INDEX idx_orders_user_status ON orders(user_id, status);
254
+ ```
255
+
256
+ ### Pattern 4: Subquery Optimization
257
+
258
+ **Transform Correlated Subqueries:**
259
+ ```sql
260
+ -- Bad: Correlated subquery (runs for each row)
261
+ SELECT u.name, u.email,
262
+ (SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) as order_count
263
+ FROM users u;
264
+
265
+ -- Good: JOIN with aggregation
266
+ SELECT u.name, u.email, COUNT(o.id) as order_count
267
+ FROM users u
268
+ LEFT JOIN orders o ON o.user_id = u.id
269
+ GROUP BY u.id, u.name, u.email;
270
+
271
+ -- Better: Use window functions
272
+ SELECT DISTINCT ON (u.id)
273
+ u.name, u.email,
274
+ COUNT(o.id) OVER (PARTITION BY u.id) as order_count
275
+ FROM users u
276
+ LEFT JOIN orders o ON o.user_id = u.id;
277
+ ```
278
+
279
+ **Use CTEs for Clarity:**
280
+ ```sql
281
+ -- Using Common Table Expressions
282
+ WITH recent_users AS (
283
+ SELECT id, name, email
284
+ FROM users
285
+ WHERE created_at > NOW() - INTERVAL '30 days'
286
+ ),
287
+ user_order_counts AS (
288
+ SELECT user_id, COUNT(*) as order_count
289
+ FROM orders
290
+ WHERE created_at > NOW() - INTERVAL '30 days'
291
+ GROUP BY user_id
292
+ )
293
+ SELECT ru.name, ru.email, COALESCE(uoc.order_count, 0) as orders
294
+ FROM recent_users ru
295
+ LEFT JOIN user_order_counts uoc ON ru.id = uoc.user_id;
296
+ ```
297
+
298
+ ### Pattern 5: Batch Operations
299
+
300
+ **Batch INSERT:**
301
+ ```sql
302
+ -- Bad: Multiple individual inserts
303
+ INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
304
+ INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
305
+ INSERT INTO users (name, email) VALUES ('Carol', 'carol@example.com');
306
+
307
+ -- Good: Batch insert
308
+ INSERT INTO users (name, email) VALUES
309
+ ('Alice', 'alice@example.com'),
310
+ ('Bob', 'bob@example.com'),
311
+ ('Carol', 'carol@example.com');
312
+
313
+ -- Better: Use COPY for bulk inserts (PostgreSQL)
314
+ COPY users (name, email) FROM '/tmp/users.csv' CSV HEADER;
315
+ ```
316
+
317
+ **Batch UPDATE:**
318
+ ```sql
319
+ -- Bad: Update in loop
320
+ UPDATE users SET status = 'active' WHERE id = 1;
321
+ UPDATE users SET status = 'active' WHERE id = 2;
322
+ -- ... repeat for many IDs
323
+
324
+ -- Good: Single UPDATE with IN clause
325
+ UPDATE users
326
+ SET status = 'active'
327
+ WHERE id IN (1, 2, 3, 4, 5, ...);
328
+
329
+ -- Better: Use temporary table for large batches
330
+ CREATE TEMP TABLE temp_user_updates (id INT, new_status VARCHAR);
331
+ INSERT INTO temp_user_updates VALUES (1, 'active'), (2, 'active'), ...;
332
+
333
+ UPDATE users u
334
+ SET status = t.new_status
335
+ FROM temp_user_updates t
336
+ WHERE u.id = t.id;
337
+ ```
338
+
339
+ ## Advanced Techniques
340
+
341
+ ### Materialized Views
342
+
343
+ Pre-compute expensive queries.
344
+
345
+ ```sql
346
+ -- Create materialized view
347
+ CREATE MATERIALIZED VIEW user_order_summary AS
348
+ SELECT
349
+ u.id,
350
+ u.name,
351
+ COUNT(o.id) as total_orders,
352
+ SUM(o.total) as total_spent,
353
+ MAX(o.created_at) as last_order_date
354
+ FROM users u
355
+ LEFT JOIN orders o ON u.id = o.user_id
356
+ GROUP BY u.id, u.name;
357
+
358
+ -- Add index to materialized view
359
+ CREATE INDEX idx_user_summary_spent ON user_order_summary(total_spent DESC);
360
+
361
+ -- Refresh materialized view
362
+ REFRESH MATERIALIZED VIEW user_order_summary;
363
+
364
+ -- Concurrent refresh (PostgreSQL)
365
+ REFRESH MATERIALIZED VIEW CONCURRENTLY user_order_summary;
366
+
367
+ -- Query materialized view (very fast)
368
+ SELECT * FROM user_order_summary
369
+ WHERE total_spent > 1000
370
+ ORDER BY total_spent DESC;
371
+ ```
372
+
373
+ ### Partitioning
374
+
375
+ Split large tables for better performance.
376
+
377
+ ```sql
378
+ -- Range partitioning by date (PostgreSQL)
379
+ CREATE TABLE orders (
380
+ id SERIAL,
381
+ user_id INT,
382
+ total DECIMAL,
383
+ created_at TIMESTAMP
384
+ ) PARTITION BY RANGE (created_at);
385
+
386
+ -- Create partitions
387
+ CREATE TABLE orders_2024_q1 PARTITION OF orders
388
+ FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');
389
+
390
+ CREATE TABLE orders_2024_q2 PARTITION OF orders
391
+ FOR VALUES FROM ('2024-04-01') TO ('2024-07-01');
392
+
393
+ -- Queries automatically use appropriate partition
394
+ SELECT * FROM orders
395
+ WHERE created_at BETWEEN '2024-02-01' AND '2024-02-28';
396
+ -- Only scans orders_2024_q1 partition
397
+ ```
398
+
399
+ ### Query Hints and Optimization
400
+
401
+ ```sql
402
+ -- Force index usage (MySQL)
403
+ SELECT * FROM users
404
+ USE INDEX (idx_users_email)
405
+ WHERE email = 'user@example.com';
406
+
407
+ -- Parallel query (PostgreSQL)
408
+ SET max_parallel_workers_per_gather = 4;
409
+ SELECT * FROM large_table WHERE condition;
410
+
411
+ -- Join hints (PostgreSQL)
412
+ SET enable_nestloop = OFF; -- Force hash or merge join
413
+ ```
414
+
415
+ ## Best Practices
416
+
417
+ 1. **Index Selectively**: Too many indexes slow down writes
418
+ 2. **Monitor Query Performance**: Use slow query logs
419
+ 3. **Keep Statistics Updated**: Run ANALYZE regularly
420
+ 4. **Use Appropriate Data Types**: Smaller types = better performance
421
+ 5. **Normalize Thoughtfully**: Balance normalization vs performance
422
+ 6. **Cache Frequently Accessed Data**: Use application-level caching
423
+ 7. **Connection Pooling**: Reuse database connections
424
+ 8. **Regular Maintenance**: VACUUM, ANALYZE, rebuild indexes
425
+
426
+ ```sql
427
+ -- Update statistics
428
+ ANALYZE users;
429
+ ANALYZE VERBOSE orders;
430
+
431
+ -- Vacuum (PostgreSQL)
432
+ VACUUM ANALYZE users;
433
+ VACUUM FULL users; -- Reclaim space (locks table)
434
+
435
+ -- Reindex
436
+ REINDEX INDEX idx_users_email;
437
+ REINDEX TABLE users;
438
+ ```
439
+
440
+ ## Common Pitfalls
441
+
442
+ - **Over-Indexing**: Each index slows down INSERT/UPDATE/DELETE
443
+ - **Unused Indexes**: Waste space and slow writes
444
+ - **Missing Indexes**: Slow queries, full table scans
445
+ - **Implicit Type Conversion**: Prevents index usage
446
+ - **OR Conditions**: Can't use indexes efficiently
447
+ - **LIKE with Leading Wildcard**: `LIKE '%abc'` can't use index
448
+ - **Function in WHERE**: Prevents index usage unless functional index exists
449
+
450
+ ## Monitoring Queries
451
+
452
+ ```sql
453
+ -- Find slow queries (PostgreSQL)
454
+ SELECT query, calls, total_time, mean_time
455
+ FROM pg_stat_statements
456
+ ORDER BY mean_time DESC
457
+ LIMIT 10;
458
+
459
+ -- Find missing indexes (PostgreSQL)
460
+ SELECT
461
+ schemaname,
462
+ tablename,
463
+ seq_scan,
464
+ seq_tup_read,
465
+ idx_scan,
466
+ seq_tup_read / seq_scan AS avg_seq_tup_read
467
+ FROM pg_stat_user_tables
468
+ WHERE seq_scan > 0
469
+ ORDER BY seq_tup_read DESC
470
+ LIMIT 10;
471
+
472
+ -- Find unused indexes (PostgreSQL)
473
+ SELECT
474
+ schemaname,
475
+ tablename,
476
+ indexname,
477
+ idx_scan,
478
+ idx_tup_read,
479
+ idx_tup_fetch
480
+ FROM pg_stat_user_indexes
481
+ WHERE idx_scan = 0
482
+ ORDER BY pg_relation_size(indexrelid) DESC;
483
+ ```
484
+
485
+ ## Resources
486
+
487
+ - **references/postgres-optimization-guide.md**: PostgreSQL-specific optimization
488
+ - **references/mysql-optimization-guide.md**: MySQL/MariaDB optimization
489
+ - **references/query-plan-analysis.md**: Deep dive into EXPLAIN plans
490
+ - **assets/index-strategy-checklist.md**: When and how to create indexes
491
+ - **assets/query-optimization-checklist.md**: Step-by-step optimization guide
492
+ - **scripts/analyze-slow-queries.sql**: Identify slow queries in your database
493
+ - **scripts/index-recommendations.sql**: Generate index recommendations
@@ -0,0 +1,189 @@
1
+ ---
2
+ name: subagent-driven-development
3
+ description: Use when executing implementation plans with independent tasks in the current session - dispatches fresh subagent for each task with code review between tasks, enabling fast iteration with quality gates
4
+ ---
5
+
6
+ # Subagent-Driven Development
7
+
8
+ Execute plan by dispatching fresh subagent per task, with code review after each.
9
+
10
+ **Core principle:** Fresh subagent per task + review between tasks = high quality, fast iteration
11
+
12
+ ## Overview
13
+
14
+ **vs. Executing Plans (parallel session):**
15
+ - Same session (no context switch)
16
+ - Fresh subagent per task (no context pollution)
17
+ - Code review after each task (catch issues early)
18
+ - Faster iteration (no human-in-loop between tasks)
19
+
20
+ **When to use:**
21
+ - Staying in this session
22
+ - Tasks are mostly independent
23
+ - Want continuous progress with quality gates
24
+
25
+ **When NOT to use:**
26
+ - Need to review plan first (use executing-plans)
27
+ - Tasks are tightly coupled (manual execution better)
28
+ - Plan needs revision (brainstorm first)
29
+
30
+ ## The Process
31
+
32
+ ### 1. Load Plan
33
+
34
+ Read plan file, create TodoWrite with all tasks.
35
+
36
+ ### 2. Execute Task with Subagent
37
+
38
+ For each task:
39
+
40
+ **Dispatch fresh subagent:**
41
+ ```
42
+ Task tool (general-purpose):
43
+ description: "Implement Task N: [task name]"
44
+ prompt: |
45
+ You are implementing Task N from [plan-file].
46
+
47
+ Read that task carefully. Your job is to:
48
+ 1. Implement exactly what the task specifies
49
+ 2. Write tests (following TDD if task says to)
50
+ 3. Verify implementation works
51
+ 4. Commit your work
52
+ 5. Report back
53
+
54
+ Work from: [directory]
55
+
56
+ Report: What you implemented, what you tested, test results, files changed, any issues
57
+ ```
58
+
59
+ **Subagent reports back** with summary of work.
60
+
61
+ ### 3. Review Subagent's Work
62
+
63
+ **Dispatch code-reviewer subagent:**
64
+ ```
65
+ Task tool (code-reviewer):
66
+ Use template at requesting-code-review/code-reviewer.md
67
+
68
+ WHAT_WAS_IMPLEMENTED: [from subagent's report]
69
+ PLAN_OR_REQUIREMENTS: Task N from [plan-file]
70
+ BASE_SHA: [commit before task]
71
+ HEAD_SHA: [current commit]
72
+ DESCRIPTION: [task summary]
73
+ ```
74
+
75
+ **Code reviewer returns:** Strengths, Issues (Critical/Important/Minor), Assessment
76
+
77
+ ### 4. Apply Review Feedback
78
+
79
+ **If issues found:**
80
+ - Fix Critical issues immediately
81
+ - Fix Important issues before next task
82
+ - Note Minor issues
83
+
84
+ **Dispatch follow-up subagent if needed:**
85
+ ```
86
+ "Fix issues from code review: [list issues]"
87
+ ```
88
+
89
+ ### 5. Mark Complete, Next Task
90
+
91
+ - Mark task as completed in TodoWrite
92
+ - Move to next task
93
+ - Repeat steps 2-5
94
+
95
+ ### 6. Final Review
96
+
97
+ After all tasks complete, dispatch final code-reviewer:
98
+ - Reviews entire implementation
99
+ - Checks all plan requirements met
100
+ - Validates overall architecture
101
+
102
+ ### 7. Complete Development
103
+
104
+ After final review passes:
105
+ - Announce: "I'm using the finishing-a-development-branch skill to complete this work."
106
+ - **REQUIRED SUB-SKILL:** Use finishing-a-development-branch
107
+ - Follow that skill to verify tests, present options, execute choice
108
+
109
+ ## Example Workflow
110
+
111
+ ```
112
+ You: I'm using Subagent-Driven Development to execute this plan.
113
+
114
+ [Load plan, create TodoWrite]
115
+
116
+ Task 1: Hook installation script
117
+
118
+ [Dispatch implementation subagent]
119
+ Subagent: Implemented install-hook with tests, 5/5 passing
120
+
121
+ [Get git SHAs, dispatch code-reviewer]
122
+ Reviewer: Strengths: Good test coverage. Issues: None. Ready.
123
+
124
+ [Mark Task 1 complete]
125
+
126
+ Task 2: Recovery modes
127
+
128
+ [Dispatch implementation subagent]
129
+ Subagent: Added verify/repair, 8/8 tests passing
130
+
131
+ [Dispatch code-reviewer]
132
+ Reviewer: Strengths: Solid. Issues (Important): Missing progress reporting
133
+
134
+ [Dispatch fix subagent]
135
+ Fix subagent: Added progress every 100 conversations
136
+
137
+ [Verify fix, mark Task 2 complete]
138
+
139
+ ...
140
+
141
+ [After all tasks]
142
+ [Dispatch final code-reviewer]
143
+ Final reviewer: All requirements met, ready to merge
144
+
145
+ Done!
146
+ ```
147
+
148
+ ## Advantages
149
+
150
+ **vs. Manual execution:**
151
+ - Subagents follow TDD naturally
152
+ - Fresh context per task (no confusion)
153
+ - Parallel-safe (subagents don't interfere)
154
+
155
+ **vs. Executing Plans:**
156
+ - Same session (no handoff)
157
+ - Continuous progress (no waiting)
158
+ - Review checkpoints automatic
159
+
160
+ **Cost:**
161
+ - More subagent invocations
162
+ - But catches issues early (cheaper than debugging later)
163
+
164
+ ## Red Flags
165
+
166
+ **Never:**
167
+ - Skip code review between tasks
168
+ - Proceed with unfixed Critical issues
169
+ - Dispatch multiple implementation subagents in parallel (conflicts)
170
+ - Implement without reading plan task
171
+
172
+ **If subagent fails task:**
173
+ - Dispatch fix subagent with specific instructions
174
+ - Don't try to fix manually (context pollution)
175
+
176
+ ## Integration
177
+
178
+ **Required workflow skills:**
179
+ - **writing-plans** - REQUIRED: Creates the plan that this skill executes
180
+ - **requesting-code-review** - REQUIRED: Review after each task (see Step 3)
181
+ - **finishing-a-development-branch** - REQUIRED: Complete development after all tasks (see Step 7)
182
+
183
+ **Subagents must use:**
184
+ - **test-driven-development** - Subagents follow TDD for each task
185
+
186
+ **Alternative workflow:**
187
+ - **executing-plans** - Use for parallel session instead of same-session execution
188
+
189
+ See code-reviewer template: requesting-code-review/code-reviewer.md