@stephen-lord/docs 1.0.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 (1270) hide show
  1. package/dist/agent-skills/README.md +11 -0
  2. package/dist/agent-skills/README.zh.md +10 -0
  3. package/dist/agent-skills/glm-skills/ASR/LICENSE.txt +21 -0
  4. package/dist/agent-skills/glm-skills/ASR/SKILL.md +580 -0
  5. package/dist/agent-skills/glm-skills/ASR/scripts/asr.ts +27 -0
  6. package/dist/agent-skills/glm-skills/LLM/LICENSE.txt +21 -0
  7. package/dist/agent-skills/glm-skills/LLM/SKILL.md +856 -0
  8. package/dist/agent-skills/glm-skills/LLM/scripts/chat.ts +32 -0
  9. package/dist/agent-skills/glm-skills/TTS/LICENSE.txt +21 -0
  10. package/dist/agent-skills/glm-skills/TTS/SKILL.md +735 -0
  11. package/dist/agent-skills/glm-skills/TTS/tts.ts +25 -0
  12. package/dist/agent-skills/glm-skills/VLM/LICENSE.txt +21 -0
  13. package/dist/agent-skills/glm-skills/VLM/SKILL.md +588 -0
  14. package/dist/agent-skills/glm-skills/VLM/scripts/vlm.ts +57 -0
  15. package/dist/agent-skills/glm-skills/canvas-design/LICENSE.txt +202 -0
  16. package/dist/agent-skills/glm-skills/canvas-design/SKILL.md +130 -0
  17. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  18. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  19. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  20. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  21. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  22. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  23. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  24. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  25. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  26. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  27. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  28. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  29. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  30. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  31. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  32. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  33. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  34. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  35. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  36. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  37. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  38. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  39. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  40. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  41. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  42. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  43. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  44. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  45. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  46. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  47. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  48. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  49. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  50. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  51. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  52. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  53. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  54. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  55. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  56. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  57. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  58. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  59. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  60. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  61. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  62. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  63. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  64. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  65. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  66. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  67. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  68. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  69. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  70. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  71. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  72. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  73. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  74. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  75. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  76. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  77. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  78. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  79. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  80. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  81. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  82. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  83. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  84. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  85. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  86. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  87. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  88. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  89. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  90. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  91. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  92. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  93. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  94. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  95. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  96. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  97. package/dist/agent-skills/glm-skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  98. package/dist/agent-skills/glm-skills/document-skills/docx/LICENSE.txt +30 -0
  99. package/dist/agent-skills/glm-skills/document-skills/docx/SKILL.md +197 -0
  100. package/dist/agent-skills/glm-skills/document-skills/docx/docx-js.md +350 -0
  101. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  102. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  103. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  104. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  105. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  106. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  107. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  108. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  109. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  110. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  111. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  112. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  113. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  114. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  115. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  116. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  117. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  118. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  119. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  120. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  121. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  122. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  123. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  124. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  125. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  126. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  127. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  128. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  129. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  130. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  131. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  132. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  133. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  134. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  135. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  136. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  137. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  138. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  139. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  140. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
  141. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
  142. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
  143. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  144. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
  145. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
  146. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  147. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  148. package/dist/agent-skills/glm-skills/document-skills/docx/ooxml.md +610 -0
  149. package/dist/agent-skills/glm-skills/document-skills/docx/scripts/__init__.py +1 -0
  150. package/dist/agent-skills/glm-skills/document-skills/docx/scripts/document.py +1276 -0
  151. package/dist/agent-skills/glm-skills/document-skills/docx/scripts/templates/comments.xml +3 -0
  152. package/dist/agent-skills/glm-skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
  153. package/dist/agent-skills/glm-skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  154. package/dist/agent-skills/glm-skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
  155. package/dist/agent-skills/glm-skills/document-skills/docx/scripts/templates/people.xml +3 -0
  156. package/dist/agent-skills/glm-skills/document-skills/docx/scripts/utilities.py +374 -0
  157. package/dist/agent-skills/glm-skills/document-skills/pdf/LICENSE.txt +30 -0
  158. package/dist/agent-skills/glm-skills/document-skills/pdf/SKILL.md +294 -0
  159. package/dist/agent-skills/glm-skills/document-skills/pdf/forms.md +205 -0
  160. package/dist/agent-skills/glm-skills/document-skills/pdf/reference.md +612 -0
  161. package/dist/agent-skills/glm-skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
  162. package/dist/agent-skills/glm-skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  163. package/dist/agent-skills/glm-skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
  164. package/dist/agent-skills/glm-skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  165. package/dist/agent-skills/glm-skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
  166. package/dist/agent-skills/glm-skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
  167. package/dist/agent-skills/glm-skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
  168. package/dist/agent-skills/glm-skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  169. package/dist/agent-skills/glm-skills/document-skills/pptx/LICENSE.txt +30 -0
  170. package/dist/agent-skills/glm-skills/document-skills/pptx/SKILL.md +484 -0
  171. package/dist/agent-skills/glm-skills/document-skills/pptx/html2pptx.md +625 -0
  172. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  173. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  174. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  175. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  176. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  177. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  178. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  179. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  180. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  181. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  182. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  183. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  184. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  185. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  186. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  187. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  188. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  189. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  190. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  191. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  192. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  193. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  194. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  195. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  196. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  197. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  198. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  199. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  200. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  201. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  202. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  203. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  204. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  205. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  206. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  207. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  208. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  209. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  210. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  211. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
  212. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
  213. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
  214. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  215. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
  216. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  217. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  218. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  219. package/dist/agent-skills/glm-skills/document-skills/pptx/ooxml.md +427 -0
  220. package/dist/agent-skills/glm-skills/document-skills/pptx/scripts/html2pptx.js +979 -0
  221. package/dist/agent-skills/glm-skills/document-skills/pptx/scripts/inventory.py +1020 -0
  222. package/dist/agent-skills/glm-skills/document-skills/pptx/scripts/rearrange.py +231 -0
  223. package/dist/agent-skills/glm-skills/document-skills/pptx/scripts/replace.py +385 -0
  224. package/dist/agent-skills/glm-skills/document-skills/pptx/scripts/thumbnail.py +450 -0
  225. package/dist/agent-skills/glm-skills/document-skills/xlsx/LICENSE.txt +30 -0
  226. package/dist/agent-skills/glm-skills/document-skills/xlsx/SKILL.md +289 -0
  227. package/dist/agent-skills/glm-skills/document-skills/xlsx/recalc.py +178 -0
  228. package/dist/agent-skills/glm-skills/frontend-design/LICENSE +21 -0
  229. package/dist/agent-skills/glm-skills/frontend-design/OPTIMIZATION_SUMMARY.md +442 -0
  230. package/dist/agent-skills/glm-skills/frontend-design/README.md +287 -0
  231. package/dist/agent-skills/glm-skills/frontend-design/SKILL.md +981 -0
  232. package/dist/agent-skills/glm-skills/frontend-design/examples/css/components.css +842 -0
  233. package/dist/agent-skills/glm-skills/frontend-design/examples/css/tokens.css +525 -0
  234. package/dist/agent-skills/glm-skills/frontend-design/examples/typescript/design-tokens.ts +616 -0
  235. package/dist/agent-skills/glm-skills/frontend-design/examples/typescript/sample-components.tsx +685 -0
  236. package/dist/agent-skills/glm-skills/frontend-design/examples/typescript/theme-provider.tsx +399 -0
  237. package/dist/agent-skills/glm-skills/frontend-design/examples/typescript/utils.ts +354 -0
  238. package/dist/agent-skills/glm-skills/frontend-design/package.json +44 -0
  239. package/dist/agent-skills/glm-skills/frontend-design/templates/globals.css +385 -0
  240. package/dist/agent-skills/glm-skills/frontend-design/templates/tailwind.config.js +263 -0
  241. package/dist/agent-skills/glm-skills/image-generation/LICENSE.txt +21 -0
  242. package/dist/agent-skills/glm-skills/image-generation/SKILL.md +583 -0
  243. package/dist/agent-skills/glm-skills/image-generation/scripts/image-generation.ts +28 -0
  244. package/dist/agent-skills/glm-skills/video-generation/LICENSE.txt +21 -0
  245. package/dist/agent-skills/glm-skills/video-generation/SKILL.md +936 -0
  246. package/dist/agent-skills/glm-skills/video-generation/scripts/video.ts +104 -0
  247. package/dist/agent-skills/glm-skills/web-reader/LICENSE.txt +21 -0
  248. package/dist/agent-skills/glm-skills/web-reader/SKILL.md +1140 -0
  249. package/dist/agent-skills/glm-skills/web-reader/scripts/web-reader.ts +37 -0
  250. package/dist/agent-skills/glm-skills/web-search/LICENSE.txt +21 -0
  251. package/dist/agent-skills/glm-skills/web-search/SKILL.md +912 -0
  252. package/dist/agent-skills/glm-skills/web-search/scripts/web_search.ts +44 -0
  253. package/dist/agent-skills/openai-skills/docs/render_docx.py +274 -0
  254. package/dist/agent-skills/openai-skills/docs/skill.md +33 -0
  255. package/dist/agent-skills/openai-skills/pdfs/skill.md +29 -0
  256. package/dist/agent-skills/openai-skills/spreadsheets/artifact_tool_spreadsheet_formulas.md +531 -0
  257. package/dist/agent-skills/openai-skills/spreadsheets/artifact_tool_spreadsheets_api.md +1187 -0
  258. package/dist/agent-skills/openai-skills/spreadsheets/examples/create_basic_spreadsheet.py +102 -0
  259. package/dist/agent-skills/openai-skills/spreadsheets/examples/create_spreadsheet_with_styling.py +199 -0
  260. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/change_existing_charts.py +26 -0
  261. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/cite_cells.py +41 -0
  262. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/create_area_chart.py +53 -0
  263. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/create_bar_chart.py +66 -0
  264. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/create_doughnut_chart.py +57 -0
  265. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/create_line_chart.py +53 -0
  266. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/create_pie_chart.py +55 -0
  267. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/create_tables.py +51 -0
  268. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_cell_borders.py +111 -0
  269. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_cell_fills.py +69 -0
  270. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_cell_width_height.py +52 -0
  271. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_conditional_formatting.py +297 -0
  272. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_font_styles.py +80 -0
  273. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_merge_cells.py +43 -0
  274. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_number_formats.py +130 -0
  275. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_text_alignment.py +78 -0
  276. package/dist/agent-skills/openai-skills/spreadsheets/examples/features/set_wrap_text_styles.py +102 -0
  277. package/dist/agent-skills/openai-skills/spreadsheets/examples/read_existing_spreadsheet.py +90 -0
  278. package/dist/agent-skills/openai-skills/spreadsheets/examples/styling_spreadsheet.py +73 -0
  279. package/dist/agent-skills/openai-skills/spreadsheets/skill.md +135 -0
  280. package/dist/agent-skills/openai-skills/spreadsheets/spreadsheet.md +464 -0
  281. package/dist/anthropipc-official-skills/.claude-plugin/marketplace.json +45 -0
  282. package/dist/anthropipc-official-skills/README.md +94 -0
  283. package/dist/anthropipc-official-skills/THIRD_PARTY_NOTICES.md +405 -0
  284. package/dist/anthropipc-official-skills/skills/algorithmic-art/LICENSE.txt +202 -0
  285. package/dist/anthropipc-official-skills/skills/algorithmic-art/SKILL.md +405 -0
  286. package/dist/anthropipc-official-skills/skills/algorithmic-art/templates/generator_template.js +223 -0
  287. package/dist/anthropipc-official-skills/skills/algorithmic-art/templates/viewer.html +599 -0
  288. package/dist/anthropipc-official-skills/skills/brand-guidelines/LICENSE.txt +202 -0
  289. package/dist/anthropipc-official-skills/skills/brand-guidelines/SKILL.md +73 -0
  290. package/dist/anthropipc-official-skills/skills/canvas-design/LICENSE.txt +202 -0
  291. package/dist/anthropipc-official-skills/skills/canvas-design/SKILL.md +130 -0
  292. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  293. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  294. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  295. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  296. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  297. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  298. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  299. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  300. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  301. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  302. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  303. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  304. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  305. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  306. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  307. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  308. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  309. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  310. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  311. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  312. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  313. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  314. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  315. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  316. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  317. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  318. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  319. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  320. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  321. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  322. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  323. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  324. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  325. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  326. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  327. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  328. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  329. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  330. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  331. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  332. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  333. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  334. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  335. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  336. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  337. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  338. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  339. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  340. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  341. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  342. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  343. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  344. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  345. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  346. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  347. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  348. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  349. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  350. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  351. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  352. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  353. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  354. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  355. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  356. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  357. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  358. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  359. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  360. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  361. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  362. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  363. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  364. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  365. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  366. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  367. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  368. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  369. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  370. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  371. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  372. package/dist/anthropipc-official-skills/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  373. package/dist/anthropipc-official-skills/skills/doc-coauthoring/SKILL.md +375 -0
  374. package/dist/anthropipc-official-skills/skills/docx/LICENSE.txt +30 -0
  375. package/dist/anthropipc-official-skills/skills/docx/SKILL.md +197 -0
  376. package/dist/anthropipc-official-skills/skills/docx/docx-js.md +350 -0
  377. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  378. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  379. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  380. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  381. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  382. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  383. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  384. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  385. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  386. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  387. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  388. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  389. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  390. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  391. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  392. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  393. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  394. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  395. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  396. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  397. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  398. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  399. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  400. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  401. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  402. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  403. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  404. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  405. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  406. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  407. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  408. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  409. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  410. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  411. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  412. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  413. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  414. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  415. package/dist/anthropipc-official-skills/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  416. package/dist/anthropipc-official-skills/skills/docx/ooxml/scripts/pack.py +159 -0
  417. package/dist/anthropipc-official-skills/skills/docx/ooxml/scripts/unpack.py +29 -0
  418. package/dist/anthropipc-official-skills/skills/docx/ooxml/scripts/validate.py +69 -0
  419. package/dist/anthropipc-official-skills/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  420. package/dist/anthropipc-official-skills/skills/docx/ooxml/scripts/validation/base.py +951 -0
  421. package/dist/anthropipc-official-skills/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  422. package/dist/anthropipc-official-skills/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  423. package/dist/anthropipc-official-skills/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  424. package/dist/anthropipc-official-skills/skills/docx/ooxml.md +610 -0
  425. package/dist/anthropipc-official-skills/skills/docx/scripts/__init__.py +1 -0
  426. package/dist/anthropipc-official-skills/skills/docx/scripts/document.py +1276 -0
  427. package/dist/anthropipc-official-skills/skills/docx/scripts/templates/comments.xml +3 -0
  428. package/dist/anthropipc-official-skills/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  429. package/dist/anthropipc-official-skills/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  430. package/dist/anthropipc-official-skills/skills/docx/scripts/templates/commentsIds.xml +3 -0
  431. package/dist/anthropipc-official-skills/skills/docx/scripts/templates/people.xml +3 -0
  432. package/dist/anthropipc-official-skills/skills/docx/scripts/utilities.py +374 -0
  433. package/dist/anthropipc-official-skills/skills/frontend-design/LICENSE.txt +177 -0
  434. package/dist/anthropipc-official-skills/skills/frontend-design/SKILL.md +42 -0
  435. package/dist/anthropipc-official-skills/skills/internal-comms/LICENSE.txt +202 -0
  436. package/dist/anthropipc-official-skills/skills/internal-comms/SKILL.md +32 -0
  437. package/dist/anthropipc-official-skills/skills/internal-comms/examples/3p-updates.md +47 -0
  438. package/dist/anthropipc-official-skills/skills/internal-comms/examples/company-newsletter.md +65 -0
  439. package/dist/anthropipc-official-skills/skills/internal-comms/examples/faq-answers.md +30 -0
  440. package/dist/anthropipc-official-skills/skills/internal-comms/examples/general-comms.md +16 -0
  441. package/dist/anthropipc-official-skills/skills/mcp-builder/LICENSE.txt +202 -0
  442. package/dist/anthropipc-official-skills/skills/mcp-builder/SKILL.md +236 -0
  443. package/dist/anthropipc-official-skills/skills/mcp-builder/reference/evaluation.md +602 -0
  444. package/dist/anthropipc-official-skills/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  445. package/dist/anthropipc-official-skills/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  446. package/dist/anthropipc-official-skills/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  447. package/dist/anthropipc-official-skills/skills/mcp-builder/scripts/connections.py +151 -0
  448. package/dist/anthropipc-official-skills/skills/mcp-builder/scripts/evaluation.py +373 -0
  449. package/dist/anthropipc-official-skills/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  450. package/dist/anthropipc-official-skills/skills/mcp-builder/scripts/requirements.txt +2 -0
  451. package/dist/anthropipc-official-skills/skills/pdf/LICENSE.txt +30 -0
  452. package/dist/anthropipc-official-skills/skills/pdf/SKILL.md +294 -0
  453. package/dist/anthropipc-official-skills/skills/pdf/forms.md +205 -0
  454. package/dist/anthropipc-official-skills/skills/pdf/reference.md +612 -0
  455. package/dist/anthropipc-official-skills/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  456. package/dist/anthropipc-official-skills/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  457. package/dist/anthropipc-official-skills/skills/pdf/scripts/check_fillable_fields.py +12 -0
  458. package/dist/anthropipc-official-skills/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  459. package/dist/anthropipc-official-skills/skills/pdf/scripts/create_validation_image.py +41 -0
  460. package/dist/anthropipc-official-skills/skills/pdf/scripts/extract_form_field_info.py +152 -0
  461. package/dist/anthropipc-official-skills/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  462. package/dist/anthropipc-official-skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  463. package/dist/anthropipc-official-skills/skills/pptx/LICENSE.txt +30 -0
  464. package/dist/anthropipc-official-skills/skills/pptx/SKILL.md +484 -0
  465. package/dist/anthropipc-official-skills/skills/pptx/html2pptx.md +625 -0
  466. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  467. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  468. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  469. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  470. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  471. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  472. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  473. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  474. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  475. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  476. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  477. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  478. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  479. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  480. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  481. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  482. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  483. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  484. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  485. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  486. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  487. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  488. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  489. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  490. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  491. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  492. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  493. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  494. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  495. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  496. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  497. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  498. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  499. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  500. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  501. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  502. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  503. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  504. package/dist/anthropipc-official-skills/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  505. package/dist/anthropipc-official-skills/skills/pptx/ooxml/scripts/pack.py +159 -0
  506. package/dist/anthropipc-official-skills/skills/pptx/ooxml/scripts/unpack.py +29 -0
  507. package/dist/anthropipc-official-skills/skills/pptx/ooxml/scripts/validate.py +69 -0
  508. package/dist/anthropipc-official-skills/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  509. package/dist/anthropipc-official-skills/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  510. package/dist/anthropipc-official-skills/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  511. package/dist/anthropipc-official-skills/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  512. package/dist/anthropipc-official-skills/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  513. package/dist/anthropipc-official-skills/skills/pptx/ooxml.md +427 -0
  514. package/dist/anthropipc-official-skills/skills/pptx/scripts/html2pptx.js +979 -0
  515. package/dist/anthropipc-official-skills/skills/pptx/scripts/inventory.py +1020 -0
  516. package/dist/anthropipc-official-skills/skills/pptx/scripts/rearrange.py +231 -0
  517. package/dist/anthropipc-official-skills/skills/pptx/scripts/replace.py +385 -0
  518. package/dist/anthropipc-official-skills/skills/pptx/scripts/thumbnail.py +450 -0
  519. package/dist/anthropipc-official-skills/skills/skill-creator/LICENSE.txt +202 -0
  520. package/dist/anthropipc-official-skills/skills/skill-creator/SKILL.md +356 -0
  521. package/dist/anthropipc-official-skills/skills/skill-creator/references/output-patterns.md +82 -0
  522. package/dist/anthropipc-official-skills/skills/skill-creator/references/workflows.md +28 -0
  523. package/dist/anthropipc-official-skills/skills/skill-creator/scripts/init_skill.py +303 -0
  524. package/dist/anthropipc-official-skills/skills/skill-creator/scripts/package_skill.py +110 -0
  525. package/dist/anthropipc-official-skills/skills/skill-creator/scripts/quick_validate.py +95 -0
  526. package/dist/anthropipc-official-skills/skills/slack-gif-creator/LICENSE.txt +202 -0
  527. package/dist/anthropipc-official-skills/skills/slack-gif-creator/SKILL.md +254 -0
  528. package/dist/anthropipc-official-skills/skills/slack-gif-creator/core/easing.py +234 -0
  529. package/dist/anthropipc-official-skills/skills/slack-gif-creator/core/frame_composer.py +176 -0
  530. package/dist/anthropipc-official-skills/skills/slack-gif-creator/core/gif_builder.py +269 -0
  531. package/dist/anthropipc-official-skills/skills/slack-gif-creator/core/validators.py +136 -0
  532. package/dist/anthropipc-official-skills/skills/slack-gif-creator/requirements.txt +4 -0
  533. package/dist/anthropipc-official-skills/skills/theme-factory/LICENSE.txt +202 -0
  534. package/dist/anthropipc-official-skills/skills/theme-factory/SKILL.md +59 -0
  535. package/dist/anthropipc-official-skills/skills/theme-factory/theme-showcase.pdf +0 -0
  536. package/dist/anthropipc-official-skills/skills/theme-factory/themes/arctic-frost.md +19 -0
  537. package/dist/anthropipc-official-skills/skills/theme-factory/themes/botanical-garden.md +19 -0
  538. package/dist/anthropipc-official-skills/skills/theme-factory/themes/desert-rose.md +19 -0
  539. package/dist/anthropipc-official-skills/skills/theme-factory/themes/forest-canopy.md +19 -0
  540. package/dist/anthropipc-official-skills/skills/theme-factory/themes/golden-hour.md +19 -0
  541. package/dist/anthropipc-official-skills/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  542. package/dist/anthropipc-official-skills/skills/theme-factory/themes/modern-minimalist.md +19 -0
  543. package/dist/anthropipc-official-skills/skills/theme-factory/themes/ocean-depths.md +19 -0
  544. package/dist/anthropipc-official-skills/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  545. package/dist/anthropipc-official-skills/skills/theme-factory/themes/tech-innovation.md +19 -0
  546. package/dist/anthropipc-official-skills/skills/web-artifacts-builder/LICENSE.txt +202 -0
  547. package/dist/anthropipc-official-skills/skills/web-artifacts-builder/SKILL.md +74 -0
  548. package/dist/anthropipc-official-skills/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  549. package/dist/anthropipc-official-skills/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  550. package/dist/anthropipc-official-skills/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  551. package/dist/anthropipc-official-skills/skills/webapp-testing/LICENSE.txt +202 -0
  552. package/dist/anthropipc-official-skills/skills/webapp-testing/SKILL.md +96 -0
  553. package/dist/anthropipc-official-skills/skills/webapp-testing/examples/console_logging.py +35 -0
  554. package/dist/anthropipc-official-skills/skills/webapp-testing/examples/element_discovery.py +40 -0
  555. package/dist/anthropipc-official-skills/skills/webapp-testing/examples/static_html_automation.py +33 -0
  556. package/dist/anthropipc-official-skills/skills/webapp-testing/scripts/with_server.py +106 -0
  557. package/dist/anthropipc-official-skills/skills/xlsx/LICENSE.txt +30 -0
  558. package/dist/anthropipc-official-skills/skills/xlsx/SKILL.md +289 -0
  559. package/dist/anthropipc-official-skills/skills/xlsx/recalc.py +178 -0
  560. package/dist/anthropipc-official-skills/spec/agent-skills-spec.md +3 -0
  561. package/dist/anthropipc-official-skills/template/SKILL.md +6 -0
  562. package/dist/awesome-claude-skills/.claude-plugin/marketplace.json +180 -0
  563. package/dist/awesome-claude-skills/CONTRIBUTING.md +185 -0
  564. package/dist/awesome-claude-skills/README.md +355 -0
  565. package/dist/awesome-claude-skills/artifacts-builder/LICENSE.txt +202 -0
  566. package/dist/awesome-claude-skills/artifacts-builder/SKILL.md +74 -0
  567. package/dist/awesome-claude-skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  568. package/dist/awesome-claude-skills/artifacts-builder/scripts/init-artifact.sh +322 -0
  569. package/dist/awesome-claude-skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  570. package/dist/awesome-claude-skills/brand-guidelines/LICENSE.txt +202 -0
  571. package/dist/awesome-claude-skills/brand-guidelines/SKILL.md +73 -0
  572. package/dist/awesome-claude-skills/canvas-design/LICENSE.txt +202 -0
  573. package/dist/awesome-claude-skills/canvas-design/SKILL.md +130 -0
  574. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  575. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  576. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  577. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  578. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  579. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  580. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  581. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  582. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  583. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  584. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  585. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  586. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  587. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  588. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  589. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  590. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  591. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  592. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  593. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  594. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  595. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  596. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  597. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  598. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  599. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  600. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  601. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  602. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  603. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  604. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  605. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  606. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  607. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  608. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  609. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  610. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  611. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  612. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  613. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  614. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  615. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  616. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  617. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  618. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  619. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  620. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  621. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  622. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  623. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  624. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  625. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  626. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  627. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  628. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  629. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  630. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  631. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  632. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  633. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  634. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  635. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  636. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  637. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  638. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  639. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  640. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  641. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  642. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  643. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  644. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  645. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  646. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  647. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  648. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  649. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  650. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  651. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  652. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  653. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  654. package/dist/awesome-claude-skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  655. package/dist/awesome-claude-skills/changelog-generator/SKILL.md +104 -0
  656. package/dist/awesome-claude-skills/competitive-ads-extractor/SKILL.md +293 -0
  657. package/dist/awesome-claude-skills/connect/SKILL.md +156 -0
  658. package/dist/awesome-claude-skills/connect-apps/SKILL.md +80 -0
  659. package/dist/awesome-claude-skills/connect-apps-plugin/.claude-plugin/plugin.json +8 -0
  660. package/dist/awesome-claude-skills/connect-apps-plugin/README.md +47 -0
  661. package/dist/awesome-claude-skills/connect-apps-plugin/commands/setup.md +67 -0
  662. package/dist/awesome-claude-skills/content-research-writer/SKILL.md +538 -0
  663. package/dist/awesome-claude-skills/developer-growth-analysis/SKILL.md +322 -0
  664. package/dist/awesome-claude-skills/document-skills/docx/LICENSE.txt +30 -0
  665. package/dist/awesome-claude-skills/document-skills/docx/SKILL.md +197 -0
  666. package/dist/awesome-claude-skills/document-skills/docx/docx-js.md +350 -0
  667. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  668. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  669. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  670. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  671. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  672. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  673. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  674. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  675. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  676. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  677. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  678. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  679. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  680. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  681. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  682. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  683. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  684. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  685. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  686. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  687. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  688. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  689. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  690. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  691. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  692. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  693. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  694. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  695. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  696. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  697. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  698. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  699. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  700. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  701. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  702. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  703. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  704. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  705. package/dist/awesome-claude-skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  706. package/dist/awesome-claude-skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
  707. package/dist/awesome-claude-skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
  708. package/dist/awesome-claude-skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
  709. package/dist/awesome-claude-skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  710. package/dist/awesome-claude-skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
  711. package/dist/awesome-claude-skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
  712. package/dist/awesome-claude-skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  713. package/dist/awesome-claude-skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  714. package/dist/awesome-claude-skills/document-skills/docx/ooxml.md +610 -0
  715. package/dist/awesome-claude-skills/document-skills/docx/scripts/__init__.py +1 -0
  716. package/dist/awesome-claude-skills/document-skills/docx/scripts/document.py +1276 -0
  717. package/dist/awesome-claude-skills/document-skills/docx/scripts/templates/comments.xml +3 -0
  718. package/dist/awesome-claude-skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
  719. package/dist/awesome-claude-skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  720. package/dist/awesome-claude-skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
  721. package/dist/awesome-claude-skills/document-skills/docx/scripts/templates/people.xml +3 -0
  722. package/dist/awesome-claude-skills/document-skills/docx/scripts/utilities.py +374 -0
  723. package/dist/awesome-claude-skills/document-skills/pdf/LICENSE.txt +30 -0
  724. package/dist/awesome-claude-skills/document-skills/pdf/SKILL.md +294 -0
  725. package/dist/awesome-claude-skills/document-skills/pdf/forms.md +205 -0
  726. package/dist/awesome-claude-skills/document-skills/pdf/reference.md +612 -0
  727. package/dist/awesome-claude-skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
  728. package/dist/awesome-claude-skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  729. package/dist/awesome-claude-skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
  730. package/dist/awesome-claude-skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  731. package/dist/awesome-claude-skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
  732. package/dist/awesome-claude-skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
  733. package/dist/awesome-claude-skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
  734. package/dist/awesome-claude-skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  735. package/dist/awesome-claude-skills/document-skills/pptx/LICENSE.txt +30 -0
  736. package/dist/awesome-claude-skills/document-skills/pptx/SKILL.md +484 -0
  737. package/dist/awesome-claude-skills/document-skills/pptx/html2pptx.md +625 -0
  738. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  739. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  740. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  741. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  742. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  743. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  744. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  745. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  746. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  747. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  748. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  749. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  750. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  751. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  752. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  753. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  754. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  755. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  756. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  757. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  758. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  759. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  760. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  761. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  762. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  763. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  764. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  765. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  766. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  767. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  768. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  769. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  770. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  771. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  772. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  773. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  774. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  775. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  776. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  777. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
  778. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
  779. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
  780. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  781. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
  782. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  783. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  784. package/dist/awesome-claude-skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  785. package/dist/awesome-claude-skills/document-skills/pptx/ooxml.md +427 -0
  786. package/dist/awesome-claude-skills/document-skills/pptx/scripts/html2pptx.js +979 -0
  787. package/dist/awesome-claude-skills/document-skills/pptx/scripts/inventory.py +1020 -0
  788. package/dist/awesome-claude-skills/document-skills/pptx/scripts/rearrange.py +231 -0
  789. package/dist/awesome-claude-skills/document-skills/pptx/scripts/replace.py +385 -0
  790. package/dist/awesome-claude-skills/document-skills/pptx/scripts/thumbnail.py +450 -0
  791. package/dist/awesome-claude-skills/document-skills/xlsx/LICENSE.txt +30 -0
  792. package/dist/awesome-claude-skills/document-skills/xlsx/SKILL.md +289 -0
  793. package/dist/awesome-claude-skills/document-skills/xlsx/recalc.py +178 -0
  794. package/dist/awesome-claude-skills/domain-name-brainstormer/SKILL.md +212 -0
  795. package/dist/awesome-claude-skills/file-organizer/SKILL.md +433 -0
  796. package/dist/awesome-claude-skills/image-enhancer/SKILL.md +99 -0
  797. package/dist/awesome-claude-skills/internal-comms/LICENSE.txt +202 -0
  798. package/dist/awesome-claude-skills/internal-comms/SKILL.md +32 -0
  799. package/dist/awesome-claude-skills/internal-comms/examples/3p-updates.md +47 -0
  800. package/dist/awesome-claude-skills/internal-comms/examples/company-newsletter.md +65 -0
  801. package/dist/awesome-claude-skills/internal-comms/examples/faq-answers.md +30 -0
  802. package/dist/awesome-claude-skills/internal-comms/examples/general-comms.md +16 -0
  803. package/dist/awesome-claude-skills/invoice-organizer/SKILL.md +446 -0
  804. package/dist/awesome-claude-skills/langsmith-fetch/SKILL.md +485 -0
  805. package/dist/awesome-claude-skills/lead-research-assistant/SKILL.md +199 -0
  806. package/dist/awesome-claude-skills/mcp-builder/LICENSE.txt +202 -0
  807. package/dist/awesome-claude-skills/mcp-builder/SKILL.md +328 -0
  808. package/dist/awesome-claude-skills/mcp-builder/reference/evaluation.md +602 -0
  809. package/dist/awesome-claude-skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  810. package/dist/awesome-claude-skills/mcp-builder/reference/node_mcp_server.md +916 -0
  811. package/dist/awesome-claude-skills/mcp-builder/reference/python_mcp_server.md +752 -0
  812. package/dist/awesome-claude-skills/mcp-builder/scripts/connections.py +151 -0
  813. package/dist/awesome-claude-skills/mcp-builder/scripts/evaluation.py +373 -0
  814. package/dist/awesome-claude-skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  815. package/dist/awesome-claude-skills/mcp-builder/scripts/requirements.txt +2 -0
  816. package/dist/awesome-claude-skills/meeting-insights-analyzer/SKILL.md +327 -0
  817. package/dist/awesome-claude-skills/raffle-winner-picker/SKILL.md +159 -0
  818. package/dist/awesome-claude-skills/skill-creator/LICENSE.txt +202 -0
  819. package/dist/awesome-claude-skills/skill-creator/SKILL.md +209 -0
  820. package/dist/awesome-claude-skills/skill-creator/scripts/init_skill.py +303 -0
  821. package/dist/awesome-claude-skills/skill-creator/scripts/package_skill.py +110 -0
  822. package/dist/awesome-claude-skills/skill-creator/scripts/quick_validate.py +65 -0
  823. package/dist/awesome-claude-skills/skill-share/SKILL.md +80 -0
  824. package/dist/awesome-claude-skills/slack-gif-creator/LICENSE.txt +202 -0
  825. package/dist/awesome-claude-skills/slack-gif-creator/SKILL.md +646 -0
  826. package/dist/awesome-claude-skills/slack-gif-creator/core/color_palettes.py +302 -0
  827. package/dist/awesome-claude-skills/slack-gif-creator/core/easing.py +230 -0
  828. package/dist/awesome-claude-skills/slack-gif-creator/core/frame_composer.py +469 -0
  829. package/dist/awesome-claude-skills/slack-gif-creator/core/gif_builder.py +246 -0
  830. package/dist/awesome-claude-skills/slack-gif-creator/core/typography.py +357 -0
  831. package/dist/awesome-claude-skills/slack-gif-creator/core/validators.py +264 -0
  832. package/dist/awesome-claude-skills/slack-gif-creator/core/visual_effects.py +494 -0
  833. package/dist/awesome-claude-skills/slack-gif-creator/requirements.txt +4 -0
  834. package/dist/awesome-claude-skills/slack-gif-creator/templates/bounce.py +106 -0
  835. package/dist/awesome-claude-skills/slack-gif-creator/templates/explode.py +331 -0
  836. package/dist/awesome-claude-skills/slack-gif-creator/templates/fade.py +329 -0
  837. package/dist/awesome-claude-skills/slack-gif-creator/templates/flip.py +291 -0
  838. package/dist/awesome-claude-skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
  839. package/dist/awesome-claude-skills/slack-gif-creator/templates/morph.py +329 -0
  840. package/dist/awesome-claude-skills/slack-gif-creator/templates/move.py +293 -0
  841. package/dist/awesome-claude-skills/slack-gif-creator/templates/pulse.py +268 -0
  842. package/dist/awesome-claude-skills/slack-gif-creator/templates/shake.py +127 -0
  843. package/dist/awesome-claude-skills/slack-gif-creator/templates/slide.py +291 -0
  844. package/dist/awesome-claude-skills/slack-gif-creator/templates/spin.py +269 -0
  845. package/dist/awesome-claude-skills/slack-gif-creator/templates/wiggle.py +300 -0
  846. package/dist/awesome-claude-skills/slack-gif-creator/templates/zoom.py +312 -0
  847. package/dist/awesome-claude-skills/tailored-resume-generator/SKILL.md +345 -0
  848. package/dist/awesome-claude-skills/template-skill/SKILL.md +6 -0
  849. package/dist/awesome-claude-skills/theme-factory/LICENSE.txt +202 -0
  850. package/dist/awesome-claude-skills/theme-factory/SKILL.md +59 -0
  851. package/dist/awesome-claude-skills/theme-factory/theme-showcase.pdf +0 -0
  852. package/dist/awesome-claude-skills/theme-factory/themes/arctic-frost.md +19 -0
  853. package/dist/awesome-claude-skills/theme-factory/themes/botanical-garden.md +19 -0
  854. package/dist/awesome-claude-skills/theme-factory/themes/desert-rose.md +19 -0
  855. package/dist/awesome-claude-skills/theme-factory/themes/forest-canopy.md +19 -0
  856. package/dist/awesome-claude-skills/theme-factory/themes/golden-hour.md +19 -0
  857. package/dist/awesome-claude-skills/theme-factory/themes/midnight-galaxy.md +19 -0
  858. package/dist/awesome-claude-skills/theme-factory/themes/modern-minimalist.md +19 -0
  859. package/dist/awesome-claude-skills/theme-factory/themes/ocean-depths.md +19 -0
  860. package/dist/awesome-claude-skills/theme-factory/themes/sunset-boulevard.md +19 -0
  861. package/dist/awesome-claude-skills/theme-factory/themes/tech-innovation.md +19 -0
  862. package/dist/awesome-claude-skills/video-downloader/SKILL.md +99 -0
  863. package/dist/awesome-claude-skills/video-downloader/scripts/download_video.py +145 -0
  864. package/dist/awesome-claude-skills/webapp-testing/LICENSE.txt +202 -0
  865. package/dist/awesome-claude-skills/webapp-testing/SKILL.md +96 -0
  866. package/dist/awesome-claude-skills/webapp-testing/examples/console_logging.py +35 -0
  867. package/dist/awesome-claude-skills/webapp-testing/examples/element_discovery.py +40 -0
  868. package/dist/awesome-claude-skills/webapp-testing/examples/static_html_automation.py +33 -0
  869. package/dist/awesome-claude-skills/webapp-testing/scripts/with_server.py +106 -0
  870. package/dist/claude-code-settings/.claude-plugin/marketplace.json +75 -0
  871. package/dist/claude-code-settings/.claude-plugin/plugin.json +22 -0
  872. package/dist/claude-code-settings/.github/copilot-instructions.md +96 -0
  873. package/dist/claude-code-settings/.mcp.json +12 -0
  874. package/dist/claude-code-settings/LICENSE +21 -0
  875. package/dist/claude-code-settings/README.md +478 -0
  876. package/dist/claude-code-settings/agents/command-creator.md +86 -0
  877. package/dist/claude-code-settings/agents/deep-reflector.md +115 -0
  878. package/dist/claude-code-settings/agents/github-issue-fixer.md +79 -0
  879. package/dist/claude-code-settings/agents/insight-documenter.md +104 -0
  880. package/dist/claude-code-settings/agents/instruction-reflector.md +81 -0
  881. package/dist/claude-code-settings/agents/pr-reviewer.md +104 -0
  882. package/dist/claude-code-settings/agents/ui-engineer.md +64 -0
  883. package/dist/claude-code-settings/commands/cc/create-command.md +96 -0
  884. package/dist/claude-code-settings/commands/eureka.md +103 -0
  885. package/dist/claude-code-settings/commands/gh/fix-issue.md +41 -0
  886. package/dist/claude-code-settings/commands/gh/review-pr.md +57 -0
  887. package/dist/claude-code-settings/commands/reflection-harder.md +177 -0
  888. package/dist/claude-code-settings/commands/reflection.md +65 -0
  889. package/dist/claude-code-settings/commands/think-harder.md +54 -0
  890. package/dist/claude-code-settings/commands/think-ultra.md +125 -0
  891. package/dist/claude-code-settings/commands/translate.md +30 -0
  892. package/dist/claude-code-settings/config.json +3 -0
  893. package/dist/claude-code-settings/guidances/github-copilot.md +70 -0
  894. package/dist/claude-code-settings/guidances/litellm_config.yaml +38 -0
  895. package/dist/claude-code-settings/guidances/llm-gateway-litellm.md +109 -0
  896. package/dist/claude-code-settings/plugins/autonomous-skill/.claude-plugin/plugin.json +19 -0
  897. package/dist/claude-code-settings/plugins/autonomous-skill/skills/autonomous-skill/SKILL.md +264 -0
  898. package/dist/claude-code-settings/plugins/autonomous-skill/skills/autonomous-skill/scripts/run-session.sh +455 -0
  899. package/dist/claude-code-settings/plugins/autonomous-skill/skills/autonomous-skill/templates/executor-prompt.md +274 -0
  900. package/dist/claude-code-settings/plugins/autonomous-skill/skills/autonomous-skill/templates/initializer-prompt.md +199 -0
  901. package/dist/claude-code-settings/plugins/autonomous-skill/skills/autonomous-skill/templates/task-list-template.md +107 -0
  902. package/dist/claude-code-settings/plugins/codex-skill/.claude-plugin/plugin.json +19 -0
  903. package/dist/claude-code-settings/plugins/codex-skill/skills/codex-skill/SKILL.md +430 -0
  904. package/dist/claude-code-settings/plugins/kiro-skill/.claude-plugin/plugin.json +21 -0
  905. package/dist/claude-code-settings/plugins/kiro-skill/commands/kiro/design.md +81 -0
  906. package/dist/claude-code-settings/plugins/kiro-skill/commands/kiro/execute.md +82 -0
  907. package/dist/claude-code-settings/plugins/kiro-skill/commands/kiro/spec.md +400 -0
  908. package/dist/claude-code-settings/plugins/kiro-skill/commands/kiro/task.md +113 -0
  909. package/dist/claude-code-settings/plugins/kiro-skill/commands/kiro/vibe.md +63 -0
  910. package/dist/claude-code-settings/plugins/kiro-skill/skills/kiro-skill/SKILL.md +496 -0
  911. package/dist/claude-code-settings/plugins/kiro-skill/skills/kiro-skill/helpers/kiro-identity.md +77 -0
  912. package/dist/claude-code-settings/plugins/kiro-skill/skills/kiro-skill/helpers/workflow-diagrams.md +154 -0
  913. package/dist/claude-code-settings/plugins/nanobanana-skill/.claude-plugin/plugin.json +19 -0
  914. package/dist/claude-code-settings/plugins/nanobanana-skill/skills/nanobanana-skill/SKILL.md +136 -0
  915. package/dist/claude-code-settings/plugins/nanobanana-skill/skills/nanobanana-skill/nanobanana.py +153 -0
  916. package/dist/claude-code-settings/plugins/nanobanana-skill/skills/nanobanana-skill/requirements.txt +4 -0
  917. package/dist/claude-code-settings/plugins/spec-kit-skill/.claude-plugin/plugin.json +20 -0
  918. package/dist/claude-code-settings/plugins/spec-kit-skill/skills/spec-kit-skill/SKILL.md +900 -0
  919. package/dist/claude-code-settings/plugins/spec-kit-skill/skills/spec-kit-skill/helpers/detection-logic.md +460 -0
  920. package/dist/claude-code-settings/plugins/spec-kit-skill/skills/spec-kit-skill/scripts/detect-phase.sh +263 -0
  921. package/dist/claude-code-settings/plugins/youtube-transcribe-skill/.claude-plugin/plugin.json +13 -0
  922. package/dist/claude-code-settings/plugins/youtube-transcribe-skill/skills/youtube-transcribe-skill/SKILL.md +116 -0
  923. package/dist/claude-code-settings/settings/README.md +52 -0
  924. package/dist/claude-code-settings/settings/azure-foundry-settings.json +32 -0
  925. package/dist/claude-code-settings/settings/azure-settings.json +33 -0
  926. package/dist/claude-code-settings/settings/copilot-settings.json +33 -0
  927. package/dist/claude-code-settings/settings/deepseek-settings.json +31 -0
  928. package/dist/claude-code-settings/settings/litellm-settings.json +33 -0
  929. package/dist/claude-code-settings/settings/minimax.json +30 -0
  930. package/dist/claude-code-settings/settings/openrouter-settings.json +33 -0
  931. package/dist/claude-code-settings/settings/qwen-settings.json +30 -0
  932. package/dist/claude-code-settings/settings/siliconflow-settings.json +10 -0
  933. package/dist/claude-code-settings/settings/vertex-settings.json +11 -0
  934. package/dist/claude-code-settings/settings.json +33 -0
  935. package/dist/claude-code-settings/skills/autonomous-skill +1 -0
  936. package/dist/claude-code-settings/skills/codex-skill +1 -0
  937. package/dist/claude-code-settings/skills/kiro-skill +1 -0
  938. package/dist/claude-code-settings/skills/nanobanana-skill +1 -0
  939. package/dist/claude-code-settings/skills/spec-kit-skill +1 -0
  940. package/dist/claude-code-settings/skills/youtube-transcribe-skill +1 -0
  941. package/dist/claude-code-settings/status-line.sh +203 -0
  942. package/dist/claude-code-skills/About.md +565 -0
  943. package/dist/claude-code-skills/Detail.md +339 -0
  944. package/dist/claude-code-skills/agent-skills-architecture.png +0 -0
  945. package/dist/claude-code-skills/agent-skills-context-window.png +0 -0
  946. package/dist/ui-ux-pro-max-skill/.agent/workflows/ui-ux-pro-max.md +288 -0
  947. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/SKILL.md +386 -0
  948. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  949. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
  950. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -0
  951. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
  952. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
  953. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  954. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  955. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  956. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  957. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  958. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  959. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  960. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  961. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  962. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  963. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  964. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  965. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  966. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  967. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/styles.csv +59 -0
  968. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
  969. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  970. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  971. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  972. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/scripts/core.py +258 -0
  973. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1066 -0
  974. package/dist/ui-ux-pro-max-skill/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -0
  975. package/dist/ui-ux-pro-max-skill/.claude-plugin/marketplace.json +35 -0
  976. package/dist/ui-ux-pro-max-skill/.codebuddy/commands/ui-ux-pro-max.md +236 -0
  977. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/SKILL.md +351 -0
  978. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/charts.csv +26 -0
  979. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/colors.csv +97 -0
  980. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/icons.csv +101 -0
  981. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/landing.csv +31 -0
  982. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/products.csv +97 -0
  983. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  984. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  985. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  986. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  987. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  988. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  989. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  990. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  991. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  992. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  993. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  994. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  995. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/styles.csv +59 -0
  996. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/typography.csv +58 -0
  997. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/ui-reasoning.csv +41 -0
  998. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  999. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/scripts/core.py +245 -0
  1000. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1001. package/dist/ui-ux-pro-max-skill/.codex/skills/ui-ux-pro-max/scripts/search.py +106 -0
  1002. package/dist/ui-ux-pro-max-skill/.cursor/commands/ui-ux-pro-max.md +288 -0
  1003. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/SKILL.md +351 -0
  1004. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1005. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1006. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1007. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1008. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/products.csv +97 -0
  1009. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1010. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  1011. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1012. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1013. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1014. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1015. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1016. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1017. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1018. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1019. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1020. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1021. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1022. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1023. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1024. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  1025. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1026. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  1027. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/scripts/core.py +257 -0
  1028. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1029. package/dist/ui-ux-pro-max-skill/.gemini/skills/ui-ux-pro-max/scripts/search.py +106 -0
  1030. package/dist/ui-ux-pro-max-skill/.github/prompts/ui-ux-pro-max.prompt.md +263 -0
  1031. package/dist/ui-ux-pro-max-skill/.kiro/steering/ui-ux-pro-max.md +288 -0
  1032. package/dist/ui-ux-pro-max-skill/.opencode/skills/ui-ux-pro-max/SKILL.md +253 -0
  1033. package/dist/ui-ux-pro-max-skill/.qoder/rules/charts.md +31 -0
  1034. package/dist/ui-ux-pro-max-skill/.qoder/rules/color.md +102 -0
  1035. package/dist/ui-ux-pro-max-skill/.qoder/rules/flutter.md +58 -0
  1036. package/dist/ui-ux-pro-max-skill/.qoder/rules/html-tailwind.md +62 -0
  1037. package/dist/ui-ux-pro-max-skill/.qoder/rules/icons.md +106 -0
  1038. package/dist/ui-ux-pro-max-skill/.qoder/rules/loading.md +36 -0
  1039. package/dist/ui-ux-pro-max-skill/.qoder/rules/nextjs.md +59 -0
  1040. package/dist/ui-ux-pro-max-skill/.qoder/rules/nuxt-ui.md +57 -0
  1041. package/dist/ui-ux-pro-max-skill/.qoder/rules/nuxtjs.md +65 -0
  1042. package/dist/ui-ux-pro-max-skill/.qoder/rules/products.md +102 -0
  1043. package/dist/ui-ux-pro-max-skill/.qoder/rules/prompts.md +29 -0
  1044. package/dist/ui-ux-pro-max-skill/.qoder/rules/react-native.md +58 -0
  1045. package/dist/ui-ux-pro-max-skill/.qoder/rules/react.md +60 -0
  1046. package/dist/ui-ux-pro-max-skill/.qoder/rules/shadcn.md +66 -0
  1047. package/dist/ui-ux-pro-max-skill/.qoder/rules/styles.md +64 -0
  1048. package/dist/ui-ux-pro-max-skill/.qoder/rules/svelte.md +60 -0
  1049. package/dist/ui-ux-pro-max-skill/.qoder/rules/swiftui.md +57 -0
  1050. package/dist/ui-ux-pro-max-skill/.qoder/rules/typography.md +63 -0
  1051. package/dist/ui-ux-pro-max-skill/.qoder/rules/ui-ux-pro-max.md +231 -0
  1052. package/dist/ui-ux-pro-max-skill/.qoder/rules/ux-guideline.md +106 -0
  1053. package/dist/ui-ux-pro-max-skill/.qoder/rules/vue.md +57 -0
  1054. package/dist/ui-ux-pro-max-skill/.qoder/skills/ui-ux-pro-max.md +288 -0
  1055. package/dist/ui-ux-pro-max-skill/.roo/commands/ui-ux-pro-max.md +227 -0
  1056. package/dist/ui-ux-pro-max-skill/.roo/rules/ui-ux-pro-max.md +288 -0
  1057. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  1058. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  1059. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  1060. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  1061. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/products.csv +97 -0
  1062. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  1063. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  1064. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1065. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1066. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  1067. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1068. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1069. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1070. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1071. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1072. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1073. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1074. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1075. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1076. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  1077. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  1078. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  1079. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1080. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  1081. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  1082. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1083. package/dist/ui-ux-pro-max-skill/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  1084. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/SKILL.md +351 -0
  1085. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1086. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1087. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1088. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1089. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/products.csv +97 -0
  1090. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1091. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1092. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1093. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1094. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1095. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1096. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1097. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1098. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1099. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1100. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1101. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1102. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1103. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1104. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/ui-reasoning.csv +41 -0
  1105. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1106. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/scripts/core.py +245 -0
  1107. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1108. package/dist/ui-ux-pro-max-skill/.trae/skills/ui-ux-pro-max/scripts/search.py +106 -0
  1109. package/dist/ui-ux-pro-max-skill/.windsurf/workflows/ui-ux-pro-max.md +288 -0
  1110. package/dist/ui-ux-pro-max-skill/CLAUDE.md +72 -0
  1111. package/dist/ui-ux-pro-max-skill/LICENSE +21 -0
  1112. package/dist/ui-ux-pro-max-skill/README.md +403 -0
  1113. package/dist/ui-ux-pro-max-skill/cli/README.md +62 -0
  1114. package/dist/ui-ux-pro-max-skill/cli/assets/.agent/workflows/ui-ux-pro-max.md +288 -0
  1115. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/SKILL.md +386 -0
  1116. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1117. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1118. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1119. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1120. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
  1121. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1122. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  1123. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1124. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1125. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  1126. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1127. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1128. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1129. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1130. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1131. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1132. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1133. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1134. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1135. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1136. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1137. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  1138. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1139. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  1140. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/scripts/core.py +258 -0
  1141. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1142. package/dist/ui-ux-pro-max-skill/cli/assets/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -0
  1143. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/SKILL.md +351 -0
  1144. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1145. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1146. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1147. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1148. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/products.csv +97 -0
  1149. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1150. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1151. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1152. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1153. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1154. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1155. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1156. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1157. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1158. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1159. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1160. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1161. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1162. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1163. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/ui-reasoning.csv +41 -0
  1164. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1165. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/scripts/core.py +245 -0
  1166. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1167. package/dist/ui-ux-pro-max-skill/cli/assets/.codex/skills/ui-ux-pro-max/scripts/search.py +106 -0
  1168. package/dist/ui-ux-pro-max-skill/cli/assets/.cursor/commands/ui-ux-pro-max.md +288 -0
  1169. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/SKILL.md +351 -0
  1170. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1171. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1172. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1173. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1174. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/products.csv +97 -0
  1175. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1176. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  1177. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1178. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1179. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1180. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1181. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1182. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1183. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1184. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1185. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1186. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1187. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1188. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1189. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1190. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  1191. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1192. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  1193. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/scripts/core.py +257 -0
  1194. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1195. package/dist/ui-ux-pro-max-skill/cli/assets/.gemini/skills/ui-ux-pro-max/scripts/search.py +106 -0
  1196. package/dist/ui-ux-pro-max-skill/cli/assets/.github/prompts/ui-ux-pro-max.prompt.md +263 -0
  1197. package/dist/ui-ux-pro-max-skill/cli/assets/.kiro/steering/ui-ux-pro-max.md +288 -0
  1198. package/dist/ui-ux-pro-max-skill/cli/assets/.opencode/skills/ui-ux-pro-max/SKILL.md +253 -0
  1199. package/dist/ui-ux-pro-max-skill/cli/assets/.qoder/rules/ui-ux-pro-max.md +231 -0
  1200. package/dist/ui-ux-pro-max-skill/cli/assets/.qoder/skills/ui-ux-pro-max.md +288 -0
  1201. package/dist/ui-ux-pro-max-skill/cli/assets/.roo/commands/ui-ux-pro-max.md +227 -0
  1202. package/dist/ui-ux-pro-max-skill/cli/assets/.roo/rules/ui-ux-pro-max.md +288 -0
  1203. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  1204. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  1205. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  1206. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  1207. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/products.csv +97 -0
  1208. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  1209. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  1210. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1211. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1212. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  1213. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1214. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1215. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1216. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1217. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1218. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1219. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1220. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1221. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1222. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  1223. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  1224. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  1225. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1226. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  1227. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  1228. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1229. package/dist/ui-ux-pro-max-skill/cli/assets/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  1230. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/SKILL.md +351 -0
  1231. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1232. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1233. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1234. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1235. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/products.csv +97 -0
  1236. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1237. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1238. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1239. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1240. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1241. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1242. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1243. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1244. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1245. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1246. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1247. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1248. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1249. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1250. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/ui-reasoning.csv +41 -0
  1251. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1252. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/scripts/core.py +245 -0
  1253. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/scripts/design_system.py +1066 -0
  1254. package/dist/ui-ux-pro-max-skill/cli/assets/.trae/skills/ui-ux-pro-max/scripts/search.py +106 -0
  1255. package/dist/ui-ux-pro-max-skill/cli/assets/.windsurf/workflows/ui-ux-pro-max.md +288 -0
  1256. package/dist/ui-ux-pro-max-skill/cli/bun.lock +77 -0
  1257. package/dist/ui-ux-pro-max-skill/cli/package-lock.json +370 -0
  1258. package/dist/ui-ux-pro-max-skill/cli/package.json +48 -0
  1259. package/dist/ui-ux-pro-max-skill/cli/src/commands/init.ts +174 -0
  1260. package/dist/ui-ux-pro-max-skill/cli/src/commands/update.ts +36 -0
  1261. package/dist/ui-ux-pro-max-skill/cli/src/commands/versions.ts +42 -0
  1262. package/dist/ui-ux-pro-max-skill/cli/src/index.ts +56 -0
  1263. package/dist/ui-ux-pro-max-skill/cli/src/types/index.ts +38 -0
  1264. package/dist/ui-ux-pro-max-skill/cli/src/utils/detect.ts +90 -0
  1265. package/dist/ui-ux-pro-max-skill/cli/src/utils/extract.ts +149 -0
  1266. package/dist/ui-ux-pro-max-skill/cli/src/utils/github.ts +104 -0
  1267. package/dist/ui-ux-pro-max-skill/cli/src/utils/logger.ts +11 -0
  1268. package/dist/ui-ux-pro-max-skill/cli/tsconfig.json +17 -0
  1269. package/dist/ui-ux-pro-max-skill/screenshots/website.png +0 -0
  1270. package/package.json +23 -0
@@ -0,0 +1,1276 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Library for working with Word documents: comments, tracked changes, and editing.
4
+
5
+ Usage:
6
+ from skills.docx.scripts.document import Document
7
+
8
+ # Initialize
9
+ doc = Document('workspace/unpacked')
10
+ doc = Document('workspace/unpacked', author="John Doe", initials="JD")
11
+
12
+ # Find nodes
13
+ node = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "1"})
14
+ node = doc["word/document.xml"].get_node(tag="w:p", line_number=10)
15
+
16
+ # Add comments
17
+ doc.add_comment(start=node, end=node, text="Comment text")
18
+ doc.reply_to_comment(parent_comment_id=0, text="Reply text")
19
+
20
+ # Suggest tracked changes
21
+ doc["word/document.xml"].suggest_deletion(node) # Delete content
22
+ doc["word/document.xml"].revert_insertion(ins_node) # Reject insertion
23
+ doc["word/document.xml"].revert_deletion(del_node) # Reject deletion
24
+
25
+ # Save
26
+ doc.save()
27
+ """
28
+
29
+ import html
30
+ import random
31
+ import shutil
32
+ import tempfile
33
+ from datetime import datetime, timezone
34
+ from pathlib import Path
35
+
36
+ from defusedxml import minidom
37
+ from ooxml.scripts.pack import pack_document
38
+ from ooxml.scripts.validation.docx import DOCXSchemaValidator
39
+ from ooxml.scripts.validation.redlining import RedliningValidator
40
+
41
+ from .utilities import XMLEditor
42
+
43
+ # Path to template files
44
+ TEMPLATE_DIR = Path(__file__).parent / "templates"
45
+
46
+
47
+ class DocxXMLEditor(XMLEditor):
48
+ """XMLEditor that automatically applies RSID, author, and date to new elements.
49
+
50
+ Automatically adds attributes to elements that support them when inserting new content:
51
+ - w:rsidR, w:rsidRDefault, w:rsidP (for w:p and w:r elements)
52
+ - w:author and w:date (for w:ins, w:del, w:comment elements)
53
+ - w:id (for w:ins and w:del elements)
54
+
55
+ Attributes:
56
+ dom (defusedxml.minidom.Document): The DOM document for direct manipulation
57
+ """
58
+
59
+ def __init__(
60
+ self, xml_path, rsid: str, author: str = "Claude", initials: str = "C"
61
+ ):
62
+ """Initialize with required RSID and optional author.
63
+
64
+ Args:
65
+ xml_path: Path to XML file to edit
66
+ rsid: RSID to automatically apply to new elements
67
+ author: Author name for tracked changes and comments (default: "Claude")
68
+ initials: Author initials (default: "C")
69
+ """
70
+ super().__init__(xml_path)
71
+ self.rsid = rsid
72
+ self.author = author
73
+ self.initials = initials
74
+
75
+ def _get_next_change_id(self):
76
+ """Get the next available change ID by checking all tracked change elements."""
77
+ max_id = -1
78
+ for tag in ("w:ins", "w:del"):
79
+ elements = self.dom.getElementsByTagName(tag)
80
+ for elem in elements:
81
+ change_id = elem.getAttribute("w:id")
82
+ if change_id:
83
+ try:
84
+ max_id = max(max_id, int(change_id))
85
+ except ValueError:
86
+ pass
87
+ return max_id + 1
88
+
89
+ def _ensure_w16du_namespace(self):
90
+ """Ensure w16du namespace is declared on the root element."""
91
+ root = self.dom.documentElement
92
+ if not root.hasAttribute("xmlns:w16du"): # type: ignore
93
+ root.setAttribute( # type: ignore
94
+ "xmlns:w16du",
95
+ "http://schemas.microsoft.com/office/word/2023/wordml/word16du",
96
+ )
97
+
98
+ def _ensure_w16cex_namespace(self):
99
+ """Ensure w16cex namespace is declared on the root element."""
100
+ root = self.dom.documentElement
101
+ if not root.hasAttribute("xmlns:w16cex"): # type: ignore
102
+ root.setAttribute( # type: ignore
103
+ "xmlns:w16cex",
104
+ "http://schemas.microsoft.com/office/word/2018/wordml/cex",
105
+ )
106
+
107
+ def _ensure_w14_namespace(self):
108
+ """Ensure w14 namespace is declared on the root element."""
109
+ root = self.dom.documentElement
110
+ if not root.hasAttribute("xmlns:w14"): # type: ignore
111
+ root.setAttribute( # type: ignore
112
+ "xmlns:w14",
113
+ "http://schemas.microsoft.com/office/word/2010/wordml",
114
+ )
115
+
116
+ def _inject_attributes_to_nodes(self, nodes):
117
+ """Inject RSID, author, and date attributes into DOM nodes where applicable.
118
+
119
+ Adds attributes to elements that support them:
120
+ - w:r: gets w:rsidR (or w:rsidDel if inside w:del)
121
+ - w:p: gets w:rsidR, w:rsidRDefault, w:rsidP, w14:paraId, w14:textId
122
+ - w:t: gets xml:space="preserve" if text has leading/trailing whitespace
123
+ - w:ins, w:del: get w:id, w:author, w:date, w16du:dateUtc
124
+ - w:comment: gets w:author, w:date, w:initials
125
+ - w16cex:commentExtensible: gets w16cex:dateUtc
126
+
127
+ Args:
128
+ nodes: List of DOM nodes to process
129
+ """
130
+ from datetime import datetime, timezone
131
+
132
+ timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
133
+
134
+ def is_inside_deletion(elem):
135
+ """Check if element is inside a w:del element."""
136
+ parent = elem.parentNode
137
+ while parent:
138
+ if parent.nodeType == parent.ELEMENT_NODE and parent.tagName == "w:del":
139
+ return True
140
+ parent = parent.parentNode
141
+ return False
142
+
143
+ def add_rsid_to_p(elem):
144
+ if not elem.hasAttribute("w:rsidR"):
145
+ elem.setAttribute("w:rsidR", self.rsid)
146
+ if not elem.hasAttribute("w:rsidRDefault"):
147
+ elem.setAttribute("w:rsidRDefault", self.rsid)
148
+ if not elem.hasAttribute("w:rsidP"):
149
+ elem.setAttribute("w:rsidP", self.rsid)
150
+ # Add w14:paraId and w14:textId if not present
151
+ if not elem.hasAttribute("w14:paraId"):
152
+ self._ensure_w14_namespace()
153
+ elem.setAttribute("w14:paraId", _generate_hex_id())
154
+ if not elem.hasAttribute("w14:textId"):
155
+ self._ensure_w14_namespace()
156
+ elem.setAttribute("w14:textId", _generate_hex_id())
157
+
158
+ def add_rsid_to_r(elem):
159
+ # Use w:rsidDel for <w:r> inside <w:del>, otherwise w:rsidR
160
+ if is_inside_deletion(elem):
161
+ if not elem.hasAttribute("w:rsidDel"):
162
+ elem.setAttribute("w:rsidDel", self.rsid)
163
+ else:
164
+ if not elem.hasAttribute("w:rsidR"):
165
+ elem.setAttribute("w:rsidR", self.rsid)
166
+
167
+ def add_tracked_change_attrs(elem):
168
+ # Auto-assign w:id if not present
169
+ if not elem.hasAttribute("w:id"):
170
+ elem.setAttribute("w:id", str(self._get_next_change_id()))
171
+ if not elem.hasAttribute("w:author"):
172
+ elem.setAttribute("w:author", self.author)
173
+ if not elem.hasAttribute("w:date"):
174
+ elem.setAttribute("w:date", timestamp)
175
+ # Add w16du:dateUtc for tracked changes (same as w:date since we generate UTC timestamps)
176
+ if elem.tagName in ("w:ins", "w:del") and not elem.hasAttribute(
177
+ "w16du:dateUtc"
178
+ ):
179
+ self._ensure_w16du_namespace()
180
+ elem.setAttribute("w16du:dateUtc", timestamp)
181
+
182
+ def add_comment_attrs(elem):
183
+ if not elem.hasAttribute("w:author"):
184
+ elem.setAttribute("w:author", self.author)
185
+ if not elem.hasAttribute("w:date"):
186
+ elem.setAttribute("w:date", timestamp)
187
+ if not elem.hasAttribute("w:initials"):
188
+ elem.setAttribute("w:initials", self.initials)
189
+
190
+ def add_comment_extensible_date(elem):
191
+ # Add w16cex:dateUtc for comment extensible elements
192
+ if not elem.hasAttribute("w16cex:dateUtc"):
193
+ self._ensure_w16cex_namespace()
194
+ elem.setAttribute("w16cex:dateUtc", timestamp)
195
+
196
+ def add_xml_space_to_t(elem):
197
+ # Add xml:space="preserve" to w:t if text has leading/trailing whitespace
198
+ if (
199
+ elem.firstChild
200
+ and elem.firstChild.nodeType == elem.firstChild.TEXT_NODE
201
+ ):
202
+ text = elem.firstChild.data
203
+ if text and (text[0].isspace() or text[-1].isspace()):
204
+ if not elem.hasAttribute("xml:space"):
205
+ elem.setAttribute("xml:space", "preserve")
206
+
207
+ for node in nodes:
208
+ if node.nodeType != node.ELEMENT_NODE:
209
+ continue
210
+
211
+ # Handle the node itself
212
+ if node.tagName == "w:p":
213
+ add_rsid_to_p(node)
214
+ elif node.tagName == "w:r":
215
+ add_rsid_to_r(node)
216
+ elif node.tagName == "w:t":
217
+ add_xml_space_to_t(node)
218
+ elif node.tagName in ("w:ins", "w:del"):
219
+ add_tracked_change_attrs(node)
220
+ elif node.tagName == "w:comment":
221
+ add_comment_attrs(node)
222
+ elif node.tagName == "w16cex:commentExtensible":
223
+ add_comment_extensible_date(node)
224
+
225
+ # Process descendants (getElementsByTagName doesn't return the element itself)
226
+ for elem in node.getElementsByTagName("w:p"):
227
+ add_rsid_to_p(elem)
228
+ for elem in node.getElementsByTagName("w:r"):
229
+ add_rsid_to_r(elem)
230
+ for elem in node.getElementsByTagName("w:t"):
231
+ add_xml_space_to_t(elem)
232
+ for tag in ("w:ins", "w:del"):
233
+ for elem in node.getElementsByTagName(tag):
234
+ add_tracked_change_attrs(elem)
235
+ for elem in node.getElementsByTagName("w:comment"):
236
+ add_comment_attrs(elem)
237
+ for elem in node.getElementsByTagName("w16cex:commentExtensible"):
238
+ add_comment_extensible_date(elem)
239
+
240
+ def replace_node(self, elem, new_content):
241
+ """Replace node with automatic attribute injection."""
242
+ nodes = super().replace_node(elem, new_content)
243
+ self._inject_attributes_to_nodes(nodes)
244
+ return nodes
245
+
246
+ def insert_after(self, elem, xml_content):
247
+ """Insert after with automatic attribute injection."""
248
+ nodes = super().insert_after(elem, xml_content)
249
+ self._inject_attributes_to_nodes(nodes)
250
+ return nodes
251
+
252
+ def insert_before(self, elem, xml_content):
253
+ """Insert before with automatic attribute injection."""
254
+ nodes = super().insert_before(elem, xml_content)
255
+ self._inject_attributes_to_nodes(nodes)
256
+ return nodes
257
+
258
+ def append_to(self, elem, xml_content):
259
+ """Append to with automatic attribute injection."""
260
+ nodes = super().append_to(elem, xml_content)
261
+ self._inject_attributes_to_nodes(nodes)
262
+ return nodes
263
+
264
+ def revert_insertion(self, elem):
265
+ """Reject an insertion by wrapping its content in a deletion.
266
+
267
+ Wraps all runs inside w:ins in w:del, converting w:t to w:delText.
268
+ Can process a single w:ins element or a container element with multiple w:ins.
269
+
270
+ Args:
271
+ elem: Element to process (w:ins, w:p, w:body, etc.)
272
+
273
+ Returns:
274
+ list: List containing the processed element(s)
275
+
276
+ Raises:
277
+ ValueError: If the element contains no w:ins elements
278
+
279
+ Example:
280
+ # Reject a single insertion
281
+ ins = doc["word/document.xml"].get_node(tag="w:ins", attrs={"w:id": "5"})
282
+ doc["word/document.xml"].revert_insertion(ins)
283
+
284
+ # Reject all insertions in a paragraph
285
+ para = doc["word/document.xml"].get_node(tag="w:p", line_number=42)
286
+ doc["word/document.xml"].revert_insertion(para)
287
+ """
288
+ # Collect insertions
289
+ ins_elements = []
290
+ if elem.tagName == "w:ins":
291
+ ins_elements.append(elem)
292
+ else:
293
+ ins_elements.extend(elem.getElementsByTagName("w:ins"))
294
+
295
+ # Validate that there are insertions to reject
296
+ if not ins_elements:
297
+ raise ValueError(
298
+ f"revert_insertion requires w:ins elements. "
299
+ f"The provided element <{elem.tagName}> contains no insertions. "
300
+ )
301
+
302
+ # Process all insertions - wrap all children in w:del
303
+ for ins_elem in ins_elements:
304
+ runs = list(ins_elem.getElementsByTagName("w:r"))
305
+ if not runs:
306
+ continue
307
+
308
+ # Create deletion wrapper
309
+ del_wrapper = self.dom.createElement("w:del")
310
+
311
+ # Process each run
312
+ for run in runs:
313
+ # Convert w:t → w:delText and w:rsidR → w:rsidDel
314
+ if run.hasAttribute("w:rsidR"):
315
+ run.setAttribute("w:rsidDel", run.getAttribute("w:rsidR"))
316
+ run.removeAttribute("w:rsidR")
317
+ elif not run.hasAttribute("w:rsidDel"):
318
+ run.setAttribute("w:rsidDel", self.rsid)
319
+
320
+ for t_elem in list(run.getElementsByTagName("w:t")):
321
+ del_text = self.dom.createElement("w:delText")
322
+ # Copy ALL child nodes (not just firstChild) to handle entities
323
+ while t_elem.firstChild:
324
+ del_text.appendChild(t_elem.firstChild)
325
+ for i in range(t_elem.attributes.length):
326
+ attr = t_elem.attributes.item(i)
327
+ del_text.setAttribute(attr.name, attr.value)
328
+ t_elem.parentNode.replaceChild(del_text, t_elem)
329
+
330
+ # Move all children from ins to del wrapper
331
+ while ins_elem.firstChild:
332
+ del_wrapper.appendChild(ins_elem.firstChild)
333
+
334
+ # Add del wrapper back to ins
335
+ ins_elem.appendChild(del_wrapper)
336
+
337
+ # Inject attributes to the deletion wrapper
338
+ self._inject_attributes_to_nodes([del_wrapper])
339
+
340
+ return [elem]
341
+
342
+ def revert_deletion(self, elem):
343
+ """Reject a deletion by re-inserting the deleted content.
344
+
345
+ Creates w:ins elements after each w:del, copying deleted content and
346
+ converting w:delText back to w:t.
347
+ Can process a single w:del element or a container element with multiple w:del.
348
+
349
+ Args:
350
+ elem: Element to process (w:del, w:p, w:body, etc.)
351
+
352
+ Returns:
353
+ list: If elem is w:del, returns [elem, new_ins]. Otherwise returns [elem].
354
+
355
+ Raises:
356
+ ValueError: If the element contains no w:del elements
357
+
358
+ Example:
359
+ # Reject a single deletion - returns [w:del, w:ins]
360
+ del_elem = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "3"})
361
+ nodes = doc["word/document.xml"].revert_deletion(del_elem)
362
+
363
+ # Reject all deletions in a paragraph - returns [para]
364
+ para = doc["word/document.xml"].get_node(tag="w:p", line_number=42)
365
+ nodes = doc["word/document.xml"].revert_deletion(para)
366
+ """
367
+ # Collect deletions FIRST - before we modify the DOM
368
+ del_elements = []
369
+ is_single_del = elem.tagName == "w:del"
370
+
371
+ if is_single_del:
372
+ del_elements.append(elem)
373
+ else:
374
+ del_elements.extend(elem.getElementsByTagName("w:del"))
375
+
376
+ # Validate that there are deletions to reject
377
+ if not del_elements:
378
+ raise ValueError(
379
+ f"revert_deletion requires w:del elements. "
380
+ f"The provided element <{elem.tagName}> contains no deletions. "
381
+ )
382
+
383
+ # Track created insertion (only relevant if elem is a single w:del)
384
+ created_insertion = None
385
+
386
+ # Process all deletions - create insertions that copy the deleted content
387
+ for del_elem in del_elements:
388
+ # Clone the deleted runs and convert them to insertions
389
+ runs = list(del_elem.getElementsByTagName("w:r"))
390
+ if not runs:
391
+ continue
392
+
393
+ # Create insertion wrapper
394
+ ins_elem = self.dom.createElement("w:ins")
395
+
396
+ for run in runs:
397
+ # Clone the run
398
+ new_run = run.cloneNode(True)
399
+
400
+ # Convert w:delText → w:t
401
+ for del_text in list(new_run.getElementsByTagName("w:delText")):
402
+ t_elem = self.dom.createElement("w:t")
403
+ # Copy ALL child nodes (not just firstChild) to handle entities
404
+ while del_text.firstChild:
405
+ t_elem.appendChild(del_text.firstChild)
406
+ for i in range(del_text.attributes.length):
407
+ attr = del_text.attributes.item(i)
408
+ t_elem.setAttribute(attr.name, attr.value)
409
+ del_text.parentNode.replaceChild(t_elem, del_text)
410
+
411
+ # Update run attributes: w:rsidDel → w:rsidR
412
+ if new_run.hasAttribute("w:rsidDel"):
413
+ new_run.setAttribute("w:rsidR", new_run.getAttribute("w:rsidDel"))
414
+ new_run.removeAttribute("w:rsidDel")
415
+ elif not new_run.hasAttribute("w:rsidR"):
416
+ new_run.setAttribute("w:rsidR", self.rsid)
417
+
418
+ ins_elem.appendChild(new_run)
419
+
420
+ # Insert the new insertion after the deletion
421
+ nodes = self.insert_after(del_elem, ins_elem.toxml())
422
+
423
+ # If processing a single w:del, track the created insertion
424
+ if is_single_del and nodes:
425
+ created_insertion = nodes[0]
426
+
427
+ # Return based on input type
428
+ if is_single_del and created_insertion:
429
+ return [elem, created_insertion]
430
+ else:
431
+ return [elem]
432
+
433
+ @staticmethod
434
+ def suggest_paragraph(xml_content: str) -> str:
435
+ """Transform paragraph XML to add tracked change wrapping for insertion.
436
+
437
+ Wraps runs in <w:ins> and adds <w:ins/> to w:rPr in w:pPr for numbered lists.
438
+
439
+ Args:
440
+ xml_content: XML string containing a <w:p> element
441
+
442
+ Returns:
443
+ str: Transformed XML with tracked change wrapping
444
+ """
445
+ wrapper = f'<root xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{xml_content}</root>'
446
+ doc = minidom.parseString(wrapper)
447
+ para = doc.getElementsByTagName("w:p")[0]
448
+
449
+ # Ensure w:pPr exists
450
+ pPr_list = para.getElementsByTagName("w:pPr")
451
+ if not pPr_list:
452
+ pPr = doc.createElement("w:pPr")
453
+ para.insertBefore(
454
+ pPr, para.firstChild
455
+ ) if para.firstChild else para.appendChild(pPr)
456
+ else:
457
+ pPr = pPr_list[0]
458
+
459
+ # Ensure w:rPr exists in w:pPr
460
+ rPr_list = pPr.getElementsByTagName("w:rPr")
461
+ if not rPr_list:
462
+ rPr = doc.createElement("w:rPr")
463
+ pPr.appendChild(rPr)
464
+ else:
465
+ rPr = rPr_list[0]
466
+
467
+ # Add <w:ins/> to w:rPr
468
+ ins_marker = doc.createElement("w:ins")
469
+ rPr.insertBefore(
470
+ ins_marker, rPr.firstChild
471
+ ) if rPr.firstChild else rPr.appendChild(ins_marker)
472
+
473
+ # Wrap all non-pPr children in <w:ins>
474
+ ins_wrapper = doc.createElement("w:ins")
475
+ for child in [c for c in para.childNodes if c.nodeName != "w:pPr"]:
476
+ para.removeChild(child)
477
+ ins_wrapper.appendChild(child)
478
+ para.appendChild(ins_wrapper)
479
+
480
+ return para.toxml()
481
+
482
+ def suggest_deletion(self, elem):
483
+ """Mark a w:r or w:p element as deleted with tracked changes (in-place DOM manipulation).
484
+
485
+ For w:r: wraps in <w:del>, converts <w:t> to <w:delText>, preserves w:rPr
486
+ For w:p (regular): wraps content in <w:del>, converts <w:t> to <w:delText>
487
+ For w:p (numbered list): adds <w:del/> to w:rPr in w:pPr, wraps content in <w:del>
488
+
489
+ Args:
490
+ elem: A w:r or w:p DOM element without existing tracked changes
491
+
492
+ Returns:
493
+ Element: The modified element
494
+
495
+ Raises:
496
+ ValueError: If element has existing tracked changes or invalid structure
497
+ """
498
+ if elem.nodeName == "w:r":
499
+ # Check for existing w:delText
500
+ if elem.getElementsByTagName("w:delText"):
501
+ raise ValueError("w:r element already contains w:delText")
502
+
503
+ # Convert w:t → w:delText
504
+ for t_elem in list(elem.getElementsByTagName("w:t")):
505
+ del_text = self.dom.createElement("w:delText")
506
+ # Copy ALL child nodes (not just firstChild) to handle entities
507
+ while t_elem.firstChild:
508
+ del_text.appendChild(t_elem.firstChild)
509
+ # Preserve attributes like xml:space
510
+ for i in range(t_elem.attributes.length):
511
+ attr = t_elem.attributes.item(i)
512
+ del_text.setAttribute(attr.name, attr.value)
513
+ t_elem.parentNode.replaceChild(del_text, t_elem)
514
+
515
+ # Update run attributes: w:rsidR → w:rsidDel
516
+ if elem.hasAttribute("w:rsidR"):
517
+ elem.setAttribute("w:rsidDel", elem.getAttribute("w:rsidR"))
518
+ elem.removeAttribute("w:rsidR")
519
+ elif not elem.hasAttribute("w:rsidDel"):
520
+ elem.setAttribute("w:rsidDel", self.rsid)
521
+
522
+ # Wrap in w:del
523
+ del_wrapper = self.dom.createElement("w:del")
524
+ parent = elem.parentNode
525
+ parent.insertBefore(del_wrapper, elem)
526
+ parent.removeChild(elem)
527
+ del_wrapper.appendChild(elem)
528
+
529
+ # Inject attributes to the deletion wrapper
530
+ self._inject_attributes_to_nodes([del_wrapper])
531
+
532
+ return del_wrapper
533
+
534
+ elif elem.nodeName == "w:p":
535
+ # Check for existing tracked changes
536
+ if elem.getElementsByTagName("w:ins") or elem.getElementsByTagName("w:del"):
537
+ raise ValueError("w:p element already contains tracked changes")
538
+
539
+ # Check if it's a numbered list item
540
+ pPr_list = elem.getElementsByTagName("w:pPr")
541
+ is_numbered = pPr_list and pPr_list[0].getElementsByTagName("w:numPr")
542
+
543
+ if is_numbered:
544
+ # Add <w:del/> to w:rPr in w:pPr
545
+ pPr = pPr_list[0]
546
+ rPr_list = pPr.getElementsByTagName("w:rPr")
547
+
548
+ if not rPr_list:
549
+ rPr = self.dom.createElement("w:rPr")
550
+ pPr.appendChild(rPr)
551
+ else:
552
+ rPr = rPr_list[0]
553
+
554
+ # Add <w:del/> marker
555
+ del_marker = self.dom.createElement("w:del")
556
+ rPr.insertBefore(
557
+ del_marker, rPr.firstChild
558
+ ) if rPr.firstChild else rPr.appendChild(del_marker)
559
+
560
+ # Convert w:t → w:delText in all runs
561
+ for t_elem in list(elem.getElementsByTagName("w:t")):
562
+ del_text = self.dom.createElement("w:delText")
563
+ # Copy ALL child nodes (not just firstChild) to handle entities
564
+ while t_elem.firstChild:
565
+ del_text.appendChild(t_elem.firstChild)
566
+ # Preserve attributes like xml:space
567
+ for i in range(t_elem.attributes.length):
568
+ attr = t_elem.attributes.item(i)
569
+ del_text.setAttribute(attr.name, attr.value)
570
+ t_elem.parentNode.replaceChild(del_text, t_elem)
571
+
572
+ # Update run attributes: w:rsidR → w:rsidDel
573
+ for run in elem.getElementsByTagName("w:r"):
574
+ if run.hasAttribute("w:rsidR"):
575
+ run.setAttribute("w:rsidDel", run.getAttribute("w:rsidR"))
576
+ run.removeAttribute("w:rsidR")
577
+ elif not run.hasAttribute("w:rsidDel"):
578
+ run.setAttribute("w:rsidDel", self.rsid)
579
+
580
+ # Wrap all non-pPr children in <w:del>
581
+ del_wrapper = self.dom.createElement("w:del")
582
+ for child in [c for c in elem.childNodes if c.nodeName != "w:pPr"]:
583
+ elem.removeChild(child)
584
+ del_wrapper.appendChild(child)
585
+ elem.appendChild(del_wrapper)
586
+
587
+ # Inject attributes to the deletion wrapper
588
+ self._inject_attributes_to_nodes([del_wrapper])
589
+
590
+ return elem
591
+
592
+ else:
593
+ raise ValueError(f"Element must be w:r or w:p, got {elem.nodeName}")
594
+
595
+
596
+ def _generate_hex_id() -> str:
597
+ """Generate random 8-character hex ID for para/durable IDs.
598
+
599
+ Values are constrained to be less than 0x7FFFFFFF per OOXML spec:
600
+ - paraId must be < 0x80000000
601
+ - durableId must be < 0x7FFFFFFF
602
+ We use the stricter constraint (0x7FFFFFFF) for both.
603
+ """
604
+ return f"{random.randint(1, 0x7FFFFFFE):08X}"
605
+
606
+
607
+ def _generate_rsid() -> str:
608
+ """Generate random 8-character hex RSID."""
609
+ return "".join(random.choices("0123456789ABCDEF", k=8))
610
+
611
+
612
+ class Document:
613
+ """Manages comments in unpacked Word documents."""
614
+
615
+ def __init__(
616
+ self,
617
+ unpacked_dir,
618
+ rsid=None,
619
+ track_revisions=False,
620
+ author="Claude",
621
+ initials="C",
622
+ ):
623
+ """
624
+ Initialize with path to unpacked Word document directory.
625
+ Automatically sets up comment infrastructure (people.xml, RSIDs).
626
+
627
+ Args:
628
+ unpacked_dir: Path to unpacked DOCX directory (must contain word/ subdirectory)
629
+ rsid: Optional RSID to use for all comment elements. If not provided, one will be generated.
630
+ track_revisions: If True, enables track revisions in settings.xml (default: False)
631
+ author: Default author name for comments (default: "Claude")
632
+ initials: Default author initials for comments (default: "C")
633
+ """
634
+ self.original_path = Path(unpacked_dir)
635
+
636
+ if not self.original_path.exists() or not self.original_path.is_dir():
637
+ raise ValueError(f"Directory not found: {unpacked_dir}")
638
+
639
+ # Create temporary directory with subdirectories for unpacked content and baseline
640
+ self.temp_dir = tempfile.mkdtemp(prefix="docx_")
641
+ self.unpacked_path = Path(self.temp_dir) / "unpacked"
642
+ shutil.copytree(self.original_path, self.unpacked_path)
643
+
644
+ # Pack original directory into temporary .docx for validation baseline (outside unpacked dir)
645
+ self.original_docx = Path(self.temp_dir) / "original.docx"
646
+ pack_document(self.original_path, self.original_docx, validate=False)
647
+
648
+ self.word_path = self.unpacked_path / "word"
649
+
650
+ # Generate RSID if not provided
651
+ self.rsid = rsid if rsid else _generate_rsid()
652
+ print(f"Using RSID: {self.rsid}")
653
+
654
+ # Set default author and initials
655
+ self.author = author
656
+ self.initials = initials
657
+
658
+ # Cache for lazy-loaded editors
659
+ self._editors = {}
660
+
661
+ # Comment file paths
662
+ self.comments_path = self.word_path / "comments.xml"
663
+ self.comments_extended_path = self.word_path / "commentsExtended.xml"
664
+ self.comments_ids_path = self.word_path / "commentsIds.xml"
665
+ self.comments_extensible_path = self.word_path / "commentsExtensible.xml"
666
+
667
+ # Load existing comments and determine next ID (before setup modifies files)
668
+ self.existing_comments = self._load_existing_comments()
669
+ self.next_comment_id = self._get_next_comment_id()
670
+
671
+ # Convenient access to document.xml editor (semi-private)
672
+ self._document = self["word/document.xml"]
673
+
674
+ # Setup tracked changes infrastructure
675
+ self._setup_tracking(track_revisions=track_revisions)
676
+
677
+ # Add author to people.xml
678
+ self._add_author_to_people(author)
679
+
680
+ def __getitem__(self, xml_path: str) -> DocxXMLEditor:
681
+ """
682
+ Get or create a DocxXMLEditor for the specified XML file.
683
+
684
+ Enables lazy-loaded editors with bracket notation:
685
+ node = doc["word/document.xml"].get_node(tag="w:p", line_number=42)
686
+
687
+ Args:
688
+ xml_path: Relative path to XML file (e.g., "word/document.xml", "word/comments.xml")
689
+
690
+ Returns:
691
+ DocxXMLEditor instance for the specified file
692
+
693
+ Raises:
694
+ ValueError: If the file does not exist
695
+
696
+ Example:
697
+ # Get node from document.xml
698
+ node = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "1"})
699
+
700
+ # Get node from comments.xml
701
+ comment = doc["word/comments.xml"].get_node(tag="w:comment", attrs={"w:id": "0"})
702
+ """
703
+ if xml_path not in self._editors:
704
+ file_path = self.unpacked_path / xml_path
705
+ if not file_path.exists():
706
+ raise ValueError(f"XML file not found: {xml_path}")
707
+ # Use DocxXMLEditor with RSID, author, and initials for all editors
708
+ self._editors[xml_path] = DocxXMLEditor(
709
+ file_path, rsid=self.rsid, author=self.author, initials=self.initials
710
+ )
711
+ return self._editors[xml_path]
712
+
713
+ def add_comment(self, start, end, text: str) -> int:
714
+ """
715
+ Add a comment spanning from one element to another.
716
+
717
+ Args:
718
+ start: DOM element for the starting point
719
+ end: DOM element for the ending point
720
+ text: Comment content
721
+
722
+ Returns:
723
+ The comment ID that was created
724
+
725
+ Example:
726
+ start_node = cm.get_document_node(tag="w:del", id="1")
727
+ end_node = cm.get_document_node(tag="w:ins", id="2")
728
+ cm.add_comment(start=start_node, end=end_node, text="Explanation")
729
+ """
730
+ comment_id = self.next_comment_id
731
+ para_id = _generate_hex_id()
732
+ durable_id = _generate_hex_id()
733
+ timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
734
+
735
+ # Add comment ranges to document.xml immediately
736
+ self._document.insert_before(start, self._comment_range_start_xml(comment_id))
737
+
738
+ # If end node is a paragraph, append comment markup inside it
739
+ # Otherwise insert after it (for run-level anchors)
740
+ if end.tagName == "w:p":
741
+ self._document.append_to(end, self._comment_range_end_xml(comment_id))
742
+ else:
743
+ self._document.insert_after(end, self._comment_range_end_xml(comment_id))
744
+
745
+ # Add to comments.xml immediately
746
+ self._add_to_comments_xml(
747
+ comment_id, para_id, text, self.author, self.initials, timestamp
748
+ )
749
+
750
+ # Add to commentsExtended.xml immediately
751
+ self._add_to_comments_extended_xml(para_id, parent_para_id=None)
752
+
753
+ # Add to commentsIds.xml immediately
754
+ self._add_to_comments_ids_xml(para_id, durable_id)
755
+
756
+ # Add to commentsExtensible.xml immediately
757
+ self._add_to_comments_extensible_xml(durable_id)
758
+
759
+ # Update existing_comments so replies work
760
+ self.existing_comments[comment_id] = {"para_id": para_id}
761
+
762
+ self.next_comment_id += 1
763
+ return comment_id
764
+
765
+ def reply_to_comment(
766
+ self,
767
+ parent_comment_id: int,
768
+ text: str,
769
+ ) -> int:
770
+ """
771
+ Add a reply to an existing comment.
772
+
773
+ Args:
774
+ parent_comment_id: The w:id of the parent comment to reply to
775
+ text: Reply text
776
+
777
+ Returns:
778
+ The comment ID that was created for the reply
779
+
780
+ Example:
781
+ cm.reply_to_comment(parent_comment_id=0, text="I agree with this change")
782
+ """
783
+ if parent_comment_id not in self.existing_comments:
784
+ raise ValueError(f"Parent comment with id={parent_comment_id} not found")
785
+
786
+ parent_info = self.existing_comments[parent_comment_id]
787
+ comment_id = self.next_comment_id
788
+ para_id = _generate_hex_id()
789
+ durable_id = _generate_hex_id()
790
+ timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
791
+
792
+ # Add comment ranges to document.xml immediately
793
+ parent_start_elem = self._document.get_node(
794
+ tag="w:commentRangeStart", attrs={"w:id": str(parent_comment_id)}
795
+ )
796
+ parent_ref_elem = self._document.get_node(
797
+ tag="w:commentReference", attrs={"w:id": str(parent_comment_id)}
798
+ )
799
+
800
+ self._document.insert_after(
801
+ parent_start_elem, self._comment_range_start_xml(comment_id)
802
+ )
803
+ parent_ref_run = parent_ref_elem.parentNode
804
+ self._document.insert_after(
805
+ parent_ref_run, f'<w:commentRangeEnd w:id="{comment_id}"/>'
806
+ )
807
+ self._document.insert_after(
808
+ parent_ref_run, self._comment_ref_run_xml(comment_id)
809
+ )
810
+
811
+ # Add to comments.xml immediately
812
+ self._add_to_comments_xml(
813
+ comment_id, para_id, text, self.author, self.initials, timestamp
814
+ )
815
+
816
+ # Add to commentsExtended.xml immediately (with parent)
817
+ self._add_to_comments_extended_xml(
818
+ para_id, parent_para_id=parent_info["para_id"]
819
+ )
820
+
821
+ # Add to commentsIds.xml immediately
822
+ self._add_to_comments_ids_xml(para_id, durable_id)
823
+
824
+ # Add to commentsExtensible.xml immediately
825
+ self._add_to_comments_extensible_xml(durable_id)
826
+
827
+ # Update existing_comments so replies work
828
+ self.existing_comments[comment_id] = {"para_id": para_id}
829
+
830
+ self.next_comment_id += 1
831
+ return comment_id
832
+
833
+ def __del__(self):
834
+ """Clean up temporary directory on deletion."""
835
+ if hasattr(self, "temp_dir") and Path(self.temp_dir).exists():
836
+ shutil.rmtree(self.temp_dir)
837
+
838
+ def validate(self) -> None:
839
+ """
840
+ Validate the document against XSD schema and redlining rules.
841
+
842
+ Raises:
843
+ ValueError: If validation fails.
844
+ """
845
+ # Create validators with current state
846
+ schema_validator = DOCXSchemaValidator(
847
+ self.unpacked_path, self.original_docx, verbose=False
848
+ )
849
+ redlining_validator = RedliningValidator(
850
+ self.unpacked_path, self.original_docx, verbose=False
851
+ )
852
+
853
+ # Run validations
854
+ if not schema_validator.validate():
855
+ raise ValueError("Schema validation failed")
856
+ if not redlining_validator.validate():
857
+ raise ValueError("Redlining validation failed")
858
+
859
+ def save(self, destination=None, validate=True) -> None:
860
+ """
861
+ Save all modified XML files to disk and copy to destination directory.
862
+
863
+ This persists all changes made via add_comment() and reply_to_comment().
864
+
865
+ Args:
866
+ destination: Optional path to save to. If None, saves back to original directory.
867
+ validate: If True, validates document before saving (default: True).
868
+ """
869
+ # Only ensure comment relationships and content types if comment files exist
870
+ if self.comments_path.exists():
871
+ self._ensure_comment_relationships()
872
+ self._ensure_comment_content_types()
873
+
874
+ # Save all modified XML files in temp directory
875
+ for editor in self._editors.values():
876
+ editor.save()
877
+
878
+ # Validate by default
879
+ if validate:
880
+ self.validate()
881
+
882
+ # Copy contents from temp directory to destination (or original directory)
883
+ target_path = Path(destination) if destination else self.original_path
884
+ shutil.copytree(self.unpacked_path, target_path, dirs_exist_ok=True)
885
+
886
+ # ==================== Private: Initialization ====================
887
+
888
+ def _get_next_comment_id(self):
889
+ """Get the next available comment ID."""
890
+ if not self.comments_path.exists():
891
+ return 0
892
+
893
+ editor = self["word/comments.xml"]
894
+ max_id = -1
895
+ for comment_elem in editor.dom.getElementsByTagName("w:comment"):
896
+ comment_id = comment_elem.getAttribute("w:id")
897
+ if comment_id:
898
+ try:
899
+ max_id = max(max_id, int(comment_id))
900
+ except ValueError:
901
+ pass
902
+ return max_id + 1
903
+
904
+ def _load_existing_comments(self):
905
+ """Load existing comments from files to enable replies."""
906
+ if not self.comments_path.exists():
907
+ return {}
908
+
909
+ editor = self["word/comments.xml"]
910
+ existing = {}
911
+
912
+ for comment_elem in editor.dom.getElementsByTagName("w:comment"):
913
+ comment_id = comment_elem.getAttribute("w:id")
914
+ if not comment_id:
915
+ continue
916
+
917
+ # Find para_id from the w:p element within the comment
918
+ para_id = None
919
+ for p_elem in comment_elem.getElementsByTagName("w:p"):
920
+ para_id = p_elem.getAttribute("w14:paraId")
921
+ if para_id:
922
+ break
923
+
924
+ if not para_id:
925
+ continue
926
+
927
+ existing[int(comment_id)] = {"para_id": para_id}
928
+
929
+ return existing
930
+
931
+ # ==================== Private: Setup Methods ====================
932
+
933
+ def _setup_tracking(self, track_revisions=False):
934
+ """Set up comment infrastructure in unpacked directory.
935
+
936
+ Args:
937
+ track_revisions: If True, enables track revisions in settings.xml
938
+ """
939
+ # Create or update word/people.xml
940
+ people_file = self.word_path / "people.xml"
941
+ self._update_people_xml(people_file)
942
+
943
+ # Update XML files
944
+ self._add_content_type_for_people(self.unpacked_path / "[Content_Types].xml")
945
+ self._add_relationship_for_people(
946
+ self.word_path / "_rels" / "document.xml.rels"
947
+ )
948
+
949
+ # Always add RSID to settings.xml, optionally enable trackRevisions
950
+ self._update_settings(
951
+ self.word_path / "settings.xml", track_revisions=track_revisions
952
+ )
953
+
954
+ def _update_people_xml(self, path):
955
+ """Create people.xml if it doesn't exist."""
956
+ if not path.exists():
957
+ # Copy from template
958
+ shutil.copy(TEMPLATE_DIR / "people.xml", path)
959
+
960
+ def _add_content_type_for_people(self, path):
961
+ """Add people.xml content type to [Content_Types].xml if not already present."""
962
+ editor = self["[Content_Types].xml"]
963
+
964
+ if self._has_override(editor, "/word/people.xml"):
965
+ return
966
+
967
+ # Add Override element
968
+ root = editor.dom.documentElement
969
+ override_xml = '<Override PartName="/word/people.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.people+xml"/>'
970
+ editor.append_to(root, override_xml)
971
+
972
+ def _add_relationship_for_people(self, path):
973
+ """Add people.xml relationship to document.xml.rels if not already present."""
974
+ editor = self["word/_rels/document.xml.rels"]
975
+
976
+ if self._has_relationship(editor, "people.xml"):
977
+ return
978
+
979
+ root = editor.dom.documentElement
980
+ root_tag = root.tagName # type: ignore
981
+ prefix = root_tag.split(":")[0] + ":" if ":" in root_tag else ""
982
+ next_rid = editor.get_next_rid()
983
+
984
+ # Create the relationship entry
985
+ rel_xml = f'<{prefix}Relationship Id="{next_rid}" Type="http://schemas.microsoft.com/office/2011/relationships/people" Target="people.xml"/>'
986
+ editor.append_to(root, rel_xml)
987
+
988
+ def _update_settings(self, path, track_revisions=False):
989
+ """Add RSID and optionally enable track revisions in settings.xml.
990
+
991
+ Args:
992
+ path: Path to settings.xml
993
+ track_revisions: If True, adds trackRevisions element
994
+
995
+ Places elements per OOXML schema order:
996
+ - trackRevisions: early (before defaultTabStop)
997
+ - rsids: late (after compat)
998
+ """
999
+ editor = self["word/settings.xml"]
1000
+ root = editor.get_node(tag="w:settings")
1001
+ prefix = root.tagName.split(":")[0] if ":" in root.tagName else "w"
1002
+
1003
+ # Conditionally add trackRevisions if requested
1004
+ if track_revisions:
1005
+ track_revisions_exists = any(
1006
+ elem.tagName == f"{prefix}:trackRevisions"
1007
+ for elem in editor.dom.getElementsByTagName(f"{prefix}:trackRevisions")
1008
+ )
1009
+
1010
+ if not track_revisions_exists:
1011
+ track_rev_xml = f"<{prefix}:trackRevisions/>"
1012
+ # Try to insert before documentProtection, defaultTabStop, or at start
1013
+ inserted = False
1014
+ for tag in [f"{prefix}:documentProtection", f"{prefix}:defaultTabStop"]:
1015
+ elements = editor.dom.getElementsByTagName(tag)
1016
+ if elements:
1017
+ editor.insert_before(elements[0], track_rev_xml)
1018
+ inserted = True
1019
+ break
1020
+ if not inserted:
1021
+ # Insert as first child of settings
1022
+ if root.firstChild:
1023
+ editor.insert_before(root.firstChild, track_rev_xml)
1024
+ else:
1025
+ editor.append_to(root, track_rev_xml)
1026
+
1027
+ # Always check if rsids section exists
1028
+ rsids_elements = editor.dom.getElementsByTagName(f"{prefix}:rsids")
1029
+
1030
+ if not rsids_elements:
1031
+ # Add new rsids section
1032
+ rsids_xml = f'''<{prefix}:rsids>
1033
+ <{prefix}:rsidRoot {prefix}:val="{self.rsid}"/>
1034
+ <{prefix}:rsid {prefix}:val="{self.rsid}"/>
1035
+ </{prefix}:rsids>'''
1036
+
1037
+ # Try to insert after compat, before clrSchemeMapping, or before closing tag
1038
+ inserted = False
1039
+ compat_elements = editor.dom.getElementsByTagName(f"{prefix}:compat")
1040
+ if compat_elements:
1041
+ editor.insert_after(compat_elements[0], rsids_xml)
1042
+ inserted = True
1043
+
1044
+ if not inserted:
1045
+ clr_elements = editor.dom.getElementsByTagName(
1046
+ f"{prefix}:clrSchemeMapping"
1047
+ )
1048
+ if clr_elements:
1049
+ editor.insert_before(clr_elements[0], rsids_xml)
1050
+ inserted = True
1051
+
1052
+ if not inserted:
1053
+ editor.append_to(root, rsids_xml)
1054
+ else:
1055
+ # Check if this rsid already exists
1056
+ rsids_elem = rsids_elements[0]
1057
+ rsid_exists = any(
1058
+ elem.getAttribute(f"{prefix}:val") == self.rsid
1059
+ for elem in rsids_elem.getElementsByTagName(f"{prefix}:rsid")
1060
+ )
1061
+
1062
+ if not rsid_exists:
1063
+ rsid_xml = f'<{prefix}:rsid {prefix}:val="{self.rsid}"/>'
1064
+ editor.append_to(rsids_elem, rsid_xml)
1065
+
1066
+ # ==================== Private: XML File Creation ====================
1067
+
1068
+ def _add_to_comments_xml(
1069
+ self, comment_id, para_id, text, author, initials, timestamp
1070
+ ):
1071
+ """Add a single comment to comments.xml."""
1072
+ if not self.comments_path.exists():
1073
+ shutil.copy(TEMPLATE_DIR / "comments.xml", self.comments_path)
1074
+
1075
+ editor = self["word/comments.xml"]
1076
+ root = editor.get_node(tag="w:comments")
1077
+
1078
+ escaped_text = (
1079
+ text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
1080
+ )
1081
+ # Note: w:rsidR, w:rsidRDefault, w:rsidP on w:p, w:rsidR on w:r,
1082
+ # and w:author, w:date, w:initials on w:comment are automatically added by DocxXMLEditor
1083
+ comment_xml = f'''<w:comment w:id="{comment_id}">
1084
+ <w:p w14:paraId="{para_id}" w14:textId="77777777">
1085
+ <w:r><w:rPr><w:rStyle w:val="CommentReference"/></w:rPr><w:annotationRef/></w:r>
1086
+ <w:r><w:rPr><w:color w:val="000000"/><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr><w:t>{escaped_text}</w:t></w:r>
1087
+ </w:p>
1088
+ </w:comment>'''
1089
+ editor.append_to(root, comment_xml)
1090
+
1091
+ def _add_to_comments_extended_xml(self, para_id, parent_para_id):
1092
+ """Add a single comment to commentsExtended.xml."""
1093
+ if not self.comments_extended_path.exists():
1094
+ shutil.copy(
1095
+ TEMPLATE_DIR / "commentsExtended.xml", self.comments_extended_path
1096
+ )
1097
+
1098
+ editor = self["word/commentsExtended.xml"]
1099
+ root = editor.get_node(tag="w15:commentsEx")
1100
+
1101
+ if parent_para_id:
1102
+ xml = f'<w15:commentEx w15:paraId="{para_id}" w15:paraIdParent="{parent_para_id}" w15:done="0"/>'
1103
+ else:
1104
+ xml = f'<w15:commentEx w15:paraId="{para_id}" w15:done="0"/>'
1105
+ editor.append_to(root, xml)
1106
+
1107
+ def _add_to_comments_ids_xml(self, para_id, durable_id):
1108
+ """Add a single comment to commentsIds.xml."""
1109
+ if not self.comments_ids_path.exists():
1110
+ shutil.copy(TEMPLATE_DIR / "commentsIds.xml", self.comments_ids_path)
1111
+
1112
+ editor = self["word/commentsIds.xml"]
1113
+ root = editor.get_node(tag="w16cid:commentsIds")
1114
+
1115
+ xml = f'<w16cid:commentId w16cid:paraId="{para_id}" w16cid:durableId="{durable_id}"/>'
1116
+ editor.append_to(root, xml)
1117
+
1118
+ def _add_to_comments_extensible_xml(self, durable_id):
1119
+ """Add a single comment to commentsExtensible.xml."""
1120
+ if not self.comments_extensible_path.exists():
1121
+ shutil.copy(
1122
+ TEMPLATE_DIR / "commentsExtensible.xml", self.comments_extensible_path
1123
+ )
1124
+
1125
+ editor = self["word/commentsExtensible.xml"]
1126
+ root = editor.get_node(tag="w16cex:commentsExtensible")
1127
+
1128
+ xml = f'<w16cex:commentExtensible w16cex:durableId="{durable_id}"/>'
1129
+ editor.append_to(root, xml)
1130
+
1131
+ # ==================== Private: XML Fragments ====================
1132
+
1133
+ def _comment_range_start_xml(self, comment_id):
1134
+ """Generate XML for comment range start."""
1135
+ return f'<w:commentRangeStart w:id="{comment_id}"/>'
1136
+
1137
+ def _comment_range_end_xml(self, comment_id):
1138
+ """Generate XML for comment range end with reference run.
1139
+
1140
+ Note: w:rsidR is automatically added by DocxXMLEditor.
1141
+ """
1142
+ return f'''<w:commentRangeEnd w:id="{comment_id}"/>
1143
+ <w:r>
1144
+ <w:rPr><w:rStyle w:val="CommentReference"/></w:rPr>
1145
+ <w:commentReference w:id="{comment_id}"/>
1146
+ </w:r>'''
1147
+
1148
+ def _comment_ref_run_xml(self, comment_id):
1149
+ """Generate XML for comment reference run.
1150
+
1151
+ Note: w:rsidR is automatically added by DocxXMLEditor.
1152
+ """
1153
+ return f'''<w:r>
1154
+ <w:rPr><w:rStyle w:val="CommentReference"/></w:rPr>
1155
+ <w:commentReference w:id="{comment_id}"/>
1156
+ </w:r>'''
1157
+
1158
+ # ==================== Private: Metadata Updates ====================
1159
+
1160
+ def _has_relationship(self, editor, target):
1161
+ """Check if a relationship with given target exists."""
1162
+ for rel_elem in editor.dom.getElementsByTagName("Relationship"):
1163
+ if rel_elem.getAttribute("Target") == target:
1164
+ return True
1165
+ return False
1166
+
1167
+ def _has_override(self, editor, part_name):
1168
+ """Check if an override with given part name exists."""
1169
+ for override_elem in editor.dom.getElementsByTagName("Override"):
1170
+ if override_elem.getAttribute("PartName") == part_name:
1171
+ return True
1172
+ return False
1173
+
1174
+ def _has_author(self, editor, author):
1175
+ """Check if an author already exists in people.xml."""
1176
+ for person_elem in editor.dom.getElementsByTagName("w15:person"):
1177
+ if person_elem.getAttribute("w15:author") == author:
1178
+ return True
1179
+ return False
1180
+
1181
+ def _add_author_to_people(self, author):
1182
+ """Add author to people.xml (called during initialization)."""
1183
+ people_path = self.word_path / "people.xml"
1184
+
1185
+ # people.xml should already exist from _setup_tracking
1186
+ if not people_path.exists():
1187
+ raise ValueError("people.xml should exist after _setup_tracking")
1188
+
1189
+ editor = self["word/people.xml"]
1190
+ root = editor.get_node(tag="w15:people")
1191
+
1192
+ # Check if author already exists
1193
+ if self._has_author(editor, author):
1194
+ return
1195
+
1196
+ # Add author with proper XML escaping to prevent injection
1197
+ escaped_author = html.escape(author, quote=True)
1198
+ person_xml = f'''<w15:person w15:author="{escaped_author}">
1199
+ <w15:presenceInfo w15:providerId="None" w15:userId="{escaped_author}"/>
1200
+ </w15:person>'''
1201
+ editor.append_to(root, person_xml)
1202
+
1203
+ def _ensure_comment_relationships(self):
1204
+ """Ensure word/_rels/document.xml.rels has comment relationships."""
1205
+ editor = self["word/_rels/document.xml.rels"]
1206
+
1207
+ if self._has_relationship(editor, "comments.xml"):
1208
+ return
1209
+
1210
+ root = editor.dom.documentElement
1211
+ root_tag = root.tagName # type: ignore
1212
+ prefix = root_tag.split(":")[0] + ":" if ":" in root_tag else ""
1213
+ next_rid_num = int(editor.get_next_rid()[3:])
1214
+
1215
+ # Add relationship elements
1216
+ rels = [
1217
+ (
1218
+ next_rid_num,
1219
+ "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
1220
+ "comments.xml",
1221
+ ),
1222
+ (
1223
+ next_rid_num + 1,
1224
+ "http://schemas.microsoft.com/office/2011/relationships/commentsExtended",
1225
+ "commentsExtended.xml",
1226
+ ),
1227
+ (
1228
+ next_rid_num + 2,
1229
+ "http://schemas.microsoft.com/office/2016/09/relationships/commentsIds",
1230
+ "commentsIds.xml",
1231
+ ),
1232
+ (
1233
+ next_rid_num + 3,
1234
+ "http://schemas.microsoft.com/office/2018/08/relationships/commentsExtensible",
1235
+ "commentsExtensible.xml",
1236
+ ),
1237
+ ]
1238
+
1239
+ for rel_id, rel_type, target in rels:
1240
+ rel_xml = f'<{prefix}Relationship Id="rId{rel_id}" Type="{rel_type}" Target="{target}"/>'
1241
+ editor.append_to(root, rel_xml)
1242
+
1243
+ def _ensure_comment_content_types(self):
1244
+ """Ensure [Content_Types].xml has comment content types."""
1245
+ editor = self["[Content_Types].xml"]
1246
+
1247
+ if self._has_override(editor, "/word/comments.xml"):
1248
+ return
1249
+
1250
+ root = editor.dom.documentElement
1251
+
1252
+ # Add Override elements
1253
+ overrides = [
1254
+ (
1255
+ "/word/comments.xml",
1256
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml",
1257
+ ),
1258
+ (
1259
+ "/word/commentsExtended.xml",
1260
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml",
1261
+ ),
1262
+ (
1263
+ "/word/commentsIds.xml",
1264
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml",
1265
+ ),
1266
+ (
1267
+ "/word/commentsExtensible.xml",
1268
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtensible+xml",
1269
+ ),
1270
+ ]
1271
+
1272
+ for part_name, content_type in overrides:
1273
+ override_xml = (
1274
+ f'<Override PartName="{part_name}" ContentType="{content_type}"/>'
1275
+ )
1276
+ editor.append_to(root, override_xml)