@kolbo/kolbo-code-linux-arm64-musl 0.0.0-dev-202604161628

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 (282) hide show
  1. package/bin/kolbo +0 -0
  2. package/package.json +14 -0
  3. package/skills/brainstorming/SKILL.md +164 -0
  4. package/skills/brainstorming/scripts/frame-template.html +214 -0
  5. package/skills/brainstorming/scripts/helper.js +88 -0
  6. package/skills/brainstorming/scripts/server.cjs +354 -0
  7. package/skills/brainstorming/scripts/start-server.sh +148 -0
  8. package/skills/brainstorming/scripts/stop-server.sh +56 -0
  9. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  10. package/skills/brainstorming/visual-companion.md +287 -0
  11. package/skills/color-grading/SKILL.md +152 -0
  12. package/skills/dispatching-parallel-agents/SKILL.md +182 -0
  13. package/skills/docx/.skillfish.json +10 -0
  14. package/skills/docx/SKILL.md +196 -0
  15. package/skills/docx/docx-js.md +350 -0
  16. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  17. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  18. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  19. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  20. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  21. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  22. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  23. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  24. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  25. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  26. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  27. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  28. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  29. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  30. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  31. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  32. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  33. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  34. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  35. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  36. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  37. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  38. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  39. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  40. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  41. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  42. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  43. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  44. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  45. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  46. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  47. package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  48. package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  49. package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  50. package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  51. package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  52. package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  53. package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  54. package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  55. package/skills/docx/ooxml/scripts/pack.py +159 -0
  56. package/skills/docx/ooxml/scripts/unpack.py +29 -0
  57. package/skills/docx/ooxml/scripts/validate.py +69 -0
  58. package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  59. package/skills/docx/ooxml/scripts/validation/base.py +951 -0
  60. package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  61. package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  62. package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  63. package/skills/docx/ooxml.md +599 -0
  64. package/skills/docx/scripts/__init__.py +1 -0
  65. package/skills/docx/scripts/document.py +1272 -0
  66. package/skills/docx/scripts/templates/comments.xml +3 -0
  67. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  68. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  69. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  70. package/skills/docx/scripts/templates/people.xml +3 -0
  71. package/skills/docx/scripts/utilities.py +374 -0
  72. package/skills/executing-plans/SKILL.md +70 -0
  73. package/skills/ffmpeg-patterns/SKILL.md +240 -0
  74. package/skills/finishing-a-development-branch/SKILL.md +200 -0
  75. package/skills/frontend-design/SKILL.md +42 -0
  76. package/skills/fullstack-app/SKILL.md +621 -0
  77. package/skills/image-prompting-guide/SKILL.md +143 -0
  78. package/skills/kolbo/SKILL.md +610 -0
  79. package/skills/music-prompting/SKILL.md +146 -0
  80. package/skills/pdf/.skillfish.json +10 -0
  81. package/skills/pdf/FORMS.md +205 -0
  82. package/skills/pdf/REFERENCE.md +612 -0
  83. package/skills/pdf/SKILL.md +293 -0
  84. package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  85. package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  86. package/skills/pdf/scripts/check_fillable_fields.py +12 -0
  87. package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  88. package/skills/pdf/scripts/create_validation_image.py +41 -0
  89. package/skills/pdf/scripts/extract_form_field_info.py +152 -0
  90. package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  91. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  92. package/skills/photo-studio/SKILL.md +130 -0
  93. package/skills/pptx/.skillfish.json +10 -0
  94. package/skills/pptx/SKILL.md +483 -0
  95. package/skills/pptx/html2pptx.md +626 -0
  96. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  97. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  98. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  99. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  100. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  101. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  102. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  103. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  104. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  105. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  106. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  107. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  108. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  109. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  110. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  111. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  112. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  113. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  114. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  115. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  116. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  117. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  118. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  119. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  120. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  121. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  122. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  123. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  124. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  125. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  126. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  127. package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  128. package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  129. package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  130. package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  131. package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  132. package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  133. package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  134. package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  135. package/skills/pptx/ooxml/scripts/pack.py +159 -0
  136. package/skills/pptx/ooxml/scripts/unpack.py +29 -0
  137. package/skills/pptx/ooxml/scripts/validate.py +69 -0
  138. package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  139. package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  140. package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  141. package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  142. package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  143. package/skills/pptx/ooxml.md +427 -0
  144. package/skills/pptx/scripts/html2pptx.js +995 -0
  145. package/skills/pptx/scripts/inventory.py +1020 -0
  146. package/skills/pptx/scripts/rearrange.py +231 -0
  147. package/skills/pptx/scripts/replace.py +385 -0
  148. package/skills/pptx/scripts/thumbnail.py +450 -0
  149. package/skills/production-review/SKILL.md +152 -0
  150. package/skills/receiving-code-review/SKILL.md +213 -0
  151. package/skills/remotion-best-practices/SKILL.md +62 -0
  152. package/skills/remotion-best-practices/rules/3d.md +86 -0
  153. package/skills/remotion-best-practices/rules/animations.md +27 -0
  154. package/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  155. package/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  156. package/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  157. package/skills/remotion-best-practices/rules/assets.md +78 -0
  158. package/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  159. package/skills/remotion-best-practices/rules/audio.md +169 -0
  160. package/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
  161. package/skills/remotion-best-practices/rules/can-decode.md +81 -0
  162. package/skills/remotion-best-practices/rules/charts.md +120 -0
  163. package/skills/remotion-best-practices/rules/compositions.md +154 -0
  164. package/skills/remotion-best-practices/rules/display-captions.md +184 -0
  165. package/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  166. package/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
  167. package/skills/remotion-best-practices/rules/fonts.md +152 -0
  168. package/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  169. package/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  170. package/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  171. package/skills/remotion-best-practices/rules/gifs.md +141 -0
  172. package/skills/remotion-best-practices/rules/images.md +134 -0
  173. package/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  174. package/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  175. package/skills/remotion-best-practices/rules/lottie.md +70 -0
  176. package/skills/remotion-best-practices/rules/maps.md +412 -0
  177. package/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  178. package/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  179. package/skills/remotion-best-practices/rules/motion-design.md +215 -0
  180. package/skills/remotion-best-practices/rules/parameters.md +109 -0
  181. package/skills/remotion-best-practices/rules/sequencing.md +118 -0
  182. package/skills/remotion-best-practices/rules/sfx.md +30 -0
  183. package/skills/remotion-best-practices/rules/subtitles.md +36 -0
  184. package/skills/remotion-best-practices/rules/tailwind.md +11 -0
  185. package/skills/remotion-best-practices/rules/text-animations.md +20 -0
  186. package/skills/remotion-best-practices/rules/timing.md +179 -0
  187. package/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  188. package/skills/remotion-best-practices/rules/transitions.md +197 -0
  189. package/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  190. package/skills/remotion-best-practices/rules/trimming.md +51 -0
  191. package/skills/remotion-best-practices/rules/videos.md +171 -0
  192. package/skills/remotion-best-practices/rules/voiceover.md +99 -0
  193. package/skills/requesting-code-review/SKILL.md +105 -0
  194. package/skills/requesting-code-review/code-reviewer.md +146 -0
  195. package/skills/short-form-video/SKILL.md +168 -0
  196. package/skills/sound-design/SKILL.md +154 -0
  197. package/skills/storytelling/SKILL.md +139 -0
  198. package/skills/subagent-driven-development/SKILL.md +277 -0
  199. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  200. package/skills/subagent-driven-development/implementer-prompt.md +113 -0
  201. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  202. package/skills/subtitle-production/SKILL.md +244 -0
  203. package/skills/subtitle-production/reference/burn_to_video.py +222 -0
  204. package/skills/subtitle-production/reference/export_srts.py +127 -0
  205. package/skills/subtitle-production/reference/gen_srt.py +42 -0
  206. package/skills/supabase/.skillfish.json +10 -0
  207. package/skills/supabase/SKILL.md +106 -0
  208. package/skills/supabase/assets/feedback-issue-template.md +17 -0
  209. package/skills/supabase/references/skill-feedback.md +17 -0
  210. package/skills/supabase-postgres-best-practices/.skillfish.json +10 -0
  211. package/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  212. package/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
  213. package/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
  214. package/skills/supabase-postgres-best-practices/references/_template.md +34 -0
  215. package/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  216. package/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  217. package/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  218. package/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  219. package/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  220. package/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  221. package/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  222. package/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  223. package/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  224. package/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  225. package/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  226. package/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  227. package/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  228. package/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  229. package/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  230. package/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  231. package/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  232. package/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  233. package/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  234. package/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  235. package/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  236. package/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  237. package/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  238. package/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  239. package/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  240. package/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  241. package/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  242. package/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  243. package/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  244. package/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  245. package/skills/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
  246. package/skills/supabase-quickstart/SKILL.md +400 -0
  247. package/skills/systematic-debugging/CREATION-LOG.md +119 -0
  248. package/skills/systematic-debugging/SKILL.md +296 -0
  249. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  250. package/skills/systematic-debugging/condition-based-waiting.md +115 -0
  251. package/skills/systematic-debugging/defense-in-depth.md +122 -0
  252. package/skills/systematic-debugging/find-polluter.sh +63 -0
  253. package/skills/systematic-debugging/root-cause-tracing.md +169 -0
  254. package/skills/systematic-debugging/test-academic.md +14 -0
  255. package/skills/systematic-debugging/test-pressure-1.md +58 -0
  256. package/skills/systematic-debugging/test-pressure-2.md +68 -0
  257. package/skills/systematic-debugging/test-pressure-3.md +69 -0
  258. package/skills/test-driven-development/SKILL.md +371 -0
  259. package/skills/test-driven-development/testing-anti-patterns.md +299 -0
  260. package/skills/typography-video/SKILL.md +182 -0
  261. package/skills/typography-video/reference/KineticTitleScene.tsx +345 -0
  262. package/skills/using-git-worktrees/SKILL.md +218 -0
  263. package/skills/using-superpowers/SKILL.md +115 -0
  264. package/skills/using-superpowers/references/codex-tools.md +100 -0
  265. package/skills/using-superpowers/references/gemini-tools.md +33 -0
  266. package/skills/verification-before-completion/SKILL.md +139 -0
  267. package/skills/video-editing/SKILL.md +128 -0
  268. package/skills/video-production/SKILL.md +247 -0
  269. package/skills/video-prompting-guide/SKILL.md +268 -0
  270. package/skills/writing-plans/SKILL.md +152 -0
  271. package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
  272. package/skills/writing-skills/SKILL.md +655 -0
  273. package/skills/writing-skills/anthropic-best-practices.md +1150 -0
  274. package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  275. package/skills/writing-skills/graphviz-conventions.dot +172 -0
  276. package/skills/writing-skills/persuasion-principles.md +187 -0
  277. package/skills/writing-skills/render-graphs.js +168 -0
  278. package/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  279. package/skills/xlsx/.skillfish.json +10 -0
  280. package/skills/xlsx/SKILL.md +288 -0
  281. package/skills/xlsx/recalc.py +178 -0
  282. package/skills/youtube-clipper/SKILL.md +187 -0
@@ -0,0 +1,215 @@
1
+ ---
2
+ title: Motion Design & Video Production
3
+ impact: HIGH
4
+ impactDescription: transforms generic animations into professional motion graphics with cinematic camera work, beat-driven timing, and production-quality transitions
5
+ tags: motion-design, announcement-video, cinematic, camera, beat, whip-pan, word-reveal, production
6
+ ---
7
+
8
+ ## Beat-Driven Absolute Timeline
9
+
10
+ **Never** nest `<Sequence>` components for multi-scene videos. Define a single `T` object with absolute frame positions — the whole timeline becomes readable and easy to adjust.
11
+
12
+ **Incorrect (fragile nested sequences):**
13
+
14
+ ```tsx
15
+ <Sequence from={0} durationInFrames={60}>
16
+ <SceneA />
17
+ </Sequence>
18
+ <Sequence from={60} durationInFrames={90}>
19
+ <SceneB />
20
+ </Sequence>
21
+ ```
22
+
23
+ **Correct (absolute beat timeline):**
24
+
25
+ ```tsx
26
+ const T = {
27
+ intro: 0,
28
+ codeScene: 58,
29
+ terminal: 98,
30
+ terminalEnd: 248,
31
+ shipScene: 252,
32
+ cta: 450,
33
+ TOTAL: 560,
34
+ } as const;
35
+
36
+ // Components self-hide outside their window:
37
+ if (frame < at || frame >= exit) return null;
38
+ ```
39
+
40
+ ---
41
+
42
+ ## Camera Rig — Handheld + 3D Tilt + Z Dolly
43
+
44
+ Every production video needs a camera layer. Wire it once, all content gets it.
45
+
46
+ ```tsx
47
+ // Slow Z dolly into each section
48
+ const camZ = frame < T.terminal
49
+ ? interpolate(frame, [0, T.terminal], [-120, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp', easing: Easing.out(Easing.quad) })
50
+ : 0;
51
+
52
+ // Organic breathing tilt (barely perceptible — felt not seen)
53
+ const camTiltY = Math.sin(frame / 180) * 1.2;
54
+ const camTiltX = Math.cos(frame / 240) * 0.8;
55
+
56
+ // Ultra-slow handheld drift
57
+ const driftX = Math.sin(frame * 0.028) * 3.0 + Math.sin(frame * 0.061) * 1.5;
58
+ const driftY = Math.cos(frame * 0.035) * 2.5 + Math.cos(frame * 0.073) * 1.2;
59
+
60
+ // Beat-synced camera kick
61
+ const impactAmt = ALL_BEATS.reduce((acc, bf) => {
62
+ const d = frame - bf;
63
+ if (d >= 0 && d < 22) {
64
+ const peak = BIG_BEATS.has(bf) ? 22 : 13;
65
+ return acc + interpolate(d, [0, 22], [peak, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp', easing: Easing.out(Easing.cubic) });
66
+ }
67
+ return acc;
68
+ }, 0);
69
+
70
+ const shakeX = driftX + Math.sin(frame * 0.71) * impactAmt * 0.65;
71
+ const shakeY = driftY + Math.cos(frame * 0.83) * impactAmt * 0.35;
72
+ const shakeRot = Math.sin(frame * 0.022) * 0.25 + Math.sin(frame * 0.57) * impactAmt * 0.025;
73
+ ```
74
+
75
+ JSX structure — outer shake, inner 3D perspective:
76
+
77
+ ```tsx
78
+ <div style={{
79
+ position: 'absolute', inset: 0,
80
+ transform: `translateX(${shakeX + whipX}px) translateY(${shakeY}px) rotate(${shakeRot}deg)`,
81
+ filter: whipBlur > 0 ? `blur(${whipBlur}px)` : undefined,
82
+ }}>
83
+ <div style={{ position: 'absolute', inset: 0, perspective: '1400px', perspectiveOrigin: '50% 50%' }}>
84
+ <div style={{
85
+ position: 'absolute', inset: 0,
86
+ transform: `rotateX(${camTiltX}deg) rotateY(${camTiltY}deg) translateZ(${camZ}px)`,
87
+ transformStyle: 'preserve-3d',
88
+ }}>
89
+ {/* All scene content here */}
90
+ </div>
91
+ </div>
92
+ </div>
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Whip Pan Between Sections
98
+
99
+ Fast lateral translateX + motion blur. Apply to the whole content wrapper at section cut frames.
100
+
101
+ ```tsx
102
+ const WHIP_FRAMES = [T.terminal, T.shipScene, T.cta]; // all major cuts
103
+ const WHIP_HALF = 4; // frames each side = 8 total = 0.27s
104
+
105
+ const { whipX, whipBlur } = WHIP_FRAMES.reduce(
106
+ (acc, tf) => {
107
+ const d = frame - tf;
108
+ if (d >= -WHIP_HALF && d < WHIP_HALF) {
109
+ const x = d < 0
110
+ ? interpolate(d, [-WHIP_HALF, 0], [0, -420], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp', easing: Easing.in(Easing.cubic) })
111
+ : interpolate(d, [0, WHIP_HALF], [420, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp', easing: Easing.out(Easing.cubic) });
112
+ const blur = interpolate(Math.abs(d), [0, WHIP_HALF], [22, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
113
+ return { whipX: acc.whipX + x, whipBlur: Math.max(acc.whipBlur, blur) };
114
+ }
115
+ return acc;
116
+ },
117
+ { whipX: 0, whipBlur: 0 },
118
+ );
119
+ ```
120
+
121
+ No overlay effects needed. The displacement + blur IS the transition.
122
+
123
+ ---
124
+
125
+ ## Masked Word Reveal — Soft Gradient Window
126
+
127
+ **Never use `overflow: hidden`** for word reveals — causes hard cuts at container edges.
128
+ Use CSS `mask-image` gradient instead. Words slide through a soft dissolve zone.
129
+
130
+ ```tsx
131
+ const maskGrad = [
132
+ 'transparent calc(50% - 185px)',
133
+ 'black calc(50% - 105px)',
134
+ 'black calc(50% + 105px)',
135
+ 'transparent calc(50% + 185px)',
136
+ ].join(', ');
137
+
138
+ <div style={{
139
+ position: 'absolute', inset: 0,
140
+ display: 'flex', alignItems: 'center', justifyContent: 'center',
141
+ maskImage: `linear-gradient(to bottom, ${maskGrad})`,
142
+ WebkitMaskImage: `linear-gradient(to bottom, ${maskGrad})`,
143
+ }}>
144
+ {words.map((word, i) => {
145
+ const wordAt = at + i * stagger; // stagger: 6-10 frames per word
146
+ const enterY = interpolate(frame, [wordAt, wordAt + enterDur], [215, 0], {
147
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp', easing: Easing.out(Easing.cubic),
148
+ });
149
+ const exitY = interpolate(frame, [exit - exitDur, exit], [0, -215], {
150
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp', easing: Easing.in(Easing.cubic),
151
+ });
152
+ return (
153
+ <span key={i} style={{ transform: `translateY(${enterY + exitY}%)`, display: 'inline-block', lineHeight: 1 }}>
154
+ {word}
155
+ </span>
156
+ );
157
+ })}
158
+ </div>
159
+ ```
160
+
161
+ **Font size guide:**
162
+ - Brand / hero reveal: `fontSize: 192, fontWeight: 900, letterSpacing: '-8px'`
163
+ - Section headlines: `fontSize: 128, fontWeight: 800, letterSpacing: '-4px'`
164
+ - Never drop below 128px for main titles — inconsistency reads as a bug
165
+
166
+ ---
167
+
168
+ ## Impact Flash System
169
+
170
+ Beat-synced white flash — screen-space overlay, outside the camera rig.
171
+
172
+ ```tsx
173
+ const ALL_BEATS = [T.intro, T.codeScene, T.shipScene, T.cta];
174
+ const BIG_BEATS = new Set([T.intro, T.cta]);
175
+
176
+ const flashOpacity = ALL_BEATS.reduce((acc, bf) => {
177
+ const d = frame - bf;
178
+ if (d >= 0 && d < 8) {
179
+ const peak = BIG_BEATS.has(bf) ? 0.14 : 0.07;
180
+ return Math.max(acc, interpolate(d, [0, 8], [peak, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' }));
181
+ }
182
+ return acc;
183
+ }, 0);
184
+
185
+ {flashOpacity > 0.005 && (
186
+ <div style={{ position: 'absolute', inset: 0, background: 'white', opacity: flashOpacity, pointerEvents: 'none' }} />
187
+ )}
188
+ ```
189
+
190
+ Only add flash beats for major section cuts — not for UI elements fading in within a scene.
191
+
192
+ ---
193
+
194
+ ## Narrative Order — Promise Before Proof
195
+
196
+ Text headlines BEFORE recordings/demos, not after.
197
+
198
+ - ✅ `"Code anything."` → terminal recording → `"Ship anything."` → desktop recording
199
+ - ❌ terminal recording → `"Code anything."` (that's a caption, not a headline)
200
+
201
+ ## Cold Open — No Warmup
202
+
203
+ Frame 0 = the brand name or strongest visual. No intro slides, no warmup.
204
+ If you have a brand name, open on it at 192px. Let the first word be the hook.
205
+
206
+ ## Avoid Copy Redundancy
207
+
208
+ Adjacent phrases must not repeat words or contradict each other.
209
+ - ❌ `"Beyond code."` immediately followed by a `"Code."` beat
210
+ - ❌ `"Code anything."` then `"Create anything."` (same structure, same word)
211
+ - ✅ `"Code anything."` → `"Ship anything."` (different verb, completes a story arc)
212
+
213
+ ## One Logo Rule
214
+
215
+ Never show the product logo twice. If it appears in a mid-video reveal (e.g. orbit converge scene), remove it from the CTA. Use text only at the end.
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: parameters
3
+ description: Make a video parametrizable by adding a Zod schema
4
+ metadata:
5
+ tags: parameters, zod, schema
6
+ ---
7
+
8
+ To make a video parametrizable, a Zod schema can be added to a composition.
9
+
10
+ First, `zod` must be installed .
11
+
12
+ Search the project for lockfiles and run the correct command depending on the package manager:
13
+
14
+ If `package-lock.json` is found, use the following command:
15
+
16
+ ```bash
17
+ npm i zod
18
+ ```
19
+
20
+ If `bun.lockb` is found, use the following command:
21
+
22
+ ```bash
23
+ bun i zod
24
+ ```
25
+
26
+ If `yarn.lock` is found, use the following command:
27
+
28
+ ```bash
29
+ yarn add zod
30
+ ```
31
+
32
+ If `pnpm-lock.yaml` is found, use the following command:
33
+
34
+ ```bash
35
+ pnpm i zod
36
+ ```
37
+
38
+ Then, a Zod schema can be defined alongside the component:
39
+
40
+ ```tsx title="src/MyComposition.tsx"
41
+ import { z } from "zod";
42
+
43
+ export const MyCompositionSchema = z.object({
44
+ title: z.string(),
45
+ });
46
+
47
+ const MyComponent: React.FC<z.infer<typeof MyCompositionSchema>> = () => {
48
+ return (
49
+ <div>
50
+ <h1>{props.title}</h1>
51
+ </div>
52
+ );
53
+ };
54
+ ```
55
+
56
+ In the root file, the schema can be passed to the composition:
57
+
58
+ ```tsx title="src/Root.tsx"
59
+ import { Composition } from "remotion";
60
+ import { MycComponent, MyCompositionSchema } from "./MyComposition";
61
+
62
+ export const RemotionRoot = () => {
63
+ return (
64
+ <Composition
65
+ id="MyComposition"
66
+ component={MyComponent}
67
+ durationInFrames={100}
68
+ fps={30}
69
+ width={1080}
70
+ height={1080}
71
+ defaultProps={{ title: "Hello World" }}
72
+ schema={MyCompositionSchema}
73
+ />
74
+ );
75
+ };
76
+ ```
77
+
78
+ Now, the user can edit the parameter visually in the sidebar.
79
+
80
+ All schemas that are supported by Zod are supported by Remotion.
81
+
82
+ Remotion requires that the top-level type is a z.object(), because the collection of props of a React component is always an object.
83
+
84
+ ## Color picker
85
+
86
+ For adding a color picker, use `zColor()` from `@remotion/zod-types`.
87
+
88
+ If it is not installed, use the following command:
89
+
90
+ ```bash
91
+ npx remotion add @remotion/zod-types # If project uses npm
92
+ bunx remotion add @remotion/zod-types # If project uses bun
93
+ yarn remotion add @remotion/zod-types # If project uses yarn
94
+ pnpm exec remotion add @remotion/zod-types # If project uses pnpm
95
+ ```
96
+
97
+ Then import `zColor` from `@remotion/zod-types`:
98
+
99
+ ```tsx
100
+ import { zColor } from "@remotion/zod-types";
101
+ ```
102
+
103
+ Then use it in the schema:
104
+
105
+ ```tsx
106
+ export const MyCompositionSchema = z.object({
107
+ color: zColor(),
108
+ });
109
+ ```
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: sequencing
3
+ description: Sequencing patterns for Remotion - delay, trim, limit duration of items
4
+ metadata:
5
+ tags: sequence, series, timing, delay, trim
6
+ ---
7
+
8
+ Use `<Sequence>` to delay when an element appears in the timeline.
9
+
10
+ ```tsx
11
+ import { Sequence } from "remotion";
12
+
13
+ const {fps} = useVideoConfig();
14
+
15
+ <Sequence from={1 * fps} durationInFrames={2 * fps} premountFor={1 * fps}>
16
+ <Title />
17
+ </Sequence>
18
+ <Sequence from={2 * fps} durationInFrames={2 * fps} premountFor={1 * fps}>
19
+ <Subtitle />
20
+ </Sequence>
21
+ ```
22
+
23
+ This will by default wrap the component in an absolute fill element.
24
+ If the items should not be wrapped, use the `layout` prop:
25
+
26
+ ```tsx
27
+ <Sequence layout="none">
28
+ <Title />
29
+ </Sequence>
30
+ ```
31
+
32
+ ## Premounting
33
+
34
+ This loads the component in the timeline before it is actually played.
35
+ Always premount any `<Sequence>`!
36
+
37
+ ```tsx
38
+ <Sequence premountFor={1 * fps}>
39
+ <Title />
40
+ </Sequence>
41
+ ```
42
+
43
+ ## Series
44
+
45
+ Use `<Series>` when elements should play one after another without overlap.
46
+
47
+ ```tsx
48
+ import { Series } from "remotion";
49
+
50
+ <Series>
51
+ <Series.Sequence durationInFrames={45}>
52
+ <Intro />
53
+ </Series.Sequence>
54
+ <Series.Sequence durationInFrames={60}>
55
+ <MainContent />
56
+ </Series.Sequence>
57
+ <Series.Sequence durationInFrames={30}>
58
+ <Outro />
59
+ </Series.Sequence>
60
+ </Series>;
61
+ ```
62
+
63
+ Same as with `<Sequence>`, the items will be wrapped in an absolute fill element by default when using `<Series.Sequence>`, unless the `layout` prop is set to `none`.
64
+
65
+ ### Series with overlaps
66
+
67
+ Use negative offset for overlapping sequences:
68
+
69
+ ```tsx
70
+ <Series>
71
+ <Series.Sequence durationInFrames={60}>
72
+ <SceneA />
73
+ </Series.Sequence>
74
+ <Series.Sequence offset={-15} durationInFrames={60}>
75
+ {/* Starts 15 frames before SceneA ends */}
76
+ <SceneB />
77
+ </Series.Sequence>
78
+ </Series>
79
+ ```
80
+
81
+ ## Frame References Inside Sequences
82
+
83
+ Inside a Sequence, `useCurrentFrame()` returns the local frame (starting from 0):
84
+
85
+ ```tsx
86
+ <Sequence from={60} durationInFrames={30}>
87
+ <MyComponent />
88
+ {/* Inside MyComponent, useCurrentFrame() returns 0-29, not 60-89 */}
89
+ </Sequence>
90
+ ```
91
+
92
+ ## Nested Sequences
93
+
94
+ Sequences can be nested for complex timing:
95
+
96
+ ```tsx
97
+ <Sequence from={0} durationInFrames={120}>
98
+ <Background />
99
+ <Sequence from={15} durationInFrames={90} layout="none">
100
+ <Title />
101
+ </Sequence>
102
+ <Sequence from={45} durationInFrames={60} layout="none">
103
+ <Subtitle />
104
+ </Sequence>
105
+ </Sequence>
106
+ ```
107
+
108
+ ## Nesting compositions within another
109
+
110
+ To add a composition within another composition, you can use the `<Sequence>` component with a `width` and `height` prop to specify the size of the composition.
111
+
112
+ ```tsx
113
+ <AbsoluteFill>
114
+ <Sequence width={COMPOSITION_WIDTH} height={COMPOSITION_HEIGHT}>
115
+ <CompositionComponent />
116
+ </Sequence>
117
+ </AbsoluteFill>
118
+ ```
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: sfx
3
+ description: Including sound effects
4
+ metadata:
5
+ tags: sfx, sound, effect, audio
6
+ ---
7
+
8
+ To include a sound effect, use the `<Audio>` tag:
9
+
10
+ ```tsx
11
+ import { Audio } from "@remotion/sfx";
12
+
13
+ <Audio src={"https://remotion.media/whoosh.wav"} />;
14
+ ```
15
+
16
+ The following sound effects are available:
17
+
18
+ - `https://remotion.media/whoosh.wav`
19
+ - `https://remotion.media/whip.wav`
20
+ - `https://remotion.media/page-turn.wav`
21
+ - `https://remotion.media/switch.wav`
22
+ - `https://remotion.media/mouse-click.wav`
23
+ - `https://remotion.media/shutter-modern.wav`
24
+ - `https://remotion.media/shutter-old.wav`
25
+ - `https://remotion.media/ding.wav`
26
+ - `https://remotion.media/bruh.wav`
27
+ - `https://remotion.media/vine-boom.wav`
28
+ - `https://remotion.media/windows-xp-error.wav`
29
+
30
+ For more sound effects, search the internet. A good resource is https://github.com/kapishdima/soundcn/tree/main/assets.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: subtitles
3
+ description: subtitles and caption rules
4
+ metadata:
5
+ tags: subtitles, captions, remotion, json
6
+ ---
7
+
8
+ All captions must be processed in JSON. The captions must use the `Caption` type which is the following:
9
+
10
+ ```ts
11
+ import type { Caption } from "@remotion/captions";
12
+ ```
13
+
14
+ This is the definition:
15
+
16
+ ```ts
17
+ type Caption = {
18
+ text: string;
19
+ startMs: number;
20
+ endMs: number;
21
+ timestampMs: number | null;
22
+ confidence: number | null;
23
+ };
24
+ ```
25
+
26
+ ## Generating captions
27
+
28
+ To transcribe video and audio files to generate captions, load the [./transcribe-captions.md](./transcribe-captions.md) file for more instructions.
29
+
30
+ ## Displaying captions
31
+
32
+ To display captions in your video, load the [./display-captions.md](./display-captions.md) file for more instructions.
33
+
34
+ ## Importing captions
35
+
36
+ To import captions from a .srt file, load the [./import-srt-captions.md](./import-srt-captions.md) file for more instructions.
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: tailwind
3
+ description: Using TailwindCSS in Remotion.
4
+ metadata:
5
+ ---
6
+
7
+ You can and should use TailwindCSS in Remotion, if TailwindCSS is installed in the project.
8
+
9
+ Don't use `transition-*` or `animate-*` classes - always animate using the `useCurrentFrame()` hook.
10
+
11
+ Tailwind must be installed and enabled first in a Remotion project - fetch https://www.remotion.dev/docs/tailwind using WebFetch for instructions.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: text-animations
3
+ description: Typography and text animation patterns for Remotion.
4
+ metadata:
5
+ tags: typography, text, typewriter, highlighter ken
6
+ ---
7
+
8
+ ## Text animations
9
+
10
+ Based on `useCurrentFrame()`, reduce the string character by character to create a typewriter effect.
11
+
12
+ ## Typewriter Effect
13
+
14
+ See [Typewriter](assets/text-animations-typewriter.tsx) for an advanced example with a blinking cursor and a pause after the first sentence.
15
+
16
+ Always use string slicing for typewriter effects. Never use per-character opacity.
17
+
18
+ ## Word Highlighting
19
+
20
+ See [Word Highlight](assets/text-animations-word-highlight.tsx) for an example for how a word highlight is animated, like with a highlighter pen.