claudecode-omc 5.2.0 → 5.4.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 (383) hide show
  1. package/bundled/manifest.json +2 -1
  2. package/bundled/upstream/anthropic-skills/skills/algorithmic-art/LICENSE.txt +202 -0
  3. package/bundled/upstream/anthropic-skills/skills/algorithmic-art/SKILL.md +405 -0
  4. package/bundled/upstream/anthropic-skills/skills/algorithmic-art/templates/generator_template.js +223 -0
  5. package/bundled/upstream/anthropic-skills/skills/algorithmic-art/templates/viewer.html +599 -0
  6. package/bundled/upstream/anthropic-skills/skills/brand-guidelines/LICENSE.txt +202 -0
  7. package/bundled/upstream/anthropic-skills/skills/brand-guidelines/SKILL.md +73 -0
  8. package/bundled/upstream/anthropic-skills/skills/canvas-design/LICENSE.txt +202 -0
  9. package/bundled/upstream/anthropic-skills/skills/canvas-design/SKILL.md +130 -0
  10. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  11. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  12. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  13. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  14. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  15. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  16. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  17. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  18. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  19. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  20. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  21. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  22. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  23. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  24. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  25. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  26. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  27. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  28. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  29. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  30. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  31. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  32. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  33. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  34. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  35. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  36. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  37. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  38. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  39. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  40. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  41. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  42. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  43. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  44. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  45. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  46. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  47. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  48. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  49. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  50. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  51. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  52. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  53. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  54. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  55. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  56. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  57. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  58. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  59. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  60. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  61. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  62. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  63. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  64. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  65. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  66. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  67. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  68. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  69. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  70. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  71. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  72. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  73. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  74. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  75. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  76. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  77. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  78. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  79. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  80. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  81. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  82. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  83. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  84. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  85. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  86. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  87. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  88. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  89. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  90. package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  91. package/bundled/upstream/anthropic-skills/skills/claude-api/LICENSE.txt +202 -0
  92. package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +262 -0
  93. package/bundled/upstream/anthropic-skills/skills/claude-api/csharp/claude-api.md +402 -0
  94. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +216 -0
  95. package/bundled/upstream/anthropic-skills/skills/claude-api/go/claude-api.md +421 -0
  96. package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +432 -0
  97. package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +375 -0
  98. package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/README.md +355 -0
  99. package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/patterns.md +359 -0
  100. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +420 -0
  101. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +185 -0
  102. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +165 -0
  103. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +162 -0
  104. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +590 -0
  105. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +113 -0
  106. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +206 -0
  107. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +121 -0
  108. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +119 -0
  109. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +128 -0
  110. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +305 -0
  111. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/README.md +297 -0
  112. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/patterns.md +209 -0
  113. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +333 -0
  114. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +106 -0
  115. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +98 -0
  116. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +178 -0
  117. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +527 -0
  118. package/bundled/upstream/anthropic-skills/skills/doc-coauthoring/SKILL.md +375 -0
  119. package/bundled/upstream/anthropic-skills/skills/docx/LICENSE.txt +30 -0
  120. package/bundled/upstream/anthropic-skills/skills/docx/SKILL.md +590 -0
  121. package/bundled/upstream/anthropic-skills/skills/docx/scripts/__init__.py +1 -0
  122. package/bundled/upstream/anthropic-skills/skills/docx/scripts/accept_changes.py +135 -0
  123. package/bundled/upstream/anthropic-skills/skills/docx/scripts/comment.py +318 -0
  124. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/helpers/__init__.py +0 -0
  125. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
  126. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  127. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/pack.py +159 -0
  128. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  129. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  130. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  131. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  132. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  133. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  134. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  135. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  136. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  137. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  138. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  139. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  140. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  141. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  142. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  143. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  144. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  145. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  146. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  147. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  148. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  149. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  150. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  151. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  152. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  153. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  154. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  155. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  156. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  157. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  158. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  159. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  160. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  161. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  162. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  163. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  164. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  165. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  166. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  167. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/soffice.py +183 -0
  168. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/unpack.py +132 -0
  169. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validate.py +111 -0
  170. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/__init__.py +15 -0
  171. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/base.py +847 -0
  172. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/docx.py +446 -0
  173. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/pptx.py +275 -0
  174. package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/redlining.py +247 -0
  175. package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/comments.xml +3 -0
  176. package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  177. package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  178. package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/commentsIds.xml +3 -0
  179. package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/people.xml +3 -0
  180. package/bundled/upstream/anthropic-skills/skills/frontend-design/LICENSE.txt +177 -0
  181. package/bundled/upstream/anthropic-skills/skills/frontend-design/SKILL.md +42 -0
  182. package/bundled/upstream/anthropic-skills/skills/internal-comms/LICENSE.txt +202 -0
  183. package/bundled/upstream/anthropic-skills/skills/internal-comms/SKILL.md +32 -0
  184. package/bundled/upstream/anthropic-skills/skills/internal-comms/examples/3p-updates.md +47 -0
  185. package/bundled/upstream/anthropic-skills/skills/internal-comms/examples/company-newsletter.md +65 -0
  186. package/bundled/upstream/anthropic-skills/skills/internal-comms/examples/faq-answers.md +30 -0
  187. package/bundled/upstream/anthropic-skills/skills/internal-comms/examples/general-comms.md +16 -0
  188. package/bundled/upstream/anthropic-skills/skills/mcp-builder/LICENSE.txt +202 -0
  189. package/bundled/upstream/anthropic-skills/skills/mcp-builder/SKILL.md +236 -0
  190. package/bundled/upstream/anthropic-skills/skills/mcp-builder/reference/evaluation.md +602 -0
  191. package/bundled/upstream/anthropic-skills/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  192. package/bundled/upstream/anthropic-skills/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  193. package/bundled/upstream/anthropic-skills/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  194. package/bundled/upstream/anthropic-skills/skills/mcp-builder/scripts/connections.py +151 -0
  195. package/bundled/upstream/anthropic-skills/skills/mcp-builder/scripts/evaluation.py +373 -0
  196. package/bundled/upstream/anthropic-skills/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  197. package/bundled/upstream/anthropic-skills/skills/mcp-builder/scripts/requirements.txt +2 -0
  198. package/bundled/upstream/anthropic-skills/skills/pdf/LICENSE.txt +30 -0
  199. package/bundled/upstream/anthropic-skills/skills/pdf/SKILL.md +314 -0
  200. package/bundled/upstream/anthropic-skills/skills/pdf/forms.md +294 -0
  201. package/bundled/upstream/anthropic-skills/skills/pdf/reference.md +612 -0
  202. package/bundled/upstream/anthropic-skills/skills/pdf/scripts/check_bounding_boxes.py +65 -0
  203. package/bundled/upstream/anthropic-skills/skills/pdf/scripts/check_fillable_fields.py +11 -0
  204. package/bundled/upstream/anthropic-skills/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
  205. package/bundled/upstream/anthropic-skills/skills/pdf/scripts/create_validation_image.py +37 -0
  206. package/bundled/upstream/anthropic-skills/skills/pdf/scripts/extract_form_field_info.py +122 -0
  207. package/bundled/upstream/anthropic-skills/skills/pdf/scripts/extract_form_structure.py +115 -0
  208. package/bundled/upstream/anthropic-skills/skills/pdf/scripts/fill_fillable_fields.py +98 -0
  209. package/bundled/upstream/anthropic-skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  210. package/bundled/upstream/anthropic-skills/skills/pptx/LICENSE.txt +30 -0
  211. package/bundled/upstream/anthropic-skills/skills/pptx/SKILL.md +232 -0
  212. package/bundled/upstream/anthropic-skills/skills/pptx/editing.md +205 -0
  213. package/bundled/upstream/anthropic-skills/skills/pptx/pptxgenjs.md +420 -0
  214. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/__init__.py +0 -0
  215. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/add_slide.py +195 -0
  216. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/clean.py +286 -0
  217. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  218. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
  219. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  220. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/pack.py +159 -0
  221. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  222. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  223. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  224. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  225. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  226. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  227. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  228. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  229. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  230. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  231. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  232. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  233. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  234. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  235. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  236. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  237. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  238. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  239. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  240. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  241. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  242. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  243. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  244. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  245. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  246. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  247. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  248. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  249. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  250. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  251. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  252. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  253. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  254. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  255. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  256. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  257. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  258. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  259. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  260. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/soffice.py +183 -0
  261. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/unpack.py +132 -0
  262. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validate.py +111 -0
  263. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/__init__.py +15 -0
  264. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/base.py +847 -0
  265. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/docx.py +446 -0
  266. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/pptx.py +275 -0
  267. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/redlining.py +247 -0
  268. package/bundled/upstream/anthropic-skills/skills/pptx/scripts/thumbnail.py +289 -0
  269. package/bundled/upstream/anthropic-skills/skills/skill-creator/LICENSE.txt +202 -0
  270. package/bundled/upstream/anthropic-skills/skills/skill-creator/SKILL.md +485 -0
  271. package/bundled/upstream/anthropic-skills/skills/skill-creator/agents/analyzer.md +274 -0
  272. package/bundled/upstream/anthropic-skills/skills/skill-creator/agents/comparator.md +202 -0
  273. package/bundled/upstream/anthropic-skills/skills/skill-creator/agents/grader.md +223 -0
  274. package/bundled/upstream/anthropic-skills/skills/skill-creator/assets/eval_review.html +146 -0
  275. package/bundled/upstream/anthropic-skills/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  276. package/bundled/upstream/anthropic-skills/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  277. package/bundled/upstream/anthropic-skills/skills/skill-creator/references/schemas.md +430 -0
  278. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/__init__.py +0 -0
  279. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  280. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/generate_report.py +326 -0
  281. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/improve_description.py +247 -0
  282. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/package_skill.py +136 -0
  283. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/quick_validate.py +103 -0
  284. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/run_eval.py +310 -0
  285. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/run_loop.py +328 -0
  286. package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/utils.py +47 -0
  287. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/LICENSE.txt +202 -0
  288. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/SKILL.md +254 -0
  289. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/core/easing.py +234 -0
  290. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/core/frame_composer.py +176 -0
  291. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/core/gif_builder.py +269 -0
  292. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/core/validators.py +136 -0
  293. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/requirements.txt +4 -0
  294. package/bundled/upstream/anthropic-skills/skills/theme-factory/LICENSE.txt +202 -0
  295. package/bundled/upstream/anthropic-skills/skills/theme-factory/SKILL.md +59 -0
  296. package/bundled/upstream/anthropic-skills/skills/theme-factory/theme-showcase.pdf +0 -0
  297. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/arctic-frost.md +19 -0
  298. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/botanical-garden.md +19 -0
  299. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/desert-rose.md +19 -0
  300. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/forest-canopy.md +19 -0
  301. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/golden-hour.md +19 -0
  302. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  303. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/modern-minimalist.md +19 -0
  304. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/ocean-depths.md +19 -0
  305. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  306. package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/tech-innovation.md +19 -0
  307. package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/LICENSE.txt +202 -0
  308. package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/SKILL.md +74 -0
  309. package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  310. package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  311. package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  312. package/bundled/upstream/anthropic-skills/skills/webapp-testing/LICENSE.txt +202 -0
  313. package/bundled/upstream/anthropic-skills/skills/webapp-testing/SKILL.md +96 -0
  314. package/bundled/upstream/anthropic-skills/skills/webapp-testing/examples/console_logging.py +35 -0
  315. package/bundled/upstream/anthropic-skills/skills/webapp-testing/examples/element_discovery.py +40 -0
  316. package/bundled/upstream/anthropic-skills/skills/webapp-testing/examples/static_html_automation.py +33 -0
  317. package/bundled/upstream/anthropic-skills/skills/webapp-testing/scripts/with_server.py +106 -0
  318. package/bundled/upstream/anthropic-skills/skills/xlsx/LICENSE.txt +30 -0
  319. package/bundled/upstream/anthropic-skills/skills/xlsx/SKILL.md +292 -0
  320. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  321. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  322. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  323. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/pack.py +159 -0
  324. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  325. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  326. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  327. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  328. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  329. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  330. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  331. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  332. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  333. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  334. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  335. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  336. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  337. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  338. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  339. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  340. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  341. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  342. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  343. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  344. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  345. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  346. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  347. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  348. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  349. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  350. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  351. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  352. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  353. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  354. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  355. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  356. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  357. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  358. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  359. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  360. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  361. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  362. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  363. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/soffice.py +183 -0
  364. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/unpack.py +132 -0
  365. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validate.py +111 -0
  366. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  367. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/base.py +847 -0
  368. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/docx.py +446 -0
  369. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/pptx.py +275 -0
  370. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/redlining.py +247 -0
  371. package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/recalc.py +184 -0
  372. package/bundled/upstream/anthropic-skills/spec/agent-skills-spec.md +3 -0
  373. package/bundled/upstream/anthropic-skills/template/SKILL.md +6 -0
  374. package/package.json +1 -1
  375. package/src/cli/artifact.js +18 -3
  376. package/src/cli/index.js +6 -0
  377. package/src/cli/setup.js +16 -1
  378. package/src/cli/skill.js +271 -0
  379. package/src/config/sources.js +12 -0
  380. package/src/merge/base-merger.js +28 -6
  381. package/src/utils/overlap.js +300 -0
  382. package/src/utils/quality.js +286 -32
  383. package/templates/merge-config.json +12 -1
@@ -0,0 +1,300 @@
1
+ /* eslint-disable no-console */
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { evaluateSkillQuality } = require('./quality');
6
+
7
+ // ---------------------------------------------------------------------------
8
+ // Text similarity
9
+ // ---------------------------------------------------------------------------
10
+
11
+ /**
12
+ * Tokenise text into meaningful words (lowercase, >2 chars, no stop-words).
13
+ */
14
+ function tokenise(text) {
15
+ const stop = new Set([
16
+ 'the', 'and', 'for', 'with', 'this', 'that', 'from', 'are', 'was',
17
+ 'will', 'can', 'has', 'have', 'been', 'not', 'but', 'all', 'its',
18
+ 'use', 'used', 'using', 'when', 'how', 'what', 'who', 'which',
19
+ 'you', 'your', 'they', 'their', 'more', 'also', 'into', 'than',
20
+ 'each', 'other', 'about', 'should', 'would', 'could',
21
+ ]);
22
+ return text.toLowerCase()
23
+ .replace(/[^a-z0-9-]/g, ' ')
24
+ .split(/\s+/)
25
+ .filter(w => w.length > 2 && !stop.has(w));
26
+ }
27
+
28
+ /**
29
+ * Jaccard similarity between two token arrays.
30
+ */
31
+ function jaccard(a, b) {
32
+ const setA = new Set(a);
33
+ const setB = new Set(b);
34
+ if (setA.size === 0 || setB.size === 0) return 0;
35
+ const intersection = new Set([...setA].filter(x => setB.has(x)));
36
+ const union = new Set([...setA, ...setB]);
37
+ return intersection.size / union.size;
38
+ }
39
+
40
+ /**
41
+ * Weighted cosine similarity using term frequency.
42
+ */
43
+ function cosineTF(a, b) {
44
+ const freqA = {};
45
+ const freqB = {};
46
+ for (const w of a) freqA[w] = (freqA[w] || 0) + 1;
47
+ for (const w of b) freqB[w] = (freqB[w] || 0) + 1;
48
+
49
+ const allWords = new Set([...Object.keys(freqA), ...Object.keys(freqB)]);
50
+ let dot = 0, magA = 0, magB = 0;
51
+ for (const w of allWords) {
52
+ const va = freqA[w] || 0;
53
+ const vb = freqB[w] || 0;
54
+ dot += va * vb;
55
+ magA += va * va;
56
+ magB += vb * vb;
57
+ }
58
+ if (magA === 0 || magB === 0) return 0;
59
+ return dot / (Math.sqrt(magA) * Math.sqrt(magB));
60
+ }
61
+
62
+ // ---------------------------------------------------------------------------
63
+ // Domain classification
64
+ // ---------------------------------------------------------------------------
65
+
66
+ const DOMAIN_KEYWORDS = {
67
+ debugging: ['debug', 'trace', 'root-cause', 'investigation', 'diagnose', 'stack-trace', 'breakpoint', 'bisect'],
68
+ testing: ['tdd', 'bdd', 'coverage', 'red-green', 'test-driven', 'playwright', 'vitest', 'jest', 'assertion'],
69
+ planning: ['plan', 'architect', 'requirement', 'roadmap', 'strategy', 'specification', 'decompose', 'scope'],
70
+ execution: ['autopilot', 'parallel', 'worker', 'dispatch', 'pipeline', 'orchestrat', 'ultrawork', 'ralph'],
71
+ review: ['code-review', 'critique', 'slop', 'cleanup', 'refactor', 'lint', 'approve'],
72
+ verification: ['verify', 'validate', 'evidence', 'completion', 'passing', 'ultraqa'],
73
+ research: ['research', 'multi-model', 'codex', 'gemini', 'deepsearch', 'documentation'],
74
+ git: ['worktree', 'rebase', 'cherry-pick', 'pull-request', 'release-branch'],
75
+ skilldev: ['skill-creator', 'skill-tester', 'skill-quality', 'skill-debug', 'writing-skills', 'trigger-rate', 'skill-md', 'frontmatter'],
76
+ brainstorm: ['brainstorm', 'interview', 'ideate', 'crystalliz', 'deep-interview', 'ambiguity'],
77
+ setup: ['install', 'setup', 'configure', 'mcp-setup', 'omc-setup', 'doctor', 'notification'],
78
+ };
79
+
80
+ /**
81
+ * Classify a skill into domains based on its description + body keywords.
82
+ * Returns array of { domain, strength } sorted by strength descending.
83
+ */
84
+ function classifyDomains(tokens) {
85
+ const scores = {};
86
+ const tokenSet = new Set(tokens);
87
+ for (const [domain, keywords] of Object.entries(DOMAIN_KEYWORDS)) {
88
+ let hits = 0;
89
+ for (const kw of keywords) {
90
+ // Exact match or compound keyword match (e.g. "skill-creator" in tokens)
91
+ if (tokenSet.has(kw)) {
92
+ hits += 2;
93
+ } else {
94
+ // Partial: check if any token starts with the keyword
95
+ for (const tok of tokens) {
96
+ if (tok.startsWith(kw) && kw.length >= 4) { hits++; break; }
97
+ }
98
+ }
99
+ }
100
+ if (hits > 0) scores[domain] = hits;
101
+ }
102
+ return Object.entries(scores)
103
+ .map(([domain, strength]) => ({ domain, strength }))
104
+ .sort((a, b) => b.strength - a.strength);
105
+ }
106
+
107
+ // ---------------------------------------------------------------------------
108
+ // Overlap detection
109
+ // ---------------------------------------------------------------------------
110
+
111
+ /**
112
+ * Load skill content tokens for overlap analysis.
113
+ */
114
+ function loadSkillTokens(skillPath) {
115
+ const file = path.join(skillPath, 'SKILL.md');
116
+ if (!fs.existsSync(file)) return [];
117
+ const content = fs.readFileSync(file, 'utf8');
118
+ return tokenise(content);
119
+ }
120
+
121
+ /**
122
+ * Detect functional overlaps across multiple skill sources.
123
+ *
124
+ * @param {Array} sources — [{ name, items: [{ name, path, metadata }] }]
125
+ * @param {object} options — { threshold: 0.3 }
126
+ * @returns {Array} overlap groups
127
+ */
128
+ function detectOverlaps(sources, options = {}) {
129
+ const threshold = options.threshold || 0.3;
130
+
131
+ // Flatten all skills with source info and pre-compute tokens/domains
132
+ const allSkills = [];
133
+ for (const source of sources) {
134
+ for (const item of (source.items || source.skills || [])) {
135
+ const tokens = loadSkillTokens(item.path);
136
+ const domains = classifyDomains(tokens);
137
+ allSkills.push({
138
+ ...item,
139
+ sourceName: source.name,
140
+ tokens,
141
+ domains,
142
+ descTokens: tokenise(item.metadata?.description || ''),
143
+ });
144
+ }
145
+ }
146
+
147
+ // Find pairs with high similarity (cross-source only)
148
+ const pairs = [];
149
+ for (let i = 0; i < allSkills.length; i++) {
150
+ for (let j = i + 1; j < allSkills.length; j++) {
151
+ const a = allSkills[i];
152
+ const b = allSkills[j];
153
+
154
+ // Skip same-source pairs
155
+ if (a.sourceName === b.sourceName) continue;
156
+
157
+ // Description similarity
158
+ const descSim = jaccard(a.descTokens, b.descTokens);
159
+
160
+ // Body content similarity
161
+ const bodySim = cosineTF(a.tokens, b.tokens);
162
+
163
+ // Domain overlap
164
+ const aDomains = new Set(a.domains.slice(0, 3).map(d => d.domain));
165
+ const bDomains = new Set(b.domains.slice(0, 3).map(d => d.domain));
166
+ const domainIntersect = [...aDomains].filter(d => bDomains.has(d)).length;
167
+ const domainUnion = new Set([...aDomains, ...bDomains]).size;
168
+ const domainSim = domainUnion > 0 ? domainIntersect / domainUnion : 0;
169
+
170
+ // Combined similarity (weighted — description is the skill's identity)
171
+ const combined = descSim * 0.4 + bodySim * 0.3 + domainSim * 0.3;
172
+
173
+ if (combined >= threshold) {
174
+ pairs.push({ a, b, descSim, bodySim, domainSim, combined });
175
+ }
176
+ }
177
+ }
178
+
179
+ // Cluster pairs into groups using union-find
180
+ const parent = {};
181
+ function find(x) {
182
+ if (!parent[x]) parent[x] = x;
183
+ if (parent[x] !== x) parent[x] = find(parent[x]);
184
+ return parent[x];
185
+ }
186
+ function union(x, y) {
187
+ parent[find(x)] = find(y);
188
+ }
189
+
190
+ for (const pair of pairs) {
191
+ const keyA = `${pair.a.sourceName}:${pair.a.name}`;
192
+ const keyB = `${pair.b.sourceName}:${pair.b.name}`;
193
+ union(keyA, keyB);
194
+ }
195
+
196
+ // Build groups
197
+ const groups = {};
198
+ const skillMap = {};
199
+ for (const skill of allSkills) {
200
+ const key = `${skill.sourceName}:${skill.name}`;
201
+ skillMap[key] = skill;
202
+ }
203
+ for (const pair of pairs) {
204
+ const keyA = `${pair.a.sourceName}:${pair.a.name}`;
205
+ const keyB = `${pair.b.sourceName}:${pair.b.name}`;
206
+ const root = find(keyA);
207
+ if (!groups[root]) groups[root] = new Set();
208
+ groups[root].add(keyA);
209
+ groups[root].add(keyB);
210
+ }
211
+
212
+ // Convert groups to output format with quality scores
213
+ const result = [];
214
+ for (const members of Object.values(groups)) {
215
+ const skills = [...members].map(key => {
216
+ const skill = skillMap[key];
217
+ const quality = evaluateSkillQuality(skill);
218
+ return {
219
+ name: skill.name,
220
+ source: skill.sourceName,
221
+ description: skill.metadata?.description || '',
222
+ domains: skill.domains.slice(0, 3).map(d => d.domain),
223
+ quality,
224
+ };
225
+ });
226
+
227
+ // Sort by quality score descending
228
+ skills.sort((a, b) => b.quality.score - a.quality.score);
229
+
230
+ // Find the best similarity pair for the group label
231
+ const groupPairs = pairs.filter(p => {
232
+ const keyA = `${p.a.sourceName}:${p.a.name}`;
233
+ const keyB = `${p.b.sourceName}:${p.b.name}`;
234
+ return members.has(keyA) && members.has(keyB);
235
+ });
236
+ const maxSim = groupPairs.length > 0
237
+ ? Math.max(...groupPairs.map(p => p.combined))
238
+ : 0;
239
+
240
+ // Primary domain for the group
241
+ const domainCounts = {};
242
+ for (const s of skills) {
243
+ for (const d of s.domains) {
244
+ domainCounts[d] = (domainCounts[d] || 0) + 1;
245
+ }
246
+ }
247
+ const primaryDomain = Object.entries(domainCounts)
248
+ .sort((a, b) => b[1] - a[1])[0]?.[0] || 'unknown';
249
+
250
+ result.push({
251
+ domain: primaryDomain,
252
+ similarity: Math.round(maxSim * 100),
253
+ skills,
254
+ winner: skills[0],
255
+ });
256
+ }
257
+
258
+ // Sort groups by similarity descending
259
+ result.sort((a, b) => b.similarity - a.similarity);
260
+ return result;
261
+ }
262
+
263
+ /**
264
+ * Generate merge-config preference recommendations from overlap analysis.
265
+ *
266
+ * Only produces recommendations for exact-name conflicts where quality
267
+ * scores differ meaningfully (>10 points).
268
+ *
269
+ * @param {Array} overlapGroups — output of detectOverlaps
270
+ * @returns {object} preferences map { skillName: sourceName }
271
+ */
272
+ function generateRecommendations(overlapGroups) {
273
+ const preferences = {};
274
+
275
+ for (const group of overlapGroups) {
276
+ if (group.skills.length < 2) continue;
277
+
278
+ // Check for exact name matches within the group
279
+ const byName = {};
280
+ for (const s of group.skills) {
281
+ if (!byName[s.name]) byName[s.name] = [];
282
+ byName[s.name].push(s);
283
+ }
284
+
285
+ for (const [name, variants] of Object.entries(byName)) {
286
+ if (variants.length < 2) continue;
287
+ // Sort by quality
288
+ variants.sort((a, b) => b.quality.score - a.quality.score);
289
+ const best = variants[0];
290
+ const second = variants[1];
291
+ if (best.quality.score - second.quality.score >= 10) {
292
+ preferences[name] = best.source;
293
+ }
294
+ }
295
+ }
296
+
297
+ return preferences;
298
+ }
299
+
300
+ module.exports = { detectOverlaps, generateRecommendations, tokenise, jaccard, cosineTF, classifyDomains };
@@ -1,53 +1,307 @@
1
+ /* eslint-disable no-console */
2
+
1
3
  const fs = require('fs');
2
4
  const path = require('path');
3
5
 
4
6
  /**
5
- * Evaluate Claude Code skill quality
6
- * Returns { score: number, signals: string[] }
7
+ * Multi-dimensional skill quality evaluator.
8
+ *
9
+ * Scoring aligned with Anthropic's official skill authoring best practices
10
+ * (sourced from .upstream/anthropic-skills/). When that upstream updates,
11
+ * quick_validate.py constraints are re-read automatically.
12
+ *
13
+ * Dimensions (each 0-25, total 0-100):
14
+ * 1. Metadata — frontmatter completeness, description quality
15
+ * 2. Content — body depth, progressive disclosure, examples
16
+ * 3. Structure — organization, reference hygiene, anti-patterns
17
+ * 4. Actionability — workflow clarity, scripts, concrete guidance
7
18
  */
8
- function evaluateSkillQuality(skill) {
9
- const skillDoc = path.join(skill.path, 'SKILL.md');
10
- if (!fs.existsSync(skillDoc)) {
11
- return { score: 0, signals: ['missing_skill_doc'] };
19
+
20
+ // ---------------------------------------------------------------------------
21
+ // Helpers
22
+ // ---------------------------------------------------------------------------
23
+
24
+ function readSkillMd(skillPath) {
25
+ const file = path.join(skillPath, 'SKILL.md');
26
+ if (!fs.existsSync(file)) return null;
27
+ return fs.readFileSync(file, 'utf8');
28
+ }
29
+
30
+ function parseFrontmatter(content) {
31
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
32
+ if (!match) return null;
33
+ const meta = {};
34
+ match[1].split('\n').forEach((line) => {
35
+ const idx = line.indexOf(':');
36
+ if (idx === -1) return;
37
+ meta[line.slice(0, idx).trim()] = line.slice(idx + 1).trim();
38
+ });
39
+ return meta;
40
+ }
41
+
42
+ function getBody(content) {
43
+ return content.replace(/^---\n[\s\S]*?\n---\n?/, '').trim();
44
+ }
45
+
46
+ function countLines(text) {
47
+ return text ? text.split('\n').length : 0;
48
+ }
49
+
50
+ // ---------------------------------------------------------------------------
51
+ // Dimension 1: Metadata (0-25)
52
+ // ---------------------------------------------------------------------------
53
+
54
+ function scoreMetadata(content, meta) {
55
+ const signals = [];
56
+ let score = 25;
57
+
58
+ if (!meta) {
59
+ return { score: 0, signals: ['missing_frontmatter'] };
60
+ }
61
+
62
+ // name
63
+ const name = meta.name || '';
64
+ if (!name) {
65
+ score -= 5; signals.push('missing_name');
66
+ } else {
67
+ if (!/^[a-z0-9-]+$/.test(name)) {
68
+ score -= 3; signals.push('name_not_kebab_case');
69
+ }
70
+ if (name.length > 64) {
71
+ score -= 2; signals.push('name_too_long');
72
+ }
73
+ }
74
+
75
+ // description
76
+ const desc = meta.description || '';
77
+ if (!desc) {
78
+ score -= 10; signals.push('missing_description');
79
+ } else {
80
+ if (desc.length > 1024) {
81
+ score -= 3; signals.push('description_too_long');
82
+ }
83
+ if (desc.length < 20) {
84
+ score -= 3; signals.push('description_too_short');
85
+ }
86
+ // Should contain trigger context ("Use when", "when", etc.)
87
+ if (!/\b(use when|when|trigger|invoke|activate)\b/i.test(desc)) {
88
+ score -= 2; signals.push('description_missing_trigger_context');
89
+ }
90
+ // Should not summarize workflow (Anthropic anti-pattern)
91
+ if (/\b(step 1|first,? then|workflow:|process:)\b/i.test(desc)) {
92
+ score -= 2; signals.push('description_summarizes_workflow');
93
+ }
94
+ // Vague words
95
+ if (/\b(helps?|various|many|stuff|things|general)\b/i.test(desc)) {
96
+ score -= 1; signals.push('description_vague_words');
97
+ }
12
98
  }
13
99
 
14
- const content = fs.readFileSync(skillDoc, 'utf8');
100
+ return { score: Math.max(0, score), signals };
101
+ }
102
+
103
+ // ---------------------------------------------------------------------------
104
+ // Dimension 2: Content (0-25)
105
+ // ---------------------------------------------------------------------------
106
+
107
+ function scoreContent(body) {
15
108
  const signals = [];
16
- let score = 100;
109
+ let score = 25;
110
+
111
+ const lines = countLines(body);
112
+
113
+ if (lines < 5) {
114
+ score -= 10; signals.push('body_too_short');
115
+ } else if (lines > 500) {
116
+ score -= 5; signals.push('body_exceeds_500_lines');
117
+ }
118
+
119
+ // Has examples (code blocks)
120
+ const codeBlocks = (body.match(/```/g) || []).length / 2;
121
+ if (codeBlocks < 1) {
122
+ score -= 3; signals.push('no_code_examples');
123
+ }
17
124
 
18
- // Must have frontmatter
19
- if (!/^---\n[\s\S]*?\n---\n?/m.test(content)) {
20
- score -= 30;
21
- signals.push('missing_frontmatter');
125
+ // Has concrete examples (not abstract)
126
+ if (!/example|e\.g\.|for instance|sample/i.test(body)) {
127
+ score -= 2; signals.push('no_concrete_examples');
22
128
  }
23
129
 
24
- // Must have name field
25
- if (!/name:\s*[^\n]+/.test(content)) {
26
- score -= 15;
27
- signals.push('missing_name');
130
+ // Progressive disclosure references to other files
131
+ const refs = body.match(/\[.*?\]\(.*?\.md\)/g) || [];
132
+ if (lines > 300 && refs.length === 0) {
133
+ score -= 3; signals.push('long_body_no_progressive_disclosure');
28
134
  }
29
135
 
30
- // Must have description field
31
- if (!/description:\s*[^\n]+/.test(content)) {
32
- score -= 15;
33
- signals.push('missing_description');
136
+ // Check for nested references (anti-pattern: A -> B -> C)
137
+ // We just check if referenced files themselves reference other files
138
+ // This is a heuristic — actual check would need file reads
139
+ if (refs.length > 10) {
140
+ score -= 1; signals.push('excessive_references');
34
141
  }
35
142
 
36
- // Should have usage/workflow/instructions section
37
- if (!/usage|when to use|instructions|workflow|steps/i.test(content)) {
38
- score -= 10;
39
- signals.push('missing_structure');
143
+ return { score: Math.max(0, score), signals };
144
+ }
145
+
146
+ // ---------------------------------------------------------------------------
147
+ // Dimension 3: Structure (0-25)
148
+ // ---------------------------------------------------------------------------
149
+
150
+ function scoreStructure(content, body, skillPath) {
151
+ const signals = [];
152
+ let score = 25;
153
+
154
+ // Valid frontmatter already checked in metadata, but check YAML parse
155
+ if (!content.startsWith('---')) {
156
+ score -= 5; signals.push('no_frontmatter_delimiter');
40
157
  }
41
158
 
42
- // Should have reasonable length (not just frontmatter)
43
- const bodyContent = content.replace(/^---\n[\s\S]*?\n---\n?/, '').trim();
44
- if (bodyContent.length < 50) {
45
- score -= 10;
46
- signals.push('too_short');
159
+ // Sections should have headers for organization
160
+ const headers = (body.match(/^#{1,3}\s+.+/gm) || []);
161
+ if (headers.length === 0 && countLines(body) > 30) {
162
+ score -= 5; signals.push('no_section_headers');
47
163
  }
48
164
 
49
- score = Math.max(0, Math.min(100, score));
50
- return { score, signals };
165
+ // Check reference depth — files referenced from SKILL.md
166
+ const refFiles = (body.match(/\[.*?\]\(((?!http)[^)]+)\)/g) || []);
167
+ for (const ref of refFiles) {
168
+ const match = ref.match(/\(([^)]+)\)/);
169
+ if (!match) continue;
170
+ const refPath = path.join(skillPath, match[1]);
171
+ if (fs.existsSync(refPath)) {
172
+ const refContent = fs.readFileSync(refPath, 'utf8');
173
+ // Check if reference itself has deep references
174
+ const nestedRefs = (refContent.match(/\[.*?\]\(((?!http)[^)]+\.md)\)/g) || []);
175
+ if (nestedRefs.length > 0) {
176
+ score -= 2; signals.push('nested_references');
177
+ break;
178
+ }
179
+ // Long reference without table of contents
180
+ if (countLines(refContent) > 100 && !/^#{1,2}\s+.*contents|^#{1,2}\s+.*toc/im.test(refContent)) {
181
+ score -= 1; signals.push('long_reference_no_toc');
182
+ }
183
+ }
184
+ }
185
+
186
+ // Anti-patterns
187
+ if (/before \d{4}|after \d{4}|until \d{4}/i.test(body)) {
188
+ score -= 3; signals.push('time_sensitive_content');
189
+ }
190
+ if (/\\/g.test(body) && /\.exe|\.bat|\.cmd/i.test(body)) {
191
+ score -= 2; signals.push('windows_paths');
192
+ }
193
+
194
+ // Consistent terminology — check for mixed naming of same concept
195
+ // Heuristic: if "skill" and "command" both used to describe the same thing
196
+ const skillMentions = (body.match(/\bskill\b/gi) || []).length;
197
+ const commandMentions = (body.match(/\bcommand\b/gi) || []).length;
198
+ if (skillMentions > 3 && commandMentions > 3) {
199
+ score -= 1; signals.push('mixed_terminology');
200
+ }
201
+
202
+ return { score: Math.max(0, score), signals };
203
+ }
204
+
205
+ // ---------------------------------------------------------------------------
206
+ // Dimension 4: Actionability (0-25)
207
+ // ---------------------------------------------------------------------------
208
+
209
+ function scoreActionability(body, skillPath) {
210
+ const signals = [];
211
+ let score = 25;
212
+
213
+ // Has workflow/steps/checklist
214
+ const hasSteps = /step \d|^\d+\.\s|^-\s\[[ x]\]/im.test(body);
215
+ const hasWorkflow = /workflow|process|procedure|checklist/i.test(body);
216
+ if (!hasSteps && !hasWorkflow) {
217
+ score -= 5; signals.push('no_workflow_or_steps');
218
+ }
219
+
220
+ // Has checklist items (Claude can track)
221
+ if (/^-\s\[[ x]\]/m.test(body)) {
222
+ score += 0; // bonus: good practice, but don't exceed max
223
+ } else if (countLines(body) > 50) {
224
+ score -= 1; signals.push('long_skill_no_checklist');
225
+ }
226
+
227
+ // Has scripts/ directory
228
+ const scriptsDir = path.join(skillPath, 'scripts');
229
+ if (fs.existsSync(scriptsDir)) {
230
+ const scripts = fs.readdirSync(scriptsDir).filter(f => !f.startsWith('.'));
231
+ if (scripts.length > 0) {
232
+ // Good: has executable tools
233
+ }
234
+ }
235
+
236
+ // "Do X" or "Run X" — clear execution intent
237
+ if (!/\b(run|execute|invoke|call)\b/i.test(body) && countLines(body) > 20) {
238
+ score -= 2; signals.push('no_clear_execution_intent');
239
+ }
240
+
241
+ // Error handling guidance
242
+ if (!/\b(error|fail|fallback|if .* fails|when .* fails)\b/i.test(body) && countLines(body) > 50) {
243
+ score -= 2; signals.push('no_error_handling_guidance');
244
+ }
245
+
246
+ // Anti-pattern: purely descriptive, no actionable instructions
247
+ const imperatives = (body.match(/\b(must|should|always|never|do not|ensure|verify|check|create|use|add|remove|run)\b/gi) || []);
248
+ if (imperatives.length < 3 && countLines(body) > 20) {
249
+ score -= 3; signals.push('purely_descriptive');
250
+ }
251
+
252
+ return { score: Math.max(0, score), signals };
253
+ }
254
+
255
+ // ---------------------------------------------------------------------------
256
+ // Public API
257
+ // ---------------------------------------------------------------------------
258
+
259
+ /**
260
+ * Evaluate a single skill's quality.
261
+ *
262
+ * @param {object} skill — { name, path, metadata }
263
+ * @returns {{ score: number, dimensions: object, signals: string[] }}
264
+ */
265
+ function evaluateSkillQuality(skill) {
266
+ const content = readSkillMd(skill.path);
267
+ if (!content) {
268
+ return {
269
+ score: 0,
270
+ dimensions: { metadata: 0, content: 0, structure: 0, actionability: 0 },
271
+ signals: ['missing_skill_md'],
272
+ };
273
+ }
274
+
275
+ const meta = parseFrontmatter(content) || skill.metadata || {};
276
+ const body = getBody(content);
277
+
278
+ const d1 = scoreMetadata(content, meta);
279
+ const d2 = scoreContent(body);
280
+ const d3 = scoreStructure(content, body, skill.path);
281
+ const d4 = scoreActionability(body, skill.path);
282
+
283
+ const total = d1.score + d2.score + d3.score + d4.score;
284
+ const allSignals = [...d1.signals, ...d2.signals, ...d3.signals, ...d4.signals];
285
+
286
+ return {
287
+ score: total,
288
+ dimensions: {
289
+ metadata: d1.score,
290
+ content: d2.score,
291
+ structure: d3.score,
292
+ actionability: d4.score,
293
+ },
294
+ signals: allSignals,
295
+ };
296
+ }
297
+
298
+ /**
299
+ * Get the path to Anthropic's upstream quick_validate.py (if available).
300
+ */
301
+ function getUpstreamValidatorPath(root) {
302
+ const p = path.join(root, '.upstream', 'anthropic-skills', 'skills',
303
+ 'skill-creator', 'scripts', 'quick_validate.py');
304
+ return fs.existsSync(p) ? p : null;
51
305
  }
52
306
 
53
- module.exports = { evaluateSkillQuality };
307
+ module.exports = { evaluateSkillQuality, getUpstreamValidatorPath };
@@ -7,5 +7,16 @@
7
7
  { "name": "oh-my-claudecode", "priority": 2 },
8
8
  { "name": "superpowers", "priority": 3 }
9
9
  ],
10
- "preferences": {}
10
+ "preferences": {},
11
+ "exclude": {
12
+ "skills": [
13
+ "ask",
14
+ "ccg",
15
+ "multi-model-research",
16
+ "test-gen",
17
+ "release",
18
+ "omc-teams",
19
+ "using-superpowers"
20
+ ]
21
+ }
11
22
  }