claude-code-templates 1.21.13 → 1.21.14

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 (415) hide show
  1. package/.claude/settings.local.json +8 -2
  2. package/.claude-plugin/marketplace.json +251 -0
  3. package/.github/workflows/component-security-validation.yml +129 -0
  4. package/README.md +13 -6
  5. package/cli-tool/README.md +56 -0
  6. package/cli-tool/bin/create-claude-config.js +2 -0
  7. package/cli-tool/components/.claude-plugin/marketplace.json +92 -0
  8. package/cli-tool/components/agents/development-tools/flutter-go-reviewer.md +163 -0
  9. package/cli-tool/components/agents/development-tools/unused-code-cleaner.md +194 -0
  10. package/cli-tool/components/commands/git-workflow/gemini-review.md +293 -0
  11. package/cli-tool/components/commands/testing/add-mutation-testing.md +2 -2
  12. package/cli-tool/components/commands/testing/add-property-based-testing.md +2 -2
  13. package/cli-tool/components/commands/testing/e2e-setup.md +2 -2
  14. package/cli-tool/components/commands/testing/generate-test-cases.md +2 -2
  15. package/cli-tool/components/commands/testing/generate-tests.md +8 -3
  16. package/cli-tool/components/commands/testing/setup-comprehensive-testing.md +2 -2
  17. package/cli-tool/components/commands/testing/setup-load-testing.md +2 -2
  18. package/cli-tool/components/commands/testing/setup-visual-testing.md +2 -2
  19. package/cli-tool/components/commands/testing/test-automation-orchestrator.md +2 -2
  20. package/cli-tool/components/commands/testing/test-changelog-automation.md +2 -2
  21. package/cli-tool/components/commands/testing/test-coverage.md +2 -2
  22. package/cli-tool/components/commands/testing/test-quality-analyzer.md +2 -2
  23. package/cli-tool/components/commands/testing/testing_plan_integration.md +2 -2
  24. package/cli-tool/components/commands/testing/write-tests.md +2 -2
  25. package/cli-tool/components/commands/utilities/ultra-think.md +10 -5
  26. package/cli-tool/components/hooks/git/validate-branch-name.json +1 -1
  27. package/cli-tool/components/mcps/devtools/chrome-devtools.json +9 -0
  28. package/cli-tool/components/mcps/devtools/grafana.json +15 -0
  29. package/cli-tool/components/mcps/devtools/pulumi.json +9 -0
  30. package/cli-tool/components/mcps/devtools/terraform.json +1 -1
  31. package/cli-tool/components/settings/statusline/context-monitor.py +1 -1
  32. package/cli-tool/components/skills/ANTHROPIC_ATTRIBUTION.md +81 -0
  33. package/cli-tool/components/skills/creative-design/algorithmic-art/LICENSE.txt +202 -0
  34. package/cli-tool/components/skills/creative-design/algorithmic-art/SKILL.md +405 -0
  35. package/cli-tool/components/skills/creative-design/algorithmic-art/templates/generator_template.js +223 -0
  36. package/cli-tool/components/skills/creative-design/algorithmic-art/templates/viewer.html +599 -0
  37. package/cli-tool/components/skills/creative-design/canvas-design/LICENSE.txt +202 -0
  38. package/cli-tool/components/skills/creative-design/canvas-design/SKILL.md +130 -0
  39. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  40. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  41. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  42. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  43. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  44. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  45. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  46. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  47. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  48. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  49. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  50. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  51. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  52. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  53. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  54. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  55. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  56. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  57. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  58. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  59. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  60. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  61. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  62. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  63. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  64. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  65. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  66. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  67. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  68. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  69. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  70. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  71. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  72. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  73. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  74. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  75. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  76. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  77. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  78. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  79. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  80. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  81. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  82. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  83. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  84. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  85. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  86. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  87. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  88. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  89. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  90. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  91. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  92. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  93. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  94. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  95. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  96. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  97. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  98. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  99. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  100. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  101. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  102. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  103. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  104. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  105. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  106. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  107. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  108. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  109. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  110. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  111. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  112. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  113. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  114. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  115. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  116. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  117. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  118. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  119. package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  120. package/cli-tool/components/skills/creative-design/slack-gif-creator/LICENSE.txt +202 -0
  121. package/cli-tool/components/skills/creative-design/slack-gif-creator/SKILL.md +646 -0
  122. package/cli-tool/components/skills/creative-design/slack-gif-creator/core/color_palettes.py +302 -0
  123. package/cli-tool/components/skills/creative-design/slack-gif-creator/core/easing.py +230 -0
  124. package/cli-tool/components/skills/creative-design/slack-gif-creator/core/frame_composer.py +469 -0
  125. package/cli-tool/components/skills/creative-design/slack-gif-creator/core/gif_builder.py +246 -0
  126. package/cli-tool/components/skills/creative-design/slack-gif-creator/core/typography.py +357 -0
  127. package/cli-tool/components/skills/creative-design/slack-gif-creator/core/validators.py +264 -0
  128. package/cli-tool/components/skills/creative-design/slack-gif-creator/core/visual_effects.py +494 -0
  129. package/cli-tool/components/skills/creative-design/slack-gif-creator/requirements.txt +4 -0
  130. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/bounce.py +106 -0
  131. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/explode.py +331 -0
  132. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/fade.py +329 -0
  133. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/flip.py +291 -0
  134. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/kaleidoscope.py +211 -0
  135. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/morph.py +329 -0
  136. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/move.py +293 -0
  137. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/pulse.py +268 -0
  138. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/shake.py +127 -0
  139. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/slide.py +291 -0
  140. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/spin.py +269 -0
  141. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/wiggle.py +300 -0
  142. package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/zoom.py +312 -0
  143. package/cli-tool/components/skills/creative-design/theme-factory/LICENSE.txt +202 -0
  144. package/cli-tool/components/skills/creative-design/theme-factory/SKILL.md +59 -0
  145. package/cli-tool/components/skills/creative-design/theme-factory/theme-showcase.pdf +0 -0
  146. package/cli-tool/components/skills/creative-design/theme-factory/themes/arctic-frost.md +19 -0
  147. package/cli-tool/components/skills/creative-design/theme-factory/themes/botanical-garden.md +19 -0
  148. package/cli-tool/components/skills/creative-design/theme-factory/themes/desert-rose.md +19 -0
  149. package/cli-tool/components/skills/creative-design/theme-factory/themes/forest-canopy.md +19 -0
  150. package/cli-tool/components/skills/creative-design/theme-factory/themes/golden-hour.md +19 -0
  151. package/cli-tool/components/skills/creative-design/theme-factory/themes/midnight-galaxy.md +19 -0
  152. package/cli-tool/components/skills/creative-design/theme-factory/themes/modern-minimalist.md +19 -0
  153. package/cli-tool/components/skills/creative-design/theme-factory/themes/ocean-depths.md +19 -0
  154. package/cli-tool/components/skills/creative-design/theme-factory/themes/sunset-boulevard.md +19 -0
  155. package/cli-tool/components/skills/creative-design/theme-factory/themes/tech-innovation.md +19 -0
  156. package/cli-tool/components/skills/development/artifacts-builder/LICENSE.txt +202 -0
  157. package/cli-tool/components/skills/development/artifacts-builder/SKILL.md +74 -0
  158. package/cli-tool/components/skills/development/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  159. package/cli-tool/components/skills/development/artifacts-builder/scripts/init-artifact.sh +322 -0
  160. package/cli-tool/components/skills/development/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  161. package/cli-tool/components/skills/development/git-commit-helper/SKILL.md +203 -0
  162. package/cli-tool/components/skills/development/mcp-builder/LICENSE.txt +202 -0
  163. package/cli-tool/components/skills/development/mcp-builder/SKILL.md +328 -0
  164. package/cli-tool/components/skills/development/mcp-builder/reference/evaluation.md +602 -0
  165. package/cli-tool/components/skills/development/mcp-builder/reference/mcp_best_practices.md +915 -0
  166. package/cli-tool/components/skills/development/mcp-builder/reference/node_mcp_server.md +916 -0
  167. package/cli-tool/components/skills/development/mcp-builder/reference/python_mcp_server.md +752 -0
  168. package/cli-tool/components/skills/development/mcp-builder/scripts/connections.py +151 -0
  169. package/cli-tool/components/skills/development/mcp-builder/scripts/evaluation.py +373 -0
  170. package/cli-tool/components/skills/development/mcp-builder/scripts/example_evaluation.xml +22 -0
  171. package/cli-tool/components/skills/development/mcp-builder/scripts/requirements.txt +2 -0
  172. package/cli-tool/components/skills/development/skill-creator/LICENSE.txt +202 -0
  173. package/cli-tool/components/skills/development/skill-creator/SKILL.md +209 -0
  174. package/cli-tool/components/skills/development/skill-creator/scripts/init_skill.py +303 -0
  175. package/cli-tool/components/skills/development/skill-creator/scripts/package_skill.py +110 -0
  176. package/cli-tool/components/skills/development/skill-creator/scripts/quick_validate.py +65 -0
  177. package/cli-tool/components/skills/development/webapp-testing/LICENSE.txt +202 -0
  178. package/cli-tool/components/skills/development/webapp-testing/SKILL.md +96 -0
  179. package/cli-tool/components/skills/development/webapp-testing/examples/console_logging.py +35 -0
  180. package/cli-tool/components/skills/development/webapp-testing/examples/element_discovery.py +40 -0
  181. package/cli-tool/components/skills/development/webapp-testing/examples/static_html_automation.py +33 -0
  182. package/cli-tool/components/skills/development/webapp-testing/scripts/with_server.py +106 -0
  183. package/cli-tool/components/skills/document-processing/docx/LICENSE.txt +30 -0
  184. package/cli-tool/components/skills/document-processing/docx/SKILL.md +197 -0
  185. package/cli-tool/components/skills/document-processing/docx/docx-js.md +350 -0
  186. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  187. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  188. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  189. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  190. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  191. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  192. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  193. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  194. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  195. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  196. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  197. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  198. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  199. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  200. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  201. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  202. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  203. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  204. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  205. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  206. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  207. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  208. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  209. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  210. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  211. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  212. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  213. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  214. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  215. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  216. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  217. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/mce/mc.xsd +75 -0
  218. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  219. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  220. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  221. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  222. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  223. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  224. package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  225. package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/pack.py +159 -0
  226. package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/unpack.py +29 -0
  227. package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validate.py +69 -0
  228. package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/__init__.py +15 -0
  229. package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/base.py +951 -0
  230. package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/docx.py +274 -0
  231. package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/pptx.py +315 -0
  232. package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/redlining.py +279 -0
  233. package/cli-tool/components/skills/document-processing/docx/ooxml.md +610 -0
  234. package/cli-tool/components/skills/document-processing/docx/scripts/__init__.py +1 -0
  235. package/cli-tool/components/skills/document-processing/docx/scripts/document.py +1276 -0
  236. package/cli-tool/components/skills/document-processing/docx/scripts/templates/comments.xml +3 -0
  237. package/cli-tool/components/skills/document-processing/docx/scripts/templates/commentsExtended.xml +3 -0
  238. package/cli-tool/components/skills/document-processing/docx/scripts/templates/commentsExtensible.xml +3 -0
  239. package/cli-tool/components/skills/document-processing/docx/scripts/templates/commentsIds.xml +3 -0
  240. package/cli-tool/components/skills/document-processing/docx/scripts/templates/people.xml +3 -0
  241. package/cli-tool/components/skills/document-processing/docx/scripts/utilities.py +374 -0
  242. package/cli-tool/components/skills/document-processing/pdf-anthropic/LICENSE.txt +30 -0
  243. package/cli-tool/components/skills/document-processing/pdf-anthropic/SKILL.md +294 -0
  244. package/cli-tool/components/skills/document-processing/pdf-anthropic/forms.md +205 -0
  245. package/cli-tool/components/skills/document-processing/pdf-anthropic/reference.md +612 -0
  246. package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/check_bounding_boxes.py +70 -0
  247. package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/check_bounding_boxes_test.py +226 -0
  248. package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/check_fillable_fields.py +12 -0
  249. package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/convert_pdf_to_images.py +35 -0
  250. package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/create_validation_image.py +41 -0
  251. package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/extract_form_field_info.py +152 -0
  252. package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/fill_fillable_fields.py +114 -0
  253. package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/fill_pdf_form_with_annotations.py +108 -0
  254. package/cli-tool/components/skills/document-processing/pdf-processing/FORMS.md +143 -0
  255. package/cli-tool/components/skills/document-processing/pdf-processing/SKILL.md +149 -0
  256. package/cli-tool/components/skills/document-processing/pdf-processing-pro/FORMS.md +610 -0
  257. package/cli-tool/components/skills/document-processing/pdf-processing-pro/OCR.md +137 -0
  258. package/cli-tool/components/skills/document-processing/pdf-processing-pro/SKILL.md +296 -0
  259. package/cli-tool/components/skills/document-processing/pdf-processing-pro/TABLES.md +626 -0
  260. package/cli-tool/components/skills/document-processing/pdf-processing-pro/scripts/analyze_form.py +307 -0
  261. package/cli-tool/components/skills/document-processing/pptx/LICENSE.txt +30 -0
  262. package/cli-tool/components/skills/document-processing/pptx/SKILL.md +484 -0
  263. package/cli-tool/components/skills/document-processing/pptx/html2pptx.md +625 -0
  264. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  265. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  266. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  267. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  268. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  269. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  270. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  271. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  272. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  273. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  274. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  275. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  276. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  277. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  278. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  279. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  280. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  281. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  282. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  283. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  284. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  285. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  286. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  287. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  288. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  289. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  290. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  291. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  292. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  293. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  294. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  295. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  296. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  297. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  298. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  299. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  300. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  301. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  302. package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  303. package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/pack.py +159 -0
  304. package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/unpack.py +29 -0
  305. package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validate.py +69 -0
  306. package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/__init__.py +15 -0
  307. package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/base.py +951 -0
  308. package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/docx.py +274 -0
  309. package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/pptx.py +315 -0
  310. package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/redlining.py +279 -0
  311. package/cli-tool/components/skills/document-processing/pptx/ooxml.md +427 -0
  312. package/cli-tool/components/skills/document-processing/pptx/scripts/html2pptx.js +979 -0
  313. package/cli-tool/components/skills/document-processing/pptx/scripts/inventory.py +1020 -0
  314. package/cli-tool/components/skills/document-processing/pptx/scripts/rearrange.py +231 -0
  315. package/cli-tool/components/skills/document-processing/pptx/scripts/replace.py +385 -0
  316. package/cli-tool/components/skills/document-processing/pptx/scripts/thumbnail.py +450 -0
  317. package/cli-tool/components/skills/document-processing/xlsx/LICENSE.txt +30 -0
  318. package/cli-tool/components/skills/document-processing/xlsx/SKILL.md +289 -0
  319. package/cli-tool/components/skills/document-processing/xlsx/recalc.py +178 -0
  320. package/cli-tool/components/skills/enterprise-communication/brand-guidelines/LICENSE.txt +202 -0
  321. package/cli-tool/components/skills/enterprise-communication/brand-guidelines/SKILL.md +73 -0
  322. package/cli-tool/components/skills/enterprise-communication/email-composer/SKILL.md +317 -0
  323. package/cli-tool/components/skills/enterprise-communication/excel-analysis/SKILL.md +247 -0
  324. package/cli-tool/components/skills/enterprise-communication/internal-comms/LICENSE.txt +202 -0
  325. package/cli-tool/components/skills/enterprise-communication/internal-comms/SKILL.md +32 -0
  326. package/cli-tool/components/skills/enterprise-communication/internal-comms/examples/3p-updates.md +47 -0
  327. package/cli-tool/components/skills/enterprise-communication/internal-comms/examples/company-newsletter.md +65 -0
  328. package/cli-tool/components/skills/enterprise-communication/internal-comms/examples/faq-answers.md +30 -0
  329. package/cli-tool/components/skills/enterprise-communication/internal-comms/examples/general-comms.md +16 -0
  330. package/cli-tool/package-lock.json +39 -16
  331. package/cli-tool/package.json +7 -2
  332. package/cli-tool/security-report.json +62361 -0
  333. package/cli-tool/src/analytics-web/chats_mobile.html +17 -16
  334. package/cli-tool/src/console-bridge.js +3 -3
  335. package/cli-tool/src/index.js +157 -10
  336. package/cli-tool/src/plugin-dashboard-web/app.js +806 -0
  337. package/cli-tool/src/plugin-dashboard-web/index.html +292 -0
  338. package/cli-tool/src/plugin-dashboard-web/styles.css +1781 -0
  339. package/cli-tool/src/plugin-dashboard.js +689 -0
  340. package/cli-tool/src/security-audit.js +164 -0
  341. package/cli-tool/src/validation/ARCHITECTURE.md +309 -0
  342. package/cli-tool/src/validation/BaseValidator.js +152 -0
  343. package/cli-tool/src/validation/README.md +543 -0
  344. package/cli-tool/src/validation/ValidationOrchestrator.js +305 -0
  345. package/cli-tool/src/validation/validators/IntegrityValidator.js +338 -0
  346. package/cli-tool/src/validation/validators/ProvenanceValidator.js +399 -0
  347. package/cli-tool/src/validation/validators/ReferenceValidator.js +373 -0
  348. package/cli-tool/src/validation/validators/SemanticValidator.js +449 -0
  349. package/cli-tool/src/validation/validators/StructuralValidator.js +376 -0
  350. package/docs/CLAUDE.md +363 -0
  351. package/docs/api/README.md +297 -0
  352. package/docs/api/package.json +7 -0
  353. package/docs/api/track-download-supabase.js +150 -0
  354. package/docs/blog/README.md +199 -0
  355. package/docs/blog/blog-articles.json +133 -0
  356. package/docs/blog/css/blog-controls.css +254 -0
  357. package/docs/blog/e2b-claude-code-sandbox/index.html +8 -0
  358. package/docs/blog/index.html +81 -124
  359. package/docs/blog/js/blog-loader.js +602 -0
  360. package/docs/blog/nextjs-vercel-claude-code-integration/index.html +8 -0
  361. package/docs/blog/supabase-claude-code-integration/index.html +8 -0
  362. package/docs/component.html +226 -48
  363. package/docs/components.json +61610 -604
  364. package/docs/css/blog.css +292 -0
  365. package/docs/css/component-page.css +840 -3
  366. package/docs/css/plugin-page.css +648 -0
  367. package/docs/css/styles.css +504 -1
  368. package/docs/css/trending.css +110 -6
  369. package/docs/download-stats.html +8 -0
  370. package/docs/index.html +48 -22
  371. package/docs/jobs.html +8 -0
  372. package/docs/js/cart-manager.js +21 -8
  373. package/docs/js/component-page.js +1013 -12
  374. package/docs/js/data-loader.js +11 -8
  375. package/docs/js/index-events.js +305 -53
  376. package/docs/js/plugin-page.js +390 -0
  377. package/docs/js/script.js +50 -3
  378. package/docs/js/search-functionality.js +19 -16
  379. package/docs/js/trending.js +55 -20
  380. package/docs/plugin.html +262 -0
  381. package/docs/sandbox-interface.html +8 -0
  382. package/docs/static/favicon/about.txt +6 -0
  383. package/docs/static/favicon/android-chrome-192x192.png +0 -0
  384. package/docs/static/favicon/android-chrome-512x512.png +0 -0
  385. package/docs/static/favicon/apple-touch-icon.png +0 -0
  386. package/docs/static/favicon/favicon-16x16.png +0 -0
  387. package/docs/static/favicon/favicon-32x32.png +0 -0
  388. package/docs/static/favicon/favicon.ico +0 -0
  389. package/docs/static/favicon/site.webmanifest +1 -0
  390. package/docs/trending-data.json +616 -579
  391. package/docs/trending.html +24 -3
  392. package/docs/vercel.json +12 -0
  393. package/docs/workflows.html +8 -0
  394. package/generate_components_json.py +386 -11
  395. package/package.json +1 -1
  396. package/sync-api.sh +50 -0
  397. package/vercel.json +10 -75
  398. package/ROADMAP.md +0 -278
  399. package/test_serpapi.py +0 -36
  400. /package/cli-tool/components/commands/svelte/{svelte:a11y.md → svelte-a11y.md} +0 -0
  401. /package/cli-tool/components/commands/svelte/{svelte:component.md → svelte-component.md} +0 -0
  402. /package/cli-tool/components/commands/svelte/{svelte:debug.md → svelte-debug.md} +0 -0
  403. /package/cli-tool/components/commands/svelte/{svelte:migrate.md → svelte-migrate.md} +0 -0
  404. /package/cli-tool/components/commands/svelte/{svelte:optimize.md → svelte-optimize.md} +0 -0
  405. /package/cli-tool/components/commands/svelte/{svelte:scaffold.md → svelte-scaffold.md} +0 -0
  406. /package/cli-tool/components/commands/svelte/{svelte:storybook-migrate.md → svelte-storybook-migrate.md} +0 -0
  407. /package/cli-tool/components/commands/svelte/{svelte:storybook-mock.md → svelte-storybook-mock.md} +0 -0
  408. /package/cli-tool/components/commands/svelte/{svelte:storybook-setup.md → svelte-storybook-setup.md} +0 -0
  409. /package/cli-tool/components/commands/svelte/{svelte:storybook-story.md → svelte-storybook-story.md} +0 -0
  410. /package/cli-tool/components/commands/svelte/{svelte:storybook-troubleshoot.md → svelte-storybook-troubleshoot.md} +0 -0
  411. /package/cli-tool/components/commands/svelte/{svelte:storybook.md → svelte-storybook.md} +0 -0
  412. /package/cli-tool/components/commands/svelte/{svelte:test-coverage.md → svelte-test-coverage.md} +0 -0
  413. /package/cli-tool/components/commands/svelte/{svelte:test-fix.md → svelte-test-fix.md} +0 -0
  414. /package/cli-tool/components/commands/svelte/{svelte:test-setup.md → svelte-test-setup.md} +0 -0
  415. /package/cli-tool/components/commands/svelte/{svelte:test.md → svelte-test.md} +0 -0
@@ -0,0 +1,646 @@
1
+ ---
2
+ name: slack-gif-creator
3
+ description: Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".
4
+ license: Complete terms in LICENSE.txt
5
+ ---
6
+
7
+ # Slack GIF Creator - Flexible Toolkit
8
+
9
+ A toolkit for creating animated GIFs optimized for Slack. Provides validators for Slack's constraints, composable animation primitives, and optional helper utilities. **Apply these tools however needed to achieve the creative vision.**
10
+
11
+ ## Slack's Requirements
12
+
13
+ Slack has specific requirements for GIFs based on their use:
14
+
15
+ **Message GIFs:**
16
+ - Max size: ~2MB
17
+ - Optimal dimensions: 480x480
18
+ - Typical FPS: 15-20
19
+ - Color limit: 128-256
20
+ - Duration: 2-5s
21
+
22
+ **Emoji GIFs:**
23
+ - Max size: 64KB (strict limit)
24
+ - Optimal dimensions: 128x128
25
+ - Typical FPS: 10-12
26
+ - Color limit: 32-48
27
+ - Duration: 1-2s
28
+
29
+ **Emoji GIFs are challenging** - the 64KB limit is strict. Strategies that help:
30
+ - Limit to 10-15 frames total
31
+ - Use 32-48 colors maximum
32
+ - Keep designs simple
33
+ - Avoid gradients
34
+ - Validate file size frequently
35
+
36
+ ## Toolkit Structure
37
+
38
+ This skill provides three types of tools:
39
+
40
+ 1. **Validators** - Check if a GIF meets Slack's requirements
41
+ 2. **Animation Primitives** - Composable building blocks for motion (shake, bounce, move, kaleidoscope)
42
+ 3. **Helper Utilities** - Optional functions for common needs (text, colors, effects)
43
+
44
+ **Complete creative freedom is available in how these tools are applied.**
45
+
46
+ ## Core Validators
47
+
48
+ To ensure a GIF meets Slack's constraints, use these validators:
49
+
50
+ ```python
51
+ from core.gif_builder import GIFBuilder
52
+
53
+ # After creating your GIF, check if it meets requirements
54
+ builder = GIFBuilder(width=128, height=128, fps=10)
55
+ # ... add your frames however you want ...
56
+
57
+ # Save and check size
58
+ info = builder.save('emoji.gif', num_colors=48, optimize_for_emoji=True)
59
+
60
+ # The save method automatically warns if file exceeds limits
61
+ # info dict contains: size_kb, size_mb, frame_count, duration_seconds
62
+ ```
63
+
64
+ **File size validator**:
65
+ ```python
66
+ from core.validators import check_slack_size
67
+
68
+ # Check if GIF meets size limits
69
+ passes, info = check_slack_size('emoji.gif', is_emoji=True)
70
+ # Returns: (True/False, dict with size details)
71
+ ```
72
+
73
+ **Dimension validator**:
74
+ ```python
75
+ from core.validators import validate_dimensions
76
+
77
+ # Check dimensions
78
+ passes, info = validate_dimensions(128, 128, is_emoji=True)
79
+ # Returns: (True/False, dict with dimension details)
80
+ ```
81
+
82
+ **Complete validation**:
83
+ ```python
84
+ from core.validators import validate_gif, is_slack_ready
85
+
86
+ # Run all validations
87
+ all_pass, results = validate_gif('emoji.gif', is_emoji=True)
88
+
89
+ # Or quick check
90
+ if is_slack_ready('emoji.gif', is_emoji=True):
91
+ print("Ready to upload!")
92
+ ```
93
+
94
+ ## Animation Primitives
95
+
96
+ These are composable building blocks for motion. Apply these to any object in any combination:
97
+
98
+ ### Shake
99
+ ```python
100
+ from templates.shake import create_shake_animation
101
+
102
+ # Shake an emoji
103
+ frames = create_shake_animation(
104
+ object_type='emoji',
105
+ object_data={'emoji': '😱', 'size': 80},
106
+ num_frames=20,
107
+ shake_intensity=15,
108
+ direction='both' # or 'horizontal', 'vertical'
109
+ )
110
+ ```
111
+
112
+ ### Bounce
113
+ ```python
114
+ from templates.bounce import create_bounce_animation
115
+
116
+ # Bounce a circle
117
+ frames = create_bounce_animation(
118
+ object_type='circle',
119
+ object_data={'radius': 40, 'color': (255, 100, 100)},
120
+ num_frames=30,
121
+ bounce_height=150
122
+ )
123
+ ```
124
+
125
+ ### Spin / Rotate
126
+ ```python
127
+ from templates.spin import create_spin_animation, create_loading_spinner
128
+
129
+ # Clockwise spin
130
+ frames = create_spin_animation(
131
+ object_type='emoji',
132
+ object_data={'emoji': '🔄', 'size': 100},
133
+ rotation_type='clockwise',
134
+ full_rotations=2
135
+ )
136
+
137
+ # Wobble rotation
138
+ frames = create_spin_animation(rotation_type='wobble', full_rotations=3)
139
+
140
+ # Loading spinner
141
+ frames = create_loading_spinner(spinner_type='dots')
142
+ ```
143
+
144
+ ### Pulse / Heartbeat
145
+ ```python
146
+ from templates.pulse import create_pulse_animation, create_attention_pulse
147
+
148
+ # Smooth pulse
149
+ frames = create_pulse_animation(
150
+ object_data={'emoji': '❤️', 'size': 100},
151
+ pulse_type='smooth',
152
+ scale_range=(0.8, 1.2)
153
+ )
154
+
155
+ # Heartbeat (double-pump)
156
+ frames = create_pulse_animation(pulse_type='heartbeat')
157
+
158
+ # Attention pulse for emoji GIFs
159
+ frames = create_attention_pulse(emoji='⚠️', num_frames=20)
160
+ ```
161
+
162
+ ### Fade
163
+ ```python
164
+ from templates.fade import create_fade_animation, create_crossfade
165
+
166
+ # Fade in
167
+ frames = create_fade_animation(fade_type='in')
168
+
169
+ # Fade out
170
+ frames = create_fade_animation(fade_type='out')
171
+
172
+ # Crossfade between two emojis
173
+ frames = create_crossfade(
174
+ object1_data={'emoji': '😊', 'size': 100},
175
+ object2_data={'emoji': '😂', 'size': 100}
176
+ )
177
+ ```
178
+
179
+ ### Zoom
180
+ ```python
181
+ from templates.zoom import create_zoom_animation, create_explosion_zoom
182
+
183
+ # Zoom in dramatically
184
+ frames = create_zoom_animation(
185
+ zoom_type='in',
186
+ scale_range=(0.1, 2.0),
187
+ add_motion_blur=True
188
+ )
189
+
190
+ # Zoom out
191
+ frames = create_zoom_animation(zoom_type='out')
192
+
193
+ # Explosion zoom
194
+ frames = create_explosion_zoom(emoji='💥')
195
+ ```
196
+
197
+ ### Explode / Shatter
198
+ ```python
199
+ from templates.explode import create_explode_animation, create_particle_burst
200
+
201
+ # Burst explosion
202
+ frames = create_explode_animation(
203
+ explode_type='burst',
204
+ num_pieces=25
205
+ )
206
+
207
+ # Shatter effect
208
+ frames = create_explode_animation(explode_type='shatter')
209
+
210
+ # Dissolve into particles
211
+ frames = create_explode_animation(explode_type='dissolve')
212
+
213
+ # Particle burst
214
+ frames = create_particle_burst(particle_count=30)
215
+ ```
216
+
217
+ ### Wiggle / Jiggle
218
+ ```python
219
+ from templates.wiggle import create_wiggle_animation, create_excited_wiggle
220
+
221
+ # Jello wobble
222
+ frames = create_wiggle_animation(
223
+ wiggle_type='jello',
224
+ intensity=1.0,
225
+ cycles=2
226
+ )
227
+
228
+ # Wave motion
229
+ frames = create_wiggle_animation(wiggle_type='wave')
230
+
231
+ # Excited wiggle for emoji GIFs
232
+ frames = create_excited_wiggle(emoji='🎉')
233
+ ```
234
+
235
+ ### Slide
236
+ ```python
237
+ from templates.slide import create_slide_animation, create_multi_slide
238
+
239
+ # Slide in from left with overshoot
240
+ frames = create_slide_animation(
241
+ direction='left',
242
+ slide_type='in',
243
+ overshoot=True
244
+ )
245
+
246
+ # Slide across
247
+ frames = create_slide_animation(direction='left', slide_type='across')
248
+
249
+ # Multiple objects sliding in sequence
250
+ objects = [
251
+ {'data': {'emoji': '🎯', 'size': 60}, 'direction': 'left', 'final_pos': (120, 240)},
252
+ {'data': {'emoji': '🎪', 'size': 60}, 'direction': 'right', 'final_pos': (240, 240)}
253
+ ]
254
+ frames = create_multi_slide(objects, stagger_delay=5)
255
+ ```
256
+
257
+ ### Flip
258
+ ```python
259
+ from templates.flip import create_flip_animation, create_quick_flip
260
+
261
+ # Horizontal flip between two emojis
262
+ frames = create_flip_animation(
263
+ object1_data={'emoji': '😊', 'size': 120},
264
+ object2_data={'emoji': '😂', 'size': 120},
265
+ flip_axis='horizontal'
266
+ )
267
+
268
+ # Vertical flip
269
+ frames = create_flip_animation(flip_axis='vertical')
270
+
271
+ # Quick flip for emoji GIFs
272
+ frames = create_quick_flip('👍', '👎')
273
+ ```
274
+
275
+ ### Morph / Transform
276
+ ```python
277
+ from templates.morph import create_morph_animation, create_reaction_morph
278
+
279
+ # Crossfade morph
280
+ frames = create_morph_animation(
281
+ object1_data={'emoji': '😊', 'size': 100},
282
+ object2_data={'emoji': '😂', 'size': 100},
283
+ morph_type='crossfade'
284
+ )
285
+
286
+ # Scale morph (shrink while other grows)
287
+ frames = create_morph_animation(morph_type='scale')
288
+
289
+ # Spin morph (3D flip-like)
290
+ frames = create_morph_animation(morph_type='spin_morph')
291
+ ```
292
+
293
+ ### Move Effect
294
+ ```python
295
+ from templates.move import create_move_animation
296
+
297
+ # Linear movement
298
+ frames = create_move_animation(
299
+ object_type='emoji',
300
+ object_data={'emoji': '🚀', 'size': 60},
301
+ start_pos=(50, 240),
302
+ end_pos=(430, 240),
303
+ motion_type='linear',
304
+ easing='ease_out'
305
+ )
306
+
307
+ # Arc movement (parabolic trajectory)
308
+ frames = create_move_animation(
309
+ object_type='emoji',
310
+ object_data={'emoji': '⚽', 'size': 60},
311
+ start_pos=(50, 350),
312
+ end_pos=(430, 350),
313
+ motion_type='arc',
314
+ motion_params={'arc_height': 150}
315
+ )
316
+
317
+ # Circular movement
318
+ frames = create_move_animation(
319
+ object_type='emoji',
320
+ object_data={'emoji': '🌍', 'size': 50},
321
+ motion_type='circle',
322
+ motion_params={
323
+ 'center': (240, 240),
324
+ 'radius': 120,
325
+ 'angle_range': 360 # full circle
326
+ }
327
+ )
328
+
329
+ # Wave movement
330
+ frames = create_move_animation(
331
+ motion_type='wave',
332
+ motion_params={
333
+ 'wave_amplitude': 50,
334
+ 'wave_frequency': 2
335
+ }
336
+ )
337
+
338
+ # Or use low-level easing functions
339
+ from core.easing import interpolate, calculate_arc_motion
340
+
341
+ for i in range(num_frames):
342
+ t = i / (num_frames - 1)
343
+ x = interpolate(start_x, end_x, t, easing='ease_out')
344
+ # Or: x, y = calculate_arc_motion(start, end, height, t)
345
+ ```
346
+
347
+ ### Kaleidoscope Effect
348
+ ```python
349
+ from templates.kaleidoscope import apply_kaleidoscope, create_kaleidoscope_animation
350
+
351
+ # Apply to a single frame
352
+ kaleido_frame = apply_kaleidoscope(frame, segments=8)
353
+
354
+ # Or create animated kaleidoscope
355
+ frames = create_kaleidoscope_animation(
356
+ base_frame=my_frame, # or None for demo pattern
357
+ num_frames=30,
358
+ segments=8,
359
+ rotation_speed=1.0
360
+ )
361
+
362
+ # Simple mirror effects (faster)
363
+ from templates.kaleidoscope import apply_simple_mirror
364
+
365
+ mirrored = apply_simple_mirror(frame, mode='quad') # 4-way mirror
366
+ # modes: 'horizontal', 'vertical', 'quad', 'radial'
367
+ ```
368
+
369
+ **To compose primitives freely, follow these patterns:**
370
+ ```python
371
+ # Example: Bounce + shake for impact
372
+ for i in range(num_frames):
373
+ frame = create_blank_frame(480, 480, bg_color)
374
+
375
+ # Bounce motion
376
+ t_bounce = i / (num_frames - 1)
377
+ y = interpolate(start_y, ground_y, t_bounce, 'bounce_out')
378
+
379
+ # Add shake on impact (when y reaches ground)
380
+ if y >= ground_y - 5:
381
+ shake_x = math.sin(i * 2) * 10
382
+ x = center_x + shake_x
383
+ else:
384
+ x = center_x
385
+
386
+ draw_emoji(frame, '⚽', (x, y), size=60)
387
+ builder.add_frame(frame)
388
+ ```
389
+
390
+ ## Helper Utilities
391
+
392
+ These are optional helpers for common needs. **Use, modify, or replace these with custom implementations as needed.**
393
+
394
+ ### GIF Builder (Assembly & Optimization)
395
+
396
+ ```python
397
+ from core.gif_builder import GIFBuilder
398
+
399
+ # Create builder with your chosen settings
400
+ builder = GIFBuilder(width=480, height=480, fps=20)
401
+
402
+ # Add frames (however you created them)
403
+ for frame in my_frames:
404
+ builder.add_frame(frame)
405
+
406
+ # Save with optimization
407
+ builder.save('output.gif',
408
+ num_colors=128,
409
+ optimize_for_emoji=False)
410
+ ```
411
+
412
+ Key features:
413
+ - Automatic color quantization
414
+ - Duplicate frame removal
415
+ - Size warnings for Slack limits
416
+ - Emoji mode (aggressive optimization)
417
+
418
+ ### Text Rendering
419
+
420
+ For small GIFs like emojis, text readability is challenging. A common solution involves adding outlines:
421
+
422
+ ```python
423
+ from core.typography import draw_text_with_outline, TYPOGRAPHY_SCALE
424
+
425
+ # Text with outline (helps readability)
426
+ draw_text_with_outline(
427
+ frame, "BONK!",
428
+ position=(240, 100),
429
+ font_size=TYPOGRAPHY_SCALE['h1'], # 60px
430
+ text_color=(255, 68, 68),
431
+ outline_color=(0, 0, 0),
432
+ outline_width=4,
433
+ centered=True
434
+ )
435
+ ```
436
+
437
+ To implement custom text rendering, use PIL's `ImageDraw.text()` which works fine for larger GIFs.
438
+
439
+ ### Color Management
440
+
441
+ Professional-looking GIFs often use cohesive color palettes:
442
+
443
+ ```python
444
+ from core.color_palettes import get_palette
445
+
446
+ # Get a pre-made palette
447
+ palette = get_palette('vibrant') # or 'pastel', 'dark', 'neon', 'professional'
448
+
449
+ bg_color = palette['background']
450
+ text_color = palette['primary']
451
+ accent_color = palette['accent']
452
+ ```
453
+
454
+ To work with colors directly, use RGB tuples - whatever works for the use case.
455
+
456
+ ### Visual Effects
457
+
458
+ Optional effects for impact moments:
459
+
460
+ ```python
461
+ from core.visual_effects import ParticleSystem, create_impact_flash, create_shockwave_rings
462
+
463
+ # Particle system
464
+ particles = ParticleSystem()
465
+ particles.emit_sparkles(x=240, y=200, count=15)
466
+ particles.emit_confetti(x=240, y=200, count=20)
467
+
468
+ # Update and render each frame
469
+ particles.update()
470
+ particles.render(frame)
471
+
472
+ # Flash effect
473
+ frame = create_impact_flash(frame, position=(240, 200), radius=100)
474
+
475
+ # Shockwave rings
476
+ frame = create_shockwave_rings(frame, position=(240, 200), radii=[30, 60, 90])
477
+ ```
478
+
479
+ ### Easing Functions
480
+
481
+ Smooth motion uses easing instead of linear interpolation:
482
+
483
+ ```python
484
+ from core.easing import interpolate
485
+
486
+ # Object falling (accelerates)
487
+ y = interpolate(start=0, end=400, t=progress, easing='ease_in')
488
+
489
+ # Object landing (decelerates)
490
+ y = interpolate(start=0, end=400, t=progress, easing='ease_out')
491
+
492
+ # Bouncing
493
+ y = interpolate(start=0, end=400, t=progress, easing='bounce_out')
494
+
495
+ # Overshoot (elastic)
496
+ scale = interpolate(start=0.5, end=1.0, t=progress, easing='elastic_out')
497
+ ```
498
+
499
+ Available easings: `linear`, `ease_in`, `ease_out`, `ease_in_out`, `bounce_out`, `elastic_out`, `back_out` (overshoot), and more in `core/easing.py`.
500
+
501
+ ### Frame Composition
502
+
503
+ Basic drawing utilities if you need them:
504
+
505
+ ```python
506
+ from core.frame_composer import (
507
+ create_gradient_background, # Gradient backgrounds
508
+ draw_emoji_enhanced, # Emoji with optional shadow
509
+ draw_circle_with_shadow, # Shapes with depth
510
+ draw_star # 5-pointed stars
511
+ )
512
+
513
+ # Gradient background
514
+ frame = create_gradient_background(480, 480, top_color, bottom_color)
515
+
516
+ # Emoji with shadow
517
+ draw_emoji_enhanced(frame, '🎉', position=(200, 200), size=80, shadow=True)
518
+ ```
519
+
520
+ ## Optimization Strategies
521
+
522
+ When your GIF is too large:
523
+
524
+ **For Message GIFs (>2MB):**
525
+ 1. Reduce frames (lower FPS or shorter duration)
526
+ 2. Reduce colors (128 → 64 colors)
527
+ 3. Reduce dimensions (480x480 → 320x320)
528
+ 4. Enable duplicate frame removal
529
+
530
+ **For Emoji GIFs (>64KB) - be aggressive:**
531
+ 1. Limit to 10-12 frames total
532
+ 2. Use 32-40 colors maximum
533
+ 3. Avoid gradients (solid colors compress better)
534
+ 4. Simplify design (fewer elements)
535
+ 5. Use `optimize_for_emoji=True` in save method
536
+
537
+ ## Example Composition Patterns
538
+
539
+ ### Simple Reaction (Pulsing)
540
+ ```python
541
+ builder = GIFBuilder(128, 128, 10)
542
+
543
+ for i in range(12):
544
+ frame = Image.new('RGB', (128, 128), (240, 248, 255))
545
+
546
+ # Pulsing scale
547
+ scale = 1.0 + math.sin(i * 0.5) * 0.15
548
+ size = int(60 * scale)
549
+
550
+ draw_emoji_enhanced(frame, '😱', position=(64-size//2, 64-size//2),
551
+ size=size, shadow=False)
552
+ builder.add_frame(frame)
553
+
554
+ builder.save('reaction.gif', num_colors=40, optimize_for_emoji=True)
555
+
556
+ # Validate
557
+ from core.validators import check_slack_size
558
+ check_slack_size('reaction.gif', is_emoji=True)
559
+ ```
560
+
561
+ ### Action with Impact (Bounce + Flash)
562
+ ```python
563
+ builder = GIFBuilder(480, 480, 20)
564
+
565
+ # Phase 1: Object falls
566
+ for i in range(15):
567
+ frame = create_gradient_background(480, 480, (240, 248, 255), (200, 230, 255))
568
+ t = i / 14
569
+ y = interpolate(0, 350, t, 'ease_in')
570
+ draw_emoji_enhanced(frame, '⚽', position=(220, int(y)), size=80)
571
+ builder.add_frame(frame)
572
+
573
+ # Phase 2: Impact + flash
574
+ for i in range(8):
575
+ frame = create_gradient_background(480, 480, (240, 248, 255), (200, 230, 255))
576
+
577
+ # Flash on first frames
578
+ if i < 3:
579
+ frame = create_impact_flash(frame, (240, 350), radius=120, intensity=0.6)
580
+
581
+ draw_emoji_enhanced(frame, '⚽', position=(220, 350), size=80)
582
+
583
+ # Text appears
584
+ if i > 2:
585
+ draw_text_with_outline(frame, "GOAL!", position=(240, 150),
586
+ font_size=60, text_color=(255, 68, 68),
587
+ outline_color=(0, 0, 0), outline_width=4, centered=True)
588
+
589
+ builder.add_frame(frame)
590
+
591
+ builder.save('goal.gif', num_colors=128)
592
+ ```
593
+
594
+ ### Combining Primitives (Move + Shake)
595
+ ```python
596
+ from templates.shake import create_shake_animation
597
+
598
+ # Create shake animation
599
+ shake_frames = create_shake_animation(
600
+ object_type='emoji',
601
+ object_data={'emoji': '😰', 'size': 70},
602
+ num_frames=20,
603
+ shake_intensity=12
604
+ )
605
+
606
+ # Create moving element that triggers the shake
607
+ builder = GIFBuilder(480, 480, 20)
608
+ for i in range(40):
609
+ t = i / 39
610
+
611
+ if i < 20:
612
+ # Before trigger - use blank frame with moving object
613
+ frame = create_blank_frame(480, 480, (255, 255, 255))
614
+ x = interpolate(50, 300, t * 2, 'linear')
615
+ draw_emoji_enhanced(frame, '🚗', position=(int(x), 300), size=60)
616
+ draw_emoji_enhanced(frame, '😰', position=(350, 200), size=70)
617
+ else:
618
+ # After trigger - use shake frame
619
+ frame = shake_frames[i - 20]
620
+ # Add the car in final position
621
+ draw_emoji_enhanced(frame, '🚗', position=(300, 300), size=60)
622
+
623
+ builder.add_frame(frame)
624
+
625
+ builder.save('scare.gif')
626
+ ```
627
+
628
+ ## Philosophy
629
+
630
+ This toolkit provides building blocks, not rigid recipes. To work with a GIF request:
631
+
632
+ 1. **Understand the creative vision** - What should happen? What's the mood?
633
+ 2. **Design the animation** - Break it into phases (anticipation, action, reaction)
634
+ 3. **Apply primitives as needed** - Shake, bounce, move, effects - mix freely
635
+ 4. **Validate constraints** - Check file size, especially for emoji GIFs
636
+ 5. **Iterate if needed** - Reduce frames/colors if over size limits
637
+
638
+ **The goal is creative freedom within Slack's technical constraints.**
639
+
640
+ ## Dependencies
641
+
642
+ To use this toolkit, install these dependencies only if they aren't already present:
643
+
644
+ ```bash
645
+ pip install pillow imageio numpy
646
+ ```