@vodailoc/kilo-kit-mcp 1.1.0 → 1.2.0
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.
- package/.mcp/kilo-kit.codex-windows.toml +5 -0
- package/LICENSE +190 -190
- package/QUICKSTART.md +265 -255
- package/README.md +321 -267
- package/mcp/README.md +64 -12
- package/mcp/dist/formatters.js +142 -1
- package/mcp/dist/orchestration-audit.js +20 -0
- package/mcp/dist/orchestration-memory.js +258 -0
- package/mcp/dist/orchestration-types.js +1 -0
- package/mcp/dist/orchestrator.js +222 -0
- package/mcp/dist/question-templates.js +249 -0
- package/mcp/dist/route-analytics.js +149 -0
- package/mcp/dist/router.js +75 -82
- package/mcp/dist/routing-policy-data.js +241 -0
- package/mcp/dist/routing-policy.js +145 -0
- package/mcp/dist/server.js +93 -4
- package/mcp/dist/smoke-env.js +18 -0
- package/mcp/dist/smoke.js +68 -1
- package/mcp/package.json +1 -2
- package/package.json +3 -2
- package/skills/README.md +647 -647
- package/skills/SKILLS_INDEX.md +139 -139
- package/skills/ai-media/ai-multimodal/.env.example +97 -97
- package/skills/ai-media/ai-multimodal/SKILL.md +357 -357
- package/skills/ai-media/ai-multimodal/references/audio-processing.md +373 -373
- package/skills/ai-media/ai-multimodal/references/image-generation.md +558 -558
- package/skills/ai-media/ai-multimodal/references/video-analysis.md +502 -502
- package/skills/ai-media/ai-multimodal/references/vision-understanding.md +483 -483
- package/skills/ai-media/ai-multimodal/scripts/document_converter.py +395 -395
- package/skills/ai-media/ai-multimodal/scripts/gemini_batch_process.py +480 -480
- package/skills/ai-media/ai-multimodal/scripts/media_optimizer.py +506 -506
- package/skills/ai-media/ai-multimodal/scripts/requirements.txt +26 -26
- package/skills/ai-media/ai-multimodal/scripts/tests/requirements.txt +20 -20
- package/skills/ai-media/ai-multimodal/scripts/tests/test_document_converter.py +299 -299
- package/skills/ai-media/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -362
- package/skills/ai-media/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -373
- package/skills/ai-media/media-processing/SKILL.md +358 -358
- package/skills/ai-media/media-processing/references/ffmpeg-encoding.md +358 -358
- package/skills/ai-media/media-processing/references/ffmpeg-filters.md +503 -503
- package/skills/ai-media/media-processing/references/ffmpeg-streaming.md +403 -403
- package/skills/ai-media/media-processing/references/format-compatibility.md +375 -375
- package/skills/ai-media/media-processing/references/imagemagick-batch.md +612 -612
- package/skills/ai-media/media-processing/references/imagemagick-editing.md +623 -623
- package/skills/ai-media/media-processing/scripts/batch_resize.py +342 -342
- package/skills/ai-media/media-processing/scripts/media_convert.py +311 -311
- package/skills/ai-media/media-processing/scripts/requirements.txt +24 -24
- package/skills/ai-media/media-processing/scripts/tests/requirements.txt +2 -2
- package/skills/ai-media/media-processing/scripts/tests/test_batch_resize.py +372 -372
- package/skills/ai-media/media-processing/scripts/tests/test_media_convert.py +259 -259
- package/skills/ai-media/media-processing/scripts/tests/test_video_optimize.py +397 -397
- package/skills/ai-media/media-processing/scripts/video_optimize.py +414 -414
- package/skills/ai-media/screenshot/LICENSE.txt +201 -201
- package/skills/ai-media/screenshot/SKILL.md +267 -267
- package/skills/ai-media/screenshot/agents/openai.yaml +6 -6
- package/skills/ai-media/screenshot/assets/screenshot-small.svg +5 -5
- package/skills/ai-media/screenshot/scripts/ensure_macos_permissions.sh +54 -54
- package/skills/ai-media/screenshot/scripts/macos_display_info.swift +22 -22
- package/skills/ai-media/screenshot/scripts/macos_permissions.swift +40 -40
- package/skills/ai-media/screenshot/scripts/macos_window_info.swift +126 -126
- package/skills/ai-media/screenshot/scripts/take_screenshot.ps1 +163 -163
- package/skills/ai-media/screenshot/scripts/take_screenshot.py +585 -585
- package/skills/ai-media/sora/LICENSE.txt +201 -201
- package/skills/ai-media/sora/SKILL.md +153 -153
- package/skills/ai-media/sora/agents/openai.yaml +6 -6
- package/skills/ai-media/sora/assets/sora-small.svg +4 -4
- package/skills/ai-media/sora/references/cinematic-shots.md +53 -53
- package/skills/ai-media/sora/references/cli.md +248 -248
- package/skills/ai-media/sora/references/codex-network.md +28 -28
- package/skills/ai-media/sora/references/prompting.md +137 -137
- package/skills/ai-media/sora/references/sample-prompts.md +95 -95
- package/skills/ai-media/sora/references/social-ads.md +42 -42
- package/skills/ai-media/sora/references/troubleshooting.md +58 -58
- package/skills/ai-media/sora/references/video-api.md +45 -45
- package/skills/ai-media/sora/scripts/sora.py +970 -970
- package/skills/design/aesthetic/SKILL.md +121 -121
- package/skills/design/aesthetic/assets/design-guideline-template.md +163 -163
- package/skills/design/aesthetic/assets/design-story-template.md +135 -135
- package/skills/design/aesthetic/references/design-principles.md +62 -62
- package/skills/design/aesthetic/references/design-resources.md +75 -75
- package/skills/design/aesthetic/references/micro-interactions.md +53 -53
- package/skills/design/aesthetic/references/storytelling-design.md +50 -50
- package/skills/design/figma/LICENSE.txt +202 -202
- package/skills/design/figma/SKILL.md +42 -42
- package/skills/design/figma/agents/openai.yaml +14 -14
- package/skills/design/figma/assets/figma-small.svg +3 -3
- package/skills/design/figma/assets/icon.svg +28 -28
- package/skills/design/figma/references/figma-mcp-config.md +35 -35
- package/skills/design/figma/references/figma-tools-and-prompts.md +34 -34
- package/skills/design/figma-implement-design/LICENSE.txt +202 -202
- package/skills/design/figma-implement-design/SKILL.md +264 -264
- package/skills/design/figma-implement-design/agents/openai.yaml +14 -14
- package/skills/design/figma-implement-design/assets/figma-small.svg +3 -3
- package/skills/design/figma-implement-design/assets/icon.svg +28 -28
- package/skills/design/frontend-design/SKILL.md +41 -41
- package/skills/design/frontend-design/references/animejs.md +395 -395
- package/skills/design/ui-styling/LICENSE.txt +201 -201
- package/skills/design/ui-styling/SKILL.md +321 -321
- package/skills/design/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -94
- package/skills/design/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Jura-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Lora-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -93
- package/skills/design/ui-styling/references/canvas-design-system.md +320 -320
- package/skills/design/ui-styling/references/shadcn-accessibility.md +471 -471
- package/skills/design/ui-styling/references/shadcn-components.md +424 -424
- package/skills/design/ui-styling/references/shadcn-theming.md +373 -373
- package/skills/design/ui-styling/references/tailwind-customization.md +483 -483
- package/skills/design/ui-styling/references/tailwind-responsive.md +382 -382
- package/skills/design/ui-styling/references/tailwind-utilities.md +455 -455
- package/skills/design/ui-styling/scripts/requirements.txt +17 -17
- package/skills/design/ui-styling/scripts/shadcn_add.py +292 -292
- package/skills/design/ui-styling/scripts/tailwind_config_gen.py +456 -456
- package/skills/design/ui-styling/scripts/tests/requirements.txt +3 -3
- package/skills/design/ui-styling/scripts/tests/test_shadcn_add.py +266 -266
- package/skills/design/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -336
- package/skills/engineering/aspnet-core/LICENSE.txt +201 -201
- package/skills/engineering/aspnet-core/SKILL.md +61 -61
- package/skills/engineering/aspnet-core/agents/openai.yaml +5 -5
- package/skills/engineering/aspnet-core/references/_sections.md +40 -40
- package/skills/engineering/aspnet-core/references/apis-minimal-and-controllers.md +81 -81
- package/skills/engineering/aspnet-core/references/data-state-and-services.md +69 -69
- package/skills/engineering/aspnet-core/references/program-and-pipeline.md +103 -103
- package/skills/engineering/aspnet-core/references/realtime-grpc-and-background-work.md +58 -58
- package/skills/engineering/aspnet-core/references/security-and-identity.md +75 -75
- package/skills/engineering/aspnet-core/references/source-map.md +43 -43
- package/skills/engineering/aspnet-core/references/stack-selection.md +63 -63
- package/skills/engineering/aspnet-core/references/testing-performance-and-operations.md +92 -92
- package/skills/engineering/aspnet-core/references/ui-blazor.md +53 -53
- package/skills/engineering/aspnet-core/references/ui-mvc.md +56 -56
- package/skills/engineering/aspnet-core/references/ui-razor-pages.md +55 -55
- package/skills/engineering/aspnet-core/references/versioning-and-upgrades.md +51 -51
- package/skills/engineering/backend-development/SKILL.md +95 -95
- package/skills/engineering/backend-development/references/backend-api-design.md +495 -495
- package/skills/engineering/backend-development/references/backend-architecture.md +454 -454
- package/skills/engineering/backend-development/references/backend-authentication.md +338 -338
- package/skills/engineering/backend-development/references/backend-code-quality.md +659 -659
- package/skills/engineering/backend-development/references/backend-debugging.md +904 -904
- package/skills/engineering/backend-development/references/backend-devops.md +494 -494
- package/skills/engineering/backend-development/references/backend-mindset.md +387 -387
- package/skills/engineering/backend-development/references/backend-performance.md +397 -397
- package/skills/engineering/backend-development/references/backend-security.md +290 -290
- package/skills/engineering/backend-development/references/backend-technologies.md +256 -256
- package/skills/engineering/backend-development/references/backend-testing.md +429 -429
- package/skills/engineering/better-auth/SKILL.md +204 -204
- package/skills/engineering/better-auth/references/advanced-features.md +553 -553
- package/skills/engineering/better-auth/references/database-integration.md +577 -577
- package/skills/engineering/better-auth/references/email-password-auth.md +416 -416
- package/skills/engineering/better-auth/references/oauth-providers.md +430 -430
- package/skills/engineering/better-auth/scripts/better_auth_init.py +521 -521
- package/skills/engineering/better-auth/scripts/requirements.txt +15 -15
- package/skills/engineering/better-auth/scripts/tests/test_better_auth_init.py +421 -421
- package/skills/engineering/code-review/SKILL.md +140 -140
- package/skills/engineering/code-review/references/code-review-reception.md +208 -208
- package/skills/engineering/code-review/references/requesting-code-review.md +104 -104
- package/skills/engineering/code-review/references/verification-before-completion.md +138 -138
- package/skills/engineering/context-engineering/SKILL.md +86 -86
- package/skills/engineering/context-engineering/references/context-compression.md +84 -84
- package/skills/engineering/context-engineering/references/context-degradation.md +93 -93
- package/skills/engineering/context-engineering/references/context-fundamentals.md +75 -75
- package/skills/engineering/context-engineering/references/context-optimization.md +82 -82
- package/skills/engineering/context-engineering/references/evaluation.md +89 -89
- package/skills/engineering/context-engineering/references/memory-systems.md +88 -88
- package/skills/engineering/context-engineering/references/multi-agent-patterns.md +90 -90
- package/skills/engineering/context-engineering/references/project-development.md +97 -97
- package/skills/engineering/context-engineering/references/tool-design.md +86 -86
- package/skills/engineering/context-engineering/scripts/compression_evaluator.py +329 -329
- package/skills/engineering/context-engineering/scripts/context_analyzer.py +294 -294
- package/skills/engineering/databases/SKILL.md +232 -232
- package/skills/engineering/databases/references/mongodb-aggregation.md +447 -447
- package/skills/engineering/databases/references/mongodb-atlas.md +465 -465
- package/skills/engineering/databases/references/mongodb-crud.md +408 -408
- package/skills/engineering/databases/references/mongodb-indexing.md +442 -442
- package/skills/engineering/databases/references/postgresql-administration.md +594 -594
- package/skills/engineering/databases/references/postgresql-performance.md +527 -527
- package/skills/engineering/databases/references/postgresql-psql-cli.md +467 -467
- package/skills/engineering/databases/references/postgresql-queries.md +475 -475
- package/skills/engineering/databases/scripts/db_backup.py +502 -502
- package/skills/engineering/databases/scripts/db_migrate.py +414 -414
- package/skills/engineering/databases/scripts/db_performance_check.py +444 -444
- package/skills/engineering/databases/scripts/requirements.txt +20 -20
- package/skills/engineering/databases/scripts/tests/requirements.txt +4 -4
- package/skills/engineering/databases/scripts/tests/test_db_backup.py +340 -340
- package/skills/engineering/databases/scripts/tests/test_db_migrate.py +277 -277
- package/skills/engineering/databases/scripts/tests/test_db_performance_check.py +370 -370
- package/skills/engineering/diagnose/SKILL.md +117 -117
- package/skills/engineering/diagnose/scripts/hitl-loop.template.sh +41 -41
- package/skills/engineering/docs-seeker/SKILL.md +207 -207
- package/skills/engineering/docs-seeker/WORKFLOWS.md +505 -505
- package/skills/engineering/docs-seeker/references/best-practices.md +632 -632
- package/skills/engineering/docs-seeker/references/documentation-sources.md +461 -461
- package/skills/engineering/docs-seeker/references/error-handling.md +621 -621
- package/skills/engineering/docs-seeker/references/limitations.md +821 -821
- package/skills/engineering/docs-seeker/references/performance.md +574 -574
- package/skills/engineering/docs-seeker/references/tool-selection.md +262 -262
- package/skills/engineering/frontend-development/SKILL.md +398 -398
- package/skills/engineering/frontend-development/resources/common-patterns.md +330 -330
- package/skills/engineering/frontend-development/resources/complete-examples.md +871 -871
- package/skills/engineering/frontend-development/resources/component-patterns.md +501 -501
- package/skills/engineering/frontend-development/resources/data-fetching.md +766 -766
- package/skills/engineering/frontend-development/resources/file-organization.md +501 -501
- package/skills/engineering/frontend-development/resources/loading-and-error-states.md +500 -500
- package/skills/engineering/frontend-development/resources/performance.md +405 -405
- package/skills/engineering/frontend-development/resources/routing-guide.md +363 -363
- package/skills/engineering/frontend-development/resources/styling-guide.md +427 -427
- package/skills/engineering/frontend-development/resources/typescript-standards.md +417 -417
- package/skills/engineering/improve-codebase-architecture/DEEPENING.md +37 -37
- package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -44
- package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +53 -53
- package/skills/engineering/improve-codebase-architecture/SKILL.md +71 -71
- package/skills/engineering/openai-docs/LICENSE.txt +201 -201
- package/skills/engineering/openai-docs/SKILL.md +69 -69
- package/skills/engineering/openai-docs/agents/openai.yaml +14 -14
- package/skills/engineering/openai-docs/assets/openai-small.svg +3 -3
- package/skills/engineering/openai-docs/references/gpt-5p4-prompting-guide.md +433 -433
- package/skills/engineering/openai-docs/references/latest-model.md +35 -35
- package/skills/engineering/openai-docs/references/upgrading-to-gpt-5p4.md +164 -164
- package/skills/engineering/playwright/LICENSE.txt +201 -201
- package/skills/engineering/playwright/NOTICE.txt +14 -14
- package/skills/engineering/playwright/SKILL.md +147 -147
- package/skills/engineering/playwright/agents/openai.yaml +6 -6
- package/skills/engineering/playwright/assets/playwright-small.svg +3 -3
- package/skills/engineering/playwright/references/cli.md +116 -116
- package/skills/engineering/playwright/references/workflows.md +95 -95
- package/skills/engineering/playwright/scripts/playwright_cli.sh +25 -25
- package/skills/engineering/playwright-interactive/LICENSE.txt +201 -201
- package/skills/engineering/playwright-interactive/NOTICE.txt +13 -13
- package/skills/engineering/playwright-interactive/SKILL.md +689 -689
- package/skills/engineering/playwright-interactive/agents/openai.yaml +6 -6
- package/skills/engineering/playwright-interactive/assets/playwright-small.svg +3 -3
- package/skills/engineering/render-deploy/LICENSE.txt +201 -201
- package/skills/engineering/render-deploy/SKILL.md +479 -479
- package/skills/engineering/render-deploy/agents/openai.yaml +14 -14
- package/skills/engineering/render-deploy/assets/docker.yaml +62 -62
- package/skills/engineering/render-deploy/assets/go-api.yaml +35 -35
- package/skills/engineering/render-deploy/assets/nextjs-postgres.yaml +35 -35
- package/skills/engineering/render-deploy/assets/node-express.yaml +25 -25
- package/skills/engineering/render-deploy/assets/python-django.yaml +89 -89
- package/skills/engineering/render-deploy/assets/render-small.svg +3 -3
- package/skills/engineering/render-deploy/assets/static-site.yaml +54 -54
- package/skills/engineering/render-deploy/references/blueprint-spec.md +718 -718
- package/skills/engineering/render-deploy/references/codebase-analysis.md +49 -49
- package/skills/engineering/render-deploy/references/configuration-guide.md +603 -603
- package/skills/engineering/render-deploy/references/deployment-details.md +224 -224
- package/skills/engineering/render-deploy/references/direct-creation.md +113 -113
- package/skills/engineering/render-deploy/references/error-patterns.md +13 -13
- package/skills/engineering/render-deploy/references/post-deploy-checks.md +36 -36
- package/skills/engineering/render-deploy/references/runtimes.md +473 -473
- package/skills/engineering/render-deploy/references/service-types.md +450 -450
- package/skills/engineering/render-deploy/references/troubleshooting-basics.md +36 -36
- package/skills/engineering/repomix/SKILL.md +215 -215
- package/skills/engineering/repomix/references/configuration.md +211 -211
- package/skills/engineering/repomix/references/usage-patterns.md +232 -232
- package/skills/engineering/repomix/scripts/README.md +179 -179
- package/skills/engineering/repomix/scripts/repomix_batch.py +455 -455
- package/skills/engineering/repomix/scripts/repos.example.json +15 -15
- package/skills/engineering/repomix/scripts/requirements.txt +15 -15
- package/skills/engineering/repomix/scripts/tests/test_repomix_batch.py +531 -531
- package/skills/engineering/setup-matt-pocock-skills/SKILL.md +121 -121
- package/skills/engineering/setup-matt-pocock-skills/domain.md +51 -51
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +22 -22
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -23
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +19 -19
- package/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -15
- package/skills/engineering/shopify/README.md +66 -66
- package/skills/engineering/shopify/SKILL.md +319 -319
- package/skills/engineering/shopify/references/app-development.md +470 -470
- package/skills/engineering/shopify/references/extensions.md +493 -493
- package/skills/engineering/shopify/references/themes.md +498 -498
- package/skills/engineering/shopify/scripts/requirements.txt +19 -19
- package/skills/engineering/shopify/scripts/shopify_init.py +423 -423
- package/skills/engineering/shopify/scripts/tests/test_shopify_init.py +385 -385
- package/skills/engineering/tdd/SKILL.md +109 -109
- package/skills/engineering/tdd/deep-modules.md +33 -33
- package/skills/engineering/tdd/interface-design.md +31 -31
- package/skills/engineering/tdd/mocking.md +59 -59
- package/skills/engineering/tdd/refactoring.md +10 -10
- package/skills/engineering/tdd/tests.md +61 -61
- package/skills/engineering/to-issues/SKILL.md +81 -81
- package/skills/engineering/to-prd/SKILL.md +74 -74
- package/skills/engineering/triage/AGENT-BRIEF.md +168 -168
- package/skills/engineering/triage/OUT-OF-SCOPE.md +101 -101
- package/skills/engineering/triage/SKILL.md +103 -103
- package/skills/engineering/web-frameworks/SKILL.md +324 -324
- package/skills/engineering/web-frameworks/references/nextjs-app-router.md +465 -465
- package/skills/engineering/web-frameworks/references/nextjs-data-fetching.md +459 -459
- package/skills/engineering/web-frameworks/references/nextjs-optimization.md +511 -511
- package/skills/engineering/web-frameworks/references/nextjs-server-components.md +495 -495
- package/skills/engineering/web-frameworks/references/remix-icon-integration.md +603 -603
- package/skills/engineering/web-frameworks/references/turborepo-caching.md +551 -551
- package/skills/engineering/web-frameworks/references/turborepo-pipelines.md +517 -517
- package/skills/engineering/web-frameworks/references/turborepo-setup.md +542 -542
- package/skills/engineering/web-frameworks/scripts/nextjs_init.py +547 -547
- package/skills/engineering/web-frameworks/scripts/requirements.txt +16 -16
- package/skills/engineering/web-frameworks/scripts/tests/requirements.txt +3 -3
- package/skills/engineering/web-frameworks/scripts/tests/test_nextjs_init.py +319 -319
- package/skills/engineering/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -374
- package/skills/engineering/web-frameworks/scripts/turborepo_migrate.py +394 -394
- package/skills/engineering/write-a-skill/SKILL.md +117 -117
- package/skills/kilo-kit/SKILL.md +346 -346
- package/skills/kilo-kit/_template/SKILL.md +185 -185
- package/skills/kilo-kit/debugging/root-cause/SKILL.md +360 -360
- package/skills/kilo-kit/debugging/systematic/SKILL.md +339 -339
- package/skills/kilo-kit/debugging/verification/SKILL.md +424 -424
- package/skills/kilo-kit/development/backend/SKILL.md +540 -540
- package/skills/kilo-kit/development/security/SKILL.md +529 -529
- package/skills/kilo-kit/quality/code-review/SKILL.md +297 -297
- package/skills/kilo-kit/quality/testing/SKILL.md +540 -540
- package/skills/kilo-kit/references/output-formats.md +204 -204
- package/skills/kilo-kit/references/patterns.md +156 -156
- package/skills/kilo-kit/references/performance-benchmarks.md +90 -90
- package/skills/operations/chrome-devtools/SKILL.md +392 -392
- package/skills/operations/chrome-devtools/references/cdp-domains.md +694 -694
- package/skills/operations/chrome-devtools/references/performance-guide.md +940 -940
- package/skills/operations/chrome-devtools/references/puppeteer-reference.md +953 -953
- package/skills/operations/chrome-devtools/scripts/PERSISTENT-BROWSER.md +107 -107
- package/skills/operations/chrome-devtools/scripts/README.md +213 -213
- package/skills/operations/chrome-devtools/scripts/__tests__/selector.test.js +210 -210
- package/skills/operations/chrome-devtools/scripts/click.js +79 -79
- package/skills/operations/chrome-devtools/scripts/close-persistent.js +36 -36
- package/skills/operations/chrome-devtools/scripts/console.js +75 -75
- package/skills/operations/chrome-devtools/scripts/evaluate.js +49 -49
- package/skills/operations/chrome-devtools/scripts/fill.js +72 -72
- package/skills/operations/chrome-devtools/scripts/install-deps.sh +181 -181
- package/skills/operations/chrome-devtools/scripts/install.sh +83 -83
- package/skills/operations/chrome-devtools/scripts/launch-persistent.js +71 -71
- package/skills/operations/chrome-devtools/scripts/lib/browser.js +144 -144
- package/skills/operations/chrome-devtools/scripts/lib/selector.js +178 -178
- package/skills/operations/chrome-devtools/scripts/navigate.js +46 -46
- package/skills/operations/chrome-devtools/scripts/network.js +102 -102
- package/skills/operations/chrome-devtools/scripts/package-lock.json +1206 -1206
- package/skills/operations/chrome-devtools/scripts/package.json +15 -15
- package/skills/operations/chrome-devtools/scripts/performance.js +145 -145
- package/skills/operations/chrome-devtools/scripts/screenshot.js +180 -180
- package/skills/operations/chrome-devtools/scripts/snapshot.js +131 -131
- package/skills/operations/devops/.env.example +76 -76
- package/skills/operations/devops/SKILL.md +285 -285
- package/skills/operations/devops/references/browser-rendering.md +305 -305
- package/skills/operations/devops/references/cloudflare-d1-kv.md +123 -123
- package/skills/operations/devops/references/cloudflare-platform.md +271 -271
- package/skills/operations/devops/references/cloudflare-r2-storage.md +280 -280
- package/skills/operations/devops/references/cloudflare-workers-advanced.md +312 -312
- package/skills/operations/devops/references/cloudflare-workers-apis.md +309 -309
- package/skills/operations/devops/references/cloudflare-workers-basics.md +418 -418
- package/skills/operations/devops/references/docker-basics.md +297 -297
- package/skills/operations/devops/references/docker-compose.md +292 -292
- package/skills/operations/devops/references/gcloud-platform.md +297 -297
- package/skills/operations/devops/references/gcloud-services.md +304 -304
- package/skills/operations/devops/scripts/cloudflare_deploy.py +269 -269
- package/skills/operations/devops/scripts/docker_optimize.py +320 -320
- package/skills/operations/devops/scripts/requirements.txt +20 -20
- package/skills/operations/devops/scripts/tests/requirements.txt +3 -3
- package/skills/operations/devops/scripts/tests/test_cloudflare_deploy.py +285 -285
- package/skills/operations/devops/scripts/tests/test_docker_optimize.py +436 -436
- package/skills/operations/mcp-builder/LICENSE.txt +201 -201
- package/skills/operations/mcp-builder/SKILL.md +328 -328
- package/skills/operations/mcp-builder/reference/evaluation.md +601 -601
- package/skills/operations/mcp-builder/reference/mcp_best_practices.md +915 -915
- package/skills/operations/mcp-builder/reference/node_mcp_server.md +915 -915
- package/skills/operations/mcp-builder/reference/python_mcp_server.md +751 -751
- package/skills/operations/mcp-builder/scripts/connections.py +151 -151
- package/skills/operations/mcp-builder/scripts/evaluation.py +373 -373
- package/skills/operations/mcp-builder/scripts/example_evaluation.xml +22 -22
- package/skills/operations/mcp-builder/scripts/requirements.txt +2 -2
- package/skills/operations/mcp-management/README.md +219 -219
- package/skills/operations/mcp-management/SKILL.md +175 -175
- package/skills/operations/mcp-management/assets/tools.json +3043 -3043
- package/skills/operations/mcp-management/references/configuration.md +114 -114
- package/skills/operations/mcp-management/references/gemini-cli-integration.md +201 -201
- package/skills/operations/mcp-management/references/mcp-protocol.md +116 -116
- package/skills/operations/mcp-management/scripts/.env.example +10 -10
- package/skills/operations/mcp-management/scripts/cli.ts +155 -155
- package/skills/operations/mcp-management/scripts/dist/analyze-tools.js +70 -70
- package/skills/operations/mcp-management/scripts/dist/cli.js +131 -131
- package/skills/operations/mcp-management/scripts/dist/mcp-client.js +115 -115
- package/skills/operations/mcp-management/scripts/mcp-client.ts +163 -163
- package/skills/operations/mcp-management/scripts/package.json +18 -18
- package/skills/operations/mcp-management/scripts/tsconfig.json +15 -15
- package/skills/problem-solving/collision-zone-thinking/SKILL.md +62 -62
- package/skills/problem-solving/defense-in-depth/SKILL.md +130 -130
- package/skills/problem-solving/inversion-exercise/SKILL.md +58 -58
- package/skills/problem-solving/meta-pattern-recognition/SKILL.md +54 -54
- package/skills/problem-solving/root-cause-tracing/SKILL.md +177 -177
- package/skills/problem-solving/root-cause-tracing/find-polluter.sh +63 -63
- package/skills/problem-solving/scale-game/SKILL.md +63 -63
- package/skills/problem-solving/sequential-thinking/README.md +118 -118
- package/skills/problem-solving/sequential-thinking/SKILL.md +93 -93
- package/skills/problem-solving/sequential-thinking/references/advanced.md +122 -122
- package/skills/problem-solving/sequential-thinking/references/examples.md +274 -274
- package/skills/problem-solving/simplification-cascades/SKILL.md +76 -76
- package/skills/problem-solving/when-stuck/SKILL.md +88 -88
- package/skills/productivity/caveman/SKILL.md +49 -49
- package/skills/productivity/grill-me/SKILL.md +10 -10
- package/skills/productivity/grill-with-docs/ADR-FORMAT.md +47 -47
- package/skills/productivity/grill-with-docs/CONTEXT-FORMAT.md +77 -77
- package/skills/productivity/grill-with-docs/SKILL.md +88 -88
- package/skills/productivity/writing-skills/graphviz-conventions.dot +171 -171
- package/skills/productivity/zoom-out/SKILL.md +7 -7
- package/skills/writing-docs/doc/LICENSE.txt +201 -201
- package/skills/writing-docs/doc/SKILL.md +80 -80
- package/skills/writing-docs/doc/agents/openai.yaml +6 -6
- package/skills/writing-docs/doc/assets/doc-small.svg +3 -3
- package/skills/writing-docs/doc/scripts/render_docx.py +296 -296
- package/skills/writing-docs/docx/LICENSE.txt +30 -30
- package/skills/writing-docs/docx/SKILL.md +196 -196
- package/skills/writing-docs/docx/docx-js.md +349 -349
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
- package/skills/writing-docs/docx/ooxml/schemas/mce/mc.xsd +75 -75
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
- package/skills/writing-docs/docx/ooxml/scripts/pack.py +159 -159
- package/skills/writing-docs/docx/ooxml/scripts/unpack.py +29 -29
- package/skills/writing-docs/docx/ooxml/scripts/validate.py +69 -69
- package/skills/writing-docs/docx/ooxml/scripts/validation/__init__.py +15 -15
- package/skills/writing-docs/docx/ooxml/scripts/validation/base.py +951 -951
- package/skills/writing-docs/docx/ooxml/scripts/validation/docx.py +274 -274
- package/skills/writing-docs/docx/ooxml/scripts/validation/pptx.py +315 -315
- package/skills/writing-docs/docx/ooxml/scripts/validation/redlining.py +279 -279
- package/skills/writing-docs/docx/ooxml.md +609 -609
- package/skills/writing-docs/docx/scripts/__init__.py +1 -1
- package/skills/writing-docs/docx/scripts/document.py +1276 -1276
- package/skills/writing-docs/docx/scripts/templates/comments.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsExtended.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsExtensible.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsIds.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/people.xml +2 -2
- package/skills/writing-docs/docx/scripts/utilities.py +374 -374
- package/skills/writing-docs/mermaidjs-v11/SKILL.md +115 -115
- package/skills/writing-docs/mermaidjs-v11/references/cli-usage.md +228 -228
- package/skills/writing-docs/mermaidjs-v11/references/configuration.md +232 -232
- package/skills/writing-docs/mermaidjs-v11/references/diagram-types.md +315 -315
- package/skills/writing-docs/mermaidjs-v11/references/examples.md +344 -344
- package/skills/writing-docs/mermaidjs-v11/references/integration.md +310 -310
- package/skills/writing-docs/pdf/LICENSE.txt +30 -30
- package/skills/writing-docs/pdf/SKILL.md +294 -294
- package/skills/writing-docs/pdf/forms.md +205 -205
- package/skills/writing-docs/pdf/reference.md +611 -611
- package/skills/writing-docs/pdf/scripts/check_bounding_boxes.py +70 -70
- package/skills/writing-docs/pdf/scripts/check_bounding_boxes_test.py +226 -226
- package/skills/writing-docs/pdf/scripts/check_fillable_fields.py +12 -12
- package/skills/writing-docs/pdf/scripts/convert_pdf_to_images.py +35 -35
- package/skills/writing-docs/pdf/scripts/create_validation_image.py +41 -41
- package/skills/writing-docs/pdf/scripts/extract_form_field_info.py +152 -152
- package/skills/writing-docs/pdf/scripts/fill_fillable_fields.py +114 -114
- package/skills/writing-docs/pdf/scripts/fill_pdf_form_with_annotations.py +107 -107
- package/skills/writing-docs/pptx/LICENSE.txt +30 -30
- package/skills/writing-docs/pptx/SKILL.md +483 -483
- package/skills/writing-docs/pptx/html2pptx.md +624 -624
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
- package/skills/writing-docs/pptx/ooxml/schemas/mce/mc.xsd +75 -75
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
- package/skills/writing-docs/pptx/ooxml/scripts/pack.py +159 -159
- package/skills/writing-docs/pptx/ooxml/scripts/unpack.py +29 -29
- package/skills/writing-docs/pptx/ooxml/scripts/validate.py +69 -69
- package/skills/writing-docs/pptx/ooxml/scripts/validation/__init__.py +15 -15
- package/skills/writing-docs/pptx/ooxml/scripts/validation/base.py +951 -951
- package/skills/writing-docs/pptx/ooxml/scripts/validation/docx.py +274 -274
- package/skills/writing-docs/pptx/ooxml/scripts/validation/pptx.py +315 -315
- package/skills/writing-docs/pptx/ooxml/scripts/validation/redlining.py +279 -279
- package/skills/writing-docs/pptx/ooxml.md +426 -426
- package/skills/writing-docs/pptx/scripts/html2pptx.js +978 -978
- package/skills/writing-docs/pptx/scripts/inventory.py +1020 -1020
- package/skills/writing-docs/pptx/scripts/rearrange.py +231 -231
- package/skills/writing-docs/pptx/scripts/replace.py +385 -385
- package/skills/writing-docs/pptx/scripts/thumbnail.py +450 -450
- package/skills/writing-docs/slides/LICENSE.txt +201 -201
- package/skills/writing-docs/slides/SKILL.md +71 -71
- package/skills/writing-docs/slides/agents/openai.yaml +6 -6
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/code.js +104 -104
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/image.js +333 -333
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/index.js +33 -33
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/latex.js +51 -51
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout.js +643 -643
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout_builders.js +358 -358
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/svg.js +36 -36
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/text.js +789 -789
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/util.js +24 -24
- package/skills/writing-docs/slides/assets/slides-small.svg +3 -3
- package/skills/writing-docs/slides/references/pptxgenjs-helpers.md +61 -61
- package/skills/writing-docs/slides/scripts/create_montage.py +300 -300
- package/skills/writing-docs/slides/scripts/detect_font.py +873 -873
- package/skills/writing-docs/slides/scripts/ensure_raster_image.py +202 -202
- package/skills/writing-docs/slides/scripts/render_slides.py +273 -273
- package/skills/writing-docs/slides/scripts/slides_test.py +201 -201
- package/skills/writing-docs/template-skill/SKILL.md +26 -26
- package/skills/writing-docs/xlsx/LICENSE.txt +30 -30
- package/skills/writing-docs/xlsx/SKILL.md +288 -288
- package/skills/writing-docs/xlsx/recalc.py +177 -177
- package/src/core/KILO_MASTER.md +448 -448
- package/src/tools/validate-skill.js +421 -421
|
@@ -1,403 +1,403 @@
|
|
|
1
|
-
# FFmpeg Streaming & Live Video
|
|
2
|
-
|
|
3
|
-
Complete guide to HLS/DASH streaming, live streaming platforms, and adaptive bitrate encoding.
|
|
4
|
-
|
|
5
|
-
## HLS (HTTP Live Streaming)
|
|
6
|
-
|
|
7
|
-
### Basic HLS Stream
|
|
8
|
-
Generate playlist for on-demand streaming.
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
# Simple HLS with default settings
|
|
12
|
-
ffmpeg -i input.mp4 \
|
|
13
|
-
-c:v libx264 -c:a aac \
|
|
14
|
-
-f hls -hls_time 6 -hls_playlist_type vod \
|
|
15
|
-
-hls_segment_filename "segment_%03d.ts" \
|
|
16
|
-
playlist.m3u8
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Key parameters:**
|
|
20
|
-
- `-hls_time` - Segment duration (seconds, default 2)
|
|
21
|
-
- `-hls_playlist_type` - `vod` (on-demand) or `event` (live)
|
|
22
|
-
- `-hls_segment_filename` - Naming pattern for segments
|
|
23
|
-
|
|
24
|
-
### Optimized HLS
|
|
25
|
-
Better quality and compatibility.
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
ffmpeg -i input.mp4 \
|
|
29
|
-
-c:v libx264 -preset fast -crf 22 \
|
|
30
|
-
-g 48 -sc_threshold 0 \
|
|
31
|
-
-c:a aac -b:a 128k \
|
|
32
|
-
-f hls -hls_time 6 -hls_playlist_type vod \
|
|
33
|
-
-hls_segment_filename "segment_%03d.ts" \
|
|
34
|
-
playlist.m3u8
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**Parameters explained:**
|
|
38
|
-
- `-g 48` - Keyframe every 48 frames (2s @ 24fps)
|
|
39
|
-
- `-sc_threshold 0` - Disable scene detection (consistent segments)
|
|
40
|
-
|
|
41
|
-
### Multi-Bitrate HLS (Adaptive)
|
|
42
|
-
Create multiple quality levels for adaptive streaming.
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
ffmpeg -i input.mp4 \
|
|
46
|
-
-map 0:v -map 0:a -map 0:v -map 0:a -map 0:v -map 0:a \
|
|
47
|
-
-c:v libx264 -crf 22 -c:a aac -b:a 128k \
|
|
48
|
-
-b:v:0 800k -s:v:0 640x360 -maxrate:v:0 856k -bufsize:v:0 1200k \
|
|
49
|
-
-b:v:1 1400k -s:v:1 842x480 -maxrate:v:1 1498k -bufsize:v:1 2100k \
|
|
50
|
-
-b:v:2 2800k -s:v:2 1280x720 -maxrate:v:2 2996k -bufsize:v:2 4200k \
|
|
51
|
-
-var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2" \
|
|
52
|
-
-master_pl_name master.m3u8 \
|
|
53
|
-
-f hls -hls_time 6 -hls_list_size 0 \
|
|
54
|
-
-hls_segment_filename "stream_%v/segment_%03d.ts" \
|
|
55
|
-
stream_%v/playlist.m3u8
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Creates:**
|
|
59
|
-
- `master.m3u8` - Master playlist (entry point)
|
|
60
|
-
- `stream_0/playlist.m3u8` - 360p stream
|
|
61
|
-
- `stream_1/playlist.m3u8` - 480p stream
|
|
62
|
-
- `stream_2/playlist.m3u8` - 720p stream
|
|
63
|
-
|
|
64
|
-
### HLS with Encryption
|
|
65
|
-
Protect content with AES-128 encryption.
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# Generate encryption key
|
|
69
|
-
openssl rand 16 > enc.key
|
|
70
|
-
echo "enc.key" > enc.keyinfo
|
|
71
|
-
echo "enc.key" >> enc.keyinfo
|
|
72
|
-
openssl rand -hex 16 >> enc.keyinfo
|
|
73
|
-
|
|
74
|
-
# Encode with encryption
|
|
75
|
-
ffmpeg -i input.mp4 \
|
|
76
|
-
-c:v libx264 -c:a aac \
|
|
77
|
-
-f hls -hls_time 6 \
|
|
78
|
-
-hls_key_info_file enc.keyinfo \
|
|
79
|
-
-hls_segment_filename "segment_%03d.ts" \
|
|
80
|
-
playlist.m3u8
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## DASH (Dynamic Adaptive Streaming)
|
|
84
|
-
|
|
85
|
-
### Basic DASH
|
|
86
|
-
MPEG-DASH format for adaptive streaming.
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
ffmpeg -i input.mp4 \
|
|
90
|
-
-c:v libx264 -c:a aac \
|
|
91
|
-
-f dash -seg_duration 6 \
|
|
92
|
-
-use_template 1 -use_timeline 1 \
|
|
93
|
-
manifest.mpd
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Multi-Bitrate DASH
|
|
97
|
-
Multiple quality levels.
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
ffmpeg -i input.mp4 \
|
|
101
|
-
-map 0:v -map 0:a -map 0:v -map 0:a \
|
|
102
|
-
-c:v libx264 -c:a aac \
|
|
103
|
-
-b:v:0 800k -s:v:0 640x360 \
|
|
104
|
-
-b:v:1 1400k -s:v:1 1280x720 \
|
|
105
|
-
-b:a:0 128k -b:a:1 128k \
|
|
106
|
-
-f dash -seg_duration 6 \
|
|
107
|
-
-use_template 1 -use_timeline 1 \
|
|
108
|
-
manifest.mpd
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
## RTMP Live Streaming
|
|
112
|
-
|
|
113
|
-
### Stream to Twitch
|
|
114
|
-
```bash
|
|
115
|
-
ffmpeg -re -i input.mp4 \
|
|
116
|
-
-c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k \
|
|
117
|
-
-pix_fmt yuv420p -g 50 -c:a aac -b:a 128k -ar 44100 \
|
|
118
|
-
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Stream to YouTube
|
|
122
|
-
```bash
|
|
123
|
-
ffmpeg -re -i input.mp4 \
|
|
124
|
-
-c:v libx264 -preset veryfast -maxrate 2500k -bufsize 5000k \
|
|
125
|
-
-pix_fmt yuv420p -g 60 -c:a aac -b:a 128k \
|
|
126
|
-
-f flv rtmp://a.rtmp.youtube.com/live2/STREAM_KEY
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Stream to Facebook
|
|
130
|
-
```bash
|
|
131
|
-
ffmpeg -re -i input.mp4 \
|
|
132
|
-
-c:v libx264 -preset veryfast -maxrate 4000k -bufsize 8000k \
|
|
133
|
-
-pix_fmt yuv420p -g 60 -c:a aac -b:a 128k \
|
|
134
|
-
-f flv rtmps://live-api-s.facebook.com:443/rtmp/STREAM_KEY
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### Custom RTMP Server
|
|
138
|
-
```bash
|
|
139
|
-
ffmpeg -re -i input.mp4 \
|
|
140
|
-
-c:v libx264 -preset veryfast -tune zerolatency \
|
|
141
|
-
-maxrate 2500k -bufsize 5000k \
|
|
142
|
-
-pix_fmt yuv420p -g 50 \
|
|
143
|
-
-c:a aac -b:a 128k -ar 44100 \
|
|
144
|
-
-f flv rtmp://your-server.com/live/stream-key
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
## Screen Capture + Stream
|
|
148
|
-
|
|
149
|
-
### Linux (X11)
|
|
150
|
-
```bash
|
|
151
|
-
ffmpeg -f x11grab -s 1920x1080 -framerate 30 -i :0.0 \
|
|
152
|
-
-f pulse -ac 2 -i default \
|
|
153
|
-
-c:v libx264 -preset veryfast -tune zerolatency \
|
|
154
|
-
-maxrate 2500k -bufsize 5000k -pix_fmt yuv420p \
|
|
155
|
-
-c:a aac -b:a 128k -ar 44100 \
|
|
156
|
-
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### macOS (AVFoundation)
|
|
160
|
-
```bash
|
|
161
|
-
# List devices
|
|
162
|
-
ffmpeg -f avfoundation -list_devices true -i ""
|
|
163
|
-
|
|
164
|
-
# Capture and stream
|
|
165
|
-
ffmpeg -f avfoundation -framerate 30 -i "1:0" \
|
|
166
|
-
-c:v libx264 -preset veryfast -tune zerolatency \
|
|
167
|
-
-maxrate 2500k -bufsize 5000k -pix_fmt yuv420p \
|
|
168
|
-
-c:a aac -b:a 128k \
|
|
169
|
-
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### Windows (DirectShow)
|
|
173
|
-
```bash
|
|
174
|
-
ffmpeg -f dshow -i video="screen-capture-recorder":audio="Stereo Mix" \
|
|
175
|
-
-c:v libx264 -preset ultrafast -tune zerolatency \
|
|
176
|
-
-maxrate 750k -bufsize 3000k \
|
|
177
|
-
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
## Thumbnail Generation
|
|
181
|
-
|
|
182
|
-
### Single Thumbnail
|
|
183
|
-
Extract frame at specific time.
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
# At 5 seconds
|
|
187
|
-
ffmpeg -ss 00:00:05 -i input.mp4 -vframes 1 -vf scale=320:-1 thumb.jpg
|
|
188
|
-
|
|
189
|
-
# At 10% duration
|
|
190
|
-
ffmpeg -ss $(ffprobe -v error -show_entries format=duration \
|
|
191
|
-
-of default=noprint_wrappers=1:nokey=1 input.mp4 | \
|
|
192
|
-
awk '{print $1*0.1}') -i input.mp4 -vframes 1 thumb.jpg
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### Multiple Thumbnails
|
|
196
|
-
Generate thumbnails at intervals.
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
# One per minute
|
|
200
|
-
ffmpeg -i input.mp4 -vf fps=1/60,scale=320:-1 thumb_%03d.jpg
|
|
201
|
-
|
|
202
|
-
# One per 10 seconds
|
|
203
|
-
ffmpeg -i input.mp4 -vf fps=1/10,scale=320:-1 thumb_%03d.jpg
|
|
204
|
-
|
|
205
|
-
# First 10 frames
|
|
206
|
-
ffmpeg -i input.mp4 -vframes 10 -vf scale=320:-1 thumb_%02d.jpg
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### Thumbnail Sprite Sheet
|
|
210
|
-
Create single image with multiple thumbnails.
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
# Generate frames
|
|
214
|
-
ffmpeg -i input.mp4 -vf fps=1/10,scale=160:90 frames/thumb_%03d.jpg
|
|
215
|
-
|
|
216
|
-
# Combine into sprite (requires ImageMagick)
|
|
217
|
-
montage frames/thumb_*.jpg -tile 5x -geometry +0+0 sprite.jpg
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
## Preview Generation
|
|
221
|
-
|
|
222
|
-
### Video Preview (Trailer)
|
|
223
|
-
Extract multiple short clips.
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
# Extract 3 segments
|
|
227
|
-
ffmpeg -i input.mp4 \
|
|
228
|
-
-ss 00:00:30 -t 00:00:10 -c copy segment1.mp4
|
|
229
|
-
ffmpeg -i input.mp4 \
|
|
230
|
-
-ss 00:05:00 -t 00:00:10 -c copy segment2.mp4
|
|
231
|
-
ffmpeg -i input.mp4 \
|
|
232
|
-
-ss 00:10:00 -t 00:00:10 -c copy segment3.mp4
|
|
233
|
-
|
|
234
|
-
# Concatenate segments
|
|
235
|
-
echo "file 'segment1.mp4'" > concat.txt
|
|
236
|
-
echo "file 'segment2.mp4'" >> concat.txt
|
|
237
|
-
echo "file 'segment3.mp4'" >> concat.txt
|
|
238
|
-
ffmpeg -f concat -safe 0 -i concat.txt -c copy preview.mp4
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### Fast Preview (Low Quality)
|
|
242
|
-
Quick preview for review.
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
ffmpeg -i input.mp4 \
|
|
246
|
-
-vf scale=640:-1 \
|
|
247
|
-
-c:v libx264 -preset ultrafast -crf 28 \
|
|
248
|
-
-c:a aac -b:a 64k \
|
|
249
|
-
preview.mp4
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
## Streaming Parameters
|
|
253
|
-
|
|
254
|
-
### Important RTMP Parameters
|
|
255
|
-
|
|
256
|
-
**Real-time reading:**
|
|
257
|
-
- `-re` - Read input at native frame rate
|
|
258
|
-
|
|
259
|
-
**Low latency:**
|
|
260
|
-
- `-tune zerolatency` - Optimize for minimal latency
|
|
261
|
-
- `-preset ultrafast` or `veryfast` - Fast encoding
|
|
262
|
-
|
|
263
|
-
**Keyframes:**
|
|
264
|
-
- `-g 50` - Keyframe interval (GOP size)
|
|
265
|
-
- Recommended: 2 seconds (fps * 2)
|
|
266
|
-
|
|
267
|
-
**Rate control:**
|
|
268
|
-
- `-maxrate` - Maximum bitrate (e.g., 3000k)
|
|
269
|
-
- `-bufsize` - Buffer size (typically 2x maxrate)
|
|
270
|
-
|
|
271
|
-
**Compatibility:**
|
|
272
|
-
- `-pix_fmt yuv420p` - Compatible pixel format
|
|
273
|
-
|
|
274
|
-
### Bitrate Recommendations
|
|
275
|
-
|
|
276
|
-
**1080p 60fps:**
|
|
277
|
-
- 4500-6000 kbps video
|
|
278
|
-
- 160 kbps audio
|
|
279
|
-
|
|
280
|
-
**1080p 30fps:**
|
|
281
|
-
- 3000-4500 kbps video
|
|
282
|
-
- 128 kbps audio
|
|
283
|
-
|
|
284
|
-
**720p 60fps:**
|
|
285
|
-
- 2500-4000 kbps video
|
|
286
|
-
- 128 kbps audio
|
|
287
|
-
|
|
288
|
-
**720p 30fps:**
|
|
289
|
-
- 1500-2500 kbps video
|
|
290
|
-
- 128 kbps audio
|
|
291
|
-
|
|
292
|
-
**480p:**
|
|
293
|
-
- 500-1000 kbps video
|
|
294
|
-
- 128 kbps audio
|
|
295
|
-
|
|
296
|
-
## UDP/RTP Streaming
|
|
297
|
-
|
|
298
|
-
### UDP Stream
|
|
299
|
-
Simple network streaming.
|
|
300
|
-
|
|
301
|
-
```bash
|
|
302
|
-
# Sender
|
|
303
|
-
ffmpeg -re -i input.mp4 -c copy -f mpegts udp://192.168.1.100:1234
|
|
304
|
-
|
|
305
|
-
# Receiver
|
|
306
|
-
ffplay udp://192.168.1.100:1234
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
### RTP Stream
|
|
310
|
-
Real-Time Protocol for low latency.
|
|
311
|
-
|
|
312
|
-
```bash
|
|
313
|
-
# Audio only
|
|
314
|
-
ffmpeg -re -i audio.mp3 -c:a libopus -f rtp rtp://192.168.1.100:5004
|
|
315
|
-
|
|
316
|
-
# Video + audio
|
|
317
|
-
ffmpeg -re -i input.mp4 \
|
|
318
|
-
-c:v libx264 -preset ultrafast \
|
|
319
|
-
-c:a aac -f rtp rtp://192.168.1.100:5004
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### Multicast Stream
|
|
323
|
-
Stream to multiple receivers.
|
|
324
|
-
|
|
325
|
-
```bash
|
|
326
|
-
# Sender (multicast address)
|
|
327
|
-
ffmpeg -re -i input.mp4 -c copy -f mpegts udp://239.255.0.1:1234
|
|
328
|
-
|
|
329
|
-
# Receiver
|
|
330
|
-
ffplay udp://239.255.0.1:1234
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
## Advanced Streaming
|
|
334
|
-
|
|
335
|
-
### Hardware-Accelerated Streaming
|
|
336
|
-
Use GPU for faster encoding.
|
|
337
|
-
|
|
338
|
-
```bash
|
|
339
|
-
# NVIDIA NVENC
|
|
340
|
-
ffmpeg -re -i input.mp4 \
|
|
341
|
-
-c:v h264_nvenc -preset fast -maxrate 3000k -bufsize 6000k \
|
|
342
|
-
-c:a aac -b:a 128k \
|
|
343
|
-
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
344
|
-
|
|
345
|
-
# Intel QSV
|
|
346
|
-
ffmpeg -re -hwaccel qsv -i input.mp4 \
|
|
347
|
-
-c:v h264_qsv -preset fast -maxrate 3000k -bufsize 6000k \
|
|
348
|
-
-c:a aac -b:a 128k \
|
|
349
|
-
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
### Stream with Overlay
|
|
353
|
-
Add graphics during stream.
|
|
354
|
-
|
|
355
|
-
```bash
|
|
356
|
-
ffmpeg -re -i input.mp4 -i logo.png \
|
|
357
|
-
-filter_complex "[0:v][1:v]overlay=10:10" \
|
|
358
|
-
-c:v libx264 -preset veryfast -maxrate 3000k \
|
|
359
|
-
-c:a copy \
|
|
360
|
-
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
### Loop Stream
|
|
364
|
-
Continuously loop video for 24/7 stream.
|
|
365
|
-
|
|
366
|
-
```bash
|
|
367
|
-
ffmpeg -stream_loop -1 -re -i input.mp4 \
|
|
368
|
-
-c:v libx264 -preset veryfast -maxrate 2500k \
|
|
369
|
-
-c:a aac -b:a 128k \
|
|
370
|
-
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
## Troubleshooting
|
|
374
|
-
|
|
375
|
-
### Buffering Issues
|
|
376
|
-
```bash
|
|
377
|
-
# Reduce buffer size
|
|
378
|
-
ffmpeg -re -i input.mp4 -maxrate 2000k -bufsize 2000k -c:v libx264 -f flv rtmp://...
|
|
379
|
-
|
|
380
|
-
# Use faster preset
|
|
381
|
-
ffmpeg -re -i input.mp4 -preset ultrafast -c:v libx264 -f flv rtmp://...
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
### Audio/Video Desync
|
|
385
|
-
```bash
|
|
386
|
-
# Force constant frame rate
|
|
387
|
-
ffmpeg -re -i input.mp4 -r 30 -c:v libx264 -f flv rtmp://...
|
|
388
|
-
|
|
389
|
-
# Use -vsync 1
|
|
390
|
-
ffmpeg -re -i input.mp4 -vsync 1 -c:v libx264 -f flv rtmp://...
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
### Connection Drops
|
|
394
|
-
```bash
|
|
395
|
-
# Increase timeout
|
|
396
|
-
ffmpeg -timeout 5000000 -re -i input.mp4 -c:v libx264 -f flv rtmp://...
|
|
397
|
-
|
|
398
|
-
# Reconnect on failure (use wrapper script)
|
|
399
|
-
while true; do
|
|
400
|
-
ffmpeg -re -i input.mp4 -c:v libx264 -f flv rtmp://...
|
|
401
|
-
sleep 5
|
|
402
|
-
done
|
|
403
|
-
```
|
|
1
|
+
# FFmpeg Streaming & Live Video
|
|
2
|
+
|
|
3
|
+
Complete guide to HLS/DASH streaming, live streaming platforms, and adaptive bitrate encoding.
|
|
4
|
+
|
|
5
|
+
## HLS (HTTP Live Streaming)
|
|
6
|
+
|
|
7
|
+
### Basic HLS Stream
|
|
8
|
+
Generate playlist for on-demand streaming.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# Simple HLS with default settings
|
|
12
|
+
ffmpeg -i input.mp4 \
|
|
13
|
+
-c:v libx264 -c:a aac \
|
|
14
|
+
-f hls -hls_time 6 -hls_playlist_type vod \
|
|
15
|
+
-hls_segment_filename "segment_%03d.ts" \
|
|
16
|
+
playlist.m3u8
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Key parameters:**
|
|
20
|
+
- `-hls_time` - Segment duration (seconds, default 2)
|
|
21
|
+
- `-hls_playlist_type` - `vod` (on-demand) or `event` (live)
|
|
22
|
+
- `-hls_segment_filename` - Naming pattern for segments
|
|
23
|
+
|
|
24
|
+
### Optimized HLS
|
|
25
|
+
Better quality and compatibility.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
ffmpeg -i input.mp4 \
|
|
29
|
+
-c:v libx264 -preset fast -crf 22 \
|
|
30
|
+
-g 48 -sc_threshold 0 \
|
|
31
|
+
-c:a aac -b:a 128k \
|
|
32
|
+
-f hls -hls_time 6 -hls_playlist_type vod \
|
|
33
|
+
-hls_segment_filename "segment_%03d.ts" \
|
|
34
|
+
playlist.m3u8
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Parameters explained:**
|
|
38
|
+
- `-g 48` - Keyframe every 48 frames (2s @ 24fps)
|
|
39
|
+
- `-sc_threshold 0` - Disable scene detection (consistent segments)
|
|
40
|
+
|
|
41
|
+
### Multi-Bitrate HLS (Adaptive)
|
|
42
|
+
Create multiple quality levels for adaptive streaming.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
ffmpeg -i input.mp4 \
|
|
46
|
+
-map 0:v -map 0:a -map 0:v -map 0:a -map 0:v -map 0:a \
|
|
47
|
+
-c:v libx264 -crf 22 -c:a aac -b:a 128k \
|
|
48
|
+
-b:v:0 800k -s:v:0 640x360 -maxrate:v:0 856k -bufsize:v:0 1200k \
|
|
49
|
+
-b:v:1 1400k -s:v:1 842x480 -maxrate:v:1 1498k -bufsize:v:1 2100k \
|
|
50
|
+
-b:v:2 2800k -s:v:2 1280x720 -maxrate:v:2 2996k -bufsize:v:2 4200k \
|
|
51
|
+
-var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2" \
|
|
52
|
+
-master_pl_name master.m3u8 \
|
|
53
|
+
-f hls -hls_time 6 -hls_list_size 0 \
|
|
54
|
+
-hls_segment_filename "stream_%v/segment_%03d.ts" \
|
|
55
|
+
stream_%v/playlist.m3u8
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Creates:**
|
|
59
|
+
- `master.m3u8` - Master playlist (entry point)
|
|
60
|
+
- `stream_0/playlist.m3u8` - 360p stream
|
|
61
|
+
- `stream_1/playlist.m3u8` - 480p stream
|
|
62
|
+
- `stream_2/playlist.m3u8` - 720p stream
|
|
63
|
+
|
|
64
|
+
### HLS with Encryption
|
|
65
|
+
Protect content with AES-128 encryption.
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Generate encryption key
|
|
69
|
+
openssl rand 16 > enc.key
|
|
70
|
+
echo "enc.key" > enc.keyinfo
|
|
71
|
+
echo "enc.key" >> enc.keyinfo
|
|
72
|
+
openssl rand -hex 16 >> enc.keyinfo
|
|
73
|
+
|
|
74
|
+
# Encode with encryption
|
|
75
|
+
ffmpeg -i input.mp4 \
|
|
76
|
+
-c:v libx264 -c:a aac \
|
|
77
|
+
-f hls -hls_time 6 \
|
|
78
|
+
-hls_key_info_file enc.keyinfo \
|
|
79
|
+
-hls_segment_filename "segment_%03d.ts" \
|
|
80
|
+
playlist.m3u8
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## DASH (Dynamic Adaptive Streaming)
|
|
84
|
+
|
|
85
|
+
### Basic DASH
|
|
86
|
+
MPEG-DASH format for adaptive streaming.
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
ffmpeg -i input.mp4 \
|
|
90
|
+
-c:v libx264 -c:a aac \
|
|
91
|
+
-f dash -seg_duration 6 \
|
|
92
|
+
-use_template 1 -use_timeline 1 \
|
|
93
|
+
manifest.mpd
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Multi-Bitrate DASH
|
|
97
|
+
Multiple quality levels.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
ffmpeg -i input.mp4 \
|
|
101
|
+
-map 0:v -map 0:a -map 0:v -map 0:a \
|
|
102
|
+
-c:v libx264 -c:a aac \
|
|
103
|
+
-b:v:0 800k -s:v:0 640x360 \
|
|
104
|
+
-b:v:1 1400k -s:v:1 1280x720 \
|
|
105
|
+
-b:a:0 128k -b:a:1 128k \
|
|
106
|
+
-f dash -seg_duration 6 \
|
|
107
|
+
-use_template 1 -use_timeline 1 \
|
|
108
|
+
manifest.mpd
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## RTMP Live Streaming
|
|
112
|
+
|
|
113
|
+
### Stream to Twitch
|
|
114
|
+
```bash
|
|
115
|
+
ffmpeg -re -i input.mp4 \
|
|
116
|
+
-c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k \
|
|
117
|
+
-pix_fmt yuv420p -g 50 -c:a aac -b:a 128k -ar 44100 \
|
|
118
|
+
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Stream to YouTube
|
|
122
|
+
```bash
|
|
123
|
+
ffmpeg -re -i input.mp4 \
|
|
124
|
+
-c:v libx264 -preset veryfast -maxrate 2500k -bufsize 5000k \
|
|
125
|
+
-pix_fmt yuv420p -g 60 -c:a aac -b:a 128k \
|
|
126
|
+
-f flv rtmp://a.rtmp.youtube.com/live2/STREAM_KEY
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Stream to Facebook
|
|
130
|
+
```bash
|
|
131
|
+
ffmpeg -re -i input.mp4 \
|
|
132
|
+
-c:v libx264 -preset veryfast -maxrate 4000k -bufsize 8000k \
|
|
133
|
+
-pix_fmt yuv420p -g 60 -c:a aac -b:a 128k \
|
|
134
|
+
-f flv rtmps://live-api-s.facebook.com:443/rtmp/STREAM_KEY
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Custom RTMP Server
|
|
138
|
+
```bash
|
|
139
|
+
ffmpeg -re -i input.mp4 \
|
|
140
|
+
-c:v libx264 -preset veryfast -tune zerolatency \
|
|
141
|
+
-maxrate 2500k -bufsize 5000k \
|
|
142
|
+
-pix_fmt yuv420p -g 50 \
|
|
143
|
+
-c:a aac -b:a 128k -ar 44100 \
|
|
144
|
+
-f flv rtmp://your-server.com/live/stream-key
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Screen Capture + Stream
|
|
148
|
+
|
|
149
|
+
### Linux (X11)
|
|
150
|
+
```bash
|
|
151
|
+
ffmpeg -f x11grab -s 1920x1080 -framerate 30 -i :0.0 \
|
|
152
|
+
-f pulse -ac 2 -i default \
|
|
153
|
+
-c:v libx264 -preset veryfast -tune zerolatency \
|
|
154
|
+
-maxrate 2500k -bufsize 5000k -pix_fmt yuv420p \
|
|
155
|
+
-c:a aac -b:a 128k -ar 44100 \
|
|
156
|
+
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### macOS (AVFoundation)
|
|
160
|
+
```bash
|
|
161
|
+
# List devices
|
|
162
|
+
ffmpeg -f avfoundation -list_devices true -i ""
|
|
163
|
+
|
|
164
|
+
# Capture and stream
|
|
165
|
+
ffmpeg -f avfoundation -framerate 30 -i "1:0" \
|
|
166
|
+
-c:v libx264 -preset veryfast -tune zerolatency \
|
|
167
|
+
-maxrate 2500k -bufsize 5000k -pix_fmt yuv420p \
|
|
168
|
+
-c:a aac -b:a 128k \
|
|
169
|
+
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Windows (DirectShow)
|
|
173
|
+
```bash
|
|
174
|
+
ffmpeg -f dshow -i video="screen-capture-recorder":audio="Stereo Mix" \
|
|
175
|
+
-c:v libx264 -preset ultrafast -tune zerolatency \
|
|
176
|
+
-maxrate 750k -bufsize 3000k \
|
|
177
|
+
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Thumbnail Generation
|
|
181
|
+
|
|
182
|
+
### Single Thumbnail
|
|
183
|
+
Extract frame at specific time.
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# At 5 seconds
|
|
187
|
+
ffmpeg -ss 00:00:05 -i input.mp4 -vframes 1 -vf scale=320:-1 thumb.jpg
|
|
188
|
+
|
|
189
|
+
# At 10% duration
|
|
190
|
+
ffmpeg -ss $(ffprobe -v error -show_entries format=duration \
|
|
191
|
+
-of default=noprint_wrappers=1:nokey=1 input.mp4 | \
|
|
192
|
+
awk '{print $1*0.1}') -i input.mp4 -vframes 1 thumb.jpg
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Multiple Thumbnails
|
|
196
|
+
Generate thumbnails at intervals.
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# One per minute
|
|
200
|
+
ffmpeg -i input.mp4 -vf fps=1/60,scale=320:-1 thumb_%03d.jpg
|
|
201
|
+
|
|
202
|
+
# One per 10 seconds
|
|
203
|
+
ffmpeg -i input.mp4 -vf fps=1/10,scale=320:-1 thumb_%03d.jpg
|
|
204
|
+
|
|
205
|
+
# First 10 frames
|
|
206
|
+
ffmpeg -i input.mp4 -vframes 10 -vf scale=320:-1 thumb_%02d.jpg
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Thumbnail Sprite Sheet
|
|
210
|
+
Create single image with multiple thumbnails.
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# Generate frames
|
|
214
|
+
ffmpeg -i input.mp4 -vf fps=1/10,scale=160:90 frames/thumb_%03d.jpg
|
|
215
|
+
|
|
216
|
+
# Combine into sprite (requires ImageMagick)
|
|
217
|
+
montage frames/thumb_*.jpg -tile 5x -geometry +0+0 sprite.jpg
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Preview Generation
|
|
221
|
+
|
|
222
|
+
### Video Preview (Trailer)
|
|
223
|
+
Extract multiple short clips.
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# Extract 3 segments
|
|
227
|
+
ffmpeg -i input.mp4 \
|
|
228
|
+
-ss 00:00:30 -t 00:00:10 -c copy segment1.mp4
|
|
229
|
+
ffmpeg -i input.mp4 \
|
|
230
|
+
-ss 00:05:00 -t 00:00:10 -c copy segment2.mp4
|
|
231
|
+
ffmpeg -i input.mp4 \
|
|
232
|
+
-ss 00:10:00 -t 00:00:10 -c copy segment3.mp4
|
|
233
|
+
|
|
234
|
+
# Concatenate segments
|
|
235
|
+
echo "file 'segment1.mp4'" > concat.txt
|
|
236
|
+
echo "file 'segment2.mp4'" >> concat.txt
|
|
237
|
+
echo "file 'segment3.mp4'" >> concat.txt
|
|
238
|
+
ffmpeg -f concat -safe 0 -i concat.txt -c copy preview.mp4
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Fast Preview (Low Quality)
|
|
242
|
+
Quick preview for review.
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
ffmpeg -i input.mp4 \
|
|
246
|
+
-vf scale=640:-1 \
|
|
247
|
+
-c:v libx264 -preset ultrafast -crf 28 \
|
|
248
|
+
-c:a aac -b:a 64k \
|
|
249
|
+
preview.mp4
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Streaming Parameters
|
|
253
|
+
|
|
254
|
+
### Important RTMP Parameters
|
|
255
|
+
|
|
256
|
+
**Real-time reading:**
|
|
257
|
+
- `-re` - Read input at native frame rate
|
|
258
|
+
|
|
259
|
+
**Low latency:**
|
|
260
|
+
- `-tune zerolatency` - Optimize for minimal latency
|
|
261
|
+
- `-preset ultrafast` or `veryfast` - Fast encoding
|
|
262
|
+
|
|
263
|
+
**Keyframes:**
|
|
264
|
+
- `-g 50` - Keyframe interval (GOP size)
|
|
265
|
+
- Recommended: 2 seconds (fps * 2)
|
|
266
|
+
|
|
267
|
+
**Rate control:**
|
|
268
|
+
- `-maxrate` - Maximum bitrate (e.g., 3000k)
|
|
269
|
+
- `-bufsize` - Buffer size (typically 2x maxrate)
|
|
270
|
+
|
|
271
|
+
**Compatibility:**
|
|
272
|
+
- `-pix_fmt yuv420p` - Compatible pixel format
|
|
273
|
+
|
|
274
|
+
### Bitrate Recommendations
|
|
275
|
+
|
|
276
|
+
**1080p 60fps:**
|
|
277
|
+
- 4500-6000 kbps video
|
|
278
|
+
- 160 kbps audio
|
|
279
|
+
|
|
280
|
+
**1080p 30fps:**
|
|
281
|
+
- 3000-4500 kbps video
|
|
282
|
+
- 128 kbps audio
|
|
283
|
+
|
|
284
|
+
**720p 60fps:**
|
|
285
|
+
- 2500-4000 kbps video
|
|
286
|
+
- 128 kbps audio
|
|
287
|
+
|
|
288
|
+
**720p 30fps:**
|
|
289
|
+
- 1500-2500 kbps video
|
|
290
|
+
- 128 kbps audio
|
|
291
|
+
|
|
292
|
+
**480p:**
|
|
293
|
+
- 500-1000 kbps video
|
|
294
|
+
- 128 kbps audio
|
|
295
|
+
|
|
296
|
+
## UDP/RTP Streaming
|
|
297
|
+
|
|
298
|
+
### UDP Stream
|
|
299
|
+
Simple network streaming.
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# Sender
|
|
303
|
+
ffmpeg -re -i input.mp4 -c copy -f mpegts udp://192.168.1.100:1234
|
|
304
|
+
|
|
305
|
+
# Receiver
|
|
306
|
+
ffplay udp://192.168.1.100:1234
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### RTP Stream
|
|
310
|
+
Real-Time Protocol for low latency.
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
# Audio only
|
|
314
|
+
ffmpeg -re -i audio.mp3 -c:a libopus -f rtp rtp://192.168.1.100:5004
|
|
315
|
+
|
|
316
|
+
# Video + audio
|
|
317
|
+
ffmpeg -re -i input.mp4 \
|
|
318
|
+
-c:v libx264 -preset ultrafast \
|
|
319
|
+
-c:a aac -f rtp rtp://192.168.1.100:5004
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Multicast Stream
|
|
323
|
+
Stream to multiple receivers.
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
# Sender (multicast address)
|
|
327
|
+
ffmpeg -re -i input.mp4 -c copy -f mpegts udp://239.255.0.1:1234
|
|
328
|
+
|
|
329
|
+
# Receiver
|
|
330
|
+
ffplay udp://239.255.0.1:1234
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Advanced Streaming
|
|
334
|
+
|
|
335
|
+
### Hardware-Accelerated Streaming
|
|
336
|
+
Use GPU for faster encoding.
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# NVIDIA NVENC
|
|
340
|
+
ffmpeg -re -i input.mp4 \
|
|
341
|
+
-c:v h264_nvenc -preset fast -maxrate 3000k -bufsize 6000k \
|
|
342
|
+
-c:a aac -b:a 128k \
|
|
343
|
+
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
344
|
+
|
|
345
|
+
# Intel QSV
|
|
346
|
+
ffmpeg -re -hwaccel qsv -i input.mp4 \
|
|
347
|
+
-c:v h264_qsv -preset fast -maxrate 3000k -bufsize 6000k \
|
|
348
|
+
-c:a aac -b:a 128k \
|
|
349
|
+
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### Stream with Overlay
|
|
353
|
+
Add graphics during stream.
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
ffmpeg -re -i input.mp4 -i logo.png \
|
|
357
|
+
-filter_complex "[0:v][1:v]overlay=10:10" \
|
|
358
|
+
-c:v libx264 -preset veryfast -maxrate 3000k \
|
|
359
|
+
-c:a copy \
|
|
360
|
+
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Loop Stream
|
|
364
|
+
Continuously loop video for 24/7 stream.
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
ffmpeg -stream_loop -1 -re -i input.mp4 \
|
|
368
|
+
-c:v libx264 -preset veryfast -maxrate 2500k \
|
|
369
|
+
-c:a aac -b:a 128k \
|
|
370
|
+
-f flv rtmp://live.twitch.tv/app/STREAM_KEY
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Troubleshooting
|
|
374
|
+
|
|
375
|
+
### Buffering Issues
|
|
376
|
+
```bash
|
|
377
|
+
# Reduce buffer size
|
|
378
|
+
ffmpeg -re -i input.mp4 -maxrate 2000k -bufsize 2000k -c:v libx264 -f flv rtmp://...
|
|
379
|
+
|
|
380
|
+
# Use faster preset
|
|
381
|
+
ffmpeg -re -i input.mp4 -preset ultrafast -c:v libx264 -f flv rtmp://...
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Audio/Video Desync
|
|
385
|
+
```bash
|
|
386
|
+
# Force constant frame rate
|
|
387
|
+
ffmpeg -re -i input.mp4 -r 30 -c:v libx264 -f flv rtmp://...
|
|
388
|
+
|
|
389
|
+
# Use -vsync 1
|
|
390
|
+
ffmpeg -re -i input.mp4 -vsync 1 -c:v libx264 -f flv rtmp://...
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
### Connection Drops
|
|
394
|
+
```bash
|
|
395
|
+
# Increase timeout
|
|
396
|
+
ffmpeg -timeout 5000000 -re -i input.mp4 -c:v libx264 -f flv rtmp://...
|
|
397
|
+
|
|
398
|
+
# Reconnect on failure (use wrapper script)
|
|
399
|
+
while true; do
|
|
400
|
+
ffmpeg -re -i input.mp4 -c:v libx264 -f flv rtmp://...
|
|
401
|
+
sleep 5
|
|
402
|
+
done
|
|
403
|
+
```
|