sumulige-claude 1.0.9 → 1.0.11

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 (299) hide show
  1. package/.claude/.version +1 -0
  2. package/.claude/AGENTS.md +9 -9
  3. package/.claude/commands/commit-push-pr.md +23 -3
  4. package/.claude/settings.local.json +15 -1
  5. package/.claude/skills/algorithmic-art/LICENSE.txt +202 -0
  6. package/.claude/skills/algorithmic-art/SKILL.md +405 -0
  7. package/.claude/skills/algorithmic-art/templates/generator_template.js +223 -0
  8. package/.claude/skills/algorithmic-art/templates/viewer.html +599 -0
  9. package/.claude/skills/brand-guidelines/LICENSE.txt +202 -0
  10. package/.claude/skills/brand-guidelines/SKILL.md +73 -0
  11. package/.claude/skills/canvas-design/LICENSE.txt +202 -0
  12. package/.claude/skills/canvas-design/SKILL.md +130 -0
  13. package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  14. package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  15. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  16. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  17. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  18. package/.claude/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  19. package/.claude/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  20. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  21. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  22. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  23. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  24. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  25. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  26. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  27. package/.claude/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  28. package/.claude/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  29. package/.claude/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  30. package/.claude/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  31. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  32. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  33. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  34. package/.claude/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  35. package/.claude/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  36. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  37. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  38. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  39. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  40. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  41. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  42. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  43. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  44. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  45. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  46. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  47. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  48. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  49. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  50. package/.claude/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  51. package/.claude/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  52. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  53. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  54. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  55. package/.claude/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  56. package/.claude/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  57. package/.claude/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  58. package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  59. package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  60. package/.claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  61. package/.claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  62. package/.claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  63. package/.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  64. package/.claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  65. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  66. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  67. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  68. package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  69. package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  70. package/.claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  71. package/.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  72. package/.claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  73. package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  74. package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  75. package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  76. package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  77. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  78. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  79. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  80. package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  81. package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  82. package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  83. package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  84. package/.claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  85. package/.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  86. package/.claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  87. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  88. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  89. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  90. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  91. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  92. package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  93. package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  94. package/.claude/skills/doc-coauthoring/SKILL.md +375 -0
  95. package/.claude/skills/docx/LICENSE.txt +30 -0
  96. package/.claude/skills/docx/SKILL.md +197 -0
  97. package/.claude/skills/docx/docx-js.md +350 -0
  98. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  99. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  100. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  101. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  102. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  103. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  104. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  105. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  106. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  107. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  108. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  109. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  110. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  111. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  112. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  113. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  114. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  115. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  116. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  117. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  118. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  119. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  120. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  121. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  122. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  123. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  124. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  125. package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  126. package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  127. package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  128. package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  129. package/.claude/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  130. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  131. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  132. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  133. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  134. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  135. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  136. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  137. package/.claude/skills/docx/ooxml/scripts/pack.py +159 -0
  138. package/.claude/skills/docx/ooxml/scripts/unpack.py +29 -0
  139. package/.claude/skills/docx/ooxml/scripts/validate.py +69 -0
  140. package/.claude/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  141. package/.claude/skills/docx/ooxml/scripts/validation/base.py +951 -0
  142. package/.claude/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  143. package/.claude/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  144. package/.claude/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  145. package/.claude/skills/docx/ooxml.md +610 -0
  146. package/.claude/skills/docx/scripts/__init__.py +1 -0
  147. package/.claude/skills/docx/scripts/document.py +1276 -0
  148. package/.claude/skills/docx/scripts/templates/comments.xml +3 -0
  149. package/.claude/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  150. package/.claude/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  151. package/.claude/skills/docx/scripts/templates/commentsIds.xml +3 -0
  152. package/.claude/skills/docx/scripts/templates/people.xml +3 -0
  153. package/.claude/skills/docx/scripts/utilities.py +374 -0
  154. package/.claude/skills/frontend-design/LICENSE.txt +177 -0
  155. package/.claude/skills/frontend-design/SKILL.md +42 -0
  156. package/.claude/skills/internal-comms/LICENSE.txt +202 -0
  157. package/.claude/skills/internal-comms/SKILL.md +32 -0
  158. package/.claude/skills/internal-comms/examples/3p-updates.md +47 -0
  159. package/.claude/skills/internal-comms/examples/company-newsletter.md +65 -0
  160. package/.claude/skills/internal-comms/examples/faq-answers.md +30 -0
  161. package/.claude/skills/internal-comms/examples/general-comms.md +16 -0
  162. package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
  163. package/.claude/skills/mcp-builder/SKILL.md +236 -0
  164. package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
  165. package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  166. package/.claude/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  167. package/.claude/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  168. package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
  169. package/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
  170. package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  171. package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
  172. package/.claude/skills/pdf/LICENSE.txt +30 -0
  173. package/.claude/skills/pdf/SKILL.md +294 -0
  174. package/.claude/skills/pdf/forms.md +205 -0
  175. package/.claude/skills/pdf/reference.md +612 -0
  176. package/.claude/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  177. package/.claude/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  178. package/.claude/skills/pdf/scripts/check_fillable_fields.py +12 -0
  179. package/.claude/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  180. package/.claude/skills/pdf/scripts/create_validation_image.py +41 -0
  181. package/.claude/skills/pdf/scripts/extract_form_field_info.py +152 -0
  182. package/.claude/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  183. package/.claude/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  184. package/.claude/skills/pptx/LICENSE.txt +30 -0
  185. package/.claude/skills/pptx/SKILL.md +484 -0
  186. package/.claude/skills/pptx/html2pptx.md +625 -0
  187. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  188. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  189. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  190. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  191. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  192. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  193. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  194. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  195. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  196. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  197. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  198. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  199. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  200. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  201. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  202. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  203. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  204. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  205. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  206. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  207. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  208. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  209. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  210. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  211. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  212. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  213. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  214. package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  215. package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  216. package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  217. package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  218. package/.claude/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  219. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  220. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  221. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  222. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  223. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  224. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  225. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  226. package/.claude/skills/pptx/ooxml/scripts/pack.py +159 -0
  227. package/.claude/skills/pptx/ooxml/scripts/unpack.py +29 -0
  228. package/.claude/skills/pptx/ooxml/scripts/validate.py +69 -0
  229. package/.claude/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  230. package/.claude/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  231. package/.claude/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  232. package/.claude/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  233. package/.claude/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  234. package/.claude/skills/pptx/ooxml.md +427 -0
  235. package/.claude/skills/pptx/scripts/html2pptx.js +979 -0
  236. package/.claude/skills/pptx/scripts/inventory.py +1020 -0
  237. package/.claude/skills/pptx/scripts/rearrange.py +231 -0
  238. package/.claude/skills/pptx/scripts/replace.py +385 -0
  239. package/.claude/skills/pptx/scripts/thumbnail.py +450 -0
  240. package/.claude/skills/skill-creator/LICENSE.txt +202 -0
  241. package/.claude/skills/skill-creator/SKILL.md +356 -0
  242. package/.claude/skills/skill-creator/references/output-patterns.md +82 -0
  243. package/.claude/skills/skill-creator/references/workflows.md +28 -0
  244. package/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  245. package/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  246. package/.claude/skills/skill-creator/scripts/quick_validate.py +95 -0
  247. package/.claude/skills/slack-gif-creator/LICENSE.txt +202 -0
  248. package/.claude/skills/slack-gif-creator/SKILL.md +254 -0
  249. package/.claude/skills/slack-gif-creator/core/easing.py +234 -0
  250. package/.claude/skills/slack-gif-creator/core/frame_composer.py +176 -0
  251. package/.claude/skills/slack-gif-creator/core/gif_builder.py +269 -0
  252. package/.claude/skills/slack-gif-creator/core/validators.py +136 -0
  253. package/.claude/skills/slack-gif-creator/requirements.txt +4 -0
  254. package/.claude/skills/template/SKILL.md +6 -0
  255. package/.claude/skills/theme-factory/LICENSE.txt +202 -0
  256. package/.claude/skills/theme-factory/SKILL.md +59 -0
  257. package/.claude/skills/theme-factory/theme-showcase.pdf +0 -0
  258. package/.claude/skills/theme-factory/themes/arctic-frost.md +19 -0
  259. package/.claude/skills/theme-factory/themes/botanical-garden.md +19 -0
  260. package/.claude/skills/theme-factory/themes/desert-rose.md +19 -0
  261. package/.claude/skills/theme-factory/themes/forest-canopy.md +19 -0
  262. package/.claude/skills/theme-factory/themes/golden-hour.md +19 -0
  263. package/.claude/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  264. package/.claude/skills/theme-factory/themes/modern-minimalist.md +19 -0
  265. package/.claude/skills/theme-factory/themes/ocean-depths.md +19 -0
  266. package/.claude/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  267. package/.claude/skills/theme-factory/themes/tech-innovation.md +19 -0
  268. package/.claude/skills/web-artifacts-builder/LICENSE.txt +202 -0
  269. package/.claude/skills/web-artifacts-builder/SKILL.md +74 -0
  270. package/.claude/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  271. package/.claude/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  272. package/.claude/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  273. package/.claude/skills/webapp-testing/LICENSE.txt +202 -0
  274. package/.claude/skills/webapp-testing/SKILL.md +96 -0
  275. package/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
  276. package/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
  277. package/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
  278. package/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
  279. package/.claude/skills/xlsx/LICENSE.txt +30 -0
  280. package/.claude/skills/xlsx/SKILL.md +289 -0
  281. package/.claude/skills/xlsx/recalc.py +178 -0
  282. package/.claude-plugin/marketplace.json +2 -2
  283. package/AGENTS.md +165 -86
  284. package/README.md +22 -0
  285. package/cli.js +7 -2
  286. package/development/todos/INDEX.md +10 -1
  287. package/jest.config.js +61 -0
  288. package/lib/commands.js +67 -0
  289. package/lib/migrations.js +154 -0
  290. package/package.json +7 -2
  291. package/scripts/fix-hooks.mjs +97 -0
  292. package/template/.claude/commands/commit-push-pr.md +23 -3
  293. package/template/.claude/settings.json +114 -50
  294. package/tests/README.md +263 -0
  295. package/tests/commands.test.js +163 -0
  296. package/tests/config.test.js +100 -0
  297. package/tests/marketplace.test.js +304 -0
  298. package/tests/migrations.test.js +187 -0
  299. package/tests/utils.test.js +167 -0
package/lib/commands.js CHANGED
@@ -9,6 +9,7 @@ const path = require('path');
9
9
  const { execSync } = require('child_process');
10
10
  const { loadConfig, CONFIG_DIR, CONFIG_FILE, SKILLS_DIR, ensureDir, saveConfig } = require('./config');
11
11
  const { copyRecursive, toTitleCase } = require('./utils');
12
+ const { runMigrations, TEMPLATE_VERSION } = require('./migrations');
12
13
 
13
14
  const TEMPLATE_DIR = path.join(__dirname, '../template');
14
15
 
@@ -62,6 +63,7 @@ const commands = {
62
63
  // -------------------------------------------------------------------------
63
64
  sync: () => {
64
65
  console.log('🔄 Syncing Sumulige Claude to current project...');
66
+ console.log('');
65
67
 
66
68
  const projectDir = process.cwd();
67
69
  const projectConfigDir = path.join(projectDir, '.claude');
@@ -71,6 +73,17 @@ const commands = {
71
73
 
72
74
  // Create .claude directory
73
75
  ensureDir(projectConfigDir);
76
+
77
+ // Run migrations (version-aware)
78
+ const result = runMigrations(projectDir);
79
+ if (result.migrations.length > 0) {
80
+ console.log(`📦 Migrating project template → v${TEMPLATE_VERSION}`);
81
+ result.migrations.forEach(m => {
82
+ console.log(` ✅ ${m.description}`);
83
+ });
84
+ console.log('');
85
+ }
86
+
74
87
  console.log('✅ Created .claude directory');
75
88
 
76
89
  // Sync config
@@ -118,6 +131,55 @@ const commands = {
118
131
  console.log('✅ Sync complete!');
119
132
  },
120
133
 
134
+ // -------------------------------------------------------------------------
135
+ migrate: () => {
136
+ console.log('🔧 Migrating project to latest format...');
137
+ console.log('');
138
+
139
+ const projectDir = process.cwd();
140
+ const settingsFile = path.join(projectDir, '.claude', 'settings.json');
141
+
142
+ if (!fs.existsSync(settingsFile)) {
143
+ console.log('⚠️ No settings.json found in .claude/');
144
+ console.log(' Run: smc template');
145
+ return;
146
+ }
147
+
148
+ let settings;
149
+ try {
150
+ settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8'));
151
+ } catch (e) {
152
+ console.log('❌ Invalid JSON in settings.json');
153
+ return;
154
+ }
155
+
156
+ // 检测旧格式
157
+ const isOldFormat = settings.matcher || (settings.hooks && typeof settings.hooks === 'object');
158
+
159
+ if (!isOldFormat) {
160
+ console.log('✅ Already using latest format');
161
+ return;
162
+ }
163
+
164
+ // 读取新模板
165
+ const templateSettings = path.join(TEMPLATE_DIR, '.claude', 'settings.json');
166
+ if (!fs.existsSync(templateSettings)) {
167
+ console.log('❌ Template settings.json not found');
168
+ return;
169
+ }
170
+
171
+ const newSettings = fs.readFileSync(templateSettings, 'utf-8');
172
+ fs.writeFileSync(settingsFile, newSettings);
173
+
174
+ console.log('✅ Migrated settings.json to latest format');
175
+ console.log('');
176
+ console.log('Changes:');
177
+ console.log(' - Old format: {"matcher": "...", "hooks": [...]}');
178
+ console.log(' - New format: {"UserPromptSubmit": [...], "PostToolUse": [...]}');
179
+ console.log('');
180
+ console.log('ℹ️ Hooks will now work correctly!');
181
+ },
182
+
121
183
  // -------------------------------------------------------------------------
122
184
  agent: (task) => {
123
185
  if (!task) {
@@ -565,6 +627,11 @@ const commands = {
565
627
  fs.writeFileSync(path.join(targetClaudeDir, 'ANCHORS.md'), anchorsContent);
566
628
  console.log(' ✅ .claude/ANCHORS.md');
567
629
 
630
+ // Write version file
631
+ const { setProjectVersion } = require('./migrations');
632
+ setProjectVersion(targetDir, TEMPLATE_VERSION);
633
+ console.log(` ✅ .claude/.version (v${TEMPLATE_VERSION})`);
634
+
568
635
  // Initialize Sumulige Claude if installed
569
636
  console.log('');
570
637
  console.log('🤖 Initializing Sumulige Claude...');
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Migrations - Version control for project templates
3
+ *
4
+ * 每个迁移函数:
5
+ * - from: 起始版本
6
+ * - to: 目标版本
7
+ * - migrate: 实际迁移逻辑
8
+ *
9
+ * 迁移链:v1.0.0 → v1.0.2 → v1.0.10 → ...
10
+ */
11
+
12
+ const fs = require('fs');
13
+ const path = require('path');
14
+
15
+ // 当前模板版本
16
+ const TEMPLATE_VERSION = '1.0.10';
17
+
18
+ // 版本文件路径
19
+ const getVersionFile = (projectDir) => path.join(projectDir, '.claude', '.version');
20
+
21
+ // 读取项目版本
22
+ function getProjectVersion(projectDir) {
23
+ const versionFile = getVersionFile(projectDir);
24
+ if (!fs.existsSync(versionFile)) {
25
+ // 没有 version 文件说明是旧版本项目
26
+ return '1.0.0';
27
+ }
28
+ try {
29
+ return fs.readFileSync(versionFile, 'utf-8').trim();
30
+ } catch {
31
+ return '1.0.0';
32
+ }
33
+ }
34
+
35
+ // 写入项目版本
36
+ function setProjectVersion(projectDir, version) {
37
+ const versionFile = getVersionFile(projectDir);
38
+ fs.writeFileSync(versionFile, version + '\n');
39
+ }
40
+
41
+ // 版本比较
42
+ function compareVersions(v1, v2) {
43
+ const parts1 = v1.split('.').map(Number);
44
+ const parts2 = v2.split('.').map(Number);
45
+
46
+ for (let i = 0; i < 3; i++) {
47
+ if (parts1[i] < parts2[i]) return -1;
48
+ if (parts1[i] > parts2[i]) return 1;
49
+ }
50
+ return 0;
51
+ }
52
+
53
+ // 迁移列表
54
+ const migrations = [
55
+ {
56
+ from: '1.0.0',
57
+ to: '1.0.10',
58
+ description: 'Migrate hooks format from old to new',
59
+ migrate: (projectDir) => {
60
+ const settingsFile = path.join(projectDir, '.claude', 'settings.json');
61
+ if (!fs.existsSync(settingsFile)) return;
62
+
63
+ let settings;
64
+ try {
65
+ settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8'));
66
+ } catch {
67
+ return; // 无效 JSON,跳过
68
+ }
69
+
70
+ // 检测旧格式
71
+ const isOldFormat = settings.matcher || (settings.hooks && typeof settings.hooks === 'object');
72
+ if (!isOldFormat) return;
73
+
74
+ // 读取新模板
75
+ const templateDir = path.join(__dirname, '../template');
76
+ const templateSettings = path.join(templateDir, '.claude', 'settings.json');
77
+
78
+ if (fs.existsSync(templateSettings)) {
79
+ fs.writeFileSync(settingsFile, fs.readFileSync(templateSettings, 'utf-8'));
80
+ }
81
+ }
82
+ }
83
+ ];
84
+
85
+ /**
86
+ * 执行迁移
87
+ * @param {string} projectDir - 项目目录
88
+ * @param {boolean} silent - 是否静默模式
89
+ * @returns {object} { success, migrations, currentVersion }
90
+ */
91
+ function runMigrations(projectDir, silent = false) {
92
+ const currentVersion = getProjectVersion(projectDir);
93
+
94
+ // 已经是最新版本
95
+ if (compareVersions(currentVersion, TEMPLATE_VERSION) >= 0) {
96
+ return {
97
+ success: true,
98
+ migrations: [],
99
+ currentVersion,
100
+ templateVersion: TEMPLATE_VERSION
101
+ };
102
+ }
103
+
104
+ // 找到需要执行的迁移
105
+ const pendingMigrations = migrations.filter(m => {
106
+ const cmp = compareVersions(currentVersion, m.to);
107
+ return cmp < 0; // 只执行版本高于当前版本的迁移
108
+ });
109
+
110
+ // 按版本顺序执行
111
+ pendingMigrations.sort((a, b) => compareVersions(a.to, b.to));
112
+
113
+ const executed = [];
114
+
115
+ for (const migration of pendingMigrations) {
116
+ try {
117
+ if (!silent) {
118
+ console.log(`⬆️ Migrating: ${currentVersion} → ${migration.to}`);
119
+ console.log(` ${migration.description}`);
120
+ }
121
+ migration.migrate(projectDir);
122
+ executed.push(migration);
123
+ setProjectVersion(projectDir, migration.to);
124
+ if (!silent) {
125
+ console.log(` ✅ Done`);
126
+ }
127
+ } catch (error) {
128
+ if (!silent) {
129
+ console.log(` ❌ Failed: ${error.message}`);
130
+ }
131
+ return {
132
+ success: false,
133
+ error: error.message,
134
+ currentVersion,
135
+ executed
136
+ };
137
+ }
138
+ }
139
+
140
+ return {
141
+ success: true,
142
+ migrations: executed,
143
+ currentVersion: TEMPLATE_VERSION,
144
+ templateVersion: TEMPLATE_VERSION
145
+ };
146
+ }
147
+
148
+ module.exports = {
149
+ TEMPLATE_VERSION,
150
+ getProjectVersion,
151
+ setProjectVersion,
152
+ compareVersions,
153
+ runMigrations
154
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sumulige-claude",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "description": "The Best Agent Harness for Claude Code",
5
5
  "main": "cli.js",
6
6
  "bin": {
@@ -8,7 +8,9 @@
8
8
  "sumulige-claude": "cli.js"
9
9
  },
10
10
  "scripts": {
11
- "test": "echo \"Error: no test specified\" && exit 1",
11
+ "test": "jest",
12
+ "test:coverage": "jest --coverage",
13
+ "test:watch": "jest --watch",
12
14
  "postinstall": "node cli.js init",
13
15
  "sync": "node scripts/sync-external.mjs",
14
16
  "update-registry": "node scripts/update-registry.mjs",
@@ -35,7 +37,10 @@
35
37
  "node": ">=16.0.0"
36
38
  },
37
39
  "devDependencies": {
40
+ "jest": "^30.2.0",
41
+ "mock-fs": "^5.5.0",
38
42
  "prettier": "^3.7.4",
43
+ "sinon": "^21.0.1",
39
44
  "yaml": "^2.8.2"
40
45
  }
41
46
  }
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Fix hooks format from old to new
4
+ * 旧格式:{"matcher": "...", "hooks": [...]}
5
+ * 新格式:{"UserPromptSubmit": [{"matcher": {}, "hooks": [...]}], ...}
6
+ */
7
+
8
+ import fs from 'fs';
9
+ import path from 'path';
10
+
11
+ const NEW_FORMAT = {
12
+ "UserPromptSubmit": [
13
+ {
14
+ "matcher": {},
15
+ "hooks": [
16
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/project-kickoff.cjs", "timeout": 1000 },
17
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/rag-skill-loader.cjs", "timeout": 1000 },
18
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs", "timeout": 1000 },
19
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs", "timeout": 1000 },
20
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs", "timeout": 1000 }
21
+ ]
22
+ }
23
+ ],
24
+ "PreToolUse": [
25
+ {
26
+ "matcher": {},
27
+ "hooks": [
28
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs", "timeout": 1000 },
29
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs", "timeout": 1000 },
30
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs", "timeout": 1000 }
31
+ ]
32
+ }
33
+ ],
34
+ "PostToolUse": [
35
+ {
36
+ "matcher": {},
37
+ "hooks": [
38
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/code-formatter.cjs", "timeout": 5000 },
39
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/verify-work.cjs", "timeout": 1000 },
40
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs", "timeout": 1000 },
41
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs", "timeout": 1000 },
42
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs", "timeout": 1000 }
43
+ ]
44
+ }
45
+ ],
46
+ "AgentStop": [
47
+ {
48
+ "matcher": {},
49
+ "hooks": [
50
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/verify-work.cjs", "timeout": 1000 },
51
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs", "timeout": 1000 },
52
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs", "timeout": 1000 },
53
+ { "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs", "timeout": 1000 }
54
+ ]
55
+ }
56
+ ]
57
+ };
58
+
59
+ function fixProject(projectPath) {
60
+ const settingsFile = path.join(projectPath, '.claude', 'settings.json');
61
+
62
+ if (!fs.existsSync(settingsFile)) {
63
+ console.log(`⚠️ ${projectPath} - no settings.json`);
64
+ return false;
65
+ }
66
+
67
+ let settings;
68
+ try {
69
+ settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8'));
70
+ } catch (e) {
71
+ console.log(`❌ ${projectPath} - invalid JSON`);
72
+ return false;
73
+ }
74
+
75
+ // 检测旧格式
76
+ const isOldFormat = settings.matcher || (settings.hooks && typeof settings.hooks === 'object');
77
+
78
+ if (!isOldFormat) {
79
+ console.log(`✅ ${projectPath} - already new format`);
80
+ return false;
81
+ }
82
+
83
+ // 写入新格式
84
+ fs.writeFileSync(settingsFile, JSON.stringify(NEW_FORMAT, null, 2) + '\n');
85
+ console.log(`🔧 ${projectPath} - fixed!`);
86
+ return true;
87
+ }
88
+
89
+ // CLI
90
+ const args = process.argv.slice(2);
91
+
92
+ if (args.length === 0) {
93
+ // 当前目录
94
+ fixProject(process.cwd());
95
+ } else {
96
+ args.forEach(fixProject);
97
+ }
@@ -22,7 +22,27 @@ Analyze the changes and:
22
22
  2. Identify the main purpose of the changes
23
23
  3. Check if there are any sensitive files that shouldn't be committed
24
24
 
25
- ## Step 3: Stage and Commit
25
+ ## Step 3: Code Simplification (Before Commit)
26
+
27
+ **IMPORTANT**: Before creating the commit, simplify and refine the code changes:
28
+
29
+ 1. Review the recently modified code sections
30
+ 2. Apply code simplification focusing on:
31
+ - Code clarity and consistency
32
+ - Reducing unnecessary complexity and nesting
33
+ - Eliminating redundant code and abstractions
34
+ - Following project standards (if CLAUDE.md exists)
35
+ - Preserving exact functionality
36
+ 3. Use explicit, readable code over overly compact solutions
37
+
38
+ **Trigger phrases to apply simplification**:
39
+ - "简化此代码" (Simplify this code)
40
+ - "使这更清晰" (Make this clearer)
41
+ - "优化此实现" (Optimize this implementation)
42
+
43
+ Ask the user: "是否需要简化代码?(Need code simplification?)" - if yes, apply code-simplifier agent before proceeding.
44
+
45
+ ## Step 4: Stage and Commit
26
46
 
27
47
  If there are unstaged changes that should be included, ask the user first.
28
48
 
@@ -36,7 +56,7 @@ Then create a commit with a clear message following this format:
36
56
  Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
37
57
  ```
38
58
 
39
- ## Step 4: Push and Create PR
59
+ ## Step 5: Push and Create PR
40
60
 
41
61
  1. Push the changes to remote
42
62
  2. Check if there's an open PR for this branch using:
@@ -51,7 +71,7 @@ Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
51
71
  - Test plan (checklist)
52
72
  - Link to any related issues
53
73
 
54
- ## Step 5: Verify
74
+ ## Step 6: Verify
55
75
 
56
76
  After creating the PR, show the PR URL and check CI status using:
57
77
  ```bash
@@ -1,51 +1,115 @@
1
1
  {
2
- "hooks": {
3
- "PostToolUse": [
4
- {
5
- "matcher": "*",
6
- "hooks": [
7
- {
8
- "type": "command",
9
- "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/project-kickoff.cjs",
10
- "timeout": 1000
11
- },
12
- {
13
- "type": "command",
14
- "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs",
15
- "timeout": 1000
16
- },
17
- {
18
- "type": "command",
19
- "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/rag-skill-loader.cjs",
20
- "timeout": 1000
21
- },
22
- {
23
- "type": "command",
24
- "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/code-formatter.cjs",
25
- "timeout": 5000
26
- },
27
- {
28
- "type": "command",
29
- "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/verify-work.cjs",
30
- "timeout": 1000
31
- },
32
- {
33
- "type": "command",
34
- "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs",
35
- "timeout": 1000
36
- },
37
- {
38
- "type": "command",
39
- "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs",
40
- "timeout": 1000
41
- },
42
- {
43
- "type": "command",
44
- "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/conversation-logger.cjs",
45
- "timeout": 1000
46
- }
47
- ]
48
- }
49
- ]
50
- }
51
- }
2
+ "UserPromptSubmit": [
3
+ {
4
+ "matcher": {},
5
+ "hooks": [
6
+ {
7
+ "type": "command",
8
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/project-kickoff.cjs",
9
+ "timeout": 1000
10
+ },
11
+ {
12
+ "type": "command",
13
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/rag-skill-loader.cjs",
14
+ "timeout": 1000
15
+ },
16
+ {
17
+ "type": "command",
18
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs",
19
+ "timeout": 1000
20
+ },
21
+ {
22
+ "type": "command",
23
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs",
24
+ "timeout": 1000
25
+ },
26
+ {
27
+ "type": "command",
28
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs",
29
+ "timeout": 1000
30
+ }
31
+ ]
32
+ }
33
+ ],
34
+ "PreToolUse": [
35
+ {
36
+ "matcher": {},
37
+ "hooks": [
38
+ {
39
+ "type": "command",
40
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs",
41
+ "timeout": 1000
42
+ },
43
+ {
44
+ "type": "command",
45
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs",
46
+ "timeout": 1000
47
+ },
48
+ {
49
+ "type": "command",
50
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs",
51
+ "timeout": 1000
52
+ }
53
+ ]
54
+ }
55
+ ],
56
+ "PostToolUse": [
57
+ {
58
+ "matcher": {},
59
+ "hooks": [
60
+ {
61
+ "type": "command",
62
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/code-formatter.cjs",
63
+ "timeout": 5000
64
+ },
65
+ {
66
+ "type": "command",
67
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/verify-work.cjs",
68
+ "timeout": 1000
69
+ },
70
+ {
71
+ "type": "command",
72
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs",
73
+ "timeout": 1000
74
+ },
75
+ {
76
+ "type": "command",
77
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs",
78
+ "timeout": 1000
79
+ },
80
+ {
81
+ "type": "command",
82
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs",
83
+ "timeout": 1000
84
+ }
85
+ ]
86
+ }
87
+ ],
88
+ "AgentStop": [
89
+ {
90
+ "matcher": {},
91
+ "hooks": [
92
+ {
93
+ "type": "command",
94
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/verify-work.cjs",
95
+ "timeout": 1000
96
+ },
97
+ {
98
+ "type": "command",
99
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/thinking-silent.cjs",
100
+ "timeout": 1000
101
+ },
102
+ {
103
+ "type": "command",
104
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/multi-session.cjs",
105
+ "timeout": 1000
106
+ },
107
+ {
108
+ "type": "command",
109
+ "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/todo-manager.cjs",
110
+ "timeout": 1000
111
+ }
112
+ ]
113
+ }
114
+ ]
115
+ }