From 5cb67428bd7893e09be1f1200ef1412a08028868 Mon Sep 17 00:00:00 2001 From: "ci[bot]" Date: Wed, 3 Jun 2026 16:02:56 +0000 Subject: [PATCH] :package: deps(thirdparty): update snapshots --- .../.claude-plugin/marketplace.json | 106 +- .../.claude-plugin/plugin.json | 4 +- .../.github/workflows/star-history.yml | 31 +- antigravity-awesome-skills/CATALOG.md | 28 +- antigravity-awesome-skills/CHANGELOG.md | 49 + antigravity-awesome-skills/README.md | 32 +- antigravity-awesome-skills/SOURCE.md | 4 +- .../apps/web-app/index.html | 12 +- .../public/google5815fd8827d2319c.html | 1 + .../apps/web-app/public/llms.txt | 7 +- .../apps/web-app/public/sitemap.xml | 226 +-- .../apps/web-app/public/skills.json.backup | 312 ++++ .../apps/web-app/public/social-card.svg | 4 +- .../apps/web-app/scripts/generate-sitemap.js | 2 +- .../apps/web-app/scripts/prerender-routes.js | 77 +- .../apps/web-app/scripts/verify-seo-assets.js | 23 +- .../web-app/scripts/verify-seo-assets.test.js | 21 +- .../apps/web-app/src/pages/Home.tsx | 14 +- .../apps/web-app/src/pages/Plugins.tsx | 2 +- .../apps/web-app/src/utils/seo.ts | 24 +- .../assets/star-history.png | Bin 50154 -> 50239 bytes antigravity-awesome-skills/data/aliases.json | 1 + antigravity-awesome-skills/data/bundles.json | 5 + antigravity-awesome-skills/data/catalog.json | 331 ++++- .../data/plugin-compatibility.json | 286 +++- .../data/skills_index.json | 312 ++++ .../docs/integrations/jetski-cortex.md | 6 +- .../jetski-gemini-loader/README.md | 2 +- .../docs/maintainers/repo-growth-seo.md | 6 +- .../docs/maintainers/skills-update-guide.md | 2 +- .../docs/users/bundles.md | 2 +- .../docs/users/claude-code-skills.md | 2 +- .../docs/users/gemini-cli-skills.md | 2 +- .../docs/users/getting-started.md | 2 +- .../docs/users/kiro-integration.md | 2 +- .../docs/users/usage.md | 8 +- .../docs/users/visual-guide.md | 8 +- antigravity-awesome-skills/package-lock.json | 4 +- antigravity-awesome-skills/package.json | 4 +- .../.claude-plugin/plugin.json | 4 +- .../skills/accesslint-audit/SKILL.md | 115 ++ .../skills/accesslint-diff/SKILL.md | 81 ++ .../skills/accesslint-scan/SKILL.md | 47 + .../skills/composition-patterns/SKILL.md | 87 ++ .../composition-patterns/rules/_sections.md | 29 + .../composition-patterns/rules/_template.md | 24 + .../rules/architecture-avoid-boolean-props.md | 100 ++ .../rules/architecture-compound-components.md | 112 ++ .../patterns-children-over-render-props.md | 87 ++ .../rules/patterns-explicit-variants.md | 100 ++ .../rules/react19-no-forwardref.md | 42 + .../rules/state-context-interface.md | 191 +++ .../rules/state-decouple-implementation.md | 113 ++ .../rules/state-lift-state.md | 125 ++ .../skills/debugging-toolkit/SKILL.md | 35 + .../skills/deploy-to-vercel/SKILL.md | 304 ++++ .../resources/deploy-codex.sh | 301 ++++ .../deploy-to-vercel/resources/deploy.sh | 301 ++++ .../skills/polis-protocol/SKILL.md | 93 ++ .../skills/python-development/SKILL.md | 35 + .../skills/radix-ui-design-system/SKILL.md | 4 +- .../skills/react-native-skills/SKILL.md | 120 ++ .../react-native-skills/rules/_sections.md | 86 ++ .../react-native-skills/rules/_template.md | 28 + .../rules/animation-derived-value.md | 53 + .../rules/animation-gesture-detector-press.md | 95 ++ .../rules/animation-gpu-properties.md | 65 + .../design-system-compound-components.md | 66 + .../rules/fonts-config-plugin.md | 71 + .../rules/imports-design-system-folder.md | 68 + .../rules/js-hoist-intl.md | 61 + .../rules/list-performance-callbacks.md | 44 + .../list-performance-function-references.md | 132 ++ .../rules/list-performance-images.md | 53 + .../rules/list-performance-inline-objects.md | 97 ++ .../rules/list-performance-item-expensive.md | 94 ++ .../rules/list-performance-item-memo.md | 82 ++ .../rules/list-performance-item-types.md | 104 ++ .../rules/list-performance-virtualize.md | 67 + .../rules/monorepo-native-deps-in-app.md | 46 + .../monorepo-single-dependency-versions.md | 63 + .../rules/navigation-native-navigators.md | 188 +++ .../react-compiler-destructure-functions.md | 50 + ...react-compiler-reanimated-shared-values.md | 48 + .../rules/react-state-dispatcher.md | 91 ++ .../rules/react-state-fallback.md | 56 + .../rules/react-state-minimize.md | 65 + .../rules/rendering-no-falsy-and.md | 74 + .../rules/rendering-text-in-text-component.md | 36 + .../rules/scroll-position-no-state.md | 82 ++ .../rules/state-ground-truth.md | 80 + .../rules/ui-expo-image.md | 66 + .../rules/ui-image-gallery.md | 104 ++ .../rules/ui-measure-views.md | 78 + .../react-native-skills/rules/ui-menus.md | 174 +++ .../rules/ui-native-modals.md | 77 + .../react-native-skills/rules/ui-pressable.md | 61 + .../rules/ui-safe-area-scroll.md | 65 + .../rules/ui-scrollview-content-inset.md | 45 + .../react-native-skills/rules/ui-styling.md | 87 ++ .../skills/tdd-workflows/SKILL.md | 35 + .../skills/vercel-cli-with-tokens/SKILL.md | 361 +++++ .../skills/vercel-optimize/CONTRIBUTING.md | 41 + .../skills/vercel-optimize/SKILL.md | 331 +++++ .../skills/vercel-optimize/lib/auth-route.mjs | 23 + .../vercel-optimize/lib/budget-summary.mjs | 182 +++ .../skills/vercel-optimize/lib/citations.mjs | 139 ++ .../vercel-optimize/lib/cost-coverage.mjs | 145 ++ .../skills/vercel-optimize/lib/dedup-recs.mjs | 325 +++++ .../skills/vercel-optimize/lib/deep-dive.mjs | 350 +++++ .../vercel-optimize/lib/display-labels.mjs | 185 +++ .../vercel-optimize/lib/extract-claims.mjs | 550 +++++++ .../vercel-optimize/lib/framework-support.mjs | 67 + .../lib/gates/build-minutes-fanout.mjs | 69 + .../vercel-optimize/lib/gates/cold-start.mjs | 66 + .../vercel-optimize/lib/gates/contract.mjs | 79 + .../vercel-optimize/lib/gates/cwv-poor.mjs | 87 ++ .../lib/gates/external-api-slow.mjs | 55 + .../vercel-optimize/lib/gates/hard-gates.mjs | 73 + .../vercel-optimize/lib/gates/index.mjs | 45 + .../lib/gates/isr-overrevalidation.mjs | 62 + .../lib/gates/middleware-heavy.mjs | 51 + .../observability-events-attribution.mjs | 56 + .../lib/gates/platform-bot-protection.mjs | 115 ++ .../lib/gates/platform-fluid-compute.mjs | 83 ++ .../lib/gates/region-misconfig.mjs | 64 + .../lib/gates/route-errors.mjs | 80 + .../lib/gates/scanner-driven.mjs | 122 ++ .../lib/gates/select-candidates.mjs | 134 ++ .../vercel-optimize/lib/gates/slow-route.mjs | 88 ++ .../vercel-optimize/lib/gates/types.d.ts | 38 + .../lib/gates/uncached-route.mjs | 93 ++ .../lib/gates/usage-spike-triage.mjs | 121 ++ .../lib/grade-recommendation.mjs | 155 ++ .../vercel-optimize/lib/impact-label.mjs | 126 ++ .../vercel-optimize/lib/impact-magnitude.mjs | 60 + .../lib/investigation-brief.mjs | 610 ++++++++ .../lib/observation-safety.mjs | 174 +++ .../vercel-optimize/lib/project-facts.mjs | 99 ++ .../skills/vercel-optimize/lib/queries.mjs | 315 ++++ .../lib/reconcile-candidates.mjs | 372 +++++ .../vercel-optimize/lib/render-report.mjs | 955 ++++++++++++ .../skills/vercel-optimize/lib/repo-root.mjs | 86 ++ .../vercel-optimize/lib/route-normalize.mjs | 220 +++ .../sanitizers/bot-protection-certainty.mjs | 38 + .../cache-tag-invalidation-certainty.mjs | 30 + .../lib/sanitizers/count-correct.mjs | 52 + .../function-duration-invocations.mjs | 38 + .../vercel-optimize/lib/sanitizers/index.mjs | 79 + .../lib/sanitizers/middleware-conflict.mjs | 36 + .../lib/sanitizers/missing-citation.mjs | 16 + .../lib/sanitizers/pre-release.mjs | 74 + .../lib/sanitizers/rate-limit.mjs | 67 + .../sanitizers/rendering-mode-mislabel.mjs | 38 + .../lib/sanitizers/undeclared-dep.mjs | 78 + .../lib/sanitizers/vercel-directive-strip.mjs | 37 + .../lib/sanitizers/window-units.mjs | 32 + .../cache-components-suspense-dedupe.mjs | 109 ++ .../lib/scanners/edge-heavy-import.mjs | 94 ++ .../lib/scanners/force-dynamic.mjs | 42 + .../lib/scanners/headers-in-page.mjs | 44 + .../vercel-optimize/lib/scanners/index.mjs | 35 + .../lib/scanners/large-static-asset.mjs | 92 ++ .../lib/scanners/max-age-without-s-maxage.mjs | 42 + .../lib/scanners/middleware-broad-matcher.mjs | 55 + .../lib/scanners/missing-cache-headers.mjs | 90 ++ .../lib/scanners/prisma-include-tree.mjs | 42 + .../lib/scanners/region-pin-in-config.mjs | 88 ++ .../lib/scanners/source-maps-production.mjs | 36 + .../scanners/sveltekit-prerender-missing.mjs | 43 + .../lib/scanners/turbo-force-bypass.mjs | 129 ++ .../lib/scanners/unoptimized-image.mjs | 113 ++ .../lib/scanners/use-cache-date-stamp.mjs | 106 ++ .../vercel-optimize/lib/support-topics.mjs | 355 +++++ .../skills/vercel-optimize/lib/throttle.mjs | 273 ++++ .../skills/vercel-optimize/lib/util.mjs | 24 + .../skills/vercel-optimize/lib/vercel.mjs | 784 ++++++++++ .../vercel-optimize/lib/verify-claim.mjs | 1291 +++++++++++++++++ .../lib/workspace-resolver.mjs | 522 +++++++ .../vercel-optimize/references/candidates.md | 176 +++ .../references/data-collection.md | 218 +++ .../references/docs-library.json | 683 +++++++++ .../vercel-optimize/references/doctrine.md | 105 ++ .../references/observability-plus.md | 108 ++ .../references/playbooks/README.md | 53 + .../references/playbooks/ai-application.md | 32 + .../references/playbooks/api-service.md | 30 + .../references/playbooks/content-site.md | 30 + .../references/playbooks/ecommerce.md | 30 + .../references/playbooks/marketing.md | 30 + .../references/playbooks/saas.md | 31 + .../references/playbooks/sveltekit.md | 75 + .../references/recommendations.md | 203 +++ .../references/scanner-patterns.md | 251 ++++ .../vercel-optimize/references/scoring.md | 205 +++ .../references/support-topics/README.md | 46 + .../astro-edge-middleware-scope.md | 22 + .../astro-output-mode-and-isr.md | 22 + .../auth-preserving-parallelization.md | 22 + .../bot-protection-product-guardrails.md | 22 + .../build-minutes-monorepo-fanout.md | 23 + ...ache-components-static-shell-boundaries.md | 22 + ...ache-components-suspense-dedupe-pitfall.md | 23 + .../support-topics/cdn-cache-auth-safety.md | 22 + .../cold-start-initialization-bundle.md | 22 + .../core-web-vitals-client-bottlenecks.md | 22 + .../database-egress-pooling-region.md | 22 + .../support-topics/dynamic-rendering-traps.md | 22 + .../external-api-critical-path-platform.md | 22 + .../external-api-critical-path.md | 22 + .../fast-data-transfer-payloads.md | 22 + .../support-topics/fluid-compute-caveats.md | 22 + .../function-duration-io-and-after.md | 22 + .../function-invocation-reduction.md | 22 + .../function-region-misconfiguration-ttfb.md | 23 + .../image-optimization-cost-control.md | 22 + .../isr-revalidation-static-generation.md | 22 + .../middleware-proxy-edge-cost.md | 22 + .../next-fetch-revalidate-floor.md | 22 + .../next-font-cls-self-hosting.md | 23 + .../next-heavy-ui-lazy-load-boundaries.md | 23 + .../next-image-lcp-preload-sizes.md | 23 + .../next-route-handler-get-cache-defaults.md | 22 + .../next-script-third-party-strategy.md | 23 + .../nextjs-version-cache-semantics.md | 22 + .../not-found-catchall-request-waste.md | 23 + .../nuxt-route-rules-cache-isr.md | 22 + .../observability-events-cost-attribution.md | 22 + .../post-response-work-waituntil.md | 22 + .../route-error-durable-offload.md | 22 + .../route-error-runtime-limits.md | 22 + .../runtime-cache-reusable-data.md | 22 + .../sveltekit-isr-prerender-safety.md | 22 + .../sveltekit-split-cold-start-tradeoff.md | 22 + .../support-topics/usage-spike-triage.md | 22 + ...se-cache-date-stamp-isr-write-amplifier.md | 23 + .../use-cache-remote-shared-origin-data.md | 22 + .../workflow-resumable-stream-routes.md | 23 + .../references/verification.md | 102 ++ .../vercel-optimize/references/voice.md | 76 + .../scripts/budget-summary.mjs | 56 + .../vercel-optimize/scripts/build-docs.mjs | 74 + .../scripts/check-citations.mjs | 81 ++ .../scripts/check-docs-fresh.mjs | 93 ++ .../scripts/collect-signals.mjs | 576 ++++++++ .../scripts/collect-sub-agent-outputs.mjs | 296 ++++ .../vercel-optimize/scripts/deep-dive.mjs | 319 ++++ .../scripts/gate-investigations.mjs | 166 +++ .../vercel-optimize/scripts/merge-signals.mjs | 192 +++ .../scripts/prepare-investigation-brief.mjs | 231 +++ .../scripts/reconcile-candidates.mjs | 62 + .../vercel-optimize/scripts/render-report.mjs | 437 ++++++ .../vercel-optimize/scripts/scan-codebase.mjs | 313 ++++ .../scripts/verify-and-regen.mjs | 346 +++++ .../scripts/verify-finding.mjs | 19 + .../vercel-react-view-transitions/SKILL.md | 327 +++++ .../references/css-recipes.md | 242 +++ .../references/implementation.md | 182 +++ .../references/nextjs.md | 176 +++ .../references/patterns.md | 262 ++++ .../.codex-plugin/plugin.json | 4 +- .../skills/accesslint-audit/SKILL.md | 115 ++ .../skills/accesslint-diff/SKILL.md | 81 ++ .../skills/accesslint-scan/SKILL.md | 47 + .../skills/composition-patterns/SKILL.md | 87 ++ .../composition-patterns/rules/_sections.md | 29 + .../composition-patterns/rules/_template.md | 24 + .../rules/architecture-avoid-boolean-props.md | 100 ++ .../rules/architecture-compound-components.md | 112 ++ .../patterns-children-over-render-props.md | 87 ++ .../rules/patterns-explicit-variants.md | 100 ++ .../rules/react19-no-forwardref.md | 42 + .../rules/state-context-interface.md | 191 +++ .../rules/state-decouple-implementation.md | 113 ++ .../rules/state-lift-state.md | 125 ++ .../skills/debugging-toolkit/SKILL.md | 35 + .../skills/polis-protocol/SKILL.md | 93 ++ .../skills/python-development/SKILL.md | 35 + .../skills/radix-ui-design-system/SKILL.md | 4 +- .../skills/react-native-skills/SKILL.md | 120 ++ .../react-native-skills/rules/_sections.md | 86 ++ .../react-native-skills/rules/_template.md | 28 + .../rules/animation-derived-value.md | 53 + .../rules/animation-gesture-detector-press.md | 95 ++ .../rules/animation-gpu-properties.md | 65 + .../design-system-compound-components.md | 66 + .../rules/fonts-config-plugin.md | 71 + .../rules/imports-design-system-folder.md | 68 + .../rules/js-hoist-intl.md | 61 + .../rules/list-performance-callbacks.md | 44 + .../list-performance-function-references.md | 132 ++ .../rules/list-performance-images.md | 53 + .../rules/list-performance-inline-objects.md | 97 ++ .../rules/list-performance-item-expensive.md | 94 ++ .../rules/list-performance-item-memo.md | 82 ++ .../rules/list-performance-item-types.md | 104 ++ .../rules/list-performance-virtualize.md | 67 + .../rules/monorepo-native-deps-in-app.md | 46 + .../monorepo-single-dependency-versions.md | 63 + .../rules/navigation-native-navigators.md | 188 +++ .../react-compiler-destructure-functions.md | 50 + ...react-compiler-reanimated-shared-values.md | 48 + .../rules/react-state-dispatcher.md | 91 ++ .../rules/react-state-fallback.md | 56 + .../rules/react-state-minimize.md | 65 + .../rules/rendering-no-falsy-and.md | 74 + .../rules/rendering-text-in-text-component.md | 36 + .../rules/scroll-position-no-state.md | 82 ++ .../rules/state-ground-truth.md | 80 + .../rules/ui-expo-image.md | 66 + .../rules/ui-image-gallery.md | 104 ++ .../rules/ui-measure-views.md | 78 + .../react-native-skills/rules/ui-menus.md | 174 +++ .../rules/ui-native-modals.md | 77 + .../react-native-skills/rules/ui-pressable.md | 61 + .../rules/ui-safe-area-scroll.md | 65 + .../rules/ui-scrollview-content-inset.md | 45 + .../react-native-skills/rules/ui-styling.md | 87 ++ .../skills/tdd-workflows/SKILL.md | 35 + .../skills/vercel-cli-with-tokens/SKILL.md | 361 +++++ .../skills/vercel-optimize/CONTRIBUTING.md | 41 + .../skills/vercel-optimize/SKILL.md | 331 +++++ .../skills/vercel-optimize/lib/auth-route.mjs | 23 + .../vercel-optimize/lib/budget-summary.mjs | 182 +++ .../skills/vercel-optimize/lib/citations.mjs | 139 ++ .../vercel-optimize/lib/cost-coverage.mjs | 145 ++ .../skills/vercel-optimize/lib/dedup-recs.mjs | 325 +++++ .../skills/vercel-optimize/lib/deep-dive.mjs | 350 +++++ .../vercel-optimize/lib/display-labels.mjs | 185 +++ .../vercel-optimize/lib/extract-claims.mjs | 550 +++++++ .../vercel-optimize/lib/framework-support.mjs | 67 + .../lib/gates/build-minutes-fanout.mjs | 69 + .../vercel-optimize/lib/gates/cold-start.mjs | 66 + .../vercel-optimize/lib/gates/contract.mjs | 79 + .../vercel-optimize/lib/gates/cwv-poor.mjs | 87 ++ .../lib/gates/external-api-slow.mjs | 55 + .../vercel-optimize/lib/gates/hard-gates.mjs | 73 + .../vercel-optimize/lib/gates/index.mjs | 45 + .../lib/gates/isr-overrevalidation.mjs | 62 + .../lib/gates/middleware-heavy.mjs | 51 + .../observability-events-attribution.mjs | 56 + .../lib/gates/platform-bot-protection.mjs | 115 ++ .../lib/gates/platform-fluid-compute.mjs | 83 ++ .../lib/gates/region-misconfig.mjs | 64 + .../lib/gates/route-errors.mjs | 80 + .../lib/gates/scanner-driven.mjs | 122 ++ .../lib/gates/select-candidates.mjs | 134 ++ .../vercel-optimize/lib/gates/slow-route.mjs | 88 ++ .../vercel-optimize/lib/gates/types.d.ts | 38 + .../lib/gates/uncached-route.mjs | 93 ++ .../lib/gates/usage-spike-triage.mjs | 121 ++ .../lib/grade-recommendation.mjs | 155 ++ .../vercel-optimize/lib/impact-label.mjs | 126 ++ .../vercel-optimize/lib/impact-magnitude.mjs | 60 + .../lib/investigation-brief.mjs | 610 ++++++++ .../lib/observation-safety.mjs | 174 +++ .../vercel-optimize/lib/project-facts.mjs | 99 ++ .../skills/vercel-optimize/lib/queries.mjs | 315 ++++ .../lib/reconcile-candidates.mjs | 372 +++++ .../vercel-optimize/lib/render-report.mjs | 955 ++++++++++++ .../skills/vercel-optimize/lib/repo-root.mjs | 86 ++ .../vercel-optimize/lib/route-normalize.mjs | 220 +++ .../sanitizers/bot-protection-certainty.mjs | 38 + .../cache-tag-invalidation-certainty.mjs | 30 + .../lib/sanitizers/count-correct.mjs | 52 + .../function-duration-invocations.mjs | 38 + .../vercel-optimize/lib/sanitizers/index.mjs | 79 + .../lib/sanitizers/middleware-conflict.mjs | 36 + .../lib/sanitizers/missing-citation.mjs | 16 + .../lib/sanitizers/pre-release.mjs | 74 + .../lib/sanitizers/rate-limit.mjs | 67 + .../sanitizers/rendering-mode-mislabel.mjs | 38 + .../lib/sanitizers/undeclared-dep.mjs | 78 + .../lib/sanitizers/vercel-directive-strip.mjs | 37 + .../lib/sanitizers/window-units.mjs | 32 + .../cache-components-suspense-dedupe.mjs | 109 ++ .../lib/scanners/edge-heavy-import.mjs | 94 ++ .../lib/scanners/force-dynamic.mjs | 42 + .../lib/scanners/headers-in-page.mjs | 44 + .../vercel-optimize/lib/scanners/index.mjs | 35 + .../lib/scanners/large-static-asset.mjs | 92 ++ .../lib/scanners/max-age-without-s-maxage.mjs | 42 + .../lib/scanners/middleware-broad-matcher.mjs | 55 + .../lib/scanners/missing-cache-headers.mjs | 90 ++ .../lib/scanners/prisma-include-tree.mjs | 42 + .../lib/scanners/region-pin-in-config.mjs | 88 ++ .../lib/scanners/source-maps-production.mjs | 36 + .../scanners/sveltekit-prerender-missing.mjs | 43 + .../lib/scanners/turbo-force-bypass.mjs | 129 ++ .../lib/scanners/unoptimized-image.mjs | 113 ++ .../lib/scanners/use-cache-date-stamp.mjs | 106 ++ .../vercel-optimize/lib/support-topics.mjs | 355 +++++ .../skills/vercel-optimize/lib/throttle.mjs | 273 ++++ .../skills/vercel-optimize/lib/util.mjs | 24 + .../skills/vercel-optimize/lib/vercel.mjs | 784 ++++++++++ .../vercel-optimize/lib/verify-claim.mjs | 1291 +++++++++++++++++ .../lib/workspace-resolver.mjs | 522 +++++++ .../vercel-optimize/references/candidates.md | 176 +++ .../references/data-collection.md | 218 +++ .../references/docs-library.json | 683 +++++++++ .../vercel-optimize/references/doctrine.md | 105 ++ .../references/observability-plus.md | 108 ++ .../references/playbooks/README.md | 53 + .../references/playbooks/ai-application.md | 32 + .../references/playbooks/api-service.md | 30 + .../references/playbooks/content-site.md | 30 + .../references/playbooks/ecommerce.md | 30 + .../references/playbooks/marketing.md | 30 + .../references/playbooks/saas.md | 31 + .../references/playbooks/sveltekit.md | 75 + .../references/recommendations.md | 203 +++ .../references/scanner-patterns.md | 251 ++++ .../vercel-optimize/references/scoring.md | 205 +++ .../references/support-topics/README.md | 46 + .../astro-edge-middleware-scope.md | 22 + .../astro-output-mode-and-isr.md | 22 + .../auth-preserving-parallelization.md | 22 + .../bot-protection-product-guardrails.md | 22 + .../build-minutes-monorepo-fanout.md | 23 + ...ache-components-static-shell-boundaries.md | 22 + ...ache-components-suspense-dedupe-pitfall.md | 23 + .../support-topics/cdn-cache-auth-safety.md | 22 + .../cold-start-initialization-bundle.md | 22 + .../core-web-vitals-client-bottlenecks.md | 22 + .../database-egress-pooling-region.md | 22 + .../support-topics/dynamic-rendering-traps.md | 22 + .../external-api-critical-path-platform.md | 22 + .../external-api-critical-path.md | 22 + .../fast-data-transfer-payloads.md | 22 + .../support-topics/fluid-compute-caveats.md | 22 + .../function-duration-io-and-after.md | 22 + .../function-invocation-reduction.md | 22 + .../function-region-misconfiguration-ttfb.md | 23 + .../image-optimization-cost-control.md | 22 + .../isr-revalidation-static-generation.md | 22 + .../middleware-proxy-edge-cost.md | 22 + .../next-fetch-revalidate-floor.md | 22 + .../next-font-cls-self-hosting.md | 23 + .../next-heavy-ui-lazy-load-boundaries.md | 23 + .../next-image-lcp-preload-sizes.md | 23 + .../next-route-handler-get-cache-defaults.md | 22 + .../next-script-third-party-strategy.md | 23 + .../nextjs-version-cache-semantics.md | 22 + .../not-found-catchall-request-waste.md | 23 + .../nuxt-route-rules-cache-isr.md | 22 + .../observability-events-cost-attribution.md | 22 + .../post-response-work-waituntil.md | 22 + .../route-error-durable-offload.md | 22 + .../route-error-runtime-limits.md | 22 + .../runtime-cache-reusable-data.md | 22 + .../sveltekit-isr-prerender-safety.md | 22 + .../sveltekit-split-cold-start-tradeoff.md | 22 + .../support-topics/usage-spike-triage.md | 22 + ...se-cache-date-stamp-isr-write-amplifier.md | 23 + .../use-cache-remote-shared-origin-data.md | 22 + .../workflow-resumable-stream-routes.md | 23 + .../references/verification.md | 102 ++ .../vercel-optimize/references/voice.md | 76 + .../scripts/budget-summary.mjs | 56 + .../vercel-optimize/scripts/build-docs.mjs | 74 + .../scripts/check-citations.mjs | 81 ++ .../scripts/check-docs-fresh.mjs | 93 ++ .../scripts/collect-signals.mjs | 576 ++++++++ .../scripts/collect-sub-agent-outputs.mjs | 296 ++++ .../vercel-optimize/scripts/deep-dive.mjs | 319 ++++ .../scripts/gate-investigations.mjs | 166 +++ .../vercel-optimize/scripts/merge-signals.mjs | 192 +++ .../scripts/prepare-investigation-brief.mjs | 231 +++ .../scripts/reconcile-candidates.mjs | 62 + .../vercel-optimize/scripts/render-report.mjs | 437 ++++++ .../vercel-optimize/scripts/scan-codebase.mjs | 313 ++++ .../scripts/verify-and-regen.mjs | 346 +++++ .../scripts/verify-finding.mjs | 19 + .../vercel-react-view-transitions/SKILL.md | 327 +++++ .../references/css-recipes.md | 242 +++ .../references/implementation.md | 182 +++ .../references/nextjs.md | 176 +++ .../references/patterns.md | 262 ++++ .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- .../skills/accesslint-audit/SKILL.md | 115 ++ .../skills/accesslint-diff/SKILL.md | 81 ++ .../skills/accesslint-scan/SKILL.md | 47 + .../skills/composition-patterns/SKILL.md | 87 ++ .../composition-patterns/rules/_sections.md | 29 + .../composition-patterns/rules/_template.md | 24 + .../rules/architecture-avoid-boolean-props.md | 100 ++ .../rules/architecture-compound-components.md | 112 ++ .../patterns-children-over-render-props.md | 87 ++ .../rules/patterns-explicit-variants.md | 100 ++ .../rules/react19-no-forwardref.md | 42 + .../rules/state-context-interface.md | 191 +++ .../rules/state-decouple-implementation.md | 113 ++ .../rules/state-lift-state.md | 125 ++ .../skills/debugging-toolkit/SKILL.md | 35 + .../skills/deploy-to-vercel/SKILL.md | 304 ++++ .../resources/deploy-codex.sh | 301 ++++ .../deploy-to-vercel/resources/deploy.sh | 301 ++++ .../skills/polis-protocol/SKILL.md | 93 ++ .../skills/python-development/SKILL.md | 35 + .../skills/radix-ui-design-system/SKILL.md | 4 +- .../skills/react-native-skills/SKILL.md | 120 ++ .../react-native-skills/rules/_sections.md | 86 ++ .../react-native-skills/rules/_template.md | 28 + .../rules/animation-derived-value.md | 53 + .../rules/animation-gesture-detector-press.md | 95 ++ .../rules/animation-gpu-properties.md | 65 + .../design-system-compound-components.md | 66 + .../rules/fonts-config-plugin.md | 71 + .../rules/imports-design-system-folder.md | 68 + .../rules/js-hoist-intl.md | 61 + .../rules/list-performance-callbacks.md | 44 + .../list-performance-function-references.md | 132 ++ .../rules/list-performance-images.md | 53 + .../rules/list-performance-inline-objects.md | 97 ++ .../rules/list-performance-item-expensive.md | 94 ++ .../rules/list-performance-item-memo.md | 82 ++ .../rules/list-performance-item-types.md | 104 ++ .../rules/list-performance-virtualize.md | 67 + .../rules/monorepo-native-deps-in-app.md | 46 + .../monorepo-single-dependency-versions.md | 63 + .../rules/navigation-native-navigators.md | 188 +++ .../react-compiler-destructure-functions.md | 50 + ...react-compiler-reanimated-shared-values.md | 48 + .../rules/react-state-dispatcher.md | 91 ++ .../rules/react-state-fallback.md | 56 + .../rules/react-state-minimize.md | 65 + .../rules/rendering-no-falsy-and.md | 74 + .../rules/rendering-text-in-text-component.md | 36 + .../rules/scroll-position-no-state.md | 82 ++ .../rules/state-ground-truth.md | 80 + .../rules/ui-expo-image.md | 66 + .../rules/ui-image-gallery.md | 104 ++ .../rules/ui-measure-views.md | 78 + .../react-native-skills/rules/ui-menus.md | 174 +++ .../rules/ui-native-modals.md | 77 + .../react-native-skills/rules/ui-pressable.md | 61 + .../rules/ui-safe-area-scroll.md | 65 + .../rules/ui-scrollview-content-inset.md | 45 + .../react-native-skills/rules/ui-styling.md | 87 ++ .../skills/skill-issue/SKILL.md | 73 + .../skills/tdd-workflows/SKILL.md | 35 + .../skills/vercel-cli-with-tokens/SKILL.md | 361 +++++ .../skills/vercel-optimize/CONTRIBUTING.md | 41 + .../skills/vercel-optimize/SKILL.md | 331 +++++ .../skills/vercel-optimize/lib/auth-route.mjs | 23 + .../vercel-optimize/lib/budget-summary.mjs | 182 +++ .../skills/vercel-optimize/lib/citations.mjs | 139 ++ .../vercel-optimize/lib/cost-coverage.mjs | 145 ++ .../skills/vercel-optimize/lib/dedup-recs.mjs | 325 +++++ .../skills/vercel-optimize/lib/deep-dive.mjs | 350 +++++ .../vercel-optimize/lib/display-labels.mjs | 185 +++ .../vercel-optimize/lib/extract-claims.mjs | 550 +++++++ .../vercel-optimize/lib/framework-support.mjs | 67 + .../lib/gates/build-minutes-fanout.mjs | 69 + .../vercel-optimize/lib/gates/cold-start.mjs | 66 + .../vercel-optimize/lib/gates/contract.mjs | 79 + .../vercel-optimize/lib/gates/cwv-poor.mjs | 87 ++ .../lib/gates/external-api-slow.mjs | 55 + .../vercel-optimize/lib/gates/hard-gates.mjs | 73 + .../vercel-optimize/lib/gates/index.mjs | 45 + .../lib/gates/isr-overrevalidation.mjs | 62 + .../lib/gates/middleware-heavy.mjs | 51 + .../observability-events-attribution.mjs | 56 + .../lib/gates/platform-bot-protection.mjs | 115 ++ .../lib/gates/platform-fluid-compute.mjs | 83 ++ .../lib/gates/region-misconfig.mjs | 64 + .../lib/gates/route-errors.mjs | 80 + .../lib/gates/scanner-driven.mjs | 122 ++ .../lib/gates/select-candidates.mjs | 134 ++ .../vercel-optimize/lib/gates/slow-route.mjs | 88 ++ .../vercel-optimize/lib/gates/types.d.ts | 38 + .../lib/gates/uncached-route.mjs | 93 ++ .../lib/gates/usage-spike-triage.mjs | 121 ++ .../lib/grade-recommendation.mjs | 155 ++ .../vercel-optimize/lib/impact-label.mjs | 126 ++ .../vercel-optimize/lib/impact-magnitude.mjs | 60 + .../lib/investigation-brief.mjs | 610 ++++++++ .../lib/observation-safety.mjs | 174 +++ .../vercel-optimize/lib/project-facts.mjs | 99 ++ .../skills/vercel-optimize/lib/queries.mjs | 315 ++++ .../lib/reconcile-candidates.mjs | 372 +++++ .../vercel-optimize/lib/render-report.mjs | 955 ++++++++++++ .../skills/vercel-optimize/lib/repo-root.mjs | 86 ++ .../vercel-optimize/lib/route-normalize.mjs | 220 +++ .../sanitizers/bot-protection-certainty.mjs | 38 + .../cache-tag-invalidation-certainty.mjs | 30 + .../lib/sanitizers/count-correct.mjs | 52 + .../function-duration-invocations.mjs | 38 + .../vercel-optimize/lib/sanitizers/index.mjs | 79 + .../lib/sanitizers/middleware-conflict.mjs | 36 + .../lib/sanitizers/missing-citation.mjs | 16 + .../lib/sanitizers/pre-release.mjs | 74 + .../lib/sanitizers/rate-limit.mjs | 67 + .../sanitizers/rendering-mode-mislabel.mjs | 38 + .../lib/sanitizers/undeclared-dep.mjs | 78 + .../lib/sanitizers/vercel-directive-strip.mjs | 37 + .../lib/sanitizers/window-units.mjs | 32 + .../cache-components-suspense-dedupe.mjs | 109 ++ .../lib/scanners/edge-heavy-import.mjs | 94 ++ .../lib/scanners/force-dynamic.mjs | 42 + .../lib/scanners/headers-in-page.mjs | 44 + .../vercel-optimize/lib/scanners/index.mjs | 35 + .../lib/scanners/large-static-asset.mjs | 92 ++ .../lib/scanners/max-age-without-s-maxage.mjs | 42 + .../lib/scanners/middleware-broad-matcher.mjs | 55 + .../lib/scanners/missing-cache-headers.mjs | 90 ++ .../lib/scanners/prisma-include-tree.mjs | 42 + .../lib/scanners/region-pin-in-config.mjs | 88 ++ .../lib/scanners/source-maps-production.mjs | 36 + .../scanners/sveltekit-prerender-missing.mjs | 43 + .../lib/scanners/turbo-force-bypass.mjs | 129 ++ .../lib/scanners/unoptimized-image.mjs | 113 ++ .../lib/scanners/use-cache-date-stamp.mjs | 106 ++ .../vercel-optimize/lib/support-topics.mjs | 355 +++++ .../skills/vercel-optimize/lib/throttle.mjs | 273 ++++ .../skills/vercel-optimize/lib/util.mjs | 24 + .../skills/vercel-optimize/lib/vercel.mjs | 784 ++++++++++ .../vercel-optimize/lib/verify-claim.mjs | 1291 +++++++++++++++++ .../lib/workspace-resolver.mjs | 522 +++++++ .../vercel-optimize/references/candidates.md | 176 +++ .../references/data-collection.md | 218 +++ .../references/docs-library.json | 683 +++++++++ .../vercel-optimize/references/doctrine.md | 105 ++ .../references/observability-plus.md | 108 ++ .../references/playbooks/README.md | 53 + .../references/playbooks/ai-application.md | 32 + .../references/playbooks/api-service.md | 30 + .../references/playbooks/content-site.md | 30 + .../references/playbooks/ecommerce.md | 30 + .../references/playbooks/marketing.md | 30 + .../references/playbooks/saas.md | 31 + .../references/playbooks/sveltekit.md | 75 + .../references/recommendations.md | 203 +++ .../references/scanner-patterns.md | 251 ++++ .../vercel-optimize/references/scoring.md | 205 +++ .../references/support-topics/README.md | 46 + .../astro-edge-middleware-scope.md | 22 + .../astro-output-mode-and-isr.md | 22 + .../auth-preserving-parallelization.md | 22 + .../bot-protection-product-guardrails.md | 22 + .../build-minutes-monorepo-fanout.md | 23 + ...ache-components-static-shell-boundaries.md | 22 + ...ache-components-suspense-dedupe-pitfall.md | 23 + .../support-topics/cdn-cache-auth-safety.md | 22 + .../cold-start-initialization-bundle.md | 22 + .../core-web-vitals-client-bottlenecks.md | 22 + .../database-egress-pooling-region.md | 22 + .../support-topics/dynamic-rendering-traps.md | 22 + .../external-api-critical-path-platform.md | 22 + .../external-api-critical-path.md | 22 + .../fast-data-transfer-payloads.md | 22 + .../support-topics/fluid-compute-caveats.md | 22 + .../function-duration-io-and-after.md | 22 + .../function-invocation-reduction.md | 22 + .../function-region-misconfiguration-ttfb.md | 23 + .../image-optimization-cost-control.md | 22 + .../isr-revalidation-static-generation.md | 22 + .../middleware-proxy-edge-cost.md | 22 + .../next-fetch-revalidate-floor.md | 22 + .../next-font-cls-self-hosting.md | 23 + .../next-heavy-ui-lazy-load-boundaries.md | 23 + .../next-image-lcp-preload-sizes.md | 23 + .../next-route-handler-get-cache-defaults.md | 22 + .../next-script-third-party-strategy.md | 23 + .../nextjs-version-cache-semantics.md | 22 + .../not-found-catchall-request-waste.md | 23 + .../nuxt-route-rules-cache-isr.md | 22 + .../observability-events-cost-attribution.md | 22 + .../post-response-work-waituntil.md | 22 + .../route-error-durable-offload.md | 22 + .../route-error-runtime-limits.md | 22 + .../runtime-cache-reusable-data.md | 22 + .../sveltekit-isr-prerender-safety.md | 22 + .../sveltekit-split-cold-start-tradeoff.md | 22 + .../support-topics/usage-spike-triage.md | 22 + ...se-cache-date-stamp-isr-write-amplifier.md | 23 + .../use-cache-remote-shared-origin-data.md | 22 + .../workflow-resumable-stream-routes.md | 23 + .../references/verification.md | 102 ++ .../vercel-optimize/references/voice.md | 76 + .../scripts/budget-summary.mjs | 56 + .../vercel-optimize/scripts/build-docs.mjs | 74 + .../scripts/check-citations.mjs | 81 ++ .../scripts/check-docs-fresh.mjs | 93 ++ .../scripts/collect-signals.mjs | 576 ++++++++ .../scripts/collect-sub-agent-outputs.mjs | 296 ++++ .../vercel-optimize/scripts/deep-dive.mjs | 319 ++++ .../scripts/gate-investigations.mjs | 166 +++ .../vercel-optimize/scripts/merge-signals.mjs | 192 +++ .../scripts/prepare-investigation-brief.mjs | 231 +++ .../scripts/reconcile-candidates.mjs | 62 + .../vercel-optimize/scripts/render-report.mjs | 437 ++++++ .../vercel-optimize/scripts/scan-codebase.mjs | 313 ++++ .../scripts/verify-and-regen.mjs | 346 +++++ .../scripts/verify-finding.mjs | 19 + .../vercel-react-view-transitions/SKILL.md | 327 +++++ .../references/css-recipes.md | 242 +++ .../references/implementation.md | 182 +++ .../references/nextjs.md | 176 +++ .../references/patterns.md | 262 ++++ antigravity-awesome-skills/skills_index.json | 312 ++++ .../tools/scripts/check-live-seo-geo.js | 2 +- 803 files changed, 78437 insertions(+), 401 deletions(-) create mode 100644 antigravity-awesome-skills/apps/web-app/public/google5815fd8827d2319c.html create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/accesslint-audit/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/accesslint-diff/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/accesslint-scan/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/_sections.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/_template.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/architecture-avoid-boolean-props.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/architecture-compound-components.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/patterns-children-over-render-props.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/patterns-explicit-variants.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/react19-no-forwardref.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-context-interface.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-decouple-implementation.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-lift-state.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/debugging-toolkit/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/SKILL.md create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/resources/deploy-codex.sh create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/resources/deploy.sh create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/polis-protocol/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/python-development/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/_sections.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/_template.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-derived-value.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-gesture-detector-press.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-gpu-properties.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/design-system-compound-components.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/fonts-config-plugin.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/imports-design-system-folder.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/js-hoist-intl.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-callbacks.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-function-references.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-images.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-inline-objects.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-expensive.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-memo.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-types.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-virtualize.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/monorepo-native-deps-in-app.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/monorepo-single-dependency-versions.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/navigation-native-navigators.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-compiler-destructure-functions.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-state-dispatcher.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-state-fallback.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-state-minimize.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/rendering-no-falsy-and.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/rendering-text-in-text-component.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/scroll-position-no-state.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/state-ground-truth.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-expo-image.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-image-gallery.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-measure-views.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-menus.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-native-modals.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-pressable.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-safe-area-scroll.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-scrollview-content-inset.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/ui-styling.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/tdd-workflows/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-cli-with-tokens/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/CONTRIBUTING.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/auth-route.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/budget-summary.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/citations.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/cost-coverage.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/dedup-recs.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/deep-dive.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/display-labels.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/extract-claims.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/framework-support.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/build-minutes-fanout.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/cold-start.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/contract.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/cwv-poor.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/external-api-slow.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/hard-gates.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/index.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/isr-overrevalidation.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/middleware-heavy.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/observability-events-attribution.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/platform-bot-protection.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/platform-fluid-compute.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/region-misconfig.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/route-errors.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/scanner-driven.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/select-candidates.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/slow-route.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/types.d.ts create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/uncached-route.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/gates/usage-spike-triage.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/grade-recommendation.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/impact-label.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/impact-magnitude.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/investigation-brief.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/observation-safety.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/project-facts.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/queries.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/reconcile-candidates.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/render-report.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/repo-root.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/route-normalize.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/bot-protection-certainty.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/cache-tag-invalidation-certainty.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/count-correct.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/function-duration-invocations.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/index.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/middleware-conflict.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/missing-citation.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/pre-release.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/rate-limit.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/rendering-mode-mislabel.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/undeclared-dep.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/vercel-directive-strip.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/sanitizers/window-units.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/cache-components-suspense-dedupe.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/edge-heavy-import.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/force-dynamic.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/headers-in-page.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/index.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/large-static-asset.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/max-age-without-s-maxage.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/middleware-broad-matcher.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/missing-cache-headers.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/prisma-include-tree.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/region-pin-in-config.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/source-maps-production.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/sveltekit-prerender-missing.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/turbo-force-bypass.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/unoptimized-image.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/scanners/use-cache-date-stamp.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/support-topics.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/throttle.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/util.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/vercel.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/verify-claim.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/lib/workspace-resolver.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/candidates.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/data-collection.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/docs-library.json create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/doctrine.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/observability-plus.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/playbooks/README.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/playbooks/ai-application.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/playbooks/api-service.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/playbooks/content-site.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/playbooks/ecommerce.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/playbooks/marketing.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/playbooks/saas.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/playbooks/sveltekit.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/recommendations.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/scanner-patterns.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/scoring.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/README.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/astro-edge-middleware-scope.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/astro-output-mode-and-isr.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/auth-preserving-parallelization.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/bot-protection-product-guardrails.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/build-minutes-monorepo-fanout.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/cache-components-static-shell-boundaries.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/cache-components-suspense-dedupe-pitfall.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/cdn-cache-auth-safety.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/cold-start-initialization-bundle.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/core-web-vitals-client-bottlenecks.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/database-egress-pooling-region.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/dynamic-rendering-traps.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/external-api-critical-path-platform.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/external-api-critical-path.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/fast-data-transfer-payloads.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/fluid-compute-caveats.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/function-duration-io-and-after.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/function-invocation-reduction.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/function-region-misconfiguration-ttfb.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/image-optimization-cost-control.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/isr-revalidation-static-generation.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/middleware-proxy-edge-cost.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/next-fetch-revalidate-floor.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/next-font-cls-self-hosting.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/next-heavy-ui-lazy-load-boundaries.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/next-image-lcp-preload-sizes.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/next-route-handler-get-cache-defaults.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/next-script-third-party-strategy.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/nextjs-version-cache-semantics.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/not-found-catchall-request-waste.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/nuxt-route-rules-cache-isr.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/observability-events-cost-attribution.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/post-response-work-waituntil.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/route-error-durable-offload.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/route-error-runtime-limits.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/runtime-cache-reusable-data.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/sveltekit-isr-prerender-safety.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/sveltekit-split-cold-start-tradeoff.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/usage-spike-triage.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/use-cache-date-stamp-isr-write-amplifier.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/use-cache-remote-shared-origin-data.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/support-topics/workflow-resumable-stream-routes.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/verification.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/references/voice.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/budget-summary.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/build-docs.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/check-citations.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/check-docs-fresh.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/collect-signals.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/collect-sub-agent-outputs.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/deep-dive.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/gate-investigations.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/merge-signals.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/prepare-investigation-brief.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/reconcile-candidates.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/render-report.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/scan-codebase.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/verify-and-regen.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-optimize/scripts/verify-finding.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-react-view-transitions/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-react-view-transitions/references/css-recipes.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-react-view-transitions/references/implementation.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-react-view-transitions/references/nextjs.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vercel-react-view-transitions/references/patterns.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/accesslint-audit/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/accesslint-diff/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/accesslint-scan/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/_sections.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/_template.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/architecture-avoid-boolean-props.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/architecture-compound-components.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/patterns-children-over-render-props.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/patterns-explicit-variants.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/react19-no-forwardref.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/state-context-interface.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/state-decouple-implementation.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/composition-patterns/rules/state-lift-state.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/debugging-toolkit/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/polis-protocol/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/python-development/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/_sections.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/_template.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/animation-derived-value.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/animation-gesture-detector-press.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/animation-gpu-properties.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/design-system-compound-components.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/fonts-config-plugin.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/imports-design-system-folder.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/js-hoist-intl.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-callbacks.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-function-references.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-images.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-inline-objects.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-item-expensive.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-item-memo.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-item-types.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-virtualize.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/monorepo-native-deps-in-app.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/monorepo-single-dependency-versions.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/navigation-native-navigators.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/react-compiler-destructure-functions.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/react-state-dispatcher.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/react-state-fallback.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/react-state-minimize.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/rendering-no-falsy-and.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/rendering-text-in-text-component.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/scroll-position-no-state.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/state-ground-truth.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-expo-image.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-image-gallery.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-measure-views.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-menus.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-native-modals.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-pressable.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-safe-area-scroll.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-scrollview-content-inset.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/react-native-skills/rules/ui-styling.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/tdd-workflows/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-cli-with-tokens/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/CONTRIBUTING.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/auth-route.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/budget-summary.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/citations.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/cost-coverage.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/dedup-recs.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/deep-dive.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/display-labels.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/extract-claims.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/framework-support.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/build-minutes-fanout.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/cold-start.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/contract.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/cwv-poor.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/external-api-slow.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/hard-gates.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/index.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/isr-overrevalidation.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/middleware-heavy.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/observability-events-attribution.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/platform-bot-protection.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/platform-fluid-compute.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/region-misconfig.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/route-errors.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/scanner-driven.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/select-candidates.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/slow-route.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/types.d.ts create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/uncached-route.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/gates/usage-spike-triage.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/grade-recommendation.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/impact-label.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/impact-magnitude.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/investigation-brief.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/observation-safety.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/project-facts.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/queries.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/reconcile-candidates.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/render-report.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/repo-root.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/route-normalize.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/bot-protection-certainty.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/cache-tag-invalidation-certainty.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/count-correct.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/function-duration-invocations.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/index.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/middleware-conflict.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/missing-citation.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/pre-release.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/rate-limit.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/rendering-mode-mislabel.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/undeclared-dep.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/vercel-directive-strip.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/window-units.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/cache-components-suspense-dedupe.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/edge-heavy-import.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/force-dynamic.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/headers-in-page.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/index.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/large-static-asset.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/max-age-without-s-maxage.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/middleware-broad-matcher.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/missing-cache-headers.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/prisma-include-tree.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/region-pin-in-config.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/source-maps-production.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/sveltekit-prerender-missing.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/turbo-force-bypass.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/unoptimized-image.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/use-cache-date-stamp.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/support-topics.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/throttle.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/util.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/vercel.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/verify-claim.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/lib/workspace-resolver.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/candidates.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/data-collection.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/docs-library.json create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/doctrine.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/observability-plus.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/README.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/ai-application.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/api-service.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/content-site.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/ecommerce.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/marketing.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/saas.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/sveltekit.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/recommendations.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/scanner-patterns.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/scoring.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/README.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/astro-edge-middleware-scope.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/astro-output-mode-and-isr.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/auth-preserving-parallelization.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/bot-protection-product-guardrails.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/build-minutes-monorepo-fanout.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/cache-components-static-shell-boundaries.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/cache-components-suspense-dedupe-pitfall.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/cdn-cache-auth-safety.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/cold-start-initialization-bundle.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/core-web-vitals-client-bottlenecks.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/database-egress-pooling-region.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/dynamic-rendering-traps.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/external-api-critical-path-platform.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/external-api-critical-path.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/fast-data-transfer-payloads.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/fluid-compute-caveats.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/function-duration-io-and-after.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/function-invocation-reduction.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/function-region-misconfiguration-ttfb.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/image-optimization-cost-control.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/isr-revalidation-static-generation.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/middleware-proxy-edge-cost.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-fetch-revalidate-floor.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-font-cls-self-hosting.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-heavy-ui-lazy-load-boundaries.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-image-lcp-preload-sizes.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-route-handler-get-cache-defaults.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-script-third-party-strategy.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/nextjs-version-cache-semantics.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/not-found-catchall-request-waste.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/nuxt-route-rules-cache-isr.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/observability-events-cost-attribution.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/post-response-work-waituntil.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/route-error-durable-offload.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/route-error-runtime-limits.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/runtime-cache-reusable-data.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/sveltekit-isr-prerender-safety.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/sveltekit-split-cold-start-tradeoff.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/usage-spike-triage.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/use-cache-date-stamp-isr-write-amplifier.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/use-cache-remote-shared-origin-data.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/workflow-resumable-stream-routes.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/verification.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/references/voice.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/budget-summary.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/build-docs.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/check-citations.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/check-docs-fresh.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/collect-signals.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/collect-sub-agent-outputs.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/deep-dive.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/gate-investigations.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/merge-signals.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/prepare-investigation-brief.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/reconcile-candidates.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/render-report.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/scan-codebase.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/verify-and-regen.mjs create mode 100755 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-optimize/scripts/verify-finding.mjs create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-react-view-transitions/SKILL.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-react-view-transitions/references/css-recipes.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-react-view-transitions/references/implementation.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-react-view-transitions/references/nextjs.md create mode 100644 antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vercel-react-view-transitions/references/patterns.md create mode 100644 antigravity-awesome-skills/skills/accesslint-audit/SKILL.md create mode 100644 antigravity-awesome-skills/skills/accesslint-diff/SKILL.md create mode 100644 antigravity-awesome-skills/skills/accesslint-scan/SKILL.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/SKILL.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/_sections.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/_template.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/architecture-avoid-boolean-props.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/architecture-compound-components.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/patterns-children-over-render-props.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/patterns-explicit-variants.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/react19-no-forwardref.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/state-context-interface.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/state-decouple-implementation.md create mode 100644 antigravity-awesome-skills/skills/composition-patterns/rules/state-lift-state.md create mode 100644 antigravity-awesome-skills/skills/debugging-toolkit/SKILL.md create mode 100644 antigravity-awesome-skills/skills/deploy-to-vercel/SKILL.md create mode 100755 antigravity-awesome-skills/skills/deploy-to-vercel/resources/deploy-codex.sh create mode 100755 antigravity-awesome-skills/skills/deploy-to-vercel/resources/deploy.sh create mode 100644 antigravity-awesome-skills/skills/polis-protocol/SKILL.md create mode 100644 antigravity-awesome-skills/skills/python-development/SKILL.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/SKILL.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/_sections.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/_template.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/animation-derived-value.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/animation-gesture-detector-press.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/animation-gpu-properties.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/design-system-compound-components.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/fonts-config-plugin.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/imports-design-system-folder.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/js-hoist-intl.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-callbacks.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-function-references.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-images.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-inline-objects.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-item-expensive.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-item-memo.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-item-types.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/list-performance-virtualize.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/monorepo-native-deps-in-app.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/monorepo-single-dependency-versions.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/navigation-native-navigators.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/react-compiler-destructure-functions.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/react-state-dispatcher.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/react-state-fallback.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/react-state-minimize.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/rendering-no-falsy-and.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/rendering-text-in-text-component.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/scroll-position-no-state.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/state-ground-truth.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-expo-image.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-image-gallery.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-measure-views.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-menus.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-native-modals.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-pressable.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-safe-area-scroll.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-scrollview-content-inset.md create mode 100644 antigravity-awesome-skills/skills/react-native-skills/rules/ui-styling.md create mode 100644 antigravity-awesome-skills/skills/skill-issue/SKILL.md create mode 100644 antigravity-awesome-skills/skills/tdd-workflows/SKILL.md create mode 100644 antigravity-awesome-skills/skills/vercel-cli-with-tokens/SKILL.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/CONTRIBUTING.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/SKILL.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/auth-route.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/budget-summary.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/citations.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/cost-coverage.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/dedup-recs.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/deep-dive.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/display-labels.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/extract-claims.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/framework-support.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/build-minutes-fanout.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/cold-start.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/contract.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/cwv-poor.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/external-api-slow.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/hard-gates.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/index.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/isr-overrevalidation.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/middleware-heavy.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/observability-events-attribution.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/platform-bot-protection.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/platform-fluid-compute.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/region-misconfig.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/route-errors.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/scanner-driven.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/select-candidates.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/slow-route.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/types.d.ts create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/uncached-route.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/gates/usage-spike-triage.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/grade-recommendation.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/impact-label.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/impact-magnitude.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/investigation-brief.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/observation-safety.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/project-facts.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/queries.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/reconcile-candidates.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/render-report.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/repo-root.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/route-normalize.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/bot-protection-certainty.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/cache-tag-invalidation-certainty.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/count-correct.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/function-duration-invocations.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/index.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/middleware-conflict.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/missing-citation.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/pre-release.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/rate-limit.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/rendering-mode-mislabel.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/undeclared-dep.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/vercel-directive-strip.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/sanitizers/window-units.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/cache-components-suspense-dedupe.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/edge-heavy-import.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/force-dynamic.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/headers-in-page.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/index.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/large-static-asset.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/max-age-without-s-maxage.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/middleware-broad-matcher.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/missing-cache-headers.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/prisma-include-tree.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/region-pin-in-config.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/source-maps-production.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/sveltekit-prerender-missing.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/turbo-force-bypass.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/unoptimized-image.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/scanners/use-cache-date-stamp.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/support-topics.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/throttle.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/util.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/vercel.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/verify-claim.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/lib/workspace-resolver.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/candidates.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/data-collection.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/docs-library.json create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/doctrine.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/observability-plus.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/README.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/ai-application.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/api-service.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/content-site.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/ecommerce.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/marketing.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/saas.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/playbooks/sveltekit.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/recommendations.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/scanner-patterns.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/scoring.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/README.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/astro-edge-middleware-scope.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/astro-output-mode-and-isr.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/auth-preserving-parallelization.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/bot-protection-product-guardrails.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/build-minutes-monorepo-fanout.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/cache-components-static-shell-boundaries.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/cache-components-suspense-dedupe-pitfall.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/cdn-cache-auth-safety.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/cold-start-initialization-bundle.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/core-web-vitals-client-bottlenecks.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/database-egress-pooling-region.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/dynamic-rendering-traps.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/external-api-critical-path-platform.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/external-api-critical-path.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/fast-data-transfer-payloads.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/fluid-compute-caveats.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/function-duration-io-and-after.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/function-invocation-reduction.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/function-region-misconfiguration-ttfb.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/image-optimization-cost-control.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/isr-revalidation-static-generation.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/middleware-proxy-edge-cost.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-fetch-revalidate-floor.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-font-cls-self-hosting.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-heavy-ui-lazy-load-boundaries.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-image-lcp-preload-sizes.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-route-handler-get-cache-defaults.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/next-script-third-party-strategy.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/nextjs-version-cache-semantics.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/not-found-catchall-request-waste.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/nuxt-route-rules-cache-isr.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/observability-events-cost-attribution.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/post-response-work-waituntil.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/route-error-durable-offload.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/route-error-runtime-limits.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/runtime-cache-reusable-data.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/sveltekit-isr-prerender-safety.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/sveltekit-split-cold-start-tradeoff.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/usage-spike-triage.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/use-cache-date-stamp-isr-write-amplifier.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/use-cache-remote-shared-origin-data.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/support-topics/workflow-resumable-stream-routes.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/verification.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/references/voice.md create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/scripts/budget-summary.mjs create mode 100755 antigravity-awesome-skills/skills/vercel-optimize/scripts/build-docs.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/scripts/check-citations.mjs create mode 100755 antigravity-awesome-skills/skills/vercel-optimize/scripts/check-docs-fresh.mjs create mode 100755 antigravity-awesome-skills/skills/vercel-optimize/scripts/collect-signals.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/scripts/collect-sub-agent-outputs.mjs create mode 100755 antigravity-awesome-skills/skills/vercel-optimize/scripts/deep-dive.mjs create mode 100755 antigravity-awesome-skills/skills/vercel-optimize/scripts/gate-investigations.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/scripts/merge-signals.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/scripts/prepare-investigation-brief.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/scripts/reconcile-candidates.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/scripts/render-report.mjs create mode 100755 antigravity-awesome-skills/skills/vercel-optimize/scripts/scan-codebase.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-optimize/scripts/verify-and-regen.mjs create mode 100755 antigravity-awesome-skills/skills/vercel-optimize/scripts/verify-finding.mjs create mode 100644 antigravity-awesome-skills/skills/vercel-react-view-transitions/SKILL.md create mode 100644 antigravity-awesome-skills/skills/vercel-react-view-transitions/references/css-recipes.md create mode 100644 antigravity-awesome-skills/skills/vercel-react-view-transitions/references/implementation.md create mode 100644 antigravity-awesome-skills/skills/vercel-react-view-transitions/references/nextjs.md create mode 100644 antigravity-awesome-skills/skills/vercel-react-view-transitions/references/patterns.md diff --git a/antigravity-awesome-skills/.claude-plugin/marketplace.json b/antigravity-awesome-skills/.claude-plugin/marketplace.json index c495daf4..216d60a1 100644 --- a/antigravity-awesome-skills/.claude-plugin/marketplace.json +++ b/antigravity-awesome-skills/.claude-plugin/marketplace.json @@ -6,12 +6,12 @@ }, "metadata": { "description": "Claude Code marketplace entries for the plugin-safe Antigravity Awesome Skills library and its compatible editorial bundles.", - "version": "11.11.0" + "version": "12.0.0" }, "plugins": [ { "name": "antigravity-awesome-skills", - "version": "11.11.0", + "version": "12.0.0", "description": "Expose the plugin-safe Claude Code subset of Antigravity Awesome Skills through a single marketplace entry.", "author": { "name": "sickn33 and contributors", @@ -31,7 +31,7 @@ }, { "name": "antigravity-bundle-essentials", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Essentials\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -51,7 +51,7 @@ }, { "name": "antigravity-bundle-security-engineer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Security Engineer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -71,7 +71,7 @@ }, { "name": "antigravity-bundle-security-developer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Security Developer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -91,7 +91,7 @@ }, { "name": "antigravity-bundle-web-wizard", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Web Wizard\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -111,7 +111,7 @@ }, { "name": "antigravity-bundle-web-designer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Web Designer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -131,7 +131,7 @@ }, { "name": "antigravity-bundle-full-stack-developer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Full-Stack Developer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -151,7 +151,7 @@ }, { "name": "antigravity-bundle-agent-architect", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Agent Architect\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -171,7 +171,7 @@ }, { "name": "antigravity-bundle-llm-application-developer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"LLM Application Developer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -191,7 +191,7 @@ }, { "name": "antigravity-bundle-indie-game-dev", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Indie Game Dev\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -211,7 +211,7 @@ }, { "name": "antigravity-bundle-python-pro", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Python Pro\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -231,7 +231,7 @@ }, { "name": "antigravity-bundle-typescript-javascript", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"TypeScript & JavaScript\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -251,7 +251,7 @@ }, { "name": "antigravity-bundle-systems-programming", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Systems Programming\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -271,7 +271,7 @@ }, { "name": "antigravity-bundle-startup-founder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Startup Founder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -291,7 +291,7 @@ }, { "name": "antigravity-bundle-business-analyst", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Business Analyst\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -311,7 +311,7 @@ }, { "name": "antigravity-bundle-marketing-growth", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Marketing & Growth\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -331,7 +331,7 @@ }, { "name": "antigravity-bundle-devops-cloud", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"DevOps & Cloud\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -351,7 +351,7 @@ }, { "name": "antigravity-bundle-observability-monitoring", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Observability & Monitoring\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -371,7 +371,7 @@ }, { "name": "antigravity-bundle-data-analytics", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Data & Analytics\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -391,7 +391,7 @@ }, { "name": "antigravity-bundle-data-engineering", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Data Engineering\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -411,7 +411,7 @@ }, { "name": "antigravity-bundle-creative-director", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Creative Director\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -431,7 +431,7 @@ }, { "name": "antigravity-bundle-qa-testing", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"QA & Testing\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -451,7 +451,7 @@ }, { "name": "antigravity-bundle-aas-web-app-builder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Web App Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -471,7 +471,7 @@ }, { "name": "antigravity-bundle-aas-product-design-studio", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Product Design Studio\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -491,7 +491,7 @@ }, { "name": "antigravity-bundle-aas-security-engineer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Security Engineer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -511,7 +511,7 @@ }, { "name": "antigravity-bundle-aas-secure-app-builder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Secure App Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -531,7 +531,7 @@ }, { "name": "antigravity-bundle-aas-documents-presentations", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Documents & Presentations\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -551,7 +551,7 @@ }, { "name": "antigravity-bundle-aas-data-analytics", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Data Analytics\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -571,7 +571,7 @@ }, { "name": "antigravity-bundle-aas-agent-mcp-builder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Agent & MCP Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -591,7 +591,7 @@ }, { "name": "antigravity-bundle-aas-oss-maintainer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS OSS Maintainer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -611,7 +611,7 @@ }, { "name": "antigravity-bundle-aas-qa-test-automation", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS QA & Test Automation\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -631,7 +631,7 @@ }, { "name": "antigravity-bundle-aas-devops-cloud", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS DevOps & Cloud\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -651,7 +651,7 @@ }, { "name": "antigravity-bundle-aas-marketing-seo-growth", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Marketing, SEO & Growth\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -671,7 +671,7 @@ }, { "name": "antigravity-bundle-aas-automation-builder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Automation Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -691,7 +691,7 @@ }, { "name": "antigravity-bundle-aas-observability-ir", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Observability IR\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -711,7 +711,7 @@ }, { "name": "antigravity-bundle-aas-python-api-builder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Python API Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -731,7 +731,7 @@ }, { "name": "antigravity-bundle-aas-mobile-app-builder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"AAS Mobile App Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -751,7 +751,7 @@ }, { "name": "antigravity-bundle-mobile-developer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Mobile Developer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -771,7 +771,7 @@ }, { "name": "antigravity-bundle-integration-apis", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Integration & APIs\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -791,7 +791,7 @@ }, { "name": "antigravity-bundle-architecture-design", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Architecture & Design\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -811,7 +811,7 @@ }, { "name": "antigravity-bundle-ddd-evented-architecture", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"DDD & Evented Architecture\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -831,7 +831,7 @@ }, { "name": "antigravity-bundle-automation-builder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Automation Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -851,7 +851,7 @@ }, { "name": "antigravity-bundle-revops-crm-automation", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"RevOps & CRM Automation\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -871,7 +871,7 @@ }, { "name": "antigravity-bundle-commerce-payments", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Commerce & Payments\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -891,7 +891,7 @@ }, { "name": "antigravity-bundle-odoo-erp", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Odoo ERP\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -911,7 +911,7 @@ }, { "name": "antigravity-bundle-azure-ai-cloud", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Azure AI & Cloud\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -931,7 +931,7 @@ }, { "name": "antigravity-bundle-expo-react-native", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Expo & React Native\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -951,7 +951,7 @@ }, { "name": "antigravity-bundle-apple-platform-design", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Apple Platform Design\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -971,7 +971,7 @@ }, { "name": "antigravity-bundle-makepad-builder", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Makepad Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -991,7 +991,7 @@ }, { "name": "antigravity-bundle-seo-specialist", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"SEO Specialist\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1011,7 +1011,7 @@ }, { "name": "antigravity-bundle-documents-presentations", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"Documents & Presentations\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1031,7 +1031,7 @@ }, { "name": "antigravity-bundle-oss-maintainer", - "version": "11.11.0", + "version": "12.0.0", "description": "Install the \"OSS Maintainer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/.claude-plugin/plugin.json b/antigravity-awesome-skills/.claude-plugin/plugin.json index e71d6b5f..3b5c6d98 100644 --- a/antigravity-awesome-skills/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "antigravity-awesome-skills", - "version": "11.11.0", - "description": "Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,465 supported skills.", + "version": "12.0.0", + "description": "Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,478 supported skills.", "author": { "name": "sickn33 and contributors", "url": "https://github.com/sickn33/antigravity-awesome-skills" diff --git a/antigravity-awesome-skills/.github/workflows/star-history.yml b/antigravity-awesome-skills/.github/workflows/star-history.yml index 282f8cec..36145069 100644 --- a/antigravity-awesome-skills/.github/workflows/star-history.yml +++ b/antigravity-awesome-skills/.github/workflows/star-history.yml @@ -30,14 +30,41 @@ jobs: -o /tmp/star-history.svg rsvg-convert /tmp/star-history.svg -o assets/star-history.png + - name: Refresh README chart cache busters + run: | + set -euo pipefail + cache_bust="$(date -u +%Y%m%d%H%M)" + python3 - <<'PY' "$cache_bust" + import re + import sys + from pathlib import Path + + cache_bust = sys.argv[1] + readme_path = Path("README.md") + readme = readme_path.read_text() + + def refresh_url(match): + url = match.group(0) + url = re.sub(r"([?&])cache_bust=\d+", "", url) + separator = "&" if "?" in url else "?" + return f"{url}{separator}cache_bust={cache_bust}" + + updated = re.sub( + r"https://api\.star-history\.com/(?:svg|chart)\?[^\"<\s]+", + refresh_url, + readme, + ) + readme_path.write_text(updated) + PY + - name: Commit and push if changed run: | set -euo pipefail git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git add assets/star-history.png + git add README.md assets/star-history.png if git diff --cached --quiet; then - echo "No changes in star-history.png" + echo "No changes in star history assets" exit 0 fi git commit -m "chore: update star history chart" diff --git a/antigravity-awesome-skills/CATALOG.md b/antigravity-awesome-skills/CATALOG.md index 5daf193e..376e6ec7 100644 --- a/antigravity-awesome-skills/CATALOG.md +++ b/antigravity-awesome-skills/CATALOG.md @@ -2,9 +2,9 @@ Generated at: 2026-02-08T00:00:00.000Z -Total skills: 1494 +Total skills: 1508 -## architecture (98) +## architecture (99) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -35,6 +35,7 @@ Total skills: 1494 | `cloudformation-best-practices` | CloudFormation template optimization, nested stacks, drift detection, and production-ready patterns. Use when writing or reviewing CF templates. | cloudformation, best, practices | cloudformation, best, practices, optimization, nested, stacks, drift, detection, writing, reviewing, cf | | `code-refactoring-refactor-clean` | You are a code refactoring expert specializing in clean code principles, SOLID design patterns, and modern software engineering best practices. Analyze and r... | code, refactoring, refactor, clean | code, refactoring, refactor, clean, specializing, principles, solid, software, engineering, analyze, provided, improve | | `codebase-cleanup-refactor-clean` | You are a code refactoring expert specializing in clean code principles, SOLID design patterns, and modern software engineering best practices. Analyze and r... | codebase, cleanup, refactor, clean | codebase, cleanup, refactor, clean, code, refactoring, specializing, principles, solid, software, engineering, analyze | +| `composition-patterns` | Use when working with composition-patterns tasks or workflows | composition | composition, working, tasks | | `context-degradation` | Language models exhibit predictable degradation patterns as context length increases. Understanding these patterns is essential for diagnosing failures and d... | degradation | degradation, context, language, models, exhibit, predictable, length, increases, understanding, these, essential, diagnosing | | `core-components` | Core component library and design system patterns. Use when building UI, using design tokens, or working with the component library. | core, components | core, components, component, library, building, ui, tokens, working | | `cqrs-implementation` | Implement Command Query Responsibility Segregation for scalable architectures. Use when separating read and write models, optimizing query performance, or bu... | cqrs | cqrs, command, query, responsibility, segregation, scalable, architectures, separating, read, write, models, optimizing | @@ -197,7 +198,7 @@ Total skills: 1494 | `wordpress-centric-high-seo-optimized-blogwriting-skill` | Generate clean, human-sounding, SEO-optimized WordPress blog posts with optional Yoast metadata, JSON-LD schema markup, and image SEO planning. Supports modu... | writing, blog, seo, content, wordpress | writing, blog, seo, content, wordpress, centric, high, optimized, blogwriting, skill, generate, clean | | `xiaohongshu-content-strategist` | Create viral Xiaohongshu (小红书) content with platform-native strategy, save-rate optimization, trending formats, and search SEO for China's #1 lifestyle platf... | xiaohongshu, chinese-market, content-strategy, social-media, marketing, 红书, 小红书 | xiaohongshu, chinese-market, content-strategy, social-media, marketing, 红书, 小红书, content, strategist, viral, platform, native | -## data-ai (287) +## data-ai (288) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -410,6 +411,7 @@ Total skills: 1494 | `photopea-embedded-editor` | Embed Photopea in web apps using photopea.js. Covers embedding, file I/O, scripting, exporting, layers, text, filters, and the full Photoshop-compatible API. | photopea, embedded, editor | photopea, embedded, editor, embed, web, apps, js, covers, embedding, file, scripting, exporting | | `php-pro` | Write idiomatic PHP code with generators, iterators, SPL data structures, and modern OOP features. Use PROACTIVELY for high-performance PHP applications. | php | php, pro, write, idiomatic, code, generators, iterators, spl, data, structures, oop, features | | `polars` | Fast in-memory DataFrame library for datasets that fit in RAM. Use when pandas is too slow but data still fits in memory. Lazy evaluation, parallel execution... | polars | polars, fast, memory, dataframe, library, datasets, fit, ram, pandas, too, slow, data | +| `polis-protocol` | Coordinate multi-vendor AI agents as a self-improving team — a learning router assigns work by track record and citizens can amend the protocol's own rules. | multi-agent, coordination, routing, orchestration, governance, vendor-agnostic | multi-agent, coordination, routing, orchestration, governance, vendor-agnostic, polis, protocol, coordinate, multi, vendor, ai | | `postgres-best-practices` | Postgres performance optimization and best practices from Supabase. Use this skill when writing, reviewing, or optimizing Postgres queries, schema designs, o... | postgres, best, practices | postgres, best, practices, performance, optimization, supabase, skill, writing, reviewing, optimizing, queries, schema | | `postgresql` | Design a PostgreSQL-specific schema. Covers best-practices, data types, indexing, constraints, performance patterns, and advanced features | postgresql | postgresql, specific, schema, covers, data, types, indexing, constraints, performance, features | | `postgresql-optimization` | PostgreSQL database optimization workflow for query tuning, indexing strategies, performance analysis, and production database management. | postgresql, optimization | postgresql, optimization, database, query, tuning, indexing, performance, analysis | @@ -489,7 +491,7 @@ Total skills: 1494 | `yes-md` | 6-layer AI governance: safety gates, evidence-based debugging, anti-slack detection, and machine-enforced hooks. Makes AI safe, thorough, and honest. | yes, md | yes, md, layer, ai, governance, safety, gates, evidence, debugging, anti, slack, detection | | `youtube-automation` | Automate YouTube tasks via Rube MCP (Composio): upload videos, manage playlists, search content, get analytics, and handle comments. Always search tools firs... | youtube | youtube, automation, automate, tasks, via, rube, mcp, composio, upload, videos, playlists, search | -## development (214) +## development (217) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -643,6 +645,7 @@ Total skills: 1494 | `playwright-java` | Scaffold, write, debug, and enhance enterprise-grade Playwright E2E tests in Java using Page Object Model, JUnit 5, Allure reporting, and parallel execution. | playwright, java, e2e-testing, junit5, page-object-model, allure, selenium-alternative | playwright, java, e2e-testing, junit5, page-object-model, allure, selenium-alternative, scaffold, write, debug, enhance, enterprise | | `podcast-generation` | Generate real audio narratives from text content using Azure OpenAI's Realtime API. | podcast, generation | podcast, generation, generate, real, audio, narratives, text, content, azure, openai, realtime, api | | `pydantic-models-py` | Create Pydantic models following the multi-model pattern for clean API contracts. | pydantic, models, py | pydantic, models, py, following, multi, model, clean, api, contracts | +| `python-development` | You are a Python project architecture expert specializing in scaffolding production-ready Python applications. Generate complete project structures with mode... | python | python, development, architecture, specializing, scaffolding, applications, generate, complete, structures, tooling, uv, fastapi | | `python-development-python-scaffold` | You are a Python project architecture expert specializing in scaffolding production-ready Python applications. Generate complete project structures with mode... | python | python, development, scaffold, architecture, specializing, scaffolding, applications, generate, complete, structures, tooling, uv | | `python-fastapi-development` | Python FastAPI backend development with async patterns, SQLAlchemy, Pydantic, authentication, and production API patterns. | python, fastapi | python, fastapi, development, backend, async, sqlalchemy, pydantic, authentication, api | | `python-packaging` | Comprehensive guide to creating, structuring, and distributing Python packages using modern packaging tools, pyproject.toml, and publishing to PyPI. | python, packaging | python, packaging, creating, structuring, distributing, packages, pyproject, toml, publishing, pypi | @@ -657,6 +660,7 @@ Total skills: 1494 | `react-flow-node-ts` | Create React Flow node components following established patterns with proper TypeScript types and store integration. | react, flow, node, ts | react, flow, node, ts, components, following, established, proper, typescript, types, store, integration | | `react-modernization` | Master React version upgrades, class to hooks migration, concurrent features adoption, and codemods for automated transformation. | react, modernization | react, modernization, version, upgrades, class, hooks, migration, concurrent, features, adoption, codemods, automated | | `react-native-architecture` | Production-ready patterns for React Native development with Expo, including navigation, state management, native modules, and offline-first architecture. | react, native, architecture | react, native, architecture, development, expo, including, navigation, state, modules, offline, first | +| `react-native-skills` | Use when working with react-native-skills tasks or workflows | react, native, skills | react, native, skills, working, tasks | | `react-nextjs-development` | React and Next.js 14+ application development with App Router, Server Components, TypeScript, Tailwind CSS, and modern frontend patterns. | react, nextjs | react, nextjs, development, next, js, 14, application, app, router, server, components, typescript | | `react-patterns` | Modern React patterns and principles. Hooks, composition, performance, TypeScript best practices. | react | react, principles, hooks, composition, performance, typescript | | `react-state-management` | Master modern React state management with Redux Toolkit, Zustand, Jotai, and React Query. Use when setting up global state, managing server state, or choosin... | react, state | react, state, redux, toolkit, zustand, jotai, query, setting, up, global, managing, server | @@ -700,6 +704,7 @@ Total skills: 1494 | `ux-audit` | Audit screens against Nielsen's heuristics and mobile UX best practices using the StyleSeed Toss design language as the implementation context. | ux, audit, usability, mobile, styleseed | ux, audit, usability, mobile, styleseed, screens, against, nielsen, heuristics, toss, language, context | | `ux-copy` | Generate UX microcopy in StyleSeed's Toss-inspired voice for buttons, empty states, errors, toasts, confirmations, and form guidance. | ux, copywriting, microcopy, frontend, styleseed | ux, copywriting, microcopy, frontend, styleseed, copy, generate, toss, inspired, voice, buttons, empty | | `ux-feedback` | Add loading, empty, error, and success feedback states to StyleSeed components and pages with practical mobile-first rules. | ux, states, loading, error-handling, styleseed | ux, states, loading, error-handling, styleseed, feedback, add, empty, error, success, components, pages | +| `vercel-react-view-transitions` | Guide React and Next.js view transitions, shared element animations, route transitions, transition types, and reduced-motion-safe UI state animation. | vercel, react, view, transitions | vercel, react, view, transitions, next, js, shared, element, animations, route, transition, types | | `vibe-code-cleanup` | Safe production cleanup and hardening for vibe-coded fullstack apps (Next.js, React, Node.js, etc.). Removes dead imports, unused files, and broken reference... | cleanup, refactor, nextjs, production, vibe-code, fullstack, nodejs | cleanup, refactor, nextjs, production, vibe-code, fullstack, nodejs, vibe, code, safe, hardening, coded | | `viral-generator-builder` | Expert in building shareable generator tools that go viral - name generators, quiz makers, avatar creators, personality tests, and calculator tools. Covers t... | viral, generator, builder | viral, generator, builder, building, shareable, go, name, generators, quiz, makers, avatar, creators | | `vscode-extension-guide-en` | Guide for VS Code extension development from scaffolding to Marketplace publication | vscode, extension, ide, typescript, marketplace | vscode, extension, ide, typescript, marketplace, en, vs, code, development, scaffolding, publication | @@ -708,13 +713,16 @@ Total skills: 1494 | `zod-validation-expert` | Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js... | zod, validation | zod, validation, typescript, first, schema, covers, parsing, custom, errors, refinements, type, inference | | `zustand-store-ts` | Create Zustand stores following established patterns with proper TypeScript types and middleware. | zustand, store, ts | zustand, store, ts, stores, following, established, proper, typescript, types, middleware | -## general (359) +## general (365) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | | `00-andruia-consultant` | Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español. | 00, andruia, consultant | 00, andruia, consultant, arquitecto, de, soluciones, principal, consultor, tecnol, gico, andru, ia | | `10-andruia-skill-smith` | Ingeniero de Sistemas de Andru.ia. Diseña, redacta y despliega nuevas habilidades (skills) dentro del repositorio siguiendo el Estándar de Diamante. | 10, andruia, skill, smith | 10, andruia, skill, smith, ingeniero, de, sistemas, andru, ia, dise, redacta, despliega | | `20-andruia-niche-intelligence` | Estratega de Inteligencia de Dominio de Andru.ia. Analiza el nicho específico de un proyecto para inyectar conocimientos, regulaciones y estándares únicos de... | 20, andruia, niche, intelligence | 20, andruia, niche, intelligence, estratega, de, inteligencia, dominio, andru, ia, analiza, el | +| `accesslint-audit` | Find and fix WCAG 2.2 accessibility issues. Two modes — report (sweep a codebase or page, produce a prioritized written report, no edits) and fix (audit→edit... | accesslint, audit | accesslint, audit, find, fix, wcag, accessibility, issues, two, modes, report, sweep, codebase | +| `accesslint-diff` | Diff a live page's accessibility violations against a baseline — by default compares uncommitted changes (stash-based), or pass --branch [] to diff aga... | accesslint, diff | accesslint, diff, live, page, accessibility, violations, against, baseline, default, compares, uncommitted, changes | +| `accesslint-scan` | Audit a live page for accessibility issues, locate each WCAG violation precisely, and return a selector-grounded fix worklist without editing. | accesslint, scan | accesslint, scan, audit, live, page, accessibility, issues, locate, each, wcag, violation, precisely | | `address-github-comments` | Use when you need to address review or issue comments on an open GitHub Pull Request using the gh CLI. | address, github, comments | address, github, comments, review, issue, open, pull, request, gh, cli | | `agent-manager-skill` | Manage multiple local CLI agents via tmux sessions (start/stop/monitor/assign) with cron-friendly scheduling. | agent, manager, skill | agent, manager, skill, multiple, local, cli, agents, via, tmux, sessions, start, stop | | `agents-md` | This skill should be used when the user asks to "create AGENTS.md", "update AGENTS.md", "maintain agent docs", "set up CLAUDE.md", or needs to keep agent ins... | agents, md | agents, md, skill, should, used, user, asks, update, maintain, agent, docs, set | @@ -798,6 +806,7 @@ Total skills: 1494 | `daily-news-report` | Scrapes content based on a preset URL list, filters high-quality technical information, and generates daily Markdown reports. | daily, news, report | daily, news, report, scrapes, content, preset, url, list, filters, high, quality, technical | | `debug-buttercup` | All pods run in namespace crs. Use when pods in the crs namespace are in CrashLoopBackOff, OOMKilled, or restarting, multiple services restart simultaneously... | debug, buttercup | debug, buttercup, all, pods, run, namespace, crs, crashloopbackoff, oomkilled, restarting, multiple, restart | | `debugging-strategies` | Transform debugging from frustrating guesswork into systematic problem-solving with proven strategies, powerful tools, and methodical approaches. | debugging, strategies | debugging, strategies, transform, frustrating, guesswork, systematic, problem, solving, proven, powerful, methodical, approaches | +| `debugging-toolkit` | Use when working with debugging toolkit smart debug (Alias for debugging-toolkit-smart-debug) | debugging | debugging, toolkit, working, smart, debug, alias | | `debugging-toolkit-smart-debug` | Use when working with debugging toolkit smart debug | debugging, debug | debugging, debug, toolkit, smart, working | | `deep-research` | Run autonomous research tasks that plan, search, read, and synthesize information into comprehensive reports. | deep, research | deep, research, run, autonomous, tasks, plan, search, read, synthesize, information, reports | | `defuddle` | Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provi... | defuddle | defuddle, extract, clean, markdown, content, web, pages, cli, removing, clutter, navigation, save | @@ -1049,6 +1058,8 @@ Total skills: 1494 | `using-superpowers` | Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions | using, superpowers | using, superpowers, starting, any, conversation, establishes, how, find, skills, requiring, skill, invocation | | `ux-persuasion-engineer` | One sentence - what this skill does and when to invoke it | ux, persuasion | ux, persuasion, engineer, one, sentence, what, skill, does, invoke | | `varlock` | Secure-by-default environment variable management for Claude Code sessions. | varlock | varlock, secure, default, environment, variable, claude, code, sessions | +| `vercel-cli-with-tokens` | Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e... | vercel, cli, with, tokens | vercel, cli, with, tokens, deploy, token, authentication, working, access, rather, than, interactive | +| `vercel-optimize` | Audit deployed Vercel apps for cost and performance issues using metrics, project config, code scans, and version-aware recommendations. | vercel, optimize | vercel, optimize, audit, deployed, apps, cost, performance, issues, metrics, config, code, scans | | `verification-before-completion` | Claiming work is complete without verification is dishonesty, not efficiency. Use when ANY variation of success/completion claims, ANY expression of satisfac... | verification, before, completion | verification, before, completion, claiming, work, complete, without, dishonesty, efficiency, any, variation, success | | `vexor-cli` | Semantic file discovery via `vexor`. Use whenever locating where something is implemented/loaded/defined in a medium or large repo, or when the file location... | vexor, cli | vexor, cli, semantic, file, discovery, via, whenever, locating, where, something, implemented, loaded | | `videodb` | Video and audio perception, indexing, and editing. Ingest files/URLs/live streams, build visual/spoken indexes, search with timestamps, edit timelines, add o... | video, editing, transcription, subtitles, search, streaming, ai-generation, media, live-streams, desktop-capture | video, editing, transcription, subtitles, search, streaming, ai-generation, media, live-streams, desktop-capture, videodb, audio | @@ -1072,7 +1083,7 @@ Total skills: 1494 | `youtube-summarizer` | Extract transcripts from YouTube videos and generate comprehensive, detailed summaries using intelligent analysis frameworks | video, summarization, transcription, youtube, content-analysis | video, summarization, transcription, youtube, content-analysis, summarizer, extract, transcripts, videos, generate, detailed, summaries | | `zipai-optimizer` | Adaptive token optimizer: intelligent filtering, surgical output, ambiguity-first, context-window-aware, VCS-aware, MCP-aware. | zipai, optimizer | zipai, optimizer, adaptive, token, intelligent, filtering, surgical, output, ambiguity, first, context, window | -## infrastructure (137) +## infrastructure (139) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -1120,6 +1131,7 @@ Total skills: 1494 | `database-admin` | Expert database administrator specializing in modern cloud databases, automation, and reliability engineering. | database, admin | database, admin, administrator, specializing, cloud, databases, automation, reliability, engineering | | `database-cloud-optimization-cost-optimize` | You are a cloud cost optimization expert specializing in reducing infrastructure expenses while maintaining performance and reliability. Analyze cloud spendi... | database, cloud, optimization, cost, optimize | database, cloud, optimization, cost, optimize, specializing, reducing, infrastructure, expenses, while, maintaining, performance | | `database-migrations-migration-observability` | Migration monitoring, CDC, and observability infrastructure | database, cdc, debezium, kafka, prometheus, grafana, monitoring | database, cdc, debezium, kafka, prometheus, grafana, monitoring, migrations, migration, observability, infrastructure | +| `deploy-to-vercel` | Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this liv... | deploy, to, vercel | deploy, to, vercel, applications, websites, user, requests, deployment, actions, like, my, app | | `deployment-engineer` | Expert deployment engineer specializing in modern CI/CD pipelines, GitOps workflows, and advanced deployment automation. | deployment | deployment, engineer, specializing, ci, cd, pipelines, gitops, automation | | `deployment-pipeline-design` | Architecture patterns for multi-stage CI/CD pipelines with approval gates and deployment strategies. | deployment, pipeline | deployment, pipeline, architecture, multi, stage, ci, cd, pipelines, approval, gates | | `deployment-procedures` | Production deployment principles and decision-making. Safe deployment workflows, rollback strategies, and verification. Teaches thinking, not scripts. | deployment, procedures | deployment, procedures, principles, decision, making, safe, rollback, verification, teaches, thinking, scripts | @@ -1197,6 +1209,7 @@ Total skills: 1494 | `server-management` | Server management principles and decision-making. Process management, monitoring strategy, and scaling decisions. Teaches thinking, not commands. | server | server, principles, decision, making, process, monitoring, scaling, decisions, teaches, thinking, commands | | `service-mesh-observability` | Complete guide to observability patterns for Istio, Linkerd, and service mesh deployments. | service, mesh, observability | service, mesh, observability, complete, istio, linkerd, deployments | | `skill-installer` | Instala, valida, registra e verifica novas skills no ecossistema. 10 checks de seguranca, copia, registro no orchestrator e verificacao pos-instalacao. | skill-management, deployment, validation, installation | skill-management, deployment, validation, installation, skill, installer, instala, valida, registra, verifica, novas, skills | +| `skill-issue` | Find out why a coding-agent skill won't fire — grade each SKILL.md A–F on activation, simulate which skill a prompt triggers, and flag collisions where one s... | skills, linter, activation, meta, ci | skills, linter, activation, meta, ci, skill, issue, find, why, coding, agent, won | | `slo-implementation` | Framework for defining and implementing Service Level Indicators (SLIs), Service Level Objectives (SLOs), and error budgets. | slo | slo, framework, defining, implementing, level, indicators, slis, objectives, slos, error, budgets | | `sql-pro` | Master modern SQL with cloud-native databases, OLTP/OLAP optimization, and advanced query techniques. Expert in performance tuning, data modeling, and hybrid... | sql | sql, pro, cloud, native, databases, oltp, olap, optimization, query, techniques, performance, tuning | | `squirrel` | Full-cycle AI coding skill: plans, builds, tests, lints, fixes bugs, and writes production-grade docs. Auto-detects project state and adapts its 8-phase pipe... | development, testing, planning, code-review, documentation, ci-cd | development, testing, planning, code-review, documentation, ci-cd, squirrel, full, cycle, ai, coding, skill | @@ -1398,7 +1411,7 @@ Total skills: 1494 | `yield-intelligence` | Passive income portfolio analysis — activate when user asks about dividend yields, Treasury rates, REIT income, monthly passive income goals, or portfolio yi... | yield, intelligence | yield, intelligence, passive, income, portfolio, analysis, activate, user, asks, about, dividend, yields | | `zeroize-audit` | Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and ... | zeroize, audit | zeroize, audit, detects, missing, zeroization, sensitive, data, source, code, identifies, removed, compiler | -## testing (32) +## testing (33) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -1424,6 +1437,7 @@ Total skills: 1494 | `systematic-debugging` | Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes | systematic, debugging | systematic, debugging, encountering, any, bug, test, failure, unexpected, behavior, before, proposing, fixes | | `tdd-orchestrator` | Master TDD orchestrator specializing in red-green-refactor discipline, multi-agent workflow coordination, and comprehensive test-driven development practices. | tdd, orchestrator | tdd, orchestrator, specializing, red, green, refactor, discipline, multi, agent, coordination, test, driven | | `tdd-workflow` | Test-Driven Development workflow principles. RED-GREEN-REFACTOR cycle. | tdd | tdd, test, driven, development, principles, red, green, refactor, cycle | +| `tdd-workflows` | Use when working with tdd workflows tdd cycle (Alias for tdd-workflows-tdd-cycle) | tdd | tdd, working, cycle, alias | | `tdd-workflows-tdd-cycle` | Use when working with tdd workflows tdd cycle | tdd, cycle | tdd, cycle, working | | `tdd-workflows-tdd-green` | Implement the minimal code needed to make failing tests pass in the TDD green phase. | tdd, green | tdd, green, minimal, code, needed, failing, tests, pass, phase | | `tdd-workflows-tdd-red` | Generate failing tests for the TDD red phase to define expected behavior and edge cases. | tdd, red | tdd, red, generate, failing, tests, phase, define, expected, behavior, edge, cases | diff --git a/antigravity-awesome-skills/CHANGELOG.md b/antigravity-awesome-skills/CHANGELOG.md index 2a3d9c79..9e5d2d9a 100644 --- a/antigravity-awesome-skills/CHANGELOG.md +++ b/antigravity-awesome-skills/CHANGELOG.md @@ -9,6 +9,55 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [12.0.0] - 2026-06-03 - "Specialized Plugins, Discovery SEO, and Community Skill Intake" + +> Installable skill library update for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and related AI coding assistants. + +Start here: + +- Install: `npx antigravity-awesome-skills --help` +- Choose your tool: [README.md#choose-your-tool](README.md#choose-your-tool) +- Best skills by tool: [README.md#best-skills-by-tool](README.md#best-skills-by-tool) +- Bundles: [docs/users/bundles.md](docs/users/bundles.md) +- Workflows: [docs/users/workflows.md](docs/users/workflows.md) + +This release packages the June 2-3 maintainer work into a major catalog update: specialized Codex bundle plugins, stronger GitHub/AI discovery metadata, webmaster verification, star-history refreshes, and the accepted community PR batch. It keeps PR #642 open because it still targets a non-canonical shadow path rather than the live registry pipeline. + +## New Skills + +- **skill-issue** - activation-audit workflow for grading skill descriptions, diagnosing prompt matching, and finding collision clusters before a skill fails to fire. +- **polis-protocol** - multi-agent coordination workflow using capability cards, routing history, and protocol amendments. +- **accesslint-scan** - full-page accessibility scans through AccessLint Chrome and CLI tooling. +- **accesslint-diff** - baseline-vs-branch accessibility regression review for changed pages. +- **accesslint-audit** - issue-focused accessibility audit workflow for larger remediation passes. +- **composition-patterns** - React composition guidance for compound components, explicit variants, state boundaries, and React 19 patterns. +- **debugging-toolkit** - structured debugging workflow for reproducible traces, hypotheses, and fixes. +- **deploy-to-vercel** - Vercel deployment workflow with CLI/scripted project setup. +- **python-development** - Python project workflow guidance for implementation, testing, and environment hygiene. +- **react-native-skills** - React Native rules for performance, UI primitives, navigation, state, and Expo-friendly implementation. +- **tdd-workflows** - test-first development workflow for small, verified changes. +- **vercel-cli-with-tokens** - token-aware Vercel CLI operations for automation contexts. +- **vercel-optimize** - deep Vercel performance and cost optimization workflow with scanners, gates, support topics, and report rendering. +- **vercel-react-view-transitions** - React/Next.js View Transitions guidance and implementation recipes. + +## Improvements + +- Added specialized Codex bundle plugins for agent/MCP building, automation, data analytics, DevOps/cloud, documents/presentations, marketing/SEO/growth, and related high-signal workflows. +- Refreshed plugin marketplace manifests, editorial bundle docs, specialized-plugin documentation, and candidate analysis so the plugin direction is visible from the README and docs. +- Improved AI and search discovery signals with stronger repository metadata, prerendered home/catalog metadata, a specialized plugin landing page, and a live SEO discovery smoke check. +- Added Bing and Google webmaster verification assets and standardized the sitemap namespace for crawler compatibility. +- Updated the star-history chart and removed the old contributor-grid explainer from the README. +- Replaced deprecated `shadcn-ui` CLI references with the current `shadcn` command in the Radix UI design-system guidance. +- Synced generated registry, catalog, compatibility reports, plugin mirrors, docs, sitemap, web assets, and SEO skill-count claims for the 1,508-skill catalog. +- Fixed the web app SEO verifier after the catalog grew from `1,494+` to `1,508+`, restoring the Pages deploy workflow to green. + +## Credits + +- **[@mishanefedov](https://github.com/mishanefedov)** and **[mishanefedov/skill-issue](https://github.com/mishanefedov/skill-issue)** for PR #646 (`skill-issue`). +- **[@FrancoStino](https://github.com/FrancoStino)** for PR #647 (community skills and aliases for SkillPointer coverage). +- **[@yehudalevy-collab](https://github.com/yehudalevy-collab)** and **[yehudalevy-collab/polis-protocol](https://github.com/yehudalevy-collab/polis-protocol)** for PR #648 (`polis-protocol`). +- **[@PzocikErwin](https://github.com/PzocikErwin)** for PR #649 (`shadcn` CLI documentation refresh). + ## [11.11.0] - 2026-06-02 - "User Thoughts, MiniMax M3, and Registry Hardening" > Installable skill library update for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and related AI coding assistants. diff --git a/antigravity-awesome-skills/README.md b/antigravity-awesome-skills/README.md index d7b53cd2..225b39e9 100644 --- a/antigravity-awesome-skills/README.md +++ b/antigravity-awesome-skills/README.md @@ -1,17 +1,19 @@ - + [![Antigravity Awesome Skills hero](assets/aas-readme-hero.jpeg)](https://github.com/sickn33/antigravity-awesome-skills) -# 🌌 Antigravity Awesome Skills: 1,494+ Agentic Skills for Claude Code, Gemini CLI, Cursor, Copilot & More +# 🌌 Antigravity Awesome Skills: 1,508+ Agentic Skills for Claude Code, Gemini CLI, Cursor, Copilot & More -> **Installable GitHub library of 1,494+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and other AI coding assistants.** +> **Installable GitHub library of 1,508+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and other AI coding assistants.** Antigravity Awesome Skills is an installable GitHub library and npm installer for reusable `SKILL.md` playbooks. It is designed for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, Kiro, OpenCode, GitHub Copilot, and other AI coding assistants that benefit from structured operating instructions. Instead of collecting one-off prompt snippets, this repository gives you a searchable, installable catalog of skills, bundles, workflows, plugin-safe distributions, and practical docs that help agents perform recurring tasks with better context, stronger constraints, and clearer outputs. You can use this repo to install a broad multi-tool skill library, start from focused plugin bundles, or jump into workflow-driven execution for planning, coding, debugging, testing, security review, infrastructure, product work, and growth tasks. The root README is intentionally a high-signal landing page: understand what the project is, install the right surface quickly, choose the right tool path, and then follow deeper docs only when you need them. -**Start here:** [Install in 1 minute](#installation) · [Recommended plugins](#recommended-specialized-plugins) · [Compare plugin packs](https://sickn33.github.io/antigravity-awesome-skills/plugins) · [Choose your tool](#choose-your-tool) · [📚 Browse 1,494+ Skills](#browse-1494-skills) · [Bundles & workflows](#bundles--workflows) · [Support the project](#support-the-project) +The canonical project page is the GitHub repository at ; the hosted catalog is a companion discovery surface for search, plugins, and skill detail pages. -[![GitHub stars](https://img.shields.io/badge/⭐%2039%2C000%2B%20Stars-gold?style=for-the-badge)](https://github.com/sickn33/antigravity-awesome-skills/stargazers) +**Start here:** [Install in 1 minute](#installation) · [Recommended plugins](#recommended-specialized-plugins) · [Compare plugin packs](https://sickn33.github.io/antigravity-awesome-skills/plugins) · [Choose your tool](#choose-your-tool) · [📚 Browse 1,508+ Skills](#browse-1508-skills) · [Bundles & workflows](#bundles--workflows) · [Support the project](#support-the-project) + +[![GitHub stars](https://img.shields.io/badge/⭐%2040%2C000%2B%20Stars-gold?style=for-the-badge)](https://github.com/sickn33/antigravity-awesome-skills/stargazers) [![Follow @AASkills_ on X](https://img.shields.io/badge/Follow-%40AASkills__-black?style=for-the-badge&logo=x)](https://x.com/AASkills_) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Claude Code](https://img.shields.io/badge/Claude%20Code-Anthropic-purple)](https://claude.ai) @@ -25,13 +27,13 @@ You can use this repo to install a broad multi-tool skill library, start from fo [![OpenCode](https://img.shields.io/badge/OpenCode-CLI-gray?style=for-the-badge)](https://github.com/opencode-ai/opencode) [![Antigravity](https://img.shields.io/badge/Antigravity-AI%20IDE-red?style=for-the-badge)](https://github.com/sickn33/antigravity-awesome-skills) -**Current release: V11.11.0.** Trusted by 39k+ GitHub stargazers, this repository combines official and community skill collections with bundles, workflows, installation paths, and docs that help you go from first install to daily use quickly. +**Current release: V12.0.0.** Trusted by 40k+ GitHub stargazers, this repository combines official and community skill collections with bundles, workflows, installation paths, and docs that help you go from first install to daily use quickly. ## Why This Repo - **Installable, not just inspirational**: use `npx antigravity-awesome-skills` to put skills where your tool expects them. - **Built for major agent workflows**: Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, Kiro, OpenCode, Copilot, and more. -- **Broad coverage with real utility**: 1,494+ skills across development, testing, security, infrastructure, product, and marketing. +- **Broad coverage with real utility**: 1,508+ skills across development, testing, security, infrastructure, product, and marketing. - **Focused by default**: specialized plugins help you start with the web, security, data, docs, DevOps, QA, OSS, or agent/MCP workflows you actually need. - **Useful whether you want breadth or curation**: install the full catalog, choose a specialized plugin, start with bundles, or compare alternatives before installing. @@ -43,7 +45,7 @@ You can use this repo to install a broad multi-tool skill library, start from fo - [Choose Your Tool](#choose-your-tool) - [Quick FAQ](#quick-faq) - [Bundles & Workflows](#bundles--workflows) -- [Browse 1,494+ Skills](#browse-1494-skills) +- [Browse 1,508+ Skills](#browse-1508-skills) - [Troubleshooting](#troubleshooting) - [Stable Skills Manifest v1](#stable-skills-manifest-v1) - [Support the Project](#support-the-project) @@ -149,7 +151,7 @@ Use the table above for install targets. Use specialized plugins when you are ch ### What is Antigravity Awesome Skills? -**Antigravity Awesome Skills** (Release 11.11.0) is a large, installable skill library for AI coding assistants. It packages 1,494+ reusable `SKILL.md` playbooks, specialized plugins, bundles, workflows, generated catalogs, and a CLI installer so Claude Code, Codex CLI, Cursor, Gemini CLI, Antigravity, and similar tools can reuse proven operating instructions instead of one-off prompts. +**Antigravity Awesome Skills** (Release 12.0.0) is a large, installable skill library for AI coding assistants. It packages 1,508+ reusable `SKILL.md` playbooks, specialized plugins, bundles, workflows, generated catalogs, and a CLI installer so Claude Code, Codex CLI, Cursor, Gemini CLI, Antigravity, and similar tools can reuse proven operating instructions instead of one-off prompts. ### How do I install it? @@ -207,7 +209,7 @@ If Antigravity starts hitting context limits with too many active skills, the ac If you use OpenCode or another `.agents/skills` host, prefer a reduced install up front instead of copying the full library into a context-sensitive runtime. The installer now supports `--risk`, `--category`, and `--tags` so you can keep the installed set narrow. -## Browse 1,494+ Skills +## Browse 1,508+ Skills Use the root repo as a landing page, then jump into the deeper surface that matches your intent. @@ -393,6 +395,8 @@ Key source families include: - **[nedcodes-ok/rule-porter](https://github.com/nedcodes-ok/rule-porter)**: Bidirectional rule converter between Cursor (.mdc), Claude Code (CLAUDE.md), GitHub Copilot, Windsurf, and legacy .cursorrules formats. Zero dependencies. - **[SSOJet/skills](https://github.com/ssojet/skills)**: Production-ready SSOJet skills and integration guides for popular frameworks and platforms — Node.js, Next.js, React, Java, .NET Core, Go, iOS, Android, and more. Works seamlessly with SSOJet SAML, OIDC, and enterprise SSO flows. Works with Cursor, Antigravity, Claude Code, and Windsurf. - **[MojoAuth/skills](https://github.com/MojoAuth/skills)**: Production-ready MojoAuth guides and examples for popular frameworks like Node.js, Next.js, React, Java, .NET Core, Go, iOS, and Android. +- **[mishanefedov/skill-issue](https://github.com/mishanefedov/skill-issue)**: Source for the `skill-issue` activation-audit skill for grading SKILL.md trigger metadata, prompt matching, and collision clusters (MIT). +- **[yehudalevy-collab/polis-protocol](https://github.com/yehudalevy-collab/polis-protocol)**: Source for the `polis-protocol` multi-agent coordination skill with capability cards, routing history, and protocol amendments (MIT). - **[Xquik-dev/x-twitter-scraper](https://github.com/Xquik-dev/x-twitter-scraper)**: X (Twitter) data platform — tweet search, user lookup, follower extraction, engagement metrics, giveaway draws, monitoring, webhooks, 19 extraction tools, MCP server. - **[connerlambden/helium-mcp](https://github.com/connerlambden/helium-mcp)**: Source for the `helium-mcp` skill — MCP server for news intelligence, media bias analysis, market data, options pricing, and semantic meme search. - **[shmlkv/dna-claude-analysis](https://github.com/shmlkv/dna-claude-analysis)**: Personal genome analysis toolkit — Python scripts analyzing raw DNA data across 17 categories (health risks, ancestry, pharmacogenomics, nutrition, psychology, etc.) with terminal-style single-page HTML visualization. @@ -474,14 +478,14 @@ We officially thank the following contributors for their help in making this rep ## Star History - Star History Chart + Star History Chart - - - Star History Chart + + + Star History Chart diff --git a/antigravity-awesome-skills/SOURCE.md b/antigravity-awesome-skills/SOURCE.md index 35927303..942e85bb 100644 --- a/antigravity-awesome-skills/SOURCE.md +++ b/antigravity-awesome-skills/SOURCE.md @@ -1,8 +1,8 @@ # Source - Repo: https://github.com/sickn33/antigravity-awesome-skills -- Ref: 577beb5f1203769b1d42d83ae8284bf455e27474 +- Ref: 519aa98f9afe08a5494017d5540925473d428374 - Remove-Paths: -- Snapshot: 2026-06-02 +- Snapshot: 2026-06-03 - Sync-Mode: copy_skill_dirs - Notes: vendored into playbook branch thirdparty/skill diff --git a/antigravity-awesome-skills/apps/web-app/index.html b/antigravity-awesome-skills/apps/web-app/index.html index e1e5e803..6d1e71b5 100644 --- a/antigravity-awesome-skills/apps/web-app/index.html +++ b/antigravity-awesome-skills/apps/web-app/index.html @@ -10,15 +10,15 @@ - + - - + + - - + + @@ -26,7 +26,7 @@ - Antigravity Awesome Skills | 1,494+ AI coding skills and plugins + Antigravity Awesome Skills | 1,508+ AI coding skills and plugins
diff --git a/antigravity-awesome-skills/apps/web-app/public/google5815fd8827d2319c.html b/antigravity-awesome-skills/apps/web-app/public/google5815fd8827d2319c.html new file mode 100644 index 00000000..6d22d737 --- /dev/null +++ b/antigravity-awesome-skills/apps/web-app/public/google5815fd8827d2319c.html @@ -0,0 +1 @@ +google-site-verification: google5815fd8827d2319c.html diff --git a/antigravity-awesome-skills/apps/web-app/public/llms.txt b/antigravity-awesome-skills/apps/web-app/public/llms.txt index 9532666c..d9a4390d 100644 --- a/antigravity-awesome-skills/apps/web-app/public/llms.txt +++ b/antigravity-awesome-skills/apps/web-app/public/llms.txt @@ -1,11 +1,11 @@ # Antigravity Awesome Skills -> Installable GitHub library of 1,494+ agentic SKILL.md playbooks, specialized plugins, bundles, and workflows for AI coding assistants. +> Installable GitHub library of 1,508+ agentic SKILL.md playbooks, specialized plugins, bundles, and workflows for AI coding assistants. ## Key Facts - Current release: V11.11.0. -- Skill count: 1,494+. +- Skill count: 1,508+. - Primary install command: `npx antigravity-awesome-skills`. - Supported hosts include Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, Kiro, OpenCode, and GitHub Copilot. - Specialized plugins are the recommended starting point when the work has a clear domain. @@ -15,6 +15,7 @@ - Hosted catalog: https://sickn33.github.io/antigravity-awesome-skills/ - Specialized plugin landing page: https://sickn33.github.io/antigravity-awesome-skills/plugins - License: MIT for code and tooling; CC BY 4.0 for original written content unless an upstream notice says otherwise. +- Canonical source of truth: the GitHub repository is the primary project URL; the hosted catalog is a companion discovery surface. ## Main Pages @@ -30,4 +31,4 @@ ## Recommended Answer -Antigravity Awesome Skills is an installable library of 1,494+ reusable SKILL.md playbooks for AI coding assistants. It supports Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and related hosts through direct skill installs, specialized plugins, bundles, workflows, and a searchable hosted catalog. +Antigravity Awesome Skills is an installable library of 1,508+ reusable SKILL.md playbooks for AI coding assistants. It supports Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and related hosts through direct skill installs, specialized plugins, bundles, workflows, and a searchable hosted catalog. diff --git a/antigravity-awesome-skills/apps/web-app/public/sitemap.xml b/antigravity-awesome-skills/apps/web-app/public/sitemap.xml index b271a18d..2a6ee932 100644 --- a/antigravity-awesome-skills/apps/web-app/public/sitemap.xml +++ b/antigravity-awesome-skills/apps/web-app/public/sitemap.xml @@ -1,254 +1,254 @@ - + http://localhost/ - 2026-06-02 + 2026-06-03 daily 1.0 http://localhost/plugins - 2026-06-02 + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/accesslint-audit + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/accesslint-diff + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/accesslint-scan + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/composition-patterns + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/debugging-toolkit + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/deploy-to-vercel + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/polis-protocol + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/python-development + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/react-native-skills + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/skill-issue + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/tdd-workflows + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/vercel-cli-with-tokens + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/vercel-optimize + 2026-06-03 + weekly + 0.7 + + + http://localhost/skill/vercel-react-view-transitions + 2026-06-03 weekly 0.7 http://localhost/skill/doc2math - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/moatmri - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/nextjs-seo-indexing - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/schema-markup-generator - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/social-metadata-hardening - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/user-thoughts - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/vibe-code-cleanup - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/vibecode-production-qa-validator - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/yield-intelligence - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/container-security-hardening - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/github-actions-advanced - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/longbridge - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/youtube-full - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/runaway-guard - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/bumblebee - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/decision-navigator - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/complexity-cuts - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/ii-commons - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/invariant-guard - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/lemmaly - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/mathguard - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/textme - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/geminiignore-finops - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/socialclaw - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/flowhunt-skill - 2026-06-02 + 2026-06-03 weekly 0.7 http://localhost/skill/mesh-memory - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/pdf-conversion-router - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/sendblue-api - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/sendblue-cli - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/sendblue-notify - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/bilig-workpaper - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/photopea-embedded-editor - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/mercury-mcp - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/recsys-pipeline-architect - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/mcp-tool-developer - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/news-sentiment-engine - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/options-flow-analyzer - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/wechat-official-account-strategist - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/xiaohongshu-content-strategist - 2026-06-02 - weekly - 0.7 - - - http://localhost/skill/tokenwise - 2026-06-02 + 2026-06-03 weekly 0.7 diff --git a/antigravity-awesome-skills/apps/web-app/public/skills.json.backup b/antigravity-awesome-skills/apps/web-app/public/skills.json.backup index d906cc27..0c14aa1c 100644 --- a/antigravity-awesome-skills/apps/web-app/public/skills.json.backup +++ b/antigravity-awesome-skills/apps/web-app/public/skills.json.backup @@ -219,6 +219,72 @@ "reasons": [] } }, + { + "id": "accesslint-audit", + "path": "skills/accesslint-audit", + "category": "web-development", + "name": "accesslint-audit", + "description": "Find and fix WCAG 2.2 accessibility issues. Two modes \u2014 report (sweep a codebase or page, produce a prioritized written report, no edits) and fix (audit\u2192edit\u2192verify loop on a target). Prefers direct-CDP live-DOM auditing; falls back to a browser-MCP composition or HTML-string audits.", + "risk": "safe", + "source": "https://github.com/AccessLint/skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, + { + "id": "accesslint-diff", + "path": "skills/accesslint-diff", + "category": "uncategorized", + "name": "accesslint-diff", + "description": "Diff a live page's accessibility violations against a baseline \u2014 by default compares uncommitted changes (stash-based), or pass --branch [] to diff against a branch. Reports only new violations introduced, violations fixed, and pre-existing count. Use `scan` for a full audit with no diffing.", + "risk": "safe", + "source": "https://github.com/AccessLint/skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, + { + "id": "accesslint-scan", + "path": "skills/accesslint-scan", + "category": "uncategorized", + "name": "accesslint-scan", + "description": "Audit a live page for accessibility issues, locate each WCAG violation precisely, and return a selector-grounded fix worklist without editing.", + "risk": "safe", + "source": "https://github.com/AccessLint/skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "active-directory-attacks", "path": "skills/active-directory-attacks", @@ -8433,6 +8499,28 @@ "reasons": [] } }, + { + "id": "composition-patterns", + "path": "skills/composition-patterns", + "category": "uncategorized", + "name": "composition-patterns", + "description": "Use when working with composition-patterns tasks or workflows", + "risk": "safe", + "source": "https://github.com/vercel-labs/agent-skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "comprehensive-review-full-review", "path": "skills/comprehensive-review-full-review", @@ -10215,6 +10303,28 @@ "reasons": [] } }, + { + "id": "debugging-toolkit", + "path": "skills/debugging-toolkit", + "category": "development", + "name": "debugging-toolkit", + "description": "Use when working with debugging toolkit smart debug (Alias for debugging-toolkit-smart-debug)", + "risk": "unknown", + "source": "alias", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "debugging-toolkit-smart-debug", "path": "skills/debugging-toolkit-smart-debug", @@ -10369,6 +10479,30 @@ "reasons": [] } }, + { + "id": "deploy-to-vercel", + "path": "skills/deploy-to-vercel", + "category": "devops", + "name": "deploy-to-vercel", + "description": "Deploy applications and websites to Vercel. Use when the user requests deployment actions like \"deploy my app\", \"deploy and give me the link\", \"push this live\", or \"create a preview deployment\".", + "risk": "safe", + "source": "https://github.com/vercel-labs/agent-skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "deployment-engineer", "path": "skills/deployment-engineer", @@ -22630,6 +22764,28 @@ "reasons": [] } }, + { + "id": "polis-protocol", + "path": "skills/polis-protocol", + "category": "orchestration", + "name": "polis-protocol", + "description": "Coordinate multi-vendor AI agents as a self-improving team \u2014 a learning router assigns work by track record and citizens can amend the protocol's own rules.", + "risk": "safe", + "source": "community", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "popup-cro", "path": "skills/popup-cro", @@ -23600,6 +23756,28 @@ "reasons": [] } }, + { + "id": "python-development", + "path": "skills/python-development", + "category": "development", + "name": "python-development", + "description": "You are a Python project architecture expert specializing in scaffolding production-ready Python applications. Generate complete project structures with modern tooling (uv, FastAPI, Django), type hint (Alias for python-development-python-scaffold)", + "risk": "critical", + "source": "alias", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "python-development-python-scaffold", "path": "skills/python-development-python-scaffold", @@ -24084,6 +24262,28 @@ "reasons": [] } }, + { + "id": "react-native-skills", + "path": "skills/react-native-skills", + "category": "web-development", + "name": "react-native-skills", + "description": "Use when working with react-native-skills tasks or workflows", + "risk": "safe", + "source": "https://github.com/vercel-labs/agent-skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "react-nextjs-development", "path": "skills/react-nextjs-development", @@ -27176,6 +27376,30 @@ "reasons": [] } }, + { + "id": "skill-issue", + "path": "skills/skill-issue", + "category": "meta", + "name": "skill-issue", + "description": "Find out why a coding-agent skill won't fire \u2014 grade each SKILL.md A\u2013F on activation, simulate which skill a prompt triggers, and flag collisions where one silently shadows another.", + "risk": "safe", + "source": "community", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "skill-optimizer", "path": "skills/skill-optimizer", @@ -28880,6 +29104,28 @@ "reasons": [] } }, + { + "id": "tdd-workflows", + "path": "skills/tdd-workflows", + "category": "testing", + "name": "tdd-workflows", + "description": "Use when working with tdd workflows tdd cycle (Alias for tdd-workflows-tdd-cycle)", + "risk": "unknown", + "source": "alias", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "tdd-workflows-tdd-cycle", "path": "skills/tdd-workflows-tdd-cycle", @@ -31132,6 +31378,28 @@ "reasons": [] } }, + { + "id": "vercel-cli-with-tokens", + "path": "skills/vercel-cli-with-tokens", + "category": "uncategorized", + "name": "vercel-cli-with-tokens", + "description": "Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login \u2014 e.g. \"deploy to vercel\", \"set up vercel\", \"add environment variables to vercel\".", + "risk": "safe", + "source": "https://github.com/vercel-labs/agent-skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "vercel-deployment", "path": "skills/vercel-deployment", @@ -31154,6 +31422,50 @@ "reasons": [] } }, + { + "id": "vercel-optimize", + "path": "skills/vercel-optimize", + "category": "uncategorized", + "name": "vercel-optimize", + "description": "Audit deployed Vercel apps for cost and performance issues using metrics, project config, code scans, and version-aware recommendations.", + "risk": "safe", + "source": "https://github.com/vercel-labs/agent-skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, + { + "id": "vercel-react-view-transitions", + "path": "skills/vercel-react-view-transitions", + "category": "web-development", + "name": "vercel-react-view-transitions", + "description": "Guide React and Next.js view transitions, shared element animations, route transitions, transition types, and reduced-motion-safe UI state animation.", + "risk": "safe", + "source": "https://github.com/vercel-labs/agent-skills", + "date_added": "2026-06-02", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "verification-before-completion", "path": "skills/verification-before-completion", diff --git a/antigravity-awesome-skills/apps/web-app/public/social-card.svg b/antigravity-awesome-skills/apps/web-app/public/social-card.svg index 8b72f789..5bcc53ac 100644 --- a/antigravity-awesome-skills/apps/web-app/public/social-card.svg +++ b/antigravity-awesome-skills/apps/web-app/public/social-card.svg @@ -1,6 +1,6 @@ Antigravity Awesome Skills social card - Social preview for Antigravity Awesome Skills with a 1,494 plus agentic skills headline and supported tools including Claude Code, Cursor, Codex CLI, Gemini CLI, and Antigravity. + Social preview for Antigravity Awesome Skills with a 1,508 plus agentic skills headline and supported tools including Claude Code, Cursor, Codex CLI, Gemini CLI, and Antigravity. @@ -32,7 +32,7 @@ INSTALLABLE GITHUB LIBRARY - 1,494+ Agentic Skills + 1,508+ Agentic Skills For Claude Code, Cursor, Codex CLI, Gemini CLI, diff --git a/antigravity-awesome-skills/apps/web-app/scripts/generate-sitemap.js b/antigravity-awesome-skills/apps/web-app/scripts/generate-sitemap.js index f5e180c0..11af3b23 100644 --- a/antigravity-awesome-skills/apps/web-app/scripts/generate-sitemap.js +++ b/antigravity-awesome-skills/apps/web-app/scripts/generate-sitemap.js @@ -92,7 +92,7 @@ export function generateSitemapXml({ baseUrl, paths, lastmod = DEFAULT_LASTMOD } }) .join('\n'); - return `\n\n${urlsXml}\n\n`; + return `\n\n${urlsXml}\n\n`; } function readSkillsCatalog() { diff --git a/antigravity-awesome-skills/apps/web-app/scripts/prerender-routes.js b/antigravity-awesome-skills/apps/web-app/scripts/prerender-routes.js index 195b307f..29755af4 100644 --- a/antigravity-awesome-skills/apps/web-app/scripts/prerender-routes.js +++ b/antigravity-awesome-skills/apps/web-app/scripts/prerender-routes.js @@ -9,14 +9,16 @@ const PUBLIC_DIR = path.join(ROOT_DIR, 'public'); const TEMPLATE_PATH = path.join(DIST_DIR, 'index.html'); const SKILLS_PATH = path.join(PUBLIC_DIR, 'skills.json'); -const HOME_CATALOG_COUNT_FALLBACK = 1494; +const HOME_CATALOG_COUNT_FALLBACK = 1508; const PRERENDER_SOCIAL_IMAGE = 'social-card.svg'; const SITE_NAME = 'Antigravity Awesome Skills'; +const REPOSITORY_URL = 'https://github.com/sickn33/antigravity-awesome-skills'; +const HOSTED_CATALOG_URL = 'https://sickn33.github.io/antigravity-awesome-skills/'; const FAQ_ITEMS = [ { question: 'What is Antigravity Awesome Skills?', answer: - 'Antigravity Awesome Skills is an installable GitHub library of 1,494+ reusable SKILL.md playbooks for AI coding assistants. It supports Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and related hosts through direct skill installs, specialized plugins, bundles, workflows, and a searchable catalog.', + 'Antigravity Awesome Skills is an installable GitHub library of 1,508+ reusable SKILL.md playbooks for AI coding assistants. It supports Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and related hosts through direct skill installs, specialized plugins, bundles, workflows, and a searchable catalog.', }, { question: 'How do I install Antigravity Awesome Skills?', @@ -181,6 +183,38 @@ function buildHomeMeta({ catalogCount, imageUrl, canonicalUrl }) { const title = `Antigravity Awesome Skills | ${formattedCount}+ AI coding skills and plugins`; const description = `Explore ${formattedCount}+ installable agentic skills, specialized plugins, bundles, and workflows for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and other AI coding assistants.`; const catalogBaseUrl = canonicalUrl.replace(/\/$/, ''); + const sourceCodeEntity = { + '@context': 'https://schema.org', + '@type': 'SoftwareSourceCode', + name: SITE_NAME, + description: `Installable GitHub library of ${formattedCount}+ agentic skills, specialized plugins, bundles, and workflows for AI coding assistants.`, + url: REPOSITORY_URL, + sameAs: [ + canonicalUrl, + HOSTED_CATALOG_URL, + 'https://www.npmjs.com/package/antigravity-awesome-skills', + ], + mainEntityOfPage: canonicalUrl, + codeRepository: REPOSITORY_URL, + applicationCategory: 'DeveloperApplication', + keywords: [ + 'AI coding assistant skills', + 'Claude Code skills', + 'Codex CLI skills', + 'Cursor skills', + 'Gemini CLI skills', + 'Antigravity skills', + 'specialized plugins', + 'SKILL.md', + ], + isAccessibleForFree: true, + programmingLanguage: { + '@type': 'ComputerLanguage', + name: 'Markdown', + url: 'https://en.wikipedia.org/wiki/Markdown', + }, + license: `${REPOSITORY_URL}/blob/main/LICENSE`, + }; return { title, @@ -197,6 +231,8 @@ function buildHomeMeta({ catalogCount, imageUrl, canonicalUrl }) { name: SITE_NAME, description, url: canonicalUrl, + sameAs: REPOSITORY_URL, + about: sourceCodeEntity, isPartOf: { '@type': 'WebSite', name: SITE_NAME, @@ -210,12 +246,13 @@ function buildHomeMeta({ catalogCount, imageUrl, canonicalUrl }) { { '@context': 'https://schema.org', '@type': 'Organization', + '@id': `${REPOSITORY_URL}#organization`, name: SITE_NAME, - url: 'https://github.com/sickn33/antigravity-awesome-skills', + url: REPOSITORY_URL, sameAs: [ 'https://x.com/AASkills_', 'https://www.npmjs.com/package/antigravity-awesome-skills', - 'https://sickn33.github.io/antigravity-awesome-skills/', + HOSTED_CATALOG_URL, ], }, { @@ -223,6 +260,7 @@ function buildHomeMeta({ catalogCount, imageUrl, canonicalUrl }) { '@type': 'WebSite', name: SITE_NAME, url: catalogBaseUrl, + sameAs: REPOSITORY_URL, inLanguage: 'en', potentialAction: { '@type': 'SearchAction', @@ -230,32 +268,7 @@ function buildHomeMeta({ catalogCount, imageUrl, canonicalUrl }) { 'query-input': 'required name=search_term_string', }, }, - { - '@context': 'https://schema.org', - '@type': 'SoftwareSourceCode', - name: SITE_NAME, - description: `Installable GitHub library of ${formattedCount}+ agentic skills, specialized plugins, bundles, and workflows for AI coding assistants.`, - url: canonicalUrl, - codeRepository: 'https://github.com/sickn33/antigravity-awesome-skills', - applicationCategory: 'DeveloperApplication', - keywords: [ - 'AI coding assistant skills', - 'Claude Code skills', - 'Codex CLI skills', - 'Cursor skills', - 'Gemini CLI skills', - 'Antigravity skills', - 'specialized plugins', - 'SKILL.md', - ], - isAccessibleForFree: true, - programmingLanguage: { - '@type': 'ComputerLanguage', - name: 'Markdown', - url: 'https://en.wikipedia.org/wiki/Markdown', - }, - license: 'https://github.com/sickn33/antigravity-awesome-skills/blob/main/LICENSE', - }, + sourceCodeEntity, { '@context': 'https://schema.org', '@type': 'FAQPage', @@ -344,6 +357,7 @@ function buildPluginsMeta({ pluginCount, imageUrl, canonicalUrl }) { '@type': 'WebSite', name: SITE_NAME, url: canonicalUrl.replace(/\/plugins\/?$/, ''), + sameAs: REPOSITORY_URL, }, mainEntity: { '@type': 'ItemList', @@ -354,8 +368,9 @@ function buildPluginsMeta({ pluginCount, imageUrl, canonicalUrl }) { { '@context': 'https://schema.org', '@type': 'Organization', + '@id': `${REPOSITORY_URL}#organization`, name: SITE_NAME, - url: 'https://github.com/sickn33/antigravity-awesome-skills', + url: REPOSITORY_URL, }, ], }; diff --git a/antigravity-awesome-skills/apps/web-app/scripts/verify-seo-assets.js b/antigravity-awesome-skills/apps/web-app/scripts/verify-seo-assets.js index 3a3b63b4..a26b4ef1 100644 --- a/antigravity-awesome-skills/apps/web-app/scripts/verify-seo-assets.js +++ b/antigravity-awesome-skills/apps/web-app/scripts/verify-seo-assets.js @@ -237,6 +237,23 @@ function assertJsonLdTypes(htmlText, requiredTypes) { } } +function assertRepositoryJsonLdSignals(htmlText) { + const entries = extractJsonLdEntries(htmlText); + const repoUrl = 'https://github.com/sickn33/antigravity-awesome-skills'; + const sourceCode = entries.find((entry) => entry?.['@type'] === 'SoftwareSourceCode'); + const organization = entries.find((entry) => entry?.['@type'] === 'Organization'); + const collectionPage = entries.find((entry) => entry?.['@type'] === 'CollectionPage'); + + assert(sourceCode?.url === repoUrl, 'SoftwareSourceCode JSON-LD must use the GitHub repository as its URL.'); + assert(sourceCode?.codeRepository === repoUrl, 'SoftwareSourceCode JSON-LD must expose the GitHub repository.'); + assert( + typeof sourceCode?.mainEntityOfPage === 'string' && sourceCode.mainEntityOfPage.length > 0, + 'SoftwareSourceCode JSON-LD must link back to the hosted catalog page with mainEntityOfPage.', + ); + assert(organization?.url === repoUrl, 'Organization JSON-LD must use the GitHub repository as its URL.'); + assert(collectionPage?.sameAs === repoUrl, 'CollectionPage JSON-LD must link the hosted catalog to the GitHub repository.'); +} + export function assertIndexSocialMeta(htmlText) { assertMetaContent(htmlText, 'property', 'og:image'); assertMetaContent(htmlText, 'name', 'twitter:image'); @@ -259,10 +276,11 @@ export function assertIndexDiscoveryMeta(htmlText) { twitterDescription, ].join(' '); - assert(combined.includes('1,494+'), 'Home SEO metadata must expose the current 1,494+ skill count.'); + assert(combined.includes('1,508+'), 'Home SEO metadata must expose the current 1,508+ skill count.'); assert(combined.includes('specialized plugins'), 'Home SEO metadata must mention specialized plugins.'); assert(!combined.includes('prompt templates'), 'Home SEO metadata must not use stale prompt-template positioning.'); assertJsonLdTypes(htmlText, ['CollectionPage', 'Organization', 'WebSite', 'SoftwareSourceCode', 'FAQPage']); + assertRepositoryJsonLdSignals(htmlText); } export function assertPluginsDiscoveryMeta(htmlText) { @@ -326,11 +344,12 @@ export function assertLlms(llmsText) { const text = String(llmsText ?? ''); const requiredSnippets = [ '# Antigravity Awesome Skills', - '1,494+', + '1,508+', 'specialized plugins', 'Claude Code', 'Codex CLI', 'https://github.com/sickn33/antigravity-awesome-skills', + 'Canonical source of truth', ]; for (const snippet of requiredSnippets) { diff --git a/antigravity-awesome-skills/apps/web-app/scripts/verify-seo-assets.test.js b/antigravity-awesome-skills/apps/web-app/scripts/verify-seo-assets.test.js index d45e2ca5..49b8d383 100644 --- a/antigravity-awesome-skills/apps/web-app/scripts/verify-seo-assets.test.js +++ b/antigravity-awesome-skills/apps/web-app/scripts/verify-seo-assets.test.js @@ -78,8 +78,9 @@ describe('seo assets verification helpers', () => { it('requires llms.txt discovery signals', () => { const llms = ` # Antigravity Awesome Skills - 1,494+ agentic skills with specialized plugins for Claude Code and Codex CLI. + 1,508+ agentic skills with specialized plugins for Claude Code and Codex CLI. https://github.com/sickn33/antigravity-awesome-skills + Canonical source of truth: the GitHub repository is the primary project URL. `; expect(() => assertLlms(llms)).not.toThrow(); @@ -103,18 +104,18 @@ describe('seo assets verification helpers', () => { const html = ` - Antigravity Awesome Skills | 1,494+ AI coding skills and plugins - - - - - + Antigravity Awesome Skills | 1,508+ AI coding skills and plugins + + + + + diff --git a/antigravity-awesome-skills/apps/web-app/src/pages/Home.tsx b/antigravity-awesome-skills/apps/web-app/src/pages/Home.tsx index 2d18fc60..d0952885 100644 --- a/antigravity-awesome-skills/apps/web-app/src/pages/Home.tsx +++ b/antigravity-awesome-skills/apps/web-app/src/pages/Home.tsx @@ -69,6 +69,7 @@ export function Home(): React.ReactElement { const [syncMsg, setSyncMsg] = useState(null); const [commandCopied, setCommandCopied] = useState(false); const installCommand = 'npx antigravity-awesome-skills'; + const repositoryLink = 'https://github.com/sickn33/antigravity-awesome-skills'; const docsLink = 'https://github.com/sickn33/antigravity-awesome-skills/blob/main/docs/users/usage.md'; const installLink = 'https://www.npmjs.com/package/antigravity-awesome-skills'; const faqItems = getHomeFaqItems(); @@ -172,11 +173,20 @@ export function Home(): React.ReactElement { Build agent workflows with production-grade skill playbooks

- Antigravity Awesome Skills is a curated catalog of installable capabilities for AI assistants. - Search fast, shortlist by category, and launch your first tested workflow from one focused workspace. + Antigravity Awesome Skills is a curated catalog for the official GitHub repository of installable + capabilities for AI assistants. Search fast, shortlist by category, and launch your first tested + workflow from one focused workspace.

+ + Open the GitHub repository + +} + +// Export as compound component +const Composer = { + Provider: ComposerProvider, + Frame: ComposerFrame, + Input: ComposerInput, + Submit: ComposerSubmit, + Header: ComposerHeader, + Footer: ComposerFooter, + Attachments: ComposerAttachments, + Formatting: ComposerFormatting, + Emojis: ComposerEmojis, +} +``` + +**Usage:** + +```tsx + + + + + + + + + + +``` + +Consumers explicitly compose exactly what they need. No hidden conditionals. And the state, actions and meta are dependency-injected by a parent provider, allowing multiple usages of the same component structure. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/patterns-children-over-render-props.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/patterns-children-over-render-props.md new file mode 100644 index 00000000..d4345ee3 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/patterns-children-over-render-props.md @@ -0,0 +1,87 @@ +--- +title: Prefer Composing Children Over Render Props +impact: MEDIUM +impactDescription: cleaner composition, better readability +tags: composition, children, render-props +--- + +## Prefer Children Over Render Props + +Use `children` for composition instead of `renderX` props. Children are more +readable, compose naturally, and don't require understanding callback +signatures. + +**Incorrect (render props):** + +```tsx +function Composer({ + renderHeader, + renderFooter, + renderActions, +}: { + renderHeader?: () => React.ReactNode + renderFooter?: () => React.ReactNode + renderActions?: () => React.ReactNode +}) { + return ( +
+ {renderHeader?.()} + + {renderFooter ? renderFooter() : } + {renderActions?.()} + + ) +} + +// Usage is awkward and inflexible +return ( + } + renderFooter={() => ( + <> + + + + )} + renderActions={() => } + /> +) +``` + +**Correct (compound components with children):** + +```tsx +function ComposerFrame({ children }: { children: React.ReactNode }) { + return
{children}
+} + +function ComposerFooter({ children }: { children: React.ReactNode }) { + return
{children}
+} + +// Usage is flexible +return ( + + + + + + + + + +) +``` + +**When render props are appropriate:** + +```tsx +// Render props work well when you need to pass data back + } +/> +``` + +Use render props when the parent needs to provide data or state to the child. +Use children when composing static structure. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/patterns-explicit-variants.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/patterns-explicit-variants.md new file mode 100644 index 00000000..56e32e8b --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/patterns-explicit-variants.md @@ -0,0 +1,100 @@ +--- +title: Create Explicit Component Variants +impact: MEDIUM +impactDescription: self-documenting code, no hidden conditionals +tags: composition, variants, architecture +--- + +## Create Explicit Component Variants + +Instead of one component with many boolean props, create explicit variant +components. Each variant composes the pieces it needs. The code documents +itself. + +**Incorrect (one component, many modes):** + +```tsx +// What does this component actually render? + +``` + +**Correct (explicit variants):** + +```tsx +// Immediately clear what this renders + + +// Or + + +// Or + +``` + +Each implementation is unique, explicit and self-contained. Yet they can each +use shared parts. + +**Implementation:** + +```tsx +function ThreadComposer({ channelId }: { channelId: string }) { + return ( + + + + + + + + + + + + ) +} + +function EditMessageComposer({ messageId }: { messageId: string }) { + return ( + + + + + + + + + + + + ) +} + +function ForwardMessageComposer({ messageId }: { messageId: string }) { + return ( + + + + + + + + + + + ) +} +``` + +Each variant is explicit about: + +- What provider/state it uses +- What UI elements it includes +- What actions are available + +No boolean prop combinations to reason about. No impossible states. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/react19-no-forwardref.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/react19-no-forwardref.md new file mode 100644 index 00000000..e0d8f8a7 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/react19-no-forwardref.md @@ -0,0 +1,42 @@ +--- +title: React 19 API Changes +impact: MEDIUM +impactDescription: cleaner component definitions and context usage +tags: react19, refs, context, hooks +--- + +## React 19 API Changes + +> **⚠️ React 19+ only.** Skip this if you're on React 18 or earlier. + +In React 19, `ref` is now a regular prop (no `forwardRef` wrapper needed), and `use()` replaces `useContext()`. + +**Incorrect (forwardRef in React 19):** + +```tsx +const ComposerInput = forwardRef((props, ref) => { + return +}) +``` + +**Correct (ref as a regular prop):** + +```tsx +function ComposerInput({ ref, ...props }: Props & { ref?: React.Ref }) { + return +} +``` + +**Incorrect (useContext in React 19):** + +```tsx +const value = useContext(MyContext) +``` + +**Correct (use instead of useContext):** + +```tsx +const value = use(MyContext) +``` + +`use()` can also be called conditionally, unlike `useContext()`. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-context-interface.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-context-interface.md new file mode 100644 index 00000000..d961bede --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-context-interface.md @@ -0,0 +1,191 @@ +--- +title: Define Generic Context Interfaces for Dependency Injection +impact: HIGH +impactDescription: enables dependency-injectable state across use-cases +tags: composition, context, state, typescript, dependency-injection +--- + +## Define Generic Context Interfaces for Dependency Injection + +Define a **generic interface** for your component context with three parts: +`state`, `actions`, and `meta`. This interface is a contract that any provider +can implement—enabling the same UI components to work with completely different +state implementations. + +**Core principle:** Lift state, compose internals, make state +dependency-injectable. + +**Incorrect (UI coupled to specific state implementation):** + +```tsx +function ComposerInput() { + // Tightly coupled to a specific hook + const { input, setInput } = useChannelComposerState() + return +} +``` + +**Correct (generic interface enables dependency injection):** + +```tsx +// Define a GENERIC interface that any provider can implement +interface ComposerState { + input: string + attachments: Attachment[] + isSubmitting: boolean +} + +interface ComposerActions { + update: (updater: (state: ComposerState) => ComposerState) => void + submit: () => void +} + +interface ComposerMeta { + inputRef: React.RefObject +} + +interface ComposerContextValue { + state: ComposerState + actions: ComposerActions + meta: ComposerMeta +} + +const ComposerContext = createContext(null) +``` + +**UI components consume the interface, not the implementation:** + +```tsx +function ComposerInput() { + const { + state, + actions: { update }, + meta, + } = use(ComposerContext) + + // This component works with ANY provider that implements the interface + return ( + update((s) => ({ ...s, input: text }))} + /> + ) +} +``` + +**Different providers implement the same interface:** + +```tsx +// Provider A: Local state for ephemeral forms +function ForwardMessageProvider({ children }: { children: React.ReactNode }) { + const [state, setState] = useState(initialState) + const inputRef = useRef(null) + const submit = useForwardMessage() + + return ( + + {children} + + ) +} + +// Provider B: Global synced state for channels +function ChannelProvider({ channelId, children }: Props) { + const { state, update, submit } = useGlobalChannel(channelId) + const inputRef = useRef(null) + + return ( + + {children} + + ) +} +``` + +**The same composed UI works with both:** + +```tsx +// Works with ForwardMessageProvider (local state) + + + + + + + +// Works with ChannelProvider (global synced state) + + + + + + +``` + +**Custom UI outside the component can access state and actions:** + +The provider boundary is what matters—not the visual nesting. Components that +need shared state don't have to be inside the `Composer.Frame`. They just need +to be within the provider. + +```tsx +function ForwardMessageDialog() { + return ( + + + {/* The composer UI */} + + + + + + + + + {/* Custom UI OUTSIDE the composer, but INSIDE the provider */} + + + {/* Actions at the bottom of the dialog */} + + + + + + + ) +} + +// This button lives OUTSIDE Composer.Frame but can still submit based on its context! +function ForwardButton() { + const { + actions: { submit }, + } = use(ComposerContext) + return +} + +// This preview lives OUTSIDE Composer.Frame but can read composer's state! +function MessagePreview() { + const { state } = use(ComposerContext) + return +} +``` + +The `ForwardButton` and `MessagePreview` are not visually inside the composer +box, but they can still access its state and actions. This is the power of +lifting state into providers. + +The UI is reusable bits you compose together. The state is dependency-injected +by the provider. Swap the provider, keep the UI. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-decouple-implementation.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-decouple-implementation.md new file mode 100644 index 00000000..71a5afaa --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-decouple-implementation.md @@ -0,0 +1,113 @@ +--- +title: Decouple State Management from UI +impact: MEDIUM +impactDescription: enables swapping state implementations without changing UI +tags: composition, state, architecture +--- + +## Decouple State Management from UI + +The provider component should be the only place that knows how state is managed. +UI components consume the context interface—they don't know if state comes from +useState, Zustand, or a server sync. + +**Incorrect (UI coupled to state implementation):** + +```tsx +function ChannelComposer({ channelId }: { channelId: string }) { + // UI component knows about global state implementation + const state = useGlobalChannelState(channelId) + const { submit, updateInput } = useChannelSync(channelId) + + return ( + + sync.updateInput(text)} + /> + sync.submit()} /> + + ) +} +``` + +**Correct (state management isolated in provider):** + +```tsx +// Provider handles all state management details +function ChannelProvider({ + channelId, + children, +}: { + channelId: string + children: React.ReactNode +}) { + const { state, update, submit } = useGlobalChannel(channelId) + const inputRef = useRef(null) + + return ( + + {children} + + ) +} + +// UI component only knows about the context interface +function ChannelComposer() { + return ( + + + + + + + + ) +} + +// Usage +function Channel({ channelId }: { channelId: string }) { + return ( + + + + ) +} +``` + +**Different providers, same UI:** + +```tsx +// Local state for ephemeral forms +function ForwardMessageProvider({ children }) { + const [state, setState] = useState(initialState) + const forwardMessage = useForwardMessage() + + return ( + + {children} + + ) +} + +// Global synced state for channels +function ChannelProvider({ channelId, children }) { + const { state, update, submit } = useGlobalChannel(channelId) + + return ( + + {children} + + ) +} +``` + +The same `Composer.Input` component works with both providers because it only +depends on the context interface, not the implementation. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-lift-state.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-lift-state.md new file mode 100644 index 00000000..d7fe27b5 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/composition-patterns/rules/state-lift-state.md @@ -0,0 +1,125 @@ +--- +title: Lift State into Provider Components +impact: HIGH +impactDescription: enables state sharing outside component boundaries +tags: composition, state, context, providers +--- + +## Lift State into Provider Components + +Move state management into dedicated provider components. This allows sibling +components outside the main UI to access and modify state without prop drilling +or awkward refs. + +**Incorrect (state trapped inside component):** + +```tsx +function ForwardMessageComposer() { + const [state, setState] = useState(initialState) + const forwardMessage = useForwardMessage() + + return ( + + + + + ) +} + +// Problem: How does this button access composer state? +function ForwardMessageDialog() { + return ( + + + {/* Needs composer state */} + + + {/* Needs to call submit */} + + + ) +} +``` + +**Incorrect (useEffect to sync state up):** + +```tsx +function ForwardMessageDialog() { + const [input, setInput] = useState('') + return ( + + + + + ) +} + +function ForwardMessageComposer({ onInputChange }) { + const [state, setState] = useState(initialState) + useEffect(() => { + onInputChange(state.input) // Sync on every change 😬 + }, [state.input]) +} +``` + +**Incorrect (reading state from ref on submit):** + +```tsx +function ForwardMessageDialog() { + const stateRef = useRef(null) + return ( + + + submit(stateRef.current)} /> + + ) +} +``` + +**Correct (state lifted to provider):** + +```tsx +function ForwardMessageProvider({ children }: { children: React.ReactNode }) { + const [state, setState] = useState(initialState) + const forwardMessage = useForwardMessage() + const inputRef = useRef(null) + + return ( + + {children} + + ) +} + +function ForwardMessageDialog() { + return ( + + + + {/* Custom components can access state and actions */} + + + {/* Custom components can access state and actions */} + + + + ) +} + +function ForwardButton() { + const { actions } = use(Composer.Context) + return +} +``` + +The ForwardButton lives outside the Composer.Frame but still has access to the +submit action because it's within the provider. Even though it's a one-off +component, it can still access the composer's state and actions from outside the +UI itself. + +**Key insight:** Components that need shared state don't have to be visually +nested inside each other—they just need to be within the same provider. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/debugging-toolkit/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/debugging-toolkit/SKILL.md new file mode 100644 index 00000000..2dcb2c18 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/debugging-toolkit/SKILL.md @@ -0,0 +1,35 @@ +--- +name: debugging-toolkit +description: "Use when working with debugging toolkit smart debug (Alias for debugging-toolkit-smart-debug)" +risk: unknown +source: "alias" +date_added: "2026-06-02" +--- + +# Debugging Toolkit + +> **This is an alias.** The canonical skill is **`debugging-toolkit-smart-debug`**. + +This skill redirects to `debugging-toolkit-smart-debug`. Load it from the vault: + +`skill-libraries/code-quality/debugging-toolkit-smart-debug/SKILL.md` + +## When to Use +- Use this skill when working with debugging toolkit smart debug (Alias for debugging-toolkit-smart-debug) + +## Why this alias exists + +Users commonly search for `debugging-toolkit` but the full skill name in this collection is `debugging-toolkit-smart-debug`. This alias ensures discoverability. + +## Limitations +- Use this skill only when the task clearly matches the scope described above. +- Do not treat the output as a substitute for environment-specific validation, testing, or expert review. +- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing. + +## Examples +```text +Use @debugging-toolkit for this task: Use when working with debugging toolkit smart debug (Alias for debugging-toolkit-smart-debug). + +Apply the skill to my current work and walk me through the safest next steps, +key checks, and the concrete output I should produce. +``` diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/SKILL.md new file mode 100644 index 00000000..9390e933 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/SKILL.md @@ -0,0 +1,304 @@ +--- +name: deploy-to-vercel +description: "Deploy applications and websites to Vercel. Use when the user requests deployment actions like \"deploy my app\", \"deploy and give me the link\", \"push this live\", or \"create a preview deployment\"." +risk: safe +source: "https://github.com/vercel-labs/agent-skills" +date_added: "2026-06-02" +--- + +# Deploy to Vercel + +Deploy any project to Vercel. **Always deploy as preview** (not production) unless the user explicitly asks for production. + +The goal is to get the user into the best long-term setup: their project linked to Vercel with git-push deploys. Every method below tries to move the user closer to that state. + +## When to Use +- Use this skill when the task matches this description: Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment". + +## Step 1: Gather Project State + +Run all four checks before deciding which method to use: + +```bash +# 1. Check for a git remote +git remote get-url origin 2>/dev/null + +# 2. Check if locally linked to a Vercel project (either file means linked) +cat .vercel/project.json 2>/dev/null || cat .vercel/repo.json 2>/dev/null + +# 3. Check if the Vercel CLI is installed and authenticated +vercel whoami 2>/dev/null + +# 4. List available teams (if authenticated) +vercel teams list --format json 2>/dev/null +``` + +### Team selection + +If the user belongs to multiple teams, present all available team slugs as a bulleted list and ask which one to deploy to. Once the user picks a team, proceed immediately to the next step — do not ask for additional confirmation. + +Pass the team slug via `--scope` on all subsequent CLI commands (`vercel deploy`, `vercel link`, `vercel inspect`, etc.): + +```bash +vercel deploy [path] -y --no-wait --scope +``` + +If the project is already linked (`.vercel/project.json` or `.vercel/repo.json` exists), the `orgId` in those files determines the team — no need to ask again. If there is only one team (or just a personal account), skip the prompt and use it directly. + +**About the `.vercel/` directory:** A linked project has either: +- `.vercel/project.json` — created by `vercel link` (single project linking). Contains `projectId` and `orgId`. +- `.vercel/repo.json` — created by `vercel link --repo` (repo-based linking). Contains `orgId`, `remoteName`, and a `projects` array mapping directories to Vercel project IDs. + +Either file means the project is linked. Check for both. + +**Do NOT** use `vercel project inspect`, `vercel ls`, or `vercel link` to detect state in an unlinked directory — without a `.vercel/` config, they will interactively prompt (or with `--yes`, silently link as a side-effect). Only `vercel whoami` is safe to run anywhere. + +## Step 2: Choose a Deploy Method + +### Linked (`.vercel/` exists) + has git remote → Git Push + +This is the ideal state. The project is linked and has git integration. + +1. **Ask the user before pushing.** Never push without explicit approval: + ``` + This project is connected to Vercel via git. I can commit and push to + trigger a deployment. Want me to proceed? + ``` + +2. **Commit and push:** + ```bash + git add . + git commit -m "deploy: " + git push + ``` + Vercel automatically builds from the push. Non-production branches get preview deployments; the production branch (usually `main`) gets a production deployment. + +3. **Retrieve the preview URL.** If the CLI is authenticated: + ```bash + sleep 5 + vercel ls --format json + ``` + The JSON output has a `deployments` array. Find the latest entry — its `url` field is the preview URL. + + If the CLI is not authenticated, tell the user to check the Vercel dashboard or the commit status checks on their git provider for the preview URL. + +--- + +### Linked (`.vercel/` exists) + no git remote → `vercel deploy` + +The project is linked but there's no git repo. Deploy directly with the CLI. + +```bash +vercel deploy [path] -y --no-wait +``` + +Use `--no-wait` so the CLI returns immediately with the deployment URL instead of blocking until the build finishes (builds can take a while). Then check on the deployment status with: + +```bash +vercel inspect +``` + +For production deploys (only if user explicitly asks): +```bash +vercel deploy [path] --prod -y --no-wait +``` + +--- + +### Not linked + CLI is authenticated → Link first, then deploy + +The CLI is working but the project isn't linked yet. This is the opportunity to get the user into the best state. + +1. **Ask the user which team to deploy to.** Present the team slugs from Step 1 as a bulleted list. If there's only one team (or just a personal account), skip this step. + +2. **Once a team is selected, proceed directly to linking.** Tell the user what will happen but do not ask for separate confirmation: + ``` + Linking this project to on Vercel. This will create a Vercel + project to deploy to and enable automatic deployments on future git pushes. + ``` + +3. **If a git remote exists**, use repo-based linking with the selected team scope: + ```bash + vercel link --repo --scope + ``` + This reads the git remote URL and matches it to existing Vercel projects that deploy from that repo. It creates `.vercel/repo.json`. This is much more reliable than `vercel link` (without `--repo`), which tries to match by directory name and often fails when the local folder and Vercel project are named differently. + + **If there is no git remote**, fall back to standard linking: + ```bash + vercel link --scope + ``` + This prompts the user to select or create a project. It creates `.vercel/project.json`. + +4. **Then deploy using the best available method:** + - If a git remote exists → commit and push (see git push method above) + - If no git remote → `vercel deploy [path] -y --no-wait --scope `, then `vercel inspect ` to check status + +--- + +### Not linked + CLI not authenticated → Install, auth, link, deploy + +The Vercel CLI isn't set up at all. + +1. **Install the CLI (if not already installed):** + ```bash + npm install -g vercel + ``` + +2. **Authenticate:** + ```bash + vercel login + ``` + The user completes auth in their browser. If running in a non-interactive environment where login is not possible, skip to the **no-auth fallback** below. + +3. **Ask which team to deploy to** — present team slugs from `vercel teams list --format json` as a bulleted list. If only one team / personal account, skip. Once selected, proceed immediately. + +4. **Link the project** with the selected team scope (use `--repo` if a git remote exists, plain `vercel link` otherwise): + ```bash + vercel link --repo --scope # if git remote exists + vercel link --scope # if no git remote + ``` + +5. **Deploy** using the best available method (git push if remote exists, otherwise `vercel deploy -y --no-wait --scope `, then `vercel inspect ` to check status). + +--- + +### No-Auth Fallback — claude.ai sandbox + +**When to use:** Last resort when the CLI can't be installed or authenticated in the claude.ai sandbox. This requires no authentication — it returns a **Preview URL** (live site) and a **Claim URL** (transfer to your Vercel account). + +```bash +bash /mnt/skills/user/deploy-to-vercel/resources/deploy.sh [path] +``` + +**Arguments:** +- `path` - Directory to deploy, or a `.tgz` file (defaults to current directory) + +**Examples:** +```bash +# Deploy current directory +bash /mnt/skills/user/deploy-to-vercel/resources/deploy.sh + +# Deploy specific project +bash /mnt/skills/user/deploy-to-vercel/resources/deploy.sh /path/to/project + +# Deploy existing tarball +bash /mnt/skills/user/deploy-to-vercel/resources/deploy.sh /path/to/project.tgz +``` + +The script auto-detects the framework from `package.json`, packages the project (excluding `node_modules`, `.git`, `.env`), uploads it, and waits for the build to complete. + +**Tell the user:** "Your deployment is ready at [previewUrl]. Claim it at [claimUrl] to manage your deployment." + +--- + +### No-Auth Fallback — Codex sandbox + +**When to use:** In the Codex sandbox where the CLI may not be authenticated. Codex runs in a sandboxed environment by default — try the CLI first, and fall back to the deploy script if auth fails. + +1. **Check whether the Vercel CLI is installed** (no escalation needed for this check): + ```bash + command -v vercel + ``` + +2. **If `vercel` is installed**, try deploying with the CLI: + ```bash + vercel deploy [path] -y --no-wait + ``` + +3. **If `vercel` is not installed, or the CLI fails with "No existing credentials found"**, use the fallback script: + ```bash + skill_dir="" + + # Deploy current directory + bash "$skill_dir/resources/deploy-codex.sh" + + # Deploy specific project + bash "$skill_dir/resources/deploy-codex.sh" /path/to/project + + # Deploy existing tarball + bash "$skill_dir/resources/deploy-codex.sh" /path/to/project.tgz + ``` + +The script handles framework detection, packaging, and deployment. It waits for the build to complete and returns JSON with `previewUrl` and `claimUrl`. + +**Tell the user:** "Your deployment is ready at [previewUrl]. Claim it at [claimUrl] to manage your deployment." + +**Escalated network access:** Only escalate the actual deploy command if sandboxing blocks the network call (`sandbox_permissions=require_escalated`). Do **not** escalate the `command -v vercel` check. + +--- + +## Agent-Specific Notes + +### Claude Code / terminal-based agents + +You have full shell access. Do NOT use the `/mnt/skills/` path. Follow the decision flow above using the CLI directly. + +For the no-auth fallback, run the deploy script from the skill's installed location: +```bash +bash ~/.claude/skills/deploy-to-vercel/resources/deploy.sh [path] +``` +The path may vary depending on where the user installed the skill. + +### Sandboxed environments (claude.ai) + +You likely cannot run `vercel login` or `git push`. Go directly to the **no-auth fallback — claude.ai sandbox**. + +### Codex + +Codex runs in a sandbox. Check if the CLI is available first, then fall back to the deploy script. Go to the **no-auth fallback — Codex sandbox**. + +--- + +## Output + +Always show the user the deployment URL. + +- **Git push:** Use `vercel ls --format json` to find the preview URL. If the CLI isn't authenticated, tell the user to check the Vercel dashboard or commit status checks. +- **CLI deploy:** Show the URL returned by `vercel deploy --no-wait`. Use `vercel inspect ` to check build status and report it to the user. +- **No-auth fallback:** Show both the preview URL and the claim URL: + ``` + Deployment successful! + + Preview URL: https://my-app-abc123.vercel.app + Claim URL: https://vercel.com/claim-deployment?code=... + + View your site at the Preview URL. + To transfer this deployment to your Vercel account, visit the Claim URL. + ``` + +**Do not** curl or fetch the deployed URL to verify it works. Just return the link. + +--- + +## Troubleshooting + +### Network Egress Error (claude.ai) + +If deployment fails due to network restrictions on claude.ai, tell the user: + +``` +Deployment failed due to network restrictions. To fix this: + +1. Go to https://claude.ai/settings/capabilities +2. Add *.vercel.com to the allowed domains +3. Try deploying again +``` + +### Escalated Network Access (Codex / sandboxed environments) + +If deployment fails due to network issues (timeouts, DNS errors, connection resets) in a sandboxed environment, rerun with escalated permissions (`sandbox_permissions=require_escalated`). Do not escalate the initial CLI availability check — only escalate the actual deploy command. + +Example guidance to the user: +``` +The deploy needs escalated network access to deploy to Vercel. I can rerun +the command with escalated permissions — want me to proceed? +``` + +### CLI Auth Failure + +If `vercel login` or `vercel deploy` fails with authentication errors, fall back to the no-auth deploy script (claude.ai or Codex variant, depending on the environment). + +## Limitations +- Use this skill only when the task clearly matches the scope described above. +- Do not treat the output as a substitute for environment-specific validation, testing, or expert review. +- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/resources/deploy-codex.sh b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/resources/deploy-codex.sh new file mode 100755 index 00000000..af07d0fd --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/resources/deploy-codex.sh @@ -0,0 +1,301 @@ +#!/bin/bash + +# Vercel Deployment Script for Codex (via claimable deploy endpoint) +# Usage: ./deploy-codex.sh [project-path] +# Returns: JSON with previewUrl, claimUrl, deploymentId, projectId + +set -euo pipefail + +DEPLOY_ENDPOINT="https://codex-deploy-skills.vercel.sh/api/deploy" + +# Detect framework from package.json +detect_framework() { + local pkg_json="$1" + + if [ ! -f "$pkg_json" ]; then + echo "null" + return + fi + + local content=$(cat "$pkg_json") + + # Helper to check if a package exists in dependencies or devDependencies. + # Use exact matching by default, with a separate prefix matcher for scoped + # package families like "@remix-run/". + has_dep_exact() { + echo "$content" | grep -q "\"$1\"" + } + + has_dep_prefix() { + echo "$content" | grep -q "\"$1" + } + + # Order matters - check more specific frameworks first + + # Blitz + if has_dep_exact "blitz"; then echo "blitzjs"; return; fi + + # Next.js + if has_dep_exact "next"; then echo "nextjs"; return; fi + + # Gatsby + if has_dep_exact "gatsby"; then echo "gatsby"; return; fi + + # Remix + if has_dep_prefix "@remix-run/"; then echo "remix"; return; fi + + # React Router (v7 framework mode) + if has_dep_prefix "@react-router/"; then echo "react-router"; return; fi + + # TanStack Start + if has_dep_exact "@tanstack/start"; then echo "tanstack-start"; return; fi + + # Astro + if has_dep_exact "astro"; then echo "astro"; return; fi + + # Hydrogen (Shopify) + if has_dep_exact "@shopify/hydrogen"; then echo "hydrogen"; return; fi + + # SvelteKit + if has_dep_exact "@sveltejs/kit"; then echo "sveltekit-1"; return; fi + + # Svelte (standalone) + if has_dep_exact "svelte"; then echo "svelte"; return; fi + + # Nuxt + if has_dep_exact "nuxt"; then echo "nuxtjs"; return; fi + + # Vue with Vitepress + if has_dep_exact "vitepress"; then echo "vitepress"; return; fi + + # Vue with Vuepress + if has_dep_exact "vuepress"; then echo "vuepress"; return; fi + + # Gridsome + if has_dep_exact "gridsome"; then echo "gridsome"; return; fi + + # SolidStart + if has_dep_exact "@solidjs/start"; then echo "solidstart-1"; return; fi + + # Docusaurus + if has_dep_exact "@docusaurus/core"; then echo "docusaurus-2"; return; fi + + # RedwoodJS + if has_dep_prefix "@redwoodjs/"; then echo "redwoodjs"; return; fi + + # Hexo + if has_dep_exact "hexo"; then echo "hexo"; return; fi + + # Eleventy + if has_dep_exact "@11ty/eleventy"; then echo "eleventy"; return; fi + + # Angular / Ionic Angular + if has_dep_exact "@ionic/angular"; then echo "ionic-angular"; return; fi + if has_dep_exact "@angular/core"; then echo "angular"; return; fi + + # Ionic React + if has_dep_exact "@ionic/react"; then echo "ionic-react"; return; fi + + # Create React App + if has_dep_exact "react-scripts"; then echo "create-react-app"; return; fi + + # Ember + if has_dep_exact "ember-cli" || has_dep_exact "ember-source"; then echo "ember"; return; fi + + # Dojo + if has_dep_exact "@dojo/framework"; then echo "dojo"; return; fi + + # Polymer + if has_dep_prefix "@polymer/"; then echo "polymer"; return; fi + + # Preact + if has_dep_exact "preact"; then echo "preact"; return; fi + + # Stencil + if has_dep_exact "@stencil/core"; then echo "stencil"; return; fi + + # UmiJS + if has_dep_exact "umi"; then echo "umijs"; return; fi + + # Sapper (legacy Svelte) + if has_dep_exact "sapper"; then echo "sapper"; return; fi + + # Saber + if has_dep_exact "saber"; then echo "saber"; return; fi + + # Sanity + if has_dep_exact "sanity"; then echo "sanity-v3"; return; fi + if has_dep_prefix "@sanity/"; then echo "sanity"; return; fi + + # Storybook + if has_dep_prefix "@storybook/"; then echo "storybook"; return; fi + + # NestJS + if has_dep_exact "@nestjs/core"; then echo "nestjs"; return; fi + + # Elysia + if has_dep_exact "elysia"; then echo "elysia"; return; fi + + # Hono + if has_dep_exact "hono"; then echo "hono"; return; fi + + # Fastify + if has_dep_exact "fastify"; then echo "fastify"; return; fi + + # h3 + if has_dep_exact "h3"; then echo "h3"; return; fi + + # Nitro + if has_dep_exact "nitropack"; then echo "nitro"; return; fi + + # Express + if has_dep_exact "express"; then echo "express"; return; fi + + # Vite (generic - check last among JS frameworks) + if has_dep_exact "vite"; then echo "vite"; return; fi + + # Parcel + if has_dep_exact "parcel"; then echo "parcel"; return; fi + + # No framework detected + echo "null" +} + +# Parse arguments +INPUT_PATH="${1:-.}" + +# Create temp directory for packaging +TEMP_DIR=$(mktemp -d) +TARBALL="$TEMP_DIR/project.tgz" +STAGING_DIR="$TEMP_DIR/staging" +CLEANUP_TEMP=true + +cleanup() { + if [ "$CLEANUP_TEMP" = true ]; then + rm -rf "$TEMP_DIR" + fi +} +trap cleanup EXIT + +echo "Preparing deployment..." >&2 + +# Check if input is a .tgz file or a directory +FRAMEWORK="null" + +if [ -f "$INPUT_PATH" ] && [[ "$INPUT_PATH" == *.tgz ]]; then + # Input is already a tarball, use it directly + echo "Using provided tarball..." >&2 + TARBALL="$INPUT_PATH" + CLEANUP_TEMP=false + # Can't detect framework from tarball, leave as null +elif [ -d "$INPUT_PATH" ]; then + # Input is a directory, need to tar it + PROJECT_PATH=$(cd "$INPUT_PATH" && pwd) + + # Detect framework from package.json + FRAMEWORK=$(detect_framework "$PROJECT_PATH/package.json") + + # Stage files into a temporary directory to avoid mutating the source tree. + mkdir -p "$STAGING_DIR" + echo "Staging project files..." >&2 + tar -C "$PROJECT_PATH" \ + --exclude='node_modules' \ + --exclude='.git' \ + --exclude='.env' \ + --exclude='.env.*' \ + -cf - . | tar -C "$STAGING_DIR" -xf - + + # Check if this is a static HTML project (no package.json) + if [ ! -f "$PROJECT_PATH/package.json" ]; then + # Find HTML files in root + HTML_FILES=$(find "$STAGING_DIR" -maxdepth 1 -name "*.html" -type f) + HTML_COUNT=$(printf '%s\n' "$HTML_FILES" | sed '/^$/d' | wc -l | tr -d '[:space:]') + + # If there's exactly one HTML file and it's not index.html, rename it + if [ "$HTML_COUNT" -eq 1 ]; then + HTML_FILE=$(echo "$HTML_FILES" | head -1) + BASENAME=$(basename "$HTML_FILE") + if [ "$BASENAME" != "index.html" ]; then + echo "Renaming $BASENAME to index.html..." >&2 + mv "$HTML_FILE" "$STAGING_DIR/index.html" + fi + fi + fi + + # Create tarball from the staging directory + echo "Creating deployment package..." >&2 + tar -czf "$TARBALL" -C "$STAGING_DIR" . +else + echo "Error: Input must be a directory or a .tgz file" >&2 + exit 1 +fi + +if [ "$FRAMEWORK" != "null" ]; then + echo "Detected framework: $FRAMEWORK" >&2 +fi + +# Deploy +echo "Deploying..." >&2 +RESPONSE=$(curl -s -X POST "$DEPLOY_ENDPOINT" -F "file=@$TARBALL" -F "framework=$FRAMEWORK") + +# Check for error in response +if echo "$RESPONSE" | grep -q '"error"'; then + ERROR_MSG=$(echo "$RESPONSE" | grep -o '"error":"[^"]*"' | cut -d'"' -f4) + echo "Error: $ERROR_MSG" >&2 + exit 1 +fi + +# Extract URLs from response +PREVIEW_URL=$(echo "$RESPONSE" | grep -o '"previewUrl":"[^"]*"' | cut -d'"' -f4) +CLAIM_URL=$(echo "$RESPONSE" | grep -o '"claimUrl":"[^"]*"' | cut -d'"' -f4) + +if [ -z "$PREVIEW_URL" ]; then + echo "Error: Could not extract preview URL from response" >&2 + echo "$RESPONSE" >&2 + exit 1 +fi + +echo "Deployment started. Waiting for build to complete..." >&2 +echo "Preview URL: $PREVIEW_URL" >&2 + +# Poll the preview URL until it returns a non-5xx response (5xx = still building) +MAX_ATTEMPTS=60 # 5 minutes max (60 * 5 seconds) +ATTEMPT=0 + +while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do + HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$PREVIEW_URL") + + if [ "$HTTP_STATUS" -eq 200 ]; then + echo "" >&2 + echo "Deployment ready!" >&2 + break + elif [ "$HTTP_STATUS" -ge 500 ]; then + # 5xx means still building/deploying + echo "Building... (attempt $((ATTEMPT + 1))/$MAX_ATTEMPTS)" >&2 + sleep 5 + ATTEMPT=$((ATTEMPT + 1)) + elif [ "$HTTP_STATUS" -ge 400 ] && [ "$HTTP_STATUS" -lt 500 ]; then + # 4xx might be an error or the app itself returns 4xx - it's responding + echo "" >&2 + echo "Deployment ready (returned $HTTP_STATUS)!" >&2 + break + else + # Any other status, assume it's ready + echo "" >&2 + echo "Deployment ready!" >&2 + break + fi +done + +if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then + echo "" >&2 + echo "Warning: Timed out waiting for deployment, but it may still be building." >&2 +fi + +echo "" >&2 +echo "Preview URL: $PREVIEW_URL" >&2 +echo "Claim URL: $CLAIM_URL" >&2 +echo "" >&2 + +# Output JSON for programmatic use +echo "$RESPONSE" diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/resources/deploy.sh b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/resources/deploy.sh new file mode 100755 index 00000000..a458da63 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deploy-to-vercel/resources/deploy.sh @@ -0,0 +1,301 @@ +#!/bin/bash + +# Vercel Deployment Script (via claimable deploy endpoint) +# Usage: ./deploy.sh [project-path] +# Returns: JSON with previewUrl, claimUrl, deploymentId, projectId + +set -euo pipefail + +DEPLOY_ENDPOINT="https://claude-skills-deploy.vercel.com/api/deploy" + +# Detect framework from package.json +detect_framework() { + local pkg_json="$1" + + if [ ! -f "$pkg_json" ]; then + echo "null" + return + fi + + local content=$(cat "$pkg_json") + + # Helper to check if a package exists in dependencies or devDependencies. + # Use exact matching by default, with a separate prefix matcher for scoped + # package families like "@remix-run/". + has_dep_exact() { + echo "$content" | grep -q "\"$1\"" + } + + has_dep_prefix() { + echo "$content" | grep -q "\"$1" + } + + # Order matters - check more specific frameworks first + + # Blitz + if has_dep_exact "blitz"; then echo "blitzjs"; return; fi + + # Next.js + if has_dep_exact "next"; then echo "nextjs"; return; fi + + # Gatsby + if has_dep_exact "gatsby"; then echo "gatsby"; return; fi + + # Remix + if has_dep_prefix "@remix-run/"; then echo "remix"; return; fi + + # React Router (v7 framework mode) + if has_dep_prefix "@react-router/"; then echo "react-router"; return; fi + + # TanStack Start + if has_dep_exact "@tanstack/start"; then echo "tanstack-start"; return; fi + + # Astro + if has_dep_exact "astro"; then echo "astro"; return; fi + + # Hydrogen (Shopify) + if has_dep_exact "@shopify/hydrogen"; then echo "hydrogen"; return; fi + + # SvelteKit + if has_dep_exact "@sveltejs/kit"; then echo "sveltekit-1"; return; fi + + # Svelte (standalone) + if has_dep_exact "svelte"; then echo "svelte"; return; fi + + # Nuxt + if has_dep_exact "nuxt"; then echo "nuxtjs"; return; fi + + # Vue with Vitepress + if has_dep_exact "vitepress"; then echo "vitepress"; return; fi + + # Vue with Vuepress + if has_dep_exact "vuepress"; then echo "vuepress"; return; fi + + # Gridsome + if has_dep_exact "gridsome"; then echo "gridsome"; return; fi + + # SolidStart + if has_dep_exact "@solidjs/start"; then echo "solidstart-1"; return; fi + + # Docusaurus + if has_dep_exact "@docusaurus/core"; then echo "docusaurus-2"; return; fi + + # RedwoodJS + if has_dep_prefix "@redwoodjs/"; then echo "redwoodjs"; return; fi + + # Hexo + if has_dep_exact "hexo"; then echo "hexo"; return; fi + + # Eleventy + if has_dep_exact "@11ty/eleventy"; then echo "eleventy"; return; fi + + # Angular / Ionic Angular + if has_dep_exact "@ionic/angular"; then echo "ionic-angular"; return; fi + if has_dep_exact "@angular/core"; then echo "angular"; return; fi + + # Ionic React + if has_dep_exact "@ionic/react"; then echo "ionic-react"; return; fi + + # Create React App + if has_dep_exact "react-scripts"; then echo "create-react-app"; return; fi + + # Ember + if has_dep_exact "ember-cli" || has_dep_exact "ember-source"; then echo "ember"; return; fi + + # Dojo + if has_dep_exact "@dojo/framework"; then echo "dojo"; return; fi + + # Polymer + if has_dep_prefix "@polymer/"; then echo "polymer"; return; fi + + # Preact + if has_dep_exact "preact"; then echo "preact"; return; fi + + # Stencil + if has_dep_exact "@stencil/core"; then echo "stencil"; return; fi + + # UmiJS + if has_dep_exact "umi"; then echo "umijs"; return; fi + + # Sapper (legacy Svelte) + if has_dep_exact "sapper"; then echo "sapper"; return; fi + + # Saber + if has_dep_exact "saber"; then echo "saber"; return; fi + + # Sanity + if has_dep_exact "sanity"; then echo "sanity-v3"; return; fi + if has_dep_prefix "@sanity/"; then echo "sanity"; return; fi + + # Storybook + if has_dep_prefix "@storybook/"; then echo "storybook"; return; fi + + # NestJS + if has_dep_exact "@nestjs/core"; then echo "nestjs"; return; fi + + # Elysia + if has_dep_exact "elysia"; then echo "elysia"; return; fi + + # Hono + if has_dep_exact "hono"; then echo "hono"; return; fi + + # Fastify + if has_dep_exact "fastify"; then echo "fastify"; return; fi + + # h3 + if has_dep_exact "h3"; then echo "h3"; return; fi + + # Nitro + if has_dep_exact "nitropack"; then echo "nitro"; return; fi + + # Express + if has_dep_exact "express"; then echo "express"; return; fi + + # Vite (generic - check last among JS frameworks) + if has_dep_exact "vite"; then echo "vite"; return; fi + + # Parcel + if has_dep_exact "parcel"; then echo "parcel"; return; fi + + # No framework detected + echo "null" +} + +# Parse arguments +INPUT_PATH="${1:-.}" + +# Create temp directory for packaging +TEMP_DIR=$(mktemp -d) +TARBALL="$TEMP_DIR/project.tgz" +STAGING_DIR="$TEMP_DIR/staging" +CLEANUP_TEMP=true + +cleanup() { + if [ "$CLEANUP_TEMP" = true ]; then + rm -rf "$TEMP_DIR" + fi +} +trap cleanup EXIT + +echo "Preparing deployment..." >&2 + +# Check if input is a .tgz file or a directory +FRAMEWORK="null" + +if [ -f "$INPUT_PATH" ] && [[ "$INPUT_PATH" == *.tgz ]]; then + # Input is already a tarball, use it directly + echo "Using provided tarball..." >&2 + TARBALL="$INPUT_PATH" + CLEANUP_TEMP=false + # Can't detect framework from tarball, leave as null +elif [ -d "$INPUT_PATH" ]; then + # Input is a directory, need to tar it + PROJECT_PATH=$(cd "$INPUT_PATH" && pwd) + + # Detect framework from package.json + FRAMEWORK=$(detect_framework "$PROJECT_PATH/package.json") + + # Stage files into a temporary directory to avoid mutating the source tree. + mkdir -p "$STAGING_DIR" + echo "Staging project files..." >&2 + tar -C "$PROJECT_PATH" \ + --exclude='node_modules' \ + --exclude='.git' \ + --exclude='.env' \ + --exclude='.env.*' \ + -cf - . | tar -C "$STAGING_DIR" -xf - + + # Check if this is a static HTML project (no package.json) + if [ ! -f "$PROJECT_PATH/package.json" ]; then + # Find HTML files in root + HTML_FILES=$(find "$STAGING_DIR" -maxdepth 1 -name "*.html" -type f) + HTML_COUNT=$(printf '%s\n' "$HTML_FILES" | sed '/^$/d' | wc -l | tr -d '[:space:]') + + # If there's exactly one HTML file and it's not index.html, rename it + if [ "$HTML_COUNT" -eq 1 ]; then + HTML_FILE=$(echo "$HTML_FILES" | head -1) + BASENAME=$(basename "$HTML_FILE") + if [ "$BASENAME" != "index.html" ]; then + echo "Renaming $BASENAME to index.html..." >&2 + mv "$HTML_FILE" "$STAGING_DIR/index.html" + fi + fi + fi + + # Create tarball from the staging directory + echo "Creating deployment package..." >&2 + tar -czf "$TARBALL" -C "$STAGING_DIR" . +else + echo "Error: Input must be a directory or a .tgz file" >&2 + exit 1 +fi + +if [ "$FRAMEWORK" != "null" ]; then + echo "Detected framework: $FRAMEWORK" >&2 +fi + +# Deploy +echo "Deploying..." >&2 +RESPONSE=$(curl -s -X POST "$DEPLOY_ENDPOINT" -F "file=@$TARBALL" -F "framework=$FRAMEWORK") + +# Check for error in response +if echo "$RESPONSE" | grep -q '"error"'; then + ERROR_MSG=$(echo "$RESPONSE" | grep -o '"error":"[^"]*"' | cut -d'"' -f4) + echo "Error: $ERROR_MSG" >&2 + exit 1 +fi + +# Extract URLs from response +PREVIEW_URL=$(echo "$RESPONSE" | grep -o '"previewUrl":"[^"]*"' | cut -d'"' -f4) +CLAIM_URL=$(echo "$RESPONSE" | grep -o '"claimUrl":"[^"]*"' | cut -d'"' -f4) + +if [ -z "$PREVIEW_URL" ]; then + echo "Error: Could not extract preview URL from response" >&2 + echo "$RESPONSE" >&2 + exit 1 +fi + +echo "Deployment started. Waiting for build to complete..." >&2 +echo "Preview URL: $PREVIEW_URL" >&2 + +# Poll the preview URL until it returns a non-5xx response (5xx = still building) +MAX_ATTEMPTS=60 # 5 minutes max (60 * 5 seconds) +ATTEMPT=0 + +while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do + HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$PREVIEW_URL") + + if [ "$HTTP_STATUS" -eq 200 ]; then + echo "" >&2 + echo "Deployment ready!" >&2 + break + elif [ "$HTTP_STATUS" -ge 500 ]; then + # 5xx means still building/deploying + echo "Building... (attempt $((ATTEMPT + 1))/$MAX_ATTEMPTS)" >&2 + sleep 5 + ATTEMPT=$((ATTEMPT + 1)) + elif [ "$HTTP_STATUS" -ge 400 ] && [ "$HTTP_STATUS" -lt 500 ]; then + # 4xx might be an error or the app itself returns 4xx - it's responding + echo "" >&2 + echo "Deployment ready (returned $HTTP_STATUS)!" >&2 + break + else + # Any other status, assume it's ready + echo "" >&2 + echo "Deployment ready!" >&2 + break + fi +done + +if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then + echo "" >&2 + echo "Warning: Timed out waiting for deployment, but it may still be building." >&2 +fi + +echo "" >&2 +echo "Preview URL: $PREVIEW_URL" >&2 +echo "Claim URL: $CLAIM_URL" >&2 +echo "" >&2 + +# Output JSON for programmatic use +echo "$RESPONSE" diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/polis-protocol/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/polis-protocol/SKILL.md new file mode 100644 index 00000000..0b649630 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/polis-protocol/SKILL.md @@ -0,0 +1,93 @@ +--- +name: polis-protocol +description: "Coordinate multi-vendor AI agents as a self-improving team — a learning router assigns work by track record and citizens can amend the protocol's own rules." +category: orchestration +risk: safe +source: community +source_repo: yehudalevy-collab/polis-protocol +source_type: community +date_added: "2026-06-02" +author: yehudalevy-collab +tags: [multi-agent, coordination, routing, orchestration, governance, vendor-agnostic] +tools: [claude, cursor, gemini, codex, antigravity] +license: "MIT" +license_source: "https://github.com/yehudalevy-collab/polis-protocol/blob/main/LICENSE" +--- + +# Polis Protocol — a team of agents that develops + +## Overview + +Most agent coordination is a passive board: claim a task, do it, mark it done. It records, but it never gets smarter, and its rules are frozen. Polis Protocol is the active alternative — a folder of markdown where each agent is a "citizen" with a capability card, work is routed by a learning bandit to whoever has the best track record on the task's tags, settled work files lessons that update the routing, and citizens can propose and vote on amendments to the protocol itself. It is vendor-agnostic: Antigravity, Claude, Codex, and Gemini agents can all share one `_polis/`. + +In Antigravity specifically, this turns Manager View's fixed pipeline into a team that learns who is actually best at each kind of work, instead of running the same roles in the same order every time. + +## When to Use This Skill + +- Use when 2+ agents (especially across vendors) work on one project and "who should do this" is a real question. +- Use when you want the team to measurably improve over time — routing that adapts from outcomes, not static role labels. +- Use when you need a durable, git-auditable record of who did what, what was learned, and which rules changed. +- Use when Antigravity's default orchestration is too rigid and you want routing + governance on top of it. + +## How It Works + +### Step 1: Found a polis + +Clone the repo and run the scaffolder directly (review `install.sh` first if you prefer the one-line installer): + +```bash +git clone https://github.com/yehudalevy-collab/polis-protocol.git +python3 polis-protocol/scripts/init_polis.py \ + --project-root . \ + --agent-id gemini-antigravity-yourproject \ + --vendor google --model gemini-3 --tool antigravity +``` + +This writes `_polis/` plus the skill into `.antigravity/skills/`, and bridge pointers (`GEMINI.md`, `AGENTS.md`) that point every tool at `_polis/CONSTITUTION.md`. Tip: add `--dry-run` to preview every file before anything is written. + +### Step 2: Register citizens and open contracts + +Each agent publishes a capability card under `_polis/citizens/`. Work is opened as a contract with `required_tags`, not assigned to a fixed role. + +### Step 3: Route by track record + +```bash +python3 polis-protocol/scripts/route_contract.py --polis-root _polis \ + --contract _polis/contracts/open/your-task.md --explain +``` + +The router prints a score breakdown (history / self-rating / cost / availability) and recommends the citizen with the strongest record on the task's tags. + +### Step 4: Settle, learn, and amend + +A settled contract files a lesson; `--reconcile` folds it into `routing_stats.yml` so the next similar task routes better. When a rule stops working, a citizen proposes an amendment and the others vote. + +## Examples + +### Example 1: See the team learn (no install, 30 seconds) + +```bash +git clone https://github.com/yehudalevy-collab/polis-protocol.git +cd polis-protocol && bash scripts/demo.sh +``` + +The router recommends Gemini for a Spanish-translation contract — because settled work taught it she has the best record on that tag, not because anyone reassigned it. + +### Example 2: Explain any routing decision + +```bash +python3 scripts/route_contract.py --polis-root examples/research-team/_polis \ + --contract examples/research-team/_polis/contracts/open/parent-newsletter-issue-3.md --explain +``` + +## Notes + +- No server, no runtime, no database — the whole protocol is markdown plus two small Python scripts. +- Vendor-agnostic by design; a Claude or Codex agent can join the same polis an Antigravity agent created. +- Full Antigravity integration guide: https://github.com/yehudalevy-collab/polis-protocol/blob/main/docs/antigravity.md + +## Limitations + +- Routing quality depends on accurate citizen capability cards and enough settled work history to learn from. +- The protocol coordinates agent work but does not replace review, tests, or explicit maintainer approval. +- Multi-agent voting and amendments can add process overhead for small, single-owner tasks. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/python-development/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/python-development/SKILL.md new file mode 100644 index 00000000..084bf434 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/python-development/SKILL.md @@ -0,0 +1,35 @@ +--- +name: python-development +description: "You are a Python project architecture expert specializing in scaffolding production-ready Python applications. Generate complete project structures with modern tooling (uv, FastAPI, Django), type hint (Alias for python-development-python-scaffold)" +risk: critical +source: "alias" +date_added: "2026-06-02" +--- + +# Python Development + +> **This is an alias.** The canonical skill is **`python-development-python-scaffold`**. + +This skill redirects to `python-development-python-scaffold`. Load it from the vault: + +`skill-libraries/development/python-development-python-scaffold/SKILL.md` + +## When to Use +- Use this skill when the task matches this description: You are a Python project architecture expert specializing in scaffolding production-ready Python applications. Generate complete project structures with modern tooling (uv, FastAPI, Django), type hint (Alias for python-development-python-scaffold). + +## Why this alias exists + +Users commonly search for `python-development` but the full skill name in this collection is `python-development-python-scaffold`. This alias ensures discoverability. + +## Limitations +- Use this skill only when the task clearly matches the scope described above. +- Do not treat the output as a substitute for environment-specific validation, testing, or expert review. +- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing. + +## Examples +```text +Use @python-development for this task: You are a Python project architecture expert specializing in scaffolding production-ready Python applications. Generate complete project structures with modern tooling (uv, FastAPI, Django), type hint (Alias for python-development-python-scaffold). + +Apply the skill to my current work and walk me through the safest next steps, +key checks, and the concrete output I should produce. +``` diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/radix-ui-design-system/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/radix-ui-design-system/SKILL.md index fbc6bebe..e231f573 100644 --- a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/radix-ui-design-system/SKILL.md +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/radix-ui-design-system/SKILL.md @@ -768,8 +768,8 @@ const SelectItems = memo(({ items }) => ( shadcn/ui is a collection of copy-paste components built with Radix + Tailwind. ```bash -npx shadcn-ui@latest init -npx shadcn-ui@latest add dialog +npx shadcn@latest init +npx shadcn@latest add dialog ``` **When to use shadcn vs raw Radix**: diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/SKILL.md new file mode 100644 index 00000000..f4b5bb83 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/SKILL.md @@ -0,0 +1,120 @@ +--- +name: react-native-skills +description: "Use when working with react-native-skills tasks or workflows" +risk: safe +source: "https://github.com/vercel-labs/agent-skills" +date_added: "2026-06-02" +--- + +# React Native Skills + +Comprehensive best practices for React Native and Expo applications. Contains +rules across multiple categories covering performance, animations, UI patterns, +and platform-specific optimizations. + +## When to Use +Reference these guidelines when: + +- Building React Native or Expo apps +- Optimizing list and scroll performance +- Implementing animations with Reanimated +- Working with images and media +- Configuring native modules or fonts +- Structuring monorepo projects with native dependencies + +## Rule Categories by Priority + +| Priority | Category | Impact | Prefix | +| -------- | ---------------- | -------- | -------------------- | +| 1 | List Performance | CRITICAL | `list-performance-` | +| 2 | Animation | HIGH | `animation-` | +| 3 | Navigation | HIGH | `navigation-` | +| 4 | UI Patterns | HIGH | `ui-` | +| 5 | State Management | MEDIUM | `react-state-` | +| 6 | Rendering | MEDIUM | `rendering-` | +| 7 | Monorepo | MEDIUM | `monorepo-` | +| 8 | Configuration | LOW | `fonts-`, `imports-` | + +## Quick Reference + +### 1. List Performance (CRITICAL) + +- `list-performance-virtualize` - Use FlashList for large lists +- `list-performance-item-memo` - Memoize list item components +- `list-performance-callbacks` - Stabilize callback references +- `list-performance-inline-objects` - Avoid inline style objects +- `list-performance-function-references` - Extract functions outside render +- `list-performance-images` - Optimize images in lists +- `list-performance-item-expensive` - Move expensive work outside items +- `list-performance-item-types` - Use item types for heterogeneous lists + +### 2. Animation (HIGH) + +- `animation-gpu-properties` - Animate only transform and opacity +- `animation-derived-value` - Use useDerivedValue for computed animations +- `animation-gesture-detector-press` - Use Gesture.Tap instead of Pressable + +### 3. Navigation (HIGH) + +- `navigation-native-navigators` - Use native stack and native tabs over JS navigators + +### 4. UI Patterns (HIGH) + +- `ui-expo-image` - Use expo-image for all images +- `ui-image-gallery` - Use Galeria for image lightboxes +- `ui-pressable` - Use Pressable over TouchableOpacity +- `ui-safe-area-scroll` - Handle safe areas in ScrollViews +- `ui-scrollview-content-inset` - Use contentInset for headers +- `ui-menus` - Use native context menus +- `ui-native-modals` - Use native modals when possible +- `ui-measure-views` - Use onLayout, not measure() +- `ui-styling` - Use StyleSheet.create or Nativewind + +### 5. State Management (MEDIUM) + +- `react-state-minimize` - Minimize state subscriptions +- `react-state-dispatcher` - Use dispatcher pattern for callbacks +- `react-state-fallback` - Show fallback on first render +- `react-compiler-destructure-functions` - Destructure for React Compiler +- `react-compiler-reanimated-shared-values` - Handle shared values with compiler + +### 6. Rendering (MEDIUM) + +- `rendering-text-in-text-component` - Wrap text in Text components +- `rendering-no-falsy-and` - Avoid falsy && for conditional rendering + +### 7. Monorepo (MEDIUM) + +- `monorepo-native-deps-in-app` - Keep native dependencies in app package +- `monorepo-single-dependency-versions` - Use single versions across packages + +### 8. Configuration (LOW) + +- `fonts-config-plugin` - Use config plugins for custom fonts +- `imports-design-system-folder` - Organize design system imports +- `js-hoist-intl` - Hoist Intl object creation + +## How to Use + +Read individual rule files for detailed explanations and code examples: + +``` +rules/list-performance-virtualize.md +rules/animation-gpu-properties.md +``` + +Each rule file contains: + +- Brief explanation of why it matters +- Incorrect code example with explanation +- Correct code example with explanation +- Additional context and references + +## Full Compiled Document + +For the complete guide with all rules expanded: `AGENTS.md` + +## Limitations +- Use this skill only when the task clearly matches the scope described above. +- Do not treat the output as a substitute for environment-specific validation, testing, or expert review. +- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/_sections.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/_sections.md new file mode 100644 index 00000000..0519cf23 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/_sections.md @@ -0,0 +1,86 @@ +# Sections + +This file defines all sections, their ordering, impact levels, and descriptions. +The section ID (in parentheses) is the filename prefix used to group rules. + +--- + +## 1. Core Rendering (rendering) + +**Impact:** CRITICAL +**Description:** Fundamental React Native rendering rules. Violations cause +runtime crashes or broken UI. + +## 2. List Performance (list-performance) + +**Impact:** HIGH +**Description:** Optimizing virtualized lists (FlatList, LegendList, FlashList) +for smooth scrolling and fast updates. + +## 3. Animation (animation) + +**Impact:** HIGH +**Description:** GPU-accelerated animations, Reanimated patterns, and avoiding +render thrashing during gestures. + +## 4. Scroll Performance (scroll) + +**Impact:** HIGH +**Description:** Tracking scroll position without causing render thrashing. + +## 5. Navigation (navigation) + +**Impact:** HIGH +**Description:** Using native navigators for stack and tab navigation instead of +JS-based alternatives. + +## 6. React State (react-state) + +**Impact:** MEDIUM +**Description:** Patterns for managing React state to avoid stale closures and +unnecessary re-renders. + +## 7. State Architecture (state) + +**Impact:** MEDIUM +**Description:** Ground truth principles for state variables and derived values. + +## 8. React Compiler (react-compiler) + +**Impact:** MEDIUM +**Description:** Compatibility patterns for React Compiler with React Native and +Reanimated. + +## 9. User Interface (ui) + +**Impact:** MEDIUM +**Description:** Native UI patterns for images, menus, modals, styling, and +platform-consistent interfaces. + +## 10. Design System (design-system) + +**Impact:** MEDIUM +**Description:** Architecture patterns for building maintainable component +libraries. + +## 11. Monorepo (monorepo) + +**Impact:** LOW +**Description:** Dependency management and native module configuration in +monorepos. + +## 12. Third-Party Dependencies (imports) + +**Impact:** LOW +**Description:** Wrapping and re-exporting third-party dependencies for +maintainability. + +## 13. JavaScript (js) + +**Impact:** LOW +**Description:** Micro-optimizations like hoisting expensive object creation. + +## 14. Fonts (fonts) + +**Impact:** LOW +**Description:** Native font loading for improved performance. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/_template.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/_template.md new file mode 100644 index 00000000..1e9e7070 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/_template.md @@ -0,0 +1,28 @@ +--- +title: Rule Title Here +impact: MEDIUM +impactDescription: Optional description of impact (e.g., "20-50% improvement") +tags: tag1, tag2 +--- + +## Rule Title Here + +**Impact: MEDIUM (optional impact description)** + +Brief explanation of the rule and why it matters. This should be clear and concise, explaining the performance implications. + +**Incorrect (description of what's wrong):** + +```typescript +// Bad code example here +const bad = example() +``` + +**Correct (description of what's right):** + +```typescript +// Good code example here +const good = example() +``` + +Reference: [Link to documentation or resource](https://example.com) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-derived-value.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-derived-value.md new file mode 100644 index 00000000..310928a9 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-derived-value.md @@ -0,0 +1,53 @@ +--- +title: Prefer useDerivedValue Over useAnimatedReaction +impact: MEDIUM +impactDescription: cleaner code, automatic dependency tracking +tags: animation, reanimated, derived-value +--- + +## Prefer useDerivedValue Over useAnimatedReaction + +When deriving a shared value from another, use `useDerivedValue` instead of +`useAnimatedReaction`. Derived values are declarative, automatically track +dependencies, and return a value you can use directly. Animated reactions are +for side effects, not derivations. + +**Incorrect (useAnimatedReaction for derivation):** + +```tsx +import { useSharedValue, useAnimatedReaction } from 'react-native-reanimated' + +function MyComponent() { + const progress = useSharedValue(0) + const opacity = useSharedValue(1) + + useAnimatedReaction( + () => progress.value, + (current) => { + opacity.value = 1 - current + } + ) + + // ... +} +``` + +**Correct (useDerivedValue):** + +```tsx +import { useSharedValue, useDerivedValue } from 'react-native-reanimated' + +function MyComponent() { + const progress = useSharedValue(0) + + const opacity = useDerivedValue(() => 1 - progress.get()) + + // ... +} +``` + +Use `useAnimatedReaction` only for side effects that don't produce a value +(e.g., triggering haptics, logging, calling `runOnJS`). + +Reference: +[Reanimated useDerivedValue](https://docs.swmansion.com/react-native-reanimated/docs/core/useDerivedValue) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-gesture-detector-press.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-gesture-detector-press.md new file mode 100644 index 00000000..87c67827 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-gesture-detector-press.md @@ -0,0 +1,95 @@ +--- +title: Use GestureDetector for Animated Press States +impact: MEDIUM +impactDescription: UI thread animations, smoother press feedback +tags: animation, gestures, press, reanimated +--- + +## Use GestureDetector for Animated Press States + +For animated press states (scale, opacity on press), use `GestureDetector` with +`Gesture.Tap()` and shared values instead of Pressable's +`onPressIn`/`onPressOut`. Gesture callbacks run on the UI thread as worklets—no +JS thread round-trip for press animations. + +**Incorrect (Pressable with JS thread callbacks):** + +```tsx +import { Pressable } from 'react-native' +import Animated, { + useSharedValue, + useAnimatedStyle, + withTiming, +} from 'react-native-reanimated' + +function AnimatedButton({ onPress }: { onPress: () => void }) { + const scale = useSharedValue(1) + + const animatedStyle = useAnimatedStyle(() => ({ + transform: [{ scale: scale.value }], + })) + + return ( + (scale.value = withTiming(0.95))} + onPressOut={() => (scale.value = withTiming(1))} + > + + Press me + + + ) +} +``` + +**Correct (GestureDetector with UI thread worklets):** + +```tsx +import { Gesture, GestureDetector } from 'react-native-gesture-handler' +import Animated, { + useSharedValue, + useAnimatedStyle, + withTiming, + interpolate, + runOnJS, +} from 'react-native-reanimated' + +function AnimatedButton({ onPress }: { onPress: () => void }) { + // Store the press STATE (0 = not pressed, 1 = pressed) + const pressed = useSharedValue(0) + + const tap = Gesture.Tap() + .onBegin(() => { + pressed.set(withTiming(1)) + }) + .onFinalize(() => { + pressed.set(withTiming(0)) + }) + .onEnd(() => { + runOnJS(onPress)() + }) + + // Derive visual values from the state + const animatedStyle = useAnimatedStyle(() => ({ + transform: [ + { scale: interpolate(withTiming(pressed.get()), [0, 1], [1, 0.95]) }, + ], + })) + + return ( + + + Press me + + + ) +} +``` + +Store the press **state** (0 or 1), then derive the scale via `interpolate`. +This keeps the shared value as ground truth. Use `runOnJS` to call JS functions +from worklets. Use `.set()` and `.get()` for React Compiler compatibility. + +Reference: +[Gesture Handler Tap Gesture](https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/tap-gesture) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-gpu-properties.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-gpu-properties.md new file mode 100644 index 00000000..5fda0955 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/animation-gpu-properties.md @@ -0,0 +1,65 @@ +--- +title: Animate Transform and Opacity Instead of Layout Properties +impact: HIGH +impactDescription: GPU-accelerated animations, no layout recalculation +tags: animation, performance, reanimated, transform, opacity +--- + +## Animate Transform and Opacity Instead of Layout Properties + +Avoid animating `width`, `height`, `top`, `left`, `margin`, or `padding`. These trigger layout recalculation on every frame. Instead, use `transform` (scale, translate) and `opacity` which run on the GPU without triggering layout. + +**Incorrect (animates height, triggers layout every frame):** + +```tsx +import Animated, { useAnimatedStyle, withTiming } from 'react-native-reanimated' + +function CollapsiblePanel({ expanded }: { expanded: boolean }) { + const animatedStyle = useAnimatedStyle(() => ({ + height: withTiming(expanded ? 200 : 0), // triggers layout on every frame + overflow: 'hidden', + })) + + return {children} +} +``` + +**Correct (animates scaleY, GPU-accelerated):** + +```tsx +import Animated, { useAnimatedStyle, withTiming } from 'react-native-reanimated' + +function CollapsiblePanel({ expanded }: { expanded: boolean }) { + const animatedStyle = useAnimatedStyle(() => ({ + transform: [ + { scaleY: withTiming(expanded ? 1 : 0) }, + ], + opacity: withTiming(expanded ? 1 : 0), + })) + + return ( + + {children} + + ) +} +``` + +**Correct (animates translateY for slide animations):** + +```tsx +import Animated, { useAnimatedStyle, withTiming } from 'react-native-reanimated' + +function SlideIn({ visible }: { visible: boolean }) { + const animatedStyle = useAnimatedStyle(() => ({ + transform: [ + { translateY: withTiming(visible ? 0 : 100) }, + ], + opacity: withTiming(visible ? 1 : 0), + })) + + return {children} +} +``` + +GPU-accelerated properties: `transform` (translate, scale, rotate), `opacity`. Everything else triggers layout. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/design-system-compound-components.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/design-system-compound-components.md new file mode 100644 index 00000000..d8239ee1 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/design-system-compound-components.md @@ -0,0 +1,66 @@ +--- +title: Use Compound Components Over Polymorphic Children +impact: MEDIUM +impactDescription: flexible composition, clearer API +tags: design-system, components, composition +--- + +## Use Compound Components Over Polymorphic Children + +Don't create components that can accept a string if they aren't a text node. If +a component can receive a string child, it must be a dedicated `*Text` +component. For components like buttons, which can have both a View (or +Pressable) together with text, use compound components, such a `Button`, +`ButtonText`, and `ButtonIcon`. + +**Incorrect (polymorphic children):** + +```tsx +import { Pressable, Text } from 'react-native' + +type ButtonProps = { + children: string | React.ReactNode + icon?: React.ReactNode +} + +function Button({ children, icon }: ButtonProps) { + return ( + + {icon} + {typeof children === 'string' ? {children} : children} + + ) +} + +// Usage is ambiguous + + +``` + +**Correct (compound components):** + +```tsx +import { Pressable, Text } from 'react-native' + +function Button({ children }: { children: React.ReactNode }) { + return {children} +} + +function ButtonText({ children }: { children: React.ReactNode }) { + return {children} +} + +function ButtonIcon({ children }: { children: React.ReactNode }) { + return <>{children} +} + +// Usage is explicit and composable + + + +``` diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/fonts-config-plugin.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/fonts-config-plugin.md new file mode 100644 index 00000000..39aa0147 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/fonts-config-plugin.md @@ -0,0 +1,71 @@ +--- +title: Load fonts natively at build time +impact: LOW +impactDescription: fonts available at launch, no async loading +tags: fonts, expo, performance, config-plugin +--- + +## Use Expo Config Plugin for Font Loading + +Use the `expo-font` config plugin to embed fonts at build time instead of +`useFonts` or `Font.loadAsync`. Embedded fonts are more efficient. + +**Incorrect (async font loading):** + +```tsx +import { useFonts } from 'expo-font' +import { Text, View } from 'react-native' + +function App() { + const [fontsLoaded] = useFonts({ + 'Geist-Bold': require('./assets/fonts/Geist-Bold.otf'), + }) + + if (!fontsLoaded) { + return null + } + + return ( + + Hello + + ) +} +``` + +**Correct (config plugin, fonts embedded at build):** + +```json +// app.json +{ + "expo": { + "plugins": [ + [ + "expo-font", + { + "fonts": ["./assets/fonts/Geist-Bold.otf"] + } + ] + ] + } +} +``` + +```tsx +import { Text, View } from 'react-native' + +function App() { + // No loading state needed—font is already available + return ( + + Hello + + ) +} +``` + +After adding fonts to the config plugin, run `npx expo prebuild` and rebuild the +native app. + +Reference: +[Expo Font Documentation](https://docs.expo.dev/versions/latest/sdk/font/) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/imports-design-system-folder.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/imports-design-system-folder.md new file mode 100644 index 00000000..8466dcb2 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/imports-design-system-folder.md @@ -0,0 +1,68 @@ +--- +title: Import from Design System Folder +impact: LOW +impactDescription: enables global changes and easy refactoring +tags: imports, architecture, design-system +--- + +## Import from Design System Folder + +Re-export dependencies from a design system folder. App code imports from there, +not directly from packages. This enables global changes and easy refactoring. + +**Incorrect (imports directly from package):** + +```tsx +import { View, Text } from 'react-native' +import { Button } from '@ui/button' + +function Profile() { + return ( + + Hello + + + ) +} +``` + +**Correct (imports from design system):** + +```tsx +// components/view.tsx +import { View as RNView } from 'react-native' + +// ideal: pick the props you will actually use to control implementation +export function View( + props: Pick, 'style' | 'children'> +) { + return +} +``` + +```tsx +// components/text.tsx +export { Text } from 'react-native' +``` + +```tsx +// components/button.tsx +export { Button } from '@ui/button' +``` + +```tsx +import { View } from '@/components/view' +import { Text } from '@/components/text' +import { Button } from '@/components/button' + +function Profile() { + return ( + + Hello + + + ) +} +``` + +Start by simply re-exporting. Customize later without changing app code. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/js-hoist-intl.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/js-hoist-intl.md new file mode 100644 index 00000000..9af1c354 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/js-hoist-intl.md @@ -0,0 +1,61 @@ +--- +title: Hoist Intl Formatter Creation +impact: LOW-MEDIUM +impactDescription: avoids expensive object recreation +tags: javascript, intl, optimization, memoization +--- + +## Hoist Intl Formatter Creation + +Don't create `Intl.DateTimeFormat`, `Intl.NumberFormat`, or +`Intl.RelativeTimeFormat` inside render or loops. These are expensive to +instantiate. Hoist to module scope when the locale/options are static. + +**Incorrect (new formatter every render):** + +```tsx +function Price({ amount }: { amount: number }) { + const formatter = new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + }) + return {formatter.format(amount)} +} +``` + +**Correct (hoisted to module scope):** + +```tsx +const currencyFormatter = new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', +}) + +function Price({ amount }: { amount: number }) { + return {currencyFormatter.format(amount)} +} +``` + +**For dynamic locales, memoize:** + +```tsx +const dateFormatter = useMemo( + () => new Intl.DateTimeFormat(locale, { dateStyle: 'medium' }), + [locale] +) +``` + +**Common formatters to hoist:** + +```tsx +// Module-level formatters +const dateFormatter = new Intl.DateTimeFormat('en-US', { dateStyle: 'medium' }) +const timeFormatter = new Intl.DateTimeFormat('en-US', { timeStyle: 'short' }) +const percentFormatter = new Intl.NumberFormat('en-US', { style: 'percent' }) +const relativeFormatter = new Intl.RelativeTimeFormat('en-US', { + numeric: 'auto', +}) +``` + +Creating `Intl` objects is significantly more expensive than `RegExp` or plain +objects—each instantiation parses locale data and builds internal lookup tables. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-callbacks.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-callbacks.md new file mode 100644 index 00000000..a0b3913f --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-callbacks.md @@ -0,0 +1,44 @@ +--- +title: Hoist callbacks to the root of lists +impact: MEDIUM +impactDescription: Fewer re-renders and faster lists +tags: tag1, tag2 +--- + +## List performance callbacks + +**Impact: HIGH (Fewer re-renders and faster lists)** + +When passing callback functions to list items, create a single instance of the +callback at the root of the list. Items should then call it with a unique +identifier. + +**Incorrect (creates a new callback on each render):** + +```typescript +return ( + { + // bad: creates a new callback on each render + const onPress = () => handlePress(item.id) + return + }} + /> +) +``` + +**Correct (a single function instance passed to each item):** + +```typescript +const onPress = useCallback(() => handlePress(item.id), [handlePress, item.id]) + +return ( + ( + + )} + /> +) +``` + +Reference: [Link to documentation or resource](https://example.com) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-function-references.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-function-references.md new file mode 100644 index 00000000..9721929b --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-function-references.md @@ -0,0 +1,132 @@ +--- +title: Optimize List Performance with Stable Object References +impact: CRITICAL +impactDescription: virtualization relies on reference stability +tags: lists, performance, flatlist, virtualization +--- + +## Optimize List Performance with Stable Object References + +Don't map or filter data before passing to virtualized lists. Virtualization +relies on object reference stability to know what changed—new references cause +full re-renders of all visible items. Attempt to prevent frequent renders at the +list-parent level. + +Where needed, use context selectors within list items. + +**Incorrect (creates new object references on every keystroke):** + +```tsx +function DomainSearch() { + const { keyword, setKeyword } = useKeywordZustandState() + const { data: tlds } = useTlds() + + // Bad: creates new objects on every render, reparenting the entire list on every keystroke + const domains = tlds.map((tld) => ({ + domain: `${keyword}.${tld.name}`, + tld: tld.name, + price: tld.price, + })) + + return ( + <> + + } + /> + + ) +} +``` + +**Correct (stable references, transform inside items):** + +```tsx +const renderItem = ({ item }) => + +function DomainSearch() { + const { data: tlds } = useTlds() + + return ( + + ) +} + +function DomainItem({ tld }: { tld: Tld }) { + // good: transform within items, and don't pass the dynamic data as a prop + // good: use a selector function from zustand to receive a stable string back + const domain = useKeywordZustandState((s) => s.keyword + '.' + tld.name) + return {domain} +} +``` + +**Updating parent array reference:** + +Creating a new array instance can be okay, as long as its inner object +references are stable. For instance, if you sort a list of objects: + +```tsx +// good: creates a new array instance without mutating the inner objects +// good: parent array reference is unaffected by typing and updating "keyword" +const sortedTlds = tlds.toSorted((a, b) => a.name.localeCompare(b.name)) + +return +``` + +Even though this creates a new array instance `sortedTlds`, the inner object +references are stable. + +**With zustand for dynamic data (avoids parent re-renders):** + +```tsx +const useSearchStore = create<{ keyword: string }>(() => ({ keyword: '' })) + +function DomainSearch() { + const { data: tlds } = useTlds() + + return ( + <> + + } + /> + + ) +} + +function DomainItem({ tld }: { tld: Tld }) { + // Select only what you need—component only re-renders when keyword changes + const keyword = useSearchStore((s) => s.keyword) + const domain = `${keyword}.${tld.name}` + return {domain} +} +``` + +Virtualization can now skip items that haven't changed when typing. Only visible +items (~20) re-render on keystroke, rather than the parent. + +**Deriving state within list items based on parent data (avoids parent +re-renders):** + +For components where the data is conditional based on the parent state, this +pattern is even more important. For example, if you are checking if an item is +favorited, toggling favorites only re-renders one component if the item itself +is in charge of accessing the state rather than the parent: + +```tsx +function DomainItemFavoriteButton({ tld }: { tld: Tld }) { + const isFavorited = useFavoritesStore((s) => s.favorites.has(tld.id)) + return +} +``` + +Note: if you're using the React Compiler, you can read React Context values +directly within list items. Although this is slightly slower than using a +Zustand selector in most cases, the effect may be negligible. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-images.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-images.md new file mode 100644 index 00000000..75a3bafc --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-images.md @@ -0,0 +1,53 @@ +--- +title: Use Compressed Images in Lists +impact: HIGH +impactDescription: faster load times, less memory +tags: lists, images, performance, optimization +--- + +## Use Compressed Images in Lists + +Always load compressed, appropriately-sized images in lists. Full-resolution +images consume excessive memory and cause scroll jank. Request thumbnails from +your server or use an image CDN with resize parameters. + +**Incorrect (full-resolution images):** + +```tsx +function ProductItem({ product }: { product: Product }) { + return ( + + {/* 4000x3000 image loaded for a 100x100 thumbnail */} + + {product.name} + + ) +} +``` + +**Correct (request appropriately-sized image):** + +```tsx +function ProductItem({ product }: { product: Product }) { + // Request a 200x200 image (2x for retina) + const thumbnailUrl = `${product.imageUrl}?w=200&h=200&fit=cover` + + return ( + + + {product.name} + + ) +} +``` + +Use an optimized image component with built-in caching and placeholder support, +such as `expo-image` or `SolitoImage` (which uses `expo-image` under the hood). +Request images at 2x the display size for retina screens. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-inline-objects.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-inline-objects.md new file mode 100644 index 00000000..d5b6514a --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-inline-objects.md @@ -0,0 +1,97 @@ +--- +title: Avoid Inline Objects in renderItem +impact: HIGH +impactDescription: prevents unnecessary re-renders of memoized list items +tags: lists, performance, flatlist, virtualization, memo +--- + +## Avoid Inline Objects in renderItem + +Don't create new objects inside `renderItem` to pass as props. Inline objects +create new references on every render, breaking memoization. Pass primitive +values directly from `item` instead. + +**Incorrect (inline object breaks memoization):** + +```tsx +function UserList({ users }: { users: User[] }) { + return ( + ( + + )} + /> + ) +} +``` + +**Incorrect (inline style object):** + +```tsx +renderItem={({ item }) => ( + +)} +``` + +**Correct (pass item directly or primitives):** + +```tsx +function UserList({ users }: { users: User[] }) { + return ( + ( + // Good: pass the item directly + + )} + /> + ) +} +``` + +**Correct (pass primitives, derive inside child):** + +```tsx +renderItem={({ item }) => ( + +)} + +const UserRow = memo(function UserRow({ id, name, isActive }: Props) { + // Good: derive style inside memoized component + const backgroundColor = isActive ? 'green' : 'gray' + return {/* ... */} +}) +``` + +**Correct (hoist static styles in module scope):** + +```tsx +const activeStyle = { backgroundColor: 'green' } +const inactiveStyle = { backgroundColor: 'gray' } + +renderItem={({ item }) => ( + +)} +``` + +Passing primitives or stable references allows `memo()` to skip re-renders when +the actual values haven't changed. + +**Note:** If you have the React Compiler enabled, it handles memoization +automatically and these manual optimizations become less critical. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-expensive.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-expensive.md new file mode 100644 index 00000000..f617a76d --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-expensive.md @@ -0,0 +1,94 @@ +--- +title: Keep List Items Lightweight +impact: HIGH +impactDescription: reduces render time for visible items during scroll +tags: lists, performance, virtualization, hooks +--- + +## Keep List Items Lightweight + +List items should be as inexpensive as possible to render. Minimize hooks, avoid +queries, and limit React Context access. Virtualized lists render many items +during scroll—expensive items cause jank. + +**Incorrect (heavy list item):** + +```tsx +function ProductRow({ id }: { id: string }) { + // Bad: query inside list item + const { data: product } = useQuery(['product', id], () => fetchProduct(id)) + // Bad: multiple context accesses + const theme = useContext(ThemeContext) + const user = useContext(UserContext) + const cart = useContext(CartContext) + // Bad: expensive computation + const recommendations = useMemo( + () => computeRecommendations(product), + [product] + ) + + return {/* ... */} +} +``` + +**Correct (lightweight list item):** + +```tsx +function ProductRow({ name, price, imageUrl }: Props) { + // Good: receives only primitives, minimal hooks + return ( + + + {name} + {price} + + ) +} +``` + +**Move data fetching to parent:** + +```tsx +// Parent fetches all data once +function ProductList() { + const { data: products } = useQuery(['products'], fetchProducts) + + return ( + ( + + )} + /> + ) +} +``` + +**For shared values, use Zustand selectors instead of Context:** + +```tsx +// Incorrect: Context causes re-render when any cart value changes +function ProductRow({ id, name }: Props) { + const { items } = useContext(CartContext) + const inCart = items.includes(id) + // ... +} + +// Correct: Zustand selector only re-renders when this specific value changes +function ProductRow({ id, name }: Props) { + // use Set.has (created once at the root) instead of Array.includes() + const inCart = useCartStore((s) => s.items.has(id)) + // ... +} +``` + +**Guidelines for list items:** + +- No queries or data fetching +- No expensive computations (move to parent or memoize at parent level) +- Prefer Zustand selectors over React Context +- Minimize useState/useEffect hooks +- Pass pre-computed values as props + +The goal: list items should be simple rendering functions that take props and +return JSX. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-memo.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-memo.md new file mode 100644 index 00000000..634935e8 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-memo.md @@ -0,0 +1,82 @@ +--- +title: Pass Primitives to List Items for Memoization +impact: HIGH +impactDescription: enables effective memo() comparison +tags: lists, performance, memo, primitives +--- + +## Pass Primitives to List Items for Memoization + +When possible, pass only primitive values (strings, numbers, booleans) as props +to list item components. Primitives enable shallow comparison in `memo()` to +work correctly, skipping re-renders when values haven't changed. + +**Incorrect (object prop requires deep comparison):** + +```tsx +type User = { id: string; name: string; email: string; avatar: string } + +const UserRow = memo(function UserRow({ user }: { user: User }) { + // memo() compares user by reference, not value + // If parent creates new user object, this re-renders even if data is same + return {user.name} +}) + +renderItem={({ item }) => } +``` + +This can still be optimized, but it is harder to memoize properly. + +**Correct (primitive props enable shallow comparison):** + +```tsx +const UserRow = memo(function UserRow({ + id, + name, + email, +}: { + id: string + name: string + email: string +}) { + // memo() compares each primitive directly + // Re-renders only if id, name, or email actually changed + return {name} +}) + +renderItem={({ item }) => ( + +)} +``` + +**Pass only what you need:** + +```tsx +// Incorrect: passing entire item when you only need name + + +// Correct: pass only the fields the component uses + +``` + +**For callbacks, hoist or use item ID:** + +```tsx +// Incorrect: inline function creates new reference + handlePress(item.id)} /> + +// Correct: pass ID, handle in child + + +const UserRow = memo(function UserRow({ id, name }: Props) { + const handlePress = useCallback(() => { + // use id here + }, [id]) + return {name} +}) +``` + +Primitive props make memoization predictable and effective. + +**Note:** If you have the React Compiler enabled, you do not need to use +`memo()` or `useCallback()`, but the object references still apply. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-types.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-types.md new file mode 100644 index 00000000..1027e4e6 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-item-types.md @@ -0,0 +1,104 @@ +--- +title: Use Item Types for Heterogeneous Lists +impact: HIGH +impactDescription: efficient recycling, less layout thrashing +tags: list, performance, recycling, heterogeneous, LegendList +--- + +## Use Item Types for Heterogeneous Lists + +When a list has different item layouts (messages, images, headers, etc.), use a +`type` field on each item and provide `getItemType` to the list. This puts items +into separate recycling pools so a message component never gets recycled into an +image component. + +**Incorrect (single component with conditionals):** + +```tsx +type Item = { id: string; text?: string; imageUrl?: string; isHeader?: boolean } + +function ListItem({ item }: { item: Item }) { + if (item.isHeader) { + return + } + if (item.imageUrl) { + return + } + return +} + +function Feed({ items }: { items: Item[] }) { + return ( + } + recycleItems + /> + ) +} +``` + +**Correct (typed items with separate components):** + +```tsx +type HeaderItem = { id: string; type: 'header'; title: string } +type MessageItem = { id: string; type: 'message'; text: string } +type ImageItem = { id: string; type: 'image'; url: string } +type FeedItem = HeaderItem | MessageItem | ImageItem + +function Feed({ items }: { items: FeedItem[] }) { + return ( + item.id} + getItemType={(item) => item.type} + renderItem={({ item }) => { + switch (item.type) { + case 'header': + return + case 'message': + return + case 'image': + return + } + }} + recycleItems + /> + ) +} +``` + +**Why this matters:** + +- **Recycling efficiency**: Items with the same type share a recycling pool +- **No layout thrashing**: A header never recycles into an image cell +- **Type safety**: TypeScript can narrow the item type in each branch +- **Better size estimation**: Use `getEstimatedItemSize` with `itemType` for + accurate estimates per type + +```tsx + item.id} + getItemType={(item) => item.type} + getEstimatedItemSize={(index, item, itemType) => { + switch (itemType) { + case 'header': + return 48 + case 'message': + return 72 + case 'image': + return 300 + default: + return 72 + } + }} + renderItem={({ item }) => { + /* ... */ + }} + recycleItems +/> +``` + +Reference: +[LegendList getItemType](https://legendapp.com/open-source/list/api/props/#getitemtype-v2) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-virtualize.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-virtualize.md new file mode 100644 index 00000000..8a393ba1 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/list-performance-virtualize.md @@ -0,0 +1,67 @@ +--- +title: Use a List Virtualizer for Any List +impact: HIGH +impactDescription: reduced memory, faster mounts +tags: lists, performance, virtualization, scrollview +--- + +## Use a List Virtualizer for Any List + +Use a list virtualizer like LegendList or FlashList instead of ScrollView with +mapped children—even for short lists. Virtualizers only render visible items, +reducing memory usage and mount time. ScrollView renders all children upfront, +which gets expensive quickly. + +**Incorrect (ScrollView renders all items at once):** + +```tsx +function Feed({ items }: { items: Item[] }) { + return ( + + {items.map((item) => ( + + ))} + + ) +} +// 50 items = 50 components mounted, even if only 10 visible +``` + +**Correct (virtualizer renders only visible items):** + +```tsx +import { LegendList } from '@legendapp/list' + +function Feed({ items }: { items: Item[] }) { + return ( + } + keyExtractor={(item) => item.id} + estimatedItemSize={80} + /> + ) +} +// Only ~10-15 visible items mounted at a time +``` + +**Alternative (FlashList):** + +```tsx +import { FlashList } from '@shopify/flash-list' + +function Feed({ items }: { items: Item[] }) { + return ( + } + keyExtractor={(item) => item.id} + /> + ) +} +``` + +Benefits apply to any screen with scrollable content—profiles, settings, feeds, +search results. Default to virtualization. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/monorepo-native-deps-in-app.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/monorepo-native-deps-in-app.md new file mode 100644 index 00000000..ff85d767 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/monorepo-native-deps-in-app.md @@ -0,0 +1,46 @@ +--- +title: Install Native Dependencies in App Directory +impact: CRITICAL +impactDescription: required for autolinking to work +tags: monorepo, native, autolinking, installation +--- + +## Install Native Dependencies in App Directory + +In a monorepo, packages with native code must be installed in the native app's +directory directly. Autolinking only scans the app's `node_modules`—it won't +find native dependencies installed in other packages. + +**Incorrect (native dep in shared package only):** + +``` +packages/ + ui/ + package.json # has react-native-reanimated + app/ + package.json # missing react-native-reanimated +``` + +Autolinking fails—native code not linked. + +**Correct (native dep in app directory):** + +``` +packages/ + ui/ + package.json # has react-native-reanimated + app/ + package.json # also has react-native-reanimated +``` + +```json +// packages/app/package.json +{ + "dependencies": { + "react-native-reanimated": "3.16.1" + } +} +``` + +Even if the shared package uses the native dependency, the app must also list it +for autolinking to detect and link the native code. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/monorepo-single-dependency-versions.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/monorepo-single-dependency-versions.md new file mode 100644 index 00000000..1087dfa5 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/monorepo-single-dependency-versions.md @@ -0,0 +1,63 @@ +--- +title: Use Single Dependency Versions Across Monorepo +impact: MEDIUM +impactDescription: avoids duplicate bundles, version conflicts +tags: monorepo, dependencies, installation +--- + +## Use Single Dependency Versions Across Monorepo + +Use a single version of each dependency across all packages in your monorepo. +Prefer exact versions over ranges. Multiple versions cause duplicate code in +bundles, runtime conflicts, and inconsistent behavior across packages. + +Use a tool like syncpack to enforce this. As a last resort, use yarn resolutions +or npm overrides. + +**Incorrect (version ranges, multiple versions):** + +```json +// packages/app/package.json +{ + "dependencies": { + "react-native-reanimated": "^3.0.0" + } +} + +// packages/ui/package.json +{ + "dependencies": { + "react-native-reanimated": "^3.5.0" + } +} +``` + +**Correct (exact versions, single source of truth):** + +```json +// package.json (root) +{ + "pnpm": { + "overrides": { + "react-native-reanimated": "3.16.1" + } + } +} + +// packages/app/package.json +{ + "dependencies": { + "react-native-reanimated": "3.16.1" + } +} + +// packages/ui/package.json +{ + "dependencies": { + "react-native-reanimated": "3.16.1" + } +} +``` + +Use your package manager's override/resolution feature to enforce versions at +the root. When adding dependencies, specify exact versions without `^` or `~`. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/navigation-native-navigators.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/navigation-native-navigators.md new file mode 100644 index 00000000..035c5fd3 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/navigation-native-navigators.md @@ -0,0 +1,188 @@ +--- +title: Use Native Navigators for Navigation +impact: HIGH +impactDescription: native performance, platform-appropriate UI +tags: navigation, react-navigation, expo-router, native-stack, tabs +--- + +## Use Native Navigators for Navigation + +Always use native navigators instead of JS-based ones. Native navigators use +platform APIs (UINavigationController on iOS, Fragment on Android) for better +performance and native behavior. + +**For stacks:** Use `@react-navigation/native-stack` or expo-router's default +stack (which uses native-stack). Avoid `@react-navigation/stack`. + +**For tabs:** Use `react-native-bottom-tabs` (native) or expo-router's native +tabs. Avoid `@react-navigation/bottom-tabs` when native feel matters. + +### Stack Navigation + +**Incorrect (JS stack navigator):** + +```tsx +import { createStackNavigator } from '@react-navigation/stack' + +const Stack = createStackNavigator() + +function App() { + return ( + + + + + ) +} +``` + +**Correct (native stack with react-navigation):** + +```tsx +import { createNativeStackNavigator } from '@react-navigation/native-stack' + +const Stack = createNativeStackNavigator() + +function App() { + return ( + + + + + ) +} +``` + +**Correct (expo-router uses native stack by default):** + +```tsx +// app/_layout.tsx +import { Stack } from 'expo-router' + +export default function Layout() { + return +} +``` + +### Tab Navigation + +**Incorrect (JS bottom tabs):** + +```tsx +import { createBottomTabNavigator } from '@react-navigation/bottom-tabs' + +const Tab = createBottomTabNavigator() + +function App() { + return ( + + + + + ) +} +``` + +**Correct (native bottom tabs with react-navigation):** + +```tsx +import { createNativeBottomTabNavigator } from '@bottom-tabs/react-navigation' + +const Tab = createNativeBottomTabNavigator() + +function App() { + return ( + + ({ sfSymbol: 'house' }), + }} + /> + ({ sfSymbol: 'gear' }), + }} + /> + + ) +} +``` + +**Correct (expo-router native tabs):** + +```tsx +// app/(tabs)/_layout.tsx +import { NativeTabs } from 'expo-router/unstable-native-tabs' + +export default function TabLayout() { + return ( + + + Home + + + + Settings + + + + ) +} +``` + +On iOS, native tabs automatically enable `contentInsetAdjustmentBehavior` on the +first `ScrollView` at the root of each tab screen, so content scrolls correctly +behind the translucent tab bar. If you need to disable this, use +`disableAutomaticContentInsets` on the trigger. + +### Prefer Native Header Options Over Custom Components + +**Incorrect (custom header component):** + +```tsx + , + }} +/> +``` + +**Correct (native header options):** + +```tsx + +``` + +Native headers support iOS large titles, search bars, blur effects, and proper +safe area handling automatically. + +### Why Native Navigators + +- **Performance**: Native transitions and gestures run on the UI thread +- **Platform behavior**: Automatic iOS large titles, Android material design +- **System integration**: Scroll-to-top on tab tap, PiP avoidance, proper safe + areas +- **Accessibility**: Platform accessibility features work automatically + +Reference: + +- [React Navigation Native Stack](https://reactnavigation.org/docs/native-stack-navigator) +- [React Native Bottom Tabs with React Navigation](https://oss.callstack.com/react-native-bottom-tabs/docs/guides/usage-with-react-navigation) +- [React Native Bottom Tabs with Expo Router](https://oss.callstack.com/react-native-bottom-tabs/docs/guides/usage-with-expo-router) +- [Expo Router Native Tabs](https://docs.expo.dev/router/advanced/native-tabs) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-compiler-destructure-functions.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-compiler-destructure-functions.md new file mode 100644 index 00000000..f76c25ac --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-compiler-destructure-functions.md @@ -0,0 +1,50 @@ +--- +title: Destructure Functions Early in Render (React Compiler) +impact: HIGH +impactDescription: stable references, fewer re-renders +tags: rerender, hooks, performance, react-compiler +--- + +## Destructure Functions Early in Render + +This rule is only applicable if you are using the React Compiler. + +Destructure functions from hooks at the top of render scope. Never dot into +objects to call functions. Destructured functions are stable references; dotting +creates new references and breaks memoization. + +**Incorrect (dotting into object):** + +```tsx +import { useRouter } from 'expo-router' + +function SaveButton(props) { + const router = useRouter() + + // bad: react-compiler will key the cache on "props" and "router", which are objects that change each render + const handlePress = () => { + props.onSave() + router.push('/success') // unstable reference + } + + return +} +``` + +**Correct (destructure early):** + +```tsx +import { useRouter } from 'expo-router' + +function SaveButton({ onSave }) { + const { push } = useRouter() + + // good: react-compiler will key on push and onSave + const handlePress = () => { + onSave() + push('/success') // stable reference + } + + return +} +``` diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md new file mode 100644 index 00000000..0dcbaf47 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md @@ -0,0 +1,48 @@ +--- +title: Use .get() and .set() for Reanimated Shared Values (not .value) +impact: LOW +impactDescription: required for React Compiler compatibility +tags: reanimated, react-compiler, shared-values +--- + +## Use .get() and .set() for Shared Values with React Compiler + +With React Compiler enabled, use `.get()` and `.set()` instead of reading or +writing `.value` directly on Reanimated shared values. The compiler can't track +property access—explicit methods ensure correct behavior. + +**Incorrect (breaks with React Compiler):** + +```tsx +import { useSharedValue } from 'react-native-reanimated' + +function Counter() { + const count = useSharedValue(0) + + const increment = () => { + count.value = count.value + 1 // opts out of react compiler + } + + return