@nguyenphp/antigravity-marketing 1.0.16 → 1.0.19

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 (376) hide show
  1. package/README.md +187 -74
  2. package/bin/index.js +4 -4
  3. package/package.json +4 -3
  4. package/templates/.agent/agents/backend-specialist.md +263 -0
  5. package/templates/.agent/agents/database-architect.md +226 -0
  6. package/templates/.agent/agents/debugger.md +225 -0
  7. package/templates/.agent/agents/devops-engineer.md +242 -0
  8. package/templates/.agent/agents/documentation-writer.md +104 -0
  9. package/templates/.agent/agents/explorer-agent.md +73 -0
  10. package/templates/.agent/agents/frontend-specialist.md +527 -0
  11. package/templates/.agent/agents/game-developer.md +162 -0
  12. package/templates/.agent/agents/mobile-developer.md +377 -0
  13. package/templates/.agent/agents/orchestrator.md +400 -0
  14. package/templates/.agent/agents/penetration-tester.md +188 -0
  15. package/templates/.agent/agents/performance-optimizer.md +187 -0
  16. package/templates/.agent/agents/project-planner.md +403 -0
  17. package/templates/.agent/agents/security-auditor.md +170 -0
  18. package/templates/.agent/agents/seo-specialist.md +111 -0
  19. package/templates/.agent/agents/test-engineer.md +158 -0
  20. package/templates/.agent/rules/GEMINI.md +248 -0
  21. package/templates/.agent/skills/analytics-marketing/SKILL.md +172 -324
  22. package/templates/.agent/skills/api-patterns/SKILL.md +81 -0
  23. package/templates/.agent/skills/api-patterns/api-style.md +42 -0
  24. package/templates/.agent/skills/api-patterns/auth.md +24 -0
  25. package/templates/.agent/skills/api-patterns/documentation.md +26 -0
  26. package/templates/.agent/skills/api-patterns/graphql.md +41 -0
  27. package/templates/.agent/skills/api-patterns/rate-limiting.md +31 -0
  28. package/templates/.agent/skills/api-patterns/response.md +37 -0
  29. package/templates/.agent/skills/api-patterns/rest.md +40 -0
  30. package/templates/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  31. package/templates/.agent/skills/api-patterns/security-testing.md +122 -0
  32. package/templates/.agent/skills/api-patterns/trpc.md +41 -0
  33. package/templates/.agent/skills/api-patterns/versioning.md +22 -0
  34. package/templates/.agent/skills/app-builder/SKILL.md +75 -0
  35. package/templates/.agent/skills/app-builder/agent-coordination.md +71 -0
  36. package/templates/.agent/skills/app-builder/feature-building.md +53 -0
  37. package/templates/.agent/skills/app-builder/project-detection.md +34 -0
  38. package/templates/.agent/skills/app-builder/scaffolding.md +118 -0
  39. package/templates/.agent/skills/app-builder/tech-stack.md +40 -0
  40. package/templates/.agent/skills/app-builder/templates/SKILL.md +39 -0
  41. package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  42. package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  43. package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  44. package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  45. package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  46. package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  47. package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  48. package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  49. package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  50. package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  51. package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  52. package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  53. package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  54. package/templates/.agent/skills/architecture/SKILL.md +55 -0
  55. package/templates/.agent/skills/architecture/context-discovery.md +43 -0
  56. package/templates/.agent/skills/architecture/examples.md +94 -0
  57. package/templates/.agent/skills/architecture/pattern-selection.md +68 -0
  58. package/templates/.agent/skills/architecture/patterns-reference.md +50 -0
  59. package/templates/.agent/skills/architecture/trade-off-analysis.md +77 -0
  60. package/templates/.agent/skills/banner-design/SKILL.md +192 -0
  61. package/templates/.agent/skills/banner-design/references/banner-sizes-and-styles.md +118 -0
  62. package/templates/.agent/skills/bash-linux/SKILL.md +199 -0
  63. package/templates/.agent/skills/behavioral-modes/SKILL.md +242 -0
  64. package/templates/.agent/skills/brainstorming/SKILL.md +163 -0
  65. package/templates/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  66. package/templates/.agent/skills/brand/SKILL.md +97 -0
  67. package/templates/.agent/skills/brand/references/approval-checklist.md +169 -0
  68. package/templates/.agent/skills/brand/references/asset-organization.md +157 -0
  69. package/templates/.agent/skills/brand/references/brand-guideline-template.md +140 -0
  70. package/templates/.agent/skills/brand/references/color-palette-management.md +186 -0
  71. package/templates/.agent/skills/brand/references/consistency-checklist.md +94 -0
  72. package/templates/.agent/skills/brand/references/logo-usage-rules.md +185 -0
  73. package/templates/.agent/skills/brand/references/messaging-framework.md +85 -0
  74. package/templates/.agent/skills/brand/references/typography-specifications.md +214 -0
  75. package/templates/.agent/skills/brand/references/update.md +118 -0
  76. package/templates/.agent/skills/brand/references/visual-identity.md +96 -0
  77. package/templates/.agent/skills/brand/references/voice-framework.md +88 -0
  78. package/templates/.agent/skills/brand/scripts/extract-colors.cjs +341 -0
  79. package/templates/.agent/skills/brand/scripts/inject-brand-context.cjs +349 -0
  80. package/templates/.agent/skills/brand/scripts/sync-brand-to-tokens.cjs +266 -0
  81. package/templates/.agent/skills/brand/scripts/validate-asset.cjs +387 -0
  82. package/templates/.agent/skills/brand/templates/brand-guidelines-starter.md +275 -0
  83. package/templates/.agent/skills/clean-code/SKILL.md +201 -0
  84. package/templates/.agent/skills/code-review-checklist/SKILL.md +109 -0
  85. package/templates/.agent/skills/copywriting/SKILL.md +250 -0
  86. package/templates/.agent/skills/database-design/SKILL.md +52 -0
  87. package/templates/.agent/skills/database-design/database-selection.md +43 -0
  88. package/templates/.agent/skills/database-design/indexing.md +39 -0
  89. package/templates/.agent/skills/database-design/migrations.md +48 -0
  90. package/templates/.agent/skills/database-design/optimization.md +36 -0
  91. package/templates/.agent/skills/database-design/orm-selection.md +30 -0
  92. package/templates/.agent/skills/database-design/schema-design.md +56 -0
  93. package/templates/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  94. package/templates/.agent/skills/deployment-procedures/SKILL.md +241 -0
  95. package/templates/.agent/skills/docker-expert/SKILL.md +409 -0
  96. package/templates/.agent/skills/frontend-design/animation-guide.md +331 -0
  97. package/templates/.agent/skills/frontend-design/color-system.md +311 -0
  98. package/templates/.agent/skills/frontend-design/decision-trees.md +418 -0
  99. package/templates/.agent/skills/frontend-design/motion-graphics.md +306 -0
  100. package/templates/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  101. package/templates/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  102. package/templates/.agent/skills/frontend-design/typography-system.md +345 -0
  103. package/templates/.agent/skills/frontend-design/ux-psychology.md +541 -0
  104. package/templates/.agent/skills/frontend-design/visual-effects.md +383 -0
  105. package/templates/.agent/skills/frontend-slides/SKILL.md +92 -0
  106. package/templates/.agent/skills/frontend-slides/STYLE_PRESETS.md +347 -0
  107. package/templates/.agent/skills/frontend-slides/animation-patterns.md +110 -0
  108. package/templates/.agent/skills/frontend-slides/examples/n8n-jupviec-automation.html +789 -0
  109. package/templates/.agent/skills/frontend-slides/examples/n8n-jupviec-automation.pptx +0 -0
  110. package/templates/.agent/skills/frontend-slides/html-template.md +347 -0
  111. package/templates/.agent/skills/frontend-slides/scripts/export-pptx.py +58 -0
  112. package/templates/.agent/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  113. package/templates/.agent/skills/frontend-slides/viewport-base.css +153 -0
  114. package/templates/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  115. package/templates/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  116. package/templates/.agent/skills/game-development/SKILL.md +167 -0
  117. package/templates/.agent/skills/game-development/game-art/SKILL.md +185 -0
  118. package/templates/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  119. package/templates/.agent/skills/game-development/game-design/SKILL.md +129 -0
  120. package/templates/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  121. package/templates/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  122. package/templates/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  123. package/templates/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  124. package/templates/.agent/skills/game-development/web-games/SKILL.md +150 -0
  125. package/templates/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  126. package/templates/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  127. package/templates/.agent/skills/growth-engine/SKILL.md +244 -0
  128. package/templates/.agent/skills/i18n-localization/SKILL.md +154 -0
  129. package/templates/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  130. package/templates/.agent/skills/lint-and-validate/SKILL.md +45 -0
  131. package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  132. package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  133. package/templates/.agent/skills/marketing-report-expert/SKILL.md +70 -0
  134. package/templates/.agent/skills/mcp-builder/SKILL.md +176 -0
  135. package/templates/.agent/skills/minimax-docx/LICENSE +21 -0
  136. package/templates/.agent/skills/minimax-docx/SKILL.md +274 -0
  137. package/templates/.agent/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
  138. package/templates/.agent/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
  139. package/templates/.agent/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
  140. package/templates/.agent/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
  141. package/templates/.agent/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
  142. package/templates/.agent/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
  143. package/templates/.agent/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
  144. package/templates/.agent/skills/minimax-docx/references/cjk_typography.md +357 -0
  145. package/templates/.agent/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
  146. package/templates/.agent/skills/minimax-docx/references/comments_guide.md +191 -0
  147. package/templates/.agent/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
  148. package/templates/.agent/skills/minimax-docx/references/design_principles.md +819 -0
  149. package/templates/.agent/skills/minimax-docx/references/openxml_element_order.md +308 -0
  150. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
  151. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
  152. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
  153. package/templates/.agent/skills/minimax-docx/references/openxml_namespaces.md +82 -0
  154. package/templates/.agent/skills/minimax-docx/references/openxml_units.md +72 -0
  155. package/templates/.agent/skills/minimax-docx/references/scenario_a_create.md +284 -0
  156. package/templates/.agent/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
  157. package/templates/.agent/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
  158. package/templates/.agent/skills/minimax-docx/references/track_changes_guide.md +200 -0
  159. package/templates/.agent/skills/minimax-docx/references/troubleshooting.md +506 -0
  160. package/templates/.agent/skills/minimax-docx/references/typography_guide.md +294 -0
  161. package/templates/.agent/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
  162. package/templates/.agent/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
  163. package/templates/.agent/skills/minimax-docx/scripts/docx_preview.sh +37 -0
  164. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
  165. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
  166. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
  167. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
  168. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
  169. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
  170. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
  171. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
  172. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
  173. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
  174. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
  175. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
  176. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
  177. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
  178. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
  179. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
  180. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
  181. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
  182. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
  183. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
  184. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
  185. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
  186. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
  187. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
  188. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
  189. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
  190. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
  191. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
  192. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
  193. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
  194. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
  195. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
  196. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
  197. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
  198. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
  199. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
  200. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
  201. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
  202. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
  203. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
  204. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
  205. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
  206. package/templates/.agent/skills/minimax-docx/scripts/env_check.sh +196 -0
  207. package/templates/.agent/skills/minimax-docx/scripts/setup.ps1 +274 -0
  208. package/templates/.agent/skills/minimax-docx/scripts/setup.sh +504 -0
  209. package/templates/.agent/skills/minimax-multimodal-toolkit/SKILL.md +359 -0
  210. package/templates/.agent/skills/minimax-pdf/README.md +222 -0
  211. package/templates/.agent/skills/minimax-pdf/SKILL.md +201 -0
  212. package/templates/.agent/skills/minimax-pdf/design/design.md +381 -0
  213. package/templates/.agent/skills/minimax-pdf/scripts/cover.py +1579 -0
  214. package/templates/.agent/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
  215. package/templates/.agent/skills/minimax-pdf/scripts/fill_write.py +242 -0
  216. package/templates/.agent/skills/minimax-pdf/scripts/make.sh +491 -0
  217. package/templates/.agent/skills/minimax-pdf/scripts/merge.py +112 -0
  218. package/templates/.agent/skills/minimax-pdf/scripts/palette.py +559 -0
  219. package/templates/.agent/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
  220. package/templates/.agent/skills/minimax-pdf/scripts/render_body.py +1055 -0
  221. package/templates/.agent/skills/minimax-pdf/scripts/render_cover.cjs +111 -0
  222. package/templates/.agent/skills/minimax-xlsx/SKILL.md +138 -0
  223. package/templates/.agent/skills/minimax-xlsx/references/create.md +691 -0
  224. package/templates/.agent/skills/minimax-xlsx/references/edit.md +684 -0
  225. package/templates/.agent/skills/minimax-xlsx/references/fix.md +37 -0
  226. package/templates/.agent/skills/minimax-xlsx/references/format.md +768 -0
  227. package/templates/.agent/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
  228. package/templates/.agent/skills/minimax-xlsx/references/read-analyze.md +97 -0
  229. package/templates/.agent/skills/minimax-xlsx/references/validate.md +772 -0
  230. package/templates/.agent/skills/minimax-xlsx/scripts/formula_check.py +422 -0
  231. package/templates/.agent/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
  232. package/templates/.agent/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
  233. package/templates/.agent/skills/minimax-xlsx/scripts/style_audit.py +575 -0
  234. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
  235. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
  236. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
  237. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
  238. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
  239. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
  240. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
  241. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
  242. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
  243. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
  244. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
  245. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
  246. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
  247. package/templates/.agent/skills/mobile-design/SKILL.md +394 -0
  248. package/templates/.agent/skills/mobile-design/decision-trees.md +516 -0
  249. package/templates/.agent/skills/mobile-design/mobile-backend.md +491 -0
  250. package/templates/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  251. package/templates/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  252. package/templates/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  253. package/templates/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  254. package/templates/.agent/skills/mobile-design/mobile-performance.md +767 -0
  255. package/templates/.agent/skills/mobile-design/mobile-testing.md +356 -0
  256. package/templates/.agent/skills/mobile-design/mobile-typography.md +433 -0
  257. package/templates/.agent/skills/mobile-design/platform-android.md +666 -0
  258. package/templates/.agent/skills/mobile-design/platform-ios.md +561 -0
  259. package/templates/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  260. package/templates/.agent/skills/mobile-design/touch-psychology.md +537 -0
  261. package/templates/.agent/skills/nestjs-expert/SKILL.md +552 -0
  262. package/templates/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
  263. package/templates/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  264. package/templates/.agent/skills/parallel-agents/SKILL.md +175 -0
  265. package/templates/.agent/skills/performance-profiling/SKILL.md +143 -0
  266. package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  267. package/templates/.agent/skills/plan-writing/SKILL.md +152 -0
  268. package/templates/.agent/skills/powershell-windows/SKILL.md +167 -0
  269. package/templates/.agent/skills/ppc-advertising/SKILL.md +183 -475
  270. package/templates/.agent/skills/pptx-generator/SKILL.md +249 -0
  271. package/templates/.agent/skills/pptx-generator/references/design-system.md +392 -0
  272. package/templates/.agent/skills/pptx-generator/references/editing.md +162 -0
  273. package/templates/.agent/skills/pptx-generator/references/pitfalls.md +112 -0
  274. package/templates/.agent/skills/pptx-generator/references/pptxgenjs.md +420 -0
  275. package/templates/.agent/skills/pptx-generator/references/slide-types.md +413 -0
  276. package/templates/.agent/skills/prisma-expert/SKILL.md +355 -0
  277. package/templates/.agent/skills/python-patterns/SKILL.md +441 -0
  278. package/templates/.agent/skills/react-patterns/SKILL.md +198 -0
  279. package/templates/.agent/skills/red-team-tactics/SKILL.md +199 -0
  280. package/templates/.agent/skills/remotion-best-practices/SKILL.md +45 -111
  281. package/templates/.agent/skills/remotion-best-practices/rules/3d.md +4 -4
  282. package/templates/.agent/skills/remotion-best-practices/rules/animations.md +5 -7
  283. package/templates/.agent/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  284. package/templates/.agent/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  285. package/templates/.agent/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  286. package/templates/.agent/skills/remotion-best-practices/rules/assets.md +78 -0
  287. package/templates/.agent/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  288. package/templates/.agent/skills/remotion-best-practices/rules/audio.md +1 -4
  289. package/templates/.agent/skills/remotion-best-practices/rules/calculate-metadata.md +47 -17
  290. package/templates/.agent/skills/remotion-best-practices/rules/can-decode.md +75 -0
  291. package/templates/.agent/skills/remotion-best-practices/rules/charts.md +80 -48
  292. package/templates/.agent/skills/remotion-best-practices/rules/compositions.md +22 -14
  293. package/templates/.agent/skills/remotion-best-practices/rules/display-captions.md +79 -21
  294. package/templates/.agent/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  295. package/templates/.agent/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
  296. package/templates/.agent/skills/remotion-best-practices/rules/fonts.md +96 -54
  297. package/templates/.agent/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  298. package/templates/.agent/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  299. package/templates/.agent/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  300. package/templates/.agent/skills/remotion-best-practices/rules/gifs.md +21 -18
  301. package/templates/.agent/skills/remotion-best-practices/rules/images.md +6 -2
  302. package/templates/.agent/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  303. package/templates/.agent/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  304. package/templates/.agent/skills/remotion-best-practices/rules/lottie.md +10 -7
  305. package/templates/.agent/skills/remotion-best-practices/rules/maps.md +412 -0
  306. package/templates/.agent/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  307. package/templates/.agent/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  308. package/templates/.agent/skills/remotion-best-practices/rules/parameters.md +109 -0
  309. package/templates/.agent/skills/remotion-best-practices/rules/sequencing.md +13 -1
  310. package/templates/.agent/skills/remotion-best-practices/rules/sfx.md +26 -0
  311. package/templates/.agent/skills/remotion-best-practices/rules/subtitles.md +36 -0
  312. package/templates/.agent/skills/remotion-best-practices/rules/tailwind.md +11 -0
  313. package/templates/.agent/skills/remotion-best-practices/rules/text-animations.md +4 -115
  314. package/templates/.agent/skills/remotion-best-practices/rules/timing.md +19 -19
  315. package/templates/.agent/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  316. package/templates/.agent/skills/remotion-best-practices/rules/transitions.md +117 -42
  317. package/templates/.agent/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  318. package/templates/.agent/skills/remotion-best-practices/rules/trimming.md +51 -0
  319. package/templates/.agent/skills/remotion-best-practices/rules/voiceover.md +99 -0
  320. package/templates/.agent/skills/seo-fundamentals/SKILL.md +83 -441
  321. package/templates/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  322. package/templates/.agent/skills/server-management/SKILL.md +161 -0
  323. package/templates/.agent/skills/systematic-debugging/SKILL.md +109 -0
  324. package/templates/.agent/skills/tdd-workflow/SKILL.md +149 -0
  325. package/templates/.agent/skills/testing-patterns/SKILL.md +178 -0
  326. package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  327. package/templates/.agent/skills/tutorial-video-expert/SKILL.md +88 -0
  328. package/templates/.agent/skills/typescript-expert/SKILL.md +429 -0
  329. package/templates/.agent/skills/ui-ux-pro-max/SKILL.md +1 -1
  330. package/templates/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
  331. package/templates/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
  332. package/templates/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
  333. package/templates/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
  334. package/templates/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
  335. package/templates/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  336. package/templates/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  337. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  338. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  339. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  340. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  341. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  342. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  343. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  344. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  345. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  346. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  347. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  348. package/templates/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
  349. package/templates/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
  350. package/templates/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  351. package/templates/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  352. package/templates/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  353. package/templates/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
  354. package/templates/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
  355. package/templates/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
  356. package/templates/.agent/skills/vision-analysis/SKILL.md +174 -0
  357. package/templates/.agent/skills/vue-expert/SKILL.md +374 -0
  358. package/templates/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  359. package/templates/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  360. package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  361. package/templates/.agent/skills/webapp-testing/SKILL.md +187 -0
  362. package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  363. package/templates/.agent/workflows/analyze.md +3 -0
  364. package/templates/.agent/workflows/brainstorm.md +113 -0
  365. package/templates/.agent/workflows/brand-report.md +44 -0
  366. package/templates/.agent/workflows/create.md +59 -0
  367. package/templates/.agent/workflows/debug.md +103 -0
  368. package/templates/.agent/workflows/deploy.md +176 -0
  369. package/templates/.agent/workflows/enhance.md +63 -0
  370. package/templates/.agent/workflows/orchestrate.md +237 -0
  371. package/templates/.agent/workflows/plan.md +89 -0
  372. package/templates/.agent/workflows/preview.md +80 -0
  373. package/templates/.agent/workflows/report.md +49 -0
  374. package/templates/.agent/workflows/status.md +86 -0
  375. package/templates/.agent/workflows/test.md +144 -0
  376. package/templates/.agent/workflows/ui-ux-pro-max.md +231 -0
@@ -2,14 +2,19 @@
2
2
  name: fonts
3
3
  description: Loading Google Fonts and local fonts in Remotion
4
4
  metadata:
5
- tags: fonts, google-fonts, typography, local-fonts
5
+ tags: fonts, google-fonts, typography, text
6
6
  ---
7
7
 
8
8
  # Using fonts in Remotion
9
9
 
10
- ## Google Fonts
10
+ ## Google Fonts with @remotion/google-fonts
11
11
 
12
- First, install the `@remotion/google-fonts` package:
12
+ The recommended way to use Google Fonts. It's type-safe and automatically blocks rendering until the font is ready.
13
+
14
+ ### Prerequisites
15
+
16
+ First, the @remotion/google-fonts package needs to be installed.
17
+ If it is not installed, use the following command:
13
18
 
14
19
  ```bash
15
20
  npx remotion add @remotion/google-fonts # If project uses npm
@@ -18,93 +23,130 @@ yarn remotion add @remotion/google-fonts # If project uses yarn
18
23
  pnpm exec remotion add @remotion/google-fonts # If project uses pnpm
19
24
  ```
20
25
 
21
- Import and load the font at the top of your composition:
22
-
23
26
  ```tsx
24
- import { loadFont } from "@remotion/google-fonts/Inter";
27
+ import { loadFont } from "@remotion/google-fonts/Lobster";
25
28
 
26
29
  const { fontFamily } = loadFont();
27
30
 
28
31
  export const MyComposition = () => {
29
- return (
30
- <div style={{ fontFamily }}>
31
- Hello World
32
- </div>
33
- );
32
+ return <div style={{ fontFamily }}>Hello World</div>;
34
33
  };
35
34
  ```
36
35
 
37
- ### Loading specific font weights
36
+ Preferrably, specify only needed weights and subsets to reduce file size:
38
37
 
39
38
  ```tsx
40
- import { loadFont } from "@remotion/google-fonts/Inter";
39
+ import { loadFont } from "@remotion/google-fonts/Roboto";
41
40
 
42
41
  const { fontFamily } = loadFont("normal", {
43
42
  weights: ["400", "700"],
43
+ subsets: ["latin"],
44
44
  });
45
45
  ```
46
46
 
47
- ### Loading multiple fonts
47
+ ### Waiting for font to load
48
+
49
+ Use `waitUntilDone()` if you need to know when the font is ready:
48
50
 
49
51
  ```tsx
50
- import { loadFont as loadInter } from "@remotion/google-fonts/Inter";
51
- import { loadFont as loadRoboto } from "@remotion/google-fonts/Roboto";
52
+ import { loadFont } from "@remotion/google-fonts/Lobster";
53
+
54
+ const { fontFamily, waitUntilDone } = loadFont();
55
+
56
+ await waitUntilDone();
57
+ ```
52
58
 
53
- const { fontFamily: inter } = loadInter();
54
- const { fontFamily: roboto } = loadRoboto();
59
+ ## Local fonts with @remotion/fonts
60
+
61
+ For local font files, use the `@remotion/fonts` package.
62
+
63
+ ### Prerequisites
64
+
65
+ First, install @remotion/fonts:
66
+
67
+ ```bash
68
+ npx remotion add @remotion/fonts # If project uses npm
69
+ bunx remotion add @remotion/fonts # If project uses bun
70
+ yarn remotion add @remotion/fonts # If project uses yarn
71
+ pnpm exec remotion add @remotion/fonts # If project uses pnpm
55
72
  ```
56
73
 
57
- ## Local Fonts
74
+ ### Loading a local font
58
75
 
59
- Place font files in the `public/` folder and use CSS `@font-face`:
76
+ Place your font file in the `public/` folder and use `loadFont()`:
60
77
 
61
78
  ```tsx
79
+ import { loadFont } from "@remotion/fonts";
62
80
  import { staticFile } from "remotion";
63
81
 
64
- const fontFace = `
65
- @font-face {
66
- font-family: 'BeVietnamPro';
67
- src: url('${staticFile("fonts/BeVietnamPro-Regular.ttf")}') format('truetype');
68
- font-weight: 400;
69
- font-style: normal;
70
- }
71
- @font-face {
72
- font-family: 'BeVietnamPro';
73
- src: url('${staticFile("fonts/BeVietnamPro-Bold.ttf")}') format('truetype');
74
- font-weight: 700;
75
- font-style: normal;
76
- }
77
- `;
82
+ await loadFont({
83
+ family: "MyFont",
84
+ url: staticFile("MyFont-Regular.woff2"),
85
+ });
78
86
 
79
87
  export const MyComposition = () => {
80
- return (
81
- <>
82
- <style>{fontFace}</style>
83
- <div style={{ fontFamily: "BeVietnamPro" }}>
84
- Xin chào Việt Nam
85
- </div>
86
- </>
87
- );
88
+ return <div style={{ fontFamily: "MyFont" }}>Hello World</div>;
88
89
  };
89
90
  ```
90
91
 
91
- ## Vietnamese Font Recommendations
92
+ ### Loading multiple weights
92
93
 
93
- For Vietnamese text support, use these Google Fonts:
94
+ Load each weight separately with the same family name:
94
95
 
95
96
  ```tsx
96
- // Option 1: Be Vietnam Pro (modern, professional)
97
- import { loadFont } from "@remotion/google-fonts/BeVietnamPro";
97
+ import { loadFont } from "@remotion/fonts";
98
+ import { staticFile } from "remotion";
98
99
 
99
- // Option 2: Montserrat (geometric, clean)
100
- import { loadFont } from "@remotion/google-fonts/Montserrat";
100
+ await Promise.all([
101
+ loadFont({
102
+ family: "Inter",
103
+ url: staticFile("Inter-Regular.woff2"),
104
+ weight: "400",
105
+ }),
106
+ loadFont({
107
+ family: "Inter",
108
+ url: staticFile("Inter-Bold.woff2"),
109
+ weight: "700",
110
+ }),
111
+ ]);
112
+ ```
113
+
114
+ ### Available options
101
115
 
102
- // Option 3: Inter (neutral, works well with Vietnamese diacritics)
103
- import { loadFont } from "@remotion/google-fonts/Inter";
116
+ ```tsx
117
+ loadFont({
118
+ family: "MyFont", // Required: name to use in CSS
119
+ url: staticFile("font.woff2"), // Required: font file URL
120
+ format: "woff2", // Optional: auto-detected from extension
121
+ weight: "400", // Optional: font weight
122
+ style: "normal", // Optional: normal or italic
123
+ display: "block", // Optional: font-display behavior
124
+ });
104
125
  ```
105
126
 
106
- ## Important notes
127
+ ## Using in components
128
+
129
+ Call `loadFont()` at the top level of your component or in a separate file that's imported early:
130
+
131
+ ```tsx
132
+ import { loadFont } from "@remotion/google-fonts/Montserrat";
107
133
 
108
- - Always use `loadFont()` before rendering - fonts must be loaded synchronously
109
- - Google Fonts are automatically subsetted for performance
110
- - For custom fonts, ensure all font weights and styles are loaded
134
+ const { fontFamily } = loadFont("normal", {
135
+ weights: ["400", "700"],
136
+ subsets: ["latin"],
137
+ });
138
+
139
+ export const Title: React.FC<{ text: string }> = ({ text }) => {
140
+ return (
141
+ <h1
142
+ style={{
143
+ fontFamily,
144
+ fontSize: 80,
145
+ fontWeight: "bold",
146
+ }}
147
+ >
148
+ {text}
149
+ </h1>
150
+ );
151
+ };
152
+ ```
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: get-audio-duration
3
+ description: Getting the duration of an audio file in seconds with Mediabunny
4
+ metadata:
5
+ tags: duration, audio, length, time, seconds, mp3, wav
6
+ ---
7
+
8
+ # Getting audio duration with Mediabunny
9
+
10
+ Mediabunny can extract the duration of an audio file. It works in browser, Node.js, and Bun environments.
11
+
12
+ ## Getting audio duration
13
+
14
+ ```tsx title="get-audio-duration.ts"
15
+ import { Input, ALL_FORMATS, UrlSource } from "mediabunny";
16
+
17
+ export const getAudioDuration = async (src: string) => {
18
+ const input = new Input({
19
+ formats: ALL_FORMATS,
20
+ source: new UrlSource(src, {
21
+ getRetryDelay: () => null,
22
+ }),
23
+ });
24
+
25
+ const durationInSeconds = await input.computeDuration();
26
+ return durationInSeconds;
27
+ };
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ ```tsx
33
+ const duration = await getAudioDuration("https://remotion.media/audio.mp3");
34
+ console.log(duration); // e.g. 180.5 (seconds)
35
+ ```
36
+
37
+ ## Using with staticFile in Remotion
38
+
39
+ Make sure to wrap the file path in `staticFile()`:
40
+
41
+ ```tsx
42
+ import { staticFile } from "remotion";
43
+
44
+ const duration = await getAudioDuration(staticFile("audio.mp3"));
45
+ ```
46
+
47
+ ## In Node.js and Bun
48
+
49
+ Use `FileSource` instead of `UrlSource`:
50
+
51
+ ```tsx
52
+ import { Input, ALL_FORMATS, FileSource } from "mediabunny";
53
+
54
+ const input = new Input({
55
+ formats: ALL_FORMATS,
56
+ source: new FileSource(file), // File object from input or drag-drop
57
+ });
58
+ ```
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: get-video-dimensions
3
+ description: Getting the width and height of a video file with Mediabunny
4
+ metadata:
5
+ tags: dimensions, width, height, resolution, size, video
6
+ ---
7
+
8
+ # Getting video dimensions with Mediabunny
9
+
10
+ Mediabunny can extract the width and height of a video file. It works in browser, Node.js, and Bun environments.
11
+
12
+ ## Getting video dimensions
13
+
14
+ ```tsx
15
+ import { Input, ALL_FORMATS, UrlSource } from "mediabunny";
16
+
17
+ export const getVideoDimensions = async (src: string) => {
18
+ const input = new Input({
19
+ formats: ALL_FORMATS,
20
+ source: new UrlSource(src, {
21
+ getRetryDelay: () => null,
22
+ }),
23
+ });
24
+
25
+ const videoTrack = await input.getPrimaryVideoTrack();
26
+ if (!videoTrack) {
27
+ throw new Error("No video track found");
28
+ }
29
+
30
+ return {
31
+ width: videoTrack.displayWidth,
32
+ height: videoTrack.displayHeight,
33
+ };
34
+ };
35
+ ```
36
+
37
+ ## Usage
38
+
39
+ ```tsx
40
+ const dimensions = await getVideoDimensions("https://remotion.media/video.mp4");
41
+ console.log(dimensions.width); // e.g. 1920
42
+ console.log(dimensions.height); // e.g. 1080
43
+ ```
44
+
45
+ ## Using with local files
46
+
47
+ For local files, use `FileSource` instead of `UrlSource`:
48
+
49
+ ```tsx
50
+ import { Input, ALL_FORMATS, FileSource } from "mediabunny";
51
+
52
+ const input = new Input({
53
+ formats: ALL_FORMATS,
54
+ source: new FileSource(file), // File object from input or drag-drop
55
+ });
56
+
57
+ const videoTrack = await input.getPrimaryVideoTrack();
58
+ const width = videoTrack.displayWidth;
59
+ const height = videoTrack.displayHeight;
60
+ ```
61
+
62
+ ## Using with staticFile in Remotion
63
+
64
+ ```tsx
65
+ import { staticFile } from "remotion";
66
+
67
+ const dimensions = await getVideoDimensions(staticFile("video.mp4"));
68
+ ```
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: get-video-duration
3
+ description: Getting the duration of a video file in seconds with Mediabunny
4
+ metadata:
5
+ tags: duration, video, length, time, seconds
6
+ ---
7
+
8
+ # Getting video duration with Mediabunny
9
+
10
+ Mediabunny can extract the duration of a video file. It works in browser, Node.js, and Bun environments.
11
+
12
+ ## Getting video duration
13
+
14
+ ```tsx
15
+ import { Input, ALL_FORMATS, UrlSource } from "mediabunny";
16
+
17
+ export const getVideoDuration = async (src: string) => {
18
+ const input = new Input({
19
+ formats: ALL_FORMATS,
20
+ source: new UrlSource(src, {
21
+ getRetryDelay: () => null,
22
+ }),
23
+ });
24
+
25
+ const durationInSeconds = await input.computeDuration();
26
+ return durationInSeconds;
27
+ };
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ ```tsx
33
+ const duration = await getVideoDuration("https://remotion.media/video.mp4");
34
+ console.log(duration); // e.g. 10.5 (seconds)
35
+ ```
36
+
37
+ ## Video files from the public/ directory
38
+
39
+ Make sure to wrap the file path in `staticFile()`:
40
+
41
+ ```tsx
42
+ import { staticFile } from "remotion";
43
+
44
+ const duration = await getVideoDuration(staticFile("video.mp4"));
45
+ ```
46
+
47
+ ## In Node.js and Bun
48
+
49
+ Use `FileSource` instead of `UrlSource`:
50
+
51
+ ```tsx
52
+ import { Input, ALL_FORMATS, FileSource } from "mediabunny";
53
+
54
+ const input = new Input({
55
+ formats: ALL_FORMATS,
56
+ source: new FileSource(file), // File object from input or drag-drop
57
+ });
58
+
59
+ const durationInSeconds = await input.computeDuration();
60
+ ```
@@ -12,17 +12,23 @@ metadata:
12
12
  Use `<AnimatedImage>` to display a GIF, APNG, AVIF or WebP image synchronized with Remotion's timeline:
13
13
 
14
14
  ```tsx
15
- import {AnimatedImage, staticFile} from 'remotion';
15
+ import { AnimatedImage, staticFile } from "remotion";
16
16
 
17
17
  export const MyComposition = () => {
18
- return <AnimatedImage src={staticFile('animation.gif')} width={500} height={500} />;
18
+ return (
19
+ <AnimatedImage src={staticFile("animation.gif")} width={500} height={500} />
20
+ );
19
21
  };
20
22
  ```
21
23
 
22
24
  Remote URLs are also supported (must have CORS enabled):
23
25
 
24
26
  ```tsx
25
- <AnimatedImage src="https://example.com/animation.gif" width={500} height={500} />
27
+ <AnimatedImage
28
+ src="https://example.com/animation.gif"
29
+ width={500}
30
+ height={500}
31
+ />
26
32
  ```
27
33
 
28
34
  ## Sizing and fit
@@ -70,12 +76,12 @@ Use the `style` prop for additional CSS (use `width` and `height` props for sizi
70
76
 
71
77
  ```tsx
72
78
  <AnimatedImage
73
- src={staticFile('animation.gif')}
79
+ src={staticFile("animation.gif")}
74
80
  width={500}
75
81
  height={500}
76
82
  style={{
77
83
  borderRadius: 20,
78
- position: 'absolute',
84
+ position: "absolute",
79
85
  top: 100,
80
86
  left: 50,
81
87
  }}
@@ -87,28 +93,25 @@ Use the `style` prop for additional CSS (use `width` and `height` props for sizi
87
93
  Use `getGifDurationInSeconds()` from `@remotion/gif` to get the duration of a GIF.
88
94
 
89
95
  ```bash
90
- npx remotion add @remotion/gif # If project uses npm
91
- bunx remotion add @remotion/gif # If project uses bun
92
- yarn remotion add @remotion/gif # If project uses yarn
93
- pnpm exec remotion add @remotion/gif # If project uses pnpm
96
+ npx remotion add @remotion/gif
94
97
  ```
95
98
 
96
99
  ```tsx
97
- import {getGifDurationInSeconds} from '@remotion/gif';
98
- import {staticFile} from 'remotion';
100
+ import { getGifDurationInSeconds } from "@remotion/gif";
101
+ import { staticFile } from "remotion";
99
102
 
100
- const duration = await getGifDurationInSeconds(staticFile('animation.gif'));
103
+ const duration = await getGifDurationInSeconds(staticFile("animation.gif"));
101
104
  console.log(duration); // e.g. 2.5
102
105
  ```
103
106
 
104
107
  This is useful for setting the composition duration to match the GIF:
105
108
 
106
109
  ```tsx
107
- import {getGifDurationInSeconds} from '@remotion/gif';
108
- import {staticFile, CalculateMetadataFunction} from 'remotion';
110
+ import { getGifDurationInSeconds } from "@remotion/gif";
111
+ import { staticFile, CalculateMetadataFunction } from "remotion";
109
112
 
110
113
  const calculateMetadata: CalculateMetadataFunction = async () => {
111
- const duration = await getGifDurationInSeconds(staticFile('animation.gif'));
114
+ const duration = await getGifDurationInSeconds(staticFile("animation.gif"));
112
115
  return {
113
116
  durationInFrames: Math.ceil(duration * 30),
114
117
  };
@@ -127,11 +130,11 @@ pnpm exec remotion add @remotion/gif # If project uses pnpm
127
130
  ```
128
131
 
129
132
  ```tsx
130
- import {Gif} from '@remotion/gif';
131
- import {staticFile} from 'remotion';
133
+ import { Gif } from "@remotion/gif";
134
+ import { staticFile } from "remotion";
132
135
 
133
136
  export const MyComposition = () => {
134
- return <Gif src={staticFile('animation.gif')} width={500} height={500} />;
137
+ return <Gif src={staticFile("animation.gif")} width={500} height={500} />;
135
138
  };
136
139
  ```
137
140
 
@@ -46,7 +46,7 @@ my-video/
46
46
  ```tsx
47
47
  import { Img, staticFile } from "remotion";
48
48
 
49
- <Img src={staticFile("logo.png")} />
49
+ <Img src={staticFile("logo.png")} />;
50
50
  ```
51
51
 
52
52
  ## Remote images
@@ -118,7 +118,11 @@ const { width, height } = await getImageDimensions(staticFile("photo.png"));
118
118
  This is useful for calculating aspect ratios or sizing compositions:
119
119
 
120
120
  ```tsx
121
- import { getImageDimensions, staticFile, CalculateMetadataFunction } from "remotion";
121
+ import {
122
+ getImageDimensions,
123
+ staticFile,
124
+ CalculateMetadataFunction,
125
+ } from "remotion";
122
126
 
123
127
  const calculateMetadata: CalculateMetadataFunction = async () => {
124
128
  const { width, height } = await getImageDimensions(staticFile("photo.png"));
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: import-srt-captions
3
+ description: Importing .srt subtitle files into Remotion using @remotion/captions
4
+ metadata:
5
+ tags: captions, subtitles, srt, import, parse
6
+ ---
7
+
8
+ # Importing .srt subtitles into Remotion
9
+
10
+ If you have an existing `.srt` subtitle file, you can import it into Remotion using `parseSrt()` from `@remotion/captions`.
11
+
12
+ If you don't have a .srt file, read [Transcribing audio](transcribe-captions.md) for how to generate captions instead.
13
+
14
+ ## Prerequisites
15
+
16
+ First, the @remotion/captions package needs to be installed.
17
+ If it is not installed, use the following command:
18
+
19
+ ```bash
20
+ npx remotion add @remotion/captions # If project uses npm
21
+ bunx remotion add @remotion/captions # If project uses bun
22
+ yarn remotion add @remotion/captions # If project uses yarn
23
+ pnpm exec remotion add @remotion/captions # If project uses pnpm
24
+ ```
25
+
26
+ ## Reading an .srt file
27
+
28
+ Use `staticFile()` to reference an `.srt` file in your `public` folder, then fetch and parse it:
29
+
30
+ ```tsx
31
+ import { useState, useEffect, useCallback } from "react";
32
+ import { AbsoluteFill, staticFile, useDelayRender } from "remotion";
33
+ import { parseSrt } from "@remotion/captions";
34
+ import type { Caption } from "@remotion/captions";
35
+
36
+ export const MyComponent: React.FC = () => {
37
+ const [captions, setCaptions] = useState<Caption[] | null>(null);
38
+ const { delayRender, continueRender, cancelRender } = useDelayRender();
39
+ const [handle] = useState(() => delayRender());
40
+
41
+ const fetchCaptions = useCallback(async () => {
42
+ try {
43
+ const response = await fetch(staticFile("subtitles.srt"));
44
+ const text = await response.text();
45
+ const { captions: parsed } = parseSrt({ input: text });
46
+ setCaptions(parsed);
47
+ continueRender(handle);
48
+ } catch (e) {
49
+ cancelRender(e);
50
+ }
51
+ }, [continueRender, cancelRender, handle]);
52
+
53
+ useEffect(() => {
54
+ fetchCaptions();
55
+ }, [fetchCaptions]);
56
+
57
+ if (!captions) {
58
+ return null;
59
+ }
60
+
61
+ return <AbsoluteFill>{/* Use captions here */}</AbsoluteFill>;
62
+ };
63
+ ```
64
+
65
+ Remote URLs are also supported - you can `fetch()` a remote file via URL instead of using `staticFile()`.
66
+
67
+ ## Using imported captions
68
+
69
+ Once parsed, the captions are in the `Caption` format and can be used with all `@remotion/captions` utilities.
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: light-leaks
3
+ description: Light leak overlay effects for Remotion using @remotion/light-leaks.
4
+ metadata:
5
+ tags: light-leaks, overlays, effects, transitions
6
+ ---
7
+
8
+ ## Light Leaks
9
+
10
+ This only works from Remotion 4.0.415 and up. Use `npx remotion versions` to check your Remotion version and `npx remotion upgrade` to upgrade your Remotion version.
11
+
12
+ `<LightLeak>` from `@remotion/light-leaks` renders a WebGL-based light leak effect. It reveals during the first half of its duration and retracts during the second half.
13
+
14
+ Typically used inside a `<TransitionSeries.Overlay>` to play over the cut point between two scenes. See the **transitions** rule for `<TransitionSeries>` and overlay usage.
15
+
16
+ ## Prerequisites
17
+
18
+ ```bash
19
+ npx remotion add @remotion/light-leaks
20
+ ```
21
+
22
+ ## Basic usage with TransitionSeries
23
+
24
+ ```tsx
25
+ import { TransitionSeries } from "@remotion/transitions";
26
+ import { LightLeak } from "@remotion/light-leaks";
27
+
28
+ <TransitionSeries>
29
+ <TransitionSeries.Sequence durationInFrames={60}>
30
+ <SceneA />
31
+ </TransitionSeries.Sequence>
32
+ <TransitionSeries.Overlay durationInFrames={30}>
33
+ <LightLeak />
34
+ </TransitionSeries.Overlay>
35
+ <TransitionSeries.Sequence durationInFrames={60}>
36
+ <SceneB />
37
+ </TransitionSeries.Sequence>
38
+ </TransitionSeries>;
39
+ ```
40
+
41
+ ## Props
42
+
43
+ - `durationInFrames?` — defaults to the parent sequence/composition duration. The effect reveals during the first half and retracts during the second half.
44
+ - `seed?` — determines the shape of the light leak pattern. Different seeds produce different patterns. Default: `0`.
45
+ - `hueShift?` — rotates the hue in degrees (`0`–`360`). Default: `0` (yellow-to-orange). `120` = green, `240` = blue.
46
+
47
+ ## Customizing the look
48
+
49
+ ```tsx
50
+ import { LightLeak } from "@remotion/light-leaks";
51
+
52
+ // Blue-tinted light leak with a different pattern
53
+ <LightLeak seed={5} hueShift={240} />;
54
+
55
+ // Green-tinted light leak
56
+ <LightLeak seed={2} hueShift={120} />;
57
+ ```
58
+
59
+ ## Standalone usage
60
+
61
+ `<LightLeak>` can also be used outside of `<TransitionSeries>`, for example as a decorative overlay in any composition:
62
+
63
+ ```tsx
64
+ import { AbsoluteFill } from "remotion";
65
+ import { LightLeak } from "@remotion/light-leaks";
66
+
67
+ const MyComp: React.FC = () => (
68
+ <AbsoluteFill>
69
+ <MyContent />
70
+ <LightLeak durationInFrames={60} seed={3} />
71
+ </AbsoluteFill>
72
+ );
73
+ ```
@@ -29,17 +29,18 @@ To import a Lottie animation:
29
29
  - Render the Lottie animation using the `Lottie` component from the `@remotion/lottie` package
30
30
 
31
31
  ```tsx
32
- import {Lottie, LottieAnimationData} from '@remotion/lottie';
33
- import {useEffect, useState} from 'react';
34
- import {cancelRender, continueRender, delayRender} from 'remotion';
32
+ import { Lottie, LottieAnimationData } from "@remotion/lottie";
33
+ import { useEffect, useState } from "react";
34
+ import { cancelRender, continueRender, delayRender } from "remotion";
35
35
 
36
36
  export const MyAnimation = () => {
37
- const [handle] = useState(() => delayRender('Loading Lottie animation'));
37
+ const [handle] = useState(() => delayRender("Loading Lottie animation"));
38
38
 
39
- const [animationData, setAnimationData] = useState<LottieAnimationData | null>(null);
39
+ const [animationData, setAnimationData] =
40
+ useState<LottieAnimationData | null>(null);
40
41
 
41
42
  useEffect(() => {
42
- fetch('https://assets4.lottiefiles.com/packages/lf20_zyquagfl.json')
43
+ fetch("https://assets4.lottiefiles.com/packages/lf20_zyquagfl.json")
43
44
  .then((data) => data.json())
44
45
  .then((json) => {
45
46
  setAnimationData(json);
@@ -63,5 +64,7 @@ export const MyAnimation = () => {
63
64
  Lottie supports the `style` prop to allow styles and animations:
64
65
 
65
66
  ```tsx
66
- return <Lottie animationData={animationData} style={{width: 400, height: 400}} />;
67
+ return (
68
+ <Lottie animationData={animationData} style={{ width: 400, height: 400 }} />
69
+ );
67
70
  ```