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,359 @@
|
|
|
1
|
+
# Configure
|
|
2
|
+
|
|
3
|
+
Manage environments, variables, service config, domains, and networking.
|
|
4
|
+
|
|
5
|
+
## Environments
|
|
6
|
+
|
|
7
|
+
### List and switch
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
railway environment list --json
|
|
11
|
+
railway environment list --ephemeral --json # only PR environments
|
|
12
|
+
railway environment list --no-ephemeral --json # hide PR environments
|
|
13
|
+
railway environment link <environment> # switch active environment
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Create
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
railway environment new <name>
|
|
20
|
+
railway environment new <name> --duplicate <source-environment> # clone config from existing
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Duplicating copies all service configurations and variables from the source environment.
|
|
24
|
+
|
|
25
|
+
## Variables
|
|
26
|
+
|
|
27
|
+
### Read, set, and delete
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
railway variable list --service <service> --environment <env> --json
|
|
31
|
+
railway variable set KEY=value --service <service> --environment <env>
|
|
32
|
+
railway variable delete KEY --service <service> --environment <env>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Variable changes trigger a redeployment by default. This is usually the desired behavior, since the service picks up the values on restart. Use `--skip-deploys` only when you plan to redeploy or restart separately.
|
|
36
|
+
|
|
37
|
+
### Set sensitive values
|
|
38
|
+
|
|
39
|
+
Use stdin for secrets or values that shouldn't appear in shell history:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
printf "%s" "$SECRET_VALUE" | railway variable set API_KEY --stdin --service <service>
|
|
43
|
+
railway variable set API_URL=https://api.example.com --project <project-id> --environment <env> --service <service>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Template syntax
|
|
47
|
+
|
|
48
|
+
Railway supports interpolation between services and shared variables:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
${{KEY}} # same-service variable
|
|
52
|
+
${{shared.API_KEY}} # shared variable
|
|
53
|
+
${{postgres.DATABASE_URL}} # variable from another service
|
|
54
|
+
${{api.RAILWAY_PRIVATE_DOMAIN}} # another service's private domain
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Wiring example, a frontend connecting to a backend over private networking:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
BACKEND_URL=http://${{api.RAILWAY_PRIVATE_DOMAIN}}:${{api.PORT}}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Wiring services together
|
|
64
|
+
|
|
65
|
+
Each managed database creates connection variables automatically. Reference them from other services using template syntax:
|
|
66
|
+
|
|
67
|
+
| Database | Variable reference |
|
|
68
|
+
|---|---|
|
|
69
|
+
| Postgres | `${{Postgres.DATABASE_URL}}` |
|
|
70
|
+
| Redis | `${{Redis.REDIS_URL}}` |
|
|
71
|
+
| MySQL | `${{MySQL.MYSQL_URL}}` |
|
|
72
|
+
| MongoDB | `${{MongoDB.MONGO_URL}}` |
|
|
73
|
+
|
|
74
|
+
Service names in references are case-sensitive and must match the service name exactly as it appears in the project.
|
|
75
|
+
|
|
76
|
+
**Public vs private networking decision:**
|
|
77
|
+
|
|
78
|
+
| Traffic path | Use |
|
|
79
|
+
|---|---|
|
|
80
|
+
| Browser → API | Public domain |
|
|
81
|
+
| Service → Service | Private domain (`RAILWAY_PRIVATE_DOMAIN`) |
|
|
82
|
+
| Service → Database | Private (automatic, uses internal DNS) |
|
|
83
|
+
|
|
84
|
+
**Frontend apps cannot use private networking.** Frontends run in the user's browser, not on Railway's network. They cannot reach `RAILWAY_PRIVATE_DOMAIN` or internal database URLs. Options:
|
|
85
|
+
|
|
86
|
+
1. **Backend proxy** (recommended): frontend calls a backend API on a public domain, backend connects to the database over the private network.
|
|
87
|
+
2. **Public database URL**: use the public connection variable (for example, `${{Postgres.DATABASE_PUBLIC_URL}}`). This requires a TCP proxy on the database service and exposes the database to the internet. Use this only for development or low-sensitivity data.
|
|
88
|
+
|
|
89
|
+
### Railway-provided variables
|
|
90
|
+
|
|
91
|
+
These are set automatically at runtime. Availability depends on resource configuration.
|
|
92
|
+
|
|
93
|
+
**Networking:**
|
|
94
|
+
|
|
95
|
+
| Variable | Available when |
|
|
96
|
+
|---|---|
|
|
97
|
+
| `RAILWAY_PUBLIC_DOMAIN` | Public domain is configured |
|
|
98
|
+
| `RAILWAY_PRIVATE_DOMAIN` | Always (internal DNS for service-to-service traffic) |
|
|
99
|
+
| `RAILWAY_TCP_PROXY_DOMAIN` | TCP proxy is enabled |
|
|
100
|
+
| `RAILWAY_TCP_PROXY_PORT` | TCP proxy is enabled |
|
|
101
|
+
|
|
102
|
+
**Context:**
|
|
103
|
+
|
|
104
|
+
| Variable | Available when |
|
|
105
|
+
|---|---|
|
|
106
|
+
| `RAILWAY_PROJECT_ID` | Always |
|
|
107
|
+
| `RAILWAY_ENVIRONMENT_ID` | Always |
|
|
108
|
+
| `RAILWAY_ENVIRONMENT_NAME` | Always |
|
|
109
|
+
| `RAILWAY_SERVICE_ID` | Always |
|
|
110
|
+
| `RAILWAY_SERVICE_NAME` | Always |
|
|
111
|
+
| `RAILWAY_DEPLOYMENT_ID` | Always |
|
|
112
|
+
| `RAILWAY_REPLICA_ID` | Replicas configured |
|
|
113
|
+
| `RAILWAY_REPLICA_REGION` | Multi-region configured |
|
|
114
|
+
|
|
115
|
+
**Git (present when deployed from a linked repo):**
|
|
116
|
+
|
|
117
|
+
| Variable | Description |
|
|
118
|
+
|---|---|
|
|
119
|
+
| `RAILWAY_GIT_COMMIT_SHA` | Full commit hash of the deployed revision |
|
|
120
|
+
| `RAILWAY_GIT_AUTHOR` | Commit author name |
|
|
121
|
+
| `RAILWAY_GIT_COMMIT_MESSAGE` | First line of the commit message |
|
|
122
|
+
| `RAILWAY_GIT_BRANCH` | Branch that triggered the deploy |
|
|
123
|
+
|
|
124
|
+
**Storage (present when a volume is attached):**
|
|
125
|
+
|
|
126
|
+
| Variable | Description |
|
|
127
|
+
|---|---|
|
|
128
|
+
| `RAILWAY_VOLUME_MOUNT_PATH` | Filesystem path where the volume is mounted |
|
|
129
|
+
| `RAILWAY_VOLUME_NAME` | Name of the attached volume |
|
|
130
|
+
|
|
131
|
+
Sealed variables are write-only. Their values don't appear in CLI output.
|
|
132
|
+
|
|
133
|
+
## Service config
|
|
134
|
+
|
|
135
|
+
Service configuration controls source, build, deploy, and networking settings. There are two ways to mutate it.
|
|
136
|
+
|
|
137
|
+
### Dot-path patch
|
|
138
|
+
|
|
139
|
+
For single-field changes:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
railway environment edit --service-config <service> deploy.startCommand "npm start"
|
|
143
|
+
railway environment edit --service-config <service> build.buildCommand "npm run build"
|
|
144
|
+
railway environment edit --service-config <service> source.rootDirectory "/apps/api"
|
|
145
|
+
railway environment edit --service-config <service> deploy.numReplicas 2
|
|
146
|
+
railway environment edit --project <project-id> --environment production --service-config <service> deploy.startCommand "npm start"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### JSON patch
|
|
150
|
+
|
|
151
|
+
For multi-field changes or complex structures:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
railway environment edit --json <<'JSON'
|
|
155
|
+
{"services":{"<service-id>":{"build":{"buildCommand":"npm run build"},"deploy":{"startCommand":"npm start"}}}}
|
|
156
|
+
JSON
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Resolve exact service IDs from `railway service list --json` before constructing JSON patches. Using names in the JSON payload doesn't work.
|
|
160
|
+
|
|
161
|
+
### Stage config changes
|
|
162
|
+
|
|
163
|
+
Stage changes when the user wants to review config before committing it:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
railway environment edit --service-config <service> build.buildCommand "npm run build" --stage
|
|
167
|
+
railway environment edit --service-config <service> deploy.startCommand "npm start" --message "Set production start command"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Use `--stage` only when the user requests staged config changes. Use regular edits for immediate mutations.
|
|
171
|
+
|
|
172
|
+
### Config schema (typed paths)
|
|
173
|
+
|
|
174
|
+
Include only keys you're changing. The full shape:
|
|
175
|
+
|
|
176
|
+
**Source**: `source.image` (string), `source.repo` (string), `source.branch` (string), `source.rootDirectory` (string), `source.checkSuites` (boolean), `source.commitSha` (string), `source.autoUpdates.type` (string: `disabled`, `patch`, `minor`)
|
|
177
|
+
|
|
178
|
+
**Build**: `build.builder` (string: `RAILPACK`, `NIXPACKS`, `DOCKERFILE`), `build.buildCommand` (string), `build.dockerfilePath` (string), `build.watchPatterns` (string array), `build.nixpacksConfigPath` (string)
|
|
179
|
+
|
|
180
|
+
**Deploy**: `deploy.startCommand` (string), `deploy.preDeployCommand` (string), `deploy.healthcheckPath` (string), `deploy.healthcheckTimeout` (integer), `deploy.numReplicas` (integer), `deploy.restartPolicyType` (string: `ON_FAILURE`, `ALWAYS`, `NEVER`), `deploy.restartPolicyMaxRetries` (integer), `deploy.sleepApplication` (boolean), `deploy.cronSchedule` (string), `deploy.multiRegionConfig` (object)
|
|
181
|
+
|
|
182
|
+
**Multi-region config** structure for `deploy.multiRegionConfig`:
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{ "us-west2": { "numReplicas": 2 }, "europe-west4-drams3a": { "numReplicas": 1 } }
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
| Region identifier | Location |
|
|
189
|
+
|---|---|
|
|
190
|
+
| `us-west2` | US West (Oregon) |
|
|
191
|
+
| `us-east4-eqdc4a` | US East (Virginia) |
|
|
192
|
+
| `europe-west4-drams3a` | Europe (Netherlands) |
|
|
193
|
+
| `asia-southeast1-eqsg3a` | Asia (Singapore) |
|
|
194
|
+
|
|
195
|
+
Natural language mapping: "add replicas in Europe" → `europe-west4-drams3a`, "US East" → `us-east4-eqdc4a`. When the user doesn't specify a region, query current config first with `railway environment config --json` to see existing region assignments before modifying.
|
|
196
|
+
|
|
197
|
+
**Variables**: `variables.<KEY>.value` (string), `variables.<KEY>.isOptional` (boolean), `variables.<KEY>.isSealed` (boolean). Delete a variable by setting it to `null`.
|
|
198
|
+
|
|
199
|
+
**Lifecycle**: `isDeleted` (boolean) removes the service. `isCreated` (boolean) marks as new. Prefer `railway service delete` for normal service deletion.
|
|
200
|
+
|
|
201
|
+
**Storage**: `volumeMounts.<volume-id>.mountPath` (string), `volumes.<volume-id>.isDeleted` (boolean)
|
|
202
|
+
|
|
203
|
+
**Buckets**: `buckets.<bucket-id>.region` (string: `sjc`, `iad`, `ams`, `sin`), `buckets.<bucket-id>.isCreated` (boolean), `buckets.<bucket-id>.isDeleted` (boolean). Buckets are created at the project level via `railway bucket create` and deployed to environments via config patches. The CLI handles this automatically, so use `railway bucket` commands
|
|
204
|
+
|
|
205
|
+
### Shared variables and project-level config
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
railway environment edit --json <<'JSON'
|
|
209
|
+
{"sharedVariables":{"API_BASE":{"value":"https://example.com"}}}
|
|
210
|
+
JSON
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Shared variables are accessible from any service via `${{shared.KEY}}`.
|
|
214
|
+
|
|
215
|
+
### Read config
|
|
216
|
+
|
|
217
|
+
Always inspect before mutating. Config patches merge, so you need to know the state to avoid overwriting fields unintentionally:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
railway environment config --json
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Verify after mutation to confirm the change took effect:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
railway environment config --json
|
|
227
|
+
railway service list --json
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Domains
|
|
231
|
+
|
|
232
|
+
Use the `railway domain` command for domain lifecycle work. Avoid raw `environment edit` JSON patches for normal domain management.
|
|
233
|
+
|
|
234
|
+
### Create domains
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
railway domain --service <service> --json # generate a Railway domain
|
|
238
|
+
railway domain example.com --service <service> --json # add a custom domain
|
|
239
|
+
railway domain example.com --service <service> --port 8080 --json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
One Railway-provided domain is allowed per service. Multiple custom domains are supported. Custom domain creation returns the DNS records to add at the DNS provider. Add both the routing record and ownership verification record exactly as returned.
|
|
243
|
+
|
|
244
|
+
Requests to a custom domain can return `404` until Railway verifies the ownership `TXT` record. DNS can take up to 72 hours to propagate.
|
|
245
|
+
|
|
246
|
+
### Inspect and update domains
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
railway domain list --service <service> --json
|
|
250
|
+
railway domain status example.com --service <service> --json
|
|
251
|
+
railway domain update example.com --port 8080 --service <service> --json
|
|
252
|
+
railway domain update old-name.up.railway.app --domain new-name --service <service> --json
|
|
253
|
+
railway domain certificate retry example.com --service <service> --json
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Use `status` when DNS or certificate issuance is not healthy. Retry certificate issuance only after fixing DNS.
|
|
257
|
+
|
|
258
|
+
### Delete domains
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
railway domain delete example.com --service <service> --yes --json
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Domain deletion is destructive. Confirm the domain and service before running it.
|
|
265
|
+
|
|
266
|
+
## Networking commands
|
|
267
|
+
|
|
268
|
+
### Private networking
|
|
269
|
+
|
|
270
|
+
For service-to-service traffic within a project, use private domain references instead of public URLs. This avoids egress and is faster:
|
|
271
|
+
|
|
272
|
+
```text
|
|
273
|
+
BACKEND_URL=http://${{api.RAILWAY_PRIVATE_DOMAIN}}:${{api.PORT}}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
railway private-network status --service <service> --json
|
|
278
|
+
railway private-network update api-internal --service <service> --json
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
When multiple private networks exist, pass `--network <name-or-id>`. Endpoint updates take the prefix only, without `.internal`.
|
|
282
|
+
|
|
283
|
+
### TCP proxies
|
|
284
|
+
|
|
285
|
+
Use TCP proxies to expose non-HTTP ports, such as database or game server ports, to the public internet. Only one TCP proxy is allowed per service instance.
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
railway tcp-proxy list --service <service> --json
|
|
289
|
+
railway tcp-proxy create --service <service> --port 5432 --json
|
|
290
|
+
railway tcp-proxy status <proxy-id-or-domain-or-port> --service <service> --json
|
|
291
|
+
railway tcp-proxy delete <proxy-id-or-domain-or-port> --service <service> --yes --json
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
TCP proxy creation updates service networking config. If the proxy does not become active, redeploy the service and check status.
|
|
295
|
+
|
|
296
|
+
### Outbound networking
|
|
297
|
+
|
|
298
|
+
Use outbound networking commands for Static Outbound IPs and outbound IPv6:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
railway outbound-network status --service <service> --json
|
|
302
|
+
railway outbound-network static-ip status --service <service> --json
|
|
303
|
+
railway outbound-network static-ip enable --service <service> --json
|
|
304
|
+
railway outbound-network static-ip disable --service <service> --json
|
|
305
|
+
railway outbound-network ipv6 status --service <service> --json
|
|
306
|
+
railway outbound-network ipv6 enable --service <service> --json
|
|
307
|
+
railway outbound-network ipv6 disable --service <service> --json
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
Static Outbound IP changes are committed directly but require a redeploy before outbound traffic uses the new assignment. Outbound IPv6 changes are staged as environment config changes; commit staged changes with `railway environment edit` to trigger the redeploy.
|
|
311
|
+
|
|
312
|
+
### CDN caching
|
|
313
|
+
|
|
314
|
+
CDN caching is service-scoped and requires an applied public domain.
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
railway cdn status --service <service> --json
|
|
318
|
+
railway cdn enable --service <service> --json
|
|
319
|
+
railway cdn update --service <service> --html-caching force --default-ttl 4h --json
|
|
320
|
+
railway cdn update --service <service> --no-swr --purge-on-deploy all --json
|
|
321
|
+
railway cdn purge html --service <service> --json
|
|
322
|
+
railway cdn purge all --service <service> --json
|
|
323
|
+
railway cdn disable --service <service> --json
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Use the response headers `x-cache` and `age` to verify cache behavior. Cache hits do not reach the service, so service logs and server-side metrics can undercount traffic after caching is enabled.
|
|
327
|
+
|
|
328
|
+
### WAF Under Attack Mode
|
|
329
|
+
|
|
330
|
+
Under Attack Mode is service-scoped, requires an applied public domain, and is intended for active bot floods or DDoS events.
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
railway waf under-attack status --service <service> --json
|
|
334
|
+
railway waf under-attack enable --service <service> --duration 1h --json
|
|
335
|
+
railway waf under-attack enable --service <service> --json
|
|
336
|
+
railway waf under-attack disable --service <service> --json
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
While active, browser visitors must pass a check. Non-browser API clients and webhooks may receive `429` responses, so warn the user before enabling it on API-only domains.
|
|
340
|
+
|
|
341
|
+
## Troubleshoot configuration
|
|
342
|
+
|
|
343
|
+
- **Invalid dot-path**: check field names and types in the config schema section above
|
|
344
|
+
- **Wrong service key in JSON patch**: resolve service IDs from `railway service list --json`
|
|
345
|
+
- **Variable change didn't take effect**: verify with `railway variable list`, changes trigger redeploy by default
|
|
346
|
+
- **Domain returns errors**: run `railway domain status`, verify the target port, then check HTTP logs
|
|
347
|
+
- **DNS propagation delay**: custom domains can take up to 72 hours to propagate worldwide
|
|
348
|
+
- **Cloudflare proxy issues**: align SSL/TLS mode per Railway's domain guidance
|
|
349
|
+
- **Private networking failing**: run `railway private-network status`, verify the service is listening on the referenced port, and check network flow logs
|
|
350
|
+
- **Outbound allowlist still sees old IPs**: redeploy after enabling/disabling Static Outbound IPs
|
|
351
|
+
- **IPv6 still disabled**: commit the staged environment change and wait for redeploy
|
|
352
|
+
- **CDN appears ineffective**: check `x-cache`, `age`, cache headers, `Set-Cookie`, `Authorization`, method, and response size
|
|
353
|
+
- **WAF breaks API clients**: Under Attack Mode blocks non-browser traffic; disable it or scope protection to browser-facing services
|
|
354
|
+
- **Multi-region patch ignored**: verify region names match the exact identifiers (`us-west2`, `us-east4-eqdc4a`, `europe-west4-drams3a`, `asia-southeast1-eqsg3a`)
|
|
355
|
+
|
|
356
|
+
## Validated against
|
|
357
|
+
|
|
358
|
+
- Docs: [environment.md](https://docs.railway.com/cli/environment), [variable.md](https://docs.railway.com/cli/variable), [domain.md](https://docs.railway.com/cli/domain), [tcp-proxy.md](https://docs.railway.com/cli/tcp-proxy), [private-network.md](https://docs.railway.com/cli/private-network), [outbound-network.md](https://docs.railway.com/cli/outbound-network), [cdn.md](https://docs.railway.com/cli/cdn), [waf.md](https://docs.railway.com/cli/waf)
|
|
359
|
+
- CLI source: [environment/mod.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/environment/mod.rs), [environment/edit.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/environment/edit.rs), [variable.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/variable.rs), [domain.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/domain.rs), [tcp_proxy.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/tcp_proxy.rs), [private_network.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/private_network.rs), [outbound_networking.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/outbound_networking.rs), [cdn.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/cdn.rs), [waf.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/waf.rs)
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# Deploy
|
|
2
|
+
|
|
3
|
+
Ship code, manage releases, and configure builds.
|
|
4
|
+
|
|
5
|
+
## Deploy code
|
|
6
|
+
|
|
7
|
+
### Standard deploy
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
railway up --detach -m "<release summary>"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`--detach` (alias `--no-wait`) returns immediately instead of streaming build logs. Without it, the deploy blocks execution until the build finishes. Always include `-m` with a release summary for auditability.
|
|
14
|
+
|
|
15
|
+
### Verify before reporting — `--detach` only means QUEUED
|
|
16
|
+
|
|
17
|
+
A detached `up` returns when the build is **queued**, not deployed. Never tell the user their app is deployed based on `--detach` output (or a streaming `up` that your shell timed out). Poll until the newest deployment reaches a terminal state:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
railway deployment list --service <service> --environment <environment> --json # newest first; check .status
|
|
21
|
+
railway deployment list --project <project> --environment <environment> --service <service> --json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Poll with the same project, environment, and service scope used for `railway up`. If the deploy used URL-derived IDs or `--project`, do not rely on the directory's linked context.
|
|
25
|
+
|
|
26
|
+
- `QUEUED` / `INITIALIZING` / `WAITING` / `BUILDING` / `DEPLOYING` → still in progress. Keep polling (every 10-15s); tell the user "build in progress" if you report interim status.
|
|
27
|
+
- `NEEDS_APPROVAL` → waiting for manual approval. Report that approval is required; do not keep polling as if the deployment is still building.
|
|
28
|
+
- `SUCCESS` → now it's deployed; report it.
|
|
29
|
+
- `FAILED` / `CRASHED` → do not report success. Pull scoped logs (`railway logs --service <service> --json --lines 100`) and triage per [operate.md](operate.md).
|
|
30
|
+
- `SLEEPING` / `SKIPPED` / `REMOVED` / `REMOVING` / unknown → do not report success. Report the exact state and inspect status/logs to decide the next action.
|
|
31
|
+
|
|
32
|
+
A non-detached `railway up` streams to completion and its exit code is authoritative: 0 = SUCCESS, 1 = FAILED/CRASHED. If it was killed or timed out before printing a terminal status, treat the outcome as unknown and poll as above.
|
|
33
|
+
|
|
34
|
+
### Watch the build
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
railway up --ci -m "<release summary>"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`--ci` streams build logs and exits when the build completes. Use this when the user wants to see build output or when you need to triage build failures immediately.
|
|
41
|
+
|
|
42
|
+
### Targeted deploy
|
|
43
|
+
|
|
44
|
+
When multiple services exist, target explicitly:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
railway up --service <service> --environment <environment> --detach -m "<summary>"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Deploy to an unlinked project
|
|
51
|
+
|
|
52
|
+
For CI or cross-project deploys where the directory isn't linked:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
railway up --project <project-id> --environment <environment> --detach -m "<summary>"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`--project` requires `--environment`. Railway needs both to resolve context.
|
|
59
|
+
|
|
60
|
+
### Path deploys
|
|
61
|
+
|
|
62
|
+
Deploy a subdirectory without changing the shell's working directory:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
railway up ./apps/api --path-as-root --service api --environment production --detach -m "<summary>"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Use `--path-as-root` when the path argument should be archived as the root of the deploy instead of preserving the parent directory prefix.
|
|
69
|
+
|
|
70
|
+
## Manage releases
|
|
71
|
+
|
|
72
|
+
### Redeploy and restart
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
railway redeploy --service <service> --yes # redeploy the latest deployment
|
|
76
|
+
railway redeploy --service <service> --from-source --yes # pull latest commit or image
|
|
77
|
+
railway restart --service <service> --yes # restart without rebuilding
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Redeploy recreates the latest deployment without uploading local code. Use `--from-source` when the service is linked to a repo or image and you need Railway to pull the latest configured source. Restart only restarts the running container. Use restart when the code hasn't changed but the service needs a fresh process.
|
|
81
|
+
|
|
82
|
+
### Remove latest deployment
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
railway down --service <service> --yes
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
This removes the latest successful deployment but doesn't delete the service. To delete a service entirely, use `railway service delete`.
|
|
89
|
+
|
|
90
|
+
### Delete a service
|
|
91
|
+
|
|
92
|
+
Use service deletion when the user wants to remove the service itself:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
railway service delete --service <service> --environment <environment> --yes --json
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Deleting a service is destructive. Confirm the target service and environment before running it.
|
|
99
|
+
|
|
100
|
+
## Deployment history and logs
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
railway deployment list --service <service> --environment <environment> --limit 20 --json
|
|
104
|
+
railway deployment list --project <project> --environment <environment> --service <service> --limit 20 --json
|
|
105
|
+
railway logs --service <service> --lines 200 --json # runtime logs
|
|
106
|
+
railway logs --service <service> --build --lines 200 --json # build logs
|
|
107
|
+
railway logs --latest --lines 200 --json # latest deployment
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
In an interactive terminal, `railway logs` streams indefinitely when no bounding flags are given. Always use `--lines`, `--since`, or `--until` to get a bounded fetch for agent workflows.
|
|
111
|
+
|
|
112
|
+
## Build configuration
|
|
113
|
+
|
|
114
|
+
Railway uses Railpack as the default builder. It detects language and framework from repo contents and assembles a build plan automatically.
|
|
115
|
+
|
|
116
|
+
### Builder selection
|
|
117
|
+
|
|
118
|
+
Three builder options, set via service config:
|
|
119
|
+
|
|
120
|
+
- **RAILPACK** auto-detects language and framework, builds from source (default)
|
|
121
|
+
- **NIXPACKS** is the legacy builder. Use RAILPACK instead.
|
|
122
|
+
- **DOCKERFILE** uses a Dockerfile you provide
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
railway environment edit --service-config <service> build.builder RAILPACK
|
|
126
|
+
railway environment edit --service-config <service> build.builder DOCKERFILE
|
|
127
|
+
railway environment edit --service-config <service> build.dockerfilePath "docker/Dockerfile.prod"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Build and start commands
|
|
131
|
+
|
|
132
|
+
Override when auto-detection gets it wrong:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
railway environment edit --service-config <service> build.buildCommand "npm run build"
|
|
136
|
+
railway environment edit --service-config <service> deploy.startCommand "npm start"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Common reasons to override: wrong package manager detected, multiple build targets in a monorepo, framework-specific output paths.
|
|
140
|
+
|
|
141
|
+
### Railpack environment variables
|
|
142
|
+
|
|
143
|
+
Control Railpack behavior by setting these as service variables:
|
|
144
|
+
|
|
145
|
+
| Variable | Purpose |
|
|
146
|
+
|---|---|
|
|
147
|
+
| `RAILPACK_NODE_VERSION` | Pin Node.js version (e.g., `20`, `22.1.0`) |
|
|
148
|
+
| `RAILPACK_PYTHON_VERSION` | Pin Python version (e.g., `3.12`) |
|
|
149
|
+
| `RAILPACK_GO_BIN` | Go binary name to build |
|
|
150
|
+
| `RAILPACK_STATIC_FILE_ROOT` | Directory for static site output (e.g., `dist`, `build`) |
|
|
151
|
+
| `RAILPACK_SPA_OUTPUT_DIR` | SPA output directory with client-side routing support |
|
|
152
|
+
| `RAILPACK_PACKAGES` | Additional system packages for the build |
|
|
153
|
+
| `RAILPACK_BUILD_APT_PACKAGES` | Apt packages available during build only |
|
|
154
|
+
| `RAILPACK_DEPLOY_APT_PACKAGES` | Apt packages available at runtime only |
|
|
155
|
+
|
|
156
|
+
For full Railpack documentation including language-specific detection, config files, and framework support: https://railpack.com/llms.txt
|
|
157
|
+
|
|
158
|
+
### Static sites
|
|
159
|
+
|
|
160
|
+
Railpack detects static sites from `Staticfile`, `index.html`, or `RAILPACK_STATIC_FILE_ROOT` and serves them with a built-in static file server. If the build outputs to a non-standard directory (for example, `dist/`, `build/`), set `RAILPACK_STATIC_FILE_ROOT` as a variable so Railpack knows where to find the output.
|
|
161
|
+
|
|
162
|
+
## Monorepo patterns
|
|
163
|
+
|
|
164
|
+
### Isolated monorepo
|
|
165
|
+
|
|
166
|
+
When services don't share code, isolate each with its own root directory:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
railway environment edit --service-config <service> source.rootDirectory "/packages/api"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Each service sees only its subdirectory. This approach is clean but breaks if services import from shared packages.
|
|
173
|
+
|
|
174
|
+
### Shared monorepo
|
|
175
|
+
|
|
176
|
+
When services depend on shared packages or root-level workspace config, keep the full repo context and scope via build/start commands instead:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# pnpm workspaces
|
|
180
|
+
railway environment edit --service-config <service> build.buildCommand "pnpm --filter api build"
|
|
181
|
+
railway environment edit --service-config <service> deploy.startCommand "pnpm --filter api start"
|
|
182
|
+
|
|
183
|
+
# yarn workspaces
|
|
184
|
+
railway environment edit --service-config <service> build.buildCommand "yarn workspace api build"
|
|
185
|
+
railway environment edit --service-config <service> deploy.startCommand "yarn workspace api start"
|
|
186
|
+
|
|
187
|
+
# bun workspaces
|
|
188
|
+
railway environment edit --service-config <service> build.buildCommand "bun run --filter api build"
|
|
189
|
+
railway environment edit --service-config <service> deploy.startCommand "bun run --filter api start"
|
|
190
|
+
|
|
191
|
+
# turborepo (works with any package manager)
|
|
192
|
+
railway environment edit --service-config <service> build.buildCommand "npx turbo run build --filter=api"
|
|
193
|
+
railway environment edit --service-config <service> deploy.startCommand "npx turbo run start --filter=api"
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Don't set a restrictive `rootDirectory` in this case. The build needs access to the workspace root.
|
|
197
|
+
|
|
198
|
+
### Watch paths
|
|
199
|
+
|
|
200
|
+
Prevent unrelated package changes from redeploying every service:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
railway environment edit --service-config <service> build.watchPatterns '["packages/api/**","packages/shared/**"]'
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Common monorepo pitfalls
|
|
207
|
+
|
|
208
|
+
- **Using `rootDirectory` with shared imports**: if service A imports from `packages/shared/`, setting `rootDirectory: "/packages/a"` hides the shared code. Use the shared monorepo pattern instead.
|
|
209
|
+
- **Forgetting watch paths**: without watch paths, every push redeploys all services, even when only one package changed.
|
|
210
|
+
- **Wrong filter target**: `pnpm --filter api` uses the `name` field in each package's `package.json`, not the directory name. Verify the package name matches.
|
|
211
|
+
|
|
212
|
+
## Troubleshoot deploys
|
|
213
|
+
|
|
214
|
+
- **No project/service context**: run `railway link` or pass `--project` with `--environment`
|
|
215
|
+
- **Build fails before compile**: check dependency graph, lockfiles, and whether the right builder is selected
|
|
216
|
+
- **Build succeeds but app crashes**: verify start command and required runtime variables
|
|
217
|
+
- **Wrong files in build**: check root directory and watch patterns
|
|
218
|
+
- **`railway down` treated as delete**: `down` only removes the latest deployment. For service deletion, use `railway service delete`
|
|
219
|
+
- **Wrong Node/Python version detected**: set `RAILPACK_NODE_VERSION` or `RAILPACK_PYTHON_VERSION` as a service variable to pin the version
|
|
220
|
+
- **Missing system package at runtime**: add the package to `RAILPACK_DEPLOY_APT_PACKAGES`
|
|
221
|
+
|
|
222
|
+
## Validated against
|
|
223
|
+
|
|
224
|
+
- Docs: [up.md](https://docs.railway.com/cli/up), [deploying.md](https://docs.railway.com/cli/deploying), [deployment.md](https://docs.railway.com/cli/deployment), [redeploy.md](https://docs.railway.com/cli/redeploy), [service.md](https://docs.railway.com/cli/service), [down.md](https://docs.railway.com/cli/down), [railpack.md](https://docs.railway.com/builds/railpack), [monorepo.md](https://docs.railway.com/deployments/monorepo)
|
|
225
|
+
- CLI source: [up.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/up.rs), [deployment.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/deployment.rs), [down.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/down.rs), [redeploy.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/redeploy.rs), [restart.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/restart.rs), [service.rs](https://github.com/railwayapp/cli/blob/v5.23.3/src/commands/service.rs)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Feature flags
|
|
2
|
+
|
|
3
|
+
Manage Railway feature flags (Signals): typed defaults, targeting rules, and runtime reads via the SDK or GraphQL.
|
|
4
|
+
|
|
5
|
+
## What they are
|
|
6
|
+
|
|
7
|
+
Railway feature flags are **project- or workspace-scoped** configuration values resolved at read time from a registry (not environment variables). Each flag has:
|
|
8
|
+
|
|
9
|
+
- A **type**: `bool`, `string`, `number`, or `json`
|
|
10
|
+
- A **default** value used when no rule matches
|
|
11
|
+
- Optional **targeting rules** (attribute comparisons and rollout percentages)
|
|
12
|
+
|
|
13
|
+
Project flags are managed in **Project Settings → Feature Flags**. Workspace flags are visible there read-only.
|
|
14
|
+
|
|
15
|
+
Runtime apps read **one scope** at a time (`project:<id>` or `workspace:<id>`) via the [TypeScript SDK](https://github.com/railwayapp/railway-ts-sdk) or GraphQL — flags from other scopes are separate registries.
|
|
16
|
+
|
|
17
|
+
## Agent / MCP workflow
|
|
18
|
+
|
|
19
|
+
Prefer **Remote MCP** tools when OAuth-scoped project access is enough:
|
|
20
|
+
|
|
21
|
+
| Tool | Access | Purpose |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `list-feature-flags` | viewer | List project flags; includes workspace flags when present |
|
|
24
|
+
| `get-feature-flag` | viewer | Inspect one flag (`scope`: `project` or `workspace`) |
|
|
25
|
+
| `set-feature-flag` | admin | Create a flag or update its default |
|
|
26
|
+
| `delete-feature-flag` | admin | Delete a project-scoped flag |
|
|
27
|
+
|
|
28
|
+
Always pass explicit `projectId` (from a Railway URL or `railway status --json`).
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
List feature flags for project 6adb5ae3-0e3a-4ead-b42c-1fd36f217ffb
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
Set feature flag checkout-v2 on project 6adb5ae3-0e3a-4ead-b42c-1fd36f217ffb to true (bool)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
For targeting rules and rollouts, use the dashboard UI or GraphQL (`signalRuleSet`) until MCP rule tools exist.
|
|
39
|
+
|
|
40
|
+
## CLI (when available)
|
|
41
|
+
|
|
42
|
+
The Railway CLI exposes `railway flag` (alias `railway signal`) for registry CRUD. Upgrade the CLI if the command is missing:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
railway upgrade --yes
|
|
46
|
+
railway flag list --project <project-id> --json
|
|
47
|
+
railway flag checkout-v2 true --project <project-id>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Use `--project` (or link first) so scope is explicit in agent workflows.
|
|
51
|
+
|
|
52
|
+
## GraphQL fallback
|
|
53
|
+
|
|
54
|
+
When MCP and CLI are unavailable, use the public GraphQL API (`signals`, `signalCreate`, `signalDefaultSet`, `signalRuleSet`, `signalDelete`) with owner `project:<projectId>` or `workspace:<workspaceId>`. See https://docs.railway.com/docs/feature-flags
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
scripts/railway-api.sh '{"owner":"project:<projectId>"}' <<'EOF'
|
|
58
|
+
query projectSignals($owner: String!) {
|
|
59
|
+
signals(owner: $owner) { name type default rules version }
|
|
60
|
+
}
|
|
61
|
+
EOF
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Runtime SDK
|
|
65
|
+
|
|
66
|
+
In deployed services, use the Railway SDK flags module:
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import { flags } from "railway";
|
|
70
|
+
|
|
71
|
+
await flags.init({ scope: { projectId: process.env.RAILWAY_PROJECT_ID! } });
|
|
72
|
+
|
|
73
|
+
const enabled = flags.getBoolean("checkout-v2", {
|
|
74
|
+
targetingKey: userId,
|
|
75
|
+
attributes: { plan: "enterprise" },
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Poll interval defaults are suitable for most apps; flags refresh when registry versions change.
|
|
80
|
+
|
|
81
|
+
## Do not confuse with
|
|
82
|
+
|
|
83
|
+
- **Environment variables** — static per-environment config (`railway variable set`). Use flags when you need typed defaults, targeting, and central registry semantics.
|
|
84
|
+
- **Priority Boarding / account toggles** — internal beta switches on your Railway account, unrelated to project feature flags.
|
|
85
|
+
- **Platform feature flags** — Railway staff tooling only.
|
|
86
|
+
|
|
87
|
+
## Dashboard
|
|
88
|
+
|
|
89
|
+
Human-friendly CRUD: open the project → **Settings → Feature Flags**. Workspace-scoped flags appear in a read-only section when they exist.
|