takomi 2.0.4
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/README.md +422 -0
- package/assets/.agent/skills/agent-recovery/SKILL.md +147 -0
- package/assets/.agent/skills/ai-avatar-video/SKILL.md +153 -0
- package/assets/.agent/skills/ai-marketing-videos/SKILL.md +295 -0
- package/assets/.agent/skills/ai-podcast-creation/SKILL.md +292 -0
- package/assets/.agent/skills/ai-product-photography/SKILL.md +269 -0
- package/assets/.agent/skills/ai-sdk/SKILL.md +77 -0
- package/assets/.agent/skills/ai-sdk/references/ai-gateway.md +66 -0
- package/assets/.agent/skills/ai-sdk/references/common-errors.md +443 -0
- package/assets/.agent/skills/ai-sdk/references/type-safe-agents.md +204 -0
- package/assets/.agent/skills/ai-social-media-content/SKILL.md +253 -0
- package/assets/.agent/skills/ai-voice-cloning/SKILL.md +276 -0
- package/assets/.agent/skills/algorithmic-art/LICENSE.txt +202 -0
- package/assets/.agent/skills/algorithmic-art/SKILL.md +405 -0
- package/assets/.agent/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/assets/.agent/skills/algorithmic-art/templates/viewer.html +599 -0
- package/assets/.agent/skills/audit-website/SKILL.md +631 -0
- package/assets/.agent/skills/audit-website/agents/openai.yaml +6 -0
- package/assets/.agent/skills/audit-website/assets/icon-large.png +0 -0
- package/assets/.agent/skills/audit-website/assets/icon-small.svg +41 -0
- package/assets/.agent/skills/audit-website/references/OUTPUT-FORMAT.md +250 -0
- package/assets/.agent/skills/avoid-feature-creep/SKILL.md +307 -0
- package/assets/.agent/skills/avoid-feature-creep/agents/openai.yaml +3 -0
- package/assets/.agent/skills/avoid-feature-creep/assets/large-logo.png +0 -0
- package/assets/.agent/skills/avoid-feature-creep/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/building-native-ui/SKILL.md +320 -0
- package/assets/.agent/skills/building-native-ui/references/animations.md +220 -0
- package/assets/.agent/skills/building-native-ui/references/controls.md +270 -0
- package/assets/.agent/skills/building-native-ui/references/form-sheet.md +227 -0
- package/assets/.agent/skills/building-native-ui/references/gradients.md +106 -0
- package/assets/.agent/skills/building-native-ui/references/icons.md +213 -0
- package/assets/.agent/skills/building-native-ui/references/media.md +198 -0
- package/assets/.agent/skills/building-native-ui/references/route-structure.md +229 -0
- package/assets/.agent/skills/building-native-ui/references/search.md +248 -0
- package/assets/.agent/skills/building-native-ui/references/storage.md +121 -0
- package/assets/.agent/skills/building-native-ui/references/tabs.md +368 -0
- package/assets/.agent/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/assets/.agent/skills/building-native-ui/references/visual-effects.md +197 -0
- package/assets/.agent/skills/building-native-ui/references/webgpu-three.md +605 -0
- package/assets/.agent/skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/assets/.agent/skills/code-review/SKILL.md +81 -0
- package/assets/.agent/skills/component-analysis/SKILL.md +103 -0
- package/assets/.agent/skills/context7/SKILL.md +85 -0
- package/assets/.agent/skills/convex/SKILL.md +62 -0
- package/assets/.agent/skills/convex/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-agents/SKILL.md +516 -0
- package/assets/.agent/skills/convex-agents/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-agents/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-agents/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-best-practices/SKILL.md +369 -0
- package/assets/.agent/skills/convex-best-practices/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-best-practices/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-best-practices/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-component-authoring/SKILL.md +457 -0
- package/assets/.agent/skills/convex-component-authoring/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-component-authoring/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-component-authoring/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-cron-jobs/SKILL.md +604 -0
- package/assets/.agent/skills/convex-cron-jobs/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-cron-jobs/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-cron-jobs/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-file-storage/SKILL.md +467 -0
- package/assets/.agent/skills/convex-file-storage/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-file-storage/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-file-storage/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-functions/SKILL.md +458 -0
- package/assets/.agent/skills/convex-functions/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-functions/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-functions/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-http-actions/SKILL.md +733 -0
- package/assets/.agent/skills/convex-http-actions/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-http-actions/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-http-actions/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-migrations/SKILL.md +712 -0
- package/assets/.agent/skills/convex-migrations/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-migrations/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-migrations/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-realtime/SKILL.md +443 -0
- package/assets/.agent/skills/convex-realtime/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-realtime/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-realtime/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-schema-validator/SKILL.md +400 -0
- package/assets/.agent/skills/convex-schema-validator/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-schema-validator/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-schema-validator/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-security-audit/SKILL.md +539 -0
- package/assets/.agent/skills/convex-security-audit/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-security-audit/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-security-audit/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/convex-security-check/SKILL.md +378 -0
- package/assets/.agent/skills/convex-security-check/agents/openai.yaml +3 -0
- package/assets/.agent/skills/convex-security-check/assets/large-logo.png +0 -0
- package/assets/.agent/skills/convex-security-check/assets/small-logo.svg +17 -0
- package/assets/.agent/skills/copywriting/SKILL.md +251 -0
- package/assets/.agent/skills/copywriting/references/copy-frameworks.md +338 -0
- package/assets/.agent/skills/copywriting/references/natural-transitions.md +252 -0
- package/assets/.agent/skills/crafting-effective-readmes/SKILL.md +78 -0
- package/assets/.agent/skills/crafting-effective-readmes/references/art-of-readme.md +536 -0
- package/assets/.agent/skills/crafting-effective-readmes/references/make-a-readme.md +119 -0
- package/assets/.agent/skills/crafting-effective-readmes/references/standard-readme-example-maximal.md +68 -0
- package/assets/.agent/skills/crafting-effective-readmes/references/standard-readme-example-minimal.md +21 -0
- package/assets/.agent/skills/crafting-effective-readmes/references/standard-readme-spec.md +242 -0
- package/assets/.agent/skills/crafting-effective-readmes/section-checklist.md +17 -0
- package/assets/.agent/skills/crafting-effective-readmes/style-guide.md +13 -0
- package/assets/.agent/skills/crafting-effective-readmes/templates/internal.md +106 -0
- package/assets/.agent/skills/crafting-effective-readmes/templates/oss.md +77 -0
- package/assets/.agent/skills/crafting-effective-readmes/templates/personal.md +51 -0
- package/assets/.agent/skills/crafting-effective-readmes/templates/xdg-config.md +71 -0
- package/assets/.agent/skills/crafting-effective-readmes/using-references.md +35 -0
- package/assets/.agent/skills/docx/LICENSE.txt +30 -0
- package/assets/.agent/skills/docx/SKILL.md +481 -0
- package/assets/.agent/skills/docx/scripts/accept_changes.py +135 -0
- package/assets/.agent/skills/docx/scripts/comment.py +318 -0
- package/assets/.agent/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/assets/.agent/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/assets/.agent/skills/docx/scripts/office/pack.py +159 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/assets/.agent/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/assets/.agent/skills/docx/scripts/office/soffice.py +183 -0
- package/assets/.agent/skills/docx/scripts/office/unpack.py +132 -0
- package/assets/.agent/skills/docx/scripts/office/validate.py +111 -0
- package/assets/.agent/skills/docx/scripts/office/validators/base.py +847 -0
- package/assets/.agent/skills/docx/scripts/office/validators/docx.py +446 -0
- package/assets/.agent/skills/docx/scripts/office/validators/pptx.py +275 -0
- package/assets/.agent/skills/docx/scripts/office/validators/redlining.py +247 -0
- package/assets/.agent/skills/docx/scripts/templates/comments.xml +3 -0
- package/assets/.agent/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/assets/.agent/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/assets/.agent/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/assets/.agent/skills/docx/scripts/templates/people.xml +3 -0
- package/assets/.agent/skills/domain-name-brainstormer/SKILL.md +212 -0
- package/assets/.agent/skills/frontend-design/LICENSE.txt +177 -0
- package/assets/.agent/skills/frontend-design/SKILL.md +42 -0
- package/assets/.agent/skills/gemini/SKILL.md +223 -0
- package/assets/.agent/skills/git-worktree/SKILL.md +78 -0
- package/assets/.agent/skills/github-ops/SKILL.md +220 -0
- package/assets/.agent/skills/github-ops/scripts/publish_issues.ps1 +443 -0
- package/assets/.agent/skills/github-ops/scripts/smart-ops.ps1 +128 -0
- package/assets/.agent/skills/github-ops/scripts/smart-ops.sh +130 -0
- package/assets/.agent/skills/global-brand-namer/SKILL.md +119 -0
- package/assets/.agent/skills/global-brand-namer/references/language-matrices.md +196 -0
- package/assets/.agent/skills/global-brand-namer/references/saas-modifiers.md +132 -0
- package/assets/.agent/skills/google-trends/SKILL.md +157 -0
- package/assets/.agent/skills/google-trends/scripts/package.json +17 -0
- package/assets/.agent/skills/google-trends/scripts/pnpm-lock.yaml +31 -0
- package/assets/.agent/skills/google-trends/scripts/search.js +168 -0
- package/assets/.agent/skills/high-fidelity-extraction/SKILL.md +59 -0
- package/assets/.agent/skills/jules/SKILL.md +196 -0
- package/assets/.agent/skills/marketing-ideas/SKILL.md +166 -0
- package/assets/.agent/skills/marketing-ideas/references/ideas-by-category.md +347 -0
- package/assets/.agent/skills/monorepo-management/SKILL.md +623 -0
- package/assets/.agent/skills/nextjs-standards/SKILL.md +194 -0
- package/assets/.agent/skills/nextjs-standards/scripts/vibe-verify.py +150 -0
- package/assets/.agent/skills/nextjs-standards/templates/Coding_Guidelines.md +337 -0
- package/assets/.agent/skills/nextjs-standards/templates/Issue_Template.md +194 -0
- package/assets/.agent/skills/optimize-agent-context/SKILL.md +97 -0
- package/assets/.agent/skills/pdf/LICENSE.txt +30 -0
- package/assets/.agent/skills/pdf/SKILL.md +314 -0
- package/assets/.agent/skills/pdf/forms.md +294 -0
- package/assets/.agent/skills/pdf/reference.md +612 -0
- package/assets/.agent/skills/pdf/scripts/check_bounding_boxes.py +65 -0
- package/assets/.agent/skills/pdf/scripts/check_fillable_fields.py +11 -0
- package/assets/.agent/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/assets/.agent/skills/pdf/scripts/create_validation_image.py +37 -0
- package/assets/.agent/skills/pdf/scripts/extract_form_field_info.py +122 -0
- package/assets/.agent/skills/pdf/scripts/extract_form_structure.py +115 -0
- package/assets/.agent/skills/pdf/scripts/fill_fillable_fields.py +98 -0
- package/assets/.agent/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/assets/.agent/skills/pptx/LICENSE.txt +30 -0
- package/assets/.agent/skills/pptx/SKILL.md +232 -0
- package/assets/.agent/skills/pptx/editing.md +205 -0
- package/assets/.agent/skills/pptx/pptxgenjs.md +420 -0
- package/assets/.agent/skills/pptx/scripts/add_slide.py +195 -0
- package/assets/.agent/skills/pptx/scripts/clean.py +286 -0
- package/assets/.agent/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
- package/assets/.agent/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/assets/.agent/skills/pptx/scripts/office/pack.py +159 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/assets/.agent/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/assets/.agent/skills/pptx/scripts/office/soffice.py +183 -0
- package/assets/.agent/skills/pptx/scripts/office/unpack.py +132 -0
- package/assets/.agent/skills/pptx/scripts/office/validate.py +111 -0
- package/assets/.agent/skills/pptx/scripts/office/validators/base.py +847 -0
- package/assets/.agent/skills/pptx/scripts/office/validators/docx.py +446 -0
- package/assets/.agent/skills/pptx/scripts/office/validators/pptx.py +275 -0
- package/assets/.agent/skills/pptx/scripts/office/validators/redlining.py +247 -0
- package/assets/.agent/skills/pptx/scripts/thumbnail.py +289 -0
- package/assets/.agent/skills/pricing-strategy/SKILL.md +227 -0
- package/assets/.agent/skills/pricing-strategy/references/research-methods.md +146 -0
- package/assets/.agent/skills/pricing-strategy/references/tier-structure.md +223 -0
- package/assets/.agent/skills/programmatic-seo/SKILL.md +236 -0
- package/assets/.agent/skills/programmatic-seo/references/playbooks.md +293 -0
- package/assets/.agent/skills/prompt-engineering/SKILL.md +342 -0
- package/assets/.agent/skills/remotion/SKILL.md +45 -0
- package/assets/.agent/skills/remotion/rules/3d.md +86 -0
- package/assets/.agent/skills/remotion/rules/animations.md +29 -0
- package/assets/.agent/skills/remotion/rules/assets/charts-bar-chart.tsx +173 -0
- package/assets/.agent/skills/remotion/rules/assets/text-animations-typewriter.tsx +100 -0
- package/assets/.agent/skills/remotion/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/assets/.agent/skills/remotion/rules/assets.md +78 -0
- package/assets/.agent/skills/remotion/rules/audio.md +172 -0
- package/assets/.agent/skills/remotion/rules/calculate-metadata.md +104 -0
- package/assets/.agent/skills/remotion/rules/can-decode.md +75 -0
- package/assets/.agent/skills/remotion/rules/charts.md +58 -0
- package/assets/.agent/skills/remotion/rules/compositions.md +141 -0
- package/assets/.agent/skills/remotion/rules/display-captions.md +126 -0
- package/assets/.agent/skills/remotion/rules/extract-frames.md +229 -0
- package/assets/.agent/skills/remotion/rules/fonts.md +152 -0
- package/assets/.agent/skills/remotion/rules/get-audio-duration.md +58 -0
- package/assets/.agent/skills/remotion/rules/get-video-dimensions.md +68 -0
- package/assets/.agent/skills/remotion/rules/get-video-duration.md +58 -0
- package/assets/.agent/skills/remotion/rules/gifs.md +138 -0
- package/assets/.agent/skills/remotion/rules/images.md +130 -0
- package/assets/.agent/skills/remotion/rules/import-srt-captions.md +67 -0
- package/assets/.agent/skills/remotion/rules/lottie.md +68 -0
- package/assets/.agent/skills/remotion/rules/maps.md +403 -0
- package/assets/.agent/skills/remotion/rules/measuring-dom-nodes.md +35 -0
- package/assets/.agent/skills/remotion/rules/measuring-text.md +143 -0
- package/assets/.agent/skills/remotion/rules/parameters.md +98 -0
- package/assets/.agent/skills/remotion/rules/sequencing.md +118 -0
- package/assets/.agent/skills/remotion/rules/tailwind.md +11 -0
- package/assets/.agent/skills/remotion/rules/text-animations.md +20 -0
- package/assets/.agent/skills/remotion/rules/timing.md +179 -0
- package/assets/.agent/skills/remotion/rules/transcribe-captions.md +19 -0
- package/assets/.agent/skills/remotion/rules/transitions.md +122 -0
- package/assets/.agent/skills/remotion/rules/trimming.md +53 -0
- package/assets/.agent/skills/remotion/rules/videos.md +171 -0
- package/assets/.agent/skills/security-audit/SKILL.md +184 -0
- package/assets/.agent/skills/seo-ready/SKILL.md +140 -0
- package/assets/.agent/skills/seo-ready/references/aeo-geo-patterns.md +279 -0
- package/assets/.agent/skills/seo-ready/references/ai-writing-detection.md +190 -0
- package/assets/.agent/skills/skill-creator/LICENSE.txt +202 -0
- package/assets/.agent/skills/skill-creator/SKILL.md +356 -0
- package/assets/.agent/skills/skill-creator/references/output-patterns.md +82 -0
- package/assets/.agent/skills/skill-creator/references/workflows.md +28 -0
- package/assets/.agent/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-311.pyc +0 -0
- package/assets/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
- package/assets/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
- package/assets/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/assets/.agent/skills/social-content/SKILL.md +277 -0
- package/assets/.agent/skills/social-content/references/platforms.md +163 -0
- package/assets/.agent/skills/social-content/references/post-templates.md +171 -0
- package/assets/.agent/skills/social-content/references/reverse-engineering.md +190 -0
- package/assets/.agent/skills/spawn-task/SKILL.md +130 -0
- package/assets/.agent/skills/stitch/SKILL.md +258 -0
- package/assets/.agent/skills/stitch/design-md/README.md +34 -0
- package/assets/.agent/skills/stitch/design-md/SKILL.md +172 -0
- package/assets/.agent/skills/stitch/design-md/examples/DESIGN.md +154 -0
- package/assets/.agent/skills/stitch/enhance-prompt/README.md +34 -0
- package/assets/.agent/skills/stitch/enhance-prompt/SKILL.md +204 -0
- package/assets/.agent/skills/stitch/enhance-prompt/references/KEYWORDS.md +114 -0
- package/assets/.agent/skills/stitch/react-components/README.md +36 -0
- package/assets/.agent/skills/stitch/react-components/SKILL.md +47 -0
- package/assets/.agent/skills/stitch/react-components/examples/gold-standard-card.tsx +80 -0
- package/assets/.agent/skills/stitch/react-components/package-lock.json +231 -0
- package/assets/.agent/skills/stitch/react-components/package.json +16 -0
- package/assets/.agent/skills/stitch/react-components/resources/architecture-checklist.md +15 -0
- package/assets/.agent/skills/stitch/react-components/resources/component-template.tsx +37 -0
- package/assets/.agent/skills/stitch/react-components/resources/stitch-api-reference.md +14 -0
- package/assets/.agent/skills/stitch/react-components/resources/style-guide.json +27 -0
- package/assets/.agent/skills/stitch/react-components/scripts/fetch-stitch.sh +30 -0
- package/assets/.agent/skills/stitch/react-components/scripts/validate.js +68 -0
- package/assets/.agent/skills/stitch/remotion/README.md +105 -0
- package/assets/.agent/skills/stitch/remotion/SKILL.md +393 -0
- package/assets/.agent/skills/stitch/remotion/examples/WalkthroughComposition.tsx +78 -0
- package/assets/.agent/skills/stitch/remotion/examples/screens.json +56 -0
- package/assets/.agent/skills/stitch/remotion/resources/composition-checklist.md +124 -0
- package/assets/.agent/skills/stitch/remotion/resources/screen-slide-template.tsx +123 -0
- package/assets/.agent/skills/stitch/remotion/scripts/download-stitch-asset.sh +38 -0
- package/assets/.agent/skills/stitch/shadcn-ui/README.md +248 -0
- package/assets/.agent/skills/stitch/shadcn-ui/SKILL.md +326 -0
- package/assets/.agent/skills/stitch/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/assets/.agent/skills/stitch/shadcn-ui/examples/data-table.tsx +313 -0
- package/assets/.agent/skills/stitch/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/assets/.agent/skills/stitch/shadcn-ui/resources/component-catalog.md +481 -0
- package/assets/.agent/skills/stitch/shadcn-ui/resources/customization-guide.md +516 -0
- package/assets/.agent/skills/stitch/shadcn-ui/resources/migration-guide.md +463 -0
- package/assets/.agent/skills/stitch/shadcn-ui/resources/setup-guide.md +412 -0
- package/assets/.agent/skills/stitch/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/assets/.agent/skills/stitch/stitch-loop/README.md +54 -0
- package/assets/.agent/skills/stitch/stitch-loop/SKILL.md +203 -0
- package/assets/.agent/skills/stitch/stitch-loop/examples/SITE.md +73 -0
- package/assets/.agent/skills/stitch/stitch-loop/examples/next-prompt.md +25 -0
- package/assets/.agent/skills/stitch/stitch-loop/resources/baton-schema.md +61 -0
- package/assets/.agent/skills/stitch/stitch-loop/resources/site-template.md +104 -0
- package/assets/.agent/skills/subagent-driven-development/SKILL.md +242 -0
- package/assets/.agent/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/assets/.agent/skills/subagent-driven-development/implementer-prompt.md +78 -0
- package/assets/.agent/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/assets/.agent/skills/sync-docs/SKILL.md +88 -0
- package/assets/.agent/skills/twitter-automation/SKILL.md +157 -0
- package/assets/.agent/skills/ui-ux-pro-max/README.md +488 -0
- package/assets/.agent/skills/ui-ux-pro-max/SKILL.md +293 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/assets/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/assets/.agent/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-311.pyc +0 -0
- package/assets/.agent/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-311.pyc +0 -0
- package/assets/.agent/skills/ui-ux-pro-max/scripts/core.py +258 -0
- package/assets/.agent/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/assets/.agent/skills/ui-ux-pro-max/scripts/search.py +106 -0
- package/assets/.agent/skills/upgrading-expo/SKILL.md +125 -0
- package/assets/.agent/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/assets/.agent/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/assets/.agent/skills/upgrading-expo/references/native-tabs.md +124 -0
- package/assets/.agent/skills/upgrading-expo/references/new-architecture.md +79 -0
- package/assets/.agent/skills/upgrading-expo/references/react-19.md +79 -0
- package/assets/.agent/skills/upgrading-expo/references/react-compiler.md +59 -0
- package/assets/.agent/skills/web-design-guidelines/SKILL.md +39 -0
- package/assets/.agent/skills/webapp-testing/LICENSE.txt +202 -0
- package/assets/.agent/skills/webapp-testing/SKILL.md +96 -0
- package/assets/.agent/skills/webapp-testing/examples/console_logging.py +35 -0
- package/assets/.agent/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/assets/.agent/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/assets/.agent/skills/webapp-testing/scripts/with_server.py +106 -0
- package/assets/.agent/skills/xlsx/LICENSE.txt +30 -0
- package/assets/.agent/skills/xlsx/SKILL.md +292 -0
- package/assets/.agent/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/assets/.agent/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/assets/.agent/skills/xlsx/scripts/office/pack.py +159 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/assets/.agent/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/assets/.agent/skills/xlsx/scripts/office/soffice.py +183 -0
- package/assets/.agent/skills/xlsx/scripts/office/unpack.py +132 -0
- package/assets/.agent/skills/xlsx/scripts/office/validate.py +111 -0
- package/assets/.agent/skills/xlsx/scripts/office/validators/base.py +847 -0
- package/assets/.agent/skills/xlsx/scripts/office/validators/docx.py +446 -0
- package/assets/.agent/skills/xlsx/scripts/office/validators/pptx.py +275 -0
- package/assets/.agent/skills/xlsx/scripts/office/validators/redlining.py +247 -0
- package/assets/.agent/skills/xlsx/scripts/recalc.py +184 -0
- package/assets/.agent/skills/youtube-pipeline/SKILL.md +194 -0
- package/assets/.agent/skills/youtube-pipeline/resources/youtube-phase1-strategy.md +224 -0
- package/assets/.agent/skills/youtube-pipeline/resources/youtube-phase2-packaging.md +148 -0
- package/assets/.agent/skills/youtube-pipeline/resources/youtube-phase3-scripting.md +197 -0
- package/assets/.agent/skills/youtube-pipeline/resources/youtube-phase3.5-shorts.md +271 -0
- package/assets/.agent/skills/youtube-pipeline/resources/youtube-phase4-production.md +193 -0
- package/assets/.agent/skills/youtube-pipeline/resources/youtube-phase5-repurposing.md +159 -0
- package/assets/.agent/skills/youtube-pipeline/resources/youtube-pipeline.md +161 -0
- package/assets/.agent/skills/youtube-pipeline/scripts/parse_yt_studio.ps1 +150 -0
- package/assets/.agent/workflows/LEGACY/ANTIGRAVITY_TOOLBOX.md +200 -0
- package/assets/.agent/workflows/LEGACY/analyze_component.md +141 -0
- package/assets/.agent/workflows/LEGACY/build_vibecode_project.md +154 -0
- package/assets/.agent/workflows/LEGACY/build_vibecode_project_v2.md +158 -0
- package/assets/.agent/workflows/LEGACY/deep_code_audit.md +79 -0
- package/assets/.agent/workflows/LEGACY/gemini-orchestrate.md +63 -0
- package/assets/.agent/workflows/LEGACY/git_worktree.md +71 -0
- package/assets/.agent/workflows/LEGACY/init_smart_ops.md +101 -0
- package/assets/.agent/workflows/LEGACY/init_vibecode_genesis_v1.md +137 -0
- package/assets/.agent/workflows/LEGACY/multi_agent_strategy.md +62 -0
- package/assets/.agent/workflows/LEGACY/orchestrate.md +321 -0
- package/assets/.agent/workflows/LEGACY/seo_ready.md +249 -0
- package/assets/.agent/workflows/LEGACY/vibe-orchestrator.md +305 -0
- package/assets/.agent/workflows/LEGACY/youtube-phase1-strategy.md +224 -0
- package/assets/.agent/workflows/LEGACY/youtube-phase2-packaging.md +148 -0
- package/assets/.agent/workflows/LEGACY/youtube-phase3-scripting.md +197 -0
- package/assets/.agent/workflows/LEGACY/youtube-phase3.5-shorts.md +271 -0
- package/assets/.agent/workflows/LEGACY/youtube-phase4-production.md +193 -0
- package/assets/.agent/workflows/LEGACY/youtube-phase5-repurposing.md +159 -0
- package/assets/.agent/workflows/LEGACY/youtube-pipeline.md +161 -0
- package/assets/.agent/workflows/README.md +537 -0
- package/assets/.agent/workflows/Vercel Ai SDK.md +34083 -0
- package/assets/.agent/workflows/agent_reset.md +173 -0
- package/assets/.agent/workflows/escalate.md +112 -0
- package/assets/.agent/workflows/migrate.md +135 -0
- package/assets/.agent/workflows/mode-architect.md +422 -0
- package/assets/.agent/workflows/mode-ask.md +294 -0
- package/assets/.agent/workflows/mode-code.md +481 -0
- package/assets/.agent/workflows/mode-debug.md +407 -0
- package/assets/.agent/workflows/mode-orchestrator.md +222 -0
- package/assets/.agent/workflows/mode-review.md +341 -0
- package/assets/.agent/workflows/mode-visionary.md +186 -0
- package/assets/.agent/workflows/optimize-agent-context.md +54 -0
- package/assets/.agent/workflows/remotion-build.md +323 -0
- package/assets/.agent/workflows/reverse_genesis.md +132 -0
- package/assets/.agent/workflows/review_code.md +133 -0
- package/assets/.agent/workflows/spawn-jstar-code-review.md +121 -0
- package/assets/.agent/workflows/stitch.md +149 -0
- package/assets/.agent/workflows/vibe-build.md +271 -0
- package/assets/.agent/workflows/vibe-continueBuild.md +184 -0
- package/assets/.agent/workflows/vibe-design.md +98 -0
- package/assets/.agent/workflows/vibe-finalize.md +208 -0
- package/assets/.agent/workflows/vibe-genesis.md +191 -0
- package/assets/.agent/workflows/vibe-primeAgent.md +110 -0
- package/assets/.agent/workflows/vibe-spawnTask.md +188 -0
- package/assets/.agent/workflows/vibe-syncDocs.md +90 -0
- package/assets/Legacy/0 VibeCode User Manual.md +175 -0
- package/assets/Legacy/1 Project Genesis Protocol The VibeCode Workflow.md +89 -0
- package/assets/Legacy/2/342/234/250 ULTIMATE ORCHESTRATION PROMPT/342/234/250.md" +114 -0
- package/assets/Legacy/3 Design System Genesis Protocol.md +75 -0
- package/assets/Legacy/3.1.1 my_design_system_rules.md +177 -0
- package/assets/Legacy/3.1.2 Material You M3 Genesis Protocol.md +73 -0
- package/assets/Legacy/4 The Ultimate GitHub Issue Meta-Prompt Template.md +54 -0
- package/assets/Legacy/5 The Escalation & Handoff Protocol.md +97 -0
- package/assets/Legacy/8 The Seamless Migration Meta-Prompt (Your Reusable Tool).md +38 -0
- package/assets/Legacy/9 The Reverse Genesis Protocol.md +75 -0
- package/assets/Takomi-Agents/custom_modes.yaml +1252 -0
- package/assets/Takomi-Agents/kilo-code-settings.json +1 -0
- package/assets/Takomi-Agents/vibe-architect.yaml +473 -0
- package/assets/Takomi-Agents/vibe-ask.yaml +395 -0
- package/assets/Takomi-Agents/vibe-code.yaml +522 -0
- package/assets/Takomi-Agents/vibe-debug.yaml +448 -0
- package/assets/Takomi-Agents/vibe-orchestrator.yaml +763 -0
- package/assets/Takomi-Agents/vibe-review.yaml +459 -0
- package/assets/Takomi-Agents/vibe-visionary.yaml +607 -0
- package/bin/takomi.js +2 -0
- package/package.json +42 -0
- package/src/cli.js +638 -0
- package/src/harness.js +281 -0
- package/src/store.js +239 -0
- package/src/utils.js +447 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
|
|
5
|
+
Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
|
|
6
|
+
python search.py "<query>" --design-system [-p "Project Name"]
|
|
7
|
+
python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
|
|
8
|
+
|
|
9
|
+
Domains: style, prompt, color, chart, landing, product, ux, typography
|
|
10
|
+
Stacks: html-tailwind, react, nextjs
|
|
11
|
+
|
|
12
|
+
Persistence (Master + Overrides pattern):
|
|
13
|
+
--persist Save design system to design-system/MASTER.md
|
|
14
|
+
--page Also create a page-specific override file in design-system/pages/
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import argparse
|
|
18
|
+
from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
|
|
19
|
+
from design_system import generate_design_system, persist_design_system
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def format_output(result):
|
|
23
|
+
"""Format results for Claude consumption (token-optimized)"""
|
|
24
|
+
if "error" in result:
|
|
25
|
+
return f"Error: {result['error']}"
|
|
26
|
+
|
|
27
|
+
output = []
|
|
28
|
+
if result.get("stack"):
|
|
29
|
+
output.append(f"## UI Pro Max Stack Guidelines")
|
|
30
|
+
output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
|
|
31
|
+
else:
|
|
32
|
+
output.append(f"## UI Pro Max Search Results")
|
|
33
|
+
output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
|
|
34
|
+
output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
|
|
35
|
+
|
|
36
|
+
for i, row in enumerate(result['results'], 1):
|
|
37
|
+
output.append(f"### Result {i}")
|
|
38
|
+
for key, value in row.items():
|
|
39
|
+
value_str = str(value)
|
|
40
|
+
if len(value_str) > 300:
|
|
41
|
+
value_str = value_str[:300] + "..."
|
|
42
|
+
output.append(f"- **{key}:** {value_str}")
|
|
43
|
+
output.append("")
|
|
44
|
+
|
|
45
|
+
return "\n".join(output)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
if __name__ == "__main__":
|
|
49
|
+
parser = argparse.ArgumentParser(description="UI Pro Max Search")
|
|
50
|
+
parser.add_argument("query", help="Search query")
|
|
51
|
+
parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
|
|
52
|
+
parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help="Stack-specific search (html-tailwind, react, nextjs)")
|
|
53
|
+
parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
|
|
54
|
+
parser.add_argument("--json", action="store_true", help="Output as JSON")
|
|
55
|
+
# Design system generation
|
|
56
|
+
parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
|
|
57
|
+
parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
|
|
58
|
+
parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
|
|
59
|
+
# Persistence (Master + Overrides pattern)
|
|
60
|
+
parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
|
|
61
|
+
parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
|
|
62
|
+
parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
|
|
63
|
+
|
|
64
|
+
args = parser.parse_args()
|
|
65
|
+
|
|
66
|
+
# Design system takes priority
|
|
67
|
+
if args.design_system:
|
|
68
|
+
result = generate_design_system(
|
|
69
|
+
args.query,
|
|
70
|
+
args.project_name,
|
|
71
|
+
args.format,
|
|
72
|
+
persist=args.persist,
|
|
73
|
+
page=args.page,
|
|
74
|
+
output_dir=args.output_dir
|
|
75
|
+
)
|
|
76
|
+
print(result)
|
|
77
|
+
|
|
78
|
+
# Print persistence confirmation
|
|
79
|
+
if args.persist:
|
|
80
|
+
project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
|
|
81
|
+
print("\n" + "=" * 60)
|
|
82
|
+
print(f"✅ Design system persisted to design-system/{project_slug}/")
|
|
83
|
+
print(f" 📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
|
|
84
|
+
if args.page:
|
|
85
|
+
page_filename = args.page.lower().replace(' ', '-')
|
|
86
|
+
print(f" 📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
|
|
87
|
+
print("")
|
|
88
|
+
print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
|
|
89
|
+
print(f" If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
|
|
90
|
+
print("=" * 60)
|
|
91
|
+
# Stack search
|
|
92
|
+
elif args.stack:
|
|
93
|
+
result = search_stack(args.query, args.stack, args.max_results)
|
|
94
|
+
if args.json:
|
|
95
|
+
import json
|
|
96
|
+
print(json.dumps(result, indent=2, ensure_ascii=False))
|
|
97
|
+
else:
|
|
98
|
+
print(format_output(result))
|
|
99
|
+
# Domain search
|
|
100
|
+
else:
|
|
101
|
+
result = search(args.query, args.domain, args.max_results)
|
|
102
|
+
if args.json:
|
|
103
|
+
import json
|
|
104
|
+
print(json.dumps(result, indent=2, ensure_ascii=False))
|
|
105
|
+
else:
|
|
106
|
+
print(format_output(result))
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: upgrading-expo
|
|
3
|
+
description: Guidelines for upgrading Expo SDK versions and fixing dependency issues
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
license: MIT
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## References
|
|
9
|
+
|
|
10
|
+
- ./references/new-architecture.md -- SDK +53: New Architecture migration guide
|
|
11
|
+
- ./references/react-19.md -- SDK +54: React 19 changes (useContext → use, Context.Provider → Context, forwardRef removal)
|
|
12
|
+
- ./references/react-compiler.md -- SDK +54: React Compiler setup and migration guide
|
|
13
|
+
- ./references/native-tabs.md -- SDK +55: Native tabs changes (Icon/Label/Badge now accessed via NativeTabs.Trigger.\*)
|
|
14
|
+
- ./references/expo-av-to-audio.md -- Migrate audio playback and recording from expo-av to expo-audio
|
|
15
|
+
- ./references/expo-av-to-video.md -- Migrate video playback from expo-av to expo-video
|
|
16
|
+
|
|
17
|
+
## Beta/Preview Releases
|
|
18
|
+
|
|
19
|
+
Beta versions use `.preview` suffix (e.g., `55.0.0-preview.2`), published under `@next` tag.
|
|
20
|
+
|
|
21
|
+
Check if latest is beta: https://exp.host/--/api/v2/versions (look for `-preview` in `expoVersion`)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx expo install expo@next --fix # install beta
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Step-by-Step Upgrade Process
|
|
28
|
+
|
|
29
|
+
1. Upgrade Expo and dependencies
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx expo install expo@latest
|
|
33
|
+
npx expo install --fix
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. Run diagnostics: `npx expo-doctor`
|
|
37
|
+
|
|
38
|
+
3. Clear caches and reinstall
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx expo export -p ios --clear
|
|
42
|
+
rm -rf node_modules .expo
|
|
43
|
+
watchman watch-del-all
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Breaking Changes Checklist
|
|
47
|
+
|
|
48
|
+
- Check for removed APIs in release notes
|
|
49
|
+
- Update import paths for moved modules
|
|
50
|
+
- Review native module changes requiring prebuild
|
|
51
|
+
- Test all camera, audio, and video features
|
|
52
|
+
- Verify navigation still works correctly
|
|
53
|
+
|
|
54
|
+
## Prebuild for Native Changes
|
|
55
|
+
|
|
56
|
+
If upgrading requires native changes:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx expo prebuild --clean
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This regenerates the `ios` and `android` directories. Ensure the project is not a bare workflow app before running this command.
|
|
63
|
+
|
|
64
|
+
## Clear caches for bare workflow
|
|
65
|
+
|
|
66
|
+
- Clear the cocoapods cache for iOS: `cd ios && pod install --repo-update`
|
|
67
|
+
- Clear derived data for Xcode: `npx expo run:ios --no-build-cache`
|
|
68
|
+
- Clear the Gradle cache for Android: `cd android && ./gradlew clean`
|
|
69
|
+
|
|
70
|
+
## Housekeeping
|
|
71
|
+
|
|
72
|
+
- Review release notes for the target SDK version at https://expo.dev/changelog
|
|
73
|
+
- If using Expo SDK 54 or later, ensure react-native-worklets is installed — this is required for react-native-reanimated to work.
|
|
74
|
+
- Enable React Compiler in SDK 54+ by adding `"experiments": { "reactCompiler": true }` to app.json — it's stable and recommended
|
|
75
|
+
- Delete sdkVersion from `app.json` to let Expo manage it automatically
|
|
76
|
+
- Remove implicit packages from `package.json`: `@babel/core`, `babel-preset-expo`, `expo-constants`.
|
|
77
|
+
- If the babel.config.js only contains 'babel-preset-expo', delete the file
|
|
78
|
+
- If the metro.config.js only contains expo defaults, delete the file
|
|
79
|
+
|
|
80
|
+
## Deprecated Packages
|
|
81
|
+
|
|
82
|
+
| Old Package | Replacement |
|
|
83
|
+
| -------------------- | ---------------------------------------------------- |
|
|
84
|
+
| `expo-av` | `expo-audio` and `expo-video` |
|
|
85
|
+
| `expo-permissions` | Individual package permission APIs |
|
|
86
|
+
| `@expo/vector-icons` | `expo-symbols` (for SF Symbols) |
|
|
87
|
+
| `AsyncStorage` | `expo-sqlite/localStorage/install` |
|
|
88
|
+
| `expo-app-loading` | `expo-splash-screen` |
|
|
89
|
+
| expo-linear-gradient | experimental_backgroundImage + CSS gradients in View |
|
|
90
|
+
|
|
91
|
+
When migrating deprecated packages, update all code usage before removing the old package. For expo-av, consult the migration references to convert Audio.Sound to useAudioPlayer, Audio.Recording to useAudioRecorder, and Video components to VideoView with useVideoPlayer.
|
|
92
|
+
|
|
93
|
+
## expo.install.exclude
|
|
94
|
+
|
|
95
|
+
Check if package.json has excluded packages:
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"expo": { "install": { "exclude": ["react-native-reanimated"] } }
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Exclusions are often workarounds that may no longer be needed after upgrading. Review each one.
|
|
104
|
+
## Removing patches
|
|
105
|
+
|
|
106
|
+
Check if there are any outdated patches in the `patches/` directory. Remove them if they are no longer needed.
|
|
107
|
+
|
|
108
|
+
## Postcss
|
|
109
|
+
|
|
110
|
+
- `autoprefixer` isn't needed in SDK +53. Remove it from dependencies and check `postcss.config.js` or `postcss.config.mjs` to remove it from the plugins list.
|
|
111
|
+
- Use `postcss.config.mjs` in SDK +53.
|
|
112
|
+
|
|
113
|
+
## Metro
|
|
114
|
+
|
|
115
|
+
Remove redundant metro config options:
|
|
116
|
+
|
|
117
|
+
- resolver.unstable_enablePackageExports is enabled by default in SDK +53.
|
|
118
|
+
- `experimentalImportSupport` is enabled by default in SDK +54.
|
|
119
|
+
- `EXPO_USE_FAST_RESOLVER=1` is removed in SDK +54.
|
|
120
|
+
- cjs and mjs extensions are supported by default in SDK +50.
|
|
121
|
+
- Expo webpack is deprecated, migrate to [Expo Router and Metro web](https://docs.expo.dev/router/migrate/from-expo-webpack/).
|
|
122
|
+
|
|
123
|
+
## New Architecture
|
|
124
|
+
|
|
125
|
+
The new architecture is enabled by default, the app.json field `"newArchEnabled": true` is no longer needed as it's the default. Expo Go only supports the new architecture as of SDK +53.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Migrating from expo-av to expo-audio
|
|
2
|
+
|
|
3
|
+
## Imports
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
// Before
|
|
7
|
+
import { Audio } from 'expo-av';
|
|
8
|
+
|
|
9
|
+
// After
|
|
10
|
+
import { useAudioPlayer, useAudioRecorder, RecordingPresets, AudioModule, setAudioModeAsync } from 'expo-audio';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Audio Playback
|
|
14
|
+
|
|
15
|
+
### Before (expo-av)
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
const [sound, setSound] = useState<Audio.Sound>();
|
|
19
|
+
|
|
20
|
+
async function playSound() {
|
|
21
|
+
const { sound } = await Audio.Sound.createAsync(require('./audio.mp3'));
|
|
22
|
+
setSound(sound);
|
|
23
|
+
await sound.playAsync();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
return sound ? () => { sound.unloadAsync(); } : undefined;
|
|
28
|
+
}, [sound]);
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### After (expo-audio)
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
const player = useAudioPlayer(require('./audio.mp3'));
|
|
35
|
+
|
|
36
|
+
// Play
|
|
37
|
+
player.play();
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Audio Recording
|
|
41
|
+
|
|
42
|
+
### Before (expo-av)
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
const [recording, setRecording] = useState<Audio.Recording>();
|
|
46
|
+
|
|
47
|
+
async function startRecording() {
|
|
48
|
+
await Audio.requestPermissionsAsync();
|
|
49
|
+
await Audio.setAudioModeAsync({ allowsRecordingIOS: true, playsInSilentModeIOS: true });
|
|
50
|
+
const { recording } = await Audio.Recording.createAsync(Audio.RecordingOptionsPresets.HIGH_QUALITY);
|
|
51
|
+
setRecording(recording);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async function stopRecording() {
|
|
55
|
+
await recording?.stopAndUnloadAsync();
|
|
56
|
+
const uri = recording?.getURI();
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### After (expo-audio)
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
const recorder = useAudioRecorder(RecordingPresets.HIGH_QUALITY);
|
|
64
|
+
|
|
65
|
+
async function startRecording() {
|
|
66
|
+
await AudioModule.requestRecordingPermissionsAsync();
|
|
67
|
+
await recorder.prepareToRecordAsync();
|
|
68
|
+
recorder.record();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async function stopRecording() {
|
|
72
|
+
await recorder.stop();
|
|
73
|
+
const uri = recorder.uri;
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Audio Mode
|
|
78
|
+
|
|
79
|
+
### Before (expo-av)
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
await Audio.setAudioModeAsync({
|
|
83
|
+
allowsRecordingIOS: true,
|
|
84
|
+
playsInSilentModeIOS: true,
|
|
85
|
+
staysActiveInBackground: true,
|
|
86
|
+
interruptionModeIOS: InterruptionModeIOS.DoNotMix,
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### After (expo-audio)
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
await setAudioModeAsync({
|
|
94
|
+
playsInSilentMode: true,
|
|
95
|
+
shouldPlayInBackground: true,
|
|
96
|
+
interruptionMode: 'doNotMix',
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## API Mapping
|
|
101
|
+
|
|
102
|
+
| expo-av | expo-audio |
|
|
103
|
+
|---------|------------|
|
|
104
|
+
| `Audio.Sound.createAsync()` | `useAudioPlayer(source)` |
|
|
105
|
+
| `sound.playAsync()` | `player.play()` |
|
|
106
|
+
| `sound.pauseAsync()` | `player.pause()` |
|
|
107
|
+
| `sound.setPositionAsync(ms)` | `player.seekTo(seconds)` |
|
|
108
|
+
| `sound.setVolumeAsync(vol)` | `player.volume = vol` |
|
|
109
|
+
| `sound.setRateAsync(rate)` | `player.playbackRate = rate` |
|
|
110
|
+
| `sound.setIsLoopingAsync(loop)` | `player.loop = loop` |
|
|
111
|
+
| `sound.unloadAsync()` | Automatic via hook |
|
|
112
|
+
| `playbackStatus.positionMillis` | `player.currentTime` (seconds) |
|
|
113
|
+
| `playbackStatus.durationMillis` | `player.duration` (seconds) |
|
|
114
|
+
| `playbackStatus.isPlaying` | `player.playing` |
|
|
115
|
+
| `Audio.Recording.createAsync()` | `useAudioRecorder(preset)` |
|
|
116
|
+
| `Audio.RecordingOptionsPresets.*` | `RecordingPresets.*` |
|
|
117
|
+
| `recording.stopAndUnloadAsync()` | `recorder.stop()` |
|
|
118
|
+
| `recording.getURI()` | `recorder.uri` |
|
|
119
|
+
| `Audio.requestPermissionsAsync()` | `AudioModule.requestRecordingPermissionsAsync()` |
|
|
120
|
+
|
|
121
|
+
## Key Differences
|
|
122
|
+
|
|
123
|
+
- **No auto-reset on finish**: After `play()` completes, the player stays paused at the end. To replay, call `player.seekTo(0)` then `play()`
|
|
124
|
+
- **Time in seconds**: expo-audio uses seconds, not milliseconds (matching web standards)
|
|
125
|
+
- **Immediate loading**: Audio loads immediately when the hook mounts—no explicit preloading needed
|
|
126
|
+
- **Automatic cleanup**: No need to call `unloadAsync()`, hooks handle resource cleanup on unmount
|
|
127
|
+
- **Multiple players**: Create multiple `useAudioPlayer` instances and store them—all load immediately
|
|
128
|
+
- **Direct property access**: Set volume, rate, loop directly on the player object (`player.volume = 0.5`)
|
|
129
|
+
|
|
130
|
+
## API Reference
|
|
131
|
+
|
|
132
|
+
https://docs.expo.dev/versions/latest/sdk/audio/
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Migrating from expo-av to expo-video
|
|
2
|
+
|
|
3
|
+
## Imports
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
// Before
|
|
7
|
+
import { Video, ResizeMode } from 'expo-av';
|
|
8
|
+
|
|
9
|
+
// After
|
|
10
|
+
import { useVideoPlayer, VideoView, VideoSource } from 'expo-video';
|
|
11
|
+
import { useEvent, useEventListener } from 'expo';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Video Playback
|
|
15
|
+
|
|
16
|
+
### Before (expo-av)
|
|
17
|
+
|
|
18
|
+
```tsx
|
|
19
|
+
const videoRef = useRef<Video>(null);
|
|
20
|
+
const [status, setStatus] = useState({});
|
|
21
|
+
|
|
22
|
+
<Video
|
|
23
|
+
ref={videoRef}
|
|
24
|
+
source={{ uri: 'https://example.com/video.mp4' }}
|
|
25
|
+
style={{ width: 350, height: 200 }}
|
|
26
|
+
resizeMode={ResizeMode.CONTAIN}
|
|
27
|
+
isLooping
|
|
28
|
+
onPlaybackStatusUpdate={setStatus}
|
|
29
|
+
/>
|
|
30
|
+
|
|
31
|
+
// Control
|
|
32
|
+
videoRef.current?.playAsync();
|
|
33
|
+
videoRef.current?.pauseAsync();
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### After (expo-video)
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
const player = useVideoPlayer('https://example.com/video.mp4', player => {
|
|
40
|
+
player.loop = true;
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const { isPlaying } = useEvent(player, 'playingChange', { isPlaying: player.playing });
|
|
44
|
+
|
|
45
|
+
<VideoView
|
|
46
|
+
player={player}
|
|
47
|
+
style={{ width: 350, height: 200 }}
|
|
48
|
+
contentFit="contain"
|
|
49
|
+
/>
|
|
50
|
+
|
|
51
|
+
// Control
|
|
52
|
+
player.play();
|
|
53
|
+
player.pause();
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Status Updates
|
|
57
|
+
|
|
58
|
+
### Before (expo-av)
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
<Video
|
|
62
|
+
onPlaybackStatusUpdate={status => {
|
|
63
|
+
if (status.isLoaded) {
|
|
64
|
+
console.log(status.positionMillis, status.durationMillis, status.isPlaying);
|
|
65
|
+
if (status.didJustFinish) console.log('finished');
|
|
66
|
+
}
|
|
67
|
+
}}
|
|
68
|
+
/>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### After (expo-video)
|
|
72
|
+
|
|
73
|
+
```tsx
|
|
74
|
+
// Reactive state
|
|
75
|
+
const { isPlaying } = useEvent(player, 'playingChange', { isPlaying: player.playing });
|
|
76
|
+
|
|
77
|
+
// Side effects
|
|
78
|
+
useEventListener(player, 'playToEnd', () => console.log('finished'));
|
|
79
|
+
|
|
80
|
+
// Direct access
|
|
81
|
+
console.log(player.currentTime, player.duration, player.playing);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Local Files
|
|
85
|
+
|
|
86
|
+
### Before (expo-av)
|
|
87
|
+
|
|
88
|
+
```tsx
|
|
89
|
+
<Video source={require('./video.mp4')} />
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### After (expo-video)
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
const player = useVideoPlayer({ assetId: require('./video.mp4') });
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Fullscreen and PiP
|
|
99
|
+
|
|
100
|
+
```tsx
|
|
101
|
+
<VideoView
|
|
102
|
+
player={player}
|
|
103
|
+
allowsFullscreen
|
|
104
|
+
allowsPictureInPicture
|
|
105
|
+
onFullscreenEnter={() => {}}
|
|
106
|
+
onFullscreenExit={() => {}}
|
|
107
|
+
/>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
For PiP and background playback, add to app.json:
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"expo": {
|
|
115
|
+
"plugins": [
|
|
116
|
+
["expo-video", { "supportsBackgroundPlayback": true, "supportsPictureInPicture": true }]
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## API Mapping
|
|
123
|
+
|
|
124
|
+
| expo-av | expo-video |
|
|
125
|
+
|---------|------------|
|
|
126
|
+
| `<Video>` | `<VideoView>` |
|
|
127
|
+
| `ref={videoRef}` | `player={useVideoPlayer()}` |
|
|
128
|
+
| `source={{ uri }}` | Pass to `useVideoPlayer(uri)` |
|
|
129
|
+
| `resizeMode={ResizeMode.CONTAIN}` | `contentFit="contain"` |
|
|
130
|
+
| `isLooping` | `player.loop = true` |
|
|
131
|
+
| `shouldPlay` | `player.play()` in setup |
|
|
132
|
+
| `isMuted` | `player.muted = true` |
|
|
133
|
+
| `useNativeControls` | `nativeControls={true}` |
|
|
134
|
+
| `onPlaybackStatusUpdate` | `useEvent` / `useEventListener` |
|
|
135
|
+
| `videoRef.current.playAsync()` | `player.play()` |
|
|
136
|
+
| `videoRef.current.pauseAsync()` | `player.pause()` |
|
|
137
|
+
| `videoRef.current.replayAsync()` | `player.replay()` |
|
|
138
|
+
| `videoRef.current.setPositionAsync(ms)` | `player.currentTime = seconds` |
|
|
139
|
+
| `status.positionMillis` | `player.currentTime` (seconds) |
|
|
140
|
+
| `status.durationMillis` | `player.duration` (seconds) |
|
|
141
|
+
| `status.didJustFinish` | `useEventListener(player, 'playToEnd')` |
|
|
142
|
+
|
|
143
|
+
## Key Differences
|
|
144
|
+
|
|
145
|
+
- **Separate player and view**: Player logic decoupled from the view—one player can be used across multiple views
|
|
146
|
+
- **Time in seconds**: Uses seconds, not milliseconds
|
|
147
|
+
- **Event system**: Uses `useEvent`/`useEventListener` from `expo` instead of callback props
|
|
148
|
+
- **Video preloading**: Create a player without mounting a VideoView to preload for faster transitions
|
|
149
|
+
- **Built-in caching**: Set `useCaching: true` in VideoSource for persistent offline caching
|
|
150
|
+
|
|
151
|
+
## Known Issues
|
|
152
|
+
|
|
153
|
+
- **Uninstall expo-av first**: On Android, having both expo-av and expo-video installed can cause VideoView to show a black screen. Uninstall expo-av before installing expo-video
|
|
154
|
+
- **Android: Reusing players**: Mounting the same player in multiple VideoViews simultaneously can cause black screens on Android (works on iOS)
|
|
155
|
+
- **Android: currentTime in setup**: Setting `player.currentTime` in the `useVideoPlayer` setup callback may not work on Android—set it after mount instead
|
|
156
|
+
- **Changing source**: Use `player.replace(newSource)` to change videos without recreating the player
|
|
157
|
+
|
|
158
|
+
## API Reference
|
|
159
|
+
|
|
160
|
+
https://docs.expo.dev/versions/latest/sdk/video/
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Native Tabs Migration (SDK 55)
|
|
2
|
+
|
|
3
|
+
In SDK 55, `Label`, `Icon`, `Badge`, and `VectorIcon` are now accessed as static properties on `NativeTabs.Trigger` rather than separate imports.
|
|
4
|
+
|
|
5
|
+
## Import Changes
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
// SDK 53/54
|
|
9
|
+
import {
|
|
10
|
+
NativeTabs,
|
|
11
|
+
Icon,
|
|
12
|
+
Label,
|
|
13
|
+
Badge,
|
|
14
|
+
VectorIcon,
|
|
15
|
+
} from "expo-router/unstable-native-tabs";
|
|
16
|
+
|
|
17
|
+
// SDK 55+
|
|
18
|
+
import { NativeTabs } from "expo-router/unstable-native-tabs";
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Component Changes
|
|
22
|
+
|
|
23
|
+
| SDK 53/54 | SDK 55+ |
|
|
24
|
+
| ---------------- | ----------------------------------- |
|
|
25
|
+
| `<Icon />` | `<NativeTabs.Trigger.Icon />` |
|
|
26
|
+
| `<Label />` | `<NativeTabs.Trigger.Label />` |
|
|
27
|
+
| `<Badge />` | `<NativeTabs.Trigger.Badge />` |
|
|
28
|
+
| `<VectorIcon />` | `<NativeTabs.Trigger.VectorIcon />` |
|
|
29
|
+
| (n/a) | `<NativeTabs.BottomAccessory />` |
|
|
30
|
+
|
|
31
|
+
## New in SDK 55
|
|
32
|
+
|
|
33
|
+
### BottomAccessory
|
|
34
|
+
|
|
35
|
+
New component for Apple Music-style mini players on iOS +26 that float above the tab bar:
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
<NativeTabs>
|
|
39
|
+
<NativeTabs.BottomAccessory>
|
|
40
|
+
{/* Content above tabs */}
|
|
41
|
+
</NativeTabs.BottomAccessory>
|
|
42
|
+
<NativeTabs.Trigger name="(index)">
|
|
43
|
+
<NativeTabs.Trigger.Label>Home</NativeTabs.Trigger.Label>
|
|
44
|
+
</NativeTabs.Trigger>
|
|
45
|
+
</NativeTabs>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
On Android and web, this component will render as a no-op. Position a view absolutely above the tab bar instead.
|
|
49
|
+
|
|
50
|
+
### Icon `md` Prop
|
|
51
|
+
|
|
52
|
+
New `md` prop for Material icon glyphs on Android (alongside existing `drawable`):
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<NativeTabs.Trigger.Icon sf="house" md="(index)" />
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Full Migration Example
|
|
59
|
+
|
|
60
|
+
### Before (SDK 53/54)
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
import {
|
|
64
|
+
NativeTabs,
|
|
65
|
+
Icon,
|
|
66
|
+
Label,
|
|
67
|
+
Badge,
|
|
68
|
+
} from "expo-router/unstable-native-tabs";
|
|
69
|
+
|
|
70
|
+
export default function TabLayout() {
|
|
71
|
+
return (
|
|
72
|
+
<NativeTabs minimizeBehavior="onScrollDown">
|
|
73
|
+
<NativeTabs.Trigger name="(index)">
|
|
74
|
+
<Label>Home</Label>
|
|
75
|
+
<Icon sf="house.fill" />
|
|
76
|
+
<Badge>3</Badge>
|
|
77
|
+
</NativeTabs.Trigger>
|
|
78
|
+
<NativeTabs.Trigger name="(settings)">
|
|
79
|
+
<Label>Settings</Label>
|
|
80
|
+
<Icon sf="gear" />
|
|
81
|
+
</NativeTabs.Trigger>
|
|
82
|
+
<NativeTabs.Trigger name="(search)" role="search">
|
|
83
|
+
<Label>Search</Label>
|
|
84
|
+
</NativeTabs.Trigger>
|
|
85
|
+
</NativeTabs>
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### After (SDK 55+)
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
import { NativeTabs } from "expo-router/unstable-native-tabs";
|
|
94
|
+
|
|
95
|
+
export default function TabLayout() {
|
|
96
|
+
return (
|
|
97
|
+
<NativeTabs minimizeBehavior="onScrollDown">
|
|
98
|
+
<NativeTabs.Trigger name="(index)">
|
|
99
|
+
<NativeTabs.Trigger.Label>Home</NativeTabs.Trigger.Label>
|
|
100
|
+
<NativeTabs.Trigger.Icon sf="house.fill" />
|
|
101
|
+
<NativeTabs.Trigger.Badge>3</NativeTabs.Trigger.Badge>
|
|
102
|
+
</NativeTabs.Trigger>
|
|
103
|
+
<NativeTabs.Trigger name="(settings)">
|
|
104
|
+
<NativeTabs.Trigger.Label>Settings</NativeTabs.Trigger.Label>
|
|
105
|
+
<NativeTabs.Trigger.Icon sf="gear" />
|
|
106
|
+
</NativeTabs.Trigger>
|
|
107
|
+
<NativeTabs.Trigger name="(search)" role="search">
|
|
108
|
+
<NativeTabs.Trigger.Label>Search</NativeTabs.Trigger.Label>
|
|
109
|
+
</NativeTabs.Trigger>
|
|
110
|
+
</NativeTabs>
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Migration Checklist
|
|
116
|
+
|
|
117
|
+
1. Remove `Icon`, `Label`, `Badge`, `VectorIcon` from imports
|
|
118
|
+
2. Keep only `NativeTabs` import from `expo-router/unstable-native-tabs`
|
|
119
|
+
3. Replace `<Icon />` with `<NativeTabs.Trigger.Icon />`
|
|
120
|
+
4. Replace `<Label />` with `<NativeTabs.Trigger.Label />`
|
|
121
|
+
5. Replace `<Badge />` with `<NativeTabs.Trigger.Badge />`
|
|
122
|
+
6. Replace `<VectorIcon />` with `<NativeTabs.Trigger.VectorIcon />`
|
|
123
|
+
|
|
124
|
+
- Read docs for more info https://docs.expo.dev/versions/v55.0.0/sdk/router-native-tabs/
|