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,159 @@
|
|
|
1
|
+
# Check CloudFormation Template Compliance
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Deterministic procedure for validating a CloudFormation template against security and compliance rules using cfn-guard. Works via the `cfn-guard` CLI or the Python `guardpycfn` binding.
|
|
6
|
+
|
|
7
|
+
## Parameters
|
|
8
|
+
|
|
9
|
+
- **template_content** (required): The CloudFormation template as a YAML or JSON string, a file path, or a URL to the template.
|
|
10
|
+
- **rules_file_path** (optional): Path to a custom cfn-guard rules file. If omitted, you MUST obtain rules separately because cfn-guard has no built-in rule set. Recommended source: https://github.com/aws-cloudformation/aws-guard-rules-registry
|
|
11
|
+
|
|
12
|
+
**Constraints for parameter acquisition:**
|
|
13
|
+
|
|
14
|
+
- You MUST ask for all required parameters upfront in a single prompt rather than one at a time
|
|
15
|
+
- You MUST support multiple input methods for the template:
|
|
16
|
+
- Direct input: Template content pasted directly
|
|
17
|
+
- File path: Path to a local template file
|
|
18
|
+
- URL: Link to a template in a repository or S3
|
|
19
|
+
- You MUST confirm successful acquisition of the template content before proceeding
|
|
20
|
+
|
|
21
|
+
## Steps
|
|
22
|
+
|
|
23
|
+
### 1. Verify Dependencies
|
|
24
|
+
|
|
25
|
+
Check which compliance mechanism is available.
|
|
26
|
+
|
|
27
|
+
**Constraints:**
|
|
28
|
+
|
|
29
|
+
- You MUST check in this order of preference:
|
|
30
|
+
1. `cfn-guard` CLI available on the user's system (verify with `which cfn-guard` or `cfn-guard --version`)
|
|
31
|
+
2. Python `guardpycfn` library (verify by attempting `import guardpycfn` in a throwaway Python command)
|
|
32
|
+
- If cfn-guard is not installed, You MUST ask the user: "I can install `cfn-guard` (see https://docs.aws.amazon.com/cfn-guard/latest/ug/setting-up.html for install options). Do you want me to install it, or would you prefer to install it manually?"
|
|
33
|
+
- You MUST NOT execute compliance checks or run any install command without the user's explicit approval because this changes the user's environment
|
|
34
|
+
- If no mechanism is available and the user declines installation, You MUST ask whether to abort or proceed anyway (knowing the SOP cannot complete)
|
|
35
|
+
- You MUST respect the user's decision to proceed, install, or abort
|
|
36
|
+
|
|
37
|
+
### 2. Acquire Template Content
|
|
38
|
+
|
|
39
|
+
Obtain the CloudFormation template from the user.
|
|
40
|
+
|
|
41
|
+
**Constraints:**
|
|
42
|
+
|
|
43
|
+
- You MUST ask the user which template(s) to check even if templates are discoverable in the working directory, because the user may only want a subset checked
|
|
44
|
+
- You MUST read the template content from the provided source (file path, direct input, or URL)
|
|
45
|
+
- You MUST confirm the template is non-empty and parseable as YAML or JSON before proceeding
|
|
46
|
+
- If the template cannot be read or parsed, You MUST inform the user with the specific error and stop
|
|
47
|
+
- You SHOULD recommend running the `validate-cloudformation-template` SOP first if the user has not already done so, because compliance checks assume a syntactically valid template
|
|
48
|
+
|
|
49
|
+
### 3. Acquire Rules File (if needed)
|
|
50
|
+
|
|
51
|
+
Determine which rules to apply.
|
|
52
|
+
|
|
53
|
+
**Constraints:**
|
|
54
|
+
|
|
55
|
+
- If the CLI or `guardpycfn` library is used, You MUST obtain a rules file because cfn-guard requires explicit rules:
|
|
56
|
+
- If the user provided `rules_file_path`, You MUST use it
|
|
57
|
+
- Otherwise, You MUST recommend the user download the AWS managed rules from https://github.com/aws-cloudformation/aws-guard-rules-registry
|
|
58
|
+
- You MUST confirm the rules file is readable before proceeding
|
|
59
|
+
|
|
60
|
+
### 4. Run Compliance Check
|
|
61
|
+
|
|
62
|
+
Execute cfn-guard against the template using the best available mechanism.
|
|
63
|
+
|
|
64
|
+
**Constraints:**
|
|
65
|
+
|
|
66
|
+
- If `cfn-guard` CLI is available, You MUST invoke it with the template and rules file:
|
|
67
|
+
- Example: `cfn-guard validate --rules rules.guard --data template.yaml --output-format json`
|
|
68
|
+
- You MUST use `--output-format json` for structured output
|
|
69
|
+
- Otherwise, if the Python `guardpycfn` library is available, You MUST invoke `guardpycfn.validate_with_guard(template_content, rules_content, verbose=True)`
|
|
70
|
+
- You MUST NOT modify the template content before checking because the user needs to see violations against their actual template
|
|
71
|
+
- You MUST capture the full output including rule IDs, resource names, resource types, and remediation messages
|
|
72
|
+
|
|
73
|
+
### 5. Present Results
|
|
74
|
+
|
|
75
|
+
Report compliance findings to the user.
|
|
76
|
+
|
|
77
|
+
**Constraints:**
|
|
78
|
+
|
|
79
|
+
- You MUST start the summary with: "Your template has X violations"
|
|
80
|
+
- You MUST group related violations together (e.g., all PublicAccessBlock settings for an S3 bucket)
|
|
81
|
+
- You MUST prioritize by severity: critical security issues first (encryption, public access), then best-practice recommendations (versioning, logging, replication)
|
|
82
|
+
- For repeated sub-property violations on the same resource, You MUST show them once: "Settings (A, B, C, D) must all be true"
|
|
83
|
+
- You MUST add context for optional features (e.g., ObjectLock and Replication may not be needed for all use cases)
|
|
84
|
+
- For each violation, You MUST provide the specific CloudFormation properties to add or change
|
|
85
|
+
- You MUST use inline YAML comments to explain why each property is needed
|
|
86
|
+
- You MUST NOT show entire resource definitions when only specific properties need to change
|
|
87
|
+
- If the template is fully compliant, You MUST confirm this clearly
|
|
88
|
+
|
|
89
|
+
### 6. Recommend Next Steps
|
|
90
|
+
|
|
91
|
+
Guide the user after compliance results.
|
|
92
|
+
|
|
93
|
+
**Constraints:**
|
|
94
|
+
|
|
95
|
+
- If critical security violations were found, You MUST recommend fixing them before deployment
|
|
96
|
+
- You SHOULD help the user understand which violations are mandatory fixes versus optional improvements based on their use case
|
|
97
|
+
- After fixes are applied, You SHOULD recommend re-running this SOP to confirm all violations are resolved
|
|
98
|
+
- Once compliance passes, You SHOULD recommend the `cloudformation-pre-deploy-validation` SOP for final pre-deployment readiness
|
|
99
|
+
|
|
100
|
+
## Examples
|
|
101
|
+
|
|
102
|
+
### Example Input
|
|
103
|
+
|
|
104
|
+
```yaml
|
|
105
|
+
AWSTemplateFormatVersion: '2010-09-09'
|
|
106
|
+
Resources:
|
|
107
|
+
MyBucket:
|
|
108
|
+
Type: AWS::S3::Bucket
|
|
109
|
+
Properties:
|
|
110
|
+
BucketName: my-app-data
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Example Output
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Your template has 4 violations.
|
|
117
|
+
|
|
118
|
+
**MyBucket (AWS::S3::Bucket) — Critical Security:**
|
|
119
|
+
|
|
120
|
+
1. Public access not blocked. Add:
|
|
121
|
+
PublicAccessBlockConfiguration:
|
|
122
|
+
BlockPublicAcls: true # Prevents public ACLs
|
|
123
|
+
BlockPublicPolicy: true # Prevents public bucket policies
|
|
124
|
+
IgnorePublicAcls: true # Ignores existing public ACLs
|
|
125
|
+
RestrictPublicBuckets: true # Restricts public bucket access
|
|
126
|
+
|
|
127
|
+
2. Server-side encryption not configured. Add:
|
|
128
|
+
BucketEncryption:
|
|
129
|
+
ServerSideEncryptionConfiguration:
|
|
130
|
+
- ServerSideEncryptionByDefault:
|
|
131
|
+
SSEAlgorithm: aws:kms # KMS encryption at rest
|
|
132
|
+
|
|
133
|
+
**MyBucket (AWS::S3::Bucket) — Best Practice:**
|
|
134
|
+
|
|
135
|
+
3. Versioning not enabled. Add:
|
|
136
|
+
VersioningConfiguration:
|
|
137
|
+
Status: Enabled # Protects against accidental deletes
|
|
138
|
+
|
|
139
|
+
4. Access logging not configured. Add:
|
|
140
|
+
LoggingConfiguration:
|
|
141
|
+
DestinationBucketName: !Ref LogBucket
|
|
142
|
+
|
|
143
|
+
**Advisory — Optional Enhancements:**
|
|
144
|
+
ObjectLock and Replication rules also flagged. Evaluate based on your use case before adding.
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Troubleshooting
|
|
148
|
+
|
|
149
|
+
### High violation count on simple templates
|
|
150
|
+
Some rules check multiple sub-properties independently. A single missing `PublicAccessBlockConfiguration` block can produce 4 separate violations (one per sub-property). Group them mentally and fix the parent property.
|
|
151
|
+
|
|
152
|
+
### False positives for optional features
|
|
153
|
+
Rules like `S3_BUCKET_REPLICATION_ENABLED` and `S3_BUCKET_DEFAULT_LOCK_ENABLED` enforce best practices that may not apply to every bucket. Evaluate whether the feature is needed for your use case before adding it.
|
|
154
|
+
|
|
155
|
+
### Custom rules not found
|
|
156
|
+
If using a custom `rules_file_path`, ensure the file exists and follows cfn-guard rule syntax. Standalone CLI and `guardpycfn` usage both require obtaining rules separately (e.g., from the aws-guard-rules-registry).
|
|
157
|
+
|
|
158
|
+
### cfn-guard not installed
|
|
159
|
+
Install from https://docs.aws.amazon.com/cfn-guard/latest/ug/setting-up.html.
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# CloudFormation Pre-Deploy Validation
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Deterministic procedure for running CloudFormation's pre-deployment validation feature. When a change set is created, CloudFormation automatically validates the template against three common failure causes before any resources are provisioned:
|
|
6
|
+
|
|
7
|
+
1. **Property syntax validation** (FAIL) — Validates resource properties against AWS resource schemas (required properties, valid values, deprecated properties).
|
|
8
|
+
2. **Resource name conflict validation** (FAIL) — Detects naming conflicts with existing resources in the account.
|
|
9
|
+
3. **S3 bucket emptiness validation** (WARN) — Warns when deleting S3 buckets that contain objects.
|
|
10
|
+
|
|
11
|
+
Validation errors are exposed through the `describe-events` API scoped to the change set. This procedure uses `call_aws` (preferred) or the AWS CLI to invoke these APIs directly. Note: The AWS MCP server is recommended for streamlined API invocation, but all steps can be performed using the AWS CLI alone.
|
|
12
|
+
|
|
13
|
+
**Important:** The legacy `describe-stack-events` API does NOT return validation errors. You MUST use `describe-events --change-set-name <arn>` to retrieve validation results.
|
|
14
|
+
|
|
15
|
+
## Parameters
|
|
16
|
+
|
|
17
|
+
- **stack_name** (required): The CloudFormation stack name to create or update.
|
|
18
|
+
- **template_source** (required): The template to deploy. One of:
|
|
19
|
+
- File path to a local template
|
|
20
|
+
- S3 URL of an uploaded template
|
|
21
|
+
- Template content provided directly
|
|
22
|
+
- **change_set_type** (required): Either `CREATE` (new stack) or `UPDATE` (existing stack).
|
|
23
|
+
- **region** (required): AWS region for deployment.
|
|
24
|
+
- **parameters** (optional): Stack parameters as key-value pairs.
|
|
25
|
+
- **capabilities** (optional): CloudFormation capabilities (e.g., `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`) if the template creates IAM resources.
|
|
26
|
+
|
|
27
|
+
**Constraints for parameter acquisition:**
|
|
28
|
+
|
|
29
|
+
- You MUST ask for all required parameters upfront in a single prompt
|
|
30
|
+
- You MUST support multiple input methods for the template (direct input, file path, S3 URL)
|
|
31
|
+
- You MUST confirm successful acquisition of all parameters before proceeding
|
|
32
|
+
|
|
33
|
+
## Steps
|
|
34
|
+
|
|
35
|
+
### 1. Verify Dependencies
|
|
36
|
+
|
|
37
|
+
Check which mechanism is available to invoke AWS APIs.
|
|
38
|
+
|
|
39
|
+
**Constraints:**
|
|
40
|
+
|
|
41
|
+
- You MUST check in this order of preference:
|
|
42
|
+
1. `call_aws` tool from the AWS MCP Server (preferred for sandboxed execution, audit logging, and observability)
|
|
43
|
+
2. AWS CLI (`aws`) available on the user's system (verify with `which aws` or `aws --version`)
|
|
44
|
+
- You MUST verify the user has valid AWS credentials configured for the target account/region (e.g., `aws sts get-caller-identity --region <region>`). This read-only call is acceptable during verification because it does not modify any resources
|
|
45
|
+
- You MUST ONLY check for availability and credential validity. You MUST NOT create change sets, execute change sets, or install missing dependencies during this step because creating a change set triggers actual CloudFormation operations and installation modifies the user's environment
|
|
46
|
+
- If the AWS CLI is missing, You MUST ask the user explicitly before running any install command, using a prompt like: "I can install the AWS CLI via `<platform-specific command>`. Do you want me to install it, or would you prefer to install it manually?"
|
|
47
|
+
- You MUST NOT run install commands without the user's explicit approval because this changes the user's environment
|
|
48
|
+
- If credentials are missing or invalid, You MUST ask the user to configure credentials (e.g., via `aws configure`, environment variables, or their preferred credential provider) and MUST NOT proceed until credentials are confirmed
|
|
49
|
+
- You MUST respect the user's decision to proceed, install, or abort
|
|
50
|
+
|
|
51
|
+
### 2. Recommend Template-Level Pre-Validation
|
|
52
|
+
|
|
53
|
+
Catch issues locally before consuming CloudFormation API quota.
|
|
54
|
+
|
|
55
|
+
**Constraints:**
|
|
56
|
+
|
|
57
|
+
- You SHOULD recommend running the `validate-cloudformation-template` SOP first to catch cfn-lint syntax and schema errors locally
|
|
58
|
+
- You SHOULD recommend running the `check-cloudformation-template-compliance` SOP to catch security violations locally
|
|
59
|
+
- If the user has already run these checks or explicitly skips them, You MUST proceed to the next step
|
|
60
|
+
|
|
61
|
+
### 3. Upload Template (if needed)
|
|
62
|
+
|
|
63
|
+
Prepare the template for the change set.
|
|
64
|
+
|
|
65
|
+
**Constraints:**
|
|
66
|
+
|
|
67
|
+
- If the template is small (≤ 51,200 bytes) and provided as content or a local file, You MAY pass it inline via `--template-body`
|
|
68
|
+
- If the template exceeds 51,200 bytes, You MUST upload it to S3 and use `--template-url` because `--template-body` has a size limit
|
|
69
|
+
- If the template is already at an S3 URL, You MUST use `--template-url` directly
|
|
70
|
+
|
|
71
|
+
### 4. Create Change Set
|
|
72
|
+
|
|
73
|
+
Create the change set to trigger pre-deployment validation. Validation runs automatically during change set creation — no opt-in is required.
|
|
74
|
+
|
|
75
|
+
**Constraints:**
|
|
76
|
+
|
|
77
|
+
- You MUST use a unique, descriptive change set name (e.g., `pre-deploy-validation-<timestamp>`)
|
|
78
|
+
- You MUST use the appropriate `--change-set-type` (`CREATE` for new stacks, `UPDATE` for existing)
|
|
79
|
+
- You MUST include `--capabilities` if the template creates IAM resources (e.g., `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`)
|
|
80
|
+
- You MUST invoke via `call_aws` (preferred) or the AWS CLI. Example CLI form:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
aws cloudformation create-change-set \
|
|
84
|
+
--stack-name <stack_name> \
|
|
85
|
+
--template-body file://<path> \
|
|
86
|
+
--change-set-name pre-deploy-validation-$(date +%s) \
|
|
87
|
+
--change-set-type CREATE \
|
|
88
|
+
--region <region> \
|
|
89
|
+
--capabilities CAPABILITY_IAM
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
> **Notes:** Use `--template-url s3://...` instead of `--template-body` for templates exceeding 51,200 bytes. Include `--capabilities` only if the template creates IAM resources.
|
|
93
|
+
- You MUST capture the returned change set ARN (Id) for the next step
|
|
94
|
+
- You MUST explain to the user that creating a change set does NOT modify any resources because it only plans the changes and runs validation
|
|
95
|
+
- You MUST wait for change set creation to reach a terminal status (`CREATE_COMPLETE`, `FAILED`) before checking validation results. Use `describe-change-set` to poll status.
|
|
96
|
+
|
|
97
|
+
### 5. Retrieve Validation Results via describe-events
|
|
98
|
+
|
|
99
|
+
Fetch validation results from the `describe-events` API.
|
|
100
|
+
|
|
101
|
+
**Constraints:**
|
|
102
|
+
|
|
103
|
+
- You MUST use `aws cloudformation describe-events --change-set-name <arn> --region <region>` (via `call_aws` or CLI)
|
|
104
|
+
- You MUST NOT use `describe-stack-events` because the legacy stack events API does NOT return validation errors — it only surfaces resource provisioning events after execution
|
|
105
|
+
- You MUST filter events where `EventType` equals `VALIDATION_ERROR` because these are the validation findings
|
|
106
|
+
- For each validation event, You MUST extract:
|
|
107
|
+
- `ValidationName` — one of `PROPERTY_VALIDATION`, `RESOURCE_NAME_CONFLICT`, `S3_BUCKET_EMPTINESS`
|
|
108
|
+
- `ValidationStatus` — `FAILED` or `PASSED`
|
|
109
|
+
- `ValidationStatusReason` — detailed error message
|
|
110
|
+
- `ValidationPath` — property path in the template where the error occurred
|
|
111
|
+
- `ValidationFailureMode` — `FAIL` (blocks execution) or `WARN` (allows execution)
|
|
112
|
+
- If no `VALIDATION_ERROR` events are returned, You MUST treat the change set as having passed all validations
|
|
113
|
+
|
|
114
|
+
### 6. Present Results and Guide Remediation
|
|
115
|
+
|
|
116
|
+
Report validation findings grouped by type and help the user fix issues.
|
|
117
|
+
|
|
118
|
+
**Constraints:**
|
|
119
|
+
|
|
120
|
+
- You MUST present results grouped by `ValidationName`:
|
|
121
|
+
- **Property syntax validation** — invalid property values or formats
|
|
122
|
+
- **Resource name conflict validation** — resources that conflict with existing resources
|
|
123
|
+
- **S3 emptiness validation** — S3 buckets that must be empty before deletion
|
|
124
|
+
- For each failure, You MUST include the `ValidationPath` so the user can pinpoint the exact location in their template
|
|
125
|
+
- For each failure, You MUST provide the specific template fix showing the corrected property or resource
|
|
126
|
+
- You MUST clearly distinguish `FAIL` (execution blocked) from `WARN` (execution allowed) so the user knows what MUST be fixed versus what SHOULD be considered
|
|
127
|
+
- If any `FAIL`-mode failures exist, You MUST recommend fixing the template and creating a new change set
|
|
128
|
+
- You MUST NOT recommend executing a change set that has `FAIL`-mode validation failures because CloudFormation will block execution and the change set cannot succeed
|
|
129
|
+
- If only `WARN`-mode issues exist, You SHOULD explain the warning and let the user decide
|
|
130
|
+
|
|
131
|
+
### 7. Execute or Clean Up
|
|
132
|
+
|
|
133
|
+
Guide the user on next steps after validation.
|
|
134
|
+
|
|
135
|
+
**Constraints:**
|
|
136
|
+
|
|
137
|
+
- If all validations passed (or only `WARN`-mode issues that the user accepts), You MUST ask the user for explicit approval before executing the change set
|
|
138
|
+
- You MUST NOT execute the change set without explicit user approval because this will modify live infrastructure
|
|
139
|
+
- You MUST NOT delete a stack without explicit user approval. Before deleting, You MUST verify the stack status is `REVIEW_IN_PROGRESS` by calling `describe-stacks`
|
|
140
|
+
- To execute: `aws cloudformation execute-change-set --change-set-name <arn> --region <region>`
|
|
141
|
+
- If the user does not want to execute:
|
|
142
|
+
- For `UPDATE`-type change sets: recommend deleting the change set to keep the stack clean: `aws cloudformation delete-change-set --change-set-name <arn> --region <region>`
|
|
143
|
+
- For `CREATE`-type change sets: You MUST recommend also deleting the stack (after user approval), because it remains in `REVIEW_IN_PROGRESS` state and will block future creates: `aws cloudformation delete-change-set --change-set-name <arn> --region <region>` followed by `aws cloudformation delete-stack --stack-name <stack_name> --region <region>`
|
|
144
|
+
- If validation failed, You MUST recommend fixing the template and re-running from Step 4, since validation results are tied to a specific change set and modifying the template requires creating a new one
|
|
145
|
+
- If the original change set used `--change-set-type CREATE`, You MUST warn the user that the stack now exists in `REVIEW_IN_PROGRESS` state. Before retrying with `--change-set-type CREATE`, the user MUST first delete the stack (with user approval). Alternatively, the user can delete only the failed change set and create a new `CREATE` change set against the same stack.
|
|
146
|
+
|
|
147
|
+
## Examples
|
|
148
|
+
|
|
149
|
+
### Example: Successful Validation
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Change set "pre-deploy-validation-1713580000" created for stack "my-app-stack".
|
|
153
|
+
|
|
154
|
+
Retrieved via: aws cloudformation describe-events --change-set-name arn:aws:cloudformation:...
|
|
155
|
+
|
|
156
|
+
Validation results:
|
|
157
|
+
✓ PROPERTY_VALIDATION: PASSED
|
|
158
|
+
✓ RESOURCE_NAME_CONFLICT: PASSED
|
|
159
|
+
✓ S3_BUCKET_EMPTINESS: PASSED
|
|
160
|
+
|
|
161
|
+
The change set is ready to execute. Would you like to execute it now?
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Example: Failed Validation
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
Change set "pre-deploy-validation-1713580000" created for stack "my-app-stack".
|
|
168
|
+
|
|
169
|
+
Retrieved via: aws cloudformation describe-events --change-set-name arn:aws:cloudformation:...
|
|
170
|
+
|
|
171
|
+
✗ PROPERTY_VALIDATION (FAIL):
|
|
172
|
+
ValidationPath: /Resources/MyBucket/Properties/NotificationConfiguration/QueueConfigurations/0
|
|
173
|
+
ValidationStatusReason: required key [Event] not found
|
|
174
|
+
|
|
175
|
+
Fix (Resources/MyBucket/Properties/NotificationConfiguration/QueueConfigurations):
|
|
176
|
+
QueueConfigurations:
|
|
177
|
+
- Queue: !GetAtt MyQueue.Arn
|
|
178
|
+
Event: s3:ObjectCreated:* # Required property was missing
|
|
179
|
+
|
|
180
|
+
✗ RESOURCE_NAME_CONFLICT (FAIL):
|
|
181
|
+
ValidationPath: /Resources/MyDynamoDBTable/Properties/TableName
|
|
182
|
+
ValidationStatusReason: A table named "users-table" already exists in this account/region.
|
|
183
|
+
|
|
184
|
+
Fix: Make the name unique per stack:
|
|
185
|
+
TableName: !Sub "${AWS::StackName}-users-table"
|
|
186
|
+
|
|
187
|
+
⚠ S3_BUCKET_EMPTINESS (WARN):
|
|
188
|
+
ValidationPath: /Resources/DataBucket
|
|
189
|
+
ValidationStatusReason: Bucket is not empty. Delete may fail.
|
|
190
|
+
|
|
191
|
+
Options:
|
|
192
|
+
- Empty the bucket before stack deletion
|
|
193
|
+
- Or set DeletionPolicy: Retain on the bucket resource
|
|
194
|
+
|
|
195
|
+
2 FAIL-mode issues must be fixed before execution.
|
|
196
|
+
Fix the template and create a new change set.
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Troubleshooting
|
|
200
|
+
|
|
201
|
+
### describe-events returns empty or unknown command
|
|
202
|
+
The `describe-events` API (scoped to change sets) requires AWS CLI support for the command. If it is not recognized, update the AWS CLI: `pip install --upgrade awscli` or `brew upgrade awscli`. If the command still returns nothing, confirm the change set ARN is correct and the change set has finished creating.
|
|
203
|
+
|
|
204
|
+
### User calls describe-stack-events instead
|
|
205
|
+
`describe-stack-events` returns events after the stack begins provisioning. It does NOT include pre-deployment validation errors. You MUST redirect the user to `describe-events --change-set-name <arn>`.
|
|
206
|
+
|
|
207
|
+
### Change set stuck in CREATE_IN_PROGRESS
|
|
208
|
+
Use `aws cloudformation describe-change-set --change-set-name <arn>` to check the status. Wait until it reaches `CREATE_COMPLETE` or `FAILED` before calling `describe-events`.
|
|
209
|
+
|
|
210
|
+
### Change set status FAILED but no validation events
|
|
211
|
+
If `describe-change-set` shows `Status: FAILED` with a `StatusReason` unrelated to validation (e.g., "No updates are to be performed"), the failure is not a pre-deployment validation issue. Investigate the `StatusReason` directly.
|
|
212
|
+
|
|
213
|
+
### Missing s3:ListBucket permission
|
|
214
|
+
S3 bucket emptiness validation requires `s3:ListBucket` permission on the buckets being deleted. If this validation is skipped or errors, verify the deploying role has this permission.
|
|
215
|
+
|
|
216
|
+
### Validation passed but deployment still fails
|
|
217
|
+
Pre-deployment validation catches three common classes of issues but cannot detect all runtime failures (resource limits, service constraints, IAM permissions, invalid AMI IDs). If deployment fails after validation passes, use the `troubleshoot-cloudformation-deployment` tool or SOP to diagnose the runtime failure.
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# Deploy with Express Mode
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Deterministic procedure for deploying CloudFormation stacks using **Express mode** — a deployment mode that completes stack operations as soon as resource configuration is applied, giving immediate confirmation to proceed to the next iteration. Resources continue becoming ready to serve traffic in the background.
|
|
6
|
+
|
|
7
|
+
Express mode works with all existing CloudFormation templates and requires no template changes. It is recommended for development workflows where you iterate frequently and need fast deployment confirmation.
|
|
8
|
+
|
|
9
|
+
**When to use Express mode:**
|
|
10
|
+
|
|
11
|
+
- Iterating on infrastructure configurations during development
|
|
12
|
+
- Deploying individual components of your application
|
|
13
|
+
- Deploying dependent stacks that only need resource outputs (VPC IDs, endpoints, ARNs) to proceed
|
|
14
|
+
- Building with AI agents that need fast feedback loops to validate and refine infrastructure
|
|
15
|
+
- Prototyping and experimenting with new architectures
|
|
16
|
+
|
|
17
|
+
**When NOT to use Express mode:**
|
|
18
|
+
|
|
19
|
+
- Production workflows that require resources to serve traffic immediately after stack completion
|
|
20
|
+
- Deployments where downstream consumers immediately hit endpoints (load balancers, CloudFront distributions, ECS services) after the operation completes
|
|
21
|
+
|
|
22
|
+
**What Express mode skips:**
|
|
23
|
+
|
|
24
|
+
1. Traffic readiness (e.g., EC2 instance reaching `running` state)
|
|
25
|
+
2. Region propagation (e.g., CloudFront propagating to all edge locations, 5-10 minutes)
|
|
26
|
+
3. Cleanup (e.g., network interface removal before Lambda function deletion)
|
|
27
|
+
|
|
28
|
+
**What does NOT change:**
|
|
29
|
+
|
|
30
|
+
- CloudFormation still processes all resources in dependency order
|
|
31
|
+
- CloudFormation still retries dependent resources that encounter transient failures
|
|
32
|
+
- CloudFormation still handles dependent resource failures
|
|
33
|
+
|
|
34
|
+
## Parameters
|
|
35
|
+
|
|
36
|
+
- **stack_name** (required): The CloudFormation stack name.
|
|
37
|
+
- **template_source** (required): The template to deploy. One of:
|
|
38
|
+
- File path to a local template
|
|
39
|
+
- S3 URL of an uploaded template
|
|
40
|
+
- Template content provided directly
|
|
41
|
+
- **operation** (required): One of `CREATE`, `UPDATE`, or `DELETE`.
|
|
42
|
+
- **region** (required): AWS region for deployment.
|
|
43
|
+
- **enable_rollback** (optional): Whether to enable rollback. Express mode disables rollback by default for fastest iteration. Set to `true` if the user wants rollback on failure.
|
|
44
|
+
- **parameters** (optional): Stack parameters as key-value pairs.
|
|
45
|
+
- **capabilities** (optional): CloudFormation capabilities (e.g., `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`) if the template creates IAM resources.
|
|
46
|
+
|
|
47
|
+
**Constraints for parameter acquisition:**
|
|
48
|
+
|
|
49
|
+
- You MUST ask for all required parameters upfront in a single prompt
|
|
50
|
+
- You MUST support multiple input methods for the template (direct input, file path, S3 URL)
|
|
51
|
+
- You MUST confirm successful acquisition of all parameters before proceeding
|
|
52
|
+
|
|
53
|
+
## Steps
|
|
54
|
+
|
|
55
|
+
### 1. Verify Dependencies
|
|
56
|
+
|
|
57
|
+
Check which mechanism is available to invoke AWS APIs.
|
|
58
|
+
|
|
59
|
+
**Constraints:**
|
|
60
|
+
|
|
61
|
+
- You MUST check in this order of preference:
|
|
62
|
+
1. `call_aws` tool from the AWS MCP Server (preferred for sandboxed execution, audit logging, and observability)
|
|
63
|
+
2. AWS CLI (`aws`) available on the user's system (verify with `which aws` or `aws --version`)
|
|
64
|
+
- You MUST verify the user has valid AWS credentials configured for the target account/region (e.g., `aws sts get-caller-identity --region <region>`). This read-only call is acceptable during verification because it does not modify any resources
|
|
65
|
+
- You MUST ONLY check for availability and credential validity. You MUST NOT create or modify stacks or install missing dependencies during this step
|
|
66
|
+
- If the AWS CLI is missing, You MUST ask the user explicitly before running any install command
|
|
67
|
+
- You MUST NOT run install commands without the user's explicit approval
|
|
68
|
+
- If credentials are missing or invalid, You MUST ask the user to configure credentials and MUST NOT proceed until credentials are confirmed
|
|
69
|
+
|
|
70
|
+
### 2. Confirm Express Mode is Appropriate
|
|
71
|
+
|
|
72
|
+
Verify with the user that Express mode is the right choice for their use case.
|
|
73
|
+
|
|
74
|
+
**Constraints:**
|
|
75
|
+
|
|
76
|
+
- You MUST inform the user that Express mode completes when resource configuration is applied, and resources continue stabilizing in the background
|
|
77
|
+
- You MUST ask whether the user's workflow requires resources to serve traffic immediately after the stack operation completes
|
|
78
|
+
- If the user's workflow DOES require immediate traffic readiness (production serving, endpoint availability), You MUST recommend using the default deployment behavior instead
|
|
79
|
+
- If the user is in a development/iteration workflow, You SHOULD proceed with Express mode
|
|
80
|
+
- You MUST inform the user that rollback is disabled by default with Express mode. If the user wants rollback protection, You MUST include `"disableRollback": false` in the deployment configuration
|
|
81
|
+
|
|
82
|
+
### 3. Upload Template (if needed)
|
|
83
|
+
|
|
84
|
+
Prepare the template for the operation.
|
|
85
|
+
|
|
86
|
+
**Constraints:**
|
|
87
|
+
|
|
88
|
+
- If the template is small (≤ 51,200 bytes) and provided as content or a local file, You MAY pass it inline via `--template-body`
|
|
89
|
+
- If the template exceeds 51,200 bytes, You MUST upload it to S3 and use `--template-url` because `--template-body` has a size limit
|
|
90
|
+
- If the template is already at an S3 URL, You MUST use `--template-url` directly
|
|
91
|
+
- This step does not apply to `DELETE` operations
|
|
92
|
+
|
|
93
|
+
### 4. Execute Stack Operation with Express Mode
|
|
94
|
+
|
|
95
|
+
Run the stack operation with the `--deployment-config` parameter set to Express mode.
|
|
96
|
+
|
|
97
|
+
**Constraints:**
|
|
98
|
+
|
|
99
|
+
- You MUST obtain explicit user approval before executing the operation because it creates, modifies, or deletes live infrastructure
|
|
100
|
+
- You MUST use `--deployment-config '{"mode": "EXPRESS"}'` on the stack operation
|
|
101
|
+
- If the user requested rollback, You MUST use `--deployment-config '{"mode": "EXPRESS", "disableRollback": false}'`
|
|
102
|
+
- You MUST include `--capabilities` if the template creates IAM resources
|
|
103
|
+
- You MUST NOT use `aws cloudformation deploy` because it does not support `--deployment-config`. Use `create-stack`, `update-stack`, or `delete-stack` instead.
|
|
104
|
+
|
|
105
|
+
> **Note:** When using `call_aws`, pass the template content inline in the `TemplateBody` parameter — the `file://` syntax is AWS CLI-specific and does not work with `call_aws`.
|
|
106
|
+
|
|
107
|
+
**Create a stack:**
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
aws cloudformation create-stack \
|
|
111
|
+
--stack-name <stack_name> \
|
|
112
|
+
--template-body file://<path> \
|
|
113
|
+
--region <region> \
|
|
114
|
+
--deployment-config '{"mode": "EXPRESS"}' \
|
|
115
|
+
--capabilities CAPABILITY_IAM
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Update a stack:**
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
aws cloudformation update-stack \
|
|
122
|
+
--stack-name <stack_name> \
|
|
123
|
+
--template-body file://<path> \
|
|
124
|
+
--region <region> \
|
|
125
|
+
--deployment-config '{"mode": "EXPRESS"}' \
|
|
126
|
+
--capabilities CAPABILITY_IAM
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Delete a stack:**
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
aws cloudformation delete-stack \
|
|
133
|
+
--stack-name <stack_name> \
|
|
134
|
+
--region <region> \
|
|
135
|
+
--deployment-config '{"mode": "EXPRESS"}'
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**With rollback enabled:**
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
aws cloudformation create-stack \
|
|
142
|
+
--stack-name <stack_name> \
|
|
143
|
+
--template-body file://<path> \
|
|
144
|
+
--region <region> \
|
|
145
|
+
--deployment-config '{"mode": "EXPRESS", "disableRollback": false}' \
|
|
146
|
+
--capabilities CAPABILITY_IAM
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 5. Express Mode with Change Sets
|
|
150
|
+
|
|
151
|
+
Express mode also works with change sets. The deployment configuration is stored with the change set and applied when executed.
|
|
152
|
+
|
|
153
|
+
**Constraints:**
|
|
154
|
+
|
|
155
|
+
- To use Express mode with a change set, supply `--deployment-config` at `create-change-set` time:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
aws cloudformation create-change-set \
|
|
159
|
+
--stack-name <stack_name> \
|
|
160
|
+
--template-body file://<path> \
|
|
161
|
+
--change-set-name <change_set_name> \
|
|
162
|
+
--deployment-config '{"mode": "EXPRESS"}' \
|
|
163
|
+
--region <region> \
|
|
164
|
+
--capabilities CAPABILITY_IAM
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
- You MUST NOT specify `--deployment-config` again at `execute-change-set` time because it is already stored with the change set
|
|
168
|
+
- You SHOULD recommend the change set path when the user also wants pre-deployment validation before deploying with Express mode (change set creation runs all validation checks before execution)
|
|
169
|
+
|
|
170
|
+
### 6. CDK Express Mode
|
|
171
|
+
|
|
172
|
+
When the user is deploying with the AWS CDK, Express mode is activated with the `--express` flag.
|
|
173
|
+
|
|
174
|
+
**Constraints:**
|
|
175
|
+
|
|
176
|
+
- You MUST use `cdk deploy --express` to deploy with Express mode
|
|
177
|
+
- To re-enable rollback: `cdk deploy --express --rollback`
|
|
178
|
+
- Express mode applies to all CloudFormation deployments triggered by CDK, including multi-stack deployments
|
|
179
|
+
- You MUST NOT recommend `cdk deploy --hotswap` as a substitute for Express mode — they are different capabilities:
|
|
180
|
+
- Express mode: full infrastructure changes through CloudFormation, no drift introduced
|
|
181
|
+
- CDK hotswap: code-only changes via direct service APIs, introduces drift (bypasses CloudFormation)
|
|
182
|
+
|
|
183
|
+
### 7. Monitor Resource Readiness After Completion
|
|
184
|
+
|
|
185
|
+
Guide the user on what to expect after Express mode completes.
|
|
186
|
+
|
|
187
|
+
**Constraints:**
|
|
188
|
+
|
|
189
|
+
- You MUST inform the user that resources continue stabilizing in the background after the operation reports complete
|
|
190
|
+
- You SHOULD provide guidance on typical background stabilization timelines:
|
|
191
|
+
- CloudFront distribution: propagation to all edge locations (5-10 minutes)
|
|
192
|
+
- EC2 instance: health checks, reaching `running` state
|
|
193
|
+
- Lambda function delete: network interface cleanup
|
|
194
|
+
- ECS service: containers reaching desired capacity
|
|
195
|
+
- You SHOULD recommend monitoring resource readiness through existing mechanisms: CloudWatch alarms, health checks, or service-specific dashboards
|
|
196
|
+
- If a resource does not stabilize as expected, You SHOULD recommend redeploying the stack to retry the affected resources
|
|
197
|
+
|
|
198
|
+
## Unsupported Features
|
|
199
|
+
|
|
200
|
+
The following are NOT supported with Express mode. You MUST inform the user if their scenario involves any of these:
|
|
201
|
+
|
|
202
|
+
- **Custom resources** (`AWS::CloudFormation::CustomResource` and `Custom::*`) — these follow default completion behavior even when Express mode is active
|
|
203
|
+
- **StackSets** — Express mode is not supported for StackSet operations
|
|
204
|
+
- **AWS SAM** — not supported
|
|
205
|
+
- **`aws cloudformation deploy` CLI command** — does not support `--deployment-config`; use `create-stack` or `update-stack` instead
|
|
206
|
+
- **Account-level default** — Express mode is activated per stack operation; there is no account-wide setting
|
|
207
|
+
|
|
208
|
+
## Examples
|
|
209
|
+
|
|
210
|
+
### Example: Create a stack with Express mode
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
$ aws cloudformation create-stack \
|
|
214
|
+
--stack-name my-dev-vpc \
|
|
215
|
+
--template-body file://vpc.yaml \
|
|
216
|
+
--region us-west-2 \
|
|
217
|
+
--deployment-config '{"mode": "EXPRESS"}'
|
|
218
|
+
|
|
219
|
+
{
|
|
220
|
+
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-dev-vpc/abc123"
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
Stack "my-dev-vpc" creation completed (Express mode).
|
|
224
|
+
Resources are configured. VPC ID, subnet IDs, and other outputs are available.
|
|
225
|
+
Background stabilization (route propagation, NAT gateway activation) continues.
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Example: CDK deploy with Express mode
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
$ cdk deploy --express
|
|
232
|
+
|
|
233
|
+
✅ MyDevStack
|
|
234
|
+
|
|
235
|
+
Express mode: stack completed when resource configuration was applied.
|
|
236
|
+
Outputs:
|
|
237
|
+
MyDevStack.VpcId = vpc-0abc123def456
|
|
238
|
+
MyDevStack.ApiEndpoint = https://abc123.execute-api.us-west-2.amazonaws.com
|
|
239
|
+
|
|
240
|
+
Resources continue stabilizing in the background.
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Example: Express mode with rollback enabled
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
$ aws cloudformation update-stack \
|
|
247
|
+
--stack-name my-dev-vpc \
|
|
248
|
+
--template-body file://vpc-v2.yaml \
|
|
249
|
+
--region us-west-2 \
|
|
250
|
+
--deployment-config '{"mode": "EXPRESS", "disableRollback": false}'
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Troubleshooting
|
|
254
|
+
|
|
255
|
+
### Resources not ready to serve traffic after stack completes
|
|
256
|
+
This is expected behavior with Express mode. Resources receive their configuration immediately but may still be starting up, propagating, or cleaning up. Monitor resource-specific readiness through CloudWatch, health checks, or service dashboards. If a resource does not stabilize, redeploy the stack to retry.
|
|
257
|
+
|
|
258
|
+
### `--deployment-config` not recognized
|
|
259
|
+
The `--deployment-config` parameter requires a CLI version that supports Express mode. Update the AWS CLI to the latest version. If using CDK, use `--express` instead.
|
|
260
|
+
|
|
261
|
+
### `deploy` command does not accept `--deployment-config`
|
|
262
|
+
The `aws cloudformation deploy` command does not support `--deployment-config`. Use `create-stack` or `update-stack` directly. In CDK, use `cdk deploy --express`.
|
|
263
|
+
|
|
264
|
+
### Custom resources do not complete faster
|
|
265
|
+
Custom resources always follow default completion behavior regardless of Express mode. This is by design — custom resources define their own completion logic.
|
|
266
|
+
|
|
267
|
+
### StackSets error with Express mode
|
|
268
|
+
Express mode is not supported for StackSet operations. Remove `--deployment-config` when working with StackSets.
|
|
269
|
+
|
|
270
|
+
### Rollback not happening on failure
|
|
271
|
+
Express mode disables rollback by default. To re-enable, add `"disableRollback": false` to the deployment configuration JSON, or use `cdk deploy --express --rollback` in CDK.
|