@khalidsaidi/skillrunner 0.1.2 → 0.1.3

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 (1112) hide show
  1. package/README.md +6 -4
  2. package/dist/cli.js +1904 -89
  3. package/dist/cli.js.map +1 -1
  4. package/dist/registry/dist/index.json +1858 -0
  5. package/dist/registry/skills/anthropic-algorithmic-art/SKILL.md +420 -0
  6. package/dist/registry/skills/anthropic-algorithmic-art/upstream/LICENSE.txt +202 -0
  7. package/dist/registry/skills/anthropic-algorithmic-art/upstream/SKILL.md +405 -0
  8. package/dist/registry/skills/anthropic-algorithmic-art/upstream/templates/generator_template.js +223 -0
  9. package/dist/registry/skills/anthropic-algorithmic-art/upstream/templates/viewer.html +599 -0
  10. package/dist/registry/skills/anthropic-brand-guidelines/SKILL.md +88 -0
  11. package/dist/registry/skills/anthropic-brand-guidelines/upstream/LICENSE.txt +202 -0
  12. package/dist/registry/skills/anthropic-brand-guidelines/upstream/SKILL.md +73 -0
  13. package/dist/registry/skills/anthropic-canvas-design/SKILL.md +145 -0
  14. package/dist/registry/skills/anthropic-canvas-design/upstream/LICENSE.txt +202 -0
  15. package/dist/registry/skills/anthropic-canvas-design/upstream/SKILL.md +130 -0
  16. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  17. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  18. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  19. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BigShoulders-OFL.txt +93 -0
  20. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  21. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Boldonse-OFL.txt +93 -0
  22. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Boldonse-Regular.ttf +0 -0
  23. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  24. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  25. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  26. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  27. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  28. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  29. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  30. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/DMMono-OFL.txt +93 -0
  31. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/DMMono-Regular.ttf +0 -0
  32. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/EricaOne-OFL.txt +94 -0
  33. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/EricaOne-Regular.ttf +0 -0
  34. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/GeistMono-Bold.ttf +0 -0
  35. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/GeistMono-OFL.txt +93 -0
  36. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/GeistMono-Regular.ttf +0 -0
  37. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Gloock-OFL.txt +93 -0
  38. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Gloock-Regular.ttf +0 -0
  39. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  40. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  41. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  42. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  43. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  44. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  45. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  46. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  47. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  48. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  49. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  50. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  51. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  52. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  53. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Italiana-OFL.txt +93 -0
  54. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Italiana-Regular.ttf +0 -0
  55. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  56. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  57. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  58. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Jura-Light.ttf +0 -0
  59. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Jura-Medium.ttf +0 -0
  60. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Jura-OFL.txt +93 -0
  61. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  62. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  63. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-Bold.ttf +0 -0
  64. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  65. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-Italic.ttf +0 -0
  66. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-OFL.txt +93 -0
  67. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-Regular.ttf +0 -0
  68. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NationalPark-Bold.ttf +0 -0
  69. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NationalPark-OFL.txt +93 -0
  70. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NationalPark-Regular.ttf +0 -0
  71. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  72. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  73. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Outfit-Bold.ttf +0 -0
  74. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Outfit-OFL.txt +93 -0
  75. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Outfit-Regular.ttf +0 -0
  76. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  77. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/PixelifySans-OFL.txt +93 -0
  78. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/PoiretOne-OFL.txt +93 -0
  79. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  80. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  81. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/RedHatMono-OFL.txt +93 -0
  82. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  83. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Silkscreen-OFL.txt +93 -0
  84. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  85. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  86. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/SmoochSans-OFL.txt +93 -0
  87. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Tektur-Medium.ttf +0 -0
  88. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Tektur-OFL.txt +93 -0
  89. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Tektur-Regular.ttf +0 -0
  90. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-Bold.ttf +0 -0
  91. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  92. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-Italic.ttf +0 -0
  93. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-OFL.txt +93 -0
  94. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-Regular.ttf +0 -0
  95. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/YoungSerif-OFL.txt +93 -0
  96. package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  97. package/dist/registry/skills/anthropic-doc-coauthoring/SKILL.md +391 -0
  98. package/dist/registry/skills/anthropic-doc-coauthoring/upstream/SKILL.md +375 -0
  99. package/dist/registry/skills/anthropic-docx/SKILL.md +496 -0
  100. package/dist/registry/skills/anthropic-docx/upstream/LICENSE.txt +30 -0
  101. package/dist/registry/skills/anthropic-docx/upstream/SKILL.md +481 -0
  102. package/dist/registry/skills/anthropic-docx/upstream/scripts/__init__.py +1 -0
  103. package/dist/registry/skills/anthropic-docx/upstream/scripts/accept_changes.py +135 -0
  104. package/dist/registry/skills/anthropic-docx/upstream/scripts/comment.py +318 -0
  105. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/helpers/__init__.py +0 -0
  106. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/helpers/merge_runs.py +199 -0
  107. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/helpers/simplify_redlines.py +197 -0
  108. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/pack.py +159 -0
  109. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  110. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  111. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  112. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  113. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  114. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  115. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  116. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  117. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  118. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  119. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  120. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  121. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  122. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  123. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  124. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  125. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  126. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  127. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  128. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  129. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  130. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  131. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  132. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  133. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  134. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  135. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  136. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  137. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  138. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  139. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  140. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/mce/mc.xsd +75 -0
  141. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  142. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  143. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  144. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  145. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  146. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  147. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  148. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/soffice.py +183 -0
  149. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/unpack.py +132 -0
  150. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validate.py +111 -0
  151. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/__init__.py +15 -0
  152. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/base.py +847 -0
  153. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/docx.py +446 -0
  154. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/pptx.py +275 -0
  155. package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/redlining.py +247 -0
  156. package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/comments.xml +3 -0
  157. package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/commentsExtended.xml +3 -0
  158. package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/commentsExtensible.xml +3 -0
  159. package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/commentsIds.xml +3 -0
  160. package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/people.xml +3 -0
  161. package/dist/registry/skills/anthropic-frontend-design/SKILL.md +57 -0
  162. package/dist/registry/skills/anthropic-frontend-design/upstream/LICENSE.txt +177 -0
  163. package/dist/registry/skills/anthropic-frontend-design/upstream/SKILL.md +42 -0
  164. package/dist/registry/skills/anthropic-internal-comms/SKILL.md +47 -0
  165. package/dist/registry/skills/anthropic-internal-comms/upstream/LICENSE.txt +202 -0
  166. package/dist/registry/skills/anthropic-internal-comms/upstream/SKILL.md +32 -0
  167. package/dist/registry/skills/anthropic-internal-comms/upstream/examples/3p-updates.md +47 -0
  168. package/dist/registry/skills/anthropic-internal-comms/upstream/examples/company-newsletter.md +65 -0
  169. package/dist/registry/skills/anthropic-internal-comms/upstream/examples/faq-answers.md +30 -0
  170. package/dist/registry/skills/anthropic-internal-comms/upstream/examples/general-comms.md +16 -0
  171. package/dist/registry/skills/anthropic-mcp-builder/SKILL.md +251 -0
  172. package/dist/registry/skills/anthropic-mcp-builder/upstream/LICENSE.txt +202 -0
  173. package/dist/registry/skills/anthropic-mcp-builder/upstream/SKILL.md +236 -0
  174. package/dist/registry/skills/anthropic-mcp-builder/upstream/reference/evaluation.md +602 -0
  175. package/dist/registry/skills/anthropic-mcp-builder/upstream/reference/mcp_best_practices.md +249 -0
  176. package/dist/registry/skills/anthropic-mcp-builder/upstream/reference/node_mcp_server.md +970 -0
  177. package/dist/registry/skills/anthropic-mcp-builder/upstream/reference/python_mcp_server.md +719 -0
  178. package/dist/registry/skills/anthropic-mcp-builder/upstream/scripts/connections.py +151 -0
  179. package/dist/registry/skills/anthropic-mcp-builder/upstream/scripts/evaluation.py +373 -0
  180. package/dist/registry/skills/anthropic-mcp-builder/upstream/scripts/example_evaluation.xml +22 -0
  181. package/dist/registry/skills/anthropic-mcp-builder/upstream/scripts/requirements.txt +2 -0
  182. package/dist/registry/skills/anthropic-pdf/SKILL.md +329 -0
  183. package/dist/registry/skills/anthropic-pdf/upstream/LICENSE.txt +30 -0
  184. package/dist/registry/skills/anthropic-pdf/upstream/SKILL.md +314 -0
  185. package/dist/registry/skills/anthropic-pdf/upstream/forms.md +294 -0
  186. package/dist/registry/skills/anthropic-pdf/upstream/reference.md +612 -0
  187. package/dist/registry/skills/anthropic-pdf/upstream/scripts/check_bounding_boxes.py +65 -0
  188. package/dist/registry/skills/anthropic-pdf/upstream/scripts/check_fillable_fields.py +11 -0
  189. package/dist/registry/skills/anthropic-pdf/upstream/scripts/convert_pdf_to_images.py +33 -0
  190. package/dist/registry/skills/anthropic-pdf/upstream/scripts/create_validation_image.py +37 -0
  191. package/dist/registry/skills/anthropic-pdf/upstream/scripts/extract_form_field_info.py +122 -0
  192. package/dist/registry/skills/anthropic-pdf/upstream/scripts/extract_form_structure.py +115 -0
  193. package/dist/registry/skills/anthropic-pdf/upstream/scripts/fill_fillable_fields.py +98 -0
  194. package/dist/registry/skills/anthropic-pdf/upstream/scripts/fill_pdf_form_with_annotations.py +107 -0
  195. package/dist/registry/skills/anthropic-pptx/SKILL.md +247 -0
  196. package/dist/registry/skills/anthropic-pptx/upstream/LICENSE.txt +30 -0
  197. package/dist/registry/skills/anthropic-pptx/upstream/SKILL.md +232 -0
  198. package/dist/registry/skills/anthropic-pptx/upstream/editing.md +205 -0
  199. package/dist/registry/skills/anthropic-pptx/upstream/pptxgenjs.md +420 -0
  200. package/dist/registry/skills/anthropic-pptx/upstream/scripts/__init__.py +0 -0
  201. package/dist/registry/skills/anthropic-pptx/upstream/scripts/add_slide.py +195 -0
  202. package/dist/registry/skills/anthropic-pptx/upstream/scripts/clean.py +286 -0
  203. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/helpers/__init__.py +0 -0
  204. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/helpers/merge_runs.py +199 -0
  205. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/helpers/simplify_redlines.py +197 -0
  206. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/pack.py +159 -0
  207. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  208. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  209. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  210. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  211. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  212. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  213. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  214. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  215. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  216. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  217. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  218. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  219. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  220. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  221. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  222. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  223. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  224. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  225. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  226. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  227. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  228. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  229. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  230. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  231. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  232. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  233. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  234. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  235. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  236. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  237. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  238. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/mce/mc.xsd +75 -0
  239. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  240. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  241. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  242. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  243. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  244. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  245. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  246. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/soffice.py +183 -0
  247. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/unpack.py +132 -0
  248. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validate.py +111 -0
  249. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/__init__.py +15 -0
  250. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/base.py +847 -0
  251. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/docx.py +446 -0
  252. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/pptx.py +275 -0
  253. package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/redlining.py +247 -0
  254. package/dist/registry/skills/anthropic-pptx/upstream/scripts/thumbnail.py +289 -0
  255. package/dist/registry/skills/anthropic-skill-creator/SKILL.md +372 -0
  256. package/dist/registry/skills/anthropic-skill-creator/upstream/LICENSE.txt +202 -0
  257. package/dist/registry/skills/anthropic-skill-creator/upstream/SKILL.md +357 -0
  258. package/dist/registry/skills/anthropic-skill-creator/upstream/references/output-patterns.md +82 -0
  259. package/dist/registry/skills/anthropic-skill-creator/upstream/references/workflows.md +28 -0
  260. package/dist/registry/skills/anthropic-skill-creator/upstream/scripts/init_skill.py +303 -0
  261. package/dist/registry/skills/anthropic-skill-creator/upstream/scripts/package_skill.py +110 -0
  262. package/dist/registry/skills/anthropic-skill-creator/upstream/scripts/quick_validate.py +103 -0
  263. package/dist/registry/skills/anthropic-slack-gif-creator/SKILL.md +269 -0
  264. package/dist/registry/skills/anthropic-slack-gif-creator/upstream/LICENSE.txt +202 -0
  265. package/dist/registry/skills/anthropic-slack-gif-creator/upstream/SKILL.md +254 -0
  266. package/dist/registry/skills/anthropic-slack-gif-creator/upstream/core/easing.py +234 -0
  267. package/dist/registry/skills/anthropic-slack-gif-creator/upstream/core/frame_composer.py +176 -0
  268. package/dist/registry/skills/anthropic-slack-gif-creator/upstream/core/gif_builder.py +269 -0
  269. package/dist/registry/skills/anthropic-slack-gif-creator/upstream/core/validators.py +136 -0
  270. package/dist/registry/skills/anthropic-slack-gif-creator/upstream/requirements.txt +4 -0
  271. package/dist/registry/skills/anthropic-theme-factory/SKILL.md +73 -0
  272. package/dist/registry/skills/anthropic-theme-factory/upstream/LICENSE.txt +202 -0
  273. package/dist/registry/skills/anthropic-theme-factory/upstream/SKILL.md +59 -0
  274. package/dist/registry/skills/anthropic-theme-factory/upstream/theme-showcase.pdf +0 -0
  275. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/arctic-frost.md +19 -0
  276. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/botanical-garden.md +19 -0
  277. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/desert-rose.md +19 -0
  278. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/forest-canopy.md +19 -0
  279. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/golden-hour.md +19 -0
  280. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/midnight-galaxy.md +19 -0
  281. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/modern-minimalist.md +19 -0
  282. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/ocean-depths.md +19 -0
  283. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/sunset-boulevard.md +19 -0
  284. package/dist/registry/skills/anthropic-theme-factory/upstream/themes/tech-innovation.md +19 -0
  285. package/dist/registry/skills/anthropic-web-artifacts-builder/SKILL.md +89 -0
  286. package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/LICENSE.txt +202 -0
  287. package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/SKILL.md +74 -0
  288. package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/scripts/bundle-artifact.sh +54 -0
  289. package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/scripts/init-artifact.sh +322 -0
  290. package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/scripts/shadcn-components.tar.gz +0 -0
  291. package/dist/registry/skills/anthropic-webapp-testing/SKILL.md +111 -0
  292. package/dist/registry/skills/anthropic-webapp-testing/upstream/LICENSE.txt +202 -0
  293. package/dist/registry/skills/anthropic-webapp-testing/upstream/SKILL.md +96 -0
  294. package/dist/registry/skills/anthropic-webapp-testing/upstream/examples/console_logging.py +35 -0
  295. package/dist/registry/skills/anthropic-webapp-testing/upstream/examples/element_discovery.py +40 -0
  296. package/dist/registry/skills/anthropic-webapp-testing/upstream/examples/static_html_automation.py +33 -0
  297. package/dist/registry/skills/anthropic-webapp-testing/upstream/scripts/with_server.py +106 -0
  298. package/dist/registry/skills/anthropic-xlsx/SKILL.md +307 -0
  299. package/dist/registry/skills/anthropic-xlsx/upstream/LICENSE.txt +30 -0
  300. package/dist/registry/skills/anthropic-xlsx/upstream/SKILL.md +292 -0
  301. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/helpers/__init__.py +0 -0
  302. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/helpers/merge_runs.py +199 -0
  303. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/helpers/simplify_redlines.py +197 -0
  304. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/pack.py +159 -0
  305. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  306. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  307. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  308. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  309. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  310. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  311. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  312. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  313. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  314. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  315. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  316. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  317. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  318. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  319. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  320. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  321. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  322. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  323. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  324. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  325. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  326. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  327. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  328. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  329. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  330. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  331. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  332. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  333. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  334. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  335. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  336. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/mce/mc.xsd +75 -0
  337. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  338. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  339. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  340. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  341. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  342. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  343. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  344. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/soffice.py +183 -0
  345. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/unpack.py +132 -0
  346. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validate.py +111 -0
  347. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/__init__.py +15 -0
  348. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/base.py +847 -0
  349. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/docx.py +446 -0
  350. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/pptx.py +275 -0
  351. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/redlining.py +247 -0
  352. package/dist/registry/skills/anthropic-xlsx/upstream/scripts/recalc.py +184 -0
  353. package/dist/registry/skills/changelog-from-commits/SKILL.md +17 -0
  354. package/dist/registry/skills/changelog-from-commits/scripts/check.sh +5 -0
  355. package/dist/registry/skills/changelog-from-commits/scripts/run.sh +25 -0
  356. package/dist/registry/skills/code-review-checklist/SKILL.md +19 -0
  357. package/dist/registry/skills/debugging-playbook/SKILL.md +17 -0
  358. package/dist/registry/skills/dependency-audit-report/SKILL.md +18 -0
  359. package/dist/registry/skills/dependency-audit-report/scripts/check.sh +5 -0
  360. package/dist/registry/skills/dependency-audit-report/scripts/run.sh +9 -0
  361. package/dist/registry/skills/dependency-security-fix/SKILL.md +19 -0
  362. package/dist/registry/skills/dependency-security-fix/scripts/check.sh +8 -0
  363. package/dist/registry/skills/dependency-security-fix/scripts/run.sh +28 -0
  364. package/dist/registry/skills/deployment-checklist/SKILL.md +18 -0
  365. package/dist/registry/skills/docs-styleguide/SKILL.md +16 -0
  366. package/dist/registry/skills/git-commit-style/SKILL.md +16 -0
  367. package/dist/registry/skills/git-status-report/SKILL.md +17 -0
  368. package/dist/registry/skills/git-status-report/scripts/check.sh +5 -0
  369. package/dist/registry/skills/git-status-report/scripts/run.sh +16 -0
  370. package/dist/registry/skills/node-doctor/SKILL.md +31 -0
  371. package/dist/registry/skills/node-doctor/scripts/check.sh +5 -0
  372. package/dist/registry/skills/node-doctor/scripts/run.sh +12 -0
  373. package/dist/registry/skills/openai-cloudflare-deploy/SKILL.md +240 -0
  374. package/dist/registry/skills/openai-cloudflare-deploy/upstream/LICENSE.txt +201 -0
  375. package/dist/registry/skills/openai-cloudflare-deploy/upstream/SKILL.md +224 -0
  376. package/dist/registry/skills/openai-cloudflare-deploy/upstream/agents/openai.yaml +6 -0
  377. package/dist/registry/skills/openai-cloudflare-deploy/upstream/assets/cloudflare-small.svg +3 -0
  378. package/dist/registry/skills/openai-cloudflare-deploy/upstream/assets/cloudflare.png +0 -0
  379. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/README.md +89 -0
  380. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/api.md +190 -0
  381. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/configuration.md +182 -0
  382. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/gotchas.md +158 -0
  383. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/patterns.md +192 -0
  384. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/README.md +175 -0
  385. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/configuration.md +111 -0
  386. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/dynamic-routing.md +82 -0
  387. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/features.md +96 -0
  388. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/sdk-integration.md +114 -0
  389. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/troubleshooting.md +88 -0
  390. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/README.md +138 -0
  391. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/api.md +87 -0
  392. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/configuration.md +88 -0
  393. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/gotchas.md +81 -0
  394. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/patterns.md +85 -0
  395. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/README.md +92 -0
  396. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/api.md +112 -0
  397. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/configuration.md +112 -0
  398. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/gotchas.md +85 -0
  399. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/patterns.md +83 -0
  400. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/README.md +65 -0
  401. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/api.md +204 -0
  402. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/configuration.md +160 -0
  403. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/gotchas.md +225 -0
  404. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/patterns.md +204 -0
  405. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/README.md +44 -0
  406. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/api.md +141 -0
  407. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/configuration.md +192 -0
  408. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/gotchas.md +125 -0
  409. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/patterns.md +180 -0
  410. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/README.md +90 -0
  411. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/api.md +240 -0
  412. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/configuration.md +197 -0
  413. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/gotchas.md +111 -0
  414. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/patterns.md +104 -0
  415. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/README.md +122 -0
  416. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/api.md +203 -0
  417. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/configuration.md +188 -0
  418. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/gotchas.md +208 -0
  419. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/patterns.md +200 -0
  420. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/README.md +94 -0
  421. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/api.md +169 -0
  422. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/configuration.md +163 -0
  423. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/gotchas.md +114 -0
  424. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/patterns.md +182 -0
  425. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/README.md +78 -0
  426. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/api.md +108 -0
  427. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/configuration.md +78 -0
  428. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/gotchas.md +88 -0
  429. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/patterns.md +91 -0
  430. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/README.md +111 -0
  431. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/api.md +71 -0
  432. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/configuration.md +81 -0
  433. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/gotchas.md +92 -0
  434. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/patterns.md +82 -0
  435. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/README.md +147 -0
  436. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/api.md +194 -0
  437. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/configuration.md +169 -0
  438. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/gotchas.md +132 -0
  439. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/patterns.md +197 -0
  440. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/README.md +85 -0
  441. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/api.md +187 -0
  442. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/configuration.md +188 -0
  443. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/gotchas.md +178 -0
  444. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/patterns.md +202 -0
  445. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/README.md +99 -0
  446. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/api.md +196 -0
  447. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/configuration.md +180 -0
  448. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/gotchas.md +199 -0
  449. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/patterns.md +190 -0
  450. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/README.md +133 -0
  451. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/api.md +196 -0
  452. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/configuration.md +188 -0
  453. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/gotchas.md +98 -0
  454. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/patterns.md +189 -0
  455. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/README.md +41 -0
  456. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/api.md +164 -0
  457. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/configuration.md +93 -0
  458. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/gotchas.md +107 -0
  459. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/patterns.md +174 -0
  460. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/README.md +75 -0
  461. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/api.md +102 -0
  462. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/configuration.md +112 -0
  463. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/gotchas.md +150 -0
  464. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/patterns.md +182 -0
  465. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/testing.md +183 -0
  466. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/README.md +185 -0
  467. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/api.md +187 -0
  468. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/configuration.md +160 -0
  469. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/gotchas.md +197 -0
  470. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/patterns.md +201 -0
  471. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/README.md +89 -0
  472. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/api.md +195 -0
  473. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/configuration.md +186 -0
  474. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/gotchas.md +196 -0
  475. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/patterns.md +229 -0
  476. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/README.md +151 -0
  477. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/api.md +237 -0
  478. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/configuration.md +112 -0
  479. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/gotchas.md +125 -0
  480. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/patterns.md +102 -0
  481. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/README.md +82 -0
  482. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/api.md +143 -0
  483. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/configuration.md +159 -0
  484. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/gotchas.md +77 -0
  485. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/patterns.md +190 -0
  486. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/README.md +61 -0
  487. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/api.md +96 -0
  488. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/configuration.md +211 -0
  489. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/gotchas.md +99 -0
  490. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/patterns.md +115 -0
  491. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/README.md +89 -0
  492. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/api.md +160 -0
  493. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/configuration.md +144 -0
  494. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/gotchas.md +131 -0
  495. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/patterns.md +196 -0
  496. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/README.md +105 -0
  497. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/api.md +187 -0
  498. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/configuration.md +173 -0
  499. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/gotchas.md +160 -0
  500. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/patterns.md +181 -0
  501. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/README.md +99 -0
  502. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/api.md +199 -0
  503. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/configuration.md +114 -0
  504. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/gotchas.md +165 -0
  505. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/patterns.md +166 -0
  506. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/README.md +87 -0
  507. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/api.md +164 -0
  508. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/configuration.md +169 -0
  509. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/gotchas.md +115 -0
  510. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/patterns.md +105 -0
  511. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/README.md +88 -0
  512. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/api.md +204 -0
  513. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/configuration.md +201 -0
  514. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/gotchas.md +203 -0
  515. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/patterns.md +204 -0
  516. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/README.md +98 -0
  517. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/api.md +143 -0
  518. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/configuration.md +122 -0
  519. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/gotchas.md +94 -0
  520. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/patterns.md +137 -0
  521. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/README.md +105 -0
  522. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/api.md +208 -0
  523. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/configuration.md +98 -0
  524. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/gotchas.md +80 -0
  525. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/patterns.md +87 -0
  526. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/README.md +100 -0
  527. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/api.md +200 -0
  528. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/configuration.md +198 -0
  529. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/gotchas.md +181 -0
  530. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/patterns.md +191 -0
  531. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/README.md +96 -0
  532. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/api.md +206 -0
  533. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/configuration.md +144 -0
  534. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/gotchas.md +206 -0
  535. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/patterns.md +220 -0
  536. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/README.md +95 -0
  537. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/api.md +200 -0
  538. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/configuration.md +165 -0
  539. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/gotchas.md +190 -0
  540. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/patterns.md +193 -0
  541. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/README.md +149 -0
  542. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/api.md +199 -0
  543. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/configuration.md +198 -0
  544. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/gotchas.md +170 -0
  545. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/patterns.md +191 -0
  546. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/README.md +128 -0
  547. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/api.md +158 -0
  548. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/configuration.md +147 -0
  549. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/gotchas.md +212 -0
  550. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/patterns.md +222 -0
  551. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/README.md +65 -0
  552. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/api.md +158 -0
  553. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/configuration.md +137 -0
  554. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/gotchas.md +133 -0
  555. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/patterns.md +174 -0
  556. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/README.md +113 -0
  557. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/api.md +212 -0
  558. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/configuration.md +203 -0
  559. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/gotchas.md +169 -0
  560. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/patterns.md +223 -0
  561. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/README.md +96 -0
  562. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/api.md +198 -0
  563. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/configuration.md +143 -0
  564. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/gotchas.md +194 -0
  565. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/patterns.md +201 -0
  566. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/README.md +74 -0
  567. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/api.md +200 -0
  568. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/configuration.md +185 -0
  569. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/gotchas.md +97 -0
  570. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/patterns.md +207 -0
  571. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/README.md +138 -0
  572. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/api.md +183 -0
  573. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/configuration.md +196 -0
  574. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/gotchas.md +174 -0
  575. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/patterns.md +183 -0
  576. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/README.md +68 -0
  577. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/api.md +198 -0
  578. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/configuration.md +227 -0
  579. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/gotchas.md +86 -0
  580. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/patterns.md +135 -0
  581. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/README.md +52 -0
  582. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/api.md +181 -0
  583. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/configuration.md +194 -0
  584. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/gotchas.md +145 -0
  585. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/patterns.md +196 -0
  586. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/README.md +65 -0
  587. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/api.md +199 -0
  588. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/configuration.md +186 -0
  589. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/gotchas.md +162 -0
  590. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/patterns.md +189 -0
  591. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/README.md +114 -0
  592. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/api-live.md +195 -0
  593. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/api.md +199 -0
  594. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/configuration.md +141 -0
  595. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/gotchas.md +130 -0
  596. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/patterns.md +184 -0
  597. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/README.md +89 -0
  598. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/api.md +200 -0
  599. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/configuration.md +176 -0
  600. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/gotchas.md +192 -0
  601. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/patterns.md +180 -0
  602. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/README.md +102 -0
  603. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/api.md +178 -0
  604. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/configuration.md +197 -0
  605. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/gotchas.md +150 -0
  606. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/patterns.md +174 -0
  607. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/README.md +129 -0
  608. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/api.md +193 -0
  609. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/configuration.md +157 -0
  610. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/gotchas.md +147 -0
  611. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/networking.md +168 -0
  612. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/patterns.md +192 -0
  613. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/README.md +82 -0
  614. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/api.md +239 -0
  615. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/configuration.md +179 -0
  616. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/gotchas.md +231 -0
  617. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/patterns.md +213 -0
  618. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/README.md +99 -0
  619. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/api.md +240 -0
  620. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/configuration.md +222 -0
  621. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/gotchas.md +218 -0
  622. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/patterns.md +193 -0
  623. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/README.md +133 -0
  624. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/api.md +88 -0
  625. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/configuration.md +88 -0
  626. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/gotchas.md +76 -0
  627. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/patterns.md +90 -0
  628. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/README.md +113 -0
  629. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/api.md +202 -0
  630. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/configuration.md +203 -0
  631. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/gotchas.md +204 -0
  632. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/patterns.md +197 -0
  633. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/README.md +140 -0
  634. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/configuration.md +76 -0
  635. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/gotchas.md +82 -0
  636. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/integration.md +60 -0
  637. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/patterns.md +91 -0
  638. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/README.md +78 -0
  639. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/api.md +185 -0
  640. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/configuration.md +183 -0
  641. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/gotchas.md +139 -0
  642. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/patterns.md +192 -0
  643. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/README.md +108 -0
  644. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/api.md +195 -0
  645. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/configuration.md +185 -0
  646. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/frameworks.md +197 -0
  647. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/gotchas.md +136 -0
  648. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/patterns.md +198 -0
  649. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/README.md +197 -0
  650. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/api.md +112 -0
  651. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/configuration.md +97 -0
  652. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/gotchas.md +114 -0
  653. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/patterns.md +120 -0
  654. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/README.md +89 -0
  655. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/api.md +196 -0
  656. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/configuration.md +167 -0
  657. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/gotchas.md +134 -0
  658. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/patterns.md +188 -0
  659. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/README.md +127 -0
  660. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/api.md +101 -0
  661. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/configuration.md +163 -0
  662. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/gotchas.md +88 -0
  663. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/patterns.md +132 -0
  664. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/README.md +127 -0
  665. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/api.md +202 -0
  666. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/configuration.md +147 -0
  667. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/gotchas.md +167 -0
  668. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/patterns.md +209 -0
  669. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/README.md +69 -0
  670. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/api.md +185 -0
  671. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/configuration.md +151 -0
  672. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/gotchas.md +97 -0
  673. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/patterns.md +175 -0
  674. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/README.md +141 -0
  675. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/api.md +188 -0
  676. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/auth.md +73 -0
  677. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/configuration.md +197 -0
  678. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/gotchas.md +197 -0
  679. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/patterns.md +209 -0
  680. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  681. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/README.md +111 -0
  682. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/api.md +112 -0
  683. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/configuration.md +90 -0
  684. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/gotchas.md +81 -0
  685. package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/patterns.md +74 -0
  686. package/dist/registry/skills/openai-develop-web-game/SKILL.md +164 -0
  687. package/dist/registry/skills/openai-develop-web-game/upstream/LICENSE.txt +201 -0
  688. package/dist/registry/skills/openai-develop-web-game/upstream/SKILL.md +149 -0
  689. package/dist/registry/skills/openai-develop-web-game/upstream/agents/openai.yaml +6 -0
  690. package/dist/registry/skills/openai-develop-web-game/upstream/assets/game-small.svg +4 -0
  691. package/dist/registry/skills/openai-develop-web-game/upstream/assets/game.png +0 -0
  692. package/dist/registry/skills/openai-develop-web-game/upstream/references/action_payloads.json +7 -0
  693. package/dist/registry/skills/openai-develop-web-game/upstream/scripts/web_game_playwright_client.js +356 -0
  694. package/dist/registry/skills/openai-doc/SKILL.md +95 -0
  695. package/dist/registry/skills/openai-doc/upstream/LICENSE.txt +201 -0
  696. package/dist/registry/skills/openai-doc/upstream/SKILL.md +80 -0
  697. package/dist/registry/skills/openai-doc/upstream/agents/openai.yaml +6 -0
  698. package/dist/registry/skills/openai-doc/upstream/assets/doc-small.svg +3 -0
  699. package/dist/registry/skills/openai-doc/upstream/assets/doc.png +0 -0
  700. package/dist/registry/skills/openai-doc/upstream/scripts/render_docx.py +296 -0
  701. package/dist/registry/skills/openai-figma/SKILL.md +58 -0
  702. package/dist/registry/skills/openai-figma/upstream/LICENSE.txt +202 -0
  703. package/dist/registry/skills/openai-figma/upstream/SKILL.md +42 -0
  704. package/dist/registry/skills/openai-figma/upstream/agents/openai.yaml +14 -0
  705. package/dist/registry/skills/openai-figma/upstream/assets/figma-small.svg +3 -0
  706. package/dist/registry/skills/openai-figma/upstream/assets/figma.png +0 -0
  707. package/dist/registry/skills/openai-figma/upstream/assets/icon.svg +28 -0
  708. package/dist/registry/skills/openai-figma/upstream/references/figma-mcp-config.md +35 -0
  709. package/dist/registry/skills/openai-figma/upstream/references/figma-tools-and-prompts.md +34 -0
  710. package/dist/registry/skills/openai-figma-implement-design/SKILL.md +279 -0
  711. package/dist/registry/skills/openai-figma-implement-design/upstream/LICENSE.txt +202 -0
  712. package/dist/registry/skills/openai-figma-implement-design/upstream/SKILL.md +264 -0
  713. package/dist/registry/skills/openai-figma-implement-design/upstream/agents/openai.yaml +14 -0
  714. package/dist/registry/skills/openai-figma-implement-design/upstream/assets/figma-small.svg +3 -0
  715. package/dist/registry/skills/openai-figma-implement-design/upstream/assets/figma.png +0 -0
  716. package/dist/registry/skills/openai-figma-implement-design/upstream/assets/icon.svg +28 -0
  717. package/dist/registry/skills/openai-gh-address-comments/SKILL.md +39 -0
  718. package/dist/registry/skills/openai-gh-address-comments/upstream/LICENSE.txt +202 -0
  719. package/dist/registry/skills/openai-gh-address-comments/upstream/SKILL.md +25 -0
  720. package/dist/registry/skills/openai-gh-address-comments/upstream/agents/openai.yaml +6 -0
  721. package/dist/registry/skills/openai-gh-address-comments/upstream/assets/github-small.svg +3 -0
  722. package/dist/registry/skills/openai-gh-address-comments/upstream/assets/github.png +0 -0
  723. package/dist/registry/skills/openai-gh-address-comments/upstream/scripts/fetch_comments.py +237 -0
  724. package/dist/registry/skills/openai-gh-fix-ci/SKILL.md +84 -0
  725. package/dist/registry/skills/openai-gh-fix-ci/upstream/LICENSE.txt +201 -0
  726. package/dist/registry/skills/openai-gh-fix-ci/upstream/SKILL.md +69 -0
  727. package/dist/registry/skills/openai-gh-fix-ci/upstream/agents/openai.yaml +6 -0
  728. package/dist/registry/skills/openai-gh-fix-ci/upstream/assets/github-small.svg +3 -0
  729. package/dist/registry/skills/openai-gh-fix-ci/upstream/assets/github.png +0 -0
  730. package/dist/registry/skills/openai-gh-fix-ci/upstream/scripts/inspect_pr_checks.py +509 -0
  731. package/dist/registry/skills/openai-imagegen/SKILL.md +189 -0
  732. package/dist/registry/skills/openai-imagegen/upstream/LICENSE.txt +201 -0
  733. package/dist/registry/skills/openai-imagegen/upstream/SKILL.md +174 -0
  734. package/dist/registry/skills/openai-imagegen/upstream/agents/openai.yaml +6 -0
  735. package/dist/registry/skills/openai-imagegen/upstream/assets/imagegen-small.svg +5 -0
  736. package/dist/registry/skills/openai-imagegen/upstream/assets/imagegen.png +0 -0
  737. package/dist/registry/skills/openai-imagegen/upstream/references/cli.md +132 -0
  738. package/dist/registry/skills/openai-imagegen/upstream/references/codex-network.md +28 -0
  739. package/dist/registry/skills/openai-imagegen/upstream/references/image-api.md +36 -0
  740. package/dist/registry/skills/openai-imagegen/upstream/references/prompting.md +81 -0
  741. package/dist/registry/skills/openai-imagegen/upstream/references/sample-prompts.md +384 -0
  742. package/dist/registry/skills/openai-imagegen/upstream/scripts/image_gen.py +876 -0
  743. package/dist/registry/skills/openai-jupyter-notebook/SKILL.md +122 -0
  744. package/dist/registry/skills/openai-jupyter-notebook/upstream/LICENSE.txt +201 -0
  745. package/dist/registry/skills/openai-jupyter-notebook/upstream/SKILL.md +107 -0
  746. package/dist/registry/skills/openai-jupyter-notebook/upstream/agents/openai.yaml +6 -0
  747. package/dist/registry/skills/openai-jupyter-notebook/upstream/assets/experiment-template.ipynb +110 -0
  748. package/dist/registry/skills/openai-jupyter-notebook/upstream/assets/jupyter-small.svg +3 -0
  749. package/dist/registry/skills/openai-jupyter-notebook/upstream/assets/jupyter.png +0 -0
  750. package/dist/registry/skills/openai-jupyter-notebook/upstream/assets/tutorial-template.ipynb +107 -0
  751. package/dist/registry/skills/openai-jupyter-notebook/upstream/references/experiment-patterns.md +10 -0
  752. package/dist/registry/skills/openai-jupyter-notebook/upstream/references/notebook-structure.md +17 -0
  753. package/dist/registry/skills/openai-jupyter-notebook/upstream/references/quality-checklist.md +11 -0
  754. package/dist/registry/skills/openai-jupyter-notebook/upstream/references/tutorial-patterns.md +9 -0
  755. package/dist/registry/skills/openai-jupyter-notebook/upstream/scripts/new_notebook.py +130 -0
  756. package/dist/registry/skills/openai-linear/SKILL.md +101 -0
  757. package/dist/registry/skills/openai-linear/upstream/LICENSE.txt +202 -0
  758. package/dist/registry/skills/openai-linear/upstream/SKILL.md +87 -0
  759. package/dist/registry/skills/openai-linear/upstream/agents/openai.yaml +14 -0
  760. package/dist/registry/skills/openai-linear/upstream/assets/linear-small.svg +5 -0
  761. package/dist/registry/skills/openai-linear/upstream/assets/linear.png +0 -0
  762. package/dist/registry/skills/openai-netlify-deploy/SKILL.md +263 -0
  763. package/dist/registry/skills/openai-netlify-deploy/upstream/LICENSE.txt +201 -0
  764. package/dist/registry/skills/openai-netlify-deploy/upstream/SKILL.md +247 -0
  765. package/dist/registry/skills/openai-netlify-deploy/upstream/agents/openai.yaml +6 -0
  766. package/dist/registry/skills/openai-netlify-deploy/upstream/assets/netlify-small.svg +11 -0
  767. package/dist/registry/skills/openai-netlify-deploy/upstream/assets/netlify.png +0 -0
  768. package/dist/registry/skills/openai-netlify-deploy/upstream/references/cli-commands.md +162 -0
  769. package/dist/registry/skills/openai-netlify-deploy/upstream/references/deployment-patterns.md +303 -0
  770. package/dist/registry/skills/openai-netlify-deploy/upstream/references/netlify-toml.md +259 -0
  771. package/dist/registry/skills/openai-notion-knowledge-capture/SKILL.md +70 -0
  772. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/LICENSE.txt +7 -0
  773. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/SKILL.md +56 -0
  774. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/agents/openai.yaml +14 -0
  775. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/assets/notion-small.svg +11 -0
  776. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/assets/notion.png +0 -0
  777. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/evaluations/README.md +95 -0
  778. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/evaluations/conversation-to-wiki.json +31 -0
  779. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/evaluations/decision-record.json +31 -0
  780. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/examples/conversation-to-faq.md +226 -0
  781. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/examples/decision-capture.md +126 -0
  782. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/examples/how-to-guide.md +118 -0
  783. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/database-best-practices.md +112 -0
  784. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/decision-log-database.md +58 -0
  785. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/documentation-database.md +93 -0
  786. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/faq-database.md +57 -0
  787. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/how-to-guide-database.md +38 -0
  788. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/learning-database.md +35 -0
  789. package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/team-wiki-database.md +27 -0
  790. package/dist/registry/skills/openai-notion-meeting-intelligence/SKILL.md +74 -0
  791. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/LICENSE.txt +7 -0
  792. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/SKILL.md +60 -0
  793. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/agents/openai.yaml +14 -0
  794. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/assets/notion-small.svg +11 -0
  795. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/assets/notion.png +0 -0
  796. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/evaluations/README.md +101 -0
  797. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/evaluations/decision-meeting-prep.json +35 -0
  798. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/evaluations/status-meeting-prep.json +35 -0
  799. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/examples/customer-meeting.md +125 -0
  800. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/examples/executive-review.md +78 -0
  801. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/examples/project-decision.md +431 -0
  802. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/examples/sprint-planning.md +80 -0
  803. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/brainstorming-template.md +81 -0
  804. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/decision-meeting-template.md +94 -0
  805. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/one-on-one-template.md +58 -0
  806. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/retrospective-template.md +58 -0
  807. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/sprint-planning-template.md +68 -0
  808. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/status-update-template.md +74 -0
  809. package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/template-selection-guide.md +56 -0
  810. package/dist/registry/skills/openai-notion-research-documentation/SKILL.md +73 -0
  811. package/dist/registry/skills/openai-notion-research-documentation/upstream/LICENSE.txt +7 -0
  812. package/dist/registry/skills/openai-notion-research-documentation/upstream/SKILL.md +59 -0
  813. package/dist/registry/skills/openai-notion-research-documentation/upstream/agents/openai.yaml +14 -0
  814. package/dist/registry/skills/openai-notion-research-documentation/upstream/assets/notion-small.svg +11 -0
  815. package/dist/registry/skills/openai-notion-research-documentation/upstream/assets/notion.png +0 -0
  816. package/dist/registry/skills/openai-notion-research-documentation/upstream/evaluations/README.md +109 -0
  817. package/dist/registry/skills/openai-notion-research-documentation/upstream/evaluations/basic-research.json +28 -0
  818. package/dist/registry/skills/openai-notion-research-documentation/upstream/evaluations/research-to-database.json +29 -0
  819. package/dist/registry/skills/openai-notion-research-documentation/upstream/examples/competitor-analysis.md +283 -0
  820. package/dist/registry/skills/openai-notion-research-documentation/upstream/examples/market-research.md +62 -0
  821. package/dist/registry/skills/openai-notion-research-documentation/upstream/examples/technical-investigation.md +233 -0
  822. package/dist/registry/skills/openai-notion-research-documentation/upstream/examples/trip-planning.md +128 -0
  823. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/advanced-search.md +212 -0
  824. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/citations.md +190 -0
  825. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/comparison-format.md +37 -0
  826. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/comparison-template.md +44 -0
  827. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/comprehensive-report-format.md +41 -0
  828. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/comprehensive-report-template.md +64 -0
  829. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/format-selection-guide.md +95 -0
  830. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/quick-brief-format.md +37 -0
  831. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/quick-brief-template.md +25 -0
  832. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/research-summary-format.md +33 -0
  833. package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/research-summary-template.md +49 -0
  834. package/dist/registry/skills/openai-notion-spec-to-implementation/SKILL.md +72 -0
  835. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/LICENSE.txt +7 -0
  836. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/SKILL.md +58 -0
  837. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/agents/openai.yaml +14 -0
  838. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/assets/notion-small.svg +11 -0
  839. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/assets/notion.png +0 -0
  840. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/evaluations/README.md +120 -0
  841. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/evaluations/basic-spec-implementation.json +32 -0
  842. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/evaluations/spec-to-tasks.json +35 -0
  843. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/examples/api-feature.md +461 -0
  844. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/examples/database-migration.md +81 -0
  845. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/examples/ui-component.md +68 -0
  846. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/milestone-summary-template.md +27 -0
  847. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/progress-tracking.md +458 -0
  848. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/progress-update-template.md +25 -0
  849. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/quick-implementation-plan.md +26 -0
  850. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/spec-parsing.md +383 -0
  851. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/standard-implementation-plan.md +146 -0
  852. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/task-creation-template.md +34 -0
  853. package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/task-creation.md +441 -0
  854. package/dist/registry/skills/openai-openai-docs/SKILL.md +71 -0
  855. package/dist/registry/skills/openai-openai-docs/upstream/LICENSE.txt +201 -0
  856. package/dist/registry/skills/openai-openai-docs/upstream/SKILL.md +56 -0
  857. package/dist/registry/skills/openai-openai-docs/upstream/agents/openai.yaml +14 -0
  858. package/dist/registry/skills/openai-openai-docs/upstream/assets/openai-small.svg +3 -0
  859. package/dist/registry/skills/openai-openai-docs/upstream/assets/openai.png +0 -0
  860. package/dist/registry/skills/openai-pdf/SKILL.md +82 -0
  861. package/dist/registry/skills/openai-pdf/upstream/LICENSE.txt +201 -0
  862. package/dist/registry/skills/openai-pdf/upstream/SKILL.md +67 -0
  863. package/dist/registry/skills/openai-pdf/upstream/agents/openai.yaml +5 -0
  864. package/dist/registry/skills/openai-pdf/upstream/assets/pdf.png +0 -0
  865. package/dist/registry/skills/openai-playwright/SKILL.md +162 -0
  866. package/dist/registry/skills/openai-playwright/upstream/LICENSE.txt +201 -0
  867. package/dist/registry/skills/openai-playwright/upstream/NOTICE.txt +14 -0
  868. package/dist/registry/skills/openai-playwright/upstream/SKILL.md +147 -0
  869. package/dist/registry/skills/openai-playwright/upstream/agents/openai.yaml +6 -0
  870. package/dist/registry/skills/openai-playwright/upstream/assets/playwright-small.svg +3 -0
  871. package/dist/registry/skills/openai-playwright/upstream/assets/playwright.png +0 -0
  872. package/dist/registry/skills/openai-playwright/upstream/references/cli.md +116 -0
  873. package/dist/registry/skills/openai-playwright/upstream/references/workflows.md +95 -0
  874. package/dist/registry/skills/openai-playwright/upstream/scripts/playwright_cli.sh +25 -0
  875. package/dist/registry/skills/openai-render-deploy/SKILL.md +495 -0
  876. package/dist/registry/skills/openai-render-deploy/upstream/LICENSE.txt +201 -0
  877. package/dist/registry/skills/openai-render-deploy/upstream/SKILL.md +479 -0
  878. package/dist/registry/skills/openai-render-deploy/upstream/agents/openai.yaml +14 -0
  879. package/dist/registry/skills/openai-render-deploy/upstream/assets/docker.yaml +62 -0
  880. package/dist/registry/skills/openai-render-deploy/upstream/assets/go-api.yaml +35 -0
  881. package/dist/registry/skills/openai-render-deploy/upstream/assets/nextjs-postgres.yaml +35 -0
  882. package/dist/registry/skills/openai-render-deploy/upstream/assets/node-express.yaml +25 -0
  883. package/dist/registry/skills/openai-render-deploy/upstream/assets/python-django.yaml +89 -0
  884. package/dist/registry/skills/openai-render-deploy/upstream/assets/render-small.svg +3 -0
  885. package/dist/registry/skills/openai-render-deploy/upstream/assets/render.png +0 -0
  886. package/dist/registry/skills/openai-render-deploy/upstream/assets/static-site.yaml +54 -0
  887. package/dist/registry/skills/openai-render-deploy/upstream/references/blueprint-spec.md +718 -0
  888. package/dist/registry/skills/openai-render-deploy/upstream/references/codebase-analysis.md +49 -0
  889. package/dist/registry/skills/openai-render-deploy/upstream/references/configuration-guide.md +603 -0
  890. package/dist/registry/skills/openai-render-deploy/upstream/references/deployment-details.md +224 -0
  891. package/dist/registry/skills/openai-render-deploy/upstream/references/direct-creation.md +113 -0
  892. package/dist/registry/skills/openai-render-deploy/upstream/references/error-patterns.md +13 -0
  893. package/dist/registry/skills/openai-render-deploy/upstream/references/post-deploy-checks.md +36 -0
  894. package/dist/registry/skills/openai-render-deploy/upstream/references/runtimes.md +473 -0
  895. package/dist/registry/skills/openai-render-deploy/upstream/references/service-types.md +450 -0
  896. package/dist/registry/skills/openai-render-deploy/upstream/references/troubleshooting-basics.md +36 -0
  897. package/dist/registry/skills/openai-screenshot/SKILL.md +282 -0
  898. package/dist/registry/skills/openai-screenshot/upstream/LICENSE.txt +201 -0
  899. package/dist/registry/skills/openai-screenshot/upstream/SKILL.md +267 -0
  900. package/dist/registry/skills/openai-screenshot/upstream/agents/openai.yaml +6 -0
  901. package/dist/registry/skills/openai-screenshot/upstream/assets/screenshot-small.svg +5 -0
  902. package/dist/registry/skills/openai-screenshot/upstream/assets/screenshot.png +0 -0
  903. package/dist/registry/skills/openai-screenshot/upstream/scripts/ensure_macos_permissions.sh +54 -0
  904. package/dist/registry/skills/openai-screenshot/upstream/scripts/macos_display_info.swift +22 -0
  905. package/dist/registry/skills/openai-screenshot/upstream/scripts/macos_permissions.swift +40 -0
  906. package/dist/registry/skills/openai-screenshot/upstream/scripts/macos_window_info.swift +126 -0
  907. package/dist/registry/skills/openai-screenshot/upstream/scripts/take_screenshot.ps1 +163 -0
  908. package/dist/registry/skills/openai-screenshot/upstream/scripts/take_screenshot.py +585 -0
  909. package/dist/registry/skills/openai-security-best-practices/SKILL.md +102 -0
  910. package/dist/registry/skills/openai-security-best-practices/upstream/LICENSE.txt +201 -0
  911. package/dist/registry/skills/openai-security-best-practices/upstream/SKILL.md +86 -0
  912. package/dist/registry/skills/openai-security-best-practices/upstream/agents/openai.yaml +4 -0
  913. package/dist/registry/skills/openai-security-best-practices/upstream/references/golang-general-backend-security.md +826 -0
  914. package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-express-web-server-security.md +1158 -0
  915. package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-general-web-frontend-security.md +747 -0
  916. package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-jquery-web-frontend-security.md +678 -0
  917. package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-typescript-nextjs-web-server-security.md +1144 -0
  918. package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-typescript-react-web-frontend-security.md +990 -0
  919. package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-typescript-vue-web-frontend-security.md +791 -0
  920. package/dist/registry/skills/openai-security-best-practices/upstream/references/python-django-web-server-security.md +882 -0
  921. package/dist/registry/skills/openai-security-best-practices/upstream/references/python-fastapi-web-server-security.md +1036 -0
  922. package/dist/registry/skills/openai-security-best-practices/upstream/references/python-flask-web-server-security.md +705 -0
  923. package/dist/registry/skills/openai-security-ownership-map/SKILL.md +222 -0
  924. package/dist/registry/skills/openai-security-ownership-map/upstream/LICENSE.txt +201 -0
  925. package/dist/registry/skills/openai-security-ownership-map/upstream/SKILL.md +206 -0
  926. package/dist/registry/skills/openai-security-ownership-map/upstream/agents/openai.yaml +4 -0
  927. package/dist/registry/skills/openai-security-ownership-map/upstream/references/neo4j-import.md +60 -0
  928. package/dist/registry/skills/openai-security-ownership-map/upstream/scripts/build_ownership_map.py +956 -0
  929. package/dist/registry/skills/openai-security-ownership-map/upstream/scripts/community_maintainers.py +544 -0
  930. package/dist/registry/skills/openai-security-ownership-map/upstream/scripts/query_ownership.py +483 -0
  931. package/dist/registry/skills/openai-security-ownership-map/upstream/scripts/run_ownership_map.py +200 -0
  932. package/dist/registry/skills/openai-security-threat-model/SKILL.md +97 -0
  933. package/dist/registry/skills/openai-security-threat-model/upstream/LICENSE.txt +201 -0
  934. package/dist/registry/skills/openai-security-threat-model/upstream/SKILL.md +81 -0
  935. package/dist/registry/skills/openai-security-threat-model/upstream/agents/openai.yaml +4 -0
  936. package/dist/registry/skills/openai-security-threat-model/upstream/references/prompt-template.md +255 -0
  937. package/dist/registry/skills/openai-security-threat-model/upstream/references/security-controls-and-assets.md +32 -0
  938. package/dist/registry/skills/openai-sentry/SKILL.md +138 -0
  939. package/dist/registry/skills/openai-sentry/upstream/LICENSE.txt +201 -0
  940. package/dist/registry/skills/openai-sentry/upstream/SKILL.md +123 -0
  941. package/dist/registry/skills/openai-sentry/upstream/agents/openai.yaml +6 -0
  942. package/dist/registry/skills/openai-sentry/upstream/assets/sentry-small.svg +3 -0
  943. package/dist/registry/skills/openai-sentry/upstream/assets/sentry.png +0 -0
  944. package/dist/registry/skills/openai-sentry/upstream/scripts/sentry_api.py +238 -0
  945. package/dist/registry/skills/openai-skill-creator/SKILL.md +382 -0
  946. package/dist/registry/skills/openai-skill-creator/upstream/LICENSE.txt +202 -0
  947. package/dist/registry/skills/openai-skill-creator/upstream/SKILL.md +368 -0
  948. package/dist/registry/skills/openai-skill-creator/upstream/agents/openai.yaml +4 -0
  949. package/dist/registry/skills/openai-skill-creator/upstream/references/openai_yaml.md +43 -0
  950. package/dist/registry/skills/openai-skill-creator/upstream/scripts/generate_openai_yaml.py +225 -0
  951. package/dist/registry/skills/openai-skill-creator/upstream/scripts/init_skill.py +397 -0
  952. package/dist/registry/skills/openai-skill-creator/upstream/scripts/quick_validate.py +101 -0
  953. package/dist/registry/skills/openai-skill-installer/SKILL.md +72 -0
  954. package/dist/registry/skills/openai-skill-installer/upstream/LICENSE.txt +202 -0
  955. package/dist/registry/skills/openai-skill-installer/upstream/SKILL.md +58 -0
  956. package/dist/registry/skills/openai-skill-installer/upstream/agents/openai.yaml +5 -0
  957. package/dist/registry/skills/openai-skill-installer/upstream/assets/skill-installer-small.svg +3 -0
  958. package/dist/registry/skills/openai-skill-installer/upstream/assets/skill-installer.png +0 -0
  959. package/dist/registry/skills/openai-skill-installer/upstream/scripts/github_utils.py +21 -0
  960. package/dist/registry/skills/openai-skill-installer/upstream/scripts/install-skill-from-github.py +308 -0
  961. package/dist/registry/skills/openai-skill-installer/upstream/scripts/list-skills.py +107 -0
  962. package/dist/registry/skills/openai-sora/SKILL.md +168 -0
  963. package/dist/registry/skills/openai-sora/upstream/LICENSE.txt +201 -0
  964. package/dist/registry/skills/openai-sora/upstream/SKILL.md +153 -0
  965. package/dist/registry/skills/openai-sora/upstream/agents/openai.yaml +6 -0
  966. package/dist/registry/skills/openai-sora/upstream/assets/sora-small.svg +4 -0
  967. package/dist/registry/skills/openai-sora/upstream/assets/sora.png +0 -0
  968. package/dist/registry/skills/openai-sora/upstream/references/cinematic-shots.md +53 -0
  969. package/dist/registry/skills/openai-sora/upstream/references/cli.md +248 -0
  970. package/dist/registry/skills/openai-sora/upstream/references/codex-network.md +28 -0
  971. package/dist/registry/skills/openai-sora/upstream/references/prompting.md +137 -0
  972. package/dist/registry/skills/openai-sora/upstream/references/sample-prompts.md +95 -0
  973. package/dist/registry/skills/openai-sora/upstream/references/social-ads.md +42 -0
  974. package/dist/registry/skills/openai-sora/upstream/references/troubleshooting.md +58 -0
  975. package/dist/registry/skills/openai-sora/upstream/references/video-api.md +45 -0
  976. package/dist/registry/skills/openai-sora/upstream/scripts/sora.py +970 -0
  977. package/dist/registry/skills/openai-speech/SKILL.md +159 -0
  978. package/dist/registry/skills/openai-speech/upstream/LICENSE.txt +201 -0
  979. package/dist/registry/skills/openai-speech/upstream/SKILL.md +144 -0
  980. package/dist/registry/skills/openai-speech/upstream/agents/openai.yaml +6 -0
  981. package/dist/registry/skills/openai-speech/upstream/assets/speech-small.svg +3 -0
  982. package/dist/registry/skills/openai-speech/upstream/assets/speech.png +0 -0
  983. package/dist/registry/skills/openai-speech/upstream/references/accessibility.md +32 -0
  984. package/dist/registry/skills/openai-speech/upstream/references/audio-api.md +31 -0
  985. package/dist/registry/skills/openai-speech/upstream/references/cli.md +99 -0
  986. package/dist/registry/skills/openai-speech/upstream/references/codex-network.md +28 -0
  987. package/dist/registry/skills/openai-speech/upstream/references/ivr.md +32 -0
  988. package/dist/registry/skills/openai-speech/upstream/references/narration.md +31 -0
  989. package/dist/registry/skills/openai-speech/upstream/references/prompting.md +38 -0
  990. package/dist/registry/skills/openai-speech/upstream/references/sample-prompts.md +44 -0
  991. package/dist/registry/skills/openai-speech/upstream/references/voice-directions.md +80 -0
  992. package/dist/registry/skills/openai-speech/upstream/references/voiceover.md +31 -0
  993. package/dist/registry/skills/openai-speech/upstream/scripts/text_to_speech.py +528 -0
  994. package/dist/registry/skills/openai-spreadsheet/SKILL.md +137 -0
  995. package/dist/registry/skills/openai-spreadsheet/upstream/LICENSE.txt +201 -0
  996. package/dist/registry/skills/openai-spreadsheet/upstream/SKILL.md +122 -0
  997. package/dist/registry/skills/openai-spreadsheet/upstream/agents/openai.yaml +6 -0
  998. package/dist/registry/skills/openai-spreadsheet/upstream/assets/spreadsheet-small.svg +3 -0
  999. package/dist/registry/skills/openai-spreadsheet/upstream/assets/spreadsheet.png +0 -0
  1000. package/dist/registry/skills/openai-spreadsheet/upstream/references/examples/openpyxl/create_basic_spreadsheet.py +51 -0
  1001. package/dist/registry/skills/openai-spreadsheet/upstream/references/examples/openpyxl/create_spreadsheet_with_styling.py +96 -0
  1002. package/dist/registry/skills/openai-spreadsheet/upstream/references/examples/openpyxl/read_existing_spreadsheet.py +59 -0
  1003. package/dist/registry/skills/openai-spreadsheet/upstream/references/examples/openpyxl/styling_spreadsheet.py +79 -0
  1004. package/dist/registry/skills/openai-transcribe/SKILL.md +96 -0
  1005. package/dist/registry/skills/openai-transcribe/upstream/LICENSE.txt +201 -0
  1006. package/dist/registry/skills/openai-transcribe/upstream/SKILL.md +81 -0
  1007. package/dist/registry/skills/openai-transcribe/upstream/agents/openai.yaml +6 -0
  1008. package/dist/registry/skills/openai-transcribe/upstream/assets/transcribe-small.svg +3 -0
  1009. package/dist/registry/skills/openai-transcribe/upstream/assets/transcribe.png +0 -0
  1010. package/dist/registry/skills/openai-transcribe/upstream/references/api.md +8 -0
  1011. package/dist/registry/skills/openai-transcribe/upstream/scripts/transcribe_diarize.py +276 -0
  1012. package/dist/registry/skills/openai-vercel-deploy/SKILL.md +84 -0
  1013. package/{LICENSE → dist/registry/skills/openai-vercel-deploy/upstream/LICENSE.txt} +1 -1
  1014. package/dist/registry/skills/openai-vercel-deploy/upstream/SKILL.md +68 -0
  1015. package/dist/registry/skills/openai-vercel-deploy/upstream/agents/openai.yaml +6 -0
  1016. package/dist/registry/skills/openai-vercel-deploy/upstream/assets/vercel-small.svg +5 -0
  1017. package/dist/registry/skills/openai-vercel-deploy/upstream/assets/vercel.png +0 -0
  1018. package/dist/registry/skills/openai-vercel-deploy/upstream/scripts/deploy.sh +301 -0
  1019. package/dist/registry/skills/openai-yeet/SKILL.md +44 -0
  1020. package/dist/registry/skills/openai-yeet/upstream/LICENSE.txt +201 -0
  1021. package/dist/registry/skills/openai-yeet/upstream/SKILL.md +28 -0
  1022. package/dist/registry/skills/openai-yeet/upstream/agents/openai.yaml +6 -0
  1023. package/dist/registry/skills/openai-yeet/upstream/assets/yeet-small.svg +3 -0
  1024. package/dist/registry/skills/openai-yeet/upstream/assets/yeet.png +0 -0
  1025. package/dist/registry/skills/pr-description-style/SKILL.md +16 -0
  1026. package/dist/registry/skills/react-maintenance-upgrade/SKILL.md +19 -0
  1027. package/dist/registry/skills/react-maintenance-upgrade/scripts/check.sh +8 -0
  1028. package/dist/registry/skills/react-maintenance-upgrade/scripts/run.sh +28 -0
  1029. package/dist/registry/skills/react-patterns/SKILL.md +16 -0
  1030. package/dist/registry/skills/release-notes-style/SKILL.md +16 -0
  1031. package/dist/registry/skills/repo-bootstrap/SKILL.md +33 -0
  1032. package/dist/registry/skills/repo-bootstrap/scripts/check.sh +8 -0
  1033. package/dist/registry/skills/repo-bootstrap/scripts/run.sh +44 -0
  1034. package/dist/registry/skills/run-build/SKILL.md +17 -0
  1035. package/dist/registry/skills/run-build/scripts/check.sh +5 -0
  1036. package/dist/registry/skills/run-build/scripts/run.sh +19 -0
  1037. package/dist/registry/skills/run-format/SKILL.md +17 -0
  1038. package/dist/registry/skills/run-format/scripts/check.sh +5 -0
  1039. package/dist/registry/skills/run-format/scripts/run.sh +8 -0
  1040. package/dist/registry/skills/run-lint/SKILL.md +17 -0
  1041. package/dist/registry/skills/run-lint/scripts/check.sh +5 -0
  1042. package/dist/registry/skills/run-lint/scripts/run.sh +19 -0
  1043. package/dist/registry/skills/run-tests/SKILL.md +17 -0
  1044. package/dist/registry/skills/run-tests/scripts/check.sh +5 -0
  1045. package/dist/registry/skills/run-tests/scripts/run.sh +20 -0
  1046. package/dist/registry/skills/run-typecheck/SKILL.md +17 -0
  1047. package/dist/registry/skills/run-typecheck/scripts/check.sh +8 -0
  1048. package/dist/registry/skills/run-typecheck/scripts/run.sh +23 -0
  1049. package/dist/registry/skills/security-hygiene/SKILL.md +17 -0
  1050. package/dist/registry/skills/terraform-drift-audit/SKILL.md +18 -0
  1051. package/dist/registry/skills/terraform-drift-audit/scripts/check.sh +3 -0
  1052. package/dist/registry/skills/terraform-drift-audit/scripts/run.sh +4 -0
  1053. package/dist/registry/skills/terraform-fmt-validate/SKILL.md +17 -0
  1054. package/dist/registry/skills/terraform-fmt-validate/scripts/check.sh +3 -0
  1055. package/dist/registry/skills/terraform-fmt-validate/scripts/run.sh +5 -0
  1056. package/dist/registry/skills/terraform-structure/SKILL.md +16 -0
  1057. package/dist/registry/skills/testing-playbook/SKILL.md +16 -0
  1058. package/package.json +10 -7
  1059. package/dist/cli.d.ts +0 -3
  1060. package/dist/cli.d.ts.map +0 -1
  1061. package/dist/commands/cursor.d.ts +0 -27
  1062. package/dist/commands/cursor.d.ts.map +0 -1
  1063. package/dist/commands/cursor.js +0 -80
  1064. package/dist/commands/cursor.js.map +0 -1
  1065. package/dist/commands/doctor.d.ts +0 -13
  1066. package/dist/commands/doctor.d.ts.map +0 -1
  1067. package/dist/commands/doctor.js +0 -59
  1068. package/dist/commands/doctor.js.map +0 -1
  1069. package/dist/commands/info.d.ts +0 -13
  1070. package/dist/commands/info.d.ts.map +0 -1
  1071. package/dist/commands/info.js +0 -102
  1072. package/dist/commands/info.js.map +0 -1
  1073. package/dist/commands/install.d.ts +0 -13
  1074. package/dist/commands/install.d.ts.map +0 -1
  1075. package/dist/commands/install.js +0 -167
  1076. package/dist/commands/install.js.map +0 -1
  1077. package/dist/commands/list.d.ts +0 -13
  1078. package/dist/commands/list.d.ts.map +0 -1
  1079. package/dist/commands/list.js +0 -51
  1080. package/dist/commands/list.js.map +0 -1
  1081. package/dist/commands/logs.d.ts +0 -15
  1082. package/dist/commands/logs.d.ts.map +0 -1
  1083. package/dist/commands/logs.js +0 -99
  1084. package/dist/commands/logs.js.map +0 -1
  1085. package/dist/commands/open.d.ts +0 -13
  1086. package/dist/commands/open.d.ts.map +0 -1
  1087. package/dist/commands/open.js +0 -30
  1088. package/dist/commands/open.js.map +0 -1
  1089. package/dist/commands/plan.d.ts +0 -14
  1090. package/dist/commands/plan.d.ts.map +0 -1
  1091. package/dist/commands/plan.js +0 -75
  1092. package/dist/commands/plan.js.map +0 -1
  1093. package/dist/commands/run.d.ts +0 -17
  1094. package/dist/commands/run.d.ts.map +0 -1
  1095. package/dist/commands/run.js +0 -143
  1096. package/dist/commands/run.js.map +0 -1
  1097. package/dist/commands/search.d.ts +0 -13
  1098. package/dist/commands/search.d.ts.map +0 -1
  1099. package/dist/commands/search.js +0 -32
  1100. package/dist/commands/search.js.map +0 -1
  1101. package/dist/commands/uninstall.d.ts +0 -13
  1102. package/dist/commands/uninstall.d.ts.map +0 -1
  1103. package/dist/commands/uninstall.js +0 -35
  1104. package/dist/commands/uninstall.js.map +0 -1
  1105. package/dist/util.d.ts +0 -7
  1106. package/dist/util.d.ts.map +0 -1
  1107. package/dist/util.js +0 -9
  1108. package/dist/util.js.map +0 -1
  1109. package/dist/utils/json.d.ts +0 -11
  1110. package/dist/utils/json.d.ts.map +0 -1
  1111. package/dist/utils/json.js +0 -10
  1112. package/dist/utils/json.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,95 +1,1910 @@
1
1
  #!/usr/bin/env node
2
+
3
+ // src/cli.ts
2
4
  import { Command } from "commander";
3
5
  import { createRequire } from "module";
4
- import { doctorCmd } from "./commands/doctor.js";
5
- import { listCmd } from "./commands/list.js";
6
- import { searchCmd } from "./commands/search.js";
7
- import { infoCmd } from "./commands/info.js";
8
- import { installCmd } from "./commands/install.js";
9
- import { uninstallCmd } from "./commands/uninstall.js";
10
- import { planCmd } from "./commands/plan.js";
11
- import { runCmd } from "./commands/run.js";
12
- import { logsCmd } from "./commands/logs.js";
13
- import { openCmd } from "./commands/open.js";
14
- import { cursorInstallCmd, cursorListCmd } from "./commands/cursor.js";
15
- const program = new Command();
16
- const require = createRequire(import.meta.url);
17
- const pkg = require("../package.json");
18
- const cliVersion = typeof pkg.version === "string" && pkg.version.trim() ? pkg.version : "0.0.0";
19
- program
20
- .name("skill")
21
- .description("SkillRunner browse, install, and run skills")
22
- .version(cliVersion)
23
- .option("-j, --json", "Output JSON for extension integration");
24
- program
25
- .command("doctor")
26
- .option("--json")
27
- .description("Check env, providers, registry")
28
- .action(doctorCmd);
29
- program
30
- .command("list")
31
- .option("--json")
32
- .description("List installed skills")
33
- .action(listCmd);
34
- program
35
- .command("search <query>")
36
- .option("--json")
37
- .description("Search registry")
38
- .action(searchCmd);
39
- program
40
- .command("info <name>")
41
- .option("--json")
42
- .description("Show skill details")
43
- .action(infoCmd);
44
- program
45
- .command("install <name>")
46
- .option("--json")
47
- .description("Install skill")
48
- .action(installCmd);
49
- program
50
- .command("uninstall <name>")
51
- .option("--json")
52
- .description("Uninstall skill")
53
- .action(uninstallCmd);
54
- program
55
- .command("plan <name>")
56
- .option("--json")
57
- .description("Show plan only")
58
- .option("--inputs <pairs...>", "input k=v")
59
- .action(planCmd);
60
- program
61
- .command("run <name>")
62
- .option("--json")
63
- .description("Run skill")
64
- .option("--yes", "Skip confirmation")
65
- .option("--inputs <pairs...>", "input k=v")
66
- .option("--cwd <dir>", "Working directory")
67
- .option("--allow-dirty", "Allow dirty repo")
68
- .option("--no-branch", "Do not create branch")
69
- .action(runCmd);
70
- program
71
- .command("logs")
72
- .option("--json")
73
- .description("Show run logs")
74
- .option("--last", "Last run")
75
- .option("--id <runId>", "Run ID")
76
- .action(logsCmd);
77
- program
78
- .command("open")
79
- .option("--json")
80
- .description("Open dashboard")
81
- .action(openCmd);
82
- const cursorCmd = new Command("cursor").description("Cursor integration");
83
- cursorCmd
84
- .command("install <name>")
85
- .option("--json")
86
- .option("--scope <scope>", "project|global", "project")
87
- .action(cursorInstallCmd);
88
- cursorCmd
89
- .command("list")
90
- .option("--json")
91
- .option("--scope <scope>", "project|global|both", "both")
92
- .action(cursorListCmd);
6
+
7
+ // src/commands/doctor.ts
8
+ import chalk from "chalk";
9
+ import { execSync } from "child_process";
10
+
11
+ // ../engine/dist/parser.js
12
+ import { existsSync, readFileSync, readdirSync } from "fs";
13
+ import matter from "gray-matter";
14
+ import { basename, extname, join } from "path";
15
+ import YAML from "yaml";
16
+ var REQUIRED_KEYS = ["name", "description"];
17
+ var AVAILABILITY_VALUES = [
18
+ "default",
19
+ "advanced",
20
+ "conditional"
21
+ ];
22
+ var CONTRACT_CANDIDATES = [
23
+ { file: "SKILL.md", type: "skill_md" },
24
+ { file: "skill.md", type: "skill_md" },
25
+ { file: "skill.yaml", type: "skill_yaml" },
26
+ { file: "skill.yml", type: "skill_yaml" },
27
+ { file: "skill.json", type: "skill_json" },
28
+ { file: "AGENTS.md", type: "agent_markdown" },
29
+ { file: "AGENT.md", type: "agent_markdown" },
30
+ { file: "CLAUDE.md", type: "agent_markdown" },
31
+ { file: "README.md", type: "readme_markdown" }
32
+ ];
33
+ var ADAPTER_FALLBACK_PATTERNS = /(skill|agent|claude|instruction|contract)/i;
34
+ var SUPPORTED_SKILL_CONTRACT_FILES = CONTRACT_CANDIDATES.map((v) => v.file);
35
+ function parseSkillMd(content) {
36
+ const { data } = matter(content);
37
+ const meta = asRecord(data);
38
+ if (!meta) {
39
+ throw new Error("SKILL.md must have YAML frontmatter");
40
+ }
41
+ for (const key of REQUIRED_KEYS) {
42
+ if (!isNonEmptyString(meta[key])) {
43
+ throw new Error(`SKILL.md frontmatter must have "${key}" (string)`);
44
+ }
45
+ }
46
+ return normalizeSkillMeta(meta, { sourceLabel: "SKILL.md" });
47
+ }
48
+ function parseSkillContract(content, opts = {}) {
49
+ const sourcePath = opts.sourcePath || "";
50
+ const sourceLabel = sourcePath || "skill contract";
51
+ const contractType = opts.contractType || inferSkillContractType(sourcePath || "SKILL.md");
52
+ if (contractType === "skill_json") {
53
+ return parseSkillJson(content, sourceLabel, opts.fallbackName);
54
+ }
55
+ if (contractType === "skill_yaml") {
56
+ return parseSkillYaml(content, sourceLabel, opts.fallbackName);
57
+ }
58
+ if (contractType === "skill_md") {
59
+ try {
60
+ return parseSkillMd(content);
61
+ } catch {
62
+ return parseMarkdownContract(content, sourceLabel, opts.fallbackName);
63
+ }
64
+ }
65
+ return parseMarkdownContract(content, sourceLabel, opts.fallbackName);
66
+ }
67
+ function inferSkillContractType(pathOrFile) {
68
+ const normalized = pathOrFile.trim().toLowerCase();
69
+ const file = normalized.split("/").filter(Boolean).pop() || normalized;
70
+ if (file === "skill.md")
71
+ return "skill_md";
72
+ if (file === "skill.yaml" || file === "skill.yml")
73
+ return "skill_yaml";
74
+ if (file === "skill.json")
75
+ return "skill_json";
76
+ if (file === "agent.md" || file === "agents.md" || file === "claude.md") {
77
+ return "agent_markdown";
78
+ }
79
+ if (file === "readme.md")
80
+ return "readme_markdown";
81
+ const ext = extname(file);
82
+ if (ext === ".json")
83
+ return "skill_json";
84
+ if (ext === ".yaml" || ext === ".yml")
85
+ return "skill_yaml";
86
+ if (ext === ".md")
87
+ return "agent_markdown";
88
+ return "skill_md";
89
+ }
90
+ function findSkillContractFile(skillDir) {
91
+ for (const candidate of CONTRACT_CANDIDATES) {
92
+ if (existsSync(join(skillDir, candidate.file))) {
93
+ return { ...candidate };
94
+ }
95
+ }
96
+ try {
97
+ const files = readdirSync(skillDir, { withFileTypes: true }).filter((entry) => entry.isFile()).map((entry) => entry.name).filter((name) => {
98
+ const ext = extname(name).toLowerCase();
99
+ return ext === ".md" || ext === ".json" || ext === ".yaml" || ext === ".yml";
100
+ });
101
+ const fallback = files.find((name) => ADAPTER_FALLBACK_PATTERNS.test(name));
102
+ if (fallback) {
103
+ return {
104
+ file: fallback,
105
+ type: inferSkillContractType(fallback)
106
+ };
107
+ }
108
+ } catch {
109
+ return null;
110
+ }
111
+ return null;
112
+ }
113
+ function loadSkillMetaFromDir(skillDir) {
114
+ const contract = findSkillContractFile(skillDir);
115
+ if (!contract) {
116
+ throw new Error(`No supported skill contract found in ${skillDir}. Supported files: ${SUPPORTED_SKILL_CONTRACT_FILES.join(", ")}`);
117
+ }
118
+ const contractPath = join(skillDir, contract.file);
119
+ const content = readFileSync(contractPath, "utf-8");
120
+ const fallbackName = inferFallbackNameFromDir(skillDir);
121
+ const meta = parseSkillContract(content, {
122
+ contractType: contract.type,
123
+ sourcePath: contract.file,
124
+ fallbackName
125
+ });
126
+ return {
127
+ meta,
128
+ contract,
129
+ contractPath
130
+ };
131
+ }
132
+ function parseSkillYaml(content, sourceLabel, fallbackName) {
133
+ let data;
134
+ try {
135
+ data = YAML.parse(content);
136
+ } catch (e) {
137
+ throw new Error(`Invalid YAML in ${sourceLabel}: ${e.message}`);
138
+ }
139
+ const meta = asRecord(data);
140
+ if (!meta) {
141
+ throw new Error(`Expected YAML object in ${sourceLabel}`);
142
+ }
143
+ return normalizeSkillMeta(meta, {
144
+ sourceLabel,
145
+ fallbackName
146
+ });
147
+ }
148
+ function parseSkillJson(content, sourceLabel, fallbackName) {
149
+ let data;
150
+ try {
151
+ data = JSON.parse(content);
152
+ } catch (e) {
153
+ throw new Error(`Invalid JSON in ${sourceLabel}: ${e.message}`);
154
+ }
155
+ const meta = asRecord(data);
156
+ if (!meta) {
157
+ throw new Error(`Expected JSON object in ${sourceLabel}`);
158
+ }
159
+ return normalizeSkillMeta(meta, {
160
+ sourceLabel,
161
+ fallbackName
162
+ });
163
+ }
164
+ function parseMarkdownContract(content, sourceLabel, fallbackName) {
165
+ const parsed = matter(content);
166
+ const frontmatter = asRecord(parsed.data);
167
+ const nameFromHeading = extractFirstHeading(parsed.content);
168
+ const descFromBody = extractFirstParagraph(parsed.content);
169
+ if (frontmatter && Object.keys(frontmatter).length > 0) {
170
+ return normalizeSkillMeta(frontmatter, {
171
+ sourceLabel,
172
+ fallbackName: fallbackName || nameFromHeading,
173
+ fallbackDescription: descFromBody
174
+ });
175
+ }
176
+ return normalizeSkillMeta({}, {
177
+ sourceLabel,
178
+ fallbackName: fallbackName || nameFromHeading,
179
+ fallbackDescription: descFromBody || `Skill instructions in ${sourceLabel}`
180
+ });
181
+ }
182
+ function normalizeSkillMeta(meta, opts) {
183
+ const name = pickString(meta, [["name"], ["title"], ["id"], ["slug"]]) || opts.fallbackName;
184
+ const description = pickString(meta, [
185
+ ["description"],
186
+ ["summary"],
187
+ ["short_description"],
188
+ ["shortDescription"],
189
+ ["metadata", "short-description"],
190
+ ["metadata", "short_description"],
191
+ ["metadata", "description"]
192
+ ]) || opts.fallbackDescription;
193
+ if (!isNonEmptyString(name)) {
194
+ throw new Error(`${opts.sourceLabel} must define a name`);
195
+ }
196
+ if (!isNonEmptyString(description)) {
197
+ throw new Error(`${opts.sourceLabel} must define a description`);
198
+ }
199
+ const prerequisites = normalizePrerequisites(pick(meta, ["prerequisites"]) || pick(meta, ["requirements"]));
200
+ const capabilities = normalizeCapabilities(pick(meta, ["capabilities"]) || pick(meta, ["permissions"]));
201
+ const scripts = normalizeScripts(pick(meta, ["scripts"]), pickString(meta, [["check_script"], ["checkScript"]]), pickString(meta, [["run_script"], ["runScript"]]));
202
+ const docs = normalizeDocs(pick(meta, ["docs"]), pickString(meta, [["homepage"]]), pickString(meta, [["source"], ["repo"], ["repository"]]));
203
+ return {
204
+ name: String(name).trim(),
205
+ description: String(description).trim(),
206
+ version: normalizeString(pick(meta, ["version"])),
207
+ tags: normalizeStringArray(pick(meta, ["tags"]) || pick(meta, ["keywords"]), "comma"),
208
+ kind: normalizeKind(pick(meta, ["kind"]) || pick(meta, ["type"])),
209
+ risk: normalizeRisk(pick(meta, ["risk"])),
210
+ availability: normalizeAvailability(pick(meta, ["availability"]) || pick(meta, ["tier"])),
211
+ prerequisites,
212
+ capabilities,
213
+ scripts,
214
+ inputs: normalizeInputs(pick(meta, ["inputs"]) || pick(meta, ["parameters"])),
215
+ docs
216
+ };
217
+ }
218
+ function normalizeKind(v) {
219
+ if (!isNonEmptyString(v))
220
+ return void 0;
221
+ if (v === "automation" || v === "knowledge")
222
+ return v;
223
+ return void 0;
224
+ }
225
+ function normalizeRisk(v) {
226
+ if (!isNonEmptyString(v))
227
+ return void 0;
228
+ if (v === "low" || v === "moderate" || v === "high")
229
+ return v;
230
+ return void 0;
231
+ }
232
+ function normalizeAvailability(v) {
233
+ if (!isNonEmptyString(v))
234
+ return void 0;
235
+ return AVAILABILITY_VALUES.includes(v) ? v : void 0;
236
+ }
237
+ function normalizePrerequisites(v) {
238
+ const obj = asRecord(v);
239
+ if (!obj)
240
+ return void 0;
241
+ const out = {};
242
+ out.tools = normalizeStringArray(obj.tools || obj.tooling || obj.commands || obj.bins);
243
+ out.files = normalizeStringArray(obj.files || obj.paths || obj.filePaths);
244
+ out.env = normalizeStringArray(obj.env || obj.environment || obj.envVars);
245
+ out.packageJsonDeps = normalizeStringArray(obj.packageJsonDeps || obj.dependencies || obj.npmDeps);
246
+ if (!out.tools?.length && !out.files?.length && !out.env?.length && !out.packageJsonDeps?.length) {
247
+ return void 0;
248
+ }
249
+ return out;
250
+ }
251
+ function normalizeCapabilities(v) {
252
+ const obj = asRecord(v);
253
+ if (!obj && !Array.isArray(v))
254
+ return void 0;
255
+ const out = {};
256
+ if (obj) {
257
+ out.shell = toBoolean(obj.shell);
258
+ out.network = toBoolean(obj.network);
259
+ out.fs_read = toBoolean(obj.fs_read ?? obj.fsRead ?? obj.read);
260
+ out.fs_write = toBoolean(obj.fs_write ?? obj.fsWrite ?? obj.write);
261
+ }
262
+ if (Array.isArray(v)) {
263
+ for (const value of v.map(String)) {
264
+ const item = value.trim().toLowerCase();
265
+ if (!item)
266
+ continue;
267
+ if (item === "shell")
268
+ out.shell = true;
269
+ if (item === "network")
270
+ out.network = true;
271
+ if (item === "fs_read" || item === "fs-read" || item === "read") {
272
+ out.fs_read = true;
273
+ }
274
+ if (item === "fs_write" || item === "fs-write" || item === "write") {
275
+ out.fs_write = true;
276
+ }
277
+ }
278
+ }
279
+ if (out.shell === void 0 && out.network === void 0 && out.fs_read === void 0 && out.fs_write === void 0) {
280
+ return void 0;
281
+ }
282
+ return out;
283
+ }
284
+ function normalizeScripts(scriptsValue, checkFallback, runFallback) {
285
+ const scripts = asRecord(scriptsValue);
286
+ const check = normalizeString(scripts?.check || scripts?.validate || checkFallback) || void 0;
287
+ const run = normalizeString(scripts?.run || scripts?.execute || runFallback) || void 0;
288
+ if (!check && !run)
289
+ return void 0;
290
+ return { check, run };
291
+ }
292
+ function normalizeInputs(v) {
293
+ const obj = asRecord(v);
294
+ if (!obj)
295
+ return void 0;
296
+ return obj;
297
+ }
298
+ function normalizeDocs(docsValue, homepageFallback, sourceFallback) {
299
+ const docs = asRecord(docsValue);
300
+ const homepage = normalizeString(docs?.homepage || homepageFallback);
301
+ const source = normalizeString(docs?.source || sourceFallback);
302
+ if (!homepage && !source)
303
+ return void 0;
304
+ return { homepage, source };
305
+ }
306
+ function normalizeString(v) {
307
+ if (!isNonEmptyString(v))
308
+ return void 0;
309
+ const value = String(v).trim();
310
+ return value || void 0;
311
+ }
312
+ function normalizeStringArray(value, splitMode = "none") {
313
+ if (Array.isArray(value)) {
314
+ const out2 = value.map(String).map((v) => v.trim()).filter(Boolean);
315
+ return out2.length ? out2 : void 0;
316
+ }
317
+ if (!isNonEmptyString(value))
318
+ return void 0;
319
+ const source = value.trim();
320
+ const out = splitMode === "comma" ? source.split(",").map((v) => v.trim()).filter(Boolean) : [source];
321
+ return out.length ? out : void 0;
322
+ }
323
+ function extractFirstHeading(markdown) {
324
+ const lines = markdown.split(/\r?\n/);
325
+ for (const line of lines) {
326
+ const trimmed = line.trim();
327
+ if (!trimmed)
328
+ continue;
329
+ if (/^#{1,6}\s+/.test(trimmed)) {
330
+ const heading = trimmed.replace(/^#{1,6}\s+/, "").trim();
331
+ return heading || void 0;
332
+ }
333
+ }
334
+ return void 0;
335
+ }
336
+ function extractFirstParagraph(markdown) {
337
+ const lines = markdown.split(/\r?\n/);
338
+ const parts = [];
339
+ let inFence = false;
340
+ for (const line of lines) {
341
+ const trimmed = line.trim();
342
+ if (trimmed.startsWith("```")) {
343
+ inFence = !inFence;
344
+ continue;
345
+ }
346
+ if (inFence)
347
+ continue;
348
+ if (!trimmed) {
349
+ if (parts.length > 0)
350
+ break;
351
+ continue;
352
+ }
353
+ if (/^#{1,6}\s+/.test(trimmed))
354
+ continue;
355
+ if (/^[-*]\s+/.test(trimmed) && parts.length === 0)
356
+ continue;
357
+ if (/^\d+\.\s+/.test(trimmed) && parts.length === 0)
358
+ continue;
359
+ parts.push(trimmed);
360
+ }
361
+ if (!parts.length)
362
+ return void 0;
363
+ return parts.join(" ");
364
+ }
365
+ function inferFallbackNameFromDir(skillDir) {
366
+ const value = basename(skillDir);
367
+ const at = value.lastIndexOf("@");
368
+ if (at > 0) {
369
+ const suffix = value.slice(at + 1);
370
+ if (suffix === "latest" || /^\d+\.\d+\.\d+/.test(suffix)) {
371
+ return value.slice(0, at);
372
+ }
373
+ }
374
+ return value;
375
+ }
376
+ function pickString(obj, paths) {
377
+ for (const path of paths) {
378
+ const value = pick(obj, path);
379
+ if (isNonEmptyString(value)) {
380
+ return String(value).trim();
381
+ }
382
+ }
383
+ return void 0;
384
+ }
385
+ function pick(obj, path) {
386
+ let current = obj;
387
+ for (const segment of path) {
388
+ const record = asRecord(current);
389
+ if (!record || !(segment in record))
390
+ return void 0;
391
+ current = record[segment];
392
+ }
393
+ return current;
394
+ }
395
+ function asRecord(v) {
396
+ if (!v || typeof v !== "object" || Array.isArray(v))
397
+ return null;
398
+ return v;
399
+ }
400
+ function toBoolean(v) {
401
+ if (typeof v === "boolean")
402
+ return v;
403
+ if (typeof v === "string") {
404
+ const normalized = v.trim().toLowerCase();
405
+ if (normalized === "true")
406
+ return true;
407
+ if (normalized === "false")
408
+ return false;
409
+ }
410
+ return void 0;
411
+ }
412
+ function isNonEmptyString(v) {
413
+ return typeof v === "string" && v.trim().length > 0;
414
+ }
415
+
416
+ // ../engine/dist/registry.js
417
+ import { readFileSync as readFileSync2, existsSync as existsSync3 } from "fs";
418
+ import { dirname, join as join3 } from "path";
419
+ import { fileURLToPath } from "url";
420
+
421
+ // ../engine/dist/paths.js
422
+ import { existsSync as existsSync2 } from "fs";
423
+ import { join as join2 } from "path";
424
+ function findRegistryRoot(startCwd = process.cwd()) {
425
+ let d = startCwd;
426
+ for (let i = 0; i < 10; i++) {
427
+ if (existsSync2(join2(d, "registry", "skills")))
428
+ return d;
429
+ const parent = join2(d, "..");
430
+ if (parent === d)
431
+ break;
432
+ d = parent;
433
+ }
434
+ return "";
435
+ }
436
+
437
+ // ../engine/dist/registry.js
438
+ var DEFAULT_REGISTRY_URLS = [
439
+ "https://khalidsaidi.github.io/skillrunner/index.json",
440
+ "https://khalidsaidi.github.io/skillrunner/registry/dist/index.json",
441
+ "https://raw.githubusercontent.com/khalidsaidi/skillrunner/main/registry/dist/index.json",
442
+ "https://raw.githubusercontent.com/khalidsaidi/skillrunner/master/registry/dist/index.json"
443
+ ];
444
+ var CACHE_DIR = join3(process.env.HOME || "", ".skillrunner");
445
+ var REGISTRY_CACHE_DIR = join3(CACHE_DIR, "registry-cache");
446
+ var SKILLS_DIR = join3(CACHE_DIR, "skills");
447
+ var RUNS_DIR = join3(CACHE_DIR, "runs");
448
+ function getSkillsDir() {
449
+ return SKILLS_DIR;
450
+ }
451
+ function getRunsDir() {
452
+ return RUNS_DIR;
453
+ }
454
+ function getRegistryCandidates(baseUrl) {
455
+ const urls = [
456
+ baseUrl,
457
+ process.env.SKILLRUNNER_REGISTRY_URL,
458
+ ...DEFAULT_REGISTRY_URLS
459
+ ].filter((v) => Boolean(v));
460
+ const deduped = [];
461
+ const seen = /* @__PURE__ */ new Set();
462
+ for (const u of urls) {
463
+ if (seen.has(u))
464
+ continue;
465
+ seen.add(u);
466
+ deduped.push(u);
467
+ }
468
+ return deduped;
469
+ }
470
+ function normalizeLookup(value) {
471
+ return value.trim().toLowerCase();
472
+ }
473
+ function stripVersionSpecifier(value) {
474
+ const trimmed = value.trim();
475
+ const at = trimmed.lastIndexOf("@");
476
+ if (at > 0)
477
+ return trimmed.slice(0, at);
478
+ return trimmed;
479
+ }
480
+ function pathBasename(value) {
481
+ const normalized = value.replace(/\\/g, "/").replace(/\/+$/, "");
482
+ const parts = normalized.split("/").filter(Boolean);
483
+ return parts.length > 0 ? parts[parts.length - 1] : "";
484
+ }
485
+ function extractSkillSlugFromPaths(skill) {
486
+ const contractPath = skill.paths?.contract || "";
487
+ if (contractPath) {
488
+ const normalized2 = contractPath.replace(/\\/g, "/");
489
+ const parts2 = normalized2.split("/").filter(Boolean);
490
+ if (parts2.length > 1)
491
+ return parts2[parts2.length - 2];
492
+ }
493
+ const fromDir = pathBasename(skill.paths?.dir || "");
494
+ if (fromDir)
495
+ return fromDir;
496
+ const skillMd = skill.paths?.skill_md || "";
497
+ const normalized = skillMd.replace(/\\/g, "/");
498
+ const parts = normalized.split("/").filter(Boolean);
499
+ if (parts.length >= 2 && parts[parts.length - 1].toLowerCase() === "skill.md") {
500
+ return parts[parts.length - 2];
501
+ }
502
+ return "";
503
+ }
504
+ function parseRegistryPayload(payload) {
505
+ if (!payload || typeof payload !== "object")
506
+ return null;
507
+ const maybe = payload;
508
+ if (Array.isArray(maybe.skills)) {
509
+ return {
510
+ ...payload,
511
+ skills: maybe.skills,
512
+ packs: Array.isArray(maybe.packs) ? maybe.packs : []
513
+ };
514
+ }
515
+ const nestedIndex = maybe.index;
516
+ if (nestedIndex && Array.isArray(nestedIndex.skills)) {
517
+ return {
518
+ ...nestedIndex,
519
+ skills: nestedIndex.skills,
520
+ packs: Array.isArray(nestedIndex.packs) ? nestedIndex.packs : []
521
+ };
522
+ }
523
+ return null;
524
+ }
525
+ function getRegistrySkillSlug(skill) {
526
+ return extractSkillSlugFromPaths(skill) || skill.name;
527
+ }
528
+ async function fetchRemoteRegistry(baseUrl) {
529
+ const candidates = getRegistryCandidates(baseUrl);
530
+ if (candidates.length === 0) {
531
+ throw new Error("No registry URL configured");
532
+ }
533
+ const errors = [];
534
+ for (const url of candidates) {
535
+ try {
536
+ const res = await fetch(url);
537
+ if (!res.ok) {
538
+ errors.push(`${url} -> ${res.status} ${res.statusText}`);
539
+ continue;
540
+ }
541
+ const payload = await res.json();
542
+ const parsed = parseRegistryPayload(payload);
543
+ if (!parsed) {
544
+ errors.push(`${url} -> invalid registry payload`);
545
+ continue;
546
+ }
547
+ return parsed;
548
+ } catch (e) {
549
+ errors.push(`${url} -> ${e.message}`);
550
+ }
551
+ }
552
+ throw new Error(`Failed to fetch registry from all sources: ${errors.join("; ")}`);
553
+ }
554
+ function loadLocalRegistry(repoRoot) {
555
+ const path = join3(repoRoot, "registry", "dist", "index.json");
556
+ if (!existsSync3(path))
557
+ return null;
558
+ const content = readFileSync2(path, "utf-8");
559
+ return JSON.parse(content);
560
+ }
561
+ function resolveRegistryRoot(startCwd = process.cwd()) {
562
+ const cwdRoot = findRegistryRoot(startCwd);
563
+ if (cwdRoot)
564
+ return cwdRoot;
565
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
566
+ const moduleRoot = findRegistryRoot(moduleDir);
567
+ if (moduleRoot)
568
+ return moduleRoot;
569
+ return "";
570
+ }
571
+ function loadBundledRegistry() {
572
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
573
+ const candidates = [
574
+ join3(moduleDir, "registry", "dist", "index.json"),
575
+ join3(moduleDir, "..", "registry", "dist", "index.json")
576
+ ];
577
+ const moduleRoot = findRegistryRoot(moduleDir);
578
+ if (moduleRoot) {
579
+ candidates.push(join3(moduleRoot, "registry", "dist", "index.json"));
580
+ }
581
+ for (const path of candidates) {
582
+ if (!existsSync3(path))
583
+ continue;
584
+ try {
585
+ const content = readFileSync2(path, "utf-8");
586
+ return JSON.parse(content);
587
+ } catch {
588
+ }
589
+ }
590
+ return null;
591
+ }
592
+ async function resolveRegistryIndex(startCwd = process.cwd()) {
593
+ const root = resolveRegistryRoot(startCwd);
594
+ const local = root ? loadLocalRegistry(root) : null;
595
+ if (local)
596
+ return local;
597
+ try {
598
+ return await fetchRemoteRegistry();
599
+ } catch (remoteError) {
600
+ const bundled = loadBundledRegistry();
601
+ if (bundled)
602
+ return bundled;
603
+ throw remoteError;
604
+ }
605
+ }
606
+ function searchRegistry(index, query) {
607
+ const q = normalizeLookup(query);
608
+ return index.skills.filter((s) => normalizeLookup(s.name).includes(q) || normalizeLookup(getRegistrySkillSlug(s)).includes(q) || normalizeLookup(s.description).includes(q) || s.tags && s.tags.some((t) => t.toLowerCase().includes(q)));
609
+ }
610
+ function getSkillFromIndex(index, name) {
611
+ const lookup = normalizeLookup(stripVersionSpecifier(name));
612
+ if (!lookup)
613
+ return void 0;
614
+ return index.skills.find((s) => {
615
+ if (normalizeLookup(s.name) === lookup)
616
+ return true;
617
+ return normalizeLookup(getRegistrySkillSlug(s)) === lookup;
618
+ });
619
+ }
620
+
621
+ // ../engine/dist/guard.js
622
+ import { readFileSync as readFileSync3 } from "fs";
623
+ var isComment = (line) => /^\s*#/.test(line);
624
+ var HARD_BLOCK_PATTERNS = [
625
+ /\bsudo\b/,
626
+ /\bsu\s+/,
627
+ /\brm\s+(-rf|-\s*rf|-r\s*f)\b/,
628
+ /\brm\s+-r\s+-f\b/,
629
+ /\bcurl\s+[^|]+\|\s*(sh|bash)\b/,
630
+ /~\/(\.ssh|\.aws)\b/,
631
+ /\bchmod\s+777\b/,
632
+ /\bchown\s+-R\b/
633
+ ];
634
+ var DANGEROUS_PATH_PATTERN = /(^|[^#])\s*\/(etc|usr\/bin|bin)\b/;
635
+ function scanScriptForBannedPatterns(scriptPath) {
636
+ const violations = [];
637
+ let content;
638
+ try {
639
+ content = readFileSync3(scriptPath, "utf-8");
640
+ } catch {
641
+ return { passed: true, violations: [] };
642
+ }
643
+ const lines = content.split("\n");
644
+ for (let i = 0; i < lines.length; i++) {
645
+ const line = lines[i];
646
+ if (isComment(line))
647
+ continue;
648
+ for (const pat of HARD_BLOCK_PATTERNS) {
649
+ if (pat.test(line)) {
650
+ violations.push(`Line ${i + 1}: banned pattern: ${line.trim()}`);
651
+ }
652
+ }
653
+ if (DANGEROUS_PATH_PATTERN.test(line)) {
654
+ violations.push(`Line ${i + 1}: writes to system path: ${line.trim()}`);
655
+ }
656
+ }
657
+ return {
658
+ passed: violations.length === 0,
659
+ violations
660
+ };
661
+ }
662
+ function blockMessage(violations) {
663
+ return [
664
+ "Skill blocked by guard. Hard-block patterns detected:",
665
+ ...violations.map((v) => ` - ${v}`),
666
+ "Fix the script and try again."
667
+ ].join("\n");
668
+ }
669
+
670
+ // ../engine/dist/preflight.js
671
+ import { existsSync as existsSync4, readFileSync as readFileSync4, statSync } from "fs";
672
+ import { isAbsolute, join as join4 } from "path";
673
+ function normalizeArray(values) {
674
+ if (!Array.isArray(values))
675
+ return [];
676
+ return values.map((v) => String(v).trim()).filter(Boolean);
677
+ }
678
+ function isExecutableFile(path) {
679
+ if (!existsSync4(path))
680
+ return false;
681
+ try {
682
+ const st = statSync(path);
683
+ if (!st.isFile())
684
+ return false;
685
+ if (process.platform === "win32")
686
+ return true;
687
+ return (st.mode & 73) !== 0;
688
+ } catch {
689
+ return false;
690
+ }
691
+ }
692
+ function isToolAvailable(tool) {
693
+ const trimmed = tool.trim();
694
+ if (!trimmed)
695
+ return false;
696
+ if (trimmed.includes("/") || trimmed.includes("\\")) {
697
+ return isExecutableFile(trimmed);
698
+ }
699
+ const pathEnv = process.env.PATH || "";
700
+ const delimiter = process.platform === "win32" ? ";" : ":";
701
+ const dirs = pathEnv.split(delimiter).filter(Boolean);
702
+ const extensions = process.platform === "win32" ? (process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM").split(";").map((e) => e.toLowerCase()).filter(Boolean) : [""];
703
+ for (const dir of dirs) {
704
+ if (process.platform === "win32") {
705
+ const hasExt = /\.[a-z0-9]+$/i.test(trimmed);
706
+ const candidates = hasExt ? [join4(dir, trimmed)] : extensions.map((ext) => join4(dir, `${trimmed}${ext}`));
707
+ if (candidates.some((candidate) => isExecutableFile(candidate))) {
708
+ return true;
709
+ }
710
+ continue;
711
+ }
712
+ if (isExecutableFile(join4(dir, trimmed)))
713
+ return true;
714
+ }
715
+ return false;
716
+ }
717
+ function readPackageJsonDependencyNames(cwd) {
718
+ const packageJsonPath = join4(cwd, "package.json");
719
+ if (!existsSync4(packageJsonPath))
720
+ return null;
721
+ try {
722
+ const parsed = JSON.parse(readFileSync4(packageJsonPath, "utf-8"));
723
+ const names = /* @__PURE__ */ new Set();
724
+ for (const section of [
725
+ parsed.dependencies,
726
+ parsed.devDependencies,
727
+ parsed.peerDependencies,
728
+ parsed.optionalDependencies
729
+ ]) {
730
+ if (!section || typeof section !== "object")
731
+ continue;
732
+ for (const key of Object.keys(section)) {
733
+ const normalized = key.trim();
734
+ if (normalized)
735
+ names.add(normalized);
736
+ }
737
+ }
738
+ return names;
739
+ } catch {
740
+ return null;
741
+ }
742
+ }
743
+ function checkSkillPrerequisites(meta, cwd) {
744
+ const prerequisites = meta.prerequisites || {};
745
+ const tools = normalizeArray(prerequisites.tools);
746
+ const files = normalizeArray(prerequisites.files);
747
+ const env = normalizeArray(prerequisites.env);
748
+ const packageJsonDeps = normalizeArray(prerequisites.packageJsonDeps);
749
+ const missingTools = tools.filter((tool) => !isToolAvailable(tool));
750
+ const missingFiles = files.filter((file) => {
751
+ const path = isAbsolute(file) ? file : join4(cwd, file);
752
+ return !existsSync4(path);
753
+ });
754
+ const missingEnv = env.filter((name) => {
755
+ const value = process.env[name];
756
+ return typeof value !== "string" || value.trim() === "";
757
+ });
758
+ const packageJsonDepNames = packageJsonDeps.length > 0 ? readPackageJsonDependencyNames(cwd) : null;
759
+ const missingPackageJsonDeps = packageJsonDeps.filter((name) => {
760
+ return !packageJsonDepNames?.has(name);
761
+ });
762
+ return {
763
+ passed: missingTools.length === 0 && missingFiles.length === 0 && missingEnv.length === 0 && missingPackageJsonDeps.length === 0,
764
+ missingTools,
765
+ missingFiles,
766
+ missingEnv,
767
+ missingPackageJsonDeps
768
+ };
769
+ }
770
+
771
+ // ../engine/dist/planner.js
772
+ import { existsSync as existsSync5 } from "fs";
773
+ import { join as join5 } from "path";
774
+ function buildPlan(skillDir, meta) {
775
+ const steps = [];
776
+ const requires = {};
777
+ if (meta.capabilities?.shell)
778
+ requires.shell = true;
779
+ if (meta.capabilities?.network)
780
+ requires.network = true;
781
+ if (meta.capabilities?.fs_read)
782
+ requires.fs_read = true;
783
+ if (meta.capabilities?.fs_write)
784
+ requires.fs_write = true;
785
+ const checkPath = meta.scripts?.check ? join5(skillDir, meta.scripts.check) : join5(skillDir, "scripts", "check.sh");
786
+ if (existsSync5(checkPath)) {
787
+ steps.push({
788
+ type: "shell",
789
+ cmd: `./${meta.scripts?.check || "scripts/check.sh"}`
790
+ });
791
+ }
792
+ const runPath = meta.scripts?.run ? join5(skillDir, meta.scripts.run) : join5(skillDir, "scripts", "run.sh");
793
+ if (existsSync5(runPath)) {
794
+ steps.push({
795
+ type: "shell",
796
+ cmd: `./${meta.scripts?.run || "scripts/run.sh"}`
797
+ });
798
+ }
799
+ return {
800
+ steps,
801
+ requires,
802
+ risk: meta.risk || "low"
803
+ };
804
+ }
805
+
806
+ // ../engine/dist/runner.js
807
+ import { spawn } from "child_process";
808
+ import { mkdirSync, writeFileSync, existsSync as existsSync6 } from "fs";
809
+ import { join as join6 } from "path";
810
+ import { randomUUID } from "crypto";
811
+ async function runScript(cwd, scriptPath, runId) {
812
+ const rid = runId || randomUUID();
813
+ const runsDir = join6(getRunsDir(), rid);
814
+ mkdirSync(runsDir, { recursive: true });
815
+ return new Promise((resolve) => {
816
+ const proc = spawn("bash", [scriptPath], {
817
+ cwd,
818
+ stdio: ["ignore", "pipe", "pipe"]
819
+ });
820
+ let stdout = "";
821
+ let stderr = "";
822
+ proc.stdout?.on("data", (d) => stdout += d.toString());
823
+ proc.stderr?.on("data", (d) => stderr += d.toString());
824
+ proc.on("close", (code, signal) => {
825
+ const exitCode = code ?? (signal ? 1 : 0);
826
+ const success = exitCode === 0;
827
+ writeFileSync(join6(runsDir, "stdout.log"), stdout);
828
+ writeFileSync(join6(runsDir, "stderr.log"), stderr);
829
+ resolve({
830
+ runId: rid,
831
+ success,
832
+ exitCode,
833
+ stdout,
834
+ stderr
835
+ });
836
+ });
837
+ });
838
+ }
839
+ async function executePlan(cwd, skillDir, plan) {
840
+ const results = [];
841
+ for (const step of plan.steps) {
842
+ if (step.type === "shell") {
843
+ const parts = step.cmd.split(/\s+/);
844
+ const script = parts[0].startsWith("./") ? join6(skillDir, parts[0].slice(2)) : join6(skillDir, step.cmd);
845
+ if (existsSync6(script)) {
846
+ const r = await runScript(cwd, script, results.length === 0 ? void 0 : void 0);
847
+ results.push(r);
848
+ if (!r.success)
849
+ break;
850
+ }
851
+ }
852
+ }
853
+ return results;
854
+ }
855
+
856
+ // ../engine/dist/artifacts.js
857
+ import { writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "fs";
858
+ import { join as join7 } from "path";
859
+ function writeRunArtifacts(runId, skillName, cwd, plan, guardResult, runResult) {
860
+ const runsDir = join7(getRunsDir(), runId);
861
+ mkdirSync2(runsDir, { recursive: true });
862
+ const meta = {
863
+ runId,
864
+ skillName,
865
+ cwd,
866
+ startedAt: (/* @__PURE__ */ new Date()).toISOString()
867
+ };
868
+ if (runResult) {
869
+ meta.finishedAt = (/* @__PURE__ */ new Date()).toISOString();
870
+ meta.success = runResult.success;
871
+ }
872
+ writeFileSync2(join7(runsDir, "meta.json"), JSON.stringify(meta, null, 2));
873
+ writeFileSync2(join7(runsDir, "plan.json"), JSON.stringify(plan, null, 2));
874
+ writeFileSync2(join7(runsDir, "guard.json"), JSON.stringify(guardResult, null, 2));
875
+ if (runResult) {
876
+ writeFileSync2(join7(runsDir, "stdout.log"), runResult.stdout);
877
+ writeFileSync2(join7(runsDir, "stderr.log"), runResult.stderr);
878
+ writeFileSync2(join7(runsDir, "summary.json"), JSON.stringify({
879
+ success: runResult.success,
880
+ exitCode: runResult.exitCode
881
+ }, null, 2));
882
+ }
883
+ }
884
+
885
+ // src/utils/json.ts
886
+ function readJsonFlag(value) {
887
+ return Boolean(value?.json);
888
+ }
889
+ function shouldUseJson(opts, cmd) {
890
+ if (readJsonFlag(opts)) return true;
891
+ if (readJsonFlag(cmd?.opts?.())) return true;
892
+ if (readJsonFlag(cmd?.parent?.opts?.())) return true;
893
+ return false;
894
+ }
895
+
896
+ // src/commands/doctor.ts
897
+ async function doctorCmd(opts, cmd) {
898
+ const json = shouldUseJson(opts, cmd);
899
+ const results = {
900
+ node: null,
901
+ pnpm: null,
902
+ git: null,
903
+ registry: null,
904
+ paths: { skills: getSkillsDir(), runs: getRunsDir() }
905
+ };
906
+ try {
907
+ results.node = execSync("node -v", { encoding: "utf-8" }).trim();
908
+ } catch {
909
+ results.node = null;
910
+ }
911
+ try {
912
+ results.pnpm = execSync("pnpm -v 2>/dev/null || npm -v 2>/dev/null", {
913
+ encoding: "utf-8",
914
+ shell: "/bin/bash"
915
+ }).trim();
916
+ } catch {
917
+ results.pnpm = null;
918
+ }
919
+ try {
920
+ results.git = execSync("git --version", { encoding: "utf-8" }).trim();
921
+ } catch {
922
+ results.git = null;
923
+ }
924
+ try {
925
+ const index = await resolveRegistryIndex();
926
+ results.registry = index ? "ok" : null;
927
+ } catch (e) {
928
+ results.registry = e.message;
929
+ }
930
+ if (json) {
931
+ console.log(JSON.stringify(results, null, 2));
932
+ return;
933
+ }
934
+ console.log(chalk.bold("SkillRunner Doctor\n"));
935
+ console.log(
936
+ "Node: ",
937
+ results.node ? chalk.green(results.node) : chalk.red("not found")
938
+ );
939
+ console.log(
940
+ "pnpm: ",
941
+ results.pnpm ? chalk.green(results.pnpm) : chalk.yellow("optional")
942
+ );
943
+ console.log(
944
+ "Git: ",
945
+ results.git ? chalk.green(results.git) : chalk.red("not found")
946
+ );
947
+ console.log(
948
+ "Registry:",
949
+ results.registry === "ok" ? chalk.green("reachable") : chalk.red(String(results.registry))
950
+ );
951
+ console.log("\nPaths:");
952
+ console.log(" skills:", getSkillsDir());
953
+ console.log(" runs: ", getRunsDir());
954
+ }
955
+
956
+ // src/commands/list.ts
957
+ import chalk2 from "chalk";
958
+ import { readdirSync as readdirSync2, existsSync as existsSync7 } from "fs";
959
+ import { join as join8 } from "path";
960
+ async function listCmd(opts, cmd) {
961
+ const json = shouldUseJson(opts, cmd);
962
+ const skillsDir = getSkillsDir();
963
+ const skills = [];
964
+ if (existsSync7(skillsDir)) {
965
+ for (const entry of readdirSync2(skillsDir, { withFileTypes: true })) {
966
+ if (entry.isDirectory()) {
967
+ const skillDir = join8(skillsDir, entry.name);
968
+ try {
969
+ const loaded = loadSkillMetaFromDir(skillDir);
970
+ skills.push({
971
+ name: loaded.meta.name,
972
+ version: loaded.meta.version,
973
+ description: loaded.meta.description,
974
+ availability: loaded.meta.availability
975
+ });
976
+ } catch {
977
+ skills.push({
978
+ name: entry.name,
979
+ version: void 0,
980
+ description: void 0
981
+ });
982
+ }
983
+ }
984
+ }
985
+ }
986
+ if (json) {
987
+ console.log(JSON.stringify({ skills }, null, 2));
988
+ return;
989
+ }
990
+ console.log(chalk2.bold("Installed skills:\n"));
991
+ if (skills.length === 0) {
992
+ console.log(chalk2.dim(' (none) \u2014 use "skill install <name>" to install'));
993
+ return;
994
+ }
995
+ for (const s of skills) {
996
+ console.log(
997
+ ` ${chalk2.cyan(s.name)}${s.version ? chalk2.dim(`@${s.version}`) : ""}${chalk2.dim(` [${s.availability || "default"}]`)}`
998
+ );
999
+ if (s.description) console.log(` ${chalk2.dim(s.description)}`);
1000
+ }
1001
+ }
1002
+
1003
+ // src/commands/search.ts
1004
+ import chalk3 from "chalk";
1005
+ async function searchCmd(query, opts, cmd) {
1006
+ const json = shouldUseJson(opts, cmd);
1007
+ let index;
1008
+ try {
1009
+ index = await resolveRegistryIndex();
1010
+ } catch (e) {
1011
+ if (json) {
1012
+ console.log(
1013
+ JSON.stringify({ error: e.message, skills: [] }, null, 2)
1014
+ );
1015
+ } else {
1016
+ console.error(chalk3.red("Registry unreachable:"), e.message);
1017
+ }
1018
+ process.exit(1);
1019
+ }
1020
+ const hits = searchRegistry(index, query || "");
1021
+ if (json) {
1022
+ console.log(JSON.stringify({ query: query || "", skills: hits }, null, 2));
1023
+ return;
1024
+ }
1025
+ console.log(chalk3.bold(`Search: "${query || ""}"
1026
+ `));
1027
+ for (const s of hits) {
1028
+ const risk = s.risk || "low";
1029
+ const availability = s.availability || "default";
1030
+ console.log(
1031
+ ` ${chalk3.cyan(s.name)}${chalk3.dim(` [${risk}|${availability}]`)}`
1032
+ );
1033
+ console.log(` ${s.description}`);
1034
+ }
1035
+ }
1036
+
1037
+ // src/commands/info.ts
1038
+ import chalk4 from "chalk";
1039
+ import { existsSync as existsSync8, readdirSync as readdirSync3 } from "fs";
1040
+ import { join as join9 } from "path";
1041
+ function findInstalledSkillDir(name) {
1042
+ const skillsDir = getSkillsDir();
1043
+ if (!existsSync8(skillsDir)) return null;
1044
+ const entries = readdirSync3(skillsDir, { withFileTypes: true });
1045
+ const match = entries.find(
1046
+ (e) => e.isDirectory() && (e.name === name || e.name.startsWith(`${name}@`))
1047
+ );
1048
+ return match ? join9(skillsDir, match.name) : null;
1049
+ }
1050
+ async function infoCmd(name, opts, cmd) {
1051
+ const json = shouldUseJson(opts, cmd);
1052
+ let skill;
1053
+ const localPath = findInstalledSkillDir(name);
1054
+ if (localPath) {
1055
+ try {
1056
+ const loaded = loadSkillMetaFromDir(localPath);
1057
+ skill = {
1058
+ name: loaded.meta.name,
1059
+ description: loaded.meta.description,
1060
+ version: loaded.meta.version,
1061
+ tags: loaded.meta.tags,
1062
+ kind: loaded.meta.kind,
1063
+ risk: loaded.meta.risk,
1064
+ availability: loaded.meta.availability,
1065
+ prerequisites: loaded.meta.prerequisites,
1066
+ capabilities: loaded.meta.capabilities,
1067
+ scripts: loaded.meta.scripts,
1068
+ inputs: loaded.meta.inputs,
1069
+ contract: loaded.contract,
1070
+ paths: {
1071
+ dir: localPath,
1072
+ skill_md: join9(localPath, loaded.contract.file),
1073
+ raw_skill_md: "",
1074
+ contract: join9(localPath, loaded.contract.file),
1075
+ raw_contract: ""
1076
+ }
1077
+ };
1078
+ } catch {
1079
+ }
1080
+ }
1081
+ if (!skill) {
1082
+ try {
1083
+ const idx = await resolveRegistryIndex();
1084
+ skill = getSkillFromIndex(idx, name);
1085
+ } catch (e) {
1086
+ if (json) {
1087
+ console.log(JSON.stringify({ error: e.message }, null, 2));
1088
+ } else {
1089
+ console.error(chalk4.red("Registry unreachable:"), e.message);
1090
+ }
1091
+ process.exit(1);
1092
+ }
1093
+ }
1094
+ if (!skill) {
1095
+ if (json)
1096
+ console.log(JSON.stringify({ error: "Skill not found" }, null, 2));
1097
+ else console.error(chalk4.red("Skill not found:"), name);
1098
+ process.exit(1);
1099
+ }
1100
+ if (json) {
1101
+ console.log(JSON.stringify(skill, null, 2));
1102
+ return;
1103
+ }
1104
+ console.log(chalk4.bold(skill.name));
1105
+ if (skill.version) console.log(chalk4.dim(`Version: ${skill.version}`));
1106
+ console.log(chalk4.dim(`Kind: ${skill.kind || "unknown"}`));
1107
+ console.log(chalk4.dim(`Risk: ${skill.risk || "low"}`));
1108
+ console.log(chalk4.dim(`Availability: ${skill.availability || "default"}`));
1109
+ console.log();
1110
+ console.log(skill.description);
1111
+ if (skill.prerequisites) {
1112
+ const tools = Array.isArray(skill.prerequisites.tools) ? skill.prerequisites.tools : [];
1113
+ const files = Array.isArray(skill.prerequisites.files) ? skill.prerequisites.files : [];
1114
+ const env = Array.isArray(skill.prerequisites.env) ? skill.prerequisites.env : [];
1115
+ const packageJsonDeps = Array.isArray(skill.prerequisites.packageJsonDeps) ? skill.prerequisites.packageJsonDeps : [];
1116
+ if (tools.length || files.length || env.length || packageJsonDeps.length) {
1117
+ console.log(chalk4.dim("\nPrerequisites:"));
1118
+ if (tools.length) console.log(chalk4.dim(` tools: ${tools.join(", ")}`));
1119
+ if (files.length) console.log(chalk4.dim(` files: ${files.join(", ")}`));
1120
+ if (env.length)
1121
+ console.log(chalk4.dim(` env: ${env.map((v) => `$${v}`).join(", ")}`));
1122
+ if (packageJsonDeps.length) {
1123
+ console.log(
1124
+ chalk4.dim(` packageJsonDeps: ${packageJsonDeps.join(", ")}`)
1125
+ );
1126
+ }
1127
+ }
1128
+ }
1129
+ if (skill.tags?.length)
1130
+ console.log(chalk4.dim("\nTags: " + skill.tags.join(", ")));
1131
+ }
1132
+
1133
+ // src/commands/install.ts
1134
+ import chalk5 from "chalk";
1135
+ import {
1136
+ cpSync,
1137
+ mkdirSync as mkdirSync3,
1138
+ existsSync as existsSync9,
1139
+ rmSync,
1140
+ writeFileSync as writeFileSync3,
1141
+ chmodSync
1142
+ } from "fs";
1143
+ import { dirname as dirname2, join as join10 } from "path";
1144
+ function normalizeRelativePath(path) {
1145
+ return path.replace(/^\.\/+/, "");
1146
+ }
1147
+ function toSkillRelativePath(path, skillSlug) {
1148
+ const normalized = normalizeRelativePath(path);
1149
+ const canonicalPrefix = `registry/skills/${skillSlug}/`;
1150
+ if (normalized.startsWith(canonicalPrefix)) {
1151
+ return normalized.slice(canonicalPrefix.length);
1152
+ }
1153
+ const slugMarker = `/${skillSlug}/`;
1154
+ const markerIndex = normalized.lastIndexOf(slugMarker);
1155
+ if (markerIndex >= 0) {
1156
+ return normalized.slice(markerIndex + slugMarker.length);
1157
+ }
1158
+ return normalized;
1159
+ }
1160
+ function dedupe(values) {
1161
+ const out = [];
1162
+ const seen = /* @__PURE__ */ new Set();
1163
+ for (const v of values) {
1164
+ if (seen.has(v)) continue;
1165
+ seen.add(v);
1166
+ out.push(v);
1167
+ }
1168
+ return out;
1169
+ }
1170
+ function isHttpUrl(value) {
1171
+ return typeof value === "string" && /^https?:\/\//i.test(value);
1172
+ }
1173
+ function stripTrailingSlashes(value) {
1174
+ return value.replace(/\/+$/, "");
1175
+ }
1176
+ function buildSkillFileUrls(index, skill, relativePath) {
1177
+ const skillSlug = getRegistrySkillSlug(skill) || skill.name;
1178
+ const normalizedPath = toSkillRelativePath(relativePath, skillSlug);
1179
+ const contractPath = toSkillRelativePath(
1180
+ skill.paths?.contract || skill.paths?.skill_md || "SKILL.md",
1181
+ skillSlug
1182
+ );
1183
+ const candidates = [];
1184
+ const rawSkillMd = skill.paths?.raw_skill_md;
1185
+ const rawContract = skill.paths?.raw_contract || rawSkillMd;
1186
+ if (normalizedPath === contractPath && isHttpUrl(rawContract)) {
1187
+ candidates.push(rawContract);
1188
+ }
1189
+ if (normalizedPath === "SKILL.md" && isHttpUrl(rawSkillMd)) {
1190
+ candidates.push(rawSkillMd);
1191
+ }
1192
+ const skillBases = [];
1193
+ if (isHttpUrl(rawContract) && rawContract.endsWith(`/${normalizeRelativePath(contractPath)}`)) {
1194
+ skillBases.push(
1195
+ rawContract.slice(0, -`/${normalizeRelativePath(contractPath)}`.length)
1196
+ );
1197
+ }
1198
+ if (isHttpUrl(rawSkillMd) && rawSkillMd.endsWith("/SKILL.md")) {
1199
+ skillBases.push(rawSkillMd.slice(0, -"/SKILL.md".length));
1200
+ }
1201
+ if (isHttpUrl(index.source?.base_url)) {
1202
+ skillBases.push(
1203
+ `${stripTrailingSlashes(index.source.base_url)}/${skillSlug}`
1204
+ );
1205
+ }
1206
+ for (const base of dedupe(skillBases)) {
1207
+ candidates.push(`${stripTrailingSlashes(base)}/${normalizedPath}`);
1208
+ }
1209
+ return dedupe(candidates);
1210
+ }
1211
+ async function fetchFirstText(urls) {
1212
+ for (const url of urls) {
1213
+ try {
1214
+ const res = await fetch(url);
1215
+ if (!res.ok) continue;
1216
+ return { url, body: await res.text() };
1217
+ } catch {
1218
+ }
1219
+ }
1220
+ return null;
1221
+ }
1222
+ function writeDownloadedFile(destDir, relativePath, content) {
1223
+ const normalizedPath = normalizeRelativePath(relativePath);
1224
+ const target = join10(destDir, normalizedPath);
1225
+ mkdirSync3(dirname2(target), { recursive: true });
1226
+ writeFileSync3(target, content);
1227
+ if (normalizedPath.endsWith(".sh")) {
1228
+ chmodSync(target, 493);
1229
+ }
1230
+ }
1231
+ async function installSkillFromRemote(index, skill, destDir) {
1232
+ const skillSlug = getRegistrySkillSlug(skill) || skill.name;
1233
+ const contractRelativePath = toSkillRelativePath(
1234
+ skill.paths?.contract || skill.paths?.skill_md || "SKILL.md",
1235
+ skillSlug
1236
+ );
1237
+ const contractUrls = buildSkillFileUrls(index, skill, contractRelativePath);
1238
+ const contractFile = await fetchFirstText(contractUrls);
1239
+ if (!contractFile) {
1240
+ throw new Error(
1241
+ `Could not download contract "${contractRelativePath}" for ${skillSlug}`
1242
+ );
1243
+ }
1244
+ writeDownloadedFile(destDir, contractRelativePath, contractFile.body);
1245
+ const meta = parseSkillContract(contractFile.body, {
1246
+ contractType: inferSkillContractType(contractRelativePath),
1247
+ sourcePath: contractRelativePath,
1248
+ fallbackName: skill.name
1249
+ });
1250
+ const requiredScripts = /* @__PURE__ */ new Set();
1251
+ if (meta.scripts?.check) {
1252
+ requiredScripts.add(normalizeRelativePath(meta.scripts.check));
1253
+ }
1254
+ if (meta.scripts?.run) {
1255
+ requiredScripts.add(normalizeRelativePath(meta.scripts.run));
1256
+ }
1257
+ const optionalScripts = ["scripts/check.sh", "scripts/run.sh"].filter(
1258
+ (p) => !requiredScripts.has(p)
1259
+ );
1260
+ const scriptPaths = [...requiredScripts, ...optionalScripts];
1261
+ for (const scriptPath of scriptPaths) {
1262
+ const scriptUrls = buildSkillFileUrls(index, skill, scriptPath);
1263
+ const script = await fetchFirstText(scriptUrls);
1264
+ if (!script) {
1265
+ if (requiredScripts.has(scriptPath)) {
1266
+ throw new Error(
1267
+ `Could not download required script "${scriptPath}" for ${skillSlug}`
1268
+ );
1269
+ }
1270
+ continue;
1271
+ }
1272
+ writeDownloadedFile(destDir, scriptPath, script.body);
1273
+ }
1274
+ }
1275
+ async function installCmd(name, opts, cmd) {
1276
+ const json = shouldUseJson(opts, cmd);
1277
+ let index;
1278
+ try {
1279
+ index = await resolveRegistryIndex();
1280
+ } catch (e) {
1281
+ if (json) {
1282
+ console.log(
1283
+ JSON.stringify(
1284
+ { success: false, error: e.message },
1285
+ null,
1286
+ 2
1287
+ )
1288
+ );
1289
+ } else {
1290
+ console.error(chalk5.red("Registry unreachable:"), e.message);
1291
+ }
1292
+ process.exit(1);
1293
+ }
1294
+ const skill = getSkillFromIndex(index, name);
1295
+ if (!skill) {
1296
+ if (json) {
1297
+ console.log(
1298
+ JSON.stringify(
1299
+ { success: false, error: `Skill not found: ${name}` },
1300
+ null,
1301
+ 2
1302
+ )
1303
+ );
1304
+ } else {
1305
+ console.error(chalk5.red("Skill not found:"), name);
1306
+ }
1307
+ process.exit(1);
1308
+ }
1309
+ const skillsDir = getSkillsDir();
1310
+ mkdirSync3(skillsDir, { recursive: true });
1311
+ const skillSlug = getRegistrySkillSlug(skill) || skill.name;
1312
+ const destDir = join10(skillsDir, `${skillSlug}@${skill.version || "latest"}`);
1313
+ rmSync(destDir, { recursive: true, force: true });
1314
+ try {
1315
+ const repoRoot = resolveRegistryRoot();
1316
+ const sourceDir = repoRoot ? join10(repoRoot, "registry", "skills", skillSlug) : "";
1317
+ if (sourceDir && existsSync9(sourceDir)) {
1318
+ cpSync(sourceDir, destDir, { recursive: true });
1319
+ } else {
1320
+ await installSkillFromRemote(index, skill, destDir);
1321
+ }
1322
+ } catch (e) {
1323
+ rmSync(destDir, { recursive: true, force: true });
1324
+ if (json) {
1325
+ console.log(
1326
+ JSON.stringify(
1327
+ {
1328
+ success: false,
1329
+ error: `Install failed: ${e.message}`
1330
+ },
1331
+ null,
1332
+ 2
1333
+ )
1334
+ );
1335
+ } else {
1336
+ console.error(chalk5.red("Install failed:"), e.message);
1337
+ }
1338
+ process.exit(1);
1339
+ }
1340
+ if (json) {
1341
+ console.log(
1342
+ JSON.stringify(
1343
+ {
1344
+ success: true,
1345
+ name: skill.name,
1346
+ slug: skillSlug,
1347
+ path: destDir
1348
+ },
1349
+ null,
1350
+ 2
1351
+ )
1352
+ );
1353
+ } else {
1354
+ const label = skillSlug === skill.name ? skill.name : `${skill.name} (${skillSlug})`;
1355
+ console.log(chalk5.green("Installed:"), label, chalk5.dim(`\u2192 ${destDir}`));
1356
+ }
1357
+ }
1358
+
1359
+ // src/commands/uninstall.ts
1360
+ import chalk6 from "chalk";
1361
+ import { rmSync as rmSync2, existsSync as existsSync10, readdirSync as readdirSync4 } from "fs";
1362
+ import { join as join11 } from "path";
1363
+ async function uninstallCmd(name, opts, cmd) {
1364
+ const json = shouldUseJson(opts, cmd);
1365
+ const skillsDir = getSkillsDir();
1366
+ if (!existsSync10(skillsDir)) {
1367
+ if (json)
1368
+ console.log(
1369
+ JSON.stringify(
1370
+ { success: false, error: "No skills installed" },
1371
+ null,
1372
+ 2
1373
+ )
1374
+ );
1375
+ else console.log(chalk6.dim("No skills installed."));
1376
+ return;
1377
+ }
1378
+ const entries = readdirSync4(skillsDir, { withFileTypes: true });
1379
+ const match = entries.find(
1380
+ (e) => e.isDirectory() && (e.name === name || e.name.startsWith(name + "@"))
1381
+ );
1382
+ if (!match) {
1383
+ if (json) {
1384
+ console.log(
1385
+ JSON.stringify(
1386
+ { success: false, error: `Skill not found: ${name}` },
1387
+ null,
1388
+ 2
1389
+ )
1390
+ );
1391
+ } else {
1392
+ console.error(chalk6.red("Skill not found:"), name);
1393
+ }
1394
+ process.exit(1);
1395
+ }
1396
+ rmSync2(join11(skillsDir, match.name), { recursive: true });
1397
+ if (json) {
1398
+ console.log(JSON.stringify({ success: true }, null, 2));
1399
+ } else {
1400
+ console.log(chalk6.green("Uninstalled:"), match.name);
1401
+ }
1402
+ }
1403
+
1404
+ // src/commands/plan.ts
1405
+ import chalk7 from "chalk";
1406
+ import { existsSync as existsSync11, readdirSync as readdirSync5 } from "fs";
1407
+ import { join as join12 } from "path";
1408
+ function findSkillDir(name) {
1409
+ const skillsDir = getSkillsDir();
1410
+ if (!existsSync11(skillsDir)) return null;
1411
+ const entries = readdirSync5(skillsDir, { withFileTypes: true });
1412
+ const match = entries.find(
1413
+ (e) => e.isDirectory() && (e.name === name || e.name.startsWith(name + "@"))
1414
+ );
1415
+ return match ? join12(skillsDir, match.name) : null;
1416
+ }
1417
+ async function planCmd(name, opts, cmd) {
1418
+ const json = shouldUseJson(opts, cmd);
1419
+ const skillDir = findSkillDir(name);
1420
+ if (!skillDir) {
1421
+ if (json) {
1422
+ console.log(
1423
+ JSON.stringify(
1424
+ { success: false, error: `Skill not installed: ${name}` },
1425
+ null,
1426
+ 2
1427
+ )
1428
+ );
1429
+ } else {
1430
+ console.error(chalk7.red("Skill not installed:"), name);
1431
+ }
1432
+ process.exit(1);
1433
+ }
1434
+ let loaded = null;
1435
+ try {
1436
+ loaded = loadSkillMetaFromDir(skillDir);
1437
+ } catch (e) {
1438
+ if (json) {
1439
+ console.log(
1440
+ JSON.stringify(
1441
+ { success: false, error: e.message },
1442
+ null,
1443
+ 2
1444
+ )
1445
+ );
1446
+ } else {
1447
+ console.error(chalk7.red(e.message));
1448
+ }
1449
+ process.exit(1);
1450
+ }
1451
+ if (!loaded) process.exit(1);
1452
+ const meta = loaded.meta;
1453
+ const plan = buildPlan(skillDir, meta);
1454
+ if (json) {
1455
+ console.log(
1456
+ JSON.stringify(
1457
+ {
1458
+ success: true,
1459
+ skill: meta.name,
1460
+ availability: meta.availability || "default",
1461
+ prerequisites: meta.prerequisites || {},
1462
+ plan
1463
+ },
1464
+ null,
1465
+ 2
1466
+ )
1467
+ );
1468
+ return;
1469
+ }
1470
+ console.log(chalk7.bold(meta.name));
1471
+ console.log(chalk7.dim(meta.description));
1472
+ console.log(chalk7.dim(`Risk: ${plan.risk}
1473
+ `));
1474
+ if (meta.availability) {
1475
+ console.log(chalk7.dim(`Availability: ${meta.availability}`));
1476
+ }
1477
+ if (meta.prerequisites) {
1478
+ const tools = meta.prerequisites.tools || [];
1479
+ const files = meta.prerequisites.files || [];
1480
+ const env = meta.prerequisites.env || [];
1481
+ const packageJsonDeps = meta.prerequisites.packageJsonDeps || [];
1482
+ if (tools.length || files.length || env.length || packageJsonDeps.length) {
1483
+ console.log(chalk7.dim("Prerequisites:"));
1484
+ if (tools.length) console.log(chalk7.dim(` tools: ${tools.join(", ")}`));
1485
+ if (files.length) console.log(chalk7.dim(` files: ${files.join(", ")}`));
1486
+ if (env.length) {
1487
+ console.log(chalk7.dim(` env: ${env.map((v) => `$${v}`).join(", ")}`));
1488
+ }
1489
+ if (packageJsonDeps.length) {
1490
+ console.log(
1491
+ chalk7.dim(` packageJsonDeps: ${packageJsonDeps.join(", ")}`)
1492
+ );
1493
+ }
1494
+ }
1495
+ }
1496
+ console.log("Steps:");
1497
+ plan.steps.forEach((s, i) => console.log(` ${i + 1}. ${s.cmd}`));
1498
+ }
1499
+
1500
+ // src/commands/run.ts
1501
+ import chalk8 from "chalk";
1502
+ import { existsSync as existsSync12, readdirSync as readdirSync6 } from "fs";
1503
+ import { join as join13 } from "path";
1504
+ import prompts from "prompts";
1505
+ import { randomUUID as randomUUID2 } from "crypto";
1506
+ function findSkillDir2(name) {
1507
+ const skillsDir = getSkillsDir();
1508
+ if (!existsSync12(skillsDir)) return null;
1509
+ const entries = readdirSync6(skillsDir, { withFileTypes: true });
1510
+ const match = entries.find(
1511
+ (e) => e.isDirectory() && (e.name === name || e.name.startsWith(name + "@"))
1512
+ );
1513
+ return match ? join13(skillsDir, match.name) : null;
1514
+ }
1515
+ async function runCmd(name, opts, cmd) {
1516
+ const json = shouldUseJson(opts, cmd);
1517
+ const cwd = opts.cwd || process.cwd();
1518
+ const skillDir = findSkillDir2(name);
1519
+ if (!skillDir) {
1520
+ if (json) {
1521
+ console.log(
1522
+ JSON.stringify(
1523
+ { success: false, error: `Skill not installed: ${name}` },
1524
+ null,
1525
+ 2
1526
+ )
1527
+ );
1528
+ } else {
1529
+ console.error(chalk8.red("Skill not installed:"), name);
1530
+ }
1531
+ process.exit(1);
1532
+ }
1533
+ let metaResult = null;
1534
+ try {
1535
+ metaResult = loadSkillMetaFromDir(skillDir);
1536
+ } catch (e) {
1537
+ if (json) {
1538
+ console.log(
1539
+ JSON.stringify(
1540
+ { success: false, error: e.message },
1541
+ null,
1542
+ 2
1543
+ )
1544
+ );
1545
+ } else {
1546
+ console.error(chalk8.red(e.message));
1547
+ }
1548
+ process.exit(1);
1549
+ }
1550
+ if (!metaResult) process.exit(1);
1551
+ const meta = metaResult.meta;
1552
+ const plan = buildPlan(skillDir, meta);
1553
+ const preflight = checkSkillPrerequisites(meta, cwd);
1554
+ if (!preflight.passed) {
1555
+ if (json) {
1556
+ console.log(
1557
+ JSON.stringify(
1558
+ {
1559
+ success: false,
1560
+ error: "Preflight check failed",
1561
+ preflight
1562
+ },
1563
+ null,
1564
+ 2
1565
+ )
1566
+ );
1567
+ } else {
1568
+ console.error(chalk8.red("Preflight check failed."));
1569
+ if (preflight.missingTools.length) {
1570
+ console.error(
1571
+ chalk8.dim(` Missing tools: ${preflight.missingTools.join(", ")}`)
1572
+ );
1573
+ }
1574
+ if (preflight.missingFiles.length) {
1575
+ console.error(
1576
+ chalk8.dim(` Missing files: ${preflight.missingFiles.join(", ")}`)
1577
+ );
1578
+ }
1579
+ if (preflight.missingEnv.length) {
1580
+ console.error(
1581
+ chalk8.dim(
1582
+ ` Missing env vars: ${preflight.missingEnv.map((v) => `$${v}`).join(", ")}`
1583
+ )
1584
+ );
1585
+ }
1586
+ if (preflight.missingPackageJsonDeps.length) {
1587
+ console.error(
1588
+ chalk8.dim(
1589
+ ` Missing package.json deps: ${preflight.missingPackageJsonDeps.join(", ")}`
1590
+ )
1591
+ );
1592
+ }
1593
+ console.error(chalk8.dim(` Skill: ${meta.name}`));
1594
+ }
1595
+ process.exit(1);
1596
+ }
1597
+ const checkPath = meta.scripts?.check ? join13(skillDir, meta.scripts.check) : join13(skillDir, "scripts", "check.sh");
1598
+ const runPath = meta.scripts?.run ? join13(skillDir, meta.scripts.run) : join13(skillDir, "scripts", "run.sh");
1599
+ const guardCheck = scanScriptForBannedPatterns(checkPath);
1600
+ const guardRun = scanScriptForBannedPatterns(runPath);
1601
+ const guardResult = {
1602
+ passed: guardCheck.passed && guardRun.passed,
1603
+ violations: [...guardCheck.violations, ...guardRun.violations]
1604
+ };
1605
+ if (!guardResult.passed) {
1606
+ if (json) {
1607
+ console.log(
1608
+ JSON.stringify(
1609
+ {
1610
+ success: false,
1611
+ error: "Guard block",
1612
+ violations: guardResult.violations
1613
+ },
1614
+ null,
1615
+ 2
1616
+ )
1617
+ );
1618
+ } else {
1619
+ console.error(chalk8.red(blockMessage(guardResult.violations)));
1620
+ }
1621
+ process.exit(1);
1622
+ }
1623
+ if (!opts.yes && !json) {
1624
+ const { confirm } = await prompts({
1625
+ type: "confirm",
1626
+ name: "confirm",
1627
+ message: `Run ${meta.name}? (${plan.steps.length} step(s), risk: ${plan.risk})`,
1628
+ initial: false
1629
+ });
1630
+ if (!confirm) {
1631
+ console.log(chalk8.dim("Cancelled."));
1632
+ return;
1633
+ }
1634
+ }
1635
+ const runId = randomUUID2();
1636
+ writeRunArtifacts(runId, meta.name, cwd, plan, guardResult);
1637
+ const results = await executePlan(cwd, skillDir, plan);
1638
+ const last = results[results.length - 1];
1639
+ const success = last ? last.success : true;
1640
+ const exitCode = last ? last.exitCode : 0;
1641
+ const failureMessage = !success ? last?.stderr?.trim() || last?.stdout?.trim() || "Skill script failed" : void 0;
1642
+ writeRunArtifacts(
1643
+ runId,
1644
+ meta.name,
1645
+ cwd,
1646
+ plan,
1647
+ guardResult,
1648
+ last ? {
1649
+ success,
1650
+ stdout: last.stdout,
1651
+ stderr: last.stderr,
1652
+ exitCode
1653
+ } : void 0
1654
+ );
1655
+ if (json) {
1656
+ console.log(
1657
+ JSON.stringify(
1658
+ {
1659
+ success,
1660
+ runId,
1661
+ exitCode,
1662
+ error: failureMessage,
1663
+ stdout: last?.stdout,
1664
+ stderr: last?.stderr
1665
+ },
1666
+ null,
1667
+ 2
1668
+ )
1669
+ );
1670
+ if (!success) {
1671
+ process.exit(exitCode || 1);
1672
+ }
1673
+ } else {
1674
+ if (success) {
1675
+ console.log(chalk8.green("Done."), chalk8.dim(`Run ID: ${runId}`));
1676
+ } else {
1677
+ console.error(chalk8.red("Failed."), chalk8.dim(`Run ID: ${runId}`));
1678
+ if (failureMessage) console.error(chalk8.dim(failureMessage));
1679
+ process.exit(exitCode || 1);
1680
+ }
1681
+ }
1682
+ }
1683
+
1684
+ // src/commands/logs.ts
1685
+ import chalk9 from "chalk";
1686
+ import { readdirSync as readdirSync7, readFileSync as readFileSync5, existsSync as existsSync13, statSync as statSync2 } from "fs";
1687
+ import { join as join14 } from "path";
1688
+ function getRunIdsByRecent(runsDir) {
1689
+ const entries = readdirSync7(runsDir, { withFileTypes: true }).filter(
1690
+ (e) => e.isDirectory() && existsSync13(join14(runsDir, e.name, "meta.json"))
1691
+ ).map((e) => ({
1692
+ name: e.name,
1693
+ mtime: statSync2(join14(runsDir, e.name)).mtimeMs
1694
+ }));
1695
+ return entries.sort((a, b) => b.mtime - a.mtime).map((e) => e.name);
1696
+ }
1697
+ async function logsCmd(opts, cmd) {
1698
+ const json = shouldUseJson(opts, cmd);
1699
+ const runsDir = getRunsDir();
1700
+ if (!existsSync13(runsDir)) {
1701
+ if (json) console.log(JSON.stringify({ runs: [] }, null, 2));
1702
+ else console.log(chalk9.dim("No runs yet."));
1703
+ return;
1704
+ }
1705
+ const ids = getRunIdsByRecent(runsDir);
1706
+ if (ids.length === 0) {
1707
+ if (json) console.log(JSON.stringify({ runs: [] }, null, 2));
1708
+ else console.log(chalk9.dim("No runs yet."));
1709
+ return;
1710
+ }
1711
+ let targetId = opts.id;
1712
+ if (opts.last && ids.length) targetId = ids[0];
1713
+ if (!targetId) {
1714
+ const runs = ids.slice(0, 20).map((id) => {
1715
+ try {
1716
+ const metaPath2 = join14(runsDir, id, "meta.json");
1717
+ const meta2 = JSON.parse(readFileSync5(metaPath2, "utf-8"));
1718
+ return { id, ...meta2 };
1719
+ } catch {
1720
+ return null;
1721
+ }
1722
+ }).filter((v) => Boolean(v));
1723
+ if (json) {
1724
+ console.log(JSON.stringify({ runs }, null, 2));
1725
+ } else {
1726
+ console.log(chalk9.bold("Recent runs:\n"));
1727
+ for (const r of runs) {
1728
+ console.log(` ${r.id} ${r.skillName || "?"} ${r.startedAt || ""}`);
1729
+ }
1730
+ }
1731
+ return;
1732
+ }
1733
+ const runPath = join14(runsDir, targetId);
1734
+ if (!existsSync13(runPath)) {
1735
+ if (json) console.log(JSON.stringify({ error: "Run not found" }, null, 2));
1736
+ else console.error(chalk9.red("Run not found:"), targetId);
1737
+ process.exit(1);
1738
+ }
1739
+ const metaPath = join14(runPath, "meta.json");
1740
+ const stdoutPath = join14(runPath, "stdout.log");
1741
+ const stderrPath = join14(runPath, "stderr.log");
1742
+ const meta = existsSync13(metaPath) ? JSON.parse(readFileSync5(metaPath, "utf-8")) : {};
1743
+ const stdout = existsSync13(stdoutPath) ? readFileSync5(stdoutPath, "utf-8") : "";
1744
+ const stderr = existsSync13(stderrPath) ? readFileSync5(stderrPath, "utf-8") : "";
1745
+ if (json) {
1746
+ console.log(JSON.stringify({ ...meta, stdout, stderr }, null, 2));
1747
+ return;
1748
+ }
1749
+ console.log(chalk9.bold(`Run ${targetId}
1750
+ `));
1751
+ console.log("Skill:", meta.skillName ?? "(unknown)");
1752
+ console.log("CWD: ", meta.cwd ?? "(unknown)");
1753
+ console.log("Started:", meta.startedAt ?? "(unknown)");
1754
+ console.log("Success:", meta.success ?? "(unknown)");
1755
+ if (stdout) {
1756
+ console.log(chalk9.bold("\n--- stdout ---"));
1757
+ console.log(stdout);
1758
+ }
1759
+ if (stderr) {
1760
+ console.log(chalk9.bold("\n--- stderr ---"));
1761
+ console.log(chalk9.red(stderr));
1762
+ }
1763
+ }
1764
+
1765
+ // src/commands/open.ts
1766
+ import chalk10 from "chalk";
1767
+ import { spawn as spawn2 } from "child_process";
1768
+ import { platform } from "os";
1769
+ async function openCmd(opts, cmd) {
1770
+ const json = shouldUseJson(opts, cmd);
1771
+ const url = "http://localhost:5173";
1772
+ if (json) {
1773
+ console.log(
1774
+ JSON.stringify(
1775
+ {
1776
+ url,
1777
+ message: "Start dashboard server with: pnpm --filter dashboard dev"
1778
+ },
1779
+ null,
1780
+ 2
1781
+ )
1782
+ );
1783
+ return;
1784
+ }
1785
+ spawn2("pnpm", ["--filter", "dashboard", "dev"], {
1786
+ stdio: "inherit",
1787
+ shell: true
1788
+ });
1789
+ const openUrl = () => {
1790
+ const cmd2 = platform() === "darwin" ? "open" : platform() === "win32" ? "start" : "xdg-open";
1791
+ spawn2(cmd2, [url], { stdio: "ignore", detached: true });
1792
+ };
1793
+ setTimeout(openUrl, 3e3);
1794
+ console.log(chalk10.green("Dashboard starting at"), url);
1795
+ }
1796
+
1797
+ // src/commands/cursor.ts
1798
+ import chalk11 from "chalk";
1799
+ import { cpSync as cpSync2, existsSync as existsSync14, mkdirSync as mkdirSync4, readdirSync as readdirSync8 } from "fs";
1800
+ import { join as join15 } from "path";
1801
+ function getCursorSkillsDir(scope) {
1802
+ if (scope === "global") {
1803
+ return join15(process.env.HOME || "", ".cursor", "skills");
1804
+ }
1805
+ return join15(process.cwd(), ".cursor", "skills");
1806
+ }
1807
+ async function cursorInstallCmd(name, opts, cmd) {
1808
+ const json = shouldUseJson(opts, cmd);
1809
+ const scope = opts.scope || "project";
1810
+ const skillsDir = getSkillsDir();
1811
+ if (!existsSync14(skillsDir)) {
1812
+ if (json)
1813
+ console.log(
1814
+ JSON.stringify(
1815
+ { success: false, error: "No skills installed" },
1816
+ null,
1817
+ 2
1818
+ )
1819
+ );
1820
+ else
1821
+ console.error(
1822
+ chalk11.red('No skills installed. Run "skill install <name>" first.')
1823
+ );
1824
+ process.exit(1);
1825
+ }
1826
+ const entries = readdirSync8(skillsDir, { withFileTypes: true });
1827
+ const match = entries.find(
1828
+ (e) => e.isDirectory() && (e.name === name || e.name.startsWith(name + "@"))
1829
+ );
1830
+ if (!match) {
1831
+ if (json) {
1832
+ console.log(
1833
+ JSON.stringify(
1834
+ { success: false, error: `Skill not installed: ${name}` },
1835
+ null,
1836
+ 2
1837
+ )
1838
+ );
1839
+ } else {
1840
+ console.error(chalk11.red("Skill not installed:"), name);
1841
+ }
1842
+ process.exit(1);
1843
+ }
1844
+ const srcDir = join15(skillsDir, match.name);
1845
+ const destDir = getCursorSkillsDir(scope);
1846
+ mkdirSync4(destDir, { recursive: true });
1847
+ const dest = join15(destDir, match.name.split("@")[0]);
1848
+ cpSync2(srcDir, dest, { recursive: true });
1849
+ if (json) {
1850
+ console.log(JSON.stringify({ success: true, path: dest, scope }, null, 2));
1851
+ } else {
1852
+ console.log(
1853
+ chalk11.green("Installed to Cursor:"),
1854
+ dest,
1855
+ chalk11.dim(`(${scope})`)
1856
+ );
1857
+ }
1858
+ }
1859
+ async function cursorListCmd(opts, cmd) {
1860
+ const json = shouldUseJson(opts, cmd);
1861
+ const scope = opts.scope || "both";
1862
+ const dirs = [];
1863
+ if (scope === "project" || scope === "both") {
1864
+ dirs.push({ scope: "project", path: getCursorSkillsDir("project") });
1865
+ }
1866
+ if (scope === "global" || scope === "both") {
1867
+ dirs.push({ scope: "global", path: getCursorSkillsDir("global") });
1868
+ }
1869
+ const result = {};
1870
+ for (const { scope: s, path: p } of dirs) {
1871
+ if (existsSync14(p)) {
1872
+ result[s] = readdirSync8(p, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name);
1873
+ } else {
1874
+ result[s] = [];
1875
+ }
1876
+ }
1877
+ if (json) {
1878
+ console.log(JSON.stringify(result, null, 2));
1879
+ return;
1880
+ }
1881
+ for (const [s, skills] of Object.entries(result)) {
1882
+ console.log(chalk11.bold(`${s} skills:`));
1883
+ if (skills.length) skills.forEach((n) => console.log(` ${n}`));
1884
+ else console.log(chalk11.dim(" (none)"));
1885
+ console.log();
1886
+ }
1887
+ }
1888
+
1889
+ // src/cli.ts
1890
+ var program = new Command();
1891
+ var require2 = createRequire(import.meta.url);
1892
+ var pkg = require2("../package.json");
1893
+ var cliVersion = typeof pkg.version === "string" && pkg.version.trim() ? pkg.version : "0.0.0";
1894
+ program.name("skill").description("SkillRunner \u2014 browse, install, and run skills").version(cliVersion).option("-j, --json", "Output JSON for extension integration");
1895
+ program.command("doctor").option("--json").description("Check env, providers, registry").action(doctorCmd);
1896
+ program.command("list").option("--json").description("List installed skills").action(listCmd);
1897
+ program.command("search <query>").option("--json").description("Search registry").action(searchCmd);
1898
+ program.command("info <name>").option("--json").description("Show skill details").action(infoCmd);
1899
+ program.command("install <name>").option("--json").description("Install skill").action(installCmd);
1900
+ program.command("uninstall <name>").option("--json").description("Uninstall skill").action(uninstallCmd);
1901
+ program.command("plan <name>").option("--json").description("Show plan only").option("--inputs <pairs...>", "input k=v").action(planCmd);
1902
+ program.command("run <name>").option("--json").description("Run skill").option("--yes", "Skip confirmation").option("--inputs <pairs...>", "input k=v").option("--cwd <dir>", "Working directory").option("--allow-dirty", "Allow dirty repo").option("--no-branch", "Do not create branch").action(runCmd);
1903
+ program.command("logs").option("--json").description("Show run logs").option("--last", "Last run").option("--id <runId>", "Run ID").action(logsCmd);
1904
+ program.command("open").option("--json").description("Open dashboard").action(openCmd);
1905
+ var cursorCmd = new Command("cursor").description("Cursor integration");
1906
+ cursorCmd.command("install <name>").option("--json").option("--scope <scope>", "project|global", "project").action(cursorInstallCmd);
1907
+ cursorCmd.command("list").option("--json").option("--scope <scope>", "project|global|both", "both").action(cursorListCmd);
93
1908
  program.addCommand(cursorCmd);
94
1909
  program.parse();
95
1910
  //# sourceMappingURL=cli.js.map