@thierrynakoa/fire-flow 12.2.1 → 13.0.1

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 (500) hide show
  1. package/CREDITS.md +25 -0
  2. package/DOMINION-FLOW-OVERVIEW.md +182 -38
  3. package/README.md +399 -455
  4. package/TROUBLESHOOTING.md +264 -264
  5. package/agents/fire-debugger.md +54 -0
  6. package/agents/fire-executor.md +1610 -1033
  7. package/agents/fire-fact-checker.md +1 -1
  8. package/agents/fire-planner.md +85 -17
  9. package/agents/fire-project-researcher.md +1 -1
  10. package/agents/fire-researcher.md +4 -22
  11. package/agents/{fire-phoenix-analyst.md → fire-resurrection-analyst.md} +394 -394
  12. package/agents/fire-reviewer.md +552 -499
  13. package/agents/fire-verifier.md +114 -19
  14. package/bin/cli.js +18 -101
  15. package/commands/fire-0-orient.md +2 -2
  16. package/commands/fire-1a-new.md +50 -15
  17. package/commands/fire-1c-setup.md +33 -5
  18. package/commands/fire-1d-discuss.md +87 -1
  19. package/commands/fire-2-plan.md +556 -527
  20. package/commands/fire-3-execute.md +2046 -1356
  21. package/commands/fire-4-verify.md +975 -906
  22. package/commands/fire-5-handoff.md +46 -5
  23. package/commands/fire-6-resume.md +2 -31
  24. package/commands/fire-add-new-skill.md +138 -19
  25. package/commands/fire-autonomous.md +14 -2
  26. package/commands/fire-complete-milestone.md +1 -1
  27. package/commands/fire-cost.md +179 -183
  28. package/commands/fire-debug.md +1 -6
  29. package/commands/fire-loop-resume.md +2 -2
  30. package/commands/fire-loop-stop.md +1 -1
  31. package/commands/fire-loop.md +2 -15
  32. package/commands/fire-map-codebase.md +1 -1
  33. package/commands/fire-migrate-database.md +548 -0
  34. package/commands/fire-new-milestone.md +1 -1
  35. package/commands/fire-reflect.md +1 -2
  36. package/commands/fire-research.md +142 -21
  37. package/commands/{fire-phoenix.md → fire-resurrect.md} +859 -603
  38. package/commands/fire-scaffold.md +297 -0
  39. package/commands/fire-search.md +1 -2
  40. package/commands/fire-security-scan.md +483 -484
  41. package/commands/fire-setup.md +359 -0
  42. package/commands/fire-skill.md +770 -0
  43. package/commands/fire-skills-diff.md +506 -506
  44. package/commands/fire-skills-history.md +388 -388
  45. package/commands/fire-skills-rollback.md +7 -7
  46. package/commands/fire-skills-sync.md +470 -470
  47. package/commands/fire-test.md +5 -5
  48. package/commands/fire-todos.md +1 -1
  49. package/commands/fire-update.md +5 -5
  50. package/commands/fire-validate-skills.md +282 -0
  51. package/commands/fire-vuln-scan.md +492 -493
  52. package/hooks/run-hook.sh +8 -8
  53. package/hooks/run-session-end.sh +7 -7
  54. package/hooks/session-end.sh +90 -90
  55. package/hooks/session-start.sh +1 -1
  56. package/package.json +4 -24
  57. package/plugin.json +7 -7
  58. package/references/autonomy-levels.md +235 -0
  59. package/references/behavioral-directives.md +95 -3
  60. package/references/blocker-tracking.md +1 -1
  61. package/references/circuit-breaker.md +93 -2
  62. package/references/context-engineering.md +227 -9
  63. package/references/honesty-protocols.md +70 -1
  64. package/references/issue-to-pr-pipeline.md +149 -150
  65. package/references/metrics-and-trends.md +1 -2
  66. package/references/research-improvements.md +4 -108
  67. package/references/sdlc-mapping.md +73 -0
  68. package/references/state-machine.md +151 -0
  69. package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
  70. package/skills-library/SKILLS-INDEX.md +57 -558
  71. package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
  72. package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
  73. package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
  74. package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
  75. package/skills-library/_general/automation/settings-gui-generator.md +172 -0
  76. package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
  77. package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
  78. package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
  79. package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
  80. package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
  81. package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
  82. package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
  83. package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
  84. package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
  85. package/skills-library/_general/frontend/color-token-migration.md +112 -0
  86. package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
  87. package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
  88. package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
  89. package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
  90. package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
  91. package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
  92. package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
  93. package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
  94. package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
  95. package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
  96. package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
  97. package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
  98. package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
  99. package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
  100. package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
  101. package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
  102. package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
  103. package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
  104. package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
  105. package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
  106. package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
  107. package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
  108. package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
  109. package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
  110. package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
  111. package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
  112. package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
  113. package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
  114. package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
  115. package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
  116. package/skills-library/_general/methodology/dead-code-activation.md +123 -0
  117. package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
  118. package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
  119. package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
  120. package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
  121. package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
  122. package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
  123. package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
  124. package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
  125. package/skills-library/_general/performance/liveclock-extraction.md +112 -0
  126. package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
  127. package/skills-library/_general/performance/use-visible-interval.md +131 -0
  128. package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
  129. package/skills-library/_quarantine/README.md +30 -0
  130. package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
  131. package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
  132. package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
  133. package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
  134. package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
  135. package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
  136. package/skills-library/api-patterns/graphql-content-queries.md +708 -0
  137. package/skills-library/appointment-scheduler-design.md +423 -0
  138. package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
  139. package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
  140. package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
  141. package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
  142. package/skills-library/automation/scheduled-content-publishing.md +608 -0
  143. package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
  144. package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
  145. package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
  146. package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
  147. package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
  148. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
  149. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
  150. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
  151. package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
  152. package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
  153. package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
  154. package/skills-library/cms-patterns/content-branch-preview.md +515 -0
  155. package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
  156. package/skills-library/cms-patterns/mdx-component-content.md +649 -0
  157. package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
  158. package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
  159. package/skills-library/complexity-metrics/complexity-divider.md +707 -0
  160. package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
  161. package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
  162. package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
  163. package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
  164. package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
  165. package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
  166. package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
  167. package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
  168. package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
  169. package/skills-library/creative-multimedia/og-image-generator.md +635 -0
  170. package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
  171. package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
  172. package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
  173. package/skills-library/creative-multimedia/svg-generation.md +750 -0
  174. package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
  175. package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
  176. package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
  177. package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
  178. package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
  179. package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
  180. package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
  181. package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
  182. package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
  183. package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
  184. package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
  185. package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
  186. package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
  187. package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
  188. package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
  189. package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
  190. package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
  191. package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
  192. package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
  193. package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
  194. package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
  195. package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
  196. package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
  197. package/skills-library/database-solutions/content-publishing-states.md +631 -0
  198. package/skills-library/database-solutions/database-schema-designer.md +522 -0
  199. package/skills-library/database-solutions/er-diagram-components.md +569 -0
  200. package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
  201. package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
  202. package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
  203. package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
  204. package/skills-library/database-solutions/normalization-validator.md +778 -0
  205. package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
  206. package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
  207. package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
  208. package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
  209. package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
  210. package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
  211. package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
  212. package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
  213. package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
  214. package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
  215. package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
  216. package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
  217. package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
  218. package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
  219. package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
  220. package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
  221. package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
  222. package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
  223. package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
  224. package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
  225. package/skills-library/deployment-security/SECURITY.md +41 -0
  226. package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
  227. package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
  228. package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
  229. package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
  230. package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
  231. package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
  232. package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
  233. package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
  234. package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
  235. package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
  236. package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
  237. package/skills-library/deployment-security/vps-deployment.md +135 -0
  238. package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
  239. package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
  240. package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
  241. package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
  242. package/skills-library/document-processing/md-to-word-converter.md +318 -0
  243. package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
  244. package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
  245. package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
  246. package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
  247. package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
  248. package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
  249. package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
  250. package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
  251. package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
  252. package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
  253. package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
  254. package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
  255. package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
  256. package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
  257. package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
  258. package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
  259. package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
  260. package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
  261. package/skills-library/ecommerce/inventory-stock-management.md +270 -0
  262. package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
  263. package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
  264. package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
  265. package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
  266. package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
  267. package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
  268. package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
  269. package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
  270. package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
  271. package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
  272. package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
  273. package/skills-library/excalidraw-diagrams/LICENSE +21 -0
  274. package/skills-library/excalidraw-diagrams/README.md +178 -0
  275. package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
  276. package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
  277. package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
  278. package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
  279. package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
  280. package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
  281. package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
  282. package/skills-library/infrastructure/observability-designer.md +264 -0
  283. package/skills-library/infrastructure/performance-profiler.md +621 -0
  284. package/skills-library/installer-wizard-patterns.md +249 -0
  285. package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
  286. package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
  287. package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
  288. package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
  289. package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  290. package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
  291. package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  292. package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  293. package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  294. package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  295. package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
  296. package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
  297. package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
  298. package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
  299. package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
  300. package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
  301. package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
  302. package/skills-library/integrations/headless-cms-architecture.md +484 -0
  303. package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
  304. package/skills-library/integrations/payload-cms-patterns.md +674 -0
  305. package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
  306. package/skills-library/integrations/rss-podcast-integration.md +300 -0
  307. package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  308. package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
  309. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  310. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  311. package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  312. package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  313. package/skills-library/marketing/campaign-analytics.md +97 -0
  314. package/skills-library/marketing/content-creator.md +105 -0
  315. package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
  316. package/skills-library/marketing/social-media-analyzer.md +81 -0
  317. package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
  318. package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
  319. package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
  320. package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
  321. package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
  322. package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
  323. package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
  324. package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
  325. package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
  326. package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
  327. package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
  328. package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
  329. package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
  330. package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
  331. package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
  332. package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
  333. package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
  334. package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
  335. package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
  336. package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
  337. package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
  338. package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
  339. package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
  340. package/skills-library/methodology/tech-debt-tracker.md +570 -0
  341. package/skills-library/parallel-debug/SKILL.md +60 -0
  342. package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
  343. package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
  344. package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
  345. package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
  346. package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
  347. package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
  348. package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
  349. package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
  350. package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
  351. package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
  352. package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
  353. package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
  354. package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
  355. package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
  356. package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
  357. package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
  358. package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
  359. package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
  360. package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
  361. package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
  362. package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
  363. package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
  364. package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
  365. package/skills-library/security/admin-deletion-safety.md +396 -0
  366. package/skills-library/security/application-vuln-patterns.md +477 -0
  367. package/skills-library/security/env-secrets-manager.md +686 -0
  368. package/skills-library/security/secure-ai-application-templates.md +347 -0
  369. package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
  370. package/skills-library/supabase-connection-pooler-fix.md +102 -0
  371. package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
  372. package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
  373. package/skills-library/system-context/SKILL.md +40 -0
  374. package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
  375. package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
  376. package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
  377. package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
  378. package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
  379. package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
  380. package/skills-library/testing/playwright-api-security-tests.md +202 -0
  381. package/skills-library/toolbox/SKILL.md +84 -0
  382. package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
  383. package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
  384. package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
  385. package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
  386. package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
  387. package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
  388. package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
  389. package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
  390. package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
  391. package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
  392. package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
  393. package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  394. package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  395. package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  396. package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  397. package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  398. package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  399. package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  400. package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  401. package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
  402. package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  403. package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  404. package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  405. package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  406. package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
  407. package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
  408. package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  409. package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  410. package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
  411. package/skills-library/wordpress-style-theme-components.md +1526 -0
  412. package/templates/ASSUMPTIONS.md +1 -1
  413. package/templates/DECISION_LOG.md +0 -1
  414. package/templates/phase-prompt.md +1 -1
  415. package/templates/phoenix-comparison.md +6 -6
  416. package/templates/skill-api-integration.md +106 -0
  417. package/templates/skill-architecture-pattern.md +92 -0
  418. package/templates/skill-debug-pattern.md +98 -0
  419. package/templates/skill-devops-recipe.md +107 -0
  420. package/templates/skill-general.md +65 -0
  421. package/templates/skill-ui-component.md +113 -0
  422. package/tools/uat-runner.py +179 -0
  423. package/version.json +7 -3
  424. package/workflows/handoff-session.md +2 -2
  425. package/workflows/new-project.md +2 -2
  426. package/workflows/plan-phase.md +1 -1
  427. package/.claude-plugin/plugin.json +0 -64
  428. package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +0 -242
  429. package/skills-library/_general/methodology/llm-judge-memory-crud.md +0 -241
  430. package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +0 -183
  431. package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +0 -263
  432. package/skills-library/methodology/SABBATH_REST_PATTERN.md +0 -267
  433. package/skills-library/methodology/STONE_AND_SCAFFOLD.md +0 -220
  434. package/skills-library/specialists/api-architecture/api-designer.md +0 -49
  435. package/skills-library/specialists/api-architecture/graphql-architect.md +0 -49
  436. package/skills-library/specialists/api-architecture/mcp-developer.md +0 -51
  437. package/skills-library/specialists/api-architecture/microservices-architect.md +0 -50
  438. package/skills-library/specialists/api-architecture/websocket-engineer.md +0 -48
  439. package/skills-library/specialists/backend/django-expert.md +0 -52
  440. package/skills-library/specialists/backend/fastapi-expert.md +0 -52
  441. package/skills-library/specialists/backend/laravel-specialist.md +0 -52
  442. package/skills-library/specialists/backend/nestjs-expert.md +0 -51
  443. package/skills-library/specialists/backend/rails-expert.md +0 -53
  444. package/skills-library/specialists/backend/spring-boot-engineer.md +0 -56
  445. package/skills-library/specialists/data-ml/fine-tuning-expert.md +0 -48
  446. package/skills-library/specialists/data-ml/ml-pipeline.md +0 -47
  447. package/skills-library/specialists/data-ml/pandas-pro.md +0 -47
  448. package/skills-library/specialists/data-ml/rag-architect.md +0 -51
  449. package/skills-library/specialists/data-ml/spark-engineer.md +0 -47
  450. package/skills-library/specialists/frontend/angular-architect.md +0 -52
  451. package/skills-library/specialists/frontend/flutter-expert.md +0 -51
  452. package/skills-library/specialists/frontend/nextjs-developer.md +0 -54
  453. package/skills-library/specialists/frontend/react-native-expert.md +0 -50
  454. package/skills-library/specialists/frontend/vue-expert.md +0 -51
  455. package/skills-library/specialists/infrastructure/chaos-engineer.md +0 -74
  456. package/skills-library/specialists/infrastructure/cloud-architect.md +0 -70
  457. package/skills-library/specialists/infrastructure/database-optimizer.md +0 -64
  458. package/skills-library/specialists/infrastructure/devops-engineer.md +0 -70
  459. package/skills-library/specialists/infrastructure/kubernetes-specialist.md +0 -52
  460. package/skills-library/specialists/infrastructure/monitoring-expert.md +0 -70
  461. package/skills-library/specialists/infrastructure/sre-engineer.md +0 -70
  462. package/skills-library/specialists/infrastructure/terraform-engineer.md +0 -51
  463. package/skills-library/specialists/languages/cpp-pro.md +0 -74
  464. package/skills-library/specialists/languages/csharp-developer.md +0 -69
  465. package/skills-library/specialists/languages/dotnet-core-expert.md +0 -54
  466. package/skills-library/specialists/languages/golang-pro.md +0 -51
  467. package/skills-library/specialists/languages/java-architect.md +0 -49
  468. package/skills-library/specialists/languages/javascript-pro.md +0 -68
  469. package/skills-library/specialists/languages/kotlin-specialist.md +0 -68
  470. package/skills-library/specialists/languages/php-pro.md +0 -49
  471. package/skills-library/specialists/languages/python-pro.md +0 -52
  472. package/skills-library/specialists/languages/react-expert.md +0 -51
  473. package/skills-library/specialists/languages/rust-engineer.md +0 -50
  474. package/skills-library/specialists/languages/sql-pro.md +0 -56
  475. package/skills-library/specialists/languages/swift-expert.md +0 -69
  476. package/skills-library/specialists/languages/typescript-pro.md +0 -51
  477. package/skills-library/specialists/platform/atlassian-mcp.md +0 -52
  478. package/skills-library/specialists/platform/embedded-systems.md +0 -53
  479. package/skills-library/specialists/platform/game-developer.md +0 -53
  480. package/skills-library/specialists/platform/salesforce-developer.md +0 -53
  481. package/skills-library/specialists/platform/shopify-expert.md +0 -49
  482. package/skills-library/specialists/platform/wordpress-pro.md +0 -49
  483. package/skills-library/specialists/quality/code-documenter.md +0 -51
  484. package/skills-library/specialists/quality/code-reviewer.md +0 -67
  485. package/skills-library/specialists/quality/debugging-wizard.md +0 -51
  486. package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
  487. package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
  488. package/skills-library/specialists/quality/playwright-expert.md +0 -65
  489. package/skills-library/specialists/quality/spec-miner.md +0 -56
  490. package/skills-library/specialists/quality/test-master.md +0 -65
  491. package/skills-library/specialists/security/secure-code-guardian.md +0 -55
  492. package/skills-library/specialists/security/security-reviewer.md +0 -53
  493. package/skills-library/specialists/workflow/architecture-designer.md +0 -53
  494. package/skills-library/specialists/workflow/cli-developer.md +0 -70
  495. package/skills-library/specialists/workflow/feature-forge.md +0 -65
  496. package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
  497. package/skills-library/specialists/workflow/the-fool.md +0 -62
  498. /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
  499. /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
  500. /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
@@ -0,0 +1,559 @@
1
+ # Video Streaming Integration
2
+ **Description:** Complete guide for adding video streaming to web applications. Covers Mux (managed), self-hosted HLS with FFmpeg, DRM basics, progress tracking, adaptive bitrate, and Cloudflare Stream.
3
+
4
+ **When to use:** Any project that needs video playback beyond a simple `<video>` tag — course platforms, media sites, live streaming, video-on-demand with adaptive quality, DRM-protected content, or resume-from-position functionality.
5
+
6
+ ---
7
+
8
+ ## Path A: Mux (Recommended for Most Projects)
9
+
10
+ Mux is a video API platform ("Stripe of video") — handles encoding, storage, delivery, and analytics. Best choice when you want to ship fast and not manage infrastructure.
11
+
12
+ Install: `npm install @mux/mux-node @mux/mux-player-react`
13
+
14
+ ### 1. Upload and Create Asset (Server)
15
+
16
+ ```ts
17
+ // server/services/mux.ts
18
+ import Mux from "@mux/mux-node";
19
+
20
+ const mux = new Mux({
21
+ tokenId: process.env.MUX_TOKEN_ID!,
22
+ tokenSecret: process.env.MUX_TOKEN_SECRET!,
23
+ });
24
+
25
+ // Upload from a URL (e.g., after user uploads to S3/R2)
26
+ export async function createAssetFromUrl(videoUrl: string) {
27
+ const asset = await mux.video.assets.create({
28
+ input: [{ url: videoUrl }],
29
+ playback_policy: ["public"], // or "signed" for private content
30
+ encoding_tier: "smart", // smart = faster + cheaper, baseline = premium quality
31
+ max_resolution_tier: "1080p",
32
+ });
33
+
34
+ return {
35
+ assetId: asset.id,
36
+ playbackId: asset.playback_ids?.[0]?.id,
37
+ status: asset.status, // "preparing" → "ready"
38
+ };
39
+ }
40
+
41
+ // Direct upload — returns a URL the client can PUT to
42
+ export async function createDirectUpload() {
43
+ const upload = await mux.video.uploads.create({
44
+ cors_origin: process.env.APP_URL,
45
+ new_asset_settings: {
46
+ playback_policy: ["public"],
47
+ encoding_tier: "smart",
48
+ },
49
+ });
50
+
51
+ return {
52
+ uploadId: upload.id,
53
+ uploadUrl: upload.url, // Client uploads directly here via PUT
54
+ };
55
+ }
56
+ ```
57
+
58
+ ### 2. Client-Side Direct Upload
59
+
60
+ ```ts
61
+ // client/services/upload.ts
62
+ import * as UpChunk from "@mux/upchunk";
63
+
64
+ export function uploadVideo(
65
+ file: File,
66
+ uploadUrl: string,
67
+ onProgress: (pct: number) => void
68
+ ) {
69
+ const upload = UpChunk.createUpload({
70
+ endpoint: uploadUrl,
71
+ file,
72
+ chunkSize: 5120, // 5MB chunks
73
+ });
74
+
75
+ upload.on("progress", (detail) => {
76
+ onProgress(Math.round(detail.detail));
77
+ });
78
+
79
+ return new Promise<void>((resolve, reject) => {
80
+ upload.on("success", () => resolve());
81
+ upload.on("error", (err) => reject(err.detail));
82
+ });
83
+ }
84
+ ```
85
+
86
+ ### 3. Webhook Handling (Server)
87
+
88
+ ```ts
89
+ // server/routes/webhooks/mux.ts
90
+ import { type Request, type Response } from "express";
91
+ import Mux from "@mux/mux-node";
92
+
93
+ const webhooks = new Mux.Webhooks();
94
+
95
+ export async function handleMuxWebhook(req: Request, res: Response) {
96
+ const event = webhooks.unwrap(
97
+ req.body,
98
+ req.headers,
99
+ process.env.MUX_WEBHOOK_SECRET!
100
+ );
101
+
102
+ switch (event.type) {
103
+ case "video.asset.ready": {
104
+ const asset = event.data;
105
+ const playbackId = asset.playback_ids?.[0]?.id;
106
+ const duration = asset.duration; // seconds
107
+
108
+ // Update your database
109
+ await db.videos.update({
110
+ where: { muxAssetId: asset.id },
111
+ data: { status: "ready", playbackId, duration },
112
+ });
113
+ break;
114
+ }
115
+
116
+ case "video.asset.errored": {
117
+ const asset = event.data;
118
+ await db.videos.update({
119
+ where: { muxAssetId: asset.id },
120
+ data: { status: "error", errorMessage: JSON.stringify(asset.errors) },
121
+ });
122
+ break;
123
+ }
124
+
125
+ case "video.asset.deleted": {
126
+ // Clean up local references
127
+ break;
128
+ }
129
+ }
130
+
131
+ res.sendStatus(200);
132
+ }
133
+ ```
134
+
135
+ ### 4. Embed with Mux Player (React)
136
+
137
+ ```tsx
138
+ // client/components/VideoPlayer.tsx
139
+ import MuxPlayer from "@mux/mux-player-react";
140
+
141
+ interface VideoPlayerProps {
142
+ playbackId: string;
143
+ title: string;
144
+ onTimeUpdate?: (currentTime: number) => void;
145
+ startTime?: number;
146
+ }
147
+
148
+ export function VideoPlayer({ playbackId, title, onTimeUpdate, startTime }: VideoPlayerProps) {
149
+ return (
150
+ <MuxPlayer
151
+ playbackId={playbackId}
152
+ metadata={{
153
+ video_title: title,
154
+ viewer_user_id: "user-123", // for Mux Data analytics
155
+ }}
156
+ startTime={startTime}
157
+ accentColor="#7c3aed"
158
+ thumbnailTime={10}
159
+ onTimeUpdate={(e) => {
160
+ const target = e.target as HTMLVideoElement;
161
+ onTimeUpdate?.(target.currentTime);
162
+ }}
163
+ style={{ aspectRatio: "16/9", width: "100%" }}
164
+ />
165
+ );
166
+ }
167
+ ```
168
+
169
+ ### 5. Auto-Generated Captions
170
+
171
+ ```ts
172
+ // Request auto-generated captions when creating the asset
173
+ const asset = await mux.video.assets.create({
174
+ input: [{ url: videoUrl }],
175
+ playback_policy: ["public"],
176
+ auto_generated_captions: [
177
+ {
178
+ language_code: "en",
179
+ name: "English (auto)",
180
+ },
181
+ ],
182
+ });
183
+
184
+ // Captions become available via the standard <track> mechanism in Mux Player
185
+ // No additional client-side code needed — Mux Player handles it automatically
186
+ ```
187
+
188
+ ### 6. Signed URLs for Private Content
189
+
190
+ ```ts
191
+ // server/services/mux.ts
192
+ import jwt from "jsonwebtoken";
193
+
194
+ const MUX_SIGNING_KEY_ID = process.env.MUX_SIGNING_KEY_ID!;
195
+ const MUX_SIGNING_PRIVATE_KEY = Buffer.from(
196
+ process.env.MUX_SIGNING_PRIVATE_KEY_BASE64!,
197
+ "base64"
198
+ ).toString("ascii");
199
+
200
+ export function getSignedPlaybackToken(playbackId: string, expiresInSec = 3600) {
201
+ return jwt.sign(
202
+ {
203
+ sub: playbackId,
204
+ aud: "v", // "v" for video, "t" for thumbnail, "s" for storyboard
205
+ exp: Math.floor(Date.now() / 1000) + expiresInSec,
206
+ kid: MUX_SIGNING_KEY_ID,
207
+ },
208
+ MUX_SIGNING_PRIVATE_KEY,
209
+ { algorithm: "RS256" }
210
+ );
211
+ }
212
+ ```
213
+
214
+ ```tsx
215
+ // Client: pass token to Mux Player
216
+ <MuxPlayer
217
+ playbackId={playbackId}
218
+ tokens={{
219
+ playback: signedToken,
220
+ thumbnail: thumbnailToken,
221
+ storyboard: storyboardToken,
222
+ }}
223
+ />
224
+ ```
225
+
226
+ ### Mux Pricing Reference (2025)
227
+
228
+ | Feature | Cost |
229
+ |---------|------|
230
+ | Video encoding | $0.015/min |
231
+ | Video storage | $0.0055/GB/mo |
232
+ | Video delivery | $0.00096/min (streaming) |
233
+ | Live streaming | $0.025/min (encoding) |
234
+
235
+ ---
236
+
237
+ ## Path B: Self-Hosted HLS (Full Control)
238
+
239
+ Use when: you need full control over infrastructure, have existing CDN/storage, or need to minimize per-minute costs at scale.
240
+
241
+ ### FFmpeg: Generate HLS with Multiple Renditions
242
+
243
+ ```bash
244
+ #!/bin/bash
245
+ # transcode.sh — Generate adaptive bitrate HLS from any input video
246
+
247
+ INPUT="$1"
248
+ OUTPUT_DIR="$2"
249
+
250
+ mkdir -p "$OUTPUT_DIR/360p" "$OUTPUT_DIR/720p" "$OUTPUT_DIR/1080p"
251
+
252
+ ffmpeg -i "$INPUT" \
253
+ -map 0:v -map 0:a -map 0:v -map 0:a -map 0:v -map 0:a \
254
+ \
255
+ -c:v:0 libx264 -b:v:0 800k -maxrate:v:0 856k -bufsize:v:0 1200k -s:v:0 640x360 -profile:v:0 main -level 3.0 \
256
+ -c:v:1 libx264 -b:v:1 2500k -maxrate:v:1 2800k -bufsize:v:1 4200k -s:v:1 1280x720 -profile:v:1 main -level 3.1 \
257
+ -c:v:2 libx264 -b:v:2 5000k -maxrate:v:2 5500k -bufsize:v:2 8000k -s:v:2 1920x1080 -profile:v:2 high -level 4.0 \
258
+ \
259
+ -c:a aac -b:a 128k -ar 48000 \
260
+ \
261
+ -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2" \
262
+ -master_pl_name master.m3u8 \
263
+ -f hls \
264
+ -hls_time 6 \
265
+ -hls_list_size 0 \
266
+ -hls_segment_filename "$OUTPUT_DIR/%v/seg%03d.ts" \
267
+ "$OUTPUT_DIR/%v/index.m3u8"
268
+
269
+ echo "Done. Master playlist: $OUTPUT_DIR/master.m3u8"
270
+ ```
271
+
272
+ ### Bitrate Ladder Recommendations
273
+
274
+ | Rendition | Resolution | Video Bitrate | Audio | Use Case |
275
+ |-----------|-----------|---------------|-------|----------|
276
+ | 360p | 640x360 | 800 kbps | 96k | Mobile / slow connections |
277
+ | 720p | 1280x720 | 2,500 kbps | 128k | Default / most devices |
278
+ | 1080p | 1920x1080 | 5,000 kbps | 192k | Desktop / high bandwidth |
279
+
280
+ ### HLS.js Player Integration
281
+
282
+ ```tsx
283
+ // client/components/HlsPlayer.tsx
284
+ import { useEffect, useRef } from "react";
285
+ import Hls from "hls.js";
286
+
287
+ interface HlsPlayerProps {
288
+ src: string; // URL to master.m3u8
289
+ startTime?: number;
290
+ onTimeUpdate?: (time: number) => void;
291
+ }
292
+
293
+ export function HlsPlayer({ src, startTime, onTimeUpdate }: HlsPlayerProps) {
294
+ const videoRef = useRef<HTMLVideoElement>(null);
295
+ const hlsRef = useRef<Hls | null>(null);
296
+
297
+ useEffect(() => {
298
+ const video = videoRef.current;
299
+ if (!video) return;
300
+
301
+ if (Hls.isSupported()) {
302
+ const hls = new Hls({
303
+ startLevel: -1, // auto-detect best quality
304
+ capLevelToPlayerSize: true, // don't load 1080p on a 360px container
305
+ });
306
+
307
+ hls.loadSource(src);
308
+ hls.attachMedia(video);
309
+
310
+ hls.on(Hls.Events.MANIFEST_PARSED, () => {
311
+ if (startTime) video.currentTime = startTime;
312
+ video.play().catch(() => {}); // autoplay may be blocked
313
+ });
314
+
315
+ hls.on(Hls.Events.ERROR, (_, data) => {
316
+ if (data.fatal) {
317
+ switch (data.type) {
318
+ case Hls.ErrorTypes.NETWORK_ERROR:
319
+ hls.startLoad(); // retry
320
+ break;
321
+ case Hls.ErrorTypes.MEDIA_ERROR:
322
+ hls.recoverMediaError();
323
+ break;
324
+ default:
325
+ hls.destroy();
326
+ break;
327
+ }
328
+ }
329
+ });
330
+
331
+ hlsRef.current = hls;
332
+ return () => hls.destroy();
333
+ } else if (video.canPlayType("application/vnd.apple.mpegurl")) {
334
+ // Safari: native HLS support
335
+ video.src = src;
336
+ if (startTime) video.currentTime = startTime;
337
+ }
338
+ }, [src, startTime]);
339
+
340
+ return (
341
+ <video
342
+ ref={videoRef}
343
+ controls
344
+ style={{ width: "100%", aspectRatio: "16/9" }}
345
+ onTimeUpdate={() => {
346
+ if (videoRef.current) onTimeUpdate?.(videoRef.current.currentTime);
347
+ }}
348
+ />
349
+ );
350
+ }
351
+ ```
352
+
353
+ ### Serving from S3 / MinIO
354
+
355
+ ```ts
356
+ // server/routes/video.ts
357
+ import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
358
+ import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
359
+
360
+ const s3 = new S3Client({
361
+ endpoint: process.env.S3_ENDPOINT, // MinIO: "http://localhost:9000"
362
+ region: process.env.S3_REGION || "us-east-1",
363
+ credentials: {
364
+ accessKeyId: process.env.S3_ACCESS_KEY!,
365
+ secretAccessKey: process.env.S3_SECRET_KEY!,
366
+ },
367
+ forcePathStyle: true, // Required for MinIO
368
+ });
369
+
370
+ export async function getVideoPlaylistUrl(videoId: string) {
371
+ const command = new GetObjectCommand({
372
+ Bucket: "videos",
373
+ Key: `${videoId}/master.m3u8`,
374
+ });
375
+
376
+ // Signed URL expires in 4 hours
377
+ return getSignedUrl(s3, command, { expiresIn: 14400 });
378
+ }
379
+ ```
380
+
381
+ **CORS for HLS segments:** When serving from S3/MinIO, configure CORS to allow your domain to fetch `.m3u8` and `.ts` files. The player makes cross-origin requests for each segment.
382
+
383
+ ---
384
+
385
+ ## DRM Basics
386
+
387
+ DRM is needed when: you have premium paid content, licensing agreements require it, or you must prevent screen recording and redistribution.
388
+
389
+ ### Overview
390
+
391
+ | DRM System | Browser / Platform | License Server |
392
+ |---|---|---|
393
+ | Widevine (Google) | Chrome, Firefox, Android, Smart TVs | Google or self-hosted (Shaka Packager) |
394
+ | FairPlay (Apple) | Safari, iOS, tvOS | Apple-provided, self-hosted key server |
395
+ | PlayReady (Microsoft) | Edge, Xbox, Windows apps | Microsoft or self-hosted |
396
+
397
+ ### Simplified Flow
398
+
399
+ ```
400
+ 1. Client requests playback → Server returns encrypted HLS/DASH manifest
401
+ 2. Player detects DRM → Requests license from your license server
402
+ 3. License server validates user → Returns decryption key
403
+ 4. Player decrypts and plays segments in real-time
404
+ ```
405
+
406
+ ### Recommendation
407
+
408
+ For most projects, use a DRM vendor (Mux, BuyDRM, PallyCon, Axinom) rather than implementing from scratch. Mux handles Widevine + FairPlay automatically when you set `playback_policy: ["signed"]`.
409
+
410
+ ---
411
+
412
+ ## Progress Tracking — Resume from Last Position
413
+
414
+ ```tsx
415
+ // client/hooks/useVideoProgress.ts
416
+ import { useCallback, useRef } from "react";
417
+
418
+ const SAVE_INTERVAL_MS = 5000; // Save every 5 seconds
419
+
420
+ export function useVideoProgress(videoId: string, userId: string) {
421
+ const lastSaved = useRef(0);
422
+
423
+ const saveProgress = useCallback(
424
+ async (currentTime: number, duration: number) => {
425
+ const now = Date.now();
426
+ if (now - lastSaved.current < SAVE_INTERVAL_MS) return;
427
+ lastSaved.current = now;
428
+
429
+ const progress = duration > 0 ? currentTime / duration : 0;
430
+
431
+ await fetch("/api/video-progress", {
432
+ method: "PUT",
433
+ headers: { "Content-Type": "application/json" },
434
+ body: JSON.stringify({
435
+ videoId,
436
+ userId,
437
+ currentTime: Math.floor(currentTime),
438
+ progress: Math.round(progress * 100), // 0-100
439
+ completed: progress >= 0.9, // Mark complete at 90%
440
+ }),
441
+ });
442
+ },
443
+ [videoId, userId]
444
+ );
445
+
446
+ const loadProgress = useCallback(async () => {
447
+ const res = await fetch(`/api/video-progress?videoId=${videoId}&userId=${userId}`);
448
+ if (!res.ok) return 0;
449
+ const data = await res.json();
450
+ return data.currentTime ?? 0;
451
+ }, [videoId, userId]);
452
+
453
+ return { saveProgress, loadProgress };
454
+ }
455
+ ```
456
+
457
+ ```ts
458
+ // server/routes/video-progress.ts — Database schema (Supabase/PostgreSQL)
459
+ /*
460
+ CREATE TABLE video_progress (
461
+ id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
462
+ user_id UUID REFERENCES users(id) NOT NULL,
463
+ video_id UUID REFERENCES videos(id) NOT NULL,
464
+ current_time INTEGER DEFAULT 0, -- seconds
465
+ progress INTEGER DEFAULT 0, -- 0-100 percent
466
+ completed BOOLEAN DEFAULT FALSE,
467
+ updated_at TIMESTAMPTZ DEFAULT NOW(),
468
+ UNIQUE(user_id, video_id)
469
+ );
470
+
471
+ CREATE INDEX idx_video_progress_user ON video_progress(user_id);
472
+ */
473
+ ```
474
+
475
+ ---
476
+
477
+ ## Adaptive Bitrate (ABR) — How It Works
478
+
479
+ ABR automatically adjusts video quality based on the viewer's network conditions:
480
+
481
+ 1. **Master playlist** lists available renditions (360p, 720p, 1080p)
482
+ 2. **Player downloads a segment** and measures download speed
483
+ 3. **ABR algorithm** compares available bandwidth to rendition bitrates
484
+ 4. **Player switches** to the highest quality the network can sustain without buffering
485
+
486
+ **Key settings in HLS.js:**
487
+
488
+ ```ts
489
+ const hls = new Hls({
490
+ startLevel: -1, // -1 = auto-detect, 0 = start at lowest
491
+ capLevelToPlayerSize: true, // Don't load 1080p if player is 360px wide
492
+ maxBufferLength: 30, // Buffer up to 30 seconds ahead
493
+ maxMaxBufferLength: 60, // Hard cap on buffer
494
+ abrEwmaDefaultEstimate: 500000, // Initial bandwidth estimate (bps)
495
+ });
496
+ ```
497
+
498
+ **When to use ABR:** Always, for any video over 30 seconds. Single-rendition is only acceptable for short clips or controlled LAN environments.
499
+
500
+ ---
501
+
502
+ ## Cloudflare Stream (Simpler Alternative)
503
+
504
+ Cloudflare Stream is a good middle ground — simpler than DIY HLS, cheaper than Mux at scale.
505
+
506
+ ```ts
507
+ // Upload via API
508
+ const response = await fetch(
509
+ `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/stream`,
510
+ {
511
+ method: "POST",
512
+ headers: {
513
+ Authorization: `Bearer ${CF_API_TOKEN}`,
514
+ },
515
+ body: JSON.stringify({
516
+ url: "https://your-bucket.s3.amazonaws.com/video.mp4",
517
+ }),
518
+ }
519
+ );
520
+
521
+ const { result } = await response.json();
522
+ // result.uid = video ID
523
+ // result.playback.hls = HLS URL
524
+ // result.playback.dash = DASH URL
525
+ ```
526
+
527
+ ```tsx
528
+ // Embed with iframe (simplest)
529
+ <iframe
530
+ src={`https://customer-${SUBDOMAIN}.cloudflarestream.com/${videoUid}/iframe`}
531
+ allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
532
+ allowFullScreen
533
+ style={{ border: "none", width: "100%", aspectRatio: "16/9" }}
534
+ />
535
+
536
+ // Or use Stream Player Web Component
537
+ // <script src="https://embed.cloudflarestream.com/embed/sdk.latest.js" />
538
+ <stream src={videoUid} controls />
539
+ ```
540
+
541
+ **Cloudflare Stream pricing (2025):** $1/1000 min stored + $1/1000 min delivered. No encoding fees.
542
+
543
+ ---
544
+
545
+ ## Quick Decision Matrix
546
+
547
+ | Factor | Mux | Self-hosted HLS | Cloudflare Stream |
548
+ |--------|-----|-----------------|-------------------|
549
+ | Setup time | 1 hour | 1-2 days | 2 hours |
550
+ | Encoding | Managed | You run FFmpeg | Managed |
551
+ | CDN | Included | BYO (S3+CF) | Included |
552
+ | DRM | Built-in (signed URLs) | DIY | Token auth |
553
+ | Analytics | Mux Data (detailed) | DIY | Basic |
554
+ | Cost at 10K views/mo | ~$15 | ~$5 (infra) | ~$10 |
555
+ | Cost at 1M views/mo | ~$1,500 | ~$200 (infra + CDN) | ~$1,000 |
556
+ | Best for | Most projects, fast ship | High scale, full control | Mid-range, Cloudflare stack |
557
+
558
+ ---
559
+