sumulige-claude 1.0.9 → 1.1.0

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 (320) 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/commands/todos.md +41 -6
  5. package/.claude/hooks/session-restore.cjs +102 -0
  6. package/.claude/hooks/session-save.cjs +164 -0
  7. package/.claude/hooks/todo-manager.cjs +262 -141
  8. package/.claude/settings.local.json +25 -1
  9. package/.claude/skills/algorithmic-art/LICENSE.txt +202 -0
  10. package/.claude/skills/algorithmic-art/SKILL.md +405 -0
  11. package/.claude/skills/algorithmic-art/templates/generator_template.js +223 -0
  12. package/.claude/skills/algorithmic-art/templates/viewer.html +599 -0
  13. package/.claude/skills/api-tester/SKILL.md +52 -23
  14. package/.claude/skills/brand-guidelines/LICENSE.txt +202 -0
  15. package/.claude/skills/brand-guidelines/SKILL.md +73 -0
  16. package/.claude/skills/canvas-design/LICENSE.txt +202 -0
  17. package/.claude/skills/canvas-design/SKILL.md +130 -0
  18. package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  19. package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  20. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  21. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  22. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  23. package/.claude/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  24. package/.claude/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  25. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  26. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  27. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  28. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  29. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  30. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  31. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  32. package/.claude/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  33. package/.claude/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  34. package/.claude/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  35. package/.claude/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  36. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  37. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  38. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  39. package/.claude/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  40. package/.claude/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  41. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  42. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  43. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  44. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  45. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  46. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  47. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  48. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  49. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  50. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  51. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  52. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  53. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  54. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  55. package/.claude/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  56. package/.claude/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  57. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  58. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  59. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  60. package/.claude/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  61. package/.claude/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  62. package/.claude/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  63. package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  64. package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  65. package/.claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  66. package/.claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  67. package/.claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  68. package/.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  69. package/.claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  70. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  71. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  72. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  73. package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  74. package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  75. package/.claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  76. package/.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  77. package/.claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  78. package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  79. package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  80. package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  81. package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  82. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  83. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  84. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  85. package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  86. package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  87. package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  88. package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  89. package/.claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  90. package/.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  91. package/.claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  92. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  93. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  94. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  95. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  96. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  97. package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  98. package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  99. package/.claude/skills/doc-coauthoring/SKILL.md +375 -0
  100. package/.claude/skills/docx/LICENSE.txt +30 -0
  101. package/.claude/skills/docx/SKILL.md +197 -0
  102. package/.claude/skills/docx/docx-js.md +350 -0
  103. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  104. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  105. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  106. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  107. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  108. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  109. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  110. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  111. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  112. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  113. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  114. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  115. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  116. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  117. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  118. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  119. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  120. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  121. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  122. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  123. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  124. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  125. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  126. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  127. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  128. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  129. package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  130. package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  131. package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  132. package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  133. package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  134. package/.claude/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  135. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  136. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  137. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  138. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  139. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  140. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  141. package/.claude/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  142. package/.claude/skills/docx/ooxml/scripts/pack.py +159 -0
  143. package/.claude/skills/docx/ooxml/scripts/unpack.py +29 -0
  144. package/.claude/skills/docx/ooxml/scripts/validate.py +69 -0
  145. package/.claude/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  146. package/.claude/skills/docx/ooxml/scripts/validation/base.py +951 -0
  147. package/.claude/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  148. package/.claude/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  149. package/.claude/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  150. package/.claude/skills/docx/ooxml.md +610 -0
  151. package/.claude/skills/docx/scripts/__init__.py +1 -0
  152. package/.claude/skills/docx/scripts/document.py +1276 -0
  153. package/.claude/skills/docx/scripts/templates/comments.xml +3 -0
  154. package/.claude/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  155. package/.claude/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  156. package/.claude/skills/docx/scripts/templates/commentsIds.xml +3 -0
  157. package/.claude/skills/docx/scripts/templates/people.xml +3 -0
  158. package/.claude/skills/docx/scripts/utilities.py +374 -0
  159. package/.claude/skills/frontend-design/LICENSE.txt +177 -0
  160. package/.claude/skills/frontend-design/SKILL.md +42 -0
  161. package/.claude/skills/internal-comms/LICENSE.txt +202 -0
  162. package/.claude/skills/internal-comms/SKILL.md +32 -0
  163. package/.claude/skills/internal-comms/examples/3p-updates.md +47 -0
  164. package/.claude/skills/internal-comms/examples/company-newsletter.md +65 -0
  165. package/.claude/skills/internal-comms/examples/faq-answers.md +30 -0
  166. package/.claude/skills/internal-comms/examples/general-comms.md +16 -0
  167. package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
  168. package/.claude/skills/mcp-builder/SKILL.md +236 -0
  169. package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
  170. package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  171. package/.claude/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  172. package/.claude/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  173. package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
  174. package/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
  175. package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  176. package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
  177. package/.claude/skills/pdf/LICENSE.txt +30 -0
  178. package/.claude/skills/pdf/SKILL.md +294 -0
  179. package/.claude/skills/pdf/forms.md +205 -0
  180. package/.claude/skills/pdf/reference.md +612 -0
  181. package/.claude/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  182. package/.claude/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  183. package/.claude/skills/pdf/scripts/check_fillable_fields.py +12 -0
  184. package/.claude/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  185. package/.claude/skills/pdf/scripts/create_validation_image.py +41 -0
  186. package/.claude/skills/pdf/scripts/extract_form_field_info.py +152 -0
  187. package/.claude/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  188. package/.claude/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  189. package/.claude/skills/pptx/LICENSE.txt +30 -0
  190. package/.claude/skills/pptx/SKILL.md +484 -0
  191. package/.claude/skills/pptx/html2pptx.md +625 -0
  192. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  193. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  194. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  195. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  196. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  197. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  198. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  199. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  200. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  201. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  202. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  203. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  204. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  205. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  206. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  207. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  208. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  209. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  210. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  211. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  212. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  213. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  214. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  215. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  216. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  217. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  218. package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  219. package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  220. package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  221. package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  222. package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  223. package/.claude/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  224. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  225. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  226. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  227. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  228. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  229. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  230. package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  231. package/.claude/skills/pptx/ooxml/scripts/pack.py +159 -0
  232. package/.claude/skills/pptx/ooxml/scripts/unpack.py +29 -0
  233. package/.claude/skills/pptx/ooxml/scripts/validate.py +69 -0
  234. package/.claude/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  235. package/.claude/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  236. package/.claude/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  237. package/.claude/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  238. package/.claude/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  239. package/.claude/skills/pptx/ooxml.md +427 -0
  240. package/.claude/skills/pptx/scripts/html2pptx.js +979 -0
  241. package/.claude/skills/pptx/scripts/inventory.py +1020 -0
  242. package/.claude/skills/pptx/scripts/rearrange.py +231 -0
  243. package/.claude/skills/pptx/scripts/replace.py +385 -0
  244. package/.claude/skills/pptx/scripts/thumbnail.py +450 -0
  245. package/.claude/skills/skill-creator/LICENSE.txt +202 -0
  246. package/.claude/skills/skill-creator/SKILL.md +356 -0
  247. package/.claude/skills/skill-creator/references/output-patterns.md +82 -0
  248. package/.claude/skills/skill-creator/references/workflows.md +28 -0
  249. package/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  250. package/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  251. package/.claude/skills/skill-creator/scripts/quick_validate.py +95 -0
  252. package/.claude/skills/slack-gif-creator/LICENSE.txt +202 -0
  253. package/.claude/skills/slack-gif-creator/SKILL.md +254 -0
  254. package/.claude/skills/slack-gif-creator/core/easing.py +234 -0
  255. package/.claude/skills/slack-gif-creator/core/frame_composer.py +176 -0
  256. package/.claude/skills/slack-gif-creator/core/gif_builder.py +269 -0
  257. package/.claude/skills/slack-gif-creator/core/validators.py +136 -0
  258. package/.claude/skills/slack-gif-creator/requirements.txt +4 -0
  259. package/.claude/skills/template/SKILL.md +6 -0
  260. package/.claude/skills/test-workflow/SKILL.md +191 -0
  261. package/.claude/skills/theme-factory/LICENSE.txt +202 -0
  262. package/.claude/skills/theme-factory/SKILL.md +59 -0
  263. package/.claude/skills/theme-factory/theme-showcase.pdf +0 -0
  264. package/.claude/skills/theme-factory/themes/arctic-frost.md +19 -0
  265. package/.claude/skills/theme-factory/themes/botanical-garden.md +19 -0
  266. package/.claude/skills/theme-factory/themes/desert-rose.md +19 -0
  267. package/.claude/skills/theme-factory/themes/forest-canopy.md +19 -0
  268. package/.claude/skills/theme-factory/themes/golden-hour.md +19 -0
  269. package/.claude/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  270. package/.claude/skills/theme-factory/themes/modern-minimalist.md +19 -0
  271. package/.claude/skills/theme-factory/themes/ocean-depths.md +19 -0
  272. package/.claude/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  273. package/.claude/skills/theme-factory/themes/tech-innovation.md +19 -0
  274. package/.claude/skills/web-artifacts-builder/LICENSE.txt +202 -0
  275. package/.claude/skills/web-artifacts-builder/SKILL.md +74 -0
  276. package/.claude/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  277. package/.claude/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  278. package/.claude/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  279. package/.claude/skills/webapp-testing/LICENSE.txt +202 -0
  280. package/.claude/skills/webapp-testing/SKILL.md +96 -0
  281. package/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
  282. package/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
  283. package/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
  284. package/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
  285. package/.claude/skills/xlsx/LICENSE.txt +30 -0
  286. package/.claude/skills/xlsx/SKILL.md +289 -0
  287. package/.claude/skills/xlsx/recalc.py +178 -0
  288. package/.claude/templates/tasks/develop.md +69 -0
  289. package/.claude/templates/tasks/research.md +64 -0
  290. package/.claude/templates/tasks/test.md +96 -0
  291. package/.claude-plugin/marketplace.json +2 -2
  292. package/.versionrc +25 -0
  293. package/AGENTS.md +171 -86
  294. package/CHANGELOG.md +83 -4
  295. package/PROJECT_STRUCTURE.md +40 -3
  296. package/Q&A.md +184 -0
  297. package/README.md +74 -2
  298. package/cli.js +79 -5
  299. package/config/official-skills.json +183 -0
  300. package/development/todos/.state.json +4 -0
  301. package/development/todos/INDEX.md +67 -32
  302. package/docs/RELEASE.md +93 -0
  303. package/jest.config.js +61 -0
  304. package/lib/commands.js +1724 -39
  305. package/lib/migrations.js +154 -0
  306. package/lib/utils.js +102 -14
  307. package/lib/version-check.js +169 -0
  308. package/package.json +13 -3
  309. package/scripts/fix-hooks.mjs +97 -0
  310. package/template/.claude/commands/commit-push-pr.md +23 -3
  311. package/template/.claude/hooks/project-kickoff.cjs +190 -1
  312. package/template/.claude/hooks/session-restore.cjs +102 -0
  313. package/template/.claude/hooks/session-save.cjs +164 -0
  314. package/template/.claude/settings.json +114 -50
  315. package/tests/README.md +263 -0
  316. package/tests/commands.test.js +163 -0
  317. package/tests/config.test.js +100 -0
  318. package/tests/marketplace.test.js +304 -0
  319. package/tests/migrations.test.js +187 -0
  320. package/tests/utils.test.js +167 -0
@@ -9,10 +9,12 @@
9
9
  * 功能:
10
10
  * - 检查项目是否已启动
11
11
  * - 如果未启动,提示 AI 进行项目规划
12
+ * - 生成规划文档后,自动创建任务到 backlog/
12
13
  */
13
14
 
14
15
  const fs = require('fs');
15
16
  const path = require('path');
17
+ const { execSync } = require('child_process');
16
18
 
17
19
  const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
18
20
  const TEMPLATES_DIR = path.join(PROJECT_DIR, '.claude/templates');
@@ -20,6 +22,15 @@ const KICKOFF_FILE = path.join(PROJECT_DIR, 'PROJECT_KICKOFF.md');
20
22
  const PLAN_FILE = path.join(PROJECT_DIR, 'TASK_PLAN.md');
21
23
  const PROPOSAL_FILE = path.join(PROJECT_DIR, 'PROJECT_PROPOSAL.md');
22
24
  const HINT_FILE = path.join(PROJECT_DIR, '.claude/.kickoff-hint.txt');
25
+ const TODOS_DIR = path.join(PROJECT_DIR, 'development/todos');
26
+ const BACKLOG_DIR = path.join(TODOS_DIR, 'backlog');
27
+
28
+ // 任务类型图标
29
+ const TASK_TYPES = {
30
+ research: { icon: '📊', dir: 'research', name: 'Research' },
31
+ develop: { icon: '💻', dir: 'develop', name: 'Develop' },
32
+ test: { icon: '🧪', dir: 'test', name: 'Test' }
33
+ };
23
34
 
24
35
  // 检查项目是否已启动
25
36
  function isProjectStarted() {
@@ -35,6 +46,169 @@ function isForceKickoff() {
35
46
  toolInput.includes('重新规划');
36
47
  }
37
48
 
49
+ // 检查任务规划文档是否存在
50
+ function hasTaskPlan() {
51
+ return fs.existsSync(PLAN_FILE);
52
+ }
53
+
54
+ // 解析 TASK_PLAN.md 中的任务
55
+ function parseTasksFromPlan() {
56
+ if (!fs.existsSync(PLAN_FILE)) {
57
+ return { research: [], develop: [], test: [] };
58
+ }
59
+
60
+ const content = fs.readFileSync(PLAN_FILE, 'utf-8');
61
+ const tasks = { research: [], develop: [], test: [] };
62
+
63
+ // 匹配任务项 - 支持 - [ ] 和 - [x] 格式
64
+ const taskRegex = /-\s*\[[ x]?\]\s*(?:\[([P0-3])\])?\s*(.+)/g;
65
+ let match;
66
+
67
+ // 当前任务类型上下文
68
+ let currentType = 'develop'; // 默认为开发任务
69
+
70
+ // 检测章节标题来确定任务类型
71
+ const lines = content.split('\n');
72
+ lines.forEach(line => {
73
+ const trimmed = line.trim();
74
+
75
+ // 检测章节标题
76
+ if (trimmed.includes('研究') || trimmed.includes('Research') || trimmed.includes('调研')) {
77
+ currentType = 'research';
78
+ } else if (trimmed.includes('开发') || trimmed.includes('Develop') || trimmed.includes('实现')) {
79
+ currentType = 'develop';
80
+ } else if (trimmed.includes('测试') || trimmed.includes('Test') || trimmed.includes('验证')) {
81
+ currentType = 'test';
82
+ }
83
+
84
+ // 匹配任务项
85
+ const taskMatch = trimmed.match(/^-\s*\[([ x])\]\s*(?:\[([P0-3])\])?\s*(.+)/);
86
+ if (taskMatch) {
87
+ const [, checked, priority, title] = taskMatch;
88
+ tasks[currentType].push({
89
+ title: title.trim(),
90
+ priority: priority || 'P2',
91
+ checked: checked === 'x'
92
+ });
93
+ }
94
+ });
95
+
96
+ return tasks;
97
+ }
98
+
99
+ // 创建任务文件
100
+ function createTaskFile(task, type, index) {
101
+ const typeConfig = TASK_TYPES[type];
102
+ const slug = titleToSlug(task.title);
103
+ const fileName = `${index}-${slug}.md`;
104
+ const filePath = path.join(BACKLOG_DIR, typeConfig.dir, fileName);
105
+ const now = new Date().toISOString().split('T')[0];
106
+
107
+ // 读取对应模板
108
+ const templatePath = path.join(__dirname, '../../../development/todos/_templates', `${typeConfig.dir}.md`);
109
+ let template = '';
110
+
111
+ if (fs.existsSync(templatePath)) {
112
+ template = fs.readFileSync(templatePath, 'utf-8');
113
+ } else {
114
+ // 简化模板
115
+ template = `# ${task.title}
116
+
117
+ > **类型**: ${typeConfig.icon} ${typeConfig.name} | ${getTypeDescription(type)}
118
+ > **状态**: 待规划
119
+ > **优先级**: ${task.priority}
120
+ > **创建时间**: ${now}
121
+ > **来源**: PROJECT_KICKOFF
122
+
123
+ ---
124
+
125
+ ## 📋 任务描述
126
+
127
+ ${task.title}
128
+
129
+ ---
130
+
131
+ ## 🎯 验收标准
132
+
133
+ - [ ] 验收标准 1
134
+ - [ ] 验收标准 2
135
+
136
+ ---
137
+
138
+ ## 📝 备注
139
+
140
+ 来自项目启动规划。
141
+ `;
142
+ }
143
+
144
+ // 创建目录
145
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
146
+
147
+ // 写入任务文件
148
+ fs.writeFileSync(filePath, template);
149
+
150
+ return fileName;
151
+ }
152
+
153
+ // 将标题转换为文件名友好的 slug
154
+ function titleToSlug(title) {
155
+ return title
156
+ .toLowerCase()
157
+ .replace(/[^\u4e00-\u9fa5a-z0-9]+/g, '-')
158
+ .replace(/^-+|-+$/g, '')
159
+ .substring(0, 50);
160
+ }
161
+
162
+ // 获取任务类型描述
163
+ function getTypeDescription(type) {
164
+ const descriptions = {
165
+ research: '调研/设计/探索',
166
+ develop: '实现/编码/重构',
167
+ test: '测试/验证/QA'
168
+ };
169
+ return descriptions[type] || '';
170
+ }
171
+
172
+ // 从规划创建任务到 backlog
173
+ function createTasksFromPlan() {
174
+ const tasks = parseTasksFromPlan();
175
+ let createdCount = 0;
176
+
177
+ // 确保目录存在
178
+ Object.values(TASK_TYPES).forEach(type => {
179
+ fs.mkdirSync(path.join(BACKLOG_DIR, type.dir), { recursive: true });
180
+ });
181
+
182
+ // 创建各类任务
183
+ Object.entries(tasks).forEach(([type, taskList]) => {
184
+ taskList.forEach((task, index) => {
185
+ if (!task.checked) { // 跳过已完成任务
186
+ const fileName = createTaskFile(task, type, index + 1);
187
+ createdCount++;
188
+ console.log(` ✅ 创建 ${type} 任务: ${fileName}`);
189
+ }
190
+ });
191
+ });
192
+
193
+ return createdCount;
194
+ }
195
+
196
+ // 刷新任务索引
197
+ function refreshTaskIndex() {
198
+ const todoManagerPath = path.join(PROJECT_DIR, '.claude/hooks/todo-manager.cjs');
199
+ if (fs.existsSync(todoManagerPath)) {
200
+ try {
201
+ execSync(`node "${todoManagerPath}" --force`, {
202
+ cwd: PROJECT_DIR,
203
+ stdio: 'pipe'
204
+ });
205
+ console.log(' ✅ 任务索引已更新');
206
+ } catch (e) {
207
+ // 忽略错误
208
+ }
209
+ }
210
+ }
211
+
38
212
  // 生成启动提示
39
213
  function generateKickoffHint() {
40
214
  const now = new Date().toISOString().split('T')[0];
@@ -83,7 +257,8 @@ function generateKickoffHint() {
83
257
  ✅ 生成 PROJECT_KICKOFF.md
84
258
  ✅ 生成 TASK_PLAN.md
85
259
  ✅ 生成 PROJECT_PROPOSAL.md
86
- 等待你的确认后开始执行
260
+ 🆕 自动创建任务到 development/todos/backlog/
261
+ ✅ 🆕 刷新任务索引
87
262
 
88
263
  ═══════════════════════════════════════════════════════════════════════
89
264
 
@@ -100,6 +275,20 @@ function main() {
100
275
  process.exit(0);
101
276
  }
102
277
 
278
+ // 如果已经有任务规划,自动创建任务
279
+ if (hasTaskPlan()) {
280
+ console.log('📋 检测到 TASK_PLAN.md,正在创建任务...');
281
+
282
+ const createdCount = createTasksFromPlan();
283
+
284
+ if (createdCount > 0) {
285
+ console.log(`✅ 已创建 ${createdCount} 个任务到 backlog/`);
286
+ refreshTaskIndex();
287
+ } else {
288
+ console.log('ℹ️ 所有任务已完成或为空');
289
+ }
290
+ }
291
+
103
292
  // 生成提示文件
104
293
  const hint = generateKickoffHint();
105
294
  fs.mkdirSync(path.dirname(HINT_FILE), { recursive: true });
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Session Restore Hook - Restore conversation context from file
4
+ *
5
+ * Provides context continuity across sessions
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
12
+ const SESSIONS_DIR = path.join(PROJECT_DIR, '.claude', 'sessions');
13
+ const MEMORY_FILE = path.join(PROJECT_DIR, '.claude', 'MEMORY.md');
14
+
15
+ /**
16
+ * Get latest session
17
+ */
18
+ function getLatestSession() {
19
+ if (!fs.existsSync(SESSIONS_DIR)) {
20
+ return null;
21
+ }
22
+
23
+ const files = fs.readdirSync(SESSIONS_DIR)
24
+ .filter(f => f.startsWith('session_') && f.endsWith('.md'))
25
+ .sort()
26
+ .reverse();
27
+
28
+ if (files.length === 0) {
29
+ return null;
30
+ }
31
+
32
+ const latestFile = files[0];
33
+ const filepath = path.join(SESSIONS_DIR, latestFile);
34
+ const content = fs.readFileSync(filepath, 'utf-8');
35
+
36
+ return {
37
+ file: latestFile,
38
+ path: filepath,
39
+ content: content
40
+ };
41
+ }
42
+
43
+ /**
44
+ * Get recent memory entries
45
+ */
46
+ function getRecentMemory(days = 7) {
47
+ if (!fs.existsSync(MEMORY_FILE)) {
48
+ return '';
49
+ }
50
+
51
+ const content = fs.readFileSync(MEMORY_FILE, 'utf-8');
52
+ const entries = content.split('## ').slice(1, days + 1);
53
+
54
+ return entries.join('## ');
55
+ }
56
+
57
+ /**
58
+ * Format context summary for display
59
+ */
60
+ function formatContextSummary(latestSession, recentMemory) {
61
+ let summary = '';
62
+
63
+ if (latestSession) {
64
+ summary += `\n📁 Last Session: ${latestSession.file}\n`;
65
+ summary += ` Date: ${fs.statSync(latestSession.path).mtime.toLocaleString()}\n`;
66
+ }
67
+
68
+ const memoryEntries = recentMemory.split('\n').filter(l => l.trim()).length;
69
+ if (memoryEntries > 0) {
70
+ summary += `\n💾 Memory Entries: ${memoryEntries}\n`;
71
+ }
72
+
73
+ return summary;
74
+ }
75
+
76
+ // Main execution
77
+ if (require.main === module) {
78
+ const args = process.argv.slice(2);
79
+
80
+ if (args[0] === '--latest') {
81
+ const session = getLatestSession();
82
+ if (session) {
83
+ console.log(session.content);
84
+ } else {
85
+ console.log('No sessions found.');
86
+ }
87
+ } else if (args[0] === '--memory') {
88
+ const memory = getRecentMemory(parseInt(args[1]) || 7);
89
+ console.log('# Recent Memory\n');
90
+ console.log(memory);
91
+ } else if (args[0] === '--summary') {
92
+ const session = getLatestSession();
93
+ const memory = getRecentMemory();
94
+ console.log(formatContextSummary(session, memory));
95
+ } else {
96
+ console.log('Usage: node session-restore.cjs [--latest|--memory|--summary]');
97
+ }
98
+ }
99
+
100
+ exports.getLatestSession = getLatestSession;
101
+ exports.getRecentMemory = getRecentMemory;
102
+ exports.formatContextSummary = formatContextSummary;
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Session Save Hook - Save conversation context to file
4
+ *
5
+ * Triggered after each conversation turn
6
+ * Saves conversation history, context, and state
7
+ */
8
+
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+
12
+ const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
13
+ const SESSIONS_DIR = path.join(PROJECT_DIR, '.claude', 'sessions');
14
+ const MEMORY_FILE = path.join(PROJECT_DIR, '.claude', 'MEMORY.md');
15
+
16
+ // Ensure sessions directory exists
17
+ if (!fs.existsSync(SESSIONS_DIR)) {
18
+ fs.mkdirSync(SESSIONS_DIR, { recursive: true });
19
+ }
20
+
21
+ /**
22
+ * Generate session filename
23
+ */
24
+ function getSessionFilename() {
25
+ const now = new Date();
26
+ const date = now.toISOString().split('T')[0];
27
+ const time = now.toTimeString().split(' ')[0].replace(/:/g, '-');
28
+ return `session_${date}_${time}.md`;
29
+ }
30
+
31
+ /**
32
+ * Save session context
33
+ */
34
+ function saveSession(context) {
35
+ const filename = getSessionFilename();
36
+ const filepath = path.join(SESSIONS_DIR, filename);
37
+
38
+ const content = `# Session - ${new Date().toISOString()}
39
+
40
+ > Type: ${context.type || 'chat'}
41
+ > Model: ${context.model || 'unknown'}
42
+ > Duration: ${context.duration || 'unknown'}
43
+
44
+ ---
45
+
46
+ ## Summary
47
+
48
+ ${context.summary || 'No summary provided'}
49
+
50
+ ---
51
+
52
+ ## Context
53
+
54
+ \`\`\`json
55
+ ${JSON.stringify(context.metadata || {}, null, 2)}
56
+ \`\`\`
57
+
58
+ ---
59
+
60
+ ## Key Points
61
+
62
+ ${(context.keyPoints || []).map((p, i) => `${i + 1}. ${p}`).join('\n')}
63
+
64
+ ---
65
+
66
+ ## Artifacts
67
+
68
+ ${(context.artifacts || []).map(a => `- ${a}`).join('\n') || 'None'}
69
+
70
+ ---
71
+
72
+ ## Next Steps
73
+
74
+ ${context.nextSteps || 'None'}
75
+
76
+ ---
77
+
78
+ *Session saved at: ${new Date().toISOString()}*
79
+ `;
80
+
81
+ fs.writeFileSync(filepath, content, 'utf-8');
82
+
83
+ // Update sessions index
84
+ updateSessionsIndex();
85
+
86
+ return filename;
87
+ }
88
+
89
+ /**
90
+ * Update sessions index
91
+ */
92
+ function updateSessionsIndex() {
93
+ const files = fs.readdirSync(SESSIONS_DIR)
94
+ .filter(f => f.endsWith('.md'))
95
+ .sort()
96
+ .reverse();
97
+
98
+ const indexPath = path.join(SESSIONS_DIR, 'INDEX.md');
99
+
100
+ let content = `# Sessions Index
101
+
102
+ > Total sessions: ${files.length}
103
+ > Last updated: ${new Date().toISOString()}
104
+
105
+ ---
106
+
107
+ ## Recent Sessions
108
+
109
+ ${files.slice(0, 20).map(f => {
110
+ const filepath = path.join(SESSIONS_DIR, f);
111
+ const stat = fs.statSync(filepath);
112
+ return `- [${f}](${f}) - ${stat.mtime.toISOString()}`;
113
+ }).join('\n')}
114
+
115
+ ---
116
+ `;
117
+
118
+ fs.writeFileSync(indexPath, content, 'utf-8');
119
+ }
120
+
121
+ /**
122
+ * Update MEMORY.md with latest context
123
+ */
124
+ function updateMemory(context) {
125
+ const timestamp = new Date().toISOString();
126
+
127
+ let content = '';
128
+
129
+ if (fs.existsSync(MEMORY_FILE)) {
130
+ content = fs.readFileSync(MEMORY_FILE, 'utf-8');
131
+ }
132
+
133
+ // Check if we need to add a new entry
134
+ const newEntry = `\n## ${timestamp.split('T')[0]}\n\n${
135
+ context.summary || context.keyPoints?.join('\n') || 'No details'
136
+ }\n`;
137
+
138
+ // Keep only last 7 days
139
+ const entries = content.split('## ').slice(1, 8);
140
+ content = '# Memory\n\n<!-- Project memory updated by AI -->\n' +
141
+ '## ' + entries.join('## ') + newEntry;
142
+
143
+ fs.writeFileSync(MEMORY_FILE, content, 'utf-8');
144
+ }
145
+
146
+ // Main execution
147
+ if (require.main === module) {
148
+ const args = process.argv.slice(2);
149
+
150
+ if (args[0] === '--save' && args[1]) {
151
+ const contextData = JSON.parse(fs.readFileSync(args[1], 'utf-8'));
152
+ const filename = saveSession(contextData);
153
+ console.log(`✅ Session saved: ${filename}`);
154
+
155
+ if (contextData.addToMemory !== false) {
156
+ updateMemory(contextData);
157
+ console.log(`✅ Memory updated`);
158
+ }
159
+ }
160
+ }
161
+
162
+ exports.saveSession = saveSession;
163
+ exports.updateMemory = updateMemory;
164
+ exports.updateSessionsIndex = updateSessionsIndex;
@@ -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
+ }