@trieungoctam/vibekit 1.0.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/LICENSE +21 -0
- package/README.md +85 -0
- package/agents/debugger.md +158 -0
- package/agents/docs-manager.md +220 -0
- package/agents/planner.md +129 -0
- package/agents/researcher.md +58 -0
- package/agents/reviewer.md +152 -0
- package/agents/tester.md +126 -0
- package/bin/vibekit.js +18 -0
- package/hooks/lib/ck-config-utils.cjs +831 -0
- package/hooks/lib/colors.cjs +95 -0
- package/hooks/lib/config-counter.cjs +103 -0
- package/hooks/lib/context-builder.cjs +616 -0
- package/hooks/lib/git-info-cache.cjs +143 -0
- package/hooks/lib/hook-logger.cjs +92 -0
- package/hooks/lib/privacy-checker.cjs +297 -0
- package/hooks/lib/project-detector.cjs +474 -0
- package/hooks/lib/scout-checker.cjs +263 -0
- package/hooks/lib/transcript-parser.cjs +181 -0
- package/hooks/post-edit-simplify-reminder.cjs +156 -0
- package/hooks/privacy-block.cjs +166 -0
- package/hooks/scout-block.cjs +147 -0
- package/hooks/session-init.cjs +360 -0
- package/package.json +41 -0
- package/rules/development-rules.md +52 -0
- package/rules/documentation-management.md +121 -0
- package/rules/orchestration-protocol.md +43 -0
- package/rules/primary-workflow.md +57 -0
- package/rules/team-coordination-rules.md +90 -0
- package/skills/ai/agent-browser/SKILL.md +294 -0
- package/skills/ai/agent-browser/references/.gitkeep +0 -0
- package/skills/ai/agent-browser/references/agent-browser-vs-chrome-devtools.md +112 -0
- package/skills/ai/agent-browser/references/browserbase-cloud-setup.md +161 -0
- package/skills/ai/ai-artist/SKILL.md +122 -0
- package/skills/ai/ai-artist/data/awesome-prompts.csv +3592 -0
- package/skills/ai/ai-artist/data/lighting.csv +19 -0
- package/skills/ai/ai-artist/data/nano-banana-templates.csv +17 -0
- package/skills/ai/ai-artist/data/platforms.csv +11 -0
- package/skills/ai/ai-artist/data/styles.csv +26 -0
- package/skills/ai/ai-artist/data/techniques.csv +19 -0
- package/skills/ai/ai-artist/data/use-cases.csv +16 -0
- package/skills/ai/ai-artist/references/advanced-techniques.md +184 -0
- package/skills/ai/ai-artist/references/awesome-nano-banana-pro-prompts.md +8575 -0
- package/skills/ai/ai-artist/references/domain-code.md +66 -0
- package/skills/ai/ai-artist/references/domain-data.md +72 -0
- package/skills/ai/ai-artist/references/domain-marketing.md +66 -0
- package/skills/ai/ai-artist/references/domain-patterns.md +33 -0
- package/skills/ai/ai-artist/references/domain-writing.md +68 -0
- package/skills/ai/ai-artist/references/image-prompting.md +141 -0
- package/skills/ai/ai-artist/references/llm-prompting.md +165 -0
- package/skills/ai/ai-artist/references/nano-banana.md +136 -0
- package/skills/ai/ai-artist/references/reasoning-techniques.md +201 -0
- package/skills/ai/ai-artist/references/validation-workflow.md +117 -0
- package/skills/ai/ai-artist/scripts/core.py +197 -0
- package/skills/ai/ai-artist/scripts/extract_prompts.py +102 -0
- package/skills/ai/ai-artist/scripts/generate.py +370 -0
- package/skills/ai/ai-artist/scripts/search.py +147 -0
- package/skills/ai/ai-multimodal/.env.example +204 -0
- package/skills/ai/ai-multimodal/SKILL.md +110 -0
- package/skills/ai/ai-multimodal/references/audio-processing.md +387 -0
- package/skills/ai/ai-multimodal/references/image-generation.md +939 -0
- package/skills/ai/ai-multimodal/references/music-generation.md +311 -0
- package/skills/ai/ai-multimodal/references/video-analysis.md +515 -0
- package/skills/ai/ai-multimodal/references/video-generation.md +457 -0
- package/skills/ai/ai-multimodal/references/vision-understanding.md +492 -0
- package/skills/ai/ai-multimodal/scripts/.coverage +0 -0
- package/skills/ai/ai-multimodal/scripts/check_setup.py +315 -0
- package/skills/ai/ai-multimodal/scripts/document_converter.py +395 -0
- package/skills/ai/ai-multimodal/scripts/gemini_batch_process.py +1185 -0
- package/skills/ai/ai-multimodal/scripts/media_optimizer.py +506 -0
- package/skills/ai/ai-multimodal/scripts/requirements.txt +26 -0
- package/skills/ai/ai-multimodal/scripts/tests/.coverage +0 -0
- package/skills/ai/ai-multimodal/scripts/tests/requirements.txt +20 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_document_converter.py +74 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
- package/skills/ai/mcp-management/README.md +219 -0
- package/skills/ai/mcp-management/SKILL.md +210 -0
- package/skills/ai/mcp-management/assets/tools.json +3146 -0
- package/skills/ai/mcp-management/references/configuration.md +114 -0
- package/skills/ai/mcp-management/references/gemini-cli-integration.md +221 -0
- package/skills/ai/mcp-management/references/mcp-protocol.md +116 -0
- package/skills/ai/mcp-management/scripts/.env.example +10 -0
- package/skills/ai/mcp-management/scripts/cli.ts +195 -0
- package/skills/ai/mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/ai/mcp-management/scripts/dist/cli.js +160 -0
- package/skills/ai/mcp-management/scripts/dist/mcp-client.js +183 -0
- package/skills/ai/mcp-management/scripts/mcp-client.ts +230 -0
- package/skills/ai/mcp-management/scripts/package.json +20 -0
- package/skills/ai/mcp-management/scripts/tsconfig.json +15 -0
- package/skills/core/brainstorm/SKILL.md +164 -0
- package/skills/core/brainstorm/scripts/frame-template.html +214 -0
- package/skills/core/brainstorm/scripts/helper.js +88 -0
- package/skills/core/brainstorm/scripts/server.cjs +338 -0
- package/skills/core/brainstorm/scripts/start-server.sh +153 -0
- package/skills/core/brainstorm/scripts/stop-server.sh +55 -0
- package/skills/core/brainstorm/spec-document-reviewer-prompt.md +49 -0
- package/skills/core/brainstorm/visual-companion.md +286 -0
- package/skills/core/code-review/SKILL.md +147 -0
- package/skills/core/code-review/references/code-review-reception.md +113 -0
- package/skills/core/code-review/references/codebase-scan-workflow.md +29 -0
- package/skills/core/code-review/references/edge-case-scouting.md +119 -0
- package/skills/core/code-review/references/parallel-review-workflow.md +69 -0
- package/skills/core/code-review/references/requesting-code-review.md +116 -0
- package/skills/core/code-review/references/task-management-reviews.md +140 -0
- package/skills/core/code-review/references/verification-before-completion.md +139 -0
- package/skills/core/cook/README.md +86 -0
- package/skills/core/cook/SKILL.md +113 -0
- package/skills/core/cook/references/intent-detection.md +101 -0
- package/skills/core/cook/references/review-cycle.md +75 -0
- package/skills/core/cook/references/subagent-patterns.md +75 -0
- package/skills/core/cook/references/workflow-steps.md +172 -0
- package/skills/core/debug/SKILL.md +121 -0
- package/skills/core/debug/references/defense-in-depth.md +124 -0
- package/skills/core/debug/references/frontend-verification.md +103 -0
- package/skills/core/debug/references/investigation-methodology.md +101 -0
- package/skills/core/debug/references/log-and-ci-analysis.md +97 -0
- package/skills/core/debug/references/performance-diagnostics.md +113 -0
- package/skills/core/debug/references/reporting-standards.md +122 -0
- package/skills/core/debug/references/root-cause-tracing.md +122 -0
- package/skills/core/debug/references/systematic-debugging.md +102 -0
- package/skills/core/debug/references/task-management-debugging.md +155 -0
- package/skills/core/debug/references/verification.md +123 -0
- package/skills/core/debug/scripts/find-polluter.sh +63 -0
- package/skills/core/debug/scripts/find-polluter.test.md +102 -0
- package/skills/core/execute/SKILL.md +70 -0
- package/skills/core/fix/SKILL.md +111 -0
- package/skills/core/fix/references/complexity-assessment.md +72 -0
- package/skills/core/fix/references/mode-selection.md +46 -0
- package/skills/core/fix/references/parallel-exploration.md +100 -0
- package/skills/core/fix/references/review-cycle.md +77 -0
- package/skills/core/fix/references/skill-activation-matrix.md +78 -0
- package/skills/core/fix/references/task-orchestration.md +103 -0
- package/skills/core/fix/references/workflow-ci.md +28 -0
- package/skills/core/fix/references/workflow-deep.md +122 -0
- package/skills/core/fix/references/workflow-logs.md +72 -0
- package/skills/core/fix/references/workflow-quick.md +59 -0
- package/skills/core/fix/references/workflow-standard.md +111 -0
- package/skills/core/fix/references/workflow-test.md +75 -0
- package/skills/core/fix/references/workflow-types.md +33 -0
- package/skills/core/fix/references/workflow-ui.md +75 -0
- package/skills/core/plan/SKILL.md +145 -0
- package/skills/core/plan/plan-document-reviewer-prompt.md +49 -0
- package/skills/core/subagent-dev/SKILL.md +277 -0
- package/skills/core/subagent-dev/code-quality-reviewer-prompt.md +26 -0
- package/skills/core/subagent-dev/implementer-prompt.md +113 -0
- package/skills/core/subagent-dev/spec-reviewer-prompt.md +61 -0
- package/skills/core/tdd/SKILL.md +371 -0
- package/skills/core/tdd/testing-anti-patterns.md +299 -0
- package/skills/core/test/SKILL.md +109 -0
- package/skills/core/test/references/report-format.md +58 -0
- package/skills/core/test/references/test-execution-workflow.md +103 -0
- package/skills/core/test/references/ui-testing-workflow.md +65 -0
- package/skills/core/verify/SKILL.md +139 -0
- package/skills/dev/backend-dev/SKILL.md +96 -0
- package/skills/dev/backend-dev/references/backend-api-design.md +495 -0
- package/skills/dev/backend-dev/references/backend-architecture.md +454 -0
- package/skills/dev/backend-dev/references/backend-authentication.md +338 -0
- package/skills/dev/backend-dev/references/backend-code-quality.md +659 -0
- package/skills/dev/backend-dev/references/backend-debugging.md +904 -0
- package/skills/dev/backend-dev/references/backend-devops.md +494 -0
- package/skills/dev/backend-dev/references/backend-mindset.md +387 -0
- package/skills/dev/backend-dev/references/backend-performance.md +397 -0
- package/skills/dev/backend-dev/references/backend-security.md +290 -0
- package/skills/dev/backend-dev/references/backend-technologies.md +256 -0
- package/skills/dev/backend-dev/references/backend-testing.md +429 -0
- package/skills/dev/context-engineering/SKILL.md +108 -0
- package/skills/dev/context-engineering/references/context-compression.md +84 -0
- package/skills/dev/context-engineering/references/context-degradation.md +93 -0
- package/skills/dev/context-engineering/references/context-fundamentals.md +75 -0
- package/skills/dev/context-engineering/references/context-optimization.md +82 -0
- package/skills/dev/context-engineering/references/evaluation.md +89 -0
- package/skills/dev/context-engineering/references/memory-systems.md +88 -0
- package/skills/dev/context-engineering/references/multi-agent-patterns.md +90 -0
- package/skills/dev/context-engineering/references/project-development.md +97 -0
- package/skills/dev/context-engineering/references/runtime-awareness.md +202 -0
- package/skills/dev/context-engineering/references/tool-design.md +86 -0
- package/skills/dev/context-engineering/scripts/compression_evaluator.py +349 -0
- package/skills/dev/context-engineering/scripts/context_analyzer.py +317 -0
- package/skills/dev/context-engineering/scripts/tests/test_edge_cases.py +246 -0
- package/skills/dev/databases/SKILL.md +84 -0
- package/skills/dev/databases/analytics.md +198 -0
- package/skills/dev/databases/db-design.md +188 -0
- package/skills/dev/databases/incremental-etl.md +213 -0
- package/skills/dev/databases/references/mongodb-aggregation.md +447 -0
- package/skills/dev/databases/references/mongodb-atlas.md +465 -0
- package/skills/dev/databases/references/mongodb-crud.md +408 -0
- package/skills/dev/databases/references/mongodb-indexing.md +442 -0
- package/skills/dev/databases/references/postgresql-administration.md +594 -0
- package/skills/dev/databases/references/postgresql-performance.md +527 -0
- package/skills/dev/databases/references/postgresql-psql-cli.md +467 -0
- package/skills/dev/databases/references/postgresql-queries.md +475 -0
- package/skills/dev/databases/scripts/.coverage +0 -0
- package/skills/dev/databases/scripts/db_backup.py +502 -0
- package/skills/dev/databases/scripts/db_migrate.py +426 -0
- package/skills/dev/databases/scripts/db_performance_check.py +457 -0
- package/skills/dev/databases/scripts/requirements.txt +20 -0
- package/skills/dev/databases/scripts/tests/coverage-db.json +1 -0
- package/skills/dev/databases/scripts/tests/requirements.txt +4 -0
- package/skills/dev/databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/dev/databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/dev/databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/dev/databases/stacks/bigquery.md +231 -0
- package/skills/dev/databases/stacks/d1_cloudflare.md +137 -0
- package/skills/dev/databases/stacks/mysql.md +216 -0
- package/skills/dev/databases/stacks/postgres.md +235 -0
- package/skills/dev/databases/stacks/sqlite.md +244 -0
- package/skills/dev/databases/transactional.md +176 -0
- package/skills/dev/devops/.env.example +76 -0
- package/skills/dev/devops/SKILL.md +97 -0
- package/skills/dev/devops/references/browser-rendering.md +305 -0
- package/skills/dev/devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/dev/devops/references/cloudflare-platform.md +271 -0
- package/skills/dev/devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/dev/devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/dev/devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/dev/devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/dev/devops/references/docker-basics.md +297 -0
- package/skills/dev/devops/references/docker-compose.md +292 -0
- package/skills/dev/devops/references/gcloud-platform.md +297 -0
- package/skills/dev/devops/references/gcloud-services.md +304 -0
- package/skills/dev/devops/references/kubernetes-basics.md +99 -0
- package/skills/dev/devops/references/kubernetes-helm-advanced.md +75 -0
- package/skills/dev/devops/references/kubernetes-helm.md +81 -0
- package/skills/dev/devops/references/kubernetes-kubectl.md +74 -0
- package/skills/dev/devops/references/kubernetes-security-advanced.md +98 -0
- package/skills/dev/devops/references/kubernetes-security.md +95 -0
- package/skills/dev/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
- package/skills/dev/devops/references/kubernetes-troubleshooting.md +49 -0
- package/skills/dev/devops/references/kubernetes-workflows-advanced.md +75 -0
- package/skills/dev/devops/references/kubernetes-workflows.md +78 -0
- package/skills/dev/devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/dev/devops/scripts/docker_optimize.py +332 -0
- package/skills/dev/devops/scripts/requirements.txt +20 -0
- package/skills/dev/devops/scripts/tests/requirements.txt +3 -0
- package/skills/dev/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/dev/devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/dev/frontend-design/SKILL.md +78 -0
- package/skills/dev/frontend-design/references/ai-multimodal-overview.md +165 -0
- package/skills/dev/frontend-design/references/analysis-best-practices.md +80 -0
- package/skills/dev/frontend-design/references/analysis-prompts.md +141 -0
- package/skills/dev/frontend-design/references/analysis-techniques.md +118 -0
- package/skills/dev/frontend-design/references/animejs.md +396 -0
- package/skills/dev/frontend-design/references/asset-generation.md +337 -0
- package/skills/dev/frontend-design/references/design-extraction-overview.md +71 -0
- package/skills/dev/frontend-design/references/extraction-best-practices.md +141 -0
- package/skills/dev/frontend-design/references/extraction-output-templates.md +162 -0
- package/skills/dev/frontend-design/references/extraction-prompts.md +127 -0
- package/skills/dev/frontend-design/references/technical-accessibility.md +119 -0
- package/skills/dev/frontend-design/references/technical-best-practices.md +97 -0
- package/skills/dev/frontend-design/references/technical-optimization.md +44 -0
- package/skills/dev/frontend-design/references/technical-overview.md +90 -0
- package/skills/dev/frontend-design/references/technical-workflows.md +150 -0
- package/skills/dev/frontend-design/references/visual-analysis-overview.md +95 -0
- package/skills/dev/frontend-design/references/workflow-3d.md +102 -0
- package/skills/dev/frontend-design/references/workflow-describe.md +87 -0
- package/skills/dev/frontend-design/references/workflow-immersive.md +87 -0
- package/skills/dev/frontend-design/references/workflow-quick.md +57 -0
- package/skills/dev/frontend-design/references/workflow-screenshot.md +63 -0
- package/skills/dev/frontend-design/references/workflow-video.md +74 -0
- package/skills/dev/frontend-dev/SKILL.md +400 -0
- package/skills/dev/frontend-dev/resources/common-patterns.md +331 -0
- package/skills/dev/frontend-dev/resources/complete-examples.md +872 -0
- package/skills/dev/frontend-dev/resources/component-patterns.md +502 -0
- package/skills/dev/frontend-dev/resources/data-fetching.md +767 -0
- package/skills/dev/frontend-dev/resources/file-organization.md +502 -0
- package/skills/dev/frontend-dev/resources/loading-and-error-states.md +501 -0
- package/skills/dev/frontend-dev/resources/performance.md +406 -0
- package/skills/dev/frontend-dev/resources/routing-guide.md +364 -0
- package/skills/dev/frontend-dev/resources/styling-guide.md +428 -0
- package/skills/dev/frontend-dev/resources/typescript-standards.md +418 -0
- package/skills/dev/git/SKILL.md +114 -0
- package/skills/dev/git/references/branch-management.md +88 -0
- package/skills/dev/git/references/commit-standards.md +46 -0
- package/skills/dev/git/references/gh-cli-guide.md +109 -0
- package/skills/dev/git/references/safety-protocols.md +69 -0
- package/skills/dev/git/references/workflow-commit.md +58 -0
- package/skills/dev/git/references/workflow-merge.md +48 -0
- package/skills/dev/git/references/workflow-pr.md +58 -0
- package/skills/dev/git/references/workflow-push.md +52 -0
- package/skills/dev/git-worktree/SKILL.md +218 -0
- package/skills/utils/ask/SKILL.md +58 -0
- package/skills/utils/bootstrap/SKILL.md +101 -0
- package/skills/utils/bootstrap/references/shared-phases.md +59 -0
- package/skills/utils/bootstrap/references/workflow-auto.md +52 -0
- package/skills/utils/bootstrap/references/workflow-fast.md +50 -0
- package/skills/utils/bootstrap/references/workflow-full.md +60 -0
- package/skills/utils/bootstrap/references/workflow-parallel.md +59 -0
- package/skills/utils/ck-help/SKILL.md +102 -0
- package/skills/utils/ck-help/scripts/ck-help.py +1321 -0
- package/skills/utils/ck-help/scripts/commands_data.yaml +3 -0
- package/skills/utils/ck-help/scripts/skills_data.yaml +593 -0
- package/skills/utils/copywriting/SKILL.md +94 -0
- package/skills/utils/copywriting/references/copy-formulas.md +150 -0
- package/skills/utils/copywriting/references/cta-patterns.md +168 -0
- package/skills/utils/copywriting/references/email-copy.md +193 -0
- package/skills/utils/copywriting/references/headline-templates.md +140 -0
- package/skills/utils/copywriting/references/landing-page-copy.md +175 -0
- package/skills/utils/copywriting/references/power-words.md +189 -0
- package/skills/utils/copywriting/references/social-media-copy.md +222 -0
- package/skills/utils/copywriting/references/workflow-cro.md +83 -0
- package/skills/utils/copywriting/references/workflow-enhance.md +32 -0
- package/skills/utils/copywriting/references/workflow-fast.md +29 -0
- package/skills/utils/copywriting/references/workflow-good.md +39 -0
- package/skills/utils/copywriting/references/writing-styles.md +247 -0
- package/skills/utils/copywriting/scripts/extract-writing-styles.py +308 -0
- package/skills/utils/copywriting/templates/copy-brief.md +49 -0
- package/skills/utils/docs/SKILL.md +55 -0
- package/skills/utils/docs/references/init-workflow.md +32 -0
- package/skills/utils/docs/references/summarize-workflow.md +18 -0
- package/skills/utils/docs/references/update-workflow.md +59 -0
- package/skills/utils/journal/SKILL.md +11 -0
- package/skills/utils/kanban/SKILL.md +99 -0
- package/skills/utils/preview/SKILL.md +75 -0
- package/skills/utils/preview/references/generation-modes.md +95 -0
- package/skills/utils/preview/references/view-mode.md +42 -0
- package/skills/utils/repomix/SKILL.md +248 -0
- package/skills/utils/repomix/references/configuration.md +211 -0
- package/skills/utils/repomix/references/usage-patterns.md +232 -0
- package/skills/utils/repomix/scripts/.coverage +0 -0
- package/skills/utils/repomix/scripts/README.md +179 -0
- package/skills/utils/repomix/scripts/repomix_batch.py +455 -0
- package/skills/utils/repomix/scripts/repos.example.json +15 -0
- package/skills/utils/repomix/scripts/requirements.txt +15 -0
- package/skills/utils/repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/utils/research/SKILL.md +171 -0
- package/skills/utils/scout/SKILL.md +89 -0
- package/skills/utils/scout/references/external-scouting.md +140 -0
- package/skills/utils/scout/references/internal-scouting.md +119 -0
- package/skills/utils/scout/references/task-management-scouting.md +125 -0
- package/skills/utils/sequential-thinking/.env.example +8 -0
- package/skills/utils/sequential-thinking/README.md +183 -0
- package/skills/utils/sequential-thinking/SKILL.md +95 -0
- package/skills/utils/sequential-thinking/package.json +31 -0
- package/skills/utils/sequential-thinking/references/advanced-strategies.md +79 -0
- package/skills/utils/sequential-thinking/references/advanced-techniques.md +76 -0
- package/skills/utils/sequential-thinking/references/core-patterns.md +95 -0
- package/skills/utils/sequential-thinking/references/examples-api.md +88 -0
- package/skills/utils/sequential-thinking/references/examples-architecture.md +94 -0
- package/skills/utils/sequential-thinking/references/examples-debug.md +90 -0
- package/skills/utils/sequential-thinking/scripts/format-thought.js +159 -0
- package/skills/utils/sequential-thinking/scripts/process-thought.js +236 -0
- package/skills/utils/sequential-thinking/tests/format-thought.test.js +133 -0
- package/skills/utils/sequential-thinking/tests/process-thought.test.js +215 -0
- package/skills/utils/write-skill/SKILL.md +655 -0
- package/skills/utils/write-skill/anthropic-best-practices.md +1150 -0
- package/skills/utils/write-skill/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/utils/write-skill/graphviz-conventions.dot +172 -0
- package/skills/utils/write-skill/persuasion-principles.md +187 -0
- package/skills/utils/write-skill/render-graphs.js +168 -0
- package/skills/utils/write-skill/testing-skills-with-subagents.md +384 -0
- package/src/commands/init.js +238 -0
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
# Video Analysis Reference
|
|
2
|
+
|
|
3
|
+
Comprehensive guide for video understanding, temporal analysis, and YouTube processing using Gemini API.
|
|
4
|
+
|
|
5
|
+
> **Note**: This guide covers video *analysis* (understanding existing videos). For video *generation* (creating new videos), see [Video Generation Reference](./video-generation.md).
|
|
6
|
+
|
|
7
|
+
## Core Capabilities
|
|
8
|
+
|
|
9
|
+
- **Video Summarization**: Create concise summaries
|
|
10
|
+
- **Question Answering**: Answer specific questions about content
|
|
11
|
+
- **Transcription**: Audio transcription with visual descriptions
|
|
12
|
+
- **Timestamp References**: Query specific moments (MM:SS format)
|
|
13
|
+
- **Video Clipping**: Process specific segments
|
|
14
|
+
- **Scene Detection**: Identify scene changes and transitions
|
|
15
|
+
- **Multiple Videos**: Compare up to 10 videos (2.5+)
|
|
16
|
+
- **YouTube Support**: Analyze YouTube videos directly
|
|
17
|
+
- **Custom Frame Rate**: Adjust FPS sampling
|
|
18
|
+
|
|
19
|
+
## Supported Formats
|
|
20
|
+
|
|
21
|
+
- MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV, 3GPP
|
|
22
|
+
|
|
23
|
+
## Model Selection
|
|
24
|
+
|
|
25
|
+
### Gemini 3 Series (Latest)
|
|
26
|
+
- **gemini-3-pro-preview**: Latest, agentic workflows, 1M context, dynamic thinking
|
|
27
|
+
|
|
28
|
+
### Gemini 2.5 Series (Recommended)
|
|
29
|
+
- **gemini-2.5-pro**: Best quality, 1M-2M context
|
|
30
|
+
- **gemini-2.5-flash**: Balanced, 1M-2M context (recommended)
|
|
31
|
+
|
|
32
|
+
### Context Windows
|
|
33
|
+
- **2M token models**: ~2 hours (default) or ~6 hours (low-res)
|
|
34
|
+
- **1M token models**: ~1 hour (default) or ~3 hours (low-res)
|
|
35
|
+
|
|
36
|
+
## Basic Video Analysis
|
|
37
|
+
|
|
38
|
+
### Local Video
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from google import genai
|
|
42
|
+
import os
|
|
43
|
+
|
|
44
|
+
client = genai.Client(api_key=os.getenv('GEMINI_API_KEY'))
|
|
45
|
+
|
|
46
|
+
# Upload video (File API for >20MB)
|
|
47
|
+
myfile = client.files.upload(file='video.mp4')
|
|
48
|
+
|
|
49
|
+
# Wait for processing
|
|
50
|
+
import time
|
|
51
|
+
while myfile.state.name == 'PROCESSING':
|
|
52
|
+
time.sleep(1)
|
|
53
|
+
myfile = client.files.get(name=myfile.name)
|
|
54
|
+
|
|
55
|
+
if myfile.state.name == 'FAILED':
|
|
56
|
+
raise ValueError('Video processing failed')
|
|
57
|
+
|
|
58
|
+
# Analyze
|
|
59
|
+
response = client.models.generate_content(
|
|
60
|
+
model='gemini-2.5-flash',
|
|
61
|
+
contents=['Summarize this video in 3 key points', myfile]
|
|
62
|
+
)
|
|
63
|
+
print(response.text)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### YouTube Video
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from google.genai import types
|
|
70
|
+
|
|
71
|
+
response = client.models.generate_content(
|
|
72
|
+
model='gemini-2.5-flash',
|
|
73
|
+
contents=[
|
|
74
|
+
'Summarize the main topics discussed',
|
|
75
|
+
types.Part.from_uri(
|
|
76
|
+
uri='https://www.youtube.com/watch?v=VIDEO_ID',
|
|
77
|
+
mime_type='video/mp4'
|
|
78
|
+
)
|
|
79
|
+
]
|
|
80
|
+
)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Inline Video (<20MB)
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
with open('short-clip.mp4', 'rb') as f:
|
|
87
|
+
video_bytes = f.read()
|
|
88
|
+
|
|
89
|
+
response = client.models.generate_content(
|
|
90
|
+
model='gemini-2.5-flash',
|
|
91
|
+
contents=[
|
|
92
|
+
'What happens in this video?',
|
|
93
|
+
types.Part.from_bytes(data=video_bytes, mime_type='video/mp4')
|
|
94
|
+
]
|
|
95
|
+
)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Advanced Features
|
|
99
|
+
|
|
100
|
+
### Video Clipping
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
# Analyze specific time range
|
|
104
|
+
response = client.models.generate_content(
|
|
105
|
+
model='gemini-2.5-flash',
|
|
106
|
+
contents=[
|
|
107
|
+
'Summarize this segment',
|
|
108
|
+
types.Part.from_video_metadata(
|
|
109
|
+
file_uri=myfile.uri,
|
|
110
|
+
start_offset='40s',
|
|
111
|
+
end_offset='80s'
|
|
112
|
+
)
|
|
113
|
+
]
|
|
114
|
+
)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Custom Frame Rate
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
# Lower FPS for static content (saves tokens)
|
|
121
|
+
response = client.models.generate_content(
|
|
122
|
+
model='gemini-2.5-flash',
|
|
123
|
+
contents=[
|
|
124
|
+
'Analyze this presentation',
|
|
125
|
+
types.Part.from_video_metadata(
|
|
126
|
+
file_uri=myfile.uri,
|
|
127
|
+
fps=0.5 # Sample every 2 seconds
|
|
128
|
+
)
|
|
129
|
+
]
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
# Higher FPS for fast-moving content
|
|
133
|
+
response = client.models.generate_content(
|
|
134
|
+
model='gemini-2.5-flash',
|
|
135
|
+
contents=[
|
|
136
|
+
'Analyze rapid movements in this sports video',
|
|
137
|
+
types.Part.from_video_metadata(
|
|
138
|
+
file_uri=myfile.uri,
|
|
139
|
+
fps=5 # Sample 5 times per second
|
|
140
|
+
)
|
|
141
|
+
]
|
|
142
|
+
)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Multiple Videos (2.5+)
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
video1 = client.files.upload(file='demo1.mp4')
|
|
149
|
+
video2 = client.files.upload(file='demo2.mp4')
|
|
150
|
+
|
|
151
|
+
# Wait for processing
|
|
152
|
+
for video in [video1, video2]:
|
|
153
|
+
while video.state.name == 'PROCESSING':
|
|
154
|
+
time.sleep(1)
|
|
155
|
+
video = client.files.get(name=video.name)
|
|
156
|
+
|
|
157
|
+
response = client.models.generate_content(
|
|
158
|
+
model='gemini-2.5-pro',
|
|
159
|
+
contents=[
|
|
160
|
+
'Compare these two product demos. Which explains features better?',
|
|
161
|
+
video1,
|
|
162
|
+
video2
|
|
163
|
+
]
|
|
164
|
+
)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Temporal Understanding
|
|
168
|
+
|
|
169
|
+
### Timestamp-Based Questions
|
|
170
|
+
|
|
171
|
+
```python
|
|
172
|
+
response = client.models.generate_content(
|
|
173
|
+
model='gemini-2.5-flash',
|
|
174
|
+
contents=[
|
|
175
|
+
'What happens at 01:15 and how does it relate to 02:30?',
|
|
176
|
+
myfile
|
|
177
|
+
]
|
|
178
|
+
)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Timeline Creation
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
response = client.models.generate_content(
|
|
185
|
+
model='gemini-2.5-flash',
|
|
186
|
+
contents=[
|
|
187
|
+
'''Create a timeline with timestamps:
|
|
188
|
+
- Key events
|
|
189
|
+
- Scene changes
|
|
190
|
+
- Important moments
|
|
191
|
+
Format: MM:SS - Description
|
|
192
|
+
''',
|
|
193
|
+
myfile
|
|
194
|
+
]
|
|
195
|
+
)
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Scene Detection
|
|
199
|
+
|
|
200
|
+
```python
|
|
201
|
+
response = client.models.generate_content(
|
|
202
|
+
model='gemini-2.5-flash',
|
|
203
|
+
contents=[
|
|
204
|
+
'Identify all scene changes with timestamps and describe each scene',
|
|
205
|
+
myfile
|
|
206
|
+
]
|
|
207
|
+
)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Transcription
|
|
211
|
+
|
|
212
|
+
### Basic Transcription
|
|
213
|
+
|
|
214
|
+
```python
|
|
215
|
+
response = client.models.generate_content(
|
|
216
|
+
model='gemini-2.5-flash',
|
|
217
|
+
contents=[
|
|
218
|
+
'Transcribe the audio from this video',
|
|
219
|
+
myfile
|
|
220
|
+
]
|
|
221
|
+
)
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### With Visual Descriptions
|
|
225
|
+
|
|
226
|
+
```python
|
|
227
|
+
response = client.models.generate_content(
|
|
228
|
+
model='gemini-2.5-flash',
|
|
229
|
+
contents=[
|
|
230
|
+
'''Transcribe with visual context:
|
|
231
|
+
- Audio transcription
|
|
232
|
+
- Visual descriptions of important moments
|
|
233
|
+
- Timestamps for salient events
|
|
234
|
+
''',
|
|
235
|
+
myfile
|
|
236
|
+
]
|
|
237
|
+
)
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Speaker Identification
|
|
241
|
+
|
|
242
|
+
```python
|
|
243
|
+
response = client.models.generate_content(
|
|
244
|
+
model='gemini-2.5-flash',
|
|
245
|
+
contents=[
|
|
246
|
+
'Transcribe with speaker labels and timestamps',
|
|
247
|
+
myfile
|
|
248
|
+
]
|
|
249
|
+
)
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Common Use Cases
|
|
253
|
+
|
|
254
|
+
### 1. Video Summarization
|
|
255
|
+
|
|
256
|
+
```python
|
|
257
|
+
response = client.models.generate_content(
|
|
258
|
+
model='gemini-2.5-flash',
|
|
259
|
+
contents=[
|
|
260
|
+
'''Summarize this video:
|
|
261
|
+
1. Main topic and purpose
|
|
262
|
+
2. Key points with timestamps
|
|
263
|
+
3. Conclusion or call-to-action
|
|
264
|
+
''',
|
|
265
|
+
myfile
|
|
266
|
+
]
|
|
267
|
+
)
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### 2. Educational Content
|
|
271
|
+
|
|
272
|
+
```python
|
|
273
|
+
response = client.models.generate_content(
|
|
274
|
+
model='gemini-2.5-flash',
|
|
275
|
+
contents=[
|
|
276
|
+
'''Create educational materials:
|
|
277
|
+
1. List key concepts taught
|
|
278
|
+
2. Create 5 quiz questions with answers
|
|
279
|
+
3. Provide timestamp for each concept
|
|
280
|
+
''',
|
|
281
|
+
myfile
|
|
282
|
+
]
|
|
283
|
+
)
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### 3. Action Detection
|
|
287
|
+
|
|
288
|
+
```python
|
|
289
|
+
response = client.models.generate_content(
|
|
290
|
+
model='gemini-2.5-flash',
|
|
291
|
+
contents=[
|
|
292
|
+
'List all actions performed in this tutorial with timestamps',
|
|
293
|
+
myfile
|
|
294
|
+
]
|
|
295
|
+
)
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### 4. Content Moderation
|
|
299
|
+
|
|
300
|
+
```python
|
|
301
|
+
response = client.models.generate_content(
|
|
302
|
+
model='gemini-2.5-flash',
|
|
303
|
+
contents=[
|
|
304
|
+
'''Review video content:
|
|
305
|
+
1. Identify any problematic content
|
|
306
|
+
2. Note timestamps of concerns
|
|
307
|
+
3. Provide content rating recommendation
|
|
308
|
+
''',
|
|
309
|
+
myfile
|
|
310
|
+
]
|
|
311
|
+
)
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### 5. Interview Analysis
|
|
315
|
+
|
|
316
|
+
```python
|
|
317
|
+
response = client.models.generate_content(
|
|
318
|
+
model='gemini-2.5-flash',
|
|
319
|
+
contents=[
|
|
320
|
+
'''Analyze interview:
|
|
321
|
+
1. Questions asked (timestamps)
|
|
322
|
+
2. Key responses
|
|
323
|
+
3. Candidate body language and demeanor
|
|
324
|
+
4. Overall assessment
|
|
325
|
+
''',
|
|
326
|
+
myfile
|
|
327
|
+
]
|
|
328
|
+
)
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### 6. Sports Analysis
|
|
332
|
+
|
|
333
|
+
```python
|
|
334
|
+
response = client.models.generate_content(
|
|
335
|
+
model='gemini-2.5-flash',
|
|
336
|
+
contents=[
|
|
337
|
+
'''Analyze sports video:
|
|
338
|
+
1. Key plays with timestamps
|
|
339
|
+
2. Player movements and positioning
|
|
340
|
+
3. Game strategy observations
|
|
341
|
+
''',
|
|
342
|
+
types.Part.from_video_metadata(
|
|
343
|
+
file_uri=myfile.uri,
|
|
344
|
+
fps=5 # Higher FPS for fast action
|
|
345
|
+
)
|
|
346
|
+
]
|
|
347
|
+
)
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## YouTube Specific Features
|
|
351
|
+
|
|
352
|
+
### Public Video Requirements
|
|
353
|
+
|
|
354
|
+
- Video must be public (not private or unlisted)
|
|
355
|
+
- No age-restricted content
|
|
356
|
+
- Valid video ID required
|
|
357
|
+
|
|
358
|
+
### Usage Example
|
|
359
|
+
|
|
360
|
+
```python
|
|
361
|
+
# YouTube URL
|
|
362
|
+
youtube_uri = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
|
|
363
|
+
|
|
364
|
+
response = client.models.generate_content(
|
|
365
|
+
model='gemini-2.5-flash',
|
|
366
|
+
contents=[
|
|
367
|
+
'Create chapter markers with timestamps',
|
|
368
|
+
types.Part.from_uri(uri=youtube_uri, mime_type='video/mp4')
|
|
369
|
+
]
|
|
370
|
+
)
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Rate Limits
|
|
374
|
+
|
|
375
|
+
- **Free tier**: 8 hours of YouTube video per day
|
|
376
|
+
- **Paid tier**: No length-based limits
|
|
377
|
+
- Public videos only
|
|
378
|
+
|
|
379
|
+
## Token Calculation
|
|
380
|
+
|
|
381
|
+
Video tokens depend on resolution and FPS:
|
|
382
|
+
|
|
383
|
+
**Default resolution** (~300 tokens/second):
|
|
384
|
+
- 1 minute = 18,000 tokens
|
|
385
|
+
- 10 minutes = 180,000 tokens
|
|
386
|
+
- 1 hour = 1,080,000 tokens
|
|
387
|
+
|
|
388
|
+
**Low resolution** (~100 tokens/second):
|
|
389
|
+
- 1 minute = 6,000 tokens
|
|
390
|
+
- 10 minutes = 60,000 tokens
|
|
391
|
+
- 1 hour = 360,000 tokens
|
|
392
|
+
|
|
393
|
+
**Context windows**:
|
|
394
|
+
- 2M tokens ≈ 2 hours (default) or 6 hours (low-res)
|
|
395
|
+
- 1M tokens ≈ 1 hour (default) or 3 hours (low-res)
|
|
396
|
+
|
|
397
|
+
## Best Practices
|
|
398
|
+
|
|
399
|
+
### File Management
|
|
400
|
+
|
|
401
|
+
1. Use File API for videos >20MB (most videos)
|
|
402
|
+
2. Wait for ACTIVE state before analysis
|
|
403
|
+
3. Files auto-delete after 48 hours
|
|
404
|
+
4. Clean up manually:
|
|
405
|
+
```python
|
|
406
|
+
client.files.delete(name=myfile.name)
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### Optimization Strategies
|
|
410
|
+
|
|
411
|
+
**Reduce token usage**:
|
|
412
|
+
- Process specific segments using start/end offsets
|
|
413
|
+
- Use lower FPS for static content
|
|
414
|
+
- Use low-resolution mode for long videos
|
|
415
|
+
- Split very long videos into chunks
|
|
416
|
+
|
|
417
|
+
**Improve accuracy**:
|
|
418
|
+
- Provide context in prompts
|
|
419
|
+
- Use higher FPS for fast-moving content
|
|
420
|
+
- Use Pro model for complex analysis
|
|
421
|
+
- Be specific about what to extract
|
|
422
|
+
|
|
423
|
+
### Prompt Engineering
|
|
424
|
+
|
|
425
|
+
**Effective prompts**:
|
|
426
|
+
- "Summarize key points with timestamps in MM:SS format"
|
|
427
|
+
- "Identify all scene changes and describe each scene"
|
|
428
|
+
- "Extract action items mentioned with timestamps"
|
|
429
|
+
- "Compare these two videos on: X, Y, Z criteria"
|
|
430
|
+
|
|
431
|
+
**Structured output**:
|
|
432
|
+
```python
|
|
433
|
+
from pydantic import BaseModel
|
|
434
|
+
from typing import List
|
|
435
|
+
|
|
436
|
+
class VideoEvent(BaseModel):
|
|
437
|
+
timestamp: str # MM:SS format
|
|
438
|
+
description: str
|
|
439
|
+
category: str
|
|
440
|
+
|
|
441
|
+
class VideoAnalysis(BaseModel):
|
|
442
|
+
summary: str
|
|
443
|
+
events: List[VideoEvent]
|
|
444
|
+
duration: str
|
|
445
|
+
|
|
446
|
+
response = client.models.generate_content(
|
|
447
|
+
model='gemini-2.5-flash',
|
|
448
|
+
contents=['Analyze this video', myfile],
|
|
449
|
+
config=genai.types.GenerateContentConfig(
|
|
450
|
+
response_mime_type='application/json',
|
|
451
|
+
response_schema=VideoAnalysis
|
|
452
|
+
)
|
|
453
|
+
)
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
### Error Handling
|
|
457
|
+
|
|
458
|
+
```python
|
|
459
|
+
import time
|
|
460
|
+
|
|
461
|
+
def upload_and_process_video(file_path, max_wait=300):
|
|
462
|
+
"""Upload video and wait for processing"""
|
|
463
|
+
myfile = client.files.upload(file=file_path)
|
|
464
|
+
|
|
465
|
+
elapsed = 0
|
|
466
|
+
while myfile.state.name == 'PROCESSING' and elapsed < max_wait:
|
|
467
|
+
time.sleep(5)
|
|
468
|
+
myfile = client.files.get(name=myfile.name)
|
|
469
|
+
elapsed += 5
|
|
470
|
+
|
|
471
|
+
if myfile.state.name == 'FAILED':
|
|
472
|
+
raise ValueError(f'Video processing failed: {myfile.state.name}')
|
|
473
|
+
|
|
474
|
+
if myfile.state.name == 'PROCESSING':
|
|
475
|
+
raise TimeoutError(f'Processing timeout after {max_wait}s')
|
|
476
|
+
|
|
477
|
+
return myfile
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## Cost Optimization
|
|
481
|
+
|
|
482
|
+
**Token costs** (Gemini 2.5 Flash at $1/1M):
|
|
483
|
+
- 1 minute video (default): 18,000 tokens = $0.018
|
|
484
|
+
- 10 minute video: 180,000 tokens = $0.18
|
|
485
|
+
- 1 hour video: 1,080,000 tokens = $1.08
|
|
486
|
+
|
|
487
|
+
**Strategies**:
|
|
488
|
+
- Use video clipping for specific segments
|
|
489
|
+
- Lower FPS for static content
|
|
490
|
+
- Use low-resolution mode for long videos
|
|
491
|
+
- Batch related queries on same video
|
|
492
|
+
- Use context caching for repeated queries
|
|
493
|
+
|
|
494
|
+
## Limitations
|
|
495
|
+
|
|
496
|
+
- Maximum 6 hours (low-res) or 2 hours (default)
|
|
497
|
+
- YouTube videos must be public
|
|
498
|
+
- No live streaming analysis
|
|
499
|
+
- Files expire after 48 hours
|
|
500
|
+
- Processing time varies by video length
|
|
501
|
+
- No real-time processing
|
|
502
|
+
- Limited to 10 videos per request (2.5+)
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
## Related References
|
|
507
|
+
|
|
508
|
+
**Current**: Video Analysis
|
|
509
|
+
|
|
510
|
+
**Related Capabilities**:
|
|
511
|
+
- [Video Generation](./video-generation.md) - Creating videos from text/images
|
|
512
|
+
- [Audio Processing](./audio-processing.md) - Extract and analyze audio tracks
|
|
513
|
+
- [Image Understanding](./vision-understanding.md) - Analyze individual frames
|
|
514
|
+
|
|
515
|
+
**Back to**: [AI Multimodal Skill](../SKILL.md)
|