@caddis/cli 0.0.0 → 0.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/LICENSE +21 -0
- package/README.md +163 -1
- package/bundles/antigravity-plugin/agents/code-reviewer.md +47 -0
- package/bundles/antigravity-plugin/agents/preflight.md +53 -0
- package/bundles/antigravity-plugin/guard_agy.py +338 -0
- package/bundles/antigravity-plugin/hooks.json +36 -0
- package/bundles/antigravity-plugin/mcp_config.json +8 -0
- package/bundles/antigravity-plugin/mcp_ping_server.py +55 -0
- package/bundles/antigravity-plugin/plugin.json +5 -0
- package/bundles/antigravity-plugin/session_end_agy.py +57 -0
- package/bundles/antigravity-plugin/skills/_registry.md +115 -0
- package/bundles/antigravity-plugin/skills/add-rules/SKILL.md +45 -0
- package/bundles/antigravity-plugin/skills/api-design/SKILL.md +249 -0
- package/bundles/antigravity-plugin/skills/backend-development/SKILL.md +305 -0
- package/bundles/antigravity-plugin/skills/best-practices/SKILL.md +500 -0
- package/bundles/antigravity-plugin/skills/best-practices/agents/best-practices-referencer.md +263 -0
- package/bundles/antigravity-plugin/skills/best-practices/agents/codebase-context-builder.md +326 -0
- package/bundles/antigravity-plugin/skills/best-practices/agents/task-intent-analyzer.md +245 -0
- package/bundles/antigravity-plugin/skills/best-practices/references/anti-patterns.md +571 -0
- package/bundles/antigravity-plugin/skills/best-practices/references/before-after-examples.md +1114 -0
- package/bundles/antigravity-plugin/skills/best-practices/references/best-practices-guide.md +513 -0
- package/bundles/antigravity-plugin/skills/best-practices/references/common-workflows.md +692 -0
- package/bundles/antigravity-plugin/skills/best-practices/references/prompt-patterns.md +547 -0
- package/bundles/antigravity-plugin/skills/brainstorming/SKILL.md +57 -0
- package/bundles/antigravity-plugin/skills/ci-cd-pipeline/SKILL.md +315 -0
- package/bundles/antigravity-plugin/skills/code-documentation/SKILL.md +271 -0
- package/bundles/antigravity-plugin/skills/code-review/SKILL.md +122 -0
- package/bundles/antigravity-plugin/skills/codebase-audit/SKILL.md +204 -0
- package/bundles/antigravity-plugin/skills/context-curator/SKILL.md +157 -0
- package/bundles/antigravity-plugin/skills/cross-review/SKILL.md +40 -0
- package/bundles/antigravity-plugin/skills/css-architecture/SKILL.md +305 -0
- package/bundles/antigravity-plugin/skills/css-architecture/references/RESPONSIVE-DESIGN.md +604 -0
- package/bundles/antigravity-plugin/skills/database-design/SKILL.md +177 -0
- package/bundles/antigravity-plugin/skills/db-diagram/SKILL.md +148 -0
- package/bundles/antigravity-plugin/skills/db-diagram/scripts/sql_to_graph.py +1212 -0
- package/bundles/antigravity-plugin/skills/digress/SKILL.md +61 -0
- package/bundles/antigravity-plugin/skills/draw-io/SKILL.md +162 -0
- package/bundles/antigravity-plugin/skills/draw-io/references/aws-icons.md +677 -0
- package/bundles/antigravity-plugin/skills/draw-io/references/layout-guidelines.md +142 -0
- package/bundles/antigravity-plugin/skills/draw-io/references/troubleshooting.md +118 -0
- package/bundles/antigravity-plugin/skills/draw-io/references/workflows.md +103 -0
- package/bundles/antigravity-plugin/skills/draw-io/scripts/convert-drawio-to-png.sh +25 -0
- package/bundles/antigravity-plugin/skills/draw-io/scripts/find_aws_icon.py +79 -0
- package/bundles/antigravity-plugin/skills/error-handling/SKILL.md +260 -0
- package/bundles/antigravity-plugin/skills/excalidraw-db/SKILL.md +38 -0
- package/bundles/antigravity-plugin/skills/fastapi-dev/SKILL.md +300 -0
- package/bundles/antigravity-plugin/skills/feature-plan/SKILL.md +198 -0
- package/bundles/antigravity-plugin/skills/frontend-design/SKILL.md +193 -0
- package/bundles/antigravity-plugin/skills/frontend-design/references/my-tech-stack.md +127 -0
- package/bundles/antigravity-plugin/skills/gh-cli/SKILL.md +195 -0
- package/bundles/antigravity-plugin/skills/git-commit/SKILL.md +285 -0
- package/bundles/antigravity-plugin/skills/golden-plan/SKILL.md +577 -0
- package/bundles/antigravity-plugin/skills/handoff/SKILL.md +100 -0
- package/bundles/antigravity-plugin/skills/implement/SKILL.md +114 -0
- package/bundles/antigravity-plugin/skills/javascript-typescript/SKILL.md +142 -0
- package/bundles/antigravity-plugin/skills/kb/SKILL.md +60 -0
- package/bundles/antigravity-plugin/skills/mermaid-db/SKILL.md +33 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/SKILL.md +236 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/ENHANCEMENTS.md +264 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/MERMAID-SUMMARY.md +137 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/advanced-features.md +556 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/architecture-diagrams.md +192 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/c4-diagrams.md +410 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/class-diagrams.md +361 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/erd-diagrams.md +510 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/flowcharts.md +450 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/sequence-diagrams.md +394 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/troubleshooting.md +335 -0
- package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/workflows.md +418 -0
- package/bundles/antigravity-plugin/skills/migrate-dir/SKILL.md +68 -0
- package/bundles/antigravity-plugin/skills/mockup/SKILL.md +242 -0
- package/bundles/antigravity-plugin/skills/particle-art/SKILL.md +243 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/canvas-utils.ts +171 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/dot-field.template.tsx +203 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/flow-field.template.tsx +263 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/node-shape.template.tsx +261 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/shape-sampler.ts +281 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/stipple-morph.template.tsx +167 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/stipple.template.tsx +175 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/trail-ghost.template.tsx +266 -0
- package/bundles/antigravity-plugin/skills/particle-art/references/usage-examples.md +320 -0
- package/bundles/antigravity-plugin/skills/playwright/API_REFERENCE.md +653 -0
- package/bundles/antigravity-plugin/skills/playwright/SKILL.md +454 -0
- package/bundles/antigravity-plugin/skills/playwright/lib/helpers.js +441 -0
- package/bundles/antigravity-plugin/skills/playwright/package.json +26 -0
- package/bundles/antigravity-plugin/skills/playwright/run.js +228 -0
- package/bundles/antigravity-plugin/skills/prd/SKILL.md +107 -0
- package/bundles/antigravity-plugin/skills/preflight/SKILL.md +435 -0
- package/bundles/antigravity-plugin/skills/python/SKILL.md +388 -0
- package/bundles/antigravity-plugin/skills/react-best-practices/SKILL.md +269 -0
- package/bundles/antigravity-plugin/skills/react-dev/README.md +404 -0
- package/bundles/antigravity-plugin/skills/react-dev/SKILL.md +459 -0
- package/bundles/antigravity-plugin/skills/react-dev/examples/generic-components.md +579 -0
- package/bundles/antigravity-plugin/skills/react-dev/examples/server-components.md +579 -0
- package/bundles/antigravity-plugin/skills/react-dev/references/event-handlers.md +574 -0
- package/bundles/antigravity-plugin/skills/react-dev/references/hooks.md +456 -0
- package/bundles/antigravity-plugin/skills/react-dev/references/react-19-patterns.md +638 -0
- package/bundles/antigravity-plugin/skills/react-dev/references/react-router.md +1002 -0
- package/bundles/antigravity-plugin/skills/react-dev/references/tanstack-router.md +587 -0
- package/bundles/antigravity-plugin/skills/refactoring/SKILL.md +486 -0
- package/bundles/antigravity-plugin/skills/resume/SKILL.md +36 -0
- package/bundles/antigravity-plugin/skills/security-review/SKILL.md +196 -0
- package/bundles/antigravity-plugin/skills/setup-project-ai/SKILL.md +61 -0
- package/bundles/antigravity-plugin/skills/ship/SKILL.md +107 -0
- package/bundles/antigravity-plugin/skills/ship-merge/SKILL.md +103 -0
- package/bundles/antigravity-plugin/skills/ship-pr/SKILL.md +102 -0
- package/bundles/antigravity-plugin/skills/skill-creator/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin/skills/skill-creator/SKILL.md +491 -0
- package/bundles/antigravity-plugin/skills/skill-creator/agents/analyzer.md +274 -0
- package/bundles/antigravity-plugin/skills/skill-creator/agents/comparator.md +202 -0
- package/bundles/antigravity-plugin/skills/skill-creator/agents/grader.md +223 -0
- package/bundles/antigravity-plugin/skills/skill-creator/assets/eval_review.html +146 -0
- package/bundles/antigravity-plugin/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/bundles/antigravity-plugin/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/bundles/antigravity-plugin/skills/skill-creator/references/schemas.md +430 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/__init__.py +0 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/generate_report.py +326 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/improve_description.py +247 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/package_skill.py +136 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/run_eval.py +310 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/run_loop.py +328 -0
- package/bundles/antigravity-plugin/skills/skill-creator/scripts/utils.py +47 -0
- package/bundles/antigravity-plugin/skills/sql/SKILL.md +321 -0
- package/bundles/antigravity-plugin/skills/tdd/SKILL.md +37 -0
- package/bundles/antigravity-plugin/skills/tdd-workflow/SKILL.md +188 -0
- package/bundles/antigravity-plugin/skills/technical-writing/SKILL.md +286 -0
- package/bundles/antigravity-plugin/skills/test-strategy/SKILL.md +155 -0
- package/bundles/antigravity-plugin/skills/ui-brief/SKILL.md +84 -0
- package/bundles/antigravity-plugin/skills/ui-review/SKILL.md +176 -0
- package/bundles/antigravity-plugin/skills/ui-review/references/framework-fixes.md +471 -0
- package/bundles/antigravity-plugin/skills/ui-review/references/visual-checklist.md +236 -0
- package/bundles/antigravity-plugin/skills/usage-review/SKILL.md +77 -0
- package/bundles/antigravity-plugin/skills/use-model/SKILL.md +64 -0
- package/bundles/antigravity-plugin/skills/using-git-worktrees/SKILL.md +217 -0
- package/bundles/antigravity-plugin/skills/version/SKILL.md +18 -0
- package/bundles/antigravity-plugin/skills/warm-editorial-ui/DESIGN_TOKENS.md +487 -0
- package/bundles/antigravity-plugin/skills/warm-editorial-ui/IMPLEMENTATION_GUIDE.md +177 -0
- package/bundles/antigravity-plugin/skills/warm-editorial-ui/SKILL.md +732 -0
- package/bundles/antigravity-plugin/skills/webapp-testing/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin/skills/webapp-testing/SKILL.md +97 -0
- package/bundles/antigravity-plugin/skills/webapp-testing/examples/console_logging.py +35 -0
- package/bundles/antigravity-plugin/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/bundles/antigravity-plugin/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/bundles/antigravity-plugin/skills/webapp-testing/scripts/with_server.py +106 -0
- package/bundles/antigravity-plugin/skills/windows-deployment/SKILL.md +880 -0
- package/bundles/antigravity-plugin/skills/writing-plans/SKILL.md +384 -0
- package/bundles/antigravity-plugin/statusline-command-agy.sh +91 -0
- package/bundles/antigravity-plugin/warm_start_agy.py +149 -0
- package/bundles/antigravity-plugin-extras/plugin.json +5 -0
- package/bundles/antigravity-plugin-extras/skills/_registry.md +154 -0
- package/bundles/antigravity-plugin-extras/skills/agent-md-refactor/SKILL.md +356 -0
- package/bundles/antigravity-plugin-extras/skills/agent-orchestration/SKILL.md +517 -0
- package/bundles/antigravity-plugin-extras/skills/algorithmic-art/SKILL.md +293 -0
- package/bundles/antigravity-plugin-extras/skills/anchor-review/SKILL.md +135 -0
- package/bundles/antigravity-plugin-extras/skills/api-client-patterns/SKILL.md +367 -0
- package/bundles/antigravity-plugin-extras/skills/architecture-design/SKILL.md +244 -0
- package/bundles/antigravity-plugin-extras/skills/architecture-diagram/SKILL.md +156 -0
- package/bundles/antigravity-plugin-extras/skills/architecture-document/SKILL.md +321 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/SKILL.md +74 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/bundles/antigravity-plugin-extras/skills/ascii-art/SKILL.md +144 -0
- package/bundles/antigravity-plugin-extras/skills/asking-questions/SKILL.md +81 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/SKILL.md +118 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/cross-service/credential-management.md +450 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/browser/README.md +363 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/code-interpreter/README.md +232 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/README.md +100 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/deploy-template.sh +117 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/deployment-strategies.md +416 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/troubleshooting-guide.md +384 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/validate-deployment.sh +186 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/identity/README.md +186 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/memory/README.md +253 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/observability/README.md +517 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/runtime/README.md +215 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/SKILL.md +279 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/references/cdk-patterns.md +431 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/scripts/validate-stack.sh +240 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/SKILL.md +318 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/references/cloudwatch-alarms.md +567 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/references/operations-patterns.md +394 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/SKILL.md +758 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/deployment-best-practices.md +830 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/eda-patterns.md +1002 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/observability-best-practices.md +770 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/performance-optimization.md +671 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/security-best-practices.md +625 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/serverless-patterns.md +838 -0
- package/bundles/antigravity-plugin-extras/skills/backend-to-frontend-handoff/SKILL.md +139 -0
- package/bundles/antigravity-plugin-extras/skills/banner-design/SKILL.md +188 -0
- package/bundles/antigravity-plugin-extras/skills/brand-design/SKILL.md +298 -0
- package/bundles/antigravity-plugin-extras/skills/brand-guidelines/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/brand-guidelines/SKILL.md +118 -0
- package/bundles/antigravity-plugin-extras/skills/brand-voice/SKILL.md +93 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/SKILL.md +392 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/agent-patterns.md +461 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/examples.md +188 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/state-patterns.md +360 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/troubleshooting.md +362 -0
- package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/SKILL.md +266 -0
- package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/examples.md +115 -0
- package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +338 -0
- package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +317 -0
- package/bundles/antigravity-plugin-extras/skills/caching-patterns/SKILL.md +385 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/SKILL.md +91 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/changelog-generator/SKILL.md +105 -0
- package/bundles/antigravity-plugin-extras/skills/code-explainer/SKILL.md +91 -0
- package/bundles/antigravity-plugin-extras/skills/competitive-ads-extractor/SKILL.md +294 -0
- package/bundles/antigravity-plugin-extras/skills/component-testing/SKILL.md +310 -0
- package/bundles/antigravity-plugin-extras/skills/content-research-writer/SKILL.md +539 -0
- package/bundles/antigravity-plugin-extras/skills/cross-review/SKILL.md +51 -0
- package/bundles/antigravity-plugin-extras/skills/data-analysis/SKILL.md +111 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/README.md +248 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/SKILL.md +203 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/adapter.py.template +44 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/api-router.py.template +43 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/contract-test.py.template +384 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/display-dto.py.template +39 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/frontend-service.ts.template +46 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/frontend-types.ts.template +38 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/ingestion-model.py.template +42 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/mapping-doc.md.template +46 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/normalizer.py.template +48 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/extract_requirements.md +36 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/extract_ui_demand.md +35 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/reconcile_mapping.md +66 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/query-catalog.md.template +62 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/consumer-driven-contracts.md +131 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/drift-check-catalog.md +305 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/layer-responsibilities.md +333 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/discover_connections.py +170 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/discover_sources.py +161 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/drift_check.py +171 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/extract_schema.py +1363 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/generate_gap_report.py +81 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/generate_mapping_doc.py +294 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/ts_dto_compare.py +214 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/validate_lineage.py +51 -0
- package/bundles/antigravity-plugin-extras/skills/data-loader/SKILL.md +753 -0
- package/bundles/antigravity-plugin-extras/skills/data-validation/SKILL.md +220 -0
- package/bundles/antigravity-plugin-extras/skills/db-testing/SKILL.md +117 -0
- package/bundles/antigravity-plugin-extras/skills/deploy-local/SKILL.md +259 -0
- package/bundles/antigravity-plugin-extras/skills/design-md/SKILL.md +167 -0
- package/bundles/antigravity-plugin-extras/skills/design-system-tokens/SKILL.md +240 -0
- package/bundles/antigravity-plugin-extras/skills/design-system-tokens/references/DESIGN-SYSTEM-TEMPLATE.md +577 -0
- package/bundles/antigravity-plugin-extras/skills/developer-growth-analysis/SKILL.md +323 -0
- package/bundles/antigravity-plugin-extras/skills/doc-coauthoring/SKILL.md +378 -0
- package/bundles/antigravity-plugin-extras/skills/documentation-analyzer/SKILL.md +78 -0
- package/bundles/antigravity-plugin-extras/skills/domain-name-brainstormer/SKILL.md +213 -0
- package/bundles/antigravity-plugin-extras/skills/enterprise-dashboard-aesthetic-system/SKILL.md +120 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/SKILL.md +193 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/references/element-types.md +497 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/references/excalidraw-schema.md +356 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/references/reliable-diagrams.md +115 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/README.md +60 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/add-arrow.py +354 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/add-icon-to-diagram.py +412 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/split-excalidraw-library.py +183 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/business-flow-swimlane-template.excalidraw +334 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/class-diagram-template.excalidraw +558 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/data-flow-diagram-template.excalidraw +279 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/er-diagram-template.excalidraw +662 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/flowchart-template.excalidraw +179 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/mindmap-template.excalidraw +244 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/relationship-template.excalidraw +145 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/reliable-flowchart.excalidraw +1 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/sequence-diagram-template.excalidraw +509 -0
- package/bundles/antigravity-plugin-extras/skills/file-organizer/SKILL.md +434 -0
- package/bundles/antigravity-plugin-extras/skills/game-changing-features/README.md +221 -0
- package/bundles/antigravity-plugin-extras/skills/game-changing-features/SKILL.md +265 -0
- package/bundles/antigravity-plugin-extras/skills/github-issues/SKILL.md +359 -0
- package/bundles/antigravity-plugin-extras/skills/github-issues/references/templates.md +90 -0
- package/bundles/antigravity-plugin-extras/skills/golden-nuggets/SKILL.md +192 -0
- package/bundles/antigravity-plugin-extras/skills/humanizer/SKILL.md +194 -0
- package/bundles/antigravity-plugin-extras/skills/image-enhancer/SKILL.md +100 -0
- package/bundles/antigravity-plugin-extras/skills/intent-writer/SKILL.md +201 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/SKILL.md +124 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/3p-updates.md +47 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/company-newsletter.md +65 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/faq-answers.md +30 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/general-comms.md +16 -0
- package/bundles/antigravity-plugin-extras/skills/invoice-organizer/SKILL.md +447 -0
- package/bundles/antigravity-plugin-extras/skills/jira-issues/SKILL.md +182 -0
- package/bundles/antigravity-plugin-extras/skills/job-application/SKILL.md +188 -0
- package/bundles/antigravity-plugin-extras/skills/lead-research-assistant/SKILL.md +200 -0
- package/bundles/antigravity-plugin-extras/skills/llm-application-dev/SKILL.md +217 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/SKILL.md +100 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/evaluation.md +602 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/mcp_best_practices.md +915 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/node_mcp_server.md +916 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/python_mcp_server.md +752 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/connections.py +151 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/bundles/antigravity-plugin-extras/skills/meeting-insights-analyzer/SKILL.md +328 -0
- package/bundles/antigravity-plugin-extras/skills/monorepo/SKILL.md +267 -0
- package/bundles/antigravity-plugin-extras/skills/naming-analyzer/SKILL.md +376 -0
- package/bundles/antigravity-plugin-extras/skills/nextjs-app-router/SKILL.md +271 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/AUTHENTICATION.md +154 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/SKILL.md +270 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/api_reference.md +309 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/troubleshooting.md +376 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/usage_patterns.md +338 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/__init__.py +81 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/ask_question.py +256 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/auth_manager.py +358 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/browser_session.py +255 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/browser_utils.py +107 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/cleanup_manager.py +302 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/config.py +44 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/notebook_manager.py +410 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/run.py +102 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/setup_environment.py +204 -0
- package/bundles/antigravity-plugin-extras/skills/observability/SKILL.md +371 -0
- package/bundles/antigravity-plugin-extras/skills/onboard-project/SKILL.md +192 -0
- package/bundles/antigravity-plugin-extras/skills/performance-testing/SKILL.md +226 -0
- package/bundles/antigravity-plugin-extras/skills/pipeline-state/SKILL.md +208 -0
- package/bundles/antigravity-plugin-extras/skills/plantuml/SKILL.md +228 -0
- package/bundles/antigravity-plugin-extras/skills/popular-web-designs/SKILL.md +142 -0
- package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/linear.app.md +196 -0
- package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/stripe.md +214 -0
- package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/vercel.md +218 -0
- package/bundles/antigravity-plugin-extras/skills/prd-to-code/SKILL.md +127 -0
- package/bundles/antigravity-plugin-extras/skills/raffle-winner-picker/SKILL.md +159 -0
- package/bundles/antigravity-plugin-extras/skills/react-useeffect/README.md +320 -0
- package/bundles/antigravity-plugin-extras/skills/react-useeffect/SKILL.md +53 -0
- package/bundles/antigravity-plugin-extras/skills/react-useeffect/alternatives.md +258 -0
- package/bundles/antigravity-plugin-extras/skills/react-useeffect/anti-patterns.md +290 -0
- package/bundles/antigravity-plugin-extras/skills/receiving-code-review/SKILL.md +213 -0
- package/bundles/antigravity-plugin-extras/skills/relay/SKILL.md +246 -0
- package/bundles/antigravity-plugin-extras/skills/requesting-code-review/SKILL.md +105 -0
- package/bundles/antigravity-plugin-extras/skills/requesting-code-review/code-reviewer.md +146 -0
- package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/SKILL.md +350 -0
- package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/pwa-checklist.md +226 -0
- package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/touch-and-interaction.md +265 -0
- package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/transformation-catalogue.md +326 -0
- package/bundles/antigravity-plugin-extras/skills/schema-migration/SKILL.md +275 -0
- package/bundles/antigravity-plugin-extras/skills/setup-project-ai/SKILL.md +120 -0
- package/bundles/antigravity-plugin-extras/skills/shadcn-radix/SKILL.md +330 -0
- package/bundles/antigravity-plugin-extras/skills/sketch/SKILL.md +104 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/SKILL.md +646 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/color_palettes.py +302 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/easing.py +230 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/frame_composer.py +469 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/gif_builder.py +246 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/typography.py +357 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/validators.py +264 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/visual_effects.py +494 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/requirements.txt +4 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/bounce.py +106 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/explode.py +331 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/fade.py +329 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/flip.py +291 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/morph.py +329 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/move.py +293 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/pulse.py +268 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/shake.py +127 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/slide.py +291 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/spin.py +269 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/wiggle.py +300 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/zoom.py +312 -0
- package/bundles/antigravity-plugin-extras/skills/slides/SKILL.md +38 -0
- package/bundles/antigravity-plugin-extras/skills/state-tracking/SKILL.md +131 -0
- package/bundles/antigravity-plugin-extras/skills/streamlit-dev/SKILL.md +268 -0
- package/bundles/antigravity-plugin-extras/skills/svg-create/SKILL.md +251 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/SKILL.md +59 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/theme-showcase.pdf +0 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/desert-rose.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/golden-hour.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/ui-styling-patterns/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/ui-styling-patterns/SKILL.md +320 -0
- package/bundles/antigravity-plugin-extras/skills/ui-testing/SKILL.md +660 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/SKILL.md +660 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/_sync_all.py +414 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/app-interface.csv +31 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/charts.csv +26 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/colors.csv +162 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/design.csv +1776 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/draft.csv +1779 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/google-fonts.csv +1924 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/icons.csv +106 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/landing.csv +35 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/products.csv +162 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/react-performance.csv +45 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/styles.csv +85 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/typography.csv +74 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/ui-reasoning.csv +162 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/ux-guidelines.csv +100 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/core.py +247 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/design_system.py +1067 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/search.py +114 -0
- package/bundles/antigravity-plugin-extras/skills/understand-anything/SKILL.md +140 -0
- package/bundles/antigravity-plugin-extras/skills/understand-anything/references/commands.md +252 -0
- package/bundles/antigravity-plugin-extras/skills/understand-anything/references/graph-schema.md +116 -0
- package/bundles/antigravity-plugin-extras/skills/understand-anything/references/pipeline.md +331 -0
- package/bundles/antigravity-plugin-extras/skills/update-readme/SKILL.md +74 -0
- package/bundles/antigravity-plugin-extras/skills/verification-loop/SKILL.md +209 -0
- package/bundles/antigravity-plugin-extras/skills/video-downloader/SKILL.md +107 -0
- package/bundles/antigravity-plugin-extras/skills/webapp-development/SKILL.md +288 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/SKILL.md +339 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/agents/agent-interface.md +175 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/html.md +384 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/nlp-keywords.md +127 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/palettes.md +149 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/python.md +249 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/react.md +427 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/shapes.md +135 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/stopwords.md +115 -0
- package/bundles/antigravity-plugin-extras/skills/youtube-transcript/SKILL.md +416 -0
- package/bundles/manifest.json +7 -0
- package/dist/cli.js +5492 -0
- package/package.json +61 -4
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Word Cloud — Shape Masking Reference
|
|
2
|
+
|
|
3
|
+
All shapes are defined as SVG paths normalized to a 200×200 viewBox.
|
|
4
|
+
Scale them to your canvas size using `transform="scale(W/200, H/200)"`.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Circle (default)
|
|
9
|
+
```svg
|
|
10
|
+
<circle cx="100" cy="100" r="95" />
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Speech Bubble
|
|
14
|
+
```svg
|
|
15
|
+
<path d="M10,10 Q10,5 15,5 L185,5 Q190,5 190,10 L190,130 Q190,135 185,135 L120,135 L100,165 L80,135 L15,135 Q10,135 10,130 Z" />
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Star (5-point burst)
|
|
19
|
+
```svg
|
|
20
|
+
<polygon points="100,5 120,68 185,68 133,107 153,170 100,130 47,170 67,107 15,68 80,68" />
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Diamond
|
|
24
|
+
```svg
|
|
25
|
+
<polygon points="100,5 195,100 100,195 5,100" />
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Cloud Silhouette
|
|
29
|
+
```svg
|
|
30
|
+
<path d="M30,140 Q5,140 5,115 Q5,95 20,90 Q15,75 30,65 Q40,50 60,55 Q65,35 85,30 Q105,20 125,35 Q140,20 160,30 Q180,35 185,55 Q200,55 200,75 Q200,95 185,100 Q195,110 195,125 Q195,145 175,148 Q165,160 150,155 Q140,165 125,160 Q115,170 100,165 Q85,170 75,160 Q60,165 50,155 Q35,160 30,148 Z" />
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Heart
|
|
34
|
+
```svg
|
|
35
|
+
<path d="M100,175 L15,90 Q-10,60 20,35 Q50,10 80,40 L100,60 L120,40 Q150,10 180,35 Q210,60 185,90 Z" />
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Arrow (pointing right)
|
|
39
|
+
```svg
|
|
40
|
+
<polygon points="5,70 110,70 110,40 195,100 110,160 110,130 5,130" />
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Hexagon
|
|
44
|
+
```svg
|
|
45
|
+
<polygon points="100,5 185,50 185,150 100,195 15,150 15,50" />
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Applying Shapes in React (SVG clipPath)
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
const SHAPES: Record<string, string> = {
|
|
54
|
+
circle: 'M100,5 A95,95 0 1,1 99.9,5Z',
|
|
55
|
+
speech_bubble: 'M10,10 Q10,5 15,5 L185,5 Q190,5 190,10 L190,130 Q190,135 185,135 L120,135 L100,165 L80,135 L15,135 Q10,135 10,130 Z',
|
|
56
|
+
star: 'M100,5 L120,68 L185,68 L133,107 L153,170 L100,130 L47,170 L67,107 L15,68 L80,68 Z',
|
|
57
|
+
diamond: 'M100,5 L195,100 L100,195 L5,100 Z',
|
|
58
|
+
cloud: 'M30,140 Q5,140 5,115 Q5,95 20,90 ...',
|
|
59
|
+
heart: 'M100,175 L15,90 Q-10,60 20,35 Q50,10 80,40 L100,60 L120,40 Q150,10 180,35 Q210,60 185,90 Z',
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// In your SVG:
|
|
63
|
+
<defs>
|
|
64
|
+
<clipPath id="wc-shape">
|
|
65
|
+
<path
|
|
66
|
+
d={SHAPES[shape]}
|
|
67
|
+
transform={`scale(${dims.width / 200}, ${dims.height / 200})`}
|
|
68
|
+
/>
|
|
69
|
+
</clipPath>
|
|
70
|
+
</defs>
|
|
71
|
+
<g clipPath="url(#wc-shape)" transform={`translate(${dims.width/2},${dims.height/2})`}>
|
|
72
|
+
{/* word <text> elements */}
|
|
73
|
+
</g>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Applying Shapes in Python (wordcloud lib)
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
from PIL import Image, ImageDraw
|
|
82
|
+
import numpy as np
|
|
83
|
+
|
|
84
|
+
def create_shape_mask(shape: str, width: int, height: int) -> np.ndarray:
|
|
85
|
+
"""Create a binary mask for the given shape name."""
|
|
86
|
+
img = Image.new('L', (width, height), 0) # black = blocked
|
|
87
|
+
draw = ImageDraw.Draw(img)
|
|
88
|
+
|
|
89
|
+
if shape == 'circle':
|
|
90
|
+
draw.ellipse([10, 10, width-10, height-10], fill=255)
|
|
91
|
+
elif shape == 'diamond':
|
|
92
|
+
cx, cy = width//2, height//2
|
|
93
|
+
draw.polygon([(cx, 10), (width-10, cy), (cx, height-10), (10, cy)], fill=255)
|
|
94
|
+
elif shape == 'star':
|
|
95
|
+
import math
|
|
96
|
+
cx, cy = width//2, height//2
|
|
97
|
+
points = []
|
|
98
|
+
for i in range(10):
|
|
99
|
+
r = min(cx,cy)*0.9 if i%2==0 else min(cx,cy)*0.4
|
|
100
|
+
a = math.radians(i*36 - 90)
|
|
101
|
+
points.append((cx + r*math.cos(a), cy + r*math.sin(a)))
|
|
102
|
+
draw.polygon(points, fill=255)
|
|
103
|
+
else:
|
|
104
|
+
# Default: full rectangle
|
|
105
|
+
draw.rectangle([0, 0, width, height], fill=255)
|
|
106
|
+
|
|
107
|
+
# wordcloud expects: white = word area, black = empty
|
|
108
|
+
arr = np.array(img)
|
|
109
|
+
# Invert: where white (255) → 0 (word area), where black (0) → 255 (no words)
|
|
110
|
+
return 255 - arr
|
|
111
|
+
|
|
112
|
+
# Usage:
|
|
113
|
+
mask = create_shape_mask('star', 900, 520)
|
|
114
|
+
wc = WordCloud(mask=mask, background_color=None, mode='RGBA').generate_from_frequencies(freqs)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Custom SVG from User
|
|
120
|
+
|
|
121
|
+
If the user provides a custom SVG path:
|
|
122
|
+
1. Parse the `<path d="...">` attribute
|
|
123
|
+
2. In React: use directly in `<clipPath>`
|
|
124
|
+
3. In Python: rasterize with `cairosvg` → PIL Image → numpy mask
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
import cairosvg
|
|
128
|
+
from io import BytesIO
|
|
129
|
+
|
|
130
|
+
def svg_path_to_mask(svg_path_d: str, width: int, height: int) -> np.ndarray:
|
|
131
|
+
svg = f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="{width}" height="{height}"><path d="{svg_path_d}" fill="white"/></svg>'
|
|
132
|
+
png = cairosvg.svg2png(bytestring=svg.encode())
|
|
133
|
+
img = Image.open(BytesIO(png)).convert('L')
|
|
134
|
+
return 255 - np.array(img)
|
|
135
|
+
```
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Stopwords — Word Cloud Reference
|
|
2
|
+
|
|
3
|
+
Words that should be filtered out before computing frequencies.
|
|
4
|
+
This list covers common English stopwords plus common document/presentation filler words.
|
|
5
|
+
|
|
6
|
+
## JavaScript Set
|
|
7
|
+
|
|
8
|
+
```js
|
|
9
|
+
const STOPWORDS = new Set([
|
|
10
|
+
// Articles & prepositions
|
|
11
|
+
'a','an','the','of','in','on','at','to','for','by','with','from','into',
|
|
12
|
+
'through','during','before','after','above','below','between','out','off',
|
|
13
|
+
'over','under','again','then','once','here','there','when','where','why',
|
|
14
|
+
'how','all','both','each','few','more','most','other','some','such','no',
|
|
15
|
+
'nor','not','only','own','same','so','than','too','very','just','because',
|
|
16
|
+
'as','until','while','about','against','among','throughout','despite',
|
|
17
|
+
'towards','upon','concerning','regarding',
|
|
18
|
+
|
|
19
|
+
// Conjunctions & pronouns
|
|
20
|
+
'and','but','or','nor','if','unless','since','although','though',
|
|
21
|
+
'however','therefore','thus','hence','whereas','meanwhile',
|
|
22
|
+
'i','me','my','myself','we','our','ours','ourselves','you','your',
|
|
23
|
+
'yours','yourself','he','him','his','himself','she','her','hers',
|
|
24
|
+
'herself','it','its','itself','they','them','their','theirs',
|
|
25
|
+
'themselves','what','which','who','whom','this','that','these','those',
|
|
26
|
+
|
|
27
|
+
// Common verbs (auxiliary + linking)
|
|
28
|
+
'am','is','are','was','were','be','been','being',
|
|
29
|
+
'have','has','had','having','do','does','did','doing',
|
|
30
|
+
'will','would','could','should','shall','may','might','must','can',
|
|
31
|
+
'need','dare','ought','used',
|
|
32
|
+
|
|
33
|
+
// Common adverbs & filler
|
|
34
|
+
'also','already','always','never','often','sometimes','usually','still',
|
|
35
|
+
'even','ever','now','then','soon','later','today','yesterday','tomorrow',
|
|
36
|
+
'here','there','away','back','forward','up','down','well','much','many',
|
|
37
|
+
'any','every','another','either','neither','whether','quite','rather',
|
|
38
|
+
'almost','enough','yet','else','instead','perhaps','maybe','certainly',
|
|
39
|
+
'simply','actually','really','truly','however','therefore','although',
|
|
40
|
+
'though','despite','whereas','meanwhile','since','unless','until',
|
|
41
|
+
|
|
42
|
+
// Numbers (spelled out)
|
|
43
|
+
'one','two','three','four','five','six','seven','eight','nine','ten',
|
|
44
|
+
'first','second','third','fourth','fifth','last','next','previous',
|
|
45
|
+
|
|
46
|
+
// Business/presentation filler
|
|
47
|
+
'slide','page','section','chapter','figure','table','example','note',
|
|
48
|
+
'please','thank','thanks','dear','regards','sincerely','best',
|
|
49
|
+
'company','companies','organization','team','teams','group','groups',
|
|
50
|
+
'year','years','month','months','day','days','time','times','date',
|
|
51
|
+
'etc','ie','eg','vs','per','new','old','said','says','see','get','got',
|
|
52
|
+
'make','made','take','took','use','used','come','came','go','went',
|
|
53
|
+
'know','knew','think','thought','want','wanted','need','needed',
|
|
54
|
+
'feel','felt','look','looks','looking','put','puts','set','sets',
|
|
55
|
+
'keep','kept','give','gave','given','show','shows','shown',
|
|
56
|
+
]);
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Python Set
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
STOPWORDS_EN = {
|
|
65
|
+
# Articles & prepositions
|
|
66
|
+
'a','an','the','of','in','on','at','to','for','by','with','from','into',
|
|
67
|
+
'through','during','before','after','above','below','between','out','off',
|
|
68
|
+
'over','under','again','then','once','here','there','when','where','why',
|
|
69
|
+
'how','all','both','each','few','more','most','other','some','such','no',
|
|
70
|
+
'nor','not','only','own','same','so','than','too','very','just','because',
|
|
71
|
+
'as','until','while','about','against','among',
|
|
72
|
+
# Pronouns
|
|
73
|
+
'i','me','my','we','our','you','your','he','him','his','she','her',
|
|
74
|
+
'it','its','they','them','their','who','what','which','this','that',
|
|
75
|
+
'these','those','myself','yourself','himself','herself','itself',
|
|
76
|
+
'ourselves','themselves',
|
|
77
|
+
# Auxiliaries
|
|
78
|
+
'am','is','are','was','were','be','been','being',
|
|
79
|
+
'have','has','had','do','does','did','will','would','could','should',
|
|
80
|
+
'shall','may','might','must','can','need','ought',
|
|
81
|
+
# Common filler
|
|
82
|
+
'also','always','never','often','still','even','now','well','much',
|
|
83
|
+
'many','any','every','another','quite','rather','almost','enough',
|
|
84
|
+
'yet','else','perhaps','maybe','simply','actually','really','truly',
|
|
85
|
+
# Numbers
|
|
86
|
+
'one','two','three','four','five','six','seven','eight','nine','ten',
|
|
87
|
+
'first','second','third','fourth','fifth','last','next',
|
|
88
|
+
# Business filler
|
|
89
|
+
'slide','page','section','chapter','figure','table','example','note',
|
|
90
|
+
'please','thank','thanks','company','team','year','month','day','time',
|
|
91
|
+
'etc','new','old','said','see','get','make','take','use','come','go',
|
|
92
|
+
'know','think','want','need','feel','look','put','set','keep','give','show',
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
# Combine with wordcloud's built-in stopwords:
|
|
96
|
+
from wordcloud import STOPWORDS as WC_STOPS
|
|
97
|
+
ALL_STOPS = STOPWORDS_EN | WC_STOPS
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Custom Domain Stopwords
|
|
103
|
+
|
|
104
|
+
For specific document types, extend with domain words:
|
|
105
|
+
|
|
106
|
+
```js
|
|
107
|
+
// Legal documents
|
|
108
|
+
const LEGAL_STOPS = new Set(['shall','herein','thereof','pursuant','whereas','hereby']);
|
|
109
|
+
|
|
110
|
+
// Financial reports
|
|
111
|
+
const FINANCE_STOPS = new Set(['quarter','fiscal','annual','report','million','billion','percent']);
|
|
112
|
+
|
|
113
|
+
// Technical docs
|
|
114
|
+
const TECH_STOPS = new Set(['click','select','navigate','following','below','above','shown']);
|
|
115
|
+
```
|
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: youtube-transcript
|
|
3
|
+
context: fork
|
|
4
|
+
description: Download YouTube video transcripts when user provides a YouTube URL or asks to download/get/fetch a transcript from YouTube. Also use when user wants to transcribe or get captions/subtitles from a YouTube video.
|
|
5
|
+
allowed-tools: Bash,Read,Write
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# YouTube Transcript Downloader
|
|
9
|
+
|
|
10
|
+
This skill helps download transcripts (subtitles/captions) from YouTube videos using yt-dlp.
|
|
11
|
+
|
|
12
|
+
## When to Use This Skill
|
|
13
|
+
|
|
14
|
+
Activate this skill when the user:
|
|
15
|
+
- Provides a YouTube URL and wants the transcript
|
|
16
|
+
- Asks to "download transcript from YouTube"
|
|
17
|
+
- Wants to "get captions" or "get subtitles" from a video
|
|
18
|
+
- Asks to "transcribe a YouTube video"
|
|
19
|
+
- Needs text content from a YouTube video
|
|
20
|
+
|
|
21
|
+
## How It Works
|
|
22
|
+
|
|
23
|
+
### Priority Order:
|
|
24
|
+
1. **Check if yt-dlp is installed** - install if needed
|
|
25
|
+
2. **List available subtitles** - see what's actually available
|
|
26
|
+
3. **Try manual subtitles first** (`--write-sub`) - highest quality
|
|
27
|
+
4. **Fallback to auto-generated** (`--write-auto-sub`) - usually available
|
|
28
|
+
5. **Last resort: Whisper transcription** - if no subtitles exist (requires user confirmation)
|
|
29
|
+
6. **Confirm the download** and show the user where the file is saved
|
|
30
|
+
7. **Optionally clean up** the VTT format if the user wants plain text
|
|
31
|
+
|
|
32
|
+
## Installation Check
|
|
33
|
+
|
|
34
|
+
**IMPORTANT**: Always check if yt-dlp is installed first:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
which yt-dlp || command -v yt-dlp
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### If Not Installed
|
|
41
|
+
|
|
42
|
+
Attempt automatic installation based on the system:
|
|
43
|
+
|
|
44
|
+
**macOS (Homebrew)**:
|
|
45
|
+
```bash
|
|
46
|
+
brew install yt-dlp
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Linux (apt/Debian/Ubuntu)**:
|
|
50
|
+
```bash
|
|
51
|
+
sudo apt update && sudo apt install -y yt-dlp
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Alternative (pip - works on all systems)**:
|
|
55
|
+
```bash
|
|
56
|
+
pip3 install yt-dlp
|
|
57
|
+
# or
|
|
58
|
+
python3 -m pip install yt-dlp
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**If installation fails**: Inform the user they need to install yt-dlp manually and provide them with installation instructions from https://github.com/yt-dlp/yt-dlp#installation
|
|
62
|
+
|
|
63
|
+
## Check Available Subtitles
|
|
64
|
+
|
|
65
|
+
**ALWAYS do this first** before attempting to download:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
yt-dlp --list-subs "YOUTUBE_URL"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
This shows what subtitle types are available without downloading anything. Look for:
|
|
72
|
+
- Manual subtitles (better quality)
|
|
73
|
+
- Auto-generated subtitles (usually available)
|
|
74
|
+
- Available languages
|
|
75
|
+
|
|
76
|
+
## Download Strategy
|
|
77
|
+
|
|
78
|
+
### Option 1: Manual Subtitles (Preferred)
|
|
79
|
+
|
|
80
|
+
Try this first - highest quality, human-created:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
yt-dlp --write-sub --skip-download --output "OUTPUT_NAME" "YOUTUBE_URL"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Option 2: Auto-Generated Subtitles (Fallback)
|
|
87
|
+
|
|
88
|
+
If manual subtitles aren't available:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
yt-dlp --write-auto-sub --skip-download --output "OUTPUT_NAME" "YOUTUBE_URL"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Both commands create a `.vtt` file (WebVTT subtitle format).
|
|
95
|
+
|
|
96
|
+
## Option 3: Whisper Transcription (Last Resort)
|
|
97
|
+
|
|
98
|
+
**ONLY use this if both manual and auto-generated subtitles are unavailable.**
|
|
99
|
+
|
|
100
|
+
### Step 1: Show File Size and Ask for Confirmation
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Get audio file size estimate
|
|
104
|
+
yt-dlp --print "%(filesize,filesize_approx)s" -f "bestaudio" "YOUTUBE_URL"
|
|
105
|
+
|
|
106
|
+
# Or get duration to estimate
|
|
107
|
+
yt-dlp --print "%(duration)s %(title)s" "YOUTUBE_URL"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**IMPORTANT**: Display the file size to the user and ask: "No subtitles are available. I can download the audio (approximately X MB) and transcribe it using Whisper. Would you like to proceed?"
|
|
111
|
+
|
|
112
|
+
**Wait for user confirmation before continuing.**
|
|
113
|
+
|
|
114
|
+
### Step 2: Check for Whisper Installation
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
command -v whisper
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
If not installed, ask user: "Whisper is not installed. Install it with `pip install openai-whisper` (requires ~1-3GB for models)? This is a one-time installation."
|
|
121
|
+
|
|
122
|
+
**Wait for user confirmation before installing.**
|
|
123
|
+
|
|
124
|
+
Install if approved:
|
|
125
|
+
```bash
|
|
126
|
+
pip3 install openai-whisper
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Step 3: Download Audio Only
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
yt-dlp -x --audio-format mp3 --output "audio_%(id)s.%(ext)s" "YOUTUBE_URL"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Step 4: Transcribe with Whisper
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Auto-detect language (recommended)
|
|
139
|
+
whisper audio_VIDEO_ID.mp3 --model base --output_format vtt
|
|
140
|
+
|
|
141
|
+
# Or specify language if known
|
|
142
|
+
whisper audio_VIDEO_ID.mp3 --model base --language en --output_format vtt
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Model Options** (stick to `base` for now):
|
|
146
|
+
- `tiny` - fastest, least accurate (~1GB)
|
|
147
|
+
- `base` - good balance (~1GB) ← **USE THIS**
|
|
148
|
+
- `small` - better accuracy (~2GB)
|
|
149
|
+
- `medium` - very good (~5GB)
|
|
150
|
+
- `large` - best accuracy (~10GB)
|
|
151
|
+
|
|
152
|
+
### Step 5: Cleanup
|
|
153
|
+
|
|
154
|
+
After transcription completes, ask user: "Transcription complete! Would you like me to delete the audio file to save space?"
|
|
155
|
+
|
|
156
|
+
If yes:
|
|
157
|
+
```bash
|
|
158
|
+
rm audio_VIDEO_ID.mp3
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Getting Video Information
|
|
162
|
+
|
|
163
|
+
### Extract Video Title (for filename)
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
yt-dlp --print "%(title)s" "YOUTUBE_URL"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Use this to create meaningful filenames based on the video title. Clean the title for filesystem compatibility:
|
|
170
|
+
- Replace `/` with `-`
|
|
171
|
+
- Replace special characters that might cause issues
|
|
172
|
+
- Consider using sanitized version: `$(yt-dlp --print "%(title)s" "URL" | tr '/' '-' | tr ':' '-')`
|
|
173
|
+
|
|
174
|
+
## Post-Processing
|
|
175
|
+
|
|
176
|
+
### Convert to Plain Text (Recommended)
|
|
177
|
+
|
|
178
|
+
YouTube's auto-generated VTT files contain **duplicate lines** because captions are shown progressively with overlapping timestamps. Always deduplicate when converting to plain text while preserving the original speaking order.
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
python3 -c "
|
|
182
|
+
import sys, re
|
|
183
|
+
seen = set()
|
|
184
|
+
with open('transcript.en.vtt', 'r') as f:
|
|
185
|
+
for line in f:
|
|
186
|
+
line = line.strip()
|
|
187
|
+
if line and not line.startswith('WEBVTT') and not line.startswith('Kind:') and not line.startswith('Language:') and '-->' not in line:
|
|
188
|
+
clean = re.sub('<[^>]*>', '', line)
|
|
189
|
+
clean = clean.replace('&', '&').replace('>', '>').replace('<', '<')
|
|
190
|
+
if clean and clean not in seen:
|
|
191
|
+
print(clean)
|
|
192
|
+
seen.add(clean)
|
|
193
|
+
" > transcript.txt
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Complete Post-Processing with Video Title
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Get video title
|
|
200
|
+
VIDEO_TITLE=$(yt-dlp --print "%(title)s" "YOUTUBE_URL" | tr '/' '_' | tr ':' '-' | tr '?' '' | tr '"' '')
|
|
201
|
+
|
|
202
|
+
# Find the VTT file
|
|
203
|
+
VTT_FILE=$(ls *.vtt | head -n 1)
|
|
204
|
+
|
|
205
|
+
# Convert with deduplication
|
|
206
|
+
python3 -c "
|
|
207
|
+
import sys, re
|
|
208
|
+
seen = set()
|
|
209
|
+
with open('$VTT_FILE', 'r') as f:
|
|
210
|
+
for line in f:
|
|
211
|
+
line = line.strip()
|
|
212
|
+
if line and not line.startswith('WEBVTT') and not line.startswith('Kind:') and not line.startswith('Language:') and '-->' not in line:
|
|
213
|
+
clean = re.sub('<[^>]*>', '', line)
|
|
214
|
+
clean = clean.replace('&', '&').replace('>', '>').replace('<', '<')
|
|
215
|
+
if clean and clean not in seen:
|
|
216
|
+
print(clean)
|
|
217
|
+
seen.add(clean)
|
|
218
|
+
" > "${VIDEO_TITLE}.txt"
|
|
219
|
+
|
|
220
|
+
echo "✓ Saved to: ${VIDEO_TITLE}.txt"
|
|
221
|
+
|
|
222
|
+
# Clean up VTT file
|
|
223
|
+
rm "$VTT_FILE"
|
|
224
|
+
echo "✓ Cleaned up temporary VTT file"
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Output Formats
|
|
228
|
+
|
|
229
|
+
- **VTT format** (`.vtt`): Includes timestamps and formatting, good for video players
|
|
230
|
+
- **Plain text** (`.txt`): Just the text content, good for reading or analysis
|
|
231
|
+
|
|
232
|
+
## Tips
|
|
233
|
+
|
|
234
|
+
- The filename will be `{output_name}.{language_code}.vtt` (e.g., `transcript.en.vtt`)
|
|
235
|
+
- Most YouTube videos have auto-generated English subtitles
|
|
236
|
+
- Some videos may have multiple language options
|
|
237
|
+
- If auto-subtitles aren't available, try `--write-sub` instead for manual subtitles
|
|
238
|
+
|
|
239
|
+
## Complete Workflow Example
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
VIDEO_URL="https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
243
|
+
|
|
244
|
+
# Get video title for filename
|
|
245
|
+
VIDEO_TITLE=$(yt-dlp --print "%(title)s" "$VIDEO_URL" | tr '/' '_' | tr ':' '-' | tr '?' '' | tr '"' '')
|
|
246
|
+
OUTPUT_NAME="transcript_temp"
|
|
247
|
+
|
|
248
|
+
# ============================================
|
|
249
|
+
# STEP 1: Check if yt-dlp is installed
|
|
250
|
+
# ============================================
|
|
251
|
+
if ! command -v yt-dlp &> /dev/null; then
|
|
252
|
+
echo "yt-dlp not found, attempting to install..."
|
|
253
|
+
if command -v brew &> /dev/null; then
|
|
254
|
+
brew install yt-dlp
|
|
255
|
+
elif command -v apt &> /dev/null; then
|
|
256
|
+
sudo apt update && sudo apt install -y yt-dlp
|
|
257
|
+
else
|
|
258
|
+
pip3 install yt-dlp
|
|
259
|
+
fi
|
|
260
|
+
fi
|
|
261
|
+
|
|
262
|
+
# ============================================
|
|
263
|
+
# STEP 2: List available subtitles
|
|
264
|
+
# ============================================
|
|
265
|
+
echo "Checking available subtitles..."
|
|
266
|
+
yt-dlp --list-subs "$VIDEO_URL"
|
|
267
|
+
|
|
268
|
+
# ============================================
|
|
269
|
+
# STEP 3: Try manual subtitles first
|
|
270
|
+
# ============================================
|
|
271
|
+
echo "Attempting to download manual subtitles..."
|
|
272
|
+
if yt-dlp --write-sub --skip-download --output "$OUTPUT_NAME" "$VIDEO_URL" 2>/dev/null; then
|
|
273
|
+
echo "✓ Manual subtitles downloaded successfully!"
|
|
274
|
+
ls -lh ${OUTPUT_NAME}.*
|
|
275
|
+
else
|
|
276
|
+
# ============================================
|
|
277
|
+
# STEP 4: Fallback to auto-generated
|
|
278
|
+
# ============================================
|
|
279
|
+
echo "Manual subtitles not available. Trying auto-generated..."
|
|
280
|
+
if yt-dlp --write-auto-sub --skip-download --output "$OUTPUT_NAME" "$VIDEO_URL" 2>/dev/null; then
|
|
281
|
+
echo "✓ Auto-generated subtitles downloaded successfully!"
|
|
282
|
+
ls -lh ${OUTPUT_NAME}.*
|
|
283
|
+
else
|
|
284
|
+
# ============================================
|
|
285
|
+
# STEP 5: Last resort - Whisper transcription
|
|
286
|
+
# ============================================
|
|
287
|
+
echo "⚠ No subtitles available for this video."
|
|
288
|
+
|
|
289
|
+
# Get file size
|
|
290
|
+
FILE_SIZE=$(yt-dlp --print "%(filesize_approx)s" -f "bestaudio" "$VIDEO_URL")
|
|
291
|
+
DURATION=$(yt-dlp --print "%(duration)s" "$VIDEO_URL")
|
|
292
|
+
TITLE=$(yt-dlp --print "%(title)s" "$VIDEO_URL")
|
|
293
|
+
|
|
294
|
+
echo "Video: $TITLE"
|
|
295
|
+
echo "Duration: $((DURATION / 60)) minutes"
|
|
296
|
+
echo "Audio size: ~$((FILE_SIZE / 1024 / 1024)) MB"
|
|
297
|
+
echo ""
|
|
298
|
+
echo "Would you like to download and transcribe with Whisper? (y/n)"
|
|
299
|
+
read -r RESPONSE
|
|
300
|
+
|
|
301
|
+
if [[ "$RESPONSE" =~ ^[Yy]$ ]]; then
|
|
302
|
+
# Check for Whisper
|
|
303
|
+
if ! command -v whisper &> /dev/null; then
|
|
304
|
+
echo "Whisper not installed. Install now? (requires ~1-3GB) (y/n)"
|
|
305
|
+
read -r INSTALL_RESPONSE
|
|
306
|
+
if [[ "$INSTALL_RESPONSE" =~ ^[Yy]$ ]]; then
|
|
307
|
+
pip3 install openai-whisper
|
|
308
|
+
else
|
|
309
|
+
echo "Cannot proceed without Whisper. Exiting."
|
|
310
|
+
exit 1
|
|
311
|
+
fi
|
|
312
|
+
fi
|
|
313
|
+
|
|
314
|
+
# Download audio
|
|
315
|
+
echo "Downloading audio..."
|
|
316
|
+
yt-dlp -x --audio-format mp3 --output "audio_%(id)s.%(ext)s" "$VIDEO_URL"
|
|
317
|
+
|
|
318
|
+
# Get the actual audio filename
|
|
319
|
+
AUDIO_FILE=$(ls audio_*.mp3 | head -n 1)
|
|
320
|
+
|
|
321
|
+
# Transcribe
|
|
322
|
+
echo "Transcribing with Whisper (this may take a few minutes)..."
|
|
323
|
+
whisper "$AUDIO_FILE" --model base --output_format vtt
|
|
324
|
+
|
|
325
|
+
# Cleanup
|
|
326
|
+
echo "Transcription complete! Delete audio file? (y/n)"
|
|
327
|
+
read -r CLEANUP_RESPONSE
|
|
328
|
+
if [[ "$CLEANUP_RESPONSE" =~ ^[Yy]$ ]]; then
|
|
329
|
+
rm "$AUDIO_FILE"
|
|
330
|
+
echo "Audio file deleted."
|
|
331
|
+
fi
|
|
332
|
+
|
|
333
|
+
ls -lh *.vtt
|
|
334
|
+
else
|
|
335
|
+
echo "Transcription cancelled."
|
|
336
|
+
exit 0
|
|
337
|
+
fi
|
|
338
|
+
fi
|
|
339
|
+
fi
|
|
340
|
+
|
|
341
|
+
# ============================================
|
|
342
|
+
# STEP 6: Convert to readable plain text with deduplication
|
|
343
|
+
# ============================================
|
|
344
|
+
VTT_FILE=$(ls ${OUTPUT_NAME}*.vtt 2>/dev/null || ls *.vtt | head -n 1)
|
|
345
|
+
if [ -f "$VTT_FILE" ]; then
|
|
346
|
+
echo "Converting to readable format and removing duplicates..."
|
|
347
|
+
python3 -c "
|
|
348
|
+
import sys, re
|
|
349
|
+
seen = set()
|
|
350
|
+
with open('$VTT_FILE', 'r') as f:
|
|
351
|
+
for line in f:
|
|
352
|
+
line = line.strip()
|
|
353
|
+
if line and not line.startswith('WEBVTT') and not line.startswith('Kind:') and not line.startswith('Language:') and '-->' not in line:
|
|
354
|
+
clean = re.sub('<[^>]*>', '', line)
|
|
355
|
+
clean = clean.replace('&', '&').replace('>', '>').replace('<', '<')
|
|
356
|
+
if clean and clean not in seen:
|
|
357
|
+
print(clean)
|
|
358
|
+
seen.add(clean)
|
|
359
|
+
" > "${VIDEO_TITLE}.txt"
|
|
360
|
+
echo "✓ Saved to: ${VIDEO_TITLE}.txt"
|
|
361
|
+
|
|
362
|
+
# Clean up temporary VTT file
|
|
363
|
+
rm "$VTT_FILE"
|
|
364
|
+
echo "✓ Cleaned up temporary VTT file"
|
|
365
|
+
else
|
|
366
|
+
echo "⚠ No VTT file found to convert"
|
|
367
|
+
fi
|
|
368
|
+
|
|
369
|
+
echo "✓ Complete!"
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
**Note**: This complete workflow handles all scenarios with proper error checking and user prompts at each decision point.
|
|
373
|
+
|
|
374
|
+
## Error Handling
|
|
375
|
+
|
|
376
|
+
### Common Issues and Solutions:
|
|
377
|
+
|
|
378
|
+
**1. yt-dlp not installed**
|
|
379
|
+
- Attempt automatic installation based on system (Homebrew/apt/pip)
|
|
380
|
+
- If installation fails, provide manual installation link
|
|
381
|
+
- Verify installation before proceeding
|
|
382
|
+
|
|
383
|
+
**2. No subtitles available**
|
|
384
|
+
- List available subtitles first to confirm
|
|
385
|
+
- Try both `--write-sub` and `--write-auto-sub`
|
|
386
|
+
- If both fail, offer Whisper transcription option
|
|
387
|
+
- Show file size and ask for user confirmation before downloading audio
|
|
388
|
+
|
|
389
|
+
**3. Invalid or private video**
|
|
390
|
+
- Check if URL is correct format: `https://www.youtube.com/watch?v=VIDEO_ID`
|
|
391
|
+
- Some videos may be private, age-restricted, or geo-blocked
|
|
392
|
+
- Inform user of the specific error from yt-dlp
|
|
393
|
+
|
|
394
|
+
**4. Whisper installation fails**
|
|
395
|
+
- May require system dependencies (ffmpeg, rust)
|
|
396
|
+
- Provide fallback: "Install manually with: `pip3 install openai-whisper`"
|
|
397
|
+
- Check available disk space (models require 1-10GB depending on size)
|
|
398
|
+
|
|
399
|
+
**5. Download interrupted or failed**
|
|
400
|
+
- Check internet connection
|
|
401
|
+
- Verify sufficient disk space
|
|
402
|
+
- Try again with `--no-check-certificate` if SSL issues occur
|
|
403
|
+
|
|
404
|
+
**6. Multiple subtitle languages**
|
|
405
|
+
- By default, yt-dlp downloads all available languages
|
|
406
|
+
- Can specify with `--sub-langs en` for English only
|
|
407
|
+
- List available with `--list-subs` first
|
|
408
|
+
|
|
409
|
+
### Best Practices:
|
|
410
|
+
|
|
411
|
+
- ✅ Always check what's available before attempting download (`--list-subs`)
|
|
412
|
+
- ✅ Verify success at each step before proceeding to next
|
|
413
|
+
- ✅ Ask user before large downloads (audio files, Whisper models)
|
|
414
|
+
- ✅ Clean up temporary files after processing
|
|
415
|
+
- ✅ Provide clear feedback about what's happening at each stage
|
|
416
|
+
- ✅ Handle errors gracefully with helpful messages
|