@amrhas82/agentic-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/.claude-plugin/plugin-lite.json +38 -0
  2. package/.claude-plugin/plugin-pro.json +183 -0
  3. package/.claude-plugin/plugin-standard.json +147 -0
  4. package/.claude-plugin/plugin.json +47 -0
  5. package/LICENSE +21 -0
  6. package/QUICK-START.md +318 -0
  7. package/README.md +449 -0
  8. package/TROUBLESHOOTING.md +788 -0
  9. package/VARIANTS.md +480 -0
  10. package/agents/1-create-prd.md +56 -0
  11. package/agents/2-generate-tasks.md +73 -0
  12. package/agents/3-process-task-list.md +101 -0
  13. package/agents/business-analyst.md +76 -0
  14. package/agents/full-stack-dev.md +80 -0
  15. package/agents/holistic-architect.md +91 -0
  16. package/agents/master.md +55 -0
  17. package/agents/orchestrator.md +103 -0
  18. package/agents/product-manager.md +82 -0
  19. package/agents/product-owner.md +97 -0
  20. package/agents/qa-test-architect.md +72 -0
  21. package/agents/scrum-master.md +64 -0
  22. package/agents/ux-expert.md +74 -0
  23. package/cli.js +230 -0
  24. package/hooks/register-agents.js +123 -0
  25. package/package.json +61 -0
  26. package/resources/agent-teams.yaml +50 -0
  27. package/resources/checklists.md +1724 -0
  28. package/resources/data.md +1372 -0
  29. package/resources/task-briefs.md +4428 -0
  30. package/resources/templates.yaml +5634 -0
  31. package/resources/workflows.yaml +1253 -0
  32. package/skills/algorithmic-art/LICENSE.txt +202 -0
  33. package/skills/algorithmic-art/SKILL.md +405 -0
  34. package/skills/algorithmic-art/templates/generator_template.js +223 -0
  35. package/skills/algorithmic-art/templates/viewer.html +599 -0
  36. package/skills/artifacts-builder/LICENSE.txt +202 -0
  37. package/skills/artifacts-builder/SKILL.md +74 -0
  38. package/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  39. package/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
  40. package/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  41. package/skills/brainstorming/SKILL.md +54 -0
  42. package/skills/brand-guidelines/LICENSE.txt +202 -0
  43. package/skills/brand-guidelines/SKILL.md +73 -0
  44. package/skills/canvas-design/LICENSE.txt +202 -0
  45. package/skills/canvas-design/SKILL.md +130 -0
  46. package/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  47. package/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  48. package/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  49. package/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  50. package/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  51. package/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  52. package/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  53. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  54. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  55. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  56. package/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  57. package/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  58. package/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  59. package/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  60. package/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  61. package/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  62. package/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  63. package/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  64. package/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  65. package/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  66. package/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  67. package/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  68. package/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  69. package/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  70. package/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  71. package/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  72. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  73. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  74. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  75. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  76. package/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  77. package/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  78. package/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  79. package/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  80. package/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  81. package/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  82. package/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  83. package/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  84. package/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  85. package/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  86. package/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  87. package/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  88. package/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  89. package/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  90. package/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  91. package/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  92. package/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  93. package/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  94. package/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  95. package/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  96. package/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  97. package/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  98. package/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  99. package/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  100. package/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  101. package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  102. package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  103. package/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  104. package/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  105. package/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  106. package/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  107. package/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  108. package/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  109. package/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  110. package/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  111. package/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  112. package/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  113. package/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  114. package/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  115. package/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  116. package/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  117. package/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  118. package/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  119. package/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  120. package/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  121. package/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  122. package/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  123. package/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  124. package/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  125. package/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  126. package/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  127. package/skills/code-review/SKILL.md +105 -0
  128. package/skills/code-review/code-reviewer.md +146 -0
  129. package/skills/condition-based-waiting/SKILL.md +120 -0
  130. package/skills/condition-based-waiting/example.ts +158 -0
  131. package/skills/docx/LICENSE.txt +30 -0
  132. package/skills/docx/SKILL.md +197 -0
  133. package/skills/docx/docx-js.md +350 -0
  134. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  135. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  136. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  137. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  138. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  139. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  140. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  141. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  142. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  143. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  144. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  145. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  146. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  147. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  148. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  149. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  150. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  151. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  152. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  153. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  154. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  155. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  156. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  157. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  158. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  159. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  160. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  161. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  162. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  163. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  164. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  165. package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  166. package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  167. package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  168. package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  169. package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  170. package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  171. package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  172. package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  173. package/skills/docx/ooxml/scripts/pack.py +159 -0
  174. package/skills/docx/ooxml/scripts/unpack.py +29 -0
  175. package/skills/docx/ooxml/scripts/validate.py +69 -0
  176. package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  177. package/skills/docx/ooxml/scripts/validation/base.py +951 -0
  178. package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  179. package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  180. package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  181. package/skills/docx/ooxml.md +610 -0
  182. package/skills/docx/scripts/__init__.py +1 -0
  183. package/skills/docx/scripts/document.py +1276 -0
  184. package/skills/docx/scripts/templates/comments.xml +3 -0
  185. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  186. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  187. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  188. package/skills/docx/scripts/templates/people.xml +3 -0
  189. package/skills/docx/scripts/utilities.py +374 -0
  190. package/skills/internal-comms/LICENSE.txt +202 -0
  191. package/skills/internal-comms/SKILL.md +32 -0
  192. package/skills/internal-comms/examples/3p-updates.md +47 -0
  193. package/skills/internal-comms/examples/company-newsletter.md +65 -0
  194. package/skills/internal-comms/examples/faq-answers.md +30 -0
  195. package/skills/internal-comms/examples/general-comms.md +16 -0
  196. package/skills/mcp-builder/LICENSE.txt +202 -0
  197. package/skills/mcp-builder/SKILL.md +328 -0
  198. package/skills/mcp-builder/reference/evaluation.md +602 -0
  199. package/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  200. package/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  201. package/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  202. package/skills/mcp-builder/scripts/connections.py +151 -0
  203. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  204. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  205. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  206. package/skills/pdf/LICENSE.txt +30 -0
  207. package/skills/pdf/SKILL.md +294 -0
  208. package/skills/pdf/forms.md +205 -0
  209. package/skills/pdf/reference.md +612 -0
  210. package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  211. package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  212. package/skills/pdf/scripts/check_fillable_fields.py +12 -0
  213. package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  214. package/skills/pdf/scripts/create_validation_image.py +41 -0
  215. package/skills/pdf/scripts/extract_form_field_info.py +152 -0
  216. package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  217. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  218. package/skills/pptx/LICENSE.txt +30 -0
  219. package/skills/pptx/SKILL.md +484 -0
  220. package/skills/pptx/html2pptx.md +625 -0
  221. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  222. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  223. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  224. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  225. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  226. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  227. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  228. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  229. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  230. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  231. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  232. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  233. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  234. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  235. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  236. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  237. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  238. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  239. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  240. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  241. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  242. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  243. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  244. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  245. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  246. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  247. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  248. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  249. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  250. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  251. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  252. package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  253. package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  254. package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  255. package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  256. package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  257. package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  258. package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  259. package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  260. package/skills/pptx/ooxml/scripts/pack.py +159 -0
  261. package/skills/pptx/ooxml/scripts/unpack.py +29 -0
  262. package/skills/pptx/ooxml/scripts/validate.py +69 -0
  263. package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  264. package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  265. package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  266. package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  267. package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  268. package/skills/pptx/ooxml.md +427 -0
  269. package/skills/pptx/scripts/html2pptx.js +979 -0
  270. package/skills/pptx/scripts/inventory.py +1020 -0
  271. package/skills/pptx/scripts/rearrange.py +231 -0
  272. package/skills/pptx/scripts/replace.py +385 -0
  273. package/skills/pptx/scripts/thumbnail.py +450 -0
  274. package/skills/root-cause-tracing/SKILL.md +174 -0
  275. package/skills/root-cause-tracing/find-polluter.sh +63 -0
  276. package/skills/skill-creator/LICENSE.txt +202 -0
  277. package/skills/skill-creator/SKILL.md +209 -0
  278. package/skills/skill-creator/scripts/init_skill.py +303 -0
  279. package/skills/skill-creator/scripts/package_skill.py +110 -0
  280. package/skills/skill-creator/scripts/quick_validate.py +65 -0
  281. package/skills/slack-gif-creator/LICENSE.txt +202 -0
  282. package/skills/slack-gif-creator/SKILL.md +646 -0
  283. package/skills/slack-gif-creator/core/color_palettes.py +302 -0
  284. package/skills/slack-gif-creator/core/easing.py +230 -0
  285. package/skills/slack-gif-creator/core/frame_composer.py +469 -0
  286. package/skills/slack-gif-creator/core/gif_builder.py +246 -0
  287. package/skills/slack-gif-creator/core/typography.py +357 -0
  288. package/skills/slack-gif-creator/core/validators.py +264 -0
  289. package/skills/slack-gif-creator/core/visual_effects.py +494 -0
  290. package/skills/slack-gif-creator/requirements.txt +4 -0
  291. package/skills/slack-gif-creator/templates/bounce.py +106 -0
  292. package/skills/slack-gif-creator/templates/explode.py +331 -0
  293. package/skills/slack-gif-creator/templates/fade.py +329 -0
  294. package/skills/slack-gif-creator/templates/flip.py +291 -0
  295. package/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
  296. package/skills/slack-gif-creator/templates/morph.py +329 -0
  297. package/skills/slack-gif-creator/templates/move.py +293 -0
  298. package/skills/slack-gif-creator/templates/pulse.py +268 -0
  299. package/skills/slack-gif-creator/templates/shake.py +127 -0
  300. package/skills/slack-gif-creator/templates/slide.py +291 -0
  301. package/skills/slack-gif-creator/templates/spin.py +269 -0
  302. package/skills/slack-gif-creator/templates/wiggle.py +300 -0
  303. package/skills/slack-gif-creator/templates/zoom.py +312 -0
  304. package/skills/systematic-debugging/CREATION-LOG.md +119 -0
  305. package/skills/systematic-debugging/SKILL.md +295 -0
  306. package/skills/systematic-debugging/test-academic.md +14 -0
  307. package/skills/systematic-debugging/test-pressure-1.md +58 -0
  308. package/skills/systematic-debugging/test-pressure-2.md +68 -0
  309. package/skills/systematic-debugging/test-pressure-3.md +69 -0
  310. package/skills/test-driven-development/SKILL.md +364 -0
  311. package/skills/testing-anti-patterns/SKILL.md +302 -0
  312. package/skills/theme-factory/LICENSE.txt +202 -0
  313. package/skills/theme-factory/SKILL.md +59 -0
  314. package/skills/theme-factory/theme-showcase.pdf +0 -0
  315. package/skills/theme-factory/themes/arctic-frost.md +19 -0
  316. package/skills/theme-factory/themes/botanical-garden.md +19 -0
  317. package/skills/theme-factory/themes/desert-rose.md +19 -0
  318. package/skills/theme-factory/themes/forest-canopy.md +19 -0
  319. package/skills/theme-factory/themes/golden-hour.md +19 -0
  320. package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  321. package/skills/theme-factory/themes/modern-minimalist.md +19 -0
  322. package/skills/theme-factory/themes/ocean-depths.md +19 -0
  323. package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  324. package/skills/theme-factory/themes/tech-innovation.md +19 -0
  325. package/skills/verification-before-completion/SKILL.md +139 -0
  326. package/skills/webapp-testing/LICENSE.txt +202 -0
  327. package/skills/webapp-testing/SKILL.md +96 -0
  328. package/skills/webapp-testing/examples/console_logging.py +35 -0
  329. package/skills/webapp-testing/examples/element_discovery.py +40 -0
  330. package/skills/webapp-testing/examples/static_html_automation.py +33 -0
  331. package/skills/webapp-testing/scripts/with_server.py +106 -0
  332. package/skills/xlsx/LICENSE.txt +30 -0
  333. package/skills/xlsx/SKILL.md +289 -0
  334. package/skills/xlsx/recalc.py +178 -0
  335. package/validate-references.sh +86 -0
@@ -0,0 +1,291 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Flip Animation - 3D-style card flip and rotation effects.
4
+
5
+ Creates horizontal and vertical flips with perspective.
6
+ """
7
+
8
+ import sys
9
+ from pathlib import Path
10
+ import math
11
+
12
+ sys.path.append(str(Path(__file__).parent.parent))
13
+
14
+ from PIL import Image
15
+ from core.gif_builder import GIFBuilder
16
+ from core.frame_composer import create_blank_frame, draw_emoji_enhanced
17
+ from core.easing import interpolate
18
+
19
+
20
+ def create_flip_animation(
21
+ object1_data: dict,
22
+ object2_data: dict | None = None,
23
+ num_frames: int = 30,
24
+ flip_axis: str = 'horizontal', # 'horizontal', 'vertical'
25
+ easing: str = 'ease_in_out',
26
+ object_type: str = 'emoji',
27
+ center_pos: tuple[int, int] = (240, 240),
28
+ frame_width: int = 480,
29
+ frame_height: int = 480,
30
+ bg_color: tuple[int, int, int] = (255, 255, 255)
31
+ ) -> list[Image.Image]:
32
+ """
33
+ Create 3D-style flip animation.
34
+
35
+ Args:
36
+ object1_data: First object (front side)
37
+ object2_data: Second object (back side, None = same as front)
38
+ num_frames: Number of frames
39
+ flip_axis: Axis to flip around
40
+ easing: Easing function
41
+ object_type: Type of objects
42
+ center_pos: Center position
43
+ frame_width: Frame width
44
+ frame_height: Frame height
45
+ bg_color: Background color
46
+
47
+ Returns:
48
+ List of frames
49
+ """
50
+ frames = []
51
+
52
+ if object2_data is None:
53
+ object2_data = object1_data
54
+
55
+ for i in range(num_frames):
56
+ t = i / (num_frames - 1) if num_frames > 1 else 0
57
+ frame = create_blank_frame(frame_width, frame_height, bg_color)
58
+
59
+ # Calculate rotation angle (0 to 180 degrees)
60
+ angle = interpolate(0, 180, t, easing)
61
+
62
+ # Determine which side is visible and calculate scale
63
+ if angle < 90:
64
+ # Front side visible
65
+ current_object = object1_data
66
+ scale_factor = math.cos(math.radians(angle))
67
+ else:
68
+ # Back side visible
69
+ current_object = object2_data
70
+ scale_factor = abs(math.cos(math.radians(angle)))
71
+
72
+ # Don't draw when edge-on (very thin)
73
+ if scale_factor < 0.05:
74
+ frames.append(frame)
75
+ continue
76
+
77
+ if object_type == 'emoji':
78
+ size = current_object['size']
79
+
80
+ # Create emoji on canvas
81
+ canvas_size = size * 2
82
+ emoji_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0))
83
+
84
+ draw_emoji_enhanced(
85
+ emoji_canvas,
86
+ emoji=current_object['emoji'],
87
+ position=(canvas_size // 2 - size // 2, canvas_size // 2 - size // 2),
88
+ size=size,
89
+ shadow=False
90
+ )
91
+
92
+ # Apply flip scaling
93
+ if flip_axis == 'horizontal':
94
+ # Scale horizontally for horizontal flip
95
+ new_width = max(1, int(canvas_size * scale_factor))
96
+ new_height = canvas_size
97
+ else:
98
+ # Scale vertically for vertical flip
99
+ new_width = canvas_size
100
+ new_height = max(1, int(canvas_size * scale_factor))
101
+
102
+ # Resize to simulate 3D rotation
103
+ emoji_scaled = emoji_canvas.resize((new_width, new_height), Image.LANCZOS)
104
+
105
+ # Position centered
106
+ paste_x = center_pos[0] - new_width // 2
107
+ paste_y = center_pos[1] - new_height // 2
108
+
109
+ # Composite onto frame
110
+ frame_rgba = frame.convert('RGBA')
111
+ frame_rgba.paste(emoji_scaled, (paste_x, paste_y), emoji_scaled)
112
+ frame = frame_rgba.convert('RGB')
113
+
114
+ elif object_type == 'text':
115
+ from core.typography import draw_text_with_outline
116
+
117
+ # Create text on canvas
118
+ text = current_object.get('text', 'FLIP')
119
+ font_size = current_object.get('font_size', 50)
120
+
121
+ canvas_size = max(frame_width, frame_height)
122
+ text_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0))
123
+
124
+ # Draw on RGB for text rendering
125
+ text_canvas_rgb = text_canvas.convert('RGB')
126
+ text_canvas_rgb.paste(bg_color, (0, 0, canvas_size, canvas_size))
127
+
128
+ draw_text_with_outline(
129
+ text_canvas_rgb,
130
+ text=text,
131
+ position=(canvas_size // 2, canvas_size // 2),
132
+ font_size=font_size,
133
+ text_color=current_object.get('text_color', (0, 0, 0)),
134
+ outline_color=current_object.get('outline_color', (255, 255, 255)),
135
+ outline_width=3,
136
+ centered=True
137
+ )
138
+
139
+ # Make background transparent
140
+ text_canvas = text_canvas_rgb.convert('RGBA')
141
+ data = text_canvas.getdata()
142
+ new_data = []
143
+ for item in data:
144
+ if item[:3] == bg_color:
145
+ new_data.append((255, 255, 255, 0))
146
+ else:
147
+ new_data.append(item)
148
+ text_canvas.putdata(new_data)
149
+
150
+ # Apply flip scaling
151
+ if flip_axis == 'horizontal':
152
+ new_width = max(1, int(canvas_size * scale_factor))
153
+ new_height = canvas_size
154
+ else:
155
+ new_width = canvas_size
156
+ new_height = max(1, int(canvas_size * scale_factor))
157
+
158
+ text_scaled = text_canvas.resize((new_width, new_height), Image.LANCZOS)
159
+
160
+ # Center and crop
161
+ if flip_axis == 'horizontal':
162
+ left = (new_width - frame_width) // 2 if new_width > frame_width else 0
163
+ top = (canvas_size - frame_height) // 2
164
+ paste_x = center_pos[0] - min(new_width, frame_width) // 2
165
+ paste_y = 0
166
+
167
+ text_cropped = text_scaled.crop((
168
+ left,
169
+ top,
170
+ left + min(new_width, frame_width),
171
+ top + frame_height
172
+ ))
173
+ else:
174
+ left = (canvas_size - frame_width) // 2
175
+ top = (new_height - frame_height) // 2 if new_height > frame_height else 0
176
+ paste_x = 0
177
+ paste_y = center_pos[1] - min(new_height, frame_height) // 2
178
+
179
+ text_cropped = text_scaled.crop((
180
+ left,
181
+ top,
182
+ left + frame_width,
183
+ top + min(new_height, frame_height)
184
+ ))
185
+
186
+ frame_rgba = frame.convert('RGBA')
187
+ frame_rgba.paste(text_cropped, (paste_x, paste_y), text_cropped)
188
+ frame = frame_rgba.convert('RGB')
189
+
190
+ frames.append(frame)
191
+
192
+ return frames
193
+
194
+
195
+ def create_quick_flip(
196
+ emoji_front: str,
197
+ emoji_back: str,
198
+ num_frames: int = 20,
199
+ frame_size: int = 128
200
+ ) -> list[Image.Image]:
201
+ """
202
+ Create quick flip for emoji GIFs.
203
+
204
+ Args:
205
+ emoji_front: Front emoji
206
+ emoji_back: Back emoji
207
+ num_frames: Number of frames
208
+ frame_size: Frame size (square)
209
+
210
+ Returns:
211
+ List of frames
212
+ """
213
+ return create_flip_animation(
214
+ object1_data={'emoji': emoji_front, 'size': 80},
215
+ object2_data={'emoji': emoji_back, 'size': 80},
216
+ num_frames=num_frames,
217
+ flip_axis='horizontal',
218
+ easing='ease_in_out',
219
+ object_type='emoji',
220
+ center_pos=(frame_size // 2, frame_size // 2),
221
+ frame_width=frame_size,
222
+ frame_height=frame_size,
223
+ bg_color=(255, 255, 255)
224
+ )
225
+
226
+
227
+ def create_nope_flip(
228
+ num_frames: int = 25,
229
+ frame_width: int = 480,
230
+ frame_height: int = 480
231
+ ) -> list[Image.Image]:
232
+ """
233
+ Create "nope" reaction flip (like flipping table).
234
+
235
+ Args:
236
+ num_frames: Number of frames
237
+ frame_width: Frame width
238
+ frame_height: Frame height
239
+
240
+ Returns:
241
+ List of frames
242
+ """
243
+ return create_flip_animation(
244
+ object1_data={'text': 'NOPE', 'font_size': 80, 'text_color': (255, 50, 50)},
245
+ object2_data={'text': 'NOPE', 'font_size': 80, 'text_color': (255, 50, 50)},
246
+ num_frames=num_frames,
247
+ flip_axis='horizontal',
248
+ easing='ease_out',
249
+ object_type='text',
250
+ frame_width=frame_width,
251
+ frame_height=frame_height,
252
+ bg_color=(255, 255, 255)
253
+ )
254
+
255
+
256
+ # Example usage
257
+ if __name__ == '__main__':
258
+ print("Creating flip animations...")
259
+
260
+ builder = GIFBuilder(width=480, height=480, fps=20)
261
+
262
+ # Example 1: Emoji flip
263
+ frames = create_flip_animation(
264
+ object1_data={'emoji': '😊', 'size': 120},
265
+ object2_data={'emoji': '😂', 'size': 120},
266
+ num_frames=30,
267
+ flip_axis='horizontal',
268
+ object_type='emoji'
269
+ )
270
+ builder.add_frames(frames)
271
+ builder.save('flip_emoji.gif', num_colors=128)
272
+
273
+ # Example 2: Text flip
274
+ builder.clear()
275
+ frames = create_flip_animation(
276
+ object1_data={'text': 'YES', 'font_size': 80, 'text_color': (100, 200, 100)},
277
+ object2_data={'text': 'NO', 'font_size': 80, 'text_color': (200, 100, 100)},
278
+ num_frames=30,
279
+ flip_axis='vertical',
280
+ object_type='text'
281
+ )
282
+ builder.add_frames(frames)
283
+ builder.save('flip_text.gif', num_colors=128)
284
+
285
+ # Example 3: Quick flip (emoji size)
286
+ builder = GIFBuilder(width=128, height=128, fps=15)
287
+ frames = create_quick_flip('👍', '👎', num_frames=20)
288
+ builder.add_frames(frames)
289
+ builder.save('flip_quick.gif', num_colors=48, optimize_for_emoji=True)
290
+
291
+ print("Created flip animations!")
@@ -0,0 +1,211 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Kaleidoscope Effect - Create mirror/rotation effects.
4
+
5
+ Apply kaleidoscope effects to frames or objects for psychedelic visuals.
6
+ """
7
+
8
+ import sys
9
+ from pathlib import Path
10
+ import math
11
+
12
+ sys.path.append(str(Path(__file__).parent.parent))
13
+
14
+ from PIL import Image, ImageOps, ImageDraw
15
+ import numpy as np
16
+
17
+
18
+ def apply_kaleidoscope(frame: Image.Image, segments: int = 8,
19
+ center: tuple[int, int] | None = None) -> Image.Image:
20
+ """
21
+ Apply kaleidoscope effect by mirroring/rotating frame sections.
22
+
23
+ Args:
24
+ frame: Input frame
25
+ segments: Number of mirror segments (4, 6, 8, 12 work well)
26
+ center: Center point for effect (None = frame center)
27
+
28
+ Returns:
29
+ Frame with kaleidoscope effect
30
+ """
31
+ width, height = frame.size
32
+
33
+ if center is None:
34
+ center = (width // 2, height // 2)
35
+
36
+ # Create output frame
37
+ output = Image.new('RGB', (width, height))
38
+
39
+ # Calculate angle per segment
40
+ angle_per_segment = 360 / segments
41
+
42
+ # For simplicity, we'll create a radial mirror effect
43
+ # A full implementation would rotate and mirror properly
44
+ # This is a simplified version that creates interesting patterns
45
+
46
+ # Convert to numpy for easier manipulation
47
+ frame_array = np.array(frame)
48
+ output_array = np.zeros_like(frame_array)
49
+
50
+ center_x, center_y = center
51
+
52
+ # Create wedge mask and mirror it
53
+ for y in range(height):
54
+ for x in range(width):
55
+ # Calculate angle from center
56
+ dx = x - center_x
57
+ dy = y - center_y
58
+
59
+ angle = (math.degrees(math.atan2(dy, dx)) + 180) % 360
60
+ distance = math.sqrt(dx * dx + dy * dy)
61
+
62
+ # Which segment does this pixel belong to?
63
+ segment = int(angle / angle_per_segment)
64
+
65
+ # Mirror angle within segment
66
+ segment_angle = angle % angle_per_segment
67
+ if segment % 2 == 1: # Mirror every other segment
68
+ segment_angle = angle_per_segment - segment_angle
69
+
70
+ # Calculate source position
71
+ source_angle = segment_angle + (segment // 2) * angle_per_segment * 2
72
+ source_angle_rad = math.radians(source_angle - 180)
73
+
74
+ source_x = int(center_x + distance * math.cos(source_angle_rad))
75
+ source_y = int(center_y + distance * math.sin(source_angle_rad))
76
+
77
+ # Bounds check
78
+ if 0 <= source_x < width and 0 <= source_y < height:
79
+ output_array[y, x] = frame_array[source_y, source_x]
80
+ else:
81
+ output_array[y, x] = frame_array[y, x]
82
+
83
+ return Image.fromarray(output_array)
84
+
85
+
86
+ def apply_simple_mirror(frame: Image.Image, mode: str = 'quad') -> Image.Image:
87
+ """
88
+ Apply simple mirror effect (faster than full kaleidoscope).
89
+
90
+ Args:
91
+ frame: Input frame
92
+ mode: 'horizontal', 'vertical', 'quad' (4-way), 'radial'
93
+
94
+ Returns:
95
+ Mirrored frame
96
+ """
97
+ width, height = frame.size
98
+ center_x, center_y = width // 2, height // 2
99
+
100
+ if mode == 'horizontal':
101
+ # Mirror left half to right
102
+ left_half = frame.crop((0, 0, center_x, height))
103
+ left_flipped = ImageOps.mirror(left_half)
104
+ result = frame.copy()
105
+ result.paste(left_flipped, (center_x, 0))
106
+ return result
107
+
108
+ elif mode == 'vertical':
109
+ # Mirror top half to bottom
110
+ top_half = frame.crop((0, 0, width, center_y))
111
+ top_flipped = ImageOps.flip(top_half)
112
+ result = frame.copy()
113
+ result.paste(top_flipped, (0, center_y))
114
+ return result
115
+
116
+ elif mode == 'quad':
117
+ # 4-way mirror (top-left quadrant mirrored to all)
118
+ quad = frame.crop((0, 0, center_x, center_y))
119
+
120
+ result = Image.new('RGB', (width, height))
121
+
122
+ # Top-left (original)
123
+ result.paste(quad, (0, 0))
124
+
125
+ # Top-right (horizontal mirror)
126
+ result.paste(ImageOps.mirror(quad), (center_x, 0))
127
+
128
+ # Bottom-left (vertical mirror)
129
+ result.paste(ImageOps.flip(quad), (0, center_y))
130
+
131
+ # Bottom-right (both mirrors)
132
+ result.paste(ImageOps.flip(ImageOps.mirror(quad)), (center_x, center_y))
133
+
134
+ return result
135
+
136
+ else:
137
+ return frame
138
+
139
+
140
+ def create_kaleidoscope_animation(
141
+ base_frame: Image.Image | None = None,
142
+ num_frames: int = 30,
143
+ segments: int = 8,
144
+ rotation_speed: float = 1.0,
145
+ width: int = 480,
146
+ height: int = 480
147
+ ) -> list[Image.Image]:
148
+ """
149
+ Create animated kaleidoscope effect.
150
+
151
+ Args:
152
+ base_frame: Frame to apply effect to (or None for demo pattern)
153
+ num_frames: Number of frames
154
+ segments: Kaleidoscope segments
155
+ rotation_speed: How fast pattern rotates (0.5-2.0)
156
+ width: Frame width if generating demo
157
+ height: Frame height if generating demo
158
+
159
+ Returns:
160
+ List of frames with kaleidoscope effect
161
+ """
162
+ frames = []
163
+
164
+ # Create demo pattern if no base frame
165
+ if base_frame is None:
166
+ base_frame = Image.new('RGB', (width, height), (255, 255, 255))
167
+ draw = ImageDraw.Draw(base_frame)
168
+
169
+ # Draw some colored shapes
170
+ from core.color_palettes import get_palette
171
+ palette = get_palette('vibrant')
172
+
173
+ colors = [palette['primary'], palette['secondary'], palette['accent']]
174
+
175
+ for i, color in enumerate(colors):
176
+ x = width // 2 + int(100 * math.cos(i * 2 * math.pi / 3))
177
+ y = height // 2 + int(100 * math.sin(i * 2 * math.pi / 3))
178
+ draw.ellipse([x - 40, y - 40, x + 40, y + 40], fill=color)
179
+
180
+ # Rotate base frame and apply kaleidoscope
181
+ for i in range(num_frames):
182
+ angle = (i / num_frames) * 360 * rotation_speed
183
+
184
+ # Rotate base frame
185
+ rotated = base_frame.rotate(angle, resample=Image.BICUBIC)
186
+
187
+ # Apply kaleidoscope
188
+ kaleido_frame = apply_kaleidoscope(rotated, segments=segments)
189
+
190
+ frames.append(kaleido_frame)
191
+
192
+ return frames
193
+
194
+
195
+ # Example usage
196
+ if __name__ == '__main__':
197
+ from core.gif_builder import GIFBuilder
198
+
199
+ print("Creating kaleidoscope GIF...")
200
+
201
+ builder = GIFBuilder(width=480, height=480, fps=20)
202
+
203
+ # Create kaleidoscope animation
204
+ frames = create_kaleidoscope_animation(
205
+ num_frames=40,
206
+ segments=8,
207
+ rotation_speed=0.5
208
+ )
209
+
210
+ builder.add_frames(frames)
211
+ builder.save('kaleidoscope_test.gif', num_colors=128)