@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,171 @@
1
+ ---
2
+ name: videos
3
+ description: Embedding videos in Remotion - trimming, volume, speed, looping, pitch
4
+ metadata:
5
+ tags: video, media, trim, volume, speed, loop, pitch
6
+ ---
7
+
8
+ # Using videos in Remotion
9
+
10
+ ## Prerequisites
11
+
12
+ First, the @remotion/media package needs to be installed.
13
+ If it is not, use the following command:
14
+
15
+ ```bash
16
+ npx remotion add @remotion/media # If project uses npm
17
+ bunx remotion add @remotion/media # If project uses bun
18
+ yarn remotion add @remotion/media # If project uses yarn
19
+ pnpm exec remotion add @remotion/media # If project uses pnpm
20
+ ```
21
+
22
+ Use `<Video>` from `@remotion/media` to embed videos into your composition.
23
+
24
+ ```tsx
25
+ import { Video } from "@remotion/media";
26
+ import { staticFile } from "remotion";
27
+
28
+ export const MyComposition = () => {
29
+ return <Video src={staticFile("video.mp4")} />;
30
+ };
31
+ ```
32
+
33
+ Remote URLs are also supported:
34
+
35
+ ```tsx
36
+ <Video src="https://remotion.media/video.mp4" />
37
+ ```
38
+
39
+ ## Trimming
40
+
41
+ Use `trimBefore` and `trimAfter` to remove portions of the video. Values are in seconds.
42
+
43
+ ```tsx
44
+ const { fps } = useVideoConfig();
45
+
46
+ return (
47
+ <Video
48
+ src={staticFile("video.mp4")}
49
+ trimBefore={2 * fps} // Skip the first 2 seconds
50
+ trimAfter={10 * fps} // End at the 10 second mark
51
+ />
52
+ );
53
+ ```
54
+
55
+ ## Delaying
56
+
57
+ Wrap the video in a `<Sequence>` to delay when it appears:
58
+
59
+ ```tsx
60
+ import { Sequence, staticFile } from "remotion";
61
+ import { Video } from "@remotion/media";
62
+
63
+ const { fps } = useVideoConfig();
64
+
65
+ return (
66
+ <Sequence from={1 * fps}>
67
+ <Video src={staticFile("video.mp4")} />
68
+ </Sequence>
69
+ );
70
+ ```
71
+
72
+ The video will appear after 1 second.
73
+
74
+ ## Sizing and Position
75
+
76
+ Use the `style` prop to control size and position:
77
+
78
+ ```tsx
79
+ <Video
80
+ src={staticFile("video.mp4")}
81
+ style={{
82
+ width: 500,
83
+ height: 300,
84
+ position: "absolute",
85
+ top: 100,
86
+ left: 50,
87
+ objectFit: "cover",
88
+ }}
89
+ />
90
+ ```
91
+
92
+ ## Volume
93
+
94
+ Set a static volume (0 to 1):
95
+
96
+ ```tsx
97
+ <Video src={staticFile("video.mp4")} volume={0.5} />
98
+ ```
99
+
100
+ Or use a callback for dynamic volume based on the current frame:
101
+
102
+ ```tsx
103
+ import { interpolate } from "remotion";
104
+
105
+ const { fps } = useVideoConfig();
106
+
107
+ return (
108
+ <Video
109
+ src={staticFile("video.mp4")}
110
+ volume={(f) =>
111
+ interpolate(f, [0, 1 * fps], [0, 1], { extrapolateRight: "clamp" })
112
+ }
113
+ />
114
+ );
115
+ ```
116
+
117
+ Use `muted` to silence the video entirely:
118
+
119
+ ```tsx
120
+ <Video src={staticFile("video.mp4")} muted />
121
+ ```
122
+
123
+ ## Speed
124
+
125
+ Use `playbackRate` to change the playback speed:
126
+
127
+ ```tsx
128
+ <Video src={staticFile("video.mp4")} playbackRate={2} /> {/* 2x speed */}
129
+ <Video src={staticFile("video.mp4")} playbackRate={0.5} /> {/* Half speed */}
130
+ ```
131
+
132
+ Reverse playback is not supported.
133
+
134
+ ## Looping
135
+
136
+ Use `loop` to loop the video indefinitely:
137
+
138
+ ```tsx
139
+ <Video src={staticFile("video.mp4")} loop />
140
+ ```
141
+
142
+ Use `loopVolumeCurveBehavior` to control how the frame count behaves when looping:
143
+
144
+ - `"repeat"`: Frame count resets to 0 each loop (for `volume` callback)
145
+ - `"extend"`: Frame count continues incrementing
146
+
147
+ ```tsx
148
+ <Video
149
+ src={staticFile("video.mp4")}
150
+ loop
151
+ loopVolumeCurveBehavior="extend"
152
+ volume={(f) => interpolate(f, [0, 300], [1, 0])} // Fade out over multiple loops
153
+ />
154
+ ```
155
+
156
+ ## Pitch
157
+
158
+ Use `toneFrequency` to adjust the pitch without affecting speed. Values range from 0.01 to 2:
159
+
160
+ ```tsx
161
+ <Video
162
+ src={staticFile("video.mp4")}
163
+ toneFrequency={1.5} // Higher pitch
164
+ />
165
+ <Video
166
+ src={staticFile("video.mp4")}
167
+ toneFrequency={0.8} // Lower pitch
168
+ />
169
+ ```
170
+
171
+ Pitch shifting only works during server-side rendering, not in the Remotion Studio preview or in the `<Player />`.
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: voiceover
3
+ description: Adding AI-generated voiceover to Remotion compositions using TTS
4
+ metadata:
5
+ tags: voiceover, audio, elevenlabs, tts, speech, calculateMetadata, dynamic duration
6
+ ---
7
+
8
+ # Adding AI voiceover to a Remotion composition
9
+
10
+ Use ElevenLabs TTS to generate speech audio per scene, then use [`calculateMetadata`](./calculate-metadata) to dynamically size the composition to match the audio.
11
+
12
+ ## Prerequisites
13
+
14
+ By default this guide uses **ElevenLabs** as the TTS provider (`ELEVENLABS_API_KEY` environment variable). Users may substitute any TTS service that can produce an audio file.
15
+
16
+ If the user has not specified a TTS provider, recommend ElevenLabs and ask for their API key.
17
+
18
+ Ensure the environment variable is available when running the generation script:
19
+
20
+ ```bash
21
+ node --strip-types generate-voiceover.ts
22
+ ```
23
+
24
+ ## Generating audio with ElevenLabs
25
+
26
+ Create a script that reads the config, calls the ElevenLabs API for each scene, and writes MP3 files to the `public/` directory so Remotion can access them via `staticFile()`.
27
+
28
+ The core API call for a single scene:
29
+
30
+ ```ts title="generate-voiceover.ts"
31
+ const response = await fetch(
32
+ `https://api.elevenlabs.io/v1/text-to-speech/${voiceId}`,
33
+ {
34
+ method: "POST",
35
+ headers: {
36
+ "xi-api-key": process.env.ELEVENLABS_API_KEY!,
37
+ "Content-Type": "application/json",
38
+ Accept: "audio/mpeg",
39
+ },
40
+ body: JSON.stringify({
41
+ text: "Welcome to the show.",
42
+ model_id: "eleven_multilingual_v2",
43
+ voice_settings: {
44
+ stability: 0.5,
45
+ similarity_boost: 0.75,
46
+ style: 0.3,
47
+ },
48
+ }),
49
+ },
50
+ );
51
+
52
+ const audioBuffer = Buffer.from(await response.arrayBuffer());
53
+ writeFileSync(`public/voiceover/${compositionId}/${scene.id}.mp3`, audioBuffer);
54
+ ```
55
+
56
+ ## Dynamic composition duration with calculateMetadata
57
+
58
+ Use [`calculateMetadata`](./calculate-metadata.md) to measure the [audio durations](./get-audio-duration.md) and set the composition length accordingly.
59
+
60
+ ```tsx
61
+ import { CalculateMetadataFunction, staticFile } from "remotion";
62
+ import { getAudioDuration } from "./get-audio-duration";
63
+
64
+ const FPS = 30;
65
+
66
+ const SCENE_AUDIO_FILES = [
67
+ "voiceover/my-comp/scene-01-intro.mp3",
68
+ "voiceover/my-comp/scene-02-main.mp3",
69
+ "voiceover/my-comp/scene-03-outro.mp3",
70
+ ];
71
+
72
+ export const calculateMetadata: CalculateMetadataFunction<Props> = async ({
73
+ props,
74
+ }) => {
75
+ const durations = await Promise.all(
76
+ SCENE_AUDIO_FILES.map((file) => getAudioDuration(staticFile(file))),
77
+ );
78
+
79
+ const sceneDurations = durations.map((durationInSeconds) => {
80
+ return durationInSeconds * FPS;
81
+ });
82
+
83
+ return {
84
+ durationInFrames: Math.ceil(sceneDurations.reduce((sum, d) => sum + d, 0)),
85
+ };
86
+ };
87
+ ```
88
+
89
+ The computed `sceneDurations` are passed into the component via a `voiceover` prop so the component knows how long each scene should be.
90
+
91
+ If the composition uses [`<TransitionSeries>`](./transitions.md), subtract the overlap from total duration: [./transitions.md#calculating-total-composition-duration](./transitions.md#calculating-total-composition-duration)
92
+
93
+ ## Rendering audio in the component
94
+
95
+ See [audio.md](./audio.md) for more information on how to render audio in the component.
96
+
97
+ ## Delaying audio start
98
+
99
+ See [audio.md#delaying](./audio.md#delaying) for more information on how to delay the audio start.
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: requesting-code-review
3
+ description: Use when completing tasks, implementing major features, or before merging to verify work meets requirements
4
+ ---
5
+
6
+ # Requesting Code Review
7
+
8
+ Dispatch superpowers:code-reviewer subagent to catch issues before they cascade. The reviewer gets precisely crafted context for evaluation — never your session's history. This keeps the reviewer focused on the work product, not your thought process, and preserves your own context for continued work.
9
+
10
+ **Core principle:** Review early, review often.
11
+
12
+ ## When to Request Review
13
+
14
+ **Mandatory:**
15
+ - After each task in subagent-driven development
16
+ - After completing major feature
17
+ - Before merge to main
18
+
19
+ **Optional but valuable:**
20
+ - When stuck (fresh perspective)
21
+ - Before refactoring (baseline check)
22
+ - After fixing complex bug
23
+
24
+ ## How to Request
25
+
26
+ **1. Get git SHAs:**
27
+ ```bash
28
+ BASE_SHA=$(git rev-parse HEAD~1) # or origin/main
29
+ HEAD_SHA=$(git rev-parse HEAD)
30
+ ```
31
+
32
+ **2. Dispatch code-reviewer subagent:**
33
+
34
+ Use Task tool with superpowers:code-reviewer type, fill template at `code-reviewer.md`
35
+
36
+ **Placeholders:**
37
+ - `{WHAT_WAS_IMPLEMENTED}` - What you just built
38
+ - `{PLAN_OR_REQUIREMENTS}` - What it should do
39
+ - `{BASE_SHA}` - Starting commit
40
+ - `{HEAD_SHA}` - Ending commit
41
+ - `{DESCRIPTION}` - Brief summary
42
+
43
+ **3. Act on feedback:**
44
+ - Fix Critical issues immediately
45
+ - Fix Important issues before proceeding
46
+ - Note Minor issues for later
47
+ - Push back if reviewer is wrong (with reasoning)
48
+
49
+ ## Example
50
+
51
+ ```
52
+ [Just completed Task 2: Add verification function]
53
+
54
+ You: Let me request code review before proceeding.
55
+
56
+ BASE_SHA=$(git log --oneline | grep "Task 1" | head -1 | awk '{print $1}')
57
+ HEAD_SHA=$(git rev-parse HEAD)
58
+
59
+ [Dispatch superpowers:code-reviewer subagent]
60
+ WHAT_WAS_IMPLEMENTED: Verification and repair functions for conversation index
61
+ PLAN_OR_REQUIREMENTS: Task 2 from docs/superpowers/plans/deployment-plan.md
62
+ BASE_SHA: a7981ec
63
+ HEAD_SHA: 3df7661
64
+ DESCRIPTION: Added verifyIndex() and repairIndex() with 4 issue types
65
+
66
+ [Subagent returns]:
67
+ Strengths: Clean architecture, real tests
68
+ Issues:
69
+ Important: Missing progress indicators
70
+ Minor: Magic number (100) for reporting interval
71
+ Assessment: Ready to proceed
72
+
73
+ You: [Fix progress indicators]
74
+ [Continue to Task 3]
75
+ ```
76
+
77
+ ## Integration with Workflows
78
+
79
+ **Subagent-Driven Development:**
80
+ - Review after EACH task
81
+ - Catch issues before they compound
82
+ - Fix before moving to next task
83
+
84
+ **Executing Plans:**
85
+ - Review after each batch (3 tasks)
86
+ - Get feedback, apply, continue
87
+
88
+ **Ad-Hoc Development:**
89
+ - Review before merge
90
+ - Review when stuck
91
+
92
+ ## Red Flags
93
+
94
+ **Never:**
95
+ - Skip review because "it's simple"
96
+ - Ignore Critical issues
97
+ - Proceed with unfixed Important issues
98
+ - Argue with valid technical feedback
99
+
100
+ **If reviewer wrong:**
101
+ - Push back with technical reasoning
102
+ - Show code/tests that prove it works
103
+ - Request clarification
104
+
105
+ See template at: requesting-code-review/code-reviewer.md
@@ -0,0 +1,146 @@
1
+ # Code Review Agent
2
+
3
+ You are reviewing code changes for production readiness.
4
+
5
+ **Your task:**
6
+ 1. Review {WHAT_WAS_IMPLEMENTED}
7
+ 2. Compare against {PLAN_OR_REQUIREMENTS}
8
+ 3. Check code quality, architecture, testing
9
+ 4. Categorize issues by severity
10
+ 5. Assess production readiness
11
+
12
+ ## What Was Implemented
13
+
14
+ {DESCRIPTION}
15
+
16
+ ## Requirements/Plan
17
+
18
+ {PLAN_REFERENCE}
19
+
20
+ ## Git Range to Review
21
+
22
+ **Base:** {BASE_SHA}
23
+ **Head:** {HEAD_SHA}
24
+
25
+ ```bash
26
+ git diff --stat {BASE_SHA}..{HEAD_SHA}
27
+ git diff {BASE_SHA}..{HEAD_SHA}
28
+ ```
29
+
30
+ ## Review Checklist
31
+
32
+ **Code Quality:**
33
+ - Clean separation of concerns?
34
+ - Proper error handling?
35
+ - Type safety (if applicable)?
36
+ - DRY principle followed?
37
+ - Edge cases handled?
38
+
39
+ **Architecture:**
40
+ - Sound design decisions?
41
+ - Scalability considerations?
42
+ - Performance implications?
43
+ - Security concerns?
44
+
45
+ **Testing:**
46
+ - Tests actually test logic (not mocks)?
47
+ - Edge cases covered?
48
+ - Integration tests where needed?
49
+ - All tests passing?
50
+
51
+ **Requirements:**
52
+ - All plan requirements met?
53
+ - Implementation matches spec?
54
+ - No scope creep?
55
+ - Breaking changes documented?
56
+
57
+ **Production Readiness:**
58
+ - Migration strategy (if schema changes)?
59
+ - Backward compatibility considered?
60
+ - Documentation complete?
61
+ - No obvious bugs?
62
+
63
+ ## Output Format
64
+
65
+ ### Strengths
66
+ [What's well done? Be specific.]
67
+
68
+ ### Issues
69
+
70
+ #### Critical (Must Fix)
71
+ [Bugs, security issues, data loss risks, broken functionality]
72
+
73
+ #### Important (Should Fix)
74
+ [Architecture problems, missing features, poor error handling, test gaps]
75
+
76
+ #### Minor (Nice to Have)
77
+ [Code style, optimization opportunities, documentation improvements]
78
+
79
+ **For each issue:**
80
+ - File:line reference
81
+ - What's wrong
82
+ - Why it matters
83
+ - How to fix (if not obvious)
84
+
85
+ ### Recommendations
86
+ [Improvements for code quality, architecture, or process]
87
+
88
+ ### Assessment
89
+
90
+ **Ready to merge?** [Yes/No/With fixes]
91
+
92
+ **Reasoning:** [Technical assessment in 1-2 sentences]
93
+
94
+ ## Critical Rules
95
+
96
+ **DO:**
97
+ - Categorize by actual severity (not everything is Critical)
98
+ - Be specific (file:line, not vague)
99
+ - Explain WHY issues matter
100
+ - Acknowledge strengths
101
+ - Give clear verdict
102
+
103
+ **DON'T:**
104
+ - Say "looks good" without checking
105
+ - Mark nitpicks as Critical
106
+ - Give feedback on code you didn't review
107
+ - Be vague ("improve error handling")
108
+ - Avoid giving a clear verdict
109
+
110
+ ## Example Output
111
+
112
+ ```
113
+ ### Strengths
114
+ - Clean database schema with proper migrations (db.ts:15-42)
115
+ - Comprehensive test coverage (18 tests, all edge cases)
116
+ - Good error handling with fallbacks (summarizer.ts:85-92)
117
+
118
+ ### Issues
119
+
120
+ #### Important
121
+ 1. **Missing help text in CLI wrapper**
122
+ - File: index-conversations:1-31
123
+ - Issue: No --help flag, users won't discover --concurrency
124
+ - Fix: Add --help case with usage examples
125
+
126
+ 2. **Date validation missing**
127
+ - File: search.ts:25-27
128
+ - Issue: Invalid dates silently return no results
129
+ - Fix: Validate ISO format, throw error with example
130
+
131
+ #### Minor
132
+ 1. **Progress indicators**
133
+ - File: indexer.ts:130
134
+ - Issue: No "X of Y" counter for long operations
135
+ - Impact: Users don't know how long to wait
136
+
137
+ ### Recommendations
138
+ - Add progress reporting for user experience
139
+ - Consider config file for excluded projects (portability)
140
+
141
+ ### Assessment
142
+
143
+ **Ready to merge: With fixes**
144
+
145
+ **Reasoning:** Core implementation is solid with good architecture and tests. Important issues (help text, date validation) are easily fixed and don't affect core functionality.
146
+ ```
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: short-form-video
3
+ description: >
4
+ Short-form video optimization for TikTok, Instagram Reels, YouTube Shorts, and Facebook Reels.
5
+ Platform safe zones, upload specs, hook techniques, pacing rules, duration strategy, retention
6
+ benchmarks, caption requirements. Use when creating vertical video content or optimizing for
7
+ social platforms.
8
+ Keywords: tiktok, reels, shorts, vertical video, 9:16, hook, retention, pacing, safe zone,
9
+ caption, short form, social media, viral
10
+ ---
11
+
12
+ # Short-Form Video (TikTok / Reels / Shorts)
13
+
14
+ ## Quick Reference
15
+
16
+ ```
17
+ ASPECT RATIO: 9:16 vertical (1080x1920)
18
+ SAFE ZONE: 900x1400px centered (universal cross-platform)
19
+ DURATION: 15s (highest completion) | 30s (best engagement) | 60s (most flexible)
20
+ HOOK: First 1-2 seconds — visual or text pattern interrupt
21
+ CAPTIONS: Mandatory (85% watch muted on mobile)
22
+ TEXT SIZE: 42px+ minimum, bold sans-serif
23
+ PACING: Visual change every 1-3 seconds
24
+ TARGET LUFS: -14 LUFS, true peak -1 dBTP
25
+ MUSIC: 120-140 BPM for energetic, 90-110 for explainers
26
+ CODEC: H.264 High Profile, 8-15 Mbps VBR
27
+ ```
28
+
29
+ ## Platform Safe Zones (1080x1920)
30
+
31
+ | Platform | Safe Zone | Top Dead | Bottom Dead | Right Dead |
32
+ |----------|-----------|----------|-------------|------------|
33
+ | TikTok | 900x1492 | 108px | 320px | 120px |
34
+ | Instagram Reels | 996x1400 | 210px | 310px | 84px |
35
+ | YouTube Shorts | 984x1500 | 120px | 300px | 96px |
36
+ | Facebook Reels | 1080x1520 | 100px | 300px | 60px |
37
+
38
+ **Universal safe zone: 900x1400px centered** — works across all platforms.
39
+
40
+ **Bottom dead zones are critical** — platform UI (comments, share, captions) covers the bottom 300-320px. Never put important content there.
41
+
42
+ ## Duration Strategy
43
+
44
+ | Duration | Avg Completion | Best For |
45
+ |----------|---------------|----------|
46
+ | 0-15s | 92% | Single fact, quick tip, visual gag |
47
+ | 16-30s | 84% | One concept explained, before/after |
48
+ | 31-60s | 68% | Mini tutorial, step-by-step, story arc |
49
+ | 60s+ | 48% | Deep explainer (only with strong retention structure) |
50
+
51
+ **Platform sweet spots:**
52
+ - TikTok: 21-34s for completion; 60-180s for maximum total watch time
53
+ - Reels: 15-30s for viral reach; 60-90s for highest engagement
54
+ - Shorts: Bimodal — ~13s OR full 60s
55
+
56
+ **Key formula:** A 45s video with 70% completion (31.5s watch time) outperforms a 15s video with 40% completion (6s). Total watch time is what the algorithm rewards.
57
+
58
+ ## The 1-Second Hook
59
+
60
+ 70%+ of TikTok users decide to scroll or stay within 3 seconds (average decision: 1.7s).
61
+
62
+ ### 3-Second Retention Impact
63
+
64
+ | 3-Second Retention | Algorithmic Effect | View Multiplier |
65
+ |-------------------|-------------------|-----------------|
66
+ | Below 60% | Minimal promotion | 1.0x |
67
+ | 60-70% | Average distribution | 1.6x |
68
+ | 70-85% | Optimal reach | 2.2x |
69
+ | 85%+ | Viral potential | 2.8x |
70
+
71
+ ### Hook Techniques
72
+
73
+ | Technique | Example | When to Use |
74
+ |-----------|---------|-------------|
75
+ | **Bold text on screen** | "STOP doing this..." (frame 1) | Always — works even muted |
76
+ | **Pattern interrupt** | Unexpected visual, jump cut, color flash | Attention-grabbing |
77
+ | **Question** | "Why does X happen?" (text + voiceover) | Educational |
78
+ | **Result first** | Show finished result, then explain how | Tutorial/how-to |
79
+ | **Controversy** | "Everyone gets this wrong" | Engagement bait |
80
+
81
+ ### Hook Rules
82
+
83
+ 1. **Frame 1 must have visual interest** — no blank intros, no logos, no "hey guys"
84
+ 2. **Text appears in the first 0.5 seconds** — viewers scan text before listening
85
+ 3. **Voice starts immediately** — no silent buildup
86
+ 4. **Movement in frame 1** — static opening frames get scrolled past
87
+
88
+ ## Pacing Rules
89
+
90
+ - Visual change every **1-3 seconds** minimum
91
+ - New information every **3-5 seconds**
92
+ - No static shot longer than **2 seconds** without text overlay or motion
93
+ - Scene transitions should be **hard cuts** (no slow fades on short-form)
94
+
95
+ ## Retention Checkpoints
96
+
97
+ | Timestamp | Target Retention |
98
+ |-----------|-----------------|
99
+ | 3 seconds | 70%+ |
100
+ | 15 seconds | 60%+ |
101
+ | 30 seconds | 50%+ |
102
+
103
+ ## Upload Specs
104
+
105
+ ```
106
+ CODEC: H.264 High Profile, Level 4.2
107
+ BITRATE: 8-15 Mbps VBR (below 5 Mbps triggers quality downgrade)
108
+ FORMAT: .mp4 preferred
109
+ MAX SIZE: 500 MB (desktop), 287.6 MB (iOS), 72 MB (Android)
110
+ ```
111
+
112
+ ## Caption Requirements
113
+
114
+ - **85% of social video is watched on mute** — captions are mandatory
115
+ - Max 3-4 words per cue on vertical (narrow screen)
116
+ - Max 20 characters per line
117
+ - 42px+ minimum font size
118
+ - Bold sans-serif font (Arial, Inter, Montserrat)
119
+ - Thick outline (3px) for readability on varied backgrounds
120
+ - Position in bottom 20% but above the platform dead zone
121
+
122
+ ## 9:16 Conversion (from 16:9 source)
123
+
124
+ Blurred background + centered content — never crop the original:
125
+
126
+ ```bash
127
+ ffmpeg -i input.mp4 -filter_complex \
128
+ "[0:v]split[bg][fg]; \
129
+ [bg]scale=1080:1920:force_original_aspect_ratio=increase, \
130
+ crop=1080:1920,gblur=sigma=40[blurred]; \
131
+ [fg]scale=1080:1920:force_original_aspect_ratio=decrease, \
132
+ pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black@0[front]; \
133
+ [blurred][front]overlay=0:0" \
134
+ -c:v libx264 -crf 18 -c:a aac output_vertical.mp4
135
+ ```
136
+
137
+ ---
138
+
139
+ ## Kolbo MCP Integration
140
+
141
+ | Task | Kolbo MCP Tool | Notes |
142
+ |------|---------------|-------|
143
+ | Generate vertical video | `generate_video` | Specify "9:16 vertical" in prompt |
144
+ | Image-to-video hook | `generate_video_from_image` | Animate a striking frame for the hook |
145
+ | Batch clips from long-form | `generate_creative_director` | Extract highlights |
146
+ | Add captions | `transcribe_audio` | Get word-level SRT, then burn-in with FFmpeg |
147
+ | Background music | `generate_music` | 120-140 BPM for energetic, instrumental=true |
148
+ | Sound effects | `generate_sound` | Whooshes, pops for transitions |
149
+ | Style consistency | `create_visual_dna` | Same look across a series |
150
+
151
+ **Short-form production workflow:**
152
+ 1. Script using the `storytelling` skill (hook → content → close)
153
+ 2. `generate_speech` → narration
154
+ 3. `generate_video` or `generate_video_from_image` → visual clips
155
+ 4. `generate_music` → background track (120-140 BPM, instrumental)
156
+ 5. `transcribe_audio` → get word-level SRT for captions
157
+ 6. FFmpeg: compose 9:16 video + burn-in captions + mix audio
158
+ 7. Review with `production-review` skill checklist
159
+
160
+ ---
161
+
162
+ ## Local / Free Options
163
+
164
+ > **IMPORTANT:** Always use Kolbo MCP tools by default. FFmpeg is the only tool safe to use without asking — it's standard software. For anything else, confirm with the user first.
165
+
166
+ **FFmpeg (safe, standard):** Handles 9:16 conversion, caption burn-in, audio mixing, silence removal — all commands in this skill and the `ffmpeg-patterns` skill.
167
+
168
+ **Transcription:** Kolbo's `transcribe_audio` is easiest. If the user explicitly wants offline transcription, `faster-whisper` runs on CPU with no GPU needed (`pip install faster-whisper`) — but confirm before installing.