vybekiit 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +840 -296
- package/dist/global-skills/add-ai/SKILL.md +53 -0
- package/dist/global-skills/add-analytics/SKILL.md +65 -0
- package/dist/global-skills/add-app-clip/SKILL.md +280 -0
- package/dist/global-skills/add-app-clip/agents/openai.yaml +4 -0
- package/dist/global-skills/add-app-clip/references/native-module.md +96 -0
- package/dist/global-skills/add-blog/SKILL.md +49 -0
- package/dist/global-skills/add-crud/SKILL.md +28 -0
- package/dist/global-skills/add-files/SKILL.md +65 -0
- package/dist/global-skills/add-images/SKILL.md +64 -0
- package/dist/global-skills/add-language/SKILL.md +44 -0
- package/dist/global-skills/add-notifications/SKILL.md +61 -0
- package/dist/global-skills/add-realtime/SKILL.md +49 -0
- package/dist/global-skills/add-route/SKILL.md +28 -0
- package/dist/global-skills/add-search/SKILL.md +43 -0
- package/dist/global-skills/add-signin/SKILL.md +78 -0
- package/dist/global-skills/add-teams/SKILL.md +64 -0
- package/dist/global-skills/add-upload/SKILL.md +27 -0
- package/dist/global-skills/aws-cdk/SKILL.md +72 -0
- package/dist/global-skills/aws-cdk/references/bootstrap-and-project-setup.md +257 -0
- package/dist/global-skills/aws-cdk/references/compliance-and-drift.md +193 -0
- package/dist/global-skills/aws-cdk/references/construct-patterns.md +315 -0
- package/dist/global-skills/aws-cdk/references/import-and-migrate.md +184 -0
- package/dist/global-skills/aws-cdk/references/refactor-and-prevent-replacement.md +198 -0
- package/dist/global-skills/aws-cdk/references/troubleshooting-credentials.md +183 -0
- package/dist/global-skills/aws-cdk/references/troubleshooting-deployment.md +293 -0
- package/dist/global-skills/aws-cdk/references/troubleshooting-synth.md +274 -0
- package/dist/global-skills/aws-cdk/references/v1-to-v2-migration.md +119 -0
- package/dist/global-skills/aws-cloudformation/SKILL.md +88 -0
- package/dist/global-skills/aws-cloudformation/references/author-cloudformation-best-practices.script.md +179 -0
- package/dist/global-skills/aws-cloudformation/references/check-cloudformation-template-compliance.script.md +159 -0
- package/dist/global-skills/aws-cloudformation/references/cloudformation-pre-deploy-validation.script.md +217 -0
- package/dist/global-skills/aws-cloudformation/references/deploy-with-express-mode.script.md +271 -0
- package/dist/global-skills/aws-cloudformation/references/lookup-resource-properties.script.md +130 -0
- package/dist/global-skills/aws-cloudformation/references/troubleshoot-deployment.script.md +200 -0
- package/dist/global-skills/aws-cloudformation/references/validate-cloudformation-template.script.md +135 -0
- package/dist/global-skills/aws-serverless/SKILL.md +51 -0
- package/dist/global-skills/aws-serverless/assets/powertools-handler.py +49 -0
- package/dist/global-skills/aws-serverless/references/api-gateway.md +553 -0
- package/dist/global-skills/aws-serverless/references/architecture.md +262 -0
- package/dist/global-skills/aws-serverless/references/concurrency.md +200 -0
- package/dist/global-skills/aws-serverless/references/deployment.md +94 -0
- package/dist/global-skills/aws-serverless/references/event-sources.md +484 -0
- package/dist/global-skills/aws-serverless/references/lambda.md +548 -0
- package/dist/global-skills/aws-serverless/references/orchestration.md +449 -0
- package/dist/global-skills/aws-serverless/references/production.md +493 -0
- package/dist/global-skills/aws-serverless/references/troubleshooting.md +711 -0
- package/dist/global-skills/back-up-my-code/SKILL.md +48 -0
- package/dist/global-skills/better-auth-best-practices/SKILL.md +182 -0
- package/dist/global-skills/better-auth-security-best-practices/SKILL.md +432 -0
- package/dist/global-skills/building-native-ui/SKILL.md +377 -0
- package/dist/global-skills/building-native-ui/agents/openai.yaml +4 -0
- package/dist/global-skills/building-native-ui/references/animations.md +220 -0
- package/dist/global-skills/building-native-ui/references/controls.md +270 -0
- package/dist/global-skills/building-native-ui/references/form-sheet.md +253 -0
- package/dist/global-skills/building-native-ui/references/gradients.md +106 -0
- package/dist/global-skills/building-native-ui/references/icons.md +213 -0
- package/dist/global-skills/building-native-ui/references/media.md +198 -0
- package/dist/global-skills/building-native-ui/references/route-structure.md +229 -0
- package/dist/global-skills/building-native-ui/references/search.md +248 -0
- package/dist/global-skills/building-native-ui/references/storage.md +121 -0
- package/dist/global-skills/building-native-ui/references/tabs.md +433 -0
- package/dist/global-skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/dist/global-skills/building-native-ui/references/visual-effects.md +197 -0
- package/dist/global-skills/building-native-ui/references/webgpu-three.md +605 -0
- package/dist/global-skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/dist/global-skills/buy-domain/SKILL.md +64 -0
- package/dist/global-skills/check-safety/SKILL.md +94 -0
- package/dist/global-skills/claimable-postgres/SKILL.md +249 -0
- package/dist/global-skills/configure-capabilities/SKILL.md +38 -0
- package/dist/global-skills/connect-account/SKILL.md +64 -0
- package/dist/global-skills/connect-account-backend/SKILL.md +41 -0
- package/dist/global-skills/create-auth-skill/SKILL.md +321 -0
- package/dist/global-skills/design-my-data/SKILL.md +48 -0
- package/dist/global-skills/doctor/SKILL.md +84 -0
- package/dist/global-skills/eas-app-stores/SKILL.md +152 -0
- package/dist/global-skills/eas-app-stores/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/dist/global-skills/eas-app-stores/references/ios-app-store.md +371 -0
- package/dist/global-skills/eas-app-stores/references/play-store.md +246 -0
- package/dist/global-skills/eas-app-stores/references/testflight.md +58 -0
- package/dist/global-skills/eas-app-stores/references/workflows.md +120 -0
- package/dist/global-skills/eas-hosting/SKILL.md +423 -0
- package/dist/global-skills/eas-hosting/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-observe/SKILL.md +32 -0
- package/dist/global-skills/eas-observe/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-observe/references/metrics.md +47 -0
- package/dist/global-skills/eas-observe/references/queries.md +342 -0
- package/dist/global-skills/eas-observe/references/setup.md +317 -0
- package/dist/global-skills/eas-simulator/SKILL.md +156 -0
- package/dist/global-skills/eas-simulator/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-simulator/references/controllers.md +67 -0
- package/dist/global-skills/eas-simulator/references/run-your-app.md +185 -0
- package/dist/global-skills/eas-simulator/references/troubleshooting.md +38 -0
- package/dist/global-skills/eas-update-insights/SKILL.md +230 -0
- package/dist/global-skills/eas-update-insights/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/dist/global-skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/dist/global-skills/eas-workflows/SKILL.md +94 -0
- package/dist/global-skills/eas-workflows/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-workflows/scripts/fetch.js +109 -0
- package/dist/global-skills/eas-workflows/scripts/package.json +11 -0
- package/dist/global-skills/eas-workflows/scripts/validate.js +84 -0
- package/dist/global-skills/email-best-practices/SKILL.md +73 -0
- package/dist/global-skills/expo-api-routes/SKILL.md +368 -0
- package/dist/global-skills/expo-api-routes/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-app-clip/SKILL.md +282 -0
- package/dist/global-skills/expo-app-clip/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-app-clip/references/native-module.md +96 -0
- package/dist/global-skills/expo-brownfield/SKILL.md +54 -0
- package/dist/global-skills/expo-brownfield/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-brownfield/references/brownfield-integrated.md +526 -0
- package/dist/global-skills/expo-brownfield/references/brownfield-isolated.md +402 -0
- package/dist/global-skills/expo-brownfield/references/comparison.md +63 -0
- package/dist/global-skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/dist/global-skills/expo-cicd-workflows/SKILL.md +92 -0
- package/dist/global-skills/expo-cicd-workflows/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-cicd-workflows/scripts/fetch.js +109 -0
- package/dist/global-skills/expo-cicd-workflows/scripts/package.json +11 -0
- package/dist/global-skills/expo-cicd-workflows/scripts/validate.js +84 -0
- package/dist/global-skills/expo-data-fetching/SKILL.md +449 -0
- package/dist/global-skills/expo-data-fetching/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-data-fetching/references/expo-router-loaders.md +341 -0
- package/dist/global-skills/expo-data-fetching/references/offline-and-cancellation.md +68 -0
- package/dist/global-skills/expo-deployment/SKILL.md +167 -0
- package/dist/global-skills/expo-deployment/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-deployment/references/app-store-metadata.md +497 -0
- package/dist/global-skills/expo-deployment/references/ios-app-store.md +371 -0
- package/dist/global-skills/expo-deployment/references/play-store.md +246 -0
- package/dist/global-skills/expo-deployment/references/testflight.md +58 -0
- package/dist/global-skills/expo-deployment/references/workflows.md +160 -0
- package/dist/global-skills/expo-dev-client/SKILL.md +174 -0
- package/dist/global-skills/expo-dev-client/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-dom/SKILL.md +417 -0
- package/dist/global-skills/expo-dom/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-examples/SKILL.md +99 -0
- package/dist/global-skills/expo-examples/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-examples/references/catalog.md +105 -0
- package/dist/global-skills/expo-module/SKILL.md +141 -0
- package/dist/global-skills/expo-module/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-module/references/config-plugin.md +90 -0
- package/dist/global-skills/expo-module/references/create-expo-module.md +206 -0
- package/dist/global-skills/expo-module/references/lifecycle.md +127 -0
- package/dist/global-skills/expo-module/references/module-config.md +48 -0
- package/dist/global-skills/expo-module/references/native-module.md +286 -0
- package/dist/global-skills/expo-module/references/native-view.md +171 -0
- package/dist/global-skills/expo-native-ui/SKILL.md +181 -0
- package/dist/global-skills/expo-native-ui/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-native-ui/references/animations.md +220 -0
- package/dist/global-skills/expo-native-ui/references/controls.md +270 -0
- package/dist/global-skills/expo-native-ui/references/gradients.md +106 -0
- package/dist/global-skills/expo-native-ui/references/icons.md +213 -0
- package/dist/global-skills/expo-native-ui/references/media.md +198 -0
- package/dist/global-skills/expo-native-ui/references/storage.md +121 -0
- package/dist/global-skills/expo-native-ui/references/visual-effects.md +197 -0
- package/dist/global-skills/expo-native-ui/references/webgpu-three.md +605 -0
- package/dist/global-skills/expo-observe/SKILL.md +30 -0
- package/dist/global-skills/expo-observe/references/metrics.md +47 -0
- package/dist/global-skills/expo-observe/references/queries.md +342 -0
- package/dist/global-skills/expo-observe/references/setup.md +317 -0
- package/dist/global-skills/expo-router/SKILL.md +230 -0
- package/dist/global-skills/expo-router/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-router/references/form-sheet.md +253 -0
- package/dist/global-skills/expo-router/references/route-structure.md +229 -0
- package/dist/global-skills/expo-router/references/search.md +248 -0
- package/dist/global-skills/expo-router/references/tabs.md +433 -0
- package/dist/global-skills/expo-router/references/toolbar-and-headers.md +284 -0
- package/dist/global-skills/expo-router/references/zoom-transitions.md +158 -0
- package/dist/global-skills/expo-skill-eval/SKILL.md +314 -0
- package/dist/global-skills/expo-skill-eval/agents/visual-grader.md +52 -0
- package/dist/global-skills/expo-skill-eval/references/design-rubric.md +45 -0
- package/dist/global-skills/expo-skill-eval/references/runtime-matrix.md +34 -0
- package/dist/global-skills/expo-skill-eval/scripts/check-static.sh +64 -0
- package/dist/global-skills/expo-skill-eval/scripts/clean-fixture.sh +56 -0
- package/dist/global-skills/expo-skill-eval/scripts/generate_viewer.py +450 -0
- package/dist/global-skills/expo-skill-eval/scripts/latest-sdk.sh +46 -0
- package/dist/global-skills/expo-skill-eval/scripts/make-fixture.sh +95 -0
- package/dist/global-skills/expo-skill-eval/scripts/make-workspace.sh +31 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-android.sh +284 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-ios.sh +132 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-web.sh +61 -0
- package/dist/global-skills/expo-skill-feedback/SKILL.md +54 -0
- package/dist/global-skills/expo-skill-feedback/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-skill-feedback/scripts/skill-event.cjs +180 -0
- package/dist/global-skills/expo-skill-feedback/scripts/skill-feedback.cjs +118 -0
- package/dist/global-skills/expo-skill-feedback/scripts/telemetry.cjs +65 -0
- package/dist/global-skills/expo-skill-feedback/scripts/telemetry_common.cjs +171 -0
- package/dist/global-skills/expo-tailwind-setup/SKILL.md +480 -0
- package/dist/global-skills/expo-tailwind-setup/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-ui/SKILL.md +47 -0
- package/dist/global-skills/expo-ui/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-ui/references/drop-in-replacements.md +27 -0
- package/dist/global-skills/expo-ui/references/jetpack-compose.md +73 -0
- package/dist/global-skills/expo-ui/references/swift-ui.md +73 -0
- package/dist/global-skills/expo-ui/references/universal.md +73 -0
- package/dist/global-skills/expo-ui/scripts/list-components.js +193 -0
- package/dist/global-skills/expo-upgrade/SKILL.md +134 -0
- package/dist/global-skills/expo-upgrade/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-upgrade/references/expo-av-to-audio.md +132 -0
- package/dist/global-skills/expo-upgrade/references/expo-av-to-video.md +160 -0
- package/dist/global-skills/expo-upgrade/references/native-tabs.md +124 -0
- package/dist/global-skills/expo-upgrade/references/new-architecture.md +79 -0
- package/dist/global-skills/expo-upgrade/references/react-19.md +79 -0
- package/dist/global-skills/expo-upgrade/references/react-compiler.md +59 -0
- package/dist/global-skills/expo-upgrade/references/react-navigation-to-expo-router.md +61 -0
- package/dist/global-skills/expo-web-to-native/SKILL.md +83 -0
- package/dist/global-skills/expo-web-to-native/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-web-to-native/references/false-friends.md +119 -0
- package/dist/global-skills/expo-web-to-native/references/native-patterns.md +39 -0
- package/dist/global-skills/expo-web-to-native/references/run-as-goal.md +48 -0
- package/dist/global-skills/expo-web-to-native/references/verify-on-device.md +45 -0
- package/dist/global-skills/firebase-ai-logic-basics/SKILL.md +165 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/flutter_setup.md +95 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/ios_setup.md +156 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_android.md +157 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_web.md +186 -0
- package/dist/global-skills/firebase-app-hosting-basics/SKILL.md +73 -0
- package/dist/global-skills/firebase-app-hosting-basics/references/cli_commands.md +85 -0
- package/dist/global-skills/firebase-app-hosting-basics/references/configuration.md +59 -0
- package/dist/global-skills/firebase-app-hosting-basics/references/emulation.md +59 -0
- package/dist/global-skills/firebase-auth-basics/SKILL.md +118 -0
- package/dist/global-skills/firebase-auth-basics/references/client_sdk_android.md +160 -0
- package/dist/global-skills/firebase-auth-basics/references/client_sdk_web.md +301 -0
- package/dist/global-skills/firebase-auth-basics/references/flutter_setup.md +149 -0
- package/dist/global-skills/firebase-auth-basics/references/ios_setup.md +87 -0
- package/dist/global-skills/firebase-auth-basics/references/security_rules.md +49 -0
- package/dist/global-skills/firebase-basics/SKILL.md +148 -0
- package/dist/global-skills/firebase-basics/references/android_setup.md +41 -0
- package/dist/global-skills/firebase-basics/references/firebase-cli-guide.md +18 -0
- package/dist/global-skills/firebase-basics/references/firebase-service-init.md +20 -0
- package/dist/global-skills/firebase-basics/references/flutter_setup.md +143 -0
- package/dist/global-skills/firebase-basics/references/ios_setup.md +113 -0
- package/dist/global-skills/firebase-basics/references/local-env-setup.md +80 -0
- package/dist/global-skills/firebase-basics/references/refresh/android_studio.md +41 -0
- package/dist/global-skills/firebase-basics/references/refresh/antigravity.md +64 -0
- package/dist/global-skills/firebase-basics/references/refresh/claude.md +12 -0
- package/dist/global-skills/firebase-basics/references/refresh/gemini-cli.md +13 -0
- package/dist/global-skills/firebase-basics/references/refresh/other-agents.md +67 -0
- package/dist/global-skills/firebase-basics/references/setup/android_studio.md +23 -0
- package/dist/global-skills/firebase-basics/references/setup/antigravity.md +98 -0
- package/dist/global-skills/firebase-basics/references/setup/claude_code.md +45 -0
- package/dist/global-skills/firebase-basics/references/setup/cursor.md +93 -0
- package/dist/global-skills/firebase-basics/references/setup/gemini_cli.md +53 -0
- package/dist/global-skills/firebase-basics/references/setup/github_copilot.md +104 -0
- package/dist/global-skills/firebase-basics/references/setup/other_agents.md +99 -0
- package/dist/global-skills/firebase-basics/references/web_setup.md +77 -0
- package/dist/global-skills/firebase-crashlytics/SKILL.md +42 -0
- package/dist/global-skills/firebase-crashlytics/references/android_setup.md +152 -0
- package/dist/global-skills/firebase-crashlytics/references/ios_setup.md +115 -0
- package/dist/global-skills/firebase-data-connect/SKILL.md +191 -0
- package/dist/global-skills/firebase-data-connect/examples.md +638 -0
- package/dist/global-skills/firebase-data-connect/reference/cloud_functions.md +184 -0
- package/dist/global-skills/firebase-data-connect/reference/config.md +271 -0
- package/dist/global-skills/firebase-data-connect/reference/data_seeding.md +185 -0
- package/dist/global-skills/firebase-data-connect/reference/native_sql.md +170 -0
- package/dist/global-skills/firebase-data-connect/reference/operations.md +385 -0
- package/dist/global-skills/firebase-data-connect/reference/realtime.md +210 -0
- package/dist/global-skills/firebase-data-connect/reference/schema.md +290 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_admin_node.md +141 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_android.md +126 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_flutter.md +134 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_ios.md +157 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_web.md +146 -0
- package/dist/global-skills/firebase-data-connect/reference/search.md +264 -0
- package/dist/global-skills/firebase-data-connect/reference/security.md +295 -0
- package/dist/global-skills/firebase-data-connect/templates.md +318 -0
- package/dist/global-skills/firebase-firestore/SKILL.md +89 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/android_sdk_usage.md +230 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/data_model.md +66 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/flutter_setup.md +180 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/indexes.md +135 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/ios_setup.md +189 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/provisioning.md +118 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/python_sdk_usage.md +138 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/security_rules.md +577 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/web_sdk_usage.md +127 -0
- package/dist/global-skills/firebase-firestore/references/standard/android_sdk_usage.md +193 -0
- package/dist/global-skills/firebase-firestore/references/standard/flutter_setup.md +176 -0
- package/dist/global-skills/firebase-firestore/references/standard/indexes.md +113 -0
- package/dist/global-skills/firebase-firestore/references/standard/ios_setup.md +174 -0
- package/dist/global-skills/firebase-firestore/references/standard/provisioning.md +110 -0
- package/dist/global-skills/firebase-firestore/references/standard/security_rules.md +577 -0
- package/dist/global-skills/firebase-firestore/references/standard/web_sdk_usage.md +192 -0
- package/dist/global-skills/firebase-hosting-basics/SKILL.md +64 -0
- package/dist/global-skills/firebase-hosting-basics/references/configuration.md +115 -0
- package/dist/global-skills/firebase-hosting-basics/references/deploying.md +48 -0
- package/dist/global-skills/firebase-remote-config-basics/SKILL.md +124 -0
- package/dist/global-skills/firebase-remote-config-basics/references/android_setup.md +91 -0
- package/dist/global-skills/firebase-remote-config-basics/references/ios_setup.md +89 -0
- package/dist/global-skills/firebase-security-rules-auditor/SKILL.md +70 -0
- package/dist/global-skills/go-live/SKILL.md +90 -0
- package/dist/global-skills/harden/SKILL.md +101 -0
- package/dist/global-skills/instrument-feature-flags/SKILL.md +88 -0
- package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +3578 -0
- package/dist/global-skills/instrument-feature-flags/references/android.md +146 -0
- package/dist/global-skills/instrument-feature-flags/references/api.md +194 -0
- package/dist/global-skills/instrument-feature-flags/references/best-practices.md +231 -0
- package/dist/global-skills/instrument-feature-flags/references/django.md +263 -0
- package/dist/global-skills/instrument-feature-flags/references/dotnet.md +763 -0
- package/dist/global-skills/instrument-feature-flags/references/elixir.md +47 -0
- package/dist/global-skills/instrument-feature-flags/references/flask.md +131 -0
- package/dist/global-skills/instrument-feature-flags/references/flutter.md +212 -0
- package/dist/global-skills/instrument-feature-flags/references/go.md +208 -0
- package/dist/global-skills/instrument-feature-flags/references/ios.md +146 -0
- package/dist/global-skills/instrument-feature-flags/references/java.md +94 -0
- package/dist/global-skills/instrument-feature-flags/references/laravel.md +170 -0
- package/dist/global-skills/instrument-feature-flags/references/next-js.md +383 -0
- package/dist/global-skills/instrument-feature-flags/references/nodejs.md +216 -0
- package/dist/global-skills/instrument-feature-flags/references/php.md +187 -0
- package/dist/global-skills/instrument-feature-flags/references/python.md +191 -0
- package/dist/global-skills/instrument-feature-flags/references/react-native.md +166 -0
- package/dist/global-skills/instrument-feature-flags/references/react.md +302 -0
- package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +604 -0
- package/dist/global-skills/instrument-feature-flags/references/ruby.md +200 -0
- package/dist/global-skills/instrument-feature-flags/references/rust.md +222 -0
- package/dist/global-skills/instrument-feature-flags/references/usage.md +600 -0
- package/dist/global-skills/instrument-feature-flags/references/web.md +193 -0
- package/dist/global-skills/instrument-product-analytics/SKILL.md +139 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-android.md +1639 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-angular.md +944 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-hybrid.md +1001 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-ssr.md +1004 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-static.md +720 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-view-transitions.md +810 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-django.md +1167 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-expo.md +1412 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-fastapi.md +1585 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-flask.md +1208 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-laravel.md +2267 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-next-app-router.md +712 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-next-pages-router.md +767 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-nuxt-3-6.md +939 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-nuxt-4.md +1078 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-php.md +527 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-python.md +481 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-native.md +1823 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-6.md +582 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-7-data.md +892 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-7-declarative.md +649 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-7-framework.md +1218 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-tanstack-router-code-based.md +793 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-tanstack-router-file-based.md +780 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby-on-rails.md +1320 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby.md +452 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-sveltekit.md +854 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-swift.md +665 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-tanstack-start.md +1199 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-vue-3.md +910 -0
- package/dist/global-skills/instrument-product-analytics/references/android.md +811 -0
- package/dist/global-skills/instrument-product-analytics/references/angular.md +376 -0
- package/dist/global-skills/instrument-product-analytics/references/astro.md +165 -0
- package/dist/global-skills/instrument-product-analytics/references/configuration.md +299 -0
- package/dist/global-skills/instrument-product-analytics/references/django.md +263 -0
- package/dist/global-skills/instrument-product-analytics/references/dotnet.md +763 -0
- package/dist/global-skills/instrument-product-analytics/references/elixir.md +414 -0
- package/dist/global-skills/instrument-product-analytics/references/flask.md +131 -0
- package/dist/global-skills/instrument-product-analytics/references/flutter.md +845 -0
- package/dist/global-skills/instrument-product-analytics/references/go.md +567 -0
- package/dist/global-skills/instrument-product-analytics/references/identify-users.md +272 -0
- package/dist/global-skills/instrument-product-analytics/references/ios.md +154 -0
- package/dist/global-skills/instrument-product-analytics/references/laravel.md +170 -0
- package/dist/global-skills/instrument-product-analytics/references/next-js.md +383 -0
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +244 -0
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +253 -0
- package/dist/global-skills/instrument-product-analytics/references/php.md +646 -0
- package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +1675 -0
- package/dist/global-skills/instrument-product-analytics/references/python.md +898 -0
- package/dist/global-skills/instrument-product-analytics/references/react-native.md +1338 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +376 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +364 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +376 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +479 -0
- package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +604 -0
- package/dist/global-skills/instrument-product-analytics/references/ruby.md +759 -0
- package/dist/global-skills/instrument-product-analytics/references/svelte.md +234 -0
- package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +193 -0
- package/dist/global-skills/instrument-product-analytics/references/usage.md +600 -0
- package/dist/global-skills/instrument-product-analytics/references/vue-js.md +306 -0
- package/dist/global-skills/manifest.json +125 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/SKILL.md +284 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/connection-configs.md +298 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/development-workflow.md +304 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/mcp-troubleshooting.md +55 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/output-diagnostics.md +150 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/pipeline-patterns.md +457 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/sizing-and-parallelism.md +178 -0
- package/dist/global-skills/mongodb-connection/SKILL.md +201 -0
- package/dist/global-skills/mongodb-connection/references/monitoring-guide.md +191 -0
- package/dist/global-skills/mongodb-mcp-setup/SKILL.md +324 -0
- package/dist/global-skills/mongodb-natural-language-querying/SKILL.md +195 -0
- package/dist/global-skills/mongodb-query-optimizer/SKILL.md +150 -0
- package/dist/global-skills/mongodb-query-optimizer/references/aggregation-optimization.md +210 -0
- package/dist/global-skills/mongodb-query-optimizer/references/antipattern-examples.md +74 -0
- package/dist/global-skills/mongodb-query-optimizer/references/core-indexing-principles.md +134 -0
- package/dist/global-skills/mongodb-query-optimizer/references/update-query-examples.md +39 -0
- package/dist/global-skills/mongodb-schema-design/SKILL.md +181 -0
- package/dist/global-skills/mongodb-schema-design/references/antipattern-excessive-lookups.md +84 -0
- package/dist/global-skills/mongodb-schema-design/references/antipattern-unnecessary-collections.md +91 -0
- package/dist/global-skills/mongodb-schema-design/references/antipattern-unnecessary-indexes.md +95 -0
- package/dist/global-skills/mongodb-schema-design/references/fundamental-document-model.md +91 -0
- package/dist/global-skills/mongodb-schema-design/references/fundamental-document-size.md +226 -0
- package/dist/global-skills/mongodb-schema-design/references/fundamental-embed-vs-reference.md +418 -0
- package/dist/global-skills/mongodb-schema-design/references/fundamental-schema-validation.md +131 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-approximation.md +80 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-archive.md +143 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-attribute.md +77 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-bucket.md +102 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-computed.md +162 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-document-versioning.md +166 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-extended-reference.md +72 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-outlier.md +159 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-polymorphic.md +167 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-schema-versioning.md +273 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-time-series-collections.md +190 -0
- package/dist/global-skills/mongodb-schema-design/references/source-query-stats.md +123 -0
- package/dist/global-skills/mongodb-schema-design/references/source-slow-query-logs.md +63 -0
- package/dist/global-skills/mongodb-search-and-ai/SKILL.md +142 -0
- package/dist/global-skills/mongodb-search-and-ai/references/hybrid-search.md +697 -0
- package/dist/global-skills/mongodb-search-and-ai/references/lexical-search-indexing.md +584 -0
- package/dist/global-skills/mongodb-search-and-ai/references/lexical-search-querying.md +636 -0
- package/dist/global-skills/mongodb-search-and-ai/references/vector-search.md +746 -0
- package/dist/global-skills/native-data-fetching/SKILL.md +505 -0
- package/dist/global-skills/native-data-fetching/agents/openai.yaml +4 -0
- package/dist/global-skills/native-data-fetching/references/expo-router-loaders.md +341 -0
- package/dist/global-skills/neon/SKILL.md +343 -0
- package/dist/global-skills/neon-ai-gateway/SKILL.md +236 -0
- package/dist/global-skills/neon-functions/SKILL.md +490 -0
- package/dist/global-skills/neon-functions/references/ai-sdk.md +139 -0
- package/dist/global-skills/neon-functions/references/hono-websockets.md +145 -0
- package/dist/global-skills/neon-functions/references/mastra-studio.md +127 -0
- package/dist/global-skills/neon-functions/references/mcp.md +137 -0
- package/dist/global-skills/neon-functions/references/sentry.md +131 -0
- package/dist/global-skills/neon-functions/references/sse.md +143 -0
- package/dist/global-skills/neon-object-storage/SKILL.md +197 -0
- package/dist/global-skills/neon-postgres/SKILL.md +376 -0
- package/dist/global-skills/neon-postgres-branches/SKILL.md +281 -0
- package/dist/global-skills/neon-postgres-egress-optimizer/SKILL.md +247 -0
- package/dist/global-skills/onboarding/SKILL.md +101 -0
- package/dist/global-skills/plan-my-idea/SKILL.md +67 -0
- package/dist/global-skills/publish-app/SKILL.md +72 -0
- package/dist/global-skills/publish-extension/SKILL.md +47 -0
- package/dist/global-skills/resend/SKILL.md +294 -0
- package/dist/global-skills/resend/references/api-keys.md +98 -0
- package/dist/global-skills/resend/references/automations.md +228 -0
- package/dist/global-skills/resend/references/broadcasts.md +125 -0
- package/dist/global-skills/resend/references/contact-properties.md +111 -0
- package/dist/global-skills/resend/references/contacts.md +174 -0
- package/dist/global-skills/resend/references/domains.md +179 -0
- package/dist/global-skills/resend/references/events.md +119 -0
- package/dist/global-skills/resend/references/fetch-all-templates.mjs +37 -0
- package/dist/global-skills/resend/references/installation.md +142 -0
- package/dist/global-skills/resend/references/logs.md +161 -0
- package/dist/global-skills/resend/references/receiving.md +287 -0
- package/dist/global-skills/resend/references/segments.md +77 -0
- package/dist/global-skills/resend/references/sending/batch-email-examples.md +807 -0
- package/dist/global-skills/resend/references/sending/best-practices.md +453 -0
- package/dist/global-skills/resend/references/sending/email-management.md +135 -0
- package/dist/global-skills/resend/references/sending/overview.md +209 -0
- package/dist/global-skills/resend/references/sending/single-email-examples.md +470 -0
- package/dist/global-skills/resend/references/templates.md +202 -0
- package/dist/global-skills/resend/references/topics.md +104 -0
- package/dist/global-skills/resend/references/webhooks.md +317 -0
- package/dist/global-skills/reset-password/SKILL.md +59 -0
- package/dist/global-skills/save-data/SKILL.md +70 -0
- package/dist/global-skills/sentry-sdk-setup/SKILL.md +116 -0
- package/dist/global-skills/sentry-workflow/SKILL.md +32 -0
- package/dist/global-skills/setup-email/SKILL.md +69 -0
- package/dist/global-skills/setup-payments/SKILL.md +82 -0
- package/dist/global-skills/setup-sms/SKILL.md +51 -0
- package/dist/global-skills/sign-in-with-email-link/SKILL.md +53 -0
- package/dist/global-skills/sign-in-with-google/SKILL.md +68 -0
- package/dist/global-skills/sign-in-with-phone/SKILL.md +53 -0
- package/dist/global-skills/stripe-best-practices/SKILL.md +48 -0
- package/dist/global-skills/stripe-best-practices/references/billing.md +58 -0
- package/dist/global-skills/stripe-best-practices/references/connect.md +173 -0
- package/dist/global-skills/stripe-best-practices/references/payments.md +79 -0
- package/dist/global-skills/stripe-best-practices/references/security.md +109 -0
- package/dist/global-skills/stripe-best-practices/references/tax.md +37 -0
- package/dist/global-skills/stripe-best-practices/references/treasury.md +16 -0
- package/dist/global-skills/supabase/CHANGELOG.md +53 -0
- package/dist/global-skills/supabase/SKILL.md +145 -0
- package/dist/global-skills/supabase/assets/feedback-issue-template.md +17 -0
- package/dist/global-skills/supabase/references/skill-feedback.md +17 -0
- package/dist/global-skills/supabase-postgres-best-practices/CHANGELOG.md +43 -0
- package/dist/global-skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/dist/global-skills/track-errors/SKILL.md +67 -0
- package/dist/global-skills/update-kit/SKILL.md +75 -0
- package/dist/global-skills/upgrading-expo/SKILL.md +134 -0
- package/dist/global-skills/upgrading-expo/agents/openai.yaml +4 -0
- package/dist/global-skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/dist/global-skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/dist/global-skills/upgrading-expo/references/native-tabs.md +124 -0
- package/dist/global-skills/upgrading-expo/references/new-architecture.md +79 -0
- package/dist/global-skills/upgrading-expo/references/react-19.md +79 -0
- package/dist/global-skills/upgrading-expo/references/react-compiler.md +59 -0
- package/dist/global-skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
- package/dist/global-skills/use-dom/SKILL.md +417 -0
- package/dist/global-skills/use-dom/agents/openai.yaml +4 -0
- package/dist/global-skills/use-kit-mcp/SKILL.md +100 -0
- package/dist/global-skills/use-railway/SKILL.md +357 -0
- package/dist/global-skills/use-railway/references/analyze-db-mongo.md +84 -0
- package/dist/global-skills/use-railway/references/analyze-db-mysql.md +254 -0
- package/dist/global-skills/use-railway/references/analyze-db-postgres.md +479 -0
- package/dist/global-skills/use-railway/references/analyze-db-redis.md +208 -0
- package/dist/global-skills/use-railway/references/analyze-db.md +344 -0
- package/dist/global-skills/use-railway/references/configure.md +359 -0
- package/dist/global-skills/use-railway/references/deploy.md +225 -0
- package/dist/global-skills/use-railway/references/feature-flags.md +89 -0
- package/dist/global-skills/use-railway/references/iac.md +108 -0
- package/dist/global-skills/use-railway/references/operate.md +273 -0
- package/dist/global-skills/use-railway/references/request.md +262 -0
- package/dist/global-skills/use-railway/references/sandbox.md +167 -0
- package/dist/global-skills/use-railway/references/setup.md +364 -0
- package/dist/global-skills/use-railway/scripts/analyze-mongo.py +1549 -0
- package/dist/global-skills/use-railway/scripts/analyze-mysql.py +1195 -0
- package/dist/global-skills/use-railway/scripts/analyze-postgres.py +3058 -0
- package/dist/global-skills/use-railway/scripts/analyze-redis.py +1090 -0
- package/dist/global-skills/use-railway/scripts/dal.py +671 -0
- package/dist/global-skills/use-railway/scripts/enable-pg-stats.py +170 -0
- package/dist/global-skills/use-railway/scripts/pg-extensions.py +370 -0
- package/dist/global-skills/use-railway/scripts/railway-api.sh +52 -0
- package/dist/global-skills/vercel-composition-patterns/AGENTS.md +946 -0
- package/dist/global-skills/vercel-composition-patterns/README.md +60 -0
- package/dist/global-skills/vercel-composition-patterns/SKILL.md +89 -0
- package/dist/global-skills/vercel-composition-patterns/metadata.json +11 -0
- package/dist/global-skills/vercel-composition-patterns/rules/_sections.md +29 -0
- package/dist/global-skills/vercel-composition-patterns/rules/_template.md +24 -0
- package/dist/global-skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/dist/global-skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/dist/global-skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/dist/global-skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/dist/global-skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/dist/global-skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/dist/global-skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/dist/global-skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/dist/global-skills/vercel-react-best-practices/AGENTS.md +3810 -0
- package/dist/global-skills/vercel-react-best-practices/README.md +123 -0
- package/dist/global-skills/vercel-react-best-practices/SKILL.md +149 -0
- package/dist/global-skills/vercel-react-best-practices/metadata.json +15 -0
- package/dist/global-skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/dist/global-skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/dist/global-skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/dist/global-skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/global-skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/dist/global-skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md +63 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/global-skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/global-skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/global-skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/global-skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/dist/global-skills/web-to-native/SKILL.md +83 -0
- package/dist/global-skills/web-to-native/references/false-friends.md +119 -0
- package/dist/global-skills/web-to-native/references/native-patterns.md +39 -0
- package/dist/global-skills/web-to-native/references/run-as-goal.md +48 -0
- package/dist/global-skills/web-to-native/references/verify-on-device.md +45 -0
- package/dist/global-skills/wire-auth/SKILL.md +28 -0
- package/dist/global-skills/wire-database/SKILL.md +28 -0
- package/dist/global-skills/wire-email/SKILL.md +27 -0
- package/dist/global-skills/wire-payments/SKILL.md +27 -0
- package/dist/global-skills/workers-best-practices/SKILL.md +127 -0
- package/dist/global-skills/workers-best-practices/references/review.md +174 -0
- package/dist/global-skills/workers-best-practices/references/rules.md +463 -0
- package/dist/global-skills/wrangler/SKILL.md +922 -0
- package/dist/global-skills/xcode-project-setup/SKILL.md +140 -0
- package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Package.resolved +41 -0
- package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Package.swift +17 -0
- package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Sources/main.swift +232 -0
- package/package.json +21 -20
- package/LICENSE.md +0 -47
- package/dist/index.js +0 -21593
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Apple Zoom Transitions
|
|
2
|
+
|
|
3
|
+
Fluid zoom transitions for navigating between screens. iOS 18+, Expo SDK 55+, Stack navigator only.
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
import { Link } from "expo-router";
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Basic Zoom
|
|
10
|
+
|
|
11
|
+
Use `withAppleZoom` on `Link.Trigger` to zoom the entire trigger element into the destination screen:
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Link href="/photo" asChild>
|
|
15
|
+
<Link.Trigger withAppleZoom>
|
|
16
|
+
<Pressable>
|
|
17
|
+
<Image
|
|
18
|
+
source={{ uri: "https://example.com/thumb.jpg" }}
|
|
19
|
+
style={{ width: 120, height: 120, borderRadius: 12 }}
|
|
20
|
+
/>
|
|
21
|
+
</Pressable>
|
|
22
|
+
</Link.Trigger>
|
|
23
|
+
</Link>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Targeted Zoom with `Link.AppleZoom`
|
|
27
|
+
|
|
28
|
+
Wrap only the element that should animate. Siblings outside `Link.AppleZoom` are not part of the transition:
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
<Link href="/photo" asChild>
|
|
32
|
+
<Link.Trigger>
|
|
33
|
+
<Pressable style={{ alignItems: "center" }}>
|
|
34
|
+
<Link.AppleZoom>
|
|
35
|
+
<Image
|
|
36
|
+
source={{ uri: "https://example.com/thumb.jpg" }}
|
|
37
|
+
style={{ width: 200, aspectRatio: 4 / 3 }}
|
|
38
|
+
/>
|
|
39
|
+
</Link.AppleZoom>
|
|
40
|
+
<Text>Caption text (not zoomed)</Text>
|
|
41
|
+
</Pressable>
|
|
42
|
+
</Link.Trigger>
|
|
43
|
+
</Link>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`Link.AppleZoom` accepts only a single child element.
|
|
47
|
+
|
|
48
|
+
## Destination Target
|
|
49
|
+
|
|
50
|
+
Use `Link.AppleZoomTarget` on the destination screen to align the zoom animation to a specific element:
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
// Destination screen (e.g., app/photo.tsx)
|
|
54
|
+
import { Link } from "expo-router";
|
|
55
|
+
|
|
56
|
+
export default function PhotoScreen() {
|
|
57
|
+
return (
|
|
58
|
+
<View style={{ flex: 1 }}>
|
|
59
|
+
<Link.AppleZoomTarget>
|
|
60
|
+
<Image
|
|
61
|
+
source={{ uri: "https://example.com/full.jpg" }}
|
|
62
|
+
style={{ width: "100%", aspectRatio: 4 / 3 }}
|
|
63
|
+
/>
|
|
64
|
+
</Link.AppleZoomTarget>
|
|
65
|
+
<Text>Photo details below</Text>
|
|
66
|
+
</View>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Without a target, the zoom animates to fill the entire destination screen.
|
|
72
|
+
|
|
73
|
+
## Custom Alignment Rectangle
|
|
74
|
+
|
|
75
|
+
For manual control over where the zoom lands on the destination, use `alignmentRect` instead of `Link.AppleZoomTarget`:
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
<Link.AppleZoom alignmentRect={{ x: 0, y: 0, width: 200, height: 300 }}>
|
|
79
|
+
<Image source={{ uri: "https://example.com/thumb.jpg" }} />
|
|
80
|
+
</Link.AppleZoom>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Coordinates are in the destination screen's coordinate space. Prefer `Link.AppleZoomTarget` when possible — use `alignmentRect` only when the target element isn't available as a React component.
|
|
84
|
+
|
|
85
|
+
## Controlling Dismissal
|
|
86
|
+
|
|
87
|
+
Zoom screens support interactive dismissal gestures by default (pinch, swipe down when scrolled to top, swipe from leading edge). Use `usePreventZoomTransitionDismissal` on the destination screen to control this.
|
|
88
|
+
|
|
89
|
+
### Disable all dismissal gestures
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
import { usePreventZoomTransitionDismissal } from "expo-router";
|
|
93
|
+
|
|
94
|
+
export default function PhotoScreen() {
|
|
95
|
+
usePreventZoomTransitionDismissal();
|
|
96
|
+
return <Image source={{ uri: "https://example.com/full.jpg" }} />;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Restrict dismissal to a specific area
|
|
101
|
+
|
|
102
|
+
Use `unstable_dismissalBoundsRect` to prevent conflicts with scrollable content:
|
|
103
|
+
|
|
104
|
+
```tsx
|
|
105
|
+
usePreventZoomTransitionDismissal({
|
|
106
|
+
unstable_dismissalBoundsRect: {
|
|
107
|
+
minX: 0,
|
|
108
|
+
minY: 0,
|
|
109
|
+
maxX: 300,
|
|
110
|
+
maxY: 300,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
This is useful when the destination contains a zoomable scroll view — the system gives that scroll view precedence over the dismiss gesture.
|
|
116
|
+
|
|
117
|
+
## Combining with Link.Preview
|
|
118
|
+
|
|
119
|
+
Zoom transitions work alongside long-press previews:
|
|
120
|
+
|
|
121
|
+
```tsx
|
|
122
|
+
<Link href="/photo" asChild>
|
|
123
|
+
<Link.Trigger withAppleZoom>
|
|
124
|
+
<Pressable>
|
|
125
|
+
<Image
|
|
126
|
+
source={{ uri: "https://example.com/thumb.jpg" }}
|
|
127
|
+
style={{ width: 120, height: 120 }}
|
|
128
|
+
/>
|
|
129
|
+
</Pressable>
|
|
130
|
+
</Link.Trigger>
|
|
131
|
+
<Link.Preview />
|
|
132
|
+
</Link>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Best Practices
|
|
136
|
+
|
|
137
|
+
**Good use cases:**
|
|
138
|
+
- Thumbnail → full image (gallery, profile photos)
|
|
139
|
+
- Card → detail screen with similar visual content
|
|
140
|
+
- Source and destination with similar aspect ratios
|
|
141
|
+
|
|
142
|
+
**Avoid:**
|
|
143
|
+
- Skinny full-width list rows as zoom sources — the transition looks unnatural
|
|
144
|
+
- Mismatched aspect ratios between source and destination without `alignmentRect`
|
|
145
|
+
- Using zoom with sheets or popovers — only works in Stack navigator
|
|
146
|
+
- Hiding the navigation bar — known issues with header visibility during transitions
|
|
147
|
+
|
|
148
|
+
**Tips:**
|
|
149
|
+
- Always provide a close or back button — dismissal gestures are not discoverable
|
|
150
|
+
- If the destination has a zoomable scroll view, use `unstable_dismissalBoundsRect` to avoid gesture conflicts
|
|
151
|
+
- Source view doesn't need to match the tap target — only the `Link.AppleZoom` wrapped element animates
|
|
152
|
+
- When source is unavailable (e.g., scrolled off screen), the transition zooms from the center of the screen
|
|
153
|
+
|
|
154
|
+
## References
|
|
155
|
+
|
|
156
|
+
- Expo Router Zoom Transitions: https://docs.expo.dev/router/advanced/zoom-transition/
|
|
157
|
+
- Link.AppleZoom API: https://docs.expo.dev/versions/v55.0.0/sdk/router/#linkapplezoom
|
|
158
|
+
- Apple UIKit Fluid Transitions: https://developer.apple.com/documentation/uikit/enhancing-your-app-with-fluid-transitions
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: buy-domain
|
|
3
|
+
description: the app uses the builder's own web address instead of a temporary one. Use when the builder says something like: get a domain; buy a web address; my own url.
|
|
4
|
+
metadata:
|
|
5
|
+
vybekiit-generated: buyer-skill-stub
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- vybekiit:generated:buyer-skill-stub -->
|
|
9
|
+
|
|
10
|
+
# Skill: buy-domain
|
|
11
|
+
|
|
12
|
+
**Goal:** the app uses the builder's own web address instead of a temporary one.
|
|
13
|
+
|
|
14
|
+
**Contract:** one action at a time · verify-before-advance · plain language (`language.md`) ·
|
|
15
|
+
translate every error · celebrate. You do the connecting; the builder chooses the name and pays for
|
|
16
|
+
it.
|
|
17
|
+
|
|
18
|
+
> (Under the hood — agent-only) Register and connect through `@vybekiit/deploy`'s `resolveHosting()`
|
|
19
|
+
> — Cloudflare by default, AWS if the builder's setup uses it. Never name the host to the builder.
|
|
20
|
+
> When nameserver automation needs registrar API keys (Namecheap or GoDaddy), use
|
|
21
|
+
> `registrar-vybekiit.md` + `vybekiit-automate nc|gd setup --json` before step 2.
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
<!-- vybekiit:page-recipe-install -->
|
|
26
|
+
0. **Install the launch checklist recipe first (catalog SSOT — Option C).**
|
|
27
|
+
Copy `apps/componentLibrary/src/pageRecipes/LaunchChecklistPage.tsx` export `LaunchChecklistPage` into the buyer app at route `/dashboard/launch`
|
|
28
|
+
(reuse if `go-live` already installed it).
|
|
29
|
+
Recipe id: `launch-checklist`. Preset: job_runs when deploy jobs are tracked.
|
|
30
|
+
Keep every `TODO:` in the recipe and wire domain checklist items after the route renders.
|
|
31
|
+
Also reference `packages/agentKit` `getPageRecipeInstall('buy-domain')` / page-recipe-manifest.json.
|
|
32
|
+
**Verify:** `/dashboard/launch` builds with practice checklist UI.
|
|
33
|
+
|
|
34
|
+
1. **Help them choose a name.** Talk through a web address they'd like. Check it's available and
|
|
35
|
+
guide registration **one step at a time** — they pay for it (it's their address).
|
|
36
|
+
**Verify:** the domain is registered to them.
|
|
37
|
+
|
|
38
|
+
2. **Connect it to the live app.** Point the new address at their app for them.
|
|
39
|
+
**Verify:** the connection is set up. Note the address can take a little while to start
|
|
40
|
+
working — don't move on until it actually loads.
|
|
41
|
+
|
|
42
|
+
3. **Update the app's web address settings.** Set `APP_URL` (and the sign-in addresses) to the new
|
|
43
|
+
domain for them — never make them hand-edit settings.
|
|
44
|
+
**Verify:** the settings point to the new address.
|
|
45
|
+
|
|
46
|
+
4. **Open it for real.** Visit the new web address.
|
|
47
|
+
**Verify:** the app loads at their domain over a secure (padlock) connection.
|
|
48
|
+
🎉 *Celebrate* — the app lives at their own address now.
|
|
49
|
+
|
|
50
|
+
## If anything breaks
|
|
51
|
+
|
|
52
|
+
Run `doctor`. A new address often just needs a little more time to start working, or one setting
|
|
53
|
+
still points at the old address — fix it for them, don't explain the internals.
|
|
54
|
+
|
|
55
|
+
## Definition of done
|
|
56
|
+
|
|
57
|
+
The app loads at the builder's own web address with the padlock showing, and its address settings
|
|
58
|
+
match.
|
|
59
|
+
|
|
60
|
+
## After completing this skill
|
|
61
|
+
|
|
62
|
+
Append one entry to `checklist.md` Decision log using `formatChecklistEntry({ from, to, because })`.
|
|
63
|
+
|
|
64
|
+
If MCP or first debug fails once, run `vybekiit doc-fallback <tech-id>` and tell the builder only: *"I'm double-checking the official setup guide for this — hang tight, I'll have the next step in a moment."*
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: check-safety
|
|
3
|
+
description: confirm the app is protected end-to-end before ship — abuse, database safety, and every. Use when the builder says something like: am i ready to ship; is my app safe; did we cover security.
|
|
4
|
+
metadata:
|
|
5
|
+
vybekiit-generated: buyer-skill-stub
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- vybekiit:generated:buyer-skill-stub -->
|
|
9
|
+
|
|
10
|
+
# Skill: check-safety
|
|
11
|
+
|
|
12
|
+
**Goal:** confirm the app is protected end-to-end before ship — abuse, database safety, and every
|
|
13
|
+
API route classified correctly. Output a plain pass/fail summary for the builder.
|
|
14
|
+
|
|
15
|
+
**Contract:** one action at a time · verify-before-advance · plain language · celebrate when green.
|
|
16
|
+
|
|
17
|
+
## Steps
|
|
18
|
+
|
|
19
|
+
<!-- vybekiit:page-recipe-install -->
|
|
20
|
+
0. **Install the page recipe first (catalog SSOT — Option C).**
|
|
21
|
+
Copy `apps/componentLibrary/src/pageRecipes/SafetyPage.tsx` export `SafetyPage` into the buyer app at route `/dashboard/safety`.
|
|
22
|
+
Recipe id: `safety`. Presets: none.
|
|
23
|
+
Keep every `TODO:` in the recipe and wire each one after the route renders.
|
|
24
|
+
Also reference `packages/agentKit` `getPageRecipeInstall('check-safety')` / page-recipe-manifest.json.
|
|
25
|
+
**Verify:** route builds and shows practice UI before provider wiring.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
1. **Abuse / DDoS layer.** Confirm `SECURITY_RATE_LIMIT` and `SECURITY_ORIGIN_LOCK` are `on` in
|
|
29
|
+
`.env`. Confirm `middleware.ts` passes the request path for tiered limits. Confirm `/api/webhook`
|
|
30
|
+
is **not** blocked by origin lock (payment providers POST cross-origin). Run quick probes: hammer
|
|
31
|
+
`/api/auth/signin` → expect "slow down"; submit `/api/contact` at human pace → still works.
|
|
32
|
+
**Verify:** login protected; contact form not throttled like login.
|
|
33
|
+
|
|
34
|
+
1b. **Scheduled tasks (cron safety).** If the app has any scheduled tasks (cron jobs, Vercel crons,
|
|
35
|
+
Supabase pg_cron, Cloudflare Cron Triggers):
|
|
36
|
+
- Confirm interval is 15 minutes or more for any task that touches the database
|
|
37
|
+
- Confirm tasks only run during active hours (not 24/7) unless truly needed
|
|
38
|
+
- If on a free-tier database (Supabase Free, Neon Free): warn that frequent crons prevent
|
|
39
|
+
auto-suspend and burn compute quota — the app will go down with no way to deploy a fix
|
|
40
|
+
**Verify:** no cron will silently exhaust the free tier.
|
|
41
|
+
|
|
42
|
+
2. **SQL / database safety.** Grep for raw SQL, `$executeRaw`, or string-built queries — replace with
|
|
43
|
+
`@vybekiit/db` `DataProvider`. If Supabase: confirm RLS on buyer tables. Every API route validates
|
|
44
|
+
input with zod at the boundary.
|
|
45
|
+
**Verify:** no raw SQL in app code; DataProvider-only data access.
|
|
46
|
+
|
|
47
|
+
3. **Endpoint taxonomy.** Audit every `/api/*` route:
|
|
48
|
+
- Public forms (contact, waitlist) → lenient limit, no session
|
|
49
|
+
- Auth routes → strict limit
|
|
50
|
+
- Webhooks → signature verified, origin lock off
|
|
51
|
+
- `/api/me` and user data → session required
|
|
52
|
+
- Admin / bulk export → must not exist without auth
|
|
53
|
+
**Verify:** each route matches the table; fix misclassified routes.
|
|
54
|
+
|
|
55
|
+
4. **Toolchain.** Run `vybekiit doctor` — agent CLIs, cloud CLIs, platform skills present.
|
|
56
|
+
If Google sign-in was requested: `GOOGLE_OAUTH_*` populated, gcloud signed in.
|
|
57
|
+
|
|
58
|
+
5. **Edge (at go-live).** Confirm `infra/cloudflare/` edge worker uses the same `SECURITY_*` toggles.
|
|
59
|
+
**Verify:** dual-layer protection documented in go-live.
|
|
60
|
+
|
|
61
|
+
6. **Code readiness (agent-only checks).** Run silently; summarize in plain English:
|
|
62
|
+
- `node scripts/checkNoConsole.mjs` — no debug `console.log` in `app/` or `src/`
|
|
63
|
+
- Scan `src/lib/` for duplicate exported function names; merge duplicates
|
|
64
|
+
- Spot-check API routes use `@/lib/logger` instead of bare console
|
|
65
|
+
- If going live with alerts: when `OBSERVABILITY_PROVIDER=sentry`, confirm `SENTRY_DSN` is set
|
|
66
|
+
- Scan for fire-and-forget async calls in API routes and crons: any `logX()`, `trackX()`, or
|
|
67
|
+
`sendX()` called without `await` (or without `waitUntil`). In serverless, un-awaited async
|
|
68
|
+
work is killed after response — the work silently never happens. Flag and fix.
|
|
69
|
+
- Never remove a navigation or layout component without confirming which element the builder
|
|
70
|
+
means (contract rule ⑨).
|
|
71
|
+
**Verify:** tell the builder *"Your app is quiet in production and uses one place for each kind of logic."*
|
|
72
|
+
|
|
73
|
+
7. **UI consistency (agent-only).** Grep checks:
|
|
74
|
+
- Raw `<button` / `<input` outside `src/components/ui/` in `app/` and feature components → fix to kit primitives
|
|
75
|
+
- Forbidden UI libs (`@mui/`, `@chakra-ui/`, `antd`, `nativewind`, `@heroui/`) → must be empty in `app/` and `src/` except mirrored namespaces
|
|
76
|
+
- Namespaced mirrors (`src/components/bundui/`, `magicui/`, etc.) are upstream copies — normalize when composing screens in `app/`
|
|
77
|
+
- Arbitrary Tailwind `h-[`, `w-[`, `gap-[`, `mt-[` in `app/` → review and normalize
|
|
78
|
+
**Verify:** tell the builder *"Your app's buttons, spacing, and colors all match — it looks like one professional product."*
|
|
79
|
+
|
|
80
|
+
8. **Quality smoke (soft).** Run `pnpm verify` — format, lint, typecheck, and tests. Report pass/fail
|
|
81
|
+
in plain English. On warn-only Biome issues: fix obvious ones; do not block ship on style warnings
|
|
82
|
+
unless egregious.
|
|
83
|
+
**Verify:** tell the builder *"Your app is tested and tidy."*
|
|
84
|
+
|
|
85
|
+
## Definition of done
|
|
86
|
+
|
|
87
|
+
Plain-language summary: login protected, contact works, webhooks verified, database safe, code quiet in
|
|
88
|
+
production, UI consistent, tests and lint green, doctor green. 🎉 *Celebrate* when all layers pass.
|
|
89
|
+
|
|
90
|
+
## After completing this skill
|
|
91
|
+
|
|
92
|
+
Append one entry to `checklist.md` Decision log using `formatChecklistEntry({ from, to, because })`.
|
|
93
|
+
|
|
94
|
+
If MCP or first debug fails once, run `vybekiit doc-fallback <tech-id>` and tell the builder only: *"I'm double-checking the official setup guide for this — hang tight, I'll have the next step in a moment."*
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claimable-postgres
|
|
3
|
+
description: >-
|
|
4
|
+
Provision instant temporary Postgres databases via Claimable Postgres by Neon
|
|
5
|
+
(neon.new) with no login, signup, or credit card. Supports REST API, CLI, and
|
|
6
|
+
SDK. Use when users ask for a quick Postgres environment, a throwaway
|
|
7
|
+
DATABASE_URL for prototyping/tests, or "just give me a DB now". Triggers
|
|
8
|
+
include: "quick postgres", "temporary postgres", "no signup database",
|
|
9
|
+
"no credit card database", "instant DATABASE_URL", "npx neon-new", "neon.new",
|
|
10
|
+
"neon.new API", "claimable postgres API".
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Claimable Postgres
|
|
14
|
+
|
|
15
|
+
Instant Postgres databases for local development, demos, prototyping, and test environments. No account required. Databases expire after 72 hours unless claimed to a Neon account.
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
curl -s -X POST "https://neon.new/api/v1/database" \
|
|
21
|
+
-H "Content-Type: application/json" \
|
|
22
|
+
-d '{"ref": "agent-skills"}'
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Parse `connection_string` and `claim_url` from the JSON response. Write `connection_string` to the project's `.env` as `DATABASE_URL`.
|
|
26
|
+
|
|
27
|
+
For other methods (CLI, SDK, Vite plugin), see [Which Method?](#which-method) below.
|
|
28
|
+
|
|
29
|
+
## Which Method?
|
|
30
|
+
|
|
31
|
+
- **REST API**: Returns structured JSON. No runtime dependency beyond `curl`. Preferred when the agent needs predictable output and error handling.
|
|
32
|
+
- **CLI** (`npx neon-new@latest --yes`): Provisions and writes `.env` in one command. Convenient when Node.js is available and the user wants a simple setup.
|
|
33
|
+
- **SDK** (`neon-new/sdk`): Scripts or programmatic provisioning in Node.js.
|
|
34
|
+
- **Vite plugin** (`vite-plugin-neon-new`): Auto-provisions on `vite dev` if `DATABASE_URL` is missing. Use when the user has a Vite project.
|
|
35
|
+
- **Browser**: User cannot run CLI or API. Direct to https://neon.new.
|
|
36
|
+
|
|
37
|
+
## REST API
|
|
38
|
+
|
|
39
|
+
**Base URL:** `https://neon.new/api/v1`
|
|
40
|
+
|
|
41
|
+
### Create a database
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
curl -s -X POST "https://neon.new/api/v1/database" \
|
|
45
|
+
-H "Content-Type: application/json" \
|
|
46
|
+
-d '{"ref": "agent-skills"}'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
| Parameter | Required | Description |
|
|
50
|
+
| ---------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| `ref` | Yes | Tracking tag that identifies who provisioned the database. Use `"agent-skills"` when provisioning through this skill. |
|
|
52
|
+
| `enable_logical_replication` | No | Enable logical replication (default: false, cannot be disabled once enabled) |
|
|
53
|
+
|
|
54
|
+
The `connection_string` returned by the API is a pooled connection URL. For a direct (non-pooled) connection (e.g. Prisma migrations), remove `-pooler` from the hostname. The CLI writes both pooled and direct URLs automatically.
|
|
55
|
+
|
|
56
|
+
**Response:**
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"id": "019beb39-37fb-709d-87ac-7ad6198b89f7",
|
|
61
|
+
"status": "UNCLAIMED",
|
|
62
|
+
"neon_project_id": "gentle-scene-06438508",
|
|
63
|
+
"connection_string": "postgresql://...",
|
|
64
|
+
"claim_url": "https://neon.new/claim/019beb39-...",
|
|
65
|
+
"expires_at": "2026-01-26T14:19:14.580Z",
|
|
66
|
+
"created_at": "2026-01-23T14:19:14.580Z",
|
|
67
|
+
"updated_at": "2026-01-23T14:19:14.580Z"
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Check status
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
curl -s "https://neon.new/api/v1/database/{id}"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Returns the same response shape. Status transitions: `UNCLAIMED` -> `CLAIMING` -> `CLAIMED`. After the database is claimed, `connection_string` returns `null`.
|
|
78
|
+
|
|
79
|
+
### Error responses
|
|
80
|
+
|
|
81
|
+
| Condition | HTTP | Message |
|
|
82
|
+
| ---------------------- | ---- | -------------------------------- |
|
|
83
|
+
| Missing or empty `ref` | 400 | `Missing referrer` |
|
|
84
|
+
| Invalid database ID | 400 | `Database not found` |
|
|
85
|
+
| Invalid JSON body | 500 | `Failed to create the database.` |
|
|
86
|
+
|
|
87
|
+
## CLI
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npx neon-new@latest --yes
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Provisions a database and writes the connection string to `.env` in one step. Always use `@latest` and `--yes` (skips interactive prompts that would stall the agent).
|
|
94
|
+
|
|
95
|
+
### Pre-run Check
|
|
96
|
+
|
|
97
|
+
Check if `DATABASE_URL` (or the chosen key) already exists in the target `.env`. The CLI exits without provisioning if it finds the key.
|
|
98
|
+
|
|
99
|
+
If the key exists, offer the user three options:
|
|
100
|
+
|
|
101
|
+
1. Remove or comment out the existing line, then rerun.
|
|
102
|
+
2. Use `--env` to write to a different file (e.g. `--env .env.local`).
|
|
103
|
+
3. Use `--key` to write under a different variable name.
|
|
104
|
+
|
|
105
|
+
Get confirmation before proceeding.
|
|
106
|
+
|
|
107
|
+
### Options
|
|
108
|
+
|
|
109
|
+
| Option | Alias | Description | Default |
|
|
110
|
+
| ----------------------- | ----- | --------------------------------------------------------------------- | -------------- |
|
|
111
|
+
| `--yes` | `-y` | Skip prompts, use defaults | `false` |
|
|
112
|
+
| `--env` | `-e` | .env file path | `./.env` |
|
|
113
|
+
| `--key` | `-k` | Connection string env var key | `DATABASE_URL` |
|
|
114
|
+
| `--prefix` | `-p` | Prefix for generated public env vars | `PUBLIC_` |
|
|
115
|
+
| `--seed` | `-s` | Path to seed SQL file | none |
|
|
116
|
+
| `--logical-replication` | `-L` | Enable logical replication | `false` |
|
|
117
|
+
| `--ref` | `-r` | Referrer id (use `agent-skills` when provisioning through this skill) | none |
|
|
118
|
+
|
|
119
|
+
Alternative package managers: `yarn dlx neon-new@latest`, `pnpm dlx neon-new@latest`, `bunx neon-new@latest`, `deno run -A neon-new@latest`.
|
|
120
|
+
|
|
121
|
+
### Output
|
|
122
|
+
|
|
123
|
+
The CLI writes to the target `.env`:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
DATABASE_URL=postgresql://... # pooled (use for application queries)
|
|
127
|
+
DATABASE_URL_DIRECT=postgresql://... # direct (use for migrations, e.g. Prisma)
|
|
128
|
+
PUBLIC_POSTGRES_CLAIM_URL=https://neon.new/claim/...
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## SDK
|
|
132
|
+
|
|
133
|
+
Use for scripts and programmatic provisioning flows.
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
import { instantPostgres } from "neon-new";
|
|
137
|
+
|
|
138
|
+
const { databaseUrl, databaseUrlDirect, claimUrl, claimExpiresAt } =
|
|
139
|
+
await instantPostgres({
|
|
140
|
+
referrer: "agent-skills",
|
|
141
|
+
seed: { type: "sql-script", path: "./init.sql" },
|
|
142
|
+
});
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Returns `databaseUrl` (pooled), `databaseUrlDirect` (direct, for migrations), `claimUrl`, and `claimExpiresAt` (Date object). The `referrer` parameter is required.
|
|
146
|
+
|
|
147
|
+
## Vite Plugin
|
|
148
|
+
|
|
149
|
+
For Vite projects, `vite-plugin-neon-new` auto-provisions a database on `vite dev` if `DATABASE_URL` is missing. Install with `npm install -D vite-plugin-neon-new`. See the [Claimable Postgres docs](https://neon.com/docs/reference/claimable-postgres#vite-plugin) for configuration.
|
|
150
|
+
|
|
151
|
+
## Agent Workflow
|
|
152
|
+
|
|
153
|
+
### API path
|
|
154
|
+
|
|
155
|
+
1. **Confirm intent:** If the request is ambiguous, confirm the user wants a temporary, no-signup database. Skip this if they explicitly asked for a quick or temporary database.
|
|
156
|
+
2. **Provision:** POST to `https://neon.new/api/v1/database` with `{"ref": "agent-skills"}`.
|
|
157
|
+
3. **Parse response:** Extract `connection_string`, `claim_url`, and `expires_at` from the JSON response.
|
|
158
|
+
4. **Write .env:** Write `DATABASE_URL=<connection_string>` to the project's `.env` (or the user's preferred file and key). Do not overwrite an existing key without confirmation.
|
|
159
|
+
5. **Seed (if needed):** If the user has a seed SQL file, run it against the new database:
|
|
160
|
+
```bash
|
|
161
|
+
psql "$DATABASE_URL" -f seed.sql
|
|
162
|
+
```
|
|
163
|
+
6. **Report:** Tell the user where the connection string was written, which key was used, and share the claim URL. Remind them: the database works now; claim within 72 hours to keep it permanently.
|
|
164
|
+
7. **Optional:** Offer a quick connection test (e.g. `SELECT 1`).
|
|
165
|
+
|
|
166
|
+
### CLI path
|
|
167
|
+
|
|
168
|
+
1. **Check .env:** Check the target `.env` for an existing `DATABASE_URL` (or chosen key). If present, do not run. Offer remove, `--env`, or `--key` and get confirmation.
|
|
169
|
+
2. **Confirm intent:** If the request is ambiguous, confirm the user wants a temporary, no-signup database. Skip this if they explicitly asked for a quick or temporary database.
|
|
170
|
+
3. **Gather options:** Use defaults unless context suggests otherwise (e.g., user mentions a custom env file, seed SQL, or logical replication).
|
|
171
|
+
4. **Run:** Execute with `@latest --yes` plus the confirmed options. Always use `@latest` to avoid stale cached versions. `--yes` skips interactive prompts that would stall the agent.
|
|
172
|
+
```bash
|
|
173
|
+
npx neon-new@latest --yes --ref agent-skills --env .env.local --seed ./schema.sql
|
|
174
|
+
```
|
|
175
|
+
5. **Verify:** Confirm the connection string was written to the intended file.
|
|
176
|
+
6. **Report:** Tell the user where the connection string was written, which key was used, and that a claim URL is in the env file. Remind them: the database works now; claim within 72 hours to keep it permanently.
|
|
177
|
+
7. **Optional:** Offer a quick connection test (e.g. `SELECT 1`).
|
|
178
|
+
|
|
179
|
+
### Output Checklist
|
|
180
|
+
|
|
181
|
+
Always report:
|
|
182
|
+
|
|
183
|
+
- Where the connection string was written (e.g. `.env`)
|
|
184
|
+
- Which variable key was used (`DATABASE_URL` or custom key)
|
|
185
|
+
- The claim URL (from `.env` or API response)
|
|
186
|
+
- That unclaimed databases are temporary (72 hours)
|
|
187
|
+
|
|
188
|
+
## Claiming
|
|
189
|
+
|
|
190
|
+
Claiming is optional. The database works immediately without it. To optionally claim, the user opens the claim URL in a browser, where they sign in or create a Neon account to claim the database.
|
|
191
|
+
|
|
192
|
+
- **API/SDK:** Give the user the `claim_url` from the create response.
|
|
193
|
+
- **CLI:** `npx neon-new@latest claim` reads the claim URL from `.env` and opens the browser automatically.
|
|
194
|
+
|
|
195
|
+
Users cannot claim into Vercel-linked orgs; they must choose another Neon org.
|
|
196
|
+
|
|
197
|
+
## Neon Infrastructure as Code (`neon.ts`)
|
|
198
|
+
|
|
199
|
+
Claimable databases are deliberately throwaway and provisioned through `neon.new` (above), so they aren't managed by `neon.ts`. Once a user **claims** a database into a Neon account it becomes a normal Neon project — at which point `neon.ts`, Neon's infrastructure-as-code file, is how you manage it going forward (see the `neon` skill for the full reference): declare the services its branches should have, program per-branch compute, and get type-safe env vars.
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
npm i @neon/config
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
// neon.ts
|
|
207
|
+
import { defineConfig } from "@neon/config/v1";
|
|
208
|
+
|
|
209
|
+
export default defineConfig({
|
|
210
|
+
auth: true, // Neon Auth, once you outgrow a bare connection string
|
|
211
|
+
dataApi: true, // Data API
|
|
212
|
+
branch: (branch) => (branch.exists ? {} : { ttl: "7d" }), // ephemeral non-default branches
|
|
213
|
+
});
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
neon config apply # provision the declared services (neon deploy is an alias)
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
If a project needs branching, multiple services, or durable infrastructure tracked in version control, recommend claiming first and then adopting `neon.ts` — rather than re-provisioning throwaway claimable databases.
|
|
221
|
+
|
|
222
|
+
## Defaults and Limits
|
|
223
|
+
|
|
224
|
+
| Parameter | Value |
|
|
225
|
+
| --------- | --------- |
|
|
226
|
+
| Provider | AWS |
|
|
227
|
+
| Region | us-east-2 |
|
|
228
|
+
| Postgres | 17 |
|
|
229
|
+
|
|
230
|
+
Region cannot be changed for claimable databases. Unclaimed databases have stricter quotas. Claiming resets limits to free plan defaults.
|
|
231
|
+
|
|
232
|
+
| | Unclaimed | Claimed (Free plan) |
|
|
233
|
+
| ---------- | --------- | ------------------- |
|
|
234
|
+
| Storage | 100 MB | 512 MB |
|
|
235
|
+
| Transfer | 1 GB | ~5 GB |
|
|
236
|
+
| Branches | No | Yes |
|
|
237
|
+
| Expiration | 72 hours | None |
|
|
238
|
+
|
|
239
|
+
## Auto-provisioning
|
|
240
|
+
|
|
241
|
+
If the agent needs a database to fulfill a task (e.g. "build me a todo app with a real database") and the user has not provided a connection string, provision one via the API and inform the user. Include the claim URL so they can keep it.
|
|
242
|
+
|
|
243
|
+
## Safety and UX Notes
|
|
244
|
+
|
|
245
|
+
- Do not overwrite existing env vars. Check first, then use `--env` or `--key` (CLI) or skip writing (API) to avoid conflicts.
|
|
246
|
+
- Ask before running destructive seed SQL (`DROP`, `TRUNCATE`, mass `DELETE`).
|
|
247
|
+
- For production workloads, recommend standard Neon provisioning instead of temporary claimable databases.
|
|
248
|
+
- If users need long-term persistence, instruct them to open the claim URL right away.
|
|
249
|
+
- After writing credentials to an .env file, check that it's covered by .gitignore. If not, warn the user. Do not modify `.gitignore` without confirmation.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: configure-capabilities
|
|
3
|
+
description: the app has **only the permissions it needs** — the builder never thinks about Info.plist, Android manifest, or Expo plugins. Use when the builder says something like: camera; location permission; notifications permission.
|
|
4
|
+
metadata:
|
|
5
|
+
vybekiit-generated: buyer-skill-stub
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- vybekiit:generated:buyer-skill-stub -->
|
|
9
|
+
|
|
10
|
+
# Skill: configure-capabilities
|
|
11
|
+
|
|
12
|
+
**Goal:** the app has **only the permissions it needs** — the builder never thinks about Info.plist, Android manifest, or Expo plugins.
|
|
13
|
+
|
|
14
|
+
**Contract:** invisible to the builder · verify-before-advance · plain language if App Store / Play review needs a human step.
|
|
15
|
+
|
|
16
|
+
> (Agent-only) Read `expo-deployment` / platform skills. Apply **least privilege** — Apple and Google expect minimal permissions with clear purpose strings for reviewers (agent writes those strings; builder does not edit them).
|
|
17
|
+
|
|
18
|
+
## When to run
|
|
19
|
+
|
|
20
|
+
- Adding camera, photos, location, notifications, Bluetooth, background modes, etc.
|
|
21
|
+
- Before EAS build / store submit if `app.json` may be stale vs features shipped
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
1. Inventory features and native APIs used in the codebase.
|
|
26
|
+
2. Add only required Expo config plugins and permission entries.
|
|
27
|
+
3. Write App Store / Play purpose strings where required (agent-only, factual).
|
|
28
|
+
4. **Verify:** `pnpm typecheck`; config matches shipped features.
|
|
29
|
+
|
|
30
|
+
## Definition of done
|
|
31
|
+
|
|
32
|
+
`app.json` / native config matches shipped features with minimum permissions; builder was not asked to choose permission names.
|
|
33
|
+
|
|
34
|
+
## After completing this skill
|
|
35
|
+
|
|
36
|
+
Append one entry to `checklist.md` Decision log using `formatChecklistEntry({ from, to, because })`.
|
|
37
|
+
|
|
38
|
+
If MCP or first debug fails once, run `vybekiit doc-fallback <tech-id>` and tell the builder only: *"I'm double-checking the official setup guide for this — hang tight, I'll have the next step in a moment."*
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: connect-account
|
|
3
|
+
description: people can create accounts and sign in **inside the app**. Use when the builder says something like: sign in; log in; create accounts; add users; forgot password; reset password.
|
|
4
|
+
metadata:
|
|
5
|
+
vybekiit-generated: buyer-skill-stub
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- vybekiit:generated:buyer-skill-stub -->
|
|
9
|
+
|
|
10
|
+
# Skill: connect-account
|
|
11
|
+
|
|
12
|
+
**Goal:** people can create accounts and sign in **inside the app**.
|
|
13
|
+
|
|
14
|
+
**Contract:** one action at a time · verify-before-advance · plain language (`language.md`) ·
|
|
15
|
+
translate every error · celebrate. You wire all the code; the builder only approves or pastes a value
|
|
16
|
+
when a step truly needs it.
|
|
17
|
+
|
|
18
|
+
> (Under the hood — agent-only) A phone can't hold server secrets, so sign-in runs on the **backend**
|
|
19
|
+
> (the web app), not the device. The app calls the backend's auth endpoints over `APP_URL` via
|
|
20
|
+
> `src/lib/auth-client.ts` (using `postJson` from `fetch-json.ts`); the server side resolves the
|
|
21
|
+
> provider (`resolveAuthProvider()` — better-auth by default, Cognito on AWS). The device stores only
|
|
22
|
+
> the returned session pass, in the OS secure store (expo-secure-store). Never name any of this to the
|
|
23
|
+
> builder.
|
|
24
|
+
|
|
25
|
+
## Steps
|
|
26
|
+
|
|
27
|
+
1. **Make sure the backend can sign people in.** Run `vybekiit plan-readiness sign-in mobile` and
|
|
28
|
+
execute every orchestration step (scaffold `backend/` if needed, wire auth, set
|
|
29
|
+
`EXPO_PUBLIC_APP_URL`) without asking the builder to choose.
|
|
30
|
+
**Verify:** backend `/health` or web sign-in works and `EXPO_PUBLIC_APP_URL` points at it.
|
|
31
|
+
|
|
32
|
+
2. **Connect the sign-in screens.** In `src/lib/auth-client.ts`, replace the stubbed
|
|
33
|
+
`signInWithPassword` / `signUpWithPassword` / `sendEmailCode` / `verifyEmailCode` with real calls
|
|
34
|
+
to the backend's auth endpoints (these resolve the `TODO(vybekiit): … — skill: connect-account`
|
|
35
|
+
markers; grep them). Save the returned session pass to the device's secure store, and send it on
|
|
36
|
+
later requests.
|
|
37
|
+
**Verify:** the sign-up and login screens accept a real account against the backend.
|
|
38
|
+
|
|
39
|
+
3. **Protect the dashboard.** Send the user to the login screen when no one is signed in; show the
|
|
40
|
+
dashboard when they are. This resolves the dashboard's sign-in marker.
|
|
41
|
+
**Verify:** signed out → sent to login; signed in → see the dashboard.
|
|
42
|
+
|
|
43
|
+
4. **Write a passing test** covering sign-up → login, and keep it green.
|
|
44
|
+
|
|
45
|
+
5. **Try it for real on the phone.** Create an account, sign in, and land on the dashboard.
|
|
46
|
+
**Verify:** the full sign-up → sign-in → dashboard flow works on the device.
|
|
47
|
+
🎉 *Celebrate* — people can now have their own accounts in the app.
|
|
48
|
+
|
|
49
|
+
## If anything breaks
|
|
50
|
+
|
|
51
|
+
Run `doctor`. If backend auth or MCP fails once, run `vybekiit doc-fallback better-auth` and use the
|
|
52
|
+
plain stuck phrase — never say MCP to the builder. Usual causes are also the backend address
|
|
53
|
+
(`APP_URL`) not pointing at the deployed web app, or sign-in not set up yet on the backend.
|
|
54
|
+
|
|
55
|
+
## Definition of done
|
|
56
|
+
|
|
57
|
+
A real account can sign up, sign in, and reach the protected dashboard on the phone; a passing test
|
|
58
|
+
covers it; no `connect-account` markers remain (re-grep `TODO(vybekiit)`).
|
|
59
|
+
|
|
60
|
+
## After completing this skill
|
|
61
|
+
|
|
62
|
+
Append one entry to `checklist.md` Decision log using `formatChecklistEntry({ from, to, because })`.
|
|
63
|
+
|
|
64
|
+
If MCP or first debug fails once, run `vybekiit doc-fallback <tech-id>` and tell the builder only: *"I'm double-checking the official setup guide for this — hang tight, I'll have the next step in a moment."*
|