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,89 @@
|
|
|
1
|
+
# Firebase Remote Config iOS Setup Guide
|
|
2
|
+
|
|
3
|
+
Important references:
|
|
4
|
+
|
|
5
|
+
- Refer to the `firebase-basics` skills, particularly those for iOS setup,
|
|
6
|
+
before proceeding.
|
|
7
|
+
- Refer to the `xcode-project-setup` skills.
|
|
8
|
+
|
|
9
|
+
## Project and App Setup
|
|
10
|
+
|
|
11
|
+
Use the `firebase-tools` CLI to set up the project if necessary.
|
|
12
|
+
|
|
13
|
+
1. **Find Bundle ID:** Read the Xcode project to find the iOS bundle ID. Check
|
|
14
|
+
the `PRODUCT_BUNDLE_IDENTIFIER` value in the `.pbxproj` file or the
|
|
15
|
+
`Info.plist` file.
|
|
16
|
+
1. **Create Firebase Project:** If no project exists, create one:
|
|
17
|
+
`npx -y firebase-tools@latest projects:create <project-id> --display-name="My Awesome App"`
|
|
18
|
+
1. **Create Firebase App:** Register the iOS app with the discovered bundle ID:
|
|
19
|
+
`npx -y firebase-tools@latest apps:create IOS <bundle-id>`
|
|
20
|
+
1. **Link the GoogleService-Info.plist file:** Use the script in the
|
|
21
|
+
`xcode-project-setup` skill to obtain the config and link.
|
|
22
|
+
|
|
23
|
+
## Add Swift Package Dependencies
|
|
24
|
+
|
|
25
|
+
Install the Remote Config and Analytics SDKs using the Swift package manager.
|
|
26
|
+
|
|
27
|
+
Install the `FirebaseRemoteConfig` and `FirebaseAnalytics` packages from the
|
|
28
|
+
[https://github.com/firebase/firebase-ios-sdk.git](https://github.com/firebase/firebase-ios-sdk.git)
|
|
29
|
+
repository.
|
|
30
|
+
|
|
31
|
+
## Initialize Firebase in App Code
|
|
32
|
+
|
|
33
|
+
Modify the application's entry point to initialize Firebase. Refer to the iOS
|
|
34
|
+
setup reference in the firebase-basics skill.
|
|
35
|
+
|
|
36
|
+
## Follow up Steps
|
|
37
|
+
|
|
38
|
+
The following steps cover the essential patterns for using Remote Config
|
|
39
|
+
effectively in your iOS app.
|
|
40
|
+
|
|
41
|
+
### Set In-App Defaults
|
|
42
|
+
|
|
43
|
+
Define default values so your app behaves as intended before it connects to the
|
|
44
|
+
backend. Create a property list file (e.g., RemoteConfigDefaults.plist):
|
|
45
|
+
|
|
46
|
+
````
|
|
47
|
+
```xml
|
|
48
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
49
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
50
|
+
<plist version="1.0">
|
|
51
|
+
<dict>
|
|
52
|
+
<key>welcome_message</key>
|
|
53
|
+
<string>Welcome to the app!</string>
|
|
54
|
+
<key>is_feature_enabled</key>
|
|
55
|
+
<false/>
|
|
56
|
+
</dict>
|
|
57
|
+
</plist>
|
|
58
|
+
```
|
|
59
|
+
````
|
|
60
|
+
|
|
61
|
+
Then, initialize the SDK and set the defaults:
|
|
62
|
+
|
|
63
|
+
````
|
|
64
|
+
```swift
|
|
65
|
+
import FirebaseRemoteConfig
|
|
66
|
+
|
|
67
|
+
let remoteConfig = RemoteConfig.remoteConfig()
|
|
68
|
+
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
|
|
69
|
+
```
|
|
70
|
+
````
|
|
71
|
+
|
|
72
|
+
### Fetch and Activate Values
|
|
73
|
+
|
|
74
|
+
To retrieve values from the cloud and apply them to your app:
|
|
75
|
+
|
|
76
|
+
````
|
|
77
|
+
```swift
|
|
78
|
+
remoteConfig.fetchAndActivate { (status, error) in
|
|
79
|
+
if status == .successFetchedFromRemote || status == .successUsingPreFetchedData {
|
|
80
|
+
print("Config fetched and activated!")
|
|
81
|
+
} else {
|
|
82
|
+
print("Config not fetched")
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Access a value
|
|
86
|
+
let message = remoteConfig.configValue(forKey: "welcome_message").stringValue
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
````
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: firebase-security-rules-auditor
|
|
3
|
+
description: A skill to evaluate how secure Firestore security rules are. Use this when Firestore security rules are updated to ensure that the generated rules are extremely secure and robust.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Overview
|
|
7
|
+
|
|
8
|
+
This skill acts as an auditor for Firebase Security Rules, evaluating them
|
|
9
|
+
against a rigorous set of criteria to ensure they are secure, robust, and
|
|
10
|
+
correctly implemented.
|
|
11
|
+
|
|
12
|
+
# Scoring Criteria
|
|
13
|
+
|
|
14
|
+
## Assessment: Security Validator (Red Team Edition)
|
|
15
|
+
|
|
16
|
+
You are a Senior Security Auditor and Penetration Tester specializing in
|
|
17
|
+
Firestore. Your goal is to find "the hole in the wall." Do not assume a rule is
|
|
18
|
+
secure because it looks complex; instead, actively try to find a sequence of
|
|
19
|
+
operations to bypass it.
|
|
20
|
+
|
|
21
|
+
### Mandatory Audit Checklist:
|
|
22
|
+
|
|
23
|
+
1. **The Update Bypass:** Compare 'create' and 'update' rules. Can a user create
|
|
24
|
+
a valid document and then 'update' it into an invalid or malicious state
|
|
25
|
+
(e.g., changing their role, bypassing size limits, or corrupting data types)?
|
|
26
|
+
1. **Authority Source:** Does the security rely on user-provided data
|
|
27
|
+
(request.resource.data) for sensitive fields like 'role', 'isAdmin', or
|
|
28
|
+
'ownerId'? Carefully consider the source for that authority.
|
|
29
|
+
1. **Business Logic vs. Rules:** Does the rule set actually support the app's
|
|
30
|
+
purpose? (e.g., In a collaboration app, can collaborators actually read the
|
|
31
|
+
data? If not, the rules are "broken" or will force insecure workarounds).
|
|
32
|
+
1. **Storage Abuse:** Are there string length or array size limits? If not,
|
|
33
|
+
label it as a "Resource Exhaustion/DoS" risk.
|
|
34
|
+
1. **Type Safety:** Are fields checked with 'is string', 'is int', or 'is
|
|
35
|
+
timestamp'?
|
|
36
|
+
1. **Field-Level vs. Identity-Level Security:** Be careful with rules that use
|
|
37
|
+
\`hasOnly()\` or \`diff()\`. While these restrict *which* fields can be
|
|
38
|
+
updated, they do NOT restrict *who* can update them unless an ownership check
|
|
39
|
+
(e.g., \`resource.data.uid == request.auth.uid\`) is also present. If a rule
|
|
40
|
+
allows any authenticated user to update fields on another user's document
|
|
41
|
+
without a corresponding ownership check, it is a data integrity
|
|
42
|
+
vulnerability.
|
|
43
|
+
|
|
44
|
+
### Admin Bootstrapping & Privileges:
|
|
45
|
+
|
|
46
|
+
The admin bootstrapping process is limited in this app. If the rules use a
|
|
47
|
+
single hardcoded admin email (e.g., checking request.auth.token.email ==
|
|
48
|
+
'admin@example.com'), this should NOT count against the score as long as:
|
|
49
|
+
|
|
50
|
+
- email_verified is also checked (request.auth.token.email_verified == true).
|
|
51
|
+
- It is implemented in a way that does not allow additional admins to add
|
|
52
|
+
themselves or leave an escalation risk open.
|
|
53
|
+
|
|
54
|
+
### Scoring Criteria (1-5):
|
|
55
|
+
|
|
56
|
+
- **1 (Critical):** Unauthorized data access (leaks), privilege escalation, or
|
|
57
|
+
total validation bypass.
|
|
58
|
+
- **2 (Major):** Broken business logic, self-assigned roles, bypass of controls.
|
|
59
|
+
- **3 (Moderate):** PII exposure (e.g., public emails), Inconsistent validation
|
|
60
|
+
(create vs update) on critical fields
|
|
61
|
+
- **4 (Minor):** Problems that result in self-data corruption like update
|
|
62
|
+
bypasses that only impact the user's own data, lack of size limits, missing
|
|
63
|
+
minor type checks or over-permissive read access on non-sensitive fields.
|
|
64
|
+
- **5 (Secure):** Comprehensive validation, strict ownership, and role-based
|
|
65
|
+
access via secure ACLs.
|
|
66
|
+
|
|
67
|
+
Return your assessment in JSON format using the following structure: { "score":
|
|
68
|
+
1-5, "summary": "overall assessment", "findings": \[ { "check": "checklist
|
|
69
|
+
item", "severity": "critical|major|moderate|minor", "issue": "description",
|
|
70
|
+
"recommendation": "fix" } \] }
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: go-live
|
|
3
|
+
description: the builder's app is online at a real web address that anyone can open. Use when the builder says something like: put it online; publish; make it live; ship it; deploy.
|
|
4
|
+
metadata:
|
|
5
|
+
vybekiit-generated: buyer-skill-stub
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- vybekiit:generated:buyer-skill-stub -->
|
|
9
|
+
|
|
10
|
+
# Skill: go-live
|
|
11
|
+
|
|
12
|
+
**Goal:** the builder's app is online at a real web address that anyone can open.
|
|
13
|
+
|
|
14
|
+
**Contract:** one action at a time · verify-before-advance · plain language (`language.md`) ·
|
|
15
|
+
translate every error · celebrate. You handle the deploy; the builder only approves/pastes when
|
|
16
|
+
asked.
|
|
17
|
+
|
|
18
|
+
> (Under the hood — agent-only) Put the app online via `@vybekiit/deploy`'s `resolveHosting()` —
|
|
19
|
+
> Cloudflare by default, Vercel or AWS (Amplify) when the builder's setup uses them. Follow the
|
|
20
|
+
> matching platform wrapper in `.vybekiit/platform-skills/` (`deploy-cloudflare-vybekiit.md`,
|
|
21
|
+
> `deploy-vercel-vybekiit.md`, or `deploy-railway-vybekiit.md`). Pick the host from their settings; don't make the builder choose
|
|
22
|
+
> or hear the host's name (unless they ask).
|
|
23
|
+
|
|
24
|
+
## Steps
|
|
25
|
+
|
|
26
|
+
<!-- vybekiit:page-recipe-install -->
|
|
27
|
+
0. **Install the page recipe first (catalog SSOT — Option C).**
|
|
28
|
+
Copy `apps/componentLibrary/src/pageRecipes/LaunchChecklistPage.tsx` export `LaunchChecklistPage` into the buyer app at route `/dashboard/launch`.
|
|
29
|
+
Recipe id: `launch-checklist`. Presets: job_runs.
|
|
30
|
+
Keep every `TODO:` in the recipe and wire each one after the route renders.
|
|
31
|
+
Also reference `packages/agentKit` `getPageRecipeInstall('go-live')` / page-recipe-manifest.json.
|
|
32
|
+
**Verify:** route builds and shows practice UI before provider wiring.
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
1. **Pre-flight check.** Run `vybekiit doctor` to make sure the deploy tool is installed, then run
|
|
36
|
+
the project's checks (tests + build) yourself. Asset optimization runs in `prebuild` / start hooks
|
|
37
|
+
(`scripts/optimizeAssets.mjs`) — confirm it completes without errors. Run code-readiness greps from `check-safety`
|
|
38
|
+
(step 6): `node scripts/checkNoConsole.mjs`, duplicate-helper scan, logger spot-check.
|
|
39
|
+
Run **quality smoke**: `pnpm verify` (format, lint, typecheck, tests). Fix anything red before
|
|
40
|
+
going online. Confirm production mode on the host will silence debug logs (`NODE_ENV=production`).
|
|
41
|
+
If anything is red, fix it (or run `doctor`) **before** going online — never publish a broken app.
|
|
42
|
+
**GEO pre-flight:** when the app has a blog or FAQ, confirm at least one public page includes JSON-LD
|
|
43
|
+
(view-source on a blog post) and `/llms.txt` returns 200 with curated page paths.
|
|
44
|
+
**Verify:** build passes locally, deploy tool installed, quality smoke green, no debug console noise,
|
|
45
|
+
`/llms.txt` reachable when blog/FAQ content exists.
|
|
46
|
+
|
|
47
|
+
2. **Explain in one line.** *"I'm going to put your app online now. You'll click 'approve' once."*
|
|
48
|
+
|
|
49
|
+
3. **Sign in + connect the app's home.** If `vybekiit doctor` said the deploy tool isn't signed in,
|
|
50
|
+
have the builder run the one sign-in command it printed — a browser window opens, they click
|
|
51
|
+
"approve," and that's the only thing they do (this works the same whichever host their setup
|
|
52
|
+
uses). Then you create the project and connect the app.
|
|
53
|
+
**Verify:** the deploy tool reports they're signed in, and the project shows up.
|
|
54
|
+
|
|
55
|
+
4. **Move the secret settings over.** Copy the needed secret settings into the app's home for them
|
|
56
|
+
(never paste secrets into chat or commit them).
|
|
57
|
+
**Verify:** the required settings are present.
|
|
58
|
+
|
|
59
|
+
5. **Publish.** Put the app online.
|
|
60
|
+
**Verify:** publishing finishes green and the live URL loads. Open it and confirm the page shows.
|
|
61
|
+
🎉 *Celebrate* — their app is live; give them the link to share.
|
|
62
|
+
|
|
63
|
+
5b. **Verify the app's memory is up to date.** If the app saves data (`save-data` was run before),
|
|
64
|
+
confirm the live database has the same structure as the local one — run the migration status check
|
|
65
|
+
via `@vybekiit/db`'s `checkMigrationStatus()`. If pending migrations exist, apply them now.
|
|
66
|
+
**Verify:** migration status shows all applied; no pending.
|
|
67
|
+
|
|
68
|
+
6. **Want their own web address?** If they'd like to use their own domain instead of the temporary
|
|
69
|
+
address, run `buy-domain` next.
|
|
70
|
+
|
|
71
|
+
## If anything breaks
|
|
72
|
+
|
|
73
|
+
Run `doctor`. Most failures going online are a missing secret setting — add it for them and publish
|
|
74
|
+
again.
|
|
75
|
+
|
|
76
|
+
## Never
|
|
77
|
+
|
|
78
|
+
- Never offer a preview/staging deploy. The builder's "deploy" always means production. A preview URL confuses non-technical builders ("which one is real?") and wastes time.
|
|
79
|
+
- Never say "fixed" or "done" after a code change without deploying (contract rule ⑧). If the app is already live, ask to deploy or confirm the builder wants to wait.
|
|
80
|
+
|
|
81
|
+
## Definition of done
|
|
82
|
+
|
|
83
|
+
The live URL loads the latest version of their app, and they have the link.
|
|
84
|
+
|
|
85
|
+
## After completing this skill
|
|
86
|
+
|
|
87
|
+
Update checklist.md Progress (mark done, note next).
|
|
88
|
+
Append one entry to `checklist.md` Decision log using `formatChecklistEntry({ from, to, because })`.
|
|
89
|
+
|
|
90
|
+
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,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harden
|
|
3
|
+
description: the builder's app is protected against the common attacks every app faces — someone. Use when the builder says something like: lock down; make it safe; protect from abuse.
|
|
4
|
+
metadata:
|
|
5
|
+
vybekiit-generated: buyer-skill-stub
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- vybekiit:generated:buyer-skill-stub -->
|
|
9
|
+
|
|
10
|
+
# Skill: harden
|
|
11
|
+
|
|
12
|
+
**Goal:** the builder's app is protected against the common attacks every app faces — someone
|
|
13
|
+
hammering the login to guess passwords, bots flooding requests, and other sites secretly making
|
|
14
|
+
requests on a visitor's behalf. By the end, protection is on and confirmed, in plain words.
|
|
15
|
+
|
|
16
|
+
**Contract:** one action at a time · verify-before-advance · plain language (`language.md`) ·
|
|
17
|
+
translate every error · celebrate. You do all the work; the builder just approves.
|
|
18
|
+
|
|
19
|
+
> **Good news to lead with:** their app already ships protected — this skill confirms it, tunes it to
|
|
20
|
+
> their app, and (at go-live) extends it to the edge. Don't alarm them; frame it as "making sure your
|
|
21
|
+
> app is safe," not "your app is exposed."
|
|
22
|
+
>
|
|
23
|
+
> (Under the hood — agent-only) Protection is `@vybekiit/security`, driven entirely by the `SECURITY_*`
|
|
24
|
+
> keys in `.env` (the single source of truth — see core `securityConfigSchema`). The web app enforces
|
|
25
|
+
> it in `middleware.ts` (already wired, on by default: same-origin lock + per-IP rate limit on
|
|
26
|
+
> `/api/*`). The same toggles drive the Cloudflare edge config in `infra/cloudflare/` at go-live. Never
|
|
27
|
+
> name "rate limit", "CORS", or "origin" to the builder unless they ask — say "request limits" and
|
|
28
|
+
> "blocking requests from other sites."
|
|
29
|
+
|
|
30
|
+
## Steps
|
|
31
|
+
|
|
32
|
+
<!-- vybekiit:page-recipe-install -->
|
|
33
|
+
0. **Install the page recipe first (catalog SSOT — Option C).**
|
|
34
|
+
Copy `apps/componentLibrary/src/pageRecipes/AuditLogPage.tsx` export `AuditLogPage` into the buyer app at route `/admin/audit`.
|
|
35
|
+
Recipe id: `audit-log`. Presets: audit_log.
|
|
36
|
+
Keep every `TODO:` in the recipe and wire each one after the route renders.
|
|
37
|
+
Also reference `packages/agentKit` `getPageRecipeInstall('harden')` / page-recipe-manifest.json.
|
|
38
|
+
**Verify:** route builds and shows practice UI before provider wiring.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
1. **Explain in one line.** *"I'm going to make sure your app is safe from abuse — limiting how fast
|
|
42
|
+
anyone can hammer it and blocking requests pretending to come from other sites. It's already on; I'll
|
|
43
|
+
tune it to your app."*
|
|
44
|
+
|
|
45
|
+
2. **Confirm it's on.** Check `.env` has `SECURITY_RATE_LIMIT="on"` and `SECURITY_ORIGIN_LOCK="on"`
|
|
46
|
+
(these are the defaults; if a previous step turned one off, turn it back on unless the builder asked
|
|
47
|
+
otherwise). Confirm `middleware.ts` is present.
|
|
48
|
+
**Verify:** both switches are `on` and the app still builds.
|
|
49
|
+
|
|
50
|
+
3. **Tune the limits to their app.** Defaults are 60 requests / 60 seconds per visitor. If they expect
|
|
51
|
+
heavy legitimate traffic (lots of quick actions), raise `SECURITY_RATE_LIMIT_MAX`; if it's a
|
|
52
|
+
sensitive internal tool, lower it. Pick a sensible value and tell them in one sentence what it means
|
|
53
|
+
("each visitor can do up to N actions a minute before being asked to slow down").
|
|
54
|
+
**Verify:** the value is a positive number and the app builds.
|
|
55
|
+
|
|
56
|
+
4. **Allow any sites that genuinely need access.** If they have a separate landing page or another site
|
|
57
|
+
that calls this app, add its address to `SECURITY_ALLOWED_ORIGINS` (comma-separated). Otherwise leave
|
|
58
|
+
it blank — that means "only your app," the safest setting.
|
|
59
|
+
**Verify:** confirm with them which sites (if any) should be allowed.
|
|
60
|
+
|
|
61
|
+
5. **Prove it works.** Make a quick burst of requests to a `/api/*` route past the limit and confirm the
|
|
62
|
+
app starts returning "too many requests" (HTTP 429); make a request with a foreign `Origin` header to
|
|
63
|
+
an API route and confirm it's blocked (HTTP 403). Then confirm a normal page load still works.
|
|
64
|
+
**Verify:** abuse is blocked, normal use is not. 🎉 *Celebrate* — their app defends itself now.
|
|
65
|
+
|
|
66
|
+
6. **At go-live, extend it to the edge.** Remind them (or do it during `go-live`) that the same
|
|
67
|
+
protection also runs at the hosting edge via `infra/cloudflare/` for hosted apps — so abuse is
|
|
68
|
+
stopped before it even reaches the app. No new values needed; the edge reads the same settings.
|
|
69
|
+
**DDoS layers (agent-only):** edge worker caps distributed abuse; app tiered limits cap per-instance
|
|
70
|
+
hammering; Cloudflare WAF rules attach at go-live for the strictest cap.
|
|
71
|
+
|
|
72
|
+
7. **Tune per-route limits.** Login routes use a **stricter** limit (`SECURITY_RATE_LIMIT_AUTH_MAX`);
|
|
73
|
+
contact forms and waitlists use a **lenient** limit (`SECURITY_RATE_LIMIT_PUBLIC_FORM_MAX`) so
|
|
74
|
+
real visitors aren't blocked. Payment webhooks skip origin lock — they're verified by signature instead.
|
|
75
|
+
**Verify:** `/api/contact` survives human-paced submits while `/api/auth/signin` blocks hammering.
|
|
76
|
+
|
|
77
|
+
8. **Database safety.** Confirm all data access uses `@vybekiit/db` (no raw SQL). Grep for `$executeRaw`
|
|
78
|
+
or string-built queries and replace them. Run `vybekiit apply-preset audit_log` and confirm RLS on
|
|
79
|
+
buyer tables (`platform-skills/db-presets-vybekiit.md`).
|
|
80
|
+
**Verify:** `vybekiit verify-presets audit_log`; no raw SQL in the app; zod on every API body.
|
|
81
|
+
|
|
82
|
+
9. **Optional edge KV (agent-only).** `@vybekiit/kv` may back feature flags when you extend hardening —
|
|
83
|
+
never Redis or Upstash for buyers. Client-side cache is `@vybekiit/client-state` (TanStack Query).
|
|
84
|
+
**Verify:** no buyer-facing Redis setup docs or env keys added.
|
|
85
|
+
|
|
86
|
+
## If anything breaks
|
|
87
|
+
|
|
88
|
+
Run `doctor`. If real visitors hit "too many requests", the limit is too low — raise
|
|
89
|
+
`SECURITY_RATE_LIMIT_MAX`. If a legitimate connected site is blocked, add it to
|
|
90
|
+
`SECURITY_ALLOWED_ORIGINS`. Never paste raw errors; translate to the one fix.
|
|
91
|
+
|
|
92
|
+
## Definition of done
|
|
93
|
+
|
|
94
|
+
`SECURITY_RATE_LIMIT` and `SECURITY_ORIGIN_LOCK` are on, tuned to the app, abuse is blocked in a quick
|
|
95
|
+
test, normal use works, and the builder knows (in plain words) their app is protected.
|
|
96
|
+
|
|
97
|
+
## After completing this skill
|
|
98
|
+
|
|
99
|
+
Append one entry to `checklist.md` Decision log using `formatChecklistEntry({ from, to, because })`.
|
|
100
|
+
|
|
101
|
+
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,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: instrument-feature-flags
|
|
3
|
+
description: >-
|
|
4
|
+
Add PostHog feature flags to gate new functionality. Use after implementing
|
|
5
|
+
features or reviewing PRs to ensure safe rollouts with feature flag controls.
|
|
6
|
+
Also handles initial PostHog SDK setup if not yet installed.
|
|
7
|
+
metadata:
|
|
8
|
+
author: PostHog
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Add PostHog feature flags
|
|
12
|
+
|
|
13
|
+
Use this skill to add PostHog feature flags that gate new or changed functionality. Use it after implementing features or reviewing PRs to ensure safe rollouts with feature flag controls. If PostHog is not yet installed, this skill also covers initial SDK setup. Supports any platform or language.
|
|
14
|
+
|
|
15
|
+
Supported platforms: React, Next.js, React Native, Web (JavaScript), Node.js, Python, PHP, Ruby, Go, Java, Rust, .NET, Elixir, Android, iOS, Flutter, and the REST API.
|
|
16
|
+
|
|
17
|
+
## Instructions
|
|
18
|
+
|
|
19
|
+
Follow these steps IN ORDER:
|
|
20
|
+
|
|
21
|
+
STEP 1: Analyze the codebase and detect the platform.
|
|
22
|
+
-
|
|
23
|
+
Look for dependency files (package.json, pubspec.yaml, Podfile, Package.swift, requirements.txt, go.mod, Gemfile, composer.json, mix.exs, etc.) to determine the language and framework.
|
|
24
|
+
-
|
|
25
|
+
Look for lockfiles (pnpm-lock.yaml, package-lock.json, yarn.lock, bun.lockb, go.sum, pubspec.lock, Podfile.lock, Package.resolved, mix.lock) to determine the package manager.
|
|
26
|
+
- Check for existing PostHog setup (SDK initialization, env vars, etc.). If PostHog is already installed and initialized, skip to STEP 3.
|
|
27
|
+
|
|
28
|
+
STEP 2: Research instrumentation. (Skip if PostHog is already set up.)
|
|
29
|
+
2.1. Find the reference file below that matches the detected platform — it is the source of truth for SDK initialization, flag evaluation methods, and framework-specific patterns. Read it now.
|
|
30
|
+
2.2. If no reference matches, fall back to your general knowledge and web search. Use posthog.com/docs as the primary search source.
|
|
31
|
+
|
|
32
|
+
STEP 3: Create or find the feature flag.
|
|
33
|
+
- Check if a PostHog MCP server is connected. If available, use its tools to search for an existing feature flag the user wants to instrument, or create a new one.
|
|
34
|
+
- If no MCP server is available, instruct the user to create the flag in the PostHog dashboard.
|
|
35
|
+
|
|
36
|
+
STEP 4: Plan release conditions.
|
|
37
|
+
- Determine the rollout strategy (percentage rollout, user targeting, group targeting, etc.).
|
|
38
|
+
- Plan how the feature flag will gate the new functionality in code.
|
|
39
|
+
|
|
40
|
+
STEP 5: Instrument the feature.
|
|
41
|
+
- Add the feature flag code following the platform-specific reference patterns.
|
|
42
|
+
- Use server-side evaluation when possible to avoid UI flicker.
|
|
43
|
+
- Do not alter the fundamental architecture of existing files. Make additions minimal and targeted.
|
|
44
|
+
- You must read a file immediately before attempting to write it.
|
|
45
|
+
|
|
46
|
+
STEP 6: Set up environment variables.
|
|
47
|
+
- Check if the project already has PostHog environment variables configured (e.g. in `.env`, `.env.local`, or framework-specific env files). If valid values already exist, skip this step.
|
|
48
|
+
- If the PostHog project token is missing, use the PostHog MCP server's `projects-get` tool to retrieve the project's `api_token`. If multiple projects are returned, ask the user which project to use. If the MCP server is not connected or not authenticated, ask the user for their PostHog project token instead.
|
|
49
|
+
- For the PostHog host URL: check the `projects-get` MCP response for a `region` field — `US` maps to `https://us.i.posthog.com`, `EU` maps to `https://eu.i.posthog.com`. If the region is not available from the MCP response or from existing project configuration, ask the user: "Are you on PostHog US Cloud or EU Cloud?" Do not assume US Cloud.
|
|
50
|
+
- Write these values to the appropriate env file using the framework's naming convention.
|
|
51
|
+
- Reference these environment variables in code instead of hardcoding them.
|
|
52
|
+
|
|
53
|
+
## Reference files
|
|
54
|
+
|
|
55
|
+
- `references/react.md` - React feature flags installation - docs
|
|
56
|
+
- `references/react-native.md` - React native feature flags installation - docs
|
|
57
|
+
- `references/web.md` - Web feature flags installation - docs
|
|
58
|
+
- `references/nodejs.md` - Node.js feature flags installation - docs
|
|
59
|
+
- `references/python.md` - Python feature flags installation - docs
|
|
60
|
+
- `references/django.md` - Django - docs
|
|
61
|
+
- `references/flask.md` - Flask - docs
|
|
62
|
+
- `references/php.md` - Php feature flags installation - docs
|
|
63
|
+
- `references/laravel.md` - Laravel - docs
|
|
64
|
+
- `references/ruby.md` - Ruby feature flags installation - docs
|
|
65
|
+
- `references/ruby-on-rails.md` - Ruby on rails - docs
|
|
66
|
+
- `references/go.md` - Go feature flags installation - docs
|
|
67
|
+
- `references/java.md` - Java feature flags installation - docs
|
|
68
|
+
- `references/rust.md` - Rust feature flags installation - docs
|
|
69
|
+
- `references/dotnet.md` - .net feature flags installation - docs
|
|
70
|
+
- `references/dotnet.md` - .net - docs
|
|
71
|
+
- `references/elixir.md` - Elixir feature flags installation - docs
|
|
72
|
+
- `references/android.md` - Android feature flags installation - docs
|
|
73
|
+
- `references/ios.md` - Ios feature flags installation - docs
|
|
74
|
+
- `references/usage.md` - Ios SDK usage - docs
|
|
75
|
+
- `references/flutter.md` - Flutter feature flags installation - docs
|
|
76
|
+
- `references/api.md` - API feature flags installation - docs
|
|
77
|
+
- `references/next-js.md` - Next.js - docs
|
|
78
|
+
- `references/adding-feature-flag-code.md` - Adding feature flag code - docs
|
|
79
|
+
- `references/best-practices.md` - Best practices for production-ready flags - docs
|
|
80
|
+
|
|
81
|
+
Each platform reference contains SDK-specific installation, flag evaluation, and code examples. Find the one matching the user's stack. If unlisted, use the API reference as a fallback.
|
|
82
|
+
|
|
83
|
+
## Key principles
|
|
84
|
+
|
|
85
|
+
- **Environment variables**: Always use environment variables for PostHog keys. Never hardcode them.
|
|
86
|
+
- **Minimal changes**: Add feature flag code alongside existing logic. Don't replace or restructure existing code.
|
|
87
|
+
- **Boolean flags first**: Default to boolean flag checks unless the user specifically asks for multivariate flags.
|
|
88
|
+
- **Server-side when possible**: Prefer server-side flag evaluation to avoid UI flicker.
|