@1aboveio/skills 0.10.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/LICENSE +3 -0
- package/README.md +90 -0
- package/bin/1aboveio-skills.mjs +18 -0
- package/package.json +28 -0
- package/runtime/skills/distribution/generated/recipes.json +1189 -0
- package/runtime/skills/distribution/scripts/bundles.mjs +280 -0
- package/runtime/skills/engineering/engineering-runtime/scripts/main-module.mjs +80 -0
- package/skills/backend/airflow-dag-develop/LICENSE +3 -0
- package/skills/backend/airflow-dag-develop/SKILL.md +111 -0
- package/skills/backend/app-debug/LICENSE +3 -0
- package/skills/backend/app-debug/SKILL.md +109 -0
- package/skills/backend/app-debug/references/common-errors.md +128 -0
- package/skills/backend/python-backend/LICENSE +3 -0
- package/skills/backend/python-backend/SKILL.md +326 -0
- package/skills/cicd-pipeline/cloud-build/LICENSE +3 -0
- package/skills/cicd-pipeline/cloud-build/SKILL.md +707 -0
- package/skills/cicd-pipeline/cloud-debug/LICENSE +3 -0
- package/skills/cicd-pipeline/cloud-debug/SKILL.md +316 -0
- package/skills/cicd-pipeline/cloud-debug/references/build-failures.md +238 -0
- package/skills/cicd-pipeline/cloud-debug/references/deploy-failures.md +376 -0
- package/skills/cicd-pipeline/cloud-debug/references/pipeline-failures.md +378 -0
- package/skills/cicd-pipeline/cloud-deploy/LICENSE +3 -0
- package/skills/cicd-pipeline/cloud-deploy/SKILL.md +229 -0
- package/skills/cicd-pipeline/cloud-deploy/references/config-templates.md +257 -0
- package/skills/cicd-pipeline/docker/LICENSE +3 -0
- package/skills/cicd-pipeline/docker/SKILL.md +126 -0
- package/skills/cicd-pipeline/google-cloud/LICENSE +3 -0
- package/skills/cicd-pipeline/google-cloud/SKILL.md +118 -0
- package/skills/cicd-pipeline/google-cloud/references/gcs.md +469 -0
- package/skills/cicd-pipeline/google-cloud/references/iam.md +451 -0
- package/skills/cicd-pipeline/google-cloud/references/project.md +349 -0
- package/skills/cicd-pipeline/google-cloud/references/secrets.md +336 -0
- package/skills/cicd-pipeline/google-cloud/references/vpc.md +312 -0
- package/skills/cicd-pipeline/google-cloud/scripts/create-sa.sh +36 -0
- package/skills/cicd-pipeline/google-cloud/scripts/gcp-config.sh +31 -0
- package/skills/cicd-pipeline/google-cloud/scripts/grant-iap.sh +41 -0
- package/skills/cicd-pipeline/google-cloud/scripts/setup-secrets.sh +48 -0
- package/skills/cicd-pipeline/mergify/LICENSE +3 -0
- package/skills/cicd-pipeline/mergify/SKILL.md +138 -0
- package/skills/cicd-pipeline/mergify/assets/templates/mergify.yml +237 -0
- package/skills/cicd-pipeline/mergify/assets/templates/ruleset.json +46 -0
- package/skills/cicd-pipeline/mergify/references/branch-protection.md +277 -0
- package/skills/cicd-pipeline/mergify/references/configuration.md +183 -0
- package/skills/cicd-pipeline/mergify/references/diagnosis.md +73 -0
- package/skills/cicd-pipeline/mergify/references/traps.md +78 -0
- package/skills/cicd-pipeline/mergify/references/watch-contract.md +218 -0
- package/skills/cicd-pipeline/mergify/scripts/audit-core.mjs +131 -0
- package/skills/cicd-pipeline/mergify/scripts/audit.mjs +4 -0
- package/skills/cicd-pipeline/mergify/scripts/watch-pr-delivery-core.mjs +663 -0
- package/skills/cicd-pipeline/mergify/scripts/watch-pr-delivery.mjs +4 -0
- package/skills/cicd-pipeline/podman/LICENSE +3 -0
- package/skills/cicd-pipeline/podman/SKILL.md +70 -0
- package/skills/cicd-pipeline/podman/agents/openai.yaml +4 -0
- package/skills/cicd-pipeline/podman/assets/templates/podman-compose-socket-directory.yml +6 -0
- package/skills/cicd-pipeline/podman/assets/templates/podman-service-override.conf +3 -0
- package/skills/cicd-pipeline/podman/references/compose-compatibility.md +70 -0
- package/skills/cicd-pipeline/podman/references/networking-and-ports.md +74 -0
- package/skills/cicd-pipeline/podman/references/rootless-services-and-sockets.md +156 -0
- package/skills/cicd-pipeline/podman/references/troubleshooting.md +98 -0
- package/skills/engineering/e2e-test/LICENSE +3 -0
- package/skills/engineering/e2e-test/SKILL.md +156 -0
- package/skills/engineering/e2e-test/assets/ci-gates.cloudbuild.yaml +272 -0
- package/skills/engineering/e2e-test/assets/ci-gates.github.yml +451 -0
- package/skills/engineering/e2e-test/assets/e2e-workflow.yml +282 -0
- package/skills/engineering/e2e-test/references/authoring/auth-flows.md +159 -0
- package/skills/engineering/e2e-test/references/authoring/playwright-config.md +71 -0
- package/skills/engineering/e2e-test/references/authoring/playwright-patterns.md +219 -0
- package/skills/engineering/e2e-test/references/authoring/test-skipping.md +44 -0
- package/skills/engineering/e2e-test/references/ci-integration.md +121 -0
- package/skills/engineering/e2e-test/references/ci-playwright-container.md +280 -0
- package/skills/engineering/e2e-test/references/debugging.md +36 -0
- package/skills/engineering/e2e-test/references/presentation-sweep.md +131 -0
- package/skills/engineering/e2e-test/references/reviewing.md +39 -0
- package/skills/engineering/e2e-test/references/route-discovery.md +50 -0
- package/skills/engineering/e2e-test/references/route-manifest.md +44 -0
- package/skills/engineering/e2e-test/scripts/detect-routes-fastapi.py +290 -0
- package/skills/engineering/e2e-test/scripts/detect-routes-nextjs.mjs +200 -0
- package/skills/engineering/e2e-test/scripts/post-visual-evidence.mjs +158 -0
- package/skills/engineering/e2e-test/scripts/presentation-checks.mjs +171 -0
- package/skills/engineering/e2e-test/scripts/presentation-perceivability.mjs +179 -0
- package/skills/engineering/e2e-test/scripts/presentation-reachability.mjs +154 -0
- package/skills/engineering/e2e-test/scripts/presentation-render-health.mjs +141 -0
- package/skills/engineering/e2e-test/scripts/presentation-sweep.mjs +148 -0
- package/skills/engineering/e2e-test/scripts/presentation-temporal.mjs +127 -0
- package/skills/engineering/e2e-test/scripts/presentation-visual.mjs +84 -0
- package/skills/engineering/e2e-test/scripts/project-route-manifest.mjs +75 -0
- package/skills/engineering/e2e-test/scripts/validate-manifest.mjs +106 -0
- package/skills/engineering/engineering-runtime/LICENSE +3 -0
- package/skills/engineering/engineering-runtime/SKILL.md +10 -0
- package/skills/engineering/engineering-runtime/agents/openai.yaml +6 -0
- package/skills/engineering/engineering-runtime/coherence/workflow.json +553 -0
- package/skills/engineering/engineering-runtime/scripts/exact-head-artifact.mjs +131 -0
- package/skills/engineering/engineering-runtime/scripts/head-check-set.mjs +398 -0
- package/skills/engineering/engineering-runtime/scripts/main-module.mjs +80 -0
- package/skills/engineering/engineering-runtime/scripts/mergify-yaml.mjs +11 -0
- package/skills/engineering/engineering-runtime/scripts/package-lock.json +43 -0
- package/skills/engineering/engineering-runtime/scripts/package.json +10 -0
- package/skills/engineering/engineering-runtime/scripts/required-check-plan.mjs +223 -0
- package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +576 -0
- package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +166 -0
- package/skills/engineering/ensure-coverage/LICENSE +3 -0
- package/skills/engineering/ensure-coverage/SKILL.md +136 -0
- package/skills/engineering/ensure-coverage/evals/evals.json +125 -0
- package/skills/engineering/ensure-coverage/references/breadth/coverage-ledger.md +91 -0
- package/skills/engineering/ensure-coverage/references/breadth/inventory-contract.md +83 -0
- package/skills/engineering/ensure-coverage/references/breadth/surface-baseline.md +44 -0
- package/skills/engineering/ensure-coverage/references/breadth/surface-discovery.md +16 -0
- package/skills/engineering/ensure-coverage/references/depth/characterization.md +68 -0
- package/skills/engineering/ensure-coverage/references/depth/coverage.config.example.json +25 -0
- package/skills/engineering/ensure-coverage/references/depth/grading.md +35 -0
- package/skills/engineering/ensure-coverage/references/depth/mock-policy.md +87 -0
- package/skills/engineering/ensure-coverage/references/depth/test-smells.md +23 -0
- package/skills/engineering/ensure-coverage/references/enforcement/ci-contract.md +164 -0
- package/skills/engineering/ensure-coverage/references/enforcement/hooks.md +85 -0
- package/skills/engineering/ensure-coverage/references/examples/coverage-ledger.md +109 -0
- package/skills/engineering/ensure-coverage/references/examples/refund-flow.md +33 -0
- package/skills/engineering/ensure-coverage/references/presentation/axis.md +78 -0
- package/skills/engineering/ensure-coverage/references/presentation/runner-contract.md +74 -0
- package/skills/engineering/ensure-coverage/references/process/audit-mode.md +33 -0
- package/skills/engineering/ensure-coverage/references/process/output-template.md +139 -0
- package/skills/engineering/ensure-coverage/references/process/review-contract-template.md +119 -0
- package/skills/engineering/ensure-coverage/references/process/scope-class.md +178 -0
- package/skills/engineering/ensure-coverage/references/process/test-strategy.md +55 -0
- package/skills/engineering/ensure-coverage/schemas/coverage-config.schema.json +45 -0
- package/skills/engineering/ensure-coverage/schemas/coverage-file.schema.json +93 -0
- package/skills/engineering/ensure-coverage/scripts/adapters/nextjs-inventory.mjs +178 -0
- package/skills/engineering/ensure-coverage/scripts/check-quarantine-expiry.mjs +101 -0
- package/skills/engineering/ensure-coverage/scripts/ci-audit.mjs +358 -0
- package/skills/engineering/ensure-coverage/scripts/coverage-checklist.mjs +494 -0
- package/skills/engineering/ensure-coverage/scripts/coverage-ledger.mjs +663 -0
- package/skills/engineering/ensure-coverage/scripts/design-parity.mjs +591 -0
- package/skills/engineering/ensure-coverage/scripts/evidence-block.mjs +367 -0
- package/skills/engineering/ensure-coverage/scripts/lint-tests.mjs +269 -0
- package/skills/engineering/ensure-coverage/scripts/mock-policy-config.mjs +176 -0
- package/skills/engineering/ensure-coverage/scripts/package-lock.json +76 -0
- package/skills/engineering/ensure-coverage/scripts/package.json +19 -0
- package/skills/engineering/ensure-coverage/scripts/scope-class.mjs +554 -0
- package/skills/engineering/harness-runtime/LICENSE +3 -0
- package/skills/engineering/harness-runtime/SKILL.md +18 -0
- package/skills/engineering/harness-runtime/agents/openai.yaml +6 -0
- package/skills/engineering/harness-runtime/bin/discover-models.mjs +4 -0
- package/skills/engineering/harness-runtime/bin/model-catalog.mjs +4 -0
- package/skills/engineering/harness-runtime/contracts.md +15 -0
- package/skills/engineering/harness-runtime/discover-models.mjs +392 -0
- package/skills/engineering/harness-runtime/fixtures/native-question-schemas.json +33 -0
- package/skills/engineering/harness-runtime/fixtures/question-responses.json +54 -0
- package/skills/engineering/harness-runtime/index.mjs +767 -0
- package/skills/engineering/harness-runtime/model-catalog.mjs +787 -0
- package/skills/engineering/harness-runtime/native-question-contracts.md +37 -0
- package/skills/engineering/harness-runtime/references/model-catalog-seed.json +159 -0
- package/skills/engineering/harness-runtime/references/model-catalog.md +57 -0
- package/skills/engineering/implement-and-pr/LICENSE +3 -0
- package/skills/engineering/implement-and-pr/SKILL.md +176 -0
- package/skills/engineering/implement-and-pr/references/ci-iteration.md +10 -0
- package/skills/engineering/implement-and-pr/references/closeout.md +27 -0
- package/skills/engineering/implement-and-pr/references/contract-complete-fix-rounds.md +34 -0
- package/skills/engineering/implement-and-pr/references/evidence-rules.md +39 -0
- package/skills/engineering/implement-and-pr/references/incremental-plan.md +16 -0
- package/skills/engineering/implement-and-pr/references/self-review.md +23 -0
- package/skills/engineering/implement-and-pr/references/tdd-mode.md +18 -0
- package/skills/engineering/resolve-issues/LICENSE +3 -0
- package/skills/engineering/resolve-issues/SKILL.md +167 -0
- package/skills/engineering/resolve-issues/generated/workflow-repair-policy.json +448 -0
- package/skills/engineering/resolve-issues/references/breaker.md +82 -0
- package/skills/engineering/resolve-issues/references/deliverables.md +27 -0
- package/skills/engineering/resolve-issues/references/delivery.md +108 -0
- package/skills/engineering/resolve-issues/references/evidence-lane.md +21 -0
- package/skills/engineering/resolve-issues/references/exact-head-ci.md +287 -0
- package/skills/engineering/resolve-issues/references/fan-out.md +33 -0
- package/skills/engineering/resolve-issues/references/finalization.md +68 -0
- package/skills/engineering/resolve-issues/references/guarantees.md +10 -0
- package/skills/engineering/resolve-issues/references/high-risk.md +29 -0
- package/skills/engineering/resolve-issues/references/incidents/848/README.md +156 -0
- package/skills/engineering/resolve-issues/references/intake.md +86 -0
- package/skills/engineering/resolve-issues/references/integration-gate.md +53 -0
- package/skills/engineering/resolve-issues/references/interference.md +87 -0
- package/skills/engineering/resolve-issues/references/loop.md +134 -0
- package/skills/engineering/resolve-issues/references/model-catalog.md +9 -0
- package/skills/engineering/resolve-issues/references/postmortem.md +27 -0
- package/skills/engineering/resolve-issues/references/pre-flight-model-slots.md +41 -0
- package/skills/engineering/resolve-issues/references/pre-flight-recording-and-checkout.md +48 -0
- package/skills/engineering/resolve-issues/references/pre-flight.md +41 -0
- package/skills/engineering/resolve-issues/references/regression-checklist.md +26 -0
- package/skills/engineering/resolve-issues/references/run-state.md +288 -0
- package/skills/engineering/resolve-issues/references/sandboxed-testing.md +48 -0
- package/skills/engineering/resolve-issues/references/spawn-contract.md +96 -0
- package/skills/engineering/resolve-issues/references/terminal-evidence-journal.md +40 -0
- package/skills/engineering/resolve-issues/references/why.md +653 -0
- package/skills/engineering/resolve-issues/schemas/fix-round.schema.json +49 -0
- package/skills/engineering/resolve-issues/scripts/combine-and-verify.mjs +721 -0
- package/skills/engineering/resolve-issues/scripts/component-candidate.mjs +962 -0
- package/skills/engineering/resolve-issues/scripts/contract-revision.mjs +220 -0
- package/skills/engineering/resolve-issues/scripts/detect-delivery-mode.mjs +420 -0
- package/skills/engineering/resolve-issues/scripts/detect-target-branch.mjs +256 -0
- package/skills/engineering/resolve-issues/scripts/detect-workspace-mode.mjs +168 -0
- package/skills/engineering/resolve-issues/scripts/discover-models.mjs +9 -0
- package/skills/engineering/resolve-issues/scripts/doctrine.mjs +62 -0
- package/skills/engineering/resolve-issues/scripts/evidence-lifecycle-contract.mjs +191 -0
- package/skills/engineering/resolve-issues/scripts/exact-head-ci.mjs +413 -0
- package/skills/engineering/resolve-issues/scripts/exact-head-github-provider.mjs +332 -0
- package/skills/engineering/resolve-issues/scripts/finalize.mjs +488 -0
- package/skills/engineering/resolve-issues/scripts/fix-rounds.mjs +3307 -0
- package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-circular-1001.json +16 -0
- package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-valid-sequencing.json +51 -0
- package/skills/engineering/resolve-issues/scripts/fixtures/fmm-express-830-component-candidate.json +17 -0
- package/skills/engineering/resolve-issues/scripts/fixtures/head-check-set-1081.json +166 -0
- package/skills/engineering/resolve-issues/scripts/gate-value-series.mjs +92 -0
- package/skills/engineering/resolve-issues/scripts/guide-index.mjs +73 -0
- package/skills/engineering/resolve-issues/scripts/head-check-set.mjs +159 -0
- package/skills/engineering/resolve-issues/scripts/interference.mjs +427 -0
- package/skills/engineering/resolve-issues/scripts/model-catalog.mjs +9 -0
- package/skills/engineering/resolve-issues/scripts/next-operations.mjs +419 -0
- package/skills/engineering/resolve-issues/scripts/postmortem.mjs +909 -0
- package/skills/engineering/resolve-issues/scripts/preflight-questions.mjs +322 -0
- package/skills/engineering/resolve-issues/scripts/reconcile-contained-unit-prs.mjs +415 -0
- package/skills/engineering/resolve-issues/scripts/release-state-contract.mjs +697 -0
- package/skills/engineering/resolve-issues/scripts/report.mjs +494 -0
- package/skills/engineering/resolve-issues/scripts/required-check-plan.mjs +172 -0
- package/skills/engineering/resolve-issues/scripts/round-metadata.mjs +79 -0
- package/skills/engineering/resolve-issues/scripts/run-state-review6-cases.mjs +334 -0
- package/skills/engineering/resolve-issues/scripts/run-state.mjs +4784 -0
- package/skills/engineering/resolve-issues/scripts/sandbox-selftest.mjs +395 -0
- package/skills/engineering/resolve-issues/scripts/spawn-contract.mjs +290 -0
- package/skills/engineering/resolve-issues/scripts/terminal-dispositions.mjs +170 -0
- package/skills/engineering/resolve-issues/scripts/terminal-evidence-journal.mjs +293 -0
- package/skills/engineering/resolve-issues/scripts/unit-kind.mjs +197 -0
- package/skills/engineering/resolve-issues/scripts/unit-lifecycle.mjs +127 -0
- package/skills/engineering/resolve-issues/scripts/watch-delivery.mjs +893 -0
- package/skills/engineering/resolve-issues/scripts/workspaces.mjs +829 -0
- package/skills/engineering/resolve-issues/workflows/independent-review.workflow.js +290 -0
- package/skills/engineering/resolve-issues/workflows/prior-art-scan.workflow.js +80 -0
- package/skills/engineering/resolve-issues/workflows/workflow-smoke.mjs +102 -0
- package/skills/engineering/resolve-release/LICENSE +3 -0
- package/skills/engineering/resolve-release/SKILL.md +112 -0
- package/skills/engineering/resolve-release/references/assembly.md +137 -0
- package/skills/engineering/resolve-release/references/auto-when-green.md +56 -0
- package/skills/engineering/resolve-release/references/candidate.md +167 -0
- package/skills/engineering/resolve-release/references/exposure.md +178 -0
- package/skills/engineering/resolve-release/references/handoff.md +24 -0
- package/skills/engineering/resolve-release/references/postmortem.md +230 -0
- package/skills/engineering/resolve-release/references/preflight.md +207 -0
- package/skills/engineering/resolve-release/references/principles.md +94 -0
- package/skills/engineering/resolve-release/references/regression-checklist.md +36 -0
- package/skills/engineering/resolve-release/references/related-skills.md +12 -0
- package/skills/engineering/resolve-release/references/routing.md +149 -0
- package/skills/engineering/resolve-release/references/verified-sha-github-flow.md +285 -0
- package/skills/engineering/resolve-release/references/versioning.md +202 -0
- package/skills/engineering/resolve-release/references/why.md +53 -0
- package/skills/engineering/resolve-release/scripts/adapter-completion-artifact.mjs +389 -0
- package/skills/engineering/resolve-release/scripts/build-changes.mjs +209 -0
- package/skills/engineering/resolve-release/scripts/candidate-hygiene.mjs +407 -0
- package/skills/engineering/resolve-release/scripts/candidate-identity.mjs +904 -0
- package/skills/engineering/resolve-release/scripts/candidate-traffic.mjs +81 -0
- package/skills/engineering/resolve-release/scripts/checked-adapter-loader.mjs +612 -0
- package/skills/engineering/resolve-release/scripts/close-attempt.mjs +135 -0
- package/skills/engineering/resolve-release/scripts/closeout-release.mjs +161 -0
- package/skills/engineering/resolve-release/scripts/doctrine.mjs +106 -0
- package/skills/engineering/resolve-release/scripts/durable-processing.mjs +522 -0
- package/skills/engineering/resolve-release/scripts/ensure-target-green.mjs +659 -0
- package/skills/engineering/resolve-release/scripts/evidence-bundle.mjs +1014 -0
- package/skills/engineering/resolve-release/scripts/finalize-release.mjs +526 -0
- package/skills/engineering/resolve-release/scripts/fixtures/durable-processing-adapter.mjs +169 -0
- package/skills/engineering/resolve-release/scripts/green-gate.mjs +599 -0
- package/skills/engineering/resolve-release/scripts/isolated-adapter-evaluator.mjs +752 -0
- package/skills/engineering/resolve-release/scripts/metadata-pr-status.mjs +56 -0
- package/skills/engineering/resolve-release/scripts/metadata-sync.mjs +1538 -0
- package/skills/engineering/resolve-release/scripts/postmortem.mjs +381 -0
- package/skills/engineering/resolve-release/scripts/preflight-probes.mjs +498 -0
- package/skills/engineering/resolve-release/scripts/production-endpoints.mjs +326 -0
- package/skills/engineering/resolve-release/scripts/rc-circuit-breaker.mjs +272 -0
- package/skills/engineering/resolve-release/scripts/report.mjs +417 -0
- package/skills/engineering/resolve-release/scripts/reprobe-credentials.mjs +114 -0
- package/skills/engineering/resolve-release/scripts/revalidate-candidate.mjs +238 -0
- package/skills/engineering/resolve-release/scripts/review-packet.mjs +503 -0
- package/skills/engineering/resolve-release/scripts/rollback-floor.mjs +263 -0
- package/skills/engineering/resolve-release/scripts/version-assert.mjs +339 -0
- package/skills/engineering/resolve-release/scripts/version-postmortem.mjs +485 -0
- package/skills/engineering/resolve-release/scripts/version.mjs +1199 -0
- package/skills/engineering/resolve-release/scripts/watch-candidate-delivery.mjs +449 -0
- package/skills/engineering/resolve-release/vendor/ACORN-LICENSE +21 -0
- package/skills/engineering/resolve-release/vendor/README.md +60 -0
- package/skills/engineering/resolve-release/vendor/acorn.mjs +6233 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/LICENSE +21 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/README.md +341 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/README.template.md +70 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs +7 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.mts +2033 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.ts +2033 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js +7 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/package.json +49 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/LICENSE +21 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/README.md +5 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.mts +549 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.ts +549 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/package.json +36 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/LICENSE +47 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/README.md +82 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.d.ts +11 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.mjs +22 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cjs +21 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.cjs +21 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.d.ts +11 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.d.ts +11 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.mjs +25 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.wasm +0 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.mts +85 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.ts +85 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.mts +20 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.ts +20 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/package.json +61 -0
- package/skills/engineering/review-pr/LICENSE +3 -0
- package/skills/engineering/review-pr/SKILL.md +123 -0
- package/skills/engineering/review-pr/references/adversarial-reviewer-prompt.md +42 -0
- package/skills/engineering/review-pr/references/code-correctness.md +5 -0
- package/skills/engineering/review-pr/references/contract-freshness.md +9 -0
- package/skills/engineering/review-pr/references/coordination.md +18 -0
- package/skills/engineering/review-pr/references/domain-hazards.md +123 -0
- package/skills/engineering/review-pr/references/finding-themes.md +7 -0
- package/skills/engineering/review-pr/references/github-posting.md +98 -0
- package/skills/engineering/review-pr/references/golden-path-smoke.md +5 -0
- package/skills/engineering/review-pr/references/incremental-output.md +16 -0
- package/skills/engineering/review-pr/references/inputs-and-discovery.md +31 -0
- package/skills/engineering/review-pr/references/output-format.md +99 -0
- package/skills/engineering/review-pr/references/over-mock-screen.md +7 -0
- package/skills/engineering/review-pr/references/promotion-prs.md +16 -0
- package/skills/engineering/review-pr/references/re-review.md +18 -0
- package/skills/engineering/review-pr/references/review-method.md +199 -0
- package/skills/engineering/review-pr/references/review-mode.md +30 -0
- package/skills/engineering/review-pr/references/review-posture.md +53 -0
- package/skills/engineering/review-pr/references/round1-depth.md +62 -0
- package/skills/engineering/review-pr/references/scripts.md +17 -0
- package/skills/engineering/review-pr/references/workflow.md +16 -0
- package/skills/engineering/review-pr/schemas/findings.schema.json +282 -0
- package/skills/engineering/review-pr/scripts/finding-contract.mjs +285 -0
- package/skills/engineering/review-pr/scripts/post-review.mjs +405 -0
- package/skills/engineering/review-pr/scripts/pr-context.mjs +207 -0
- package/skills/engineering/review-pr/scripts/scan-diff.mjs +365 -0
- package/skills/engineering/review-pr/scripts/theme-contract.mjs +57 -0
- package/skills/engineering/smoke/LICENSE +3 -0
- package/skills/engineering/smoke/SKILL.md +131 -0
- package/skills/engineering/smoke/assets/smoke.manifest.example.json +53 -0
- package/skills/engineering/smoke/references/manifest.md +192 -0
- package/skills/engineering/smoke/scripts/smoke.mjs +713 -0
- package/skills/fullstack/better-auth/LICENSE +3 -0
- package/skills/fullstack/better-auth/SKILL.md +601 -0
- package/skills/fullstack/better-auth/references/feishu-api.md +270 -0
- package/skills/fullstack/monorepo/LICENSE +3 -0
- package/skills/fullstack/monorepo/SKILL.md +465 -0
- package/skills/fullstack/nextjs-fullstack/LICENSE +3 -0
- package/skills/fullstack/nextjs-fullstack/SKILL.md +210 -0
- package/skills/fullstack/nextjs-fullstack/conventions.md +318 -0
- package/skills/fullstack/nextjs-fullstack/frontend-conventions.md +61 -0
- package/skills/fullstack/nextjs-fullstack/nextjs16.md +287 -0
- package/skills/fullstack/nextjs-fullstack/server-actions.md +409 -0
- package/skills/fullstack/prisma-setup/LICENSE +3 -0
- package/skills/fullstack/prisma-setup/SKILL.md +180 -0
- package/skills/fullstack/prisma-setup/nextjs.md +258 -0
- package/skills/fullstack/prisma-setup/turborepo.md +301 -0
- package/skills/fullstack/shadcn/LICENSE +3 -0
- package/skills/fullstack/shadcn/SKILL.md +119 -0
- package/skills/fullstack/shadcn/assets/shadcn-small.png +0 -0
- package/skills/fullstack/shadcn/assets/shadcn.png +0 -0
- package/skills/fullstack/shadcn/cli.md +411 -0
- package/skills/fullstack/shadcn/customization.md +224 -0
- package/skills/fullstack/shadcn/evals/evals.json +90 -0
- package/skills/fullstack/shadcn/mcp.md +101 -0
- package/skills/fullstack/shadcn/rules/base-vs-radix.md +323 -0
- package/skills/fullstack/shadcn/rules/component-selection.md +67 -0
- package/skills/fullstack/shadcn/rules/composition.md +195 -0
- package/skills/fullstack/shadcn/rules/data-table.md +201 -0
- package/skills/fullstack/shadcn/rules/forms.md +255 -0
- package/skills/fullstack/shadcn/rules/icons.md +103 -0
- package/skills/fullstack/shadcn/rules/styling.md +167 -0
- package/skills/fullstack/zod-v4/LICENSE +3 -0
- package/skills/fullstack/zod-v4/SKILL.md +287 -0
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
# Cloud Deploy Pipeline Failure Patterns
|
|
2
|
+
|
|
3
|
+
## Common Failures
|
|
4
|
+
|
|
5
|
+
| Symptom | Likely Cause | Resolution |
|
|
6
|
+
|---------|--------------|------------|
|
|
7
|
+
| Release render fails | Invalid Kustomize/Skaffold config | Run `kubectl kustomize` locally to validate |
|
|
8
|
+
| `{{.param}}` appears literally | rawYaml doesn't support Go templates | Use Kustomize overlays instead |
|
|
9
|
+
| Rollout stuck in "Pending" | Waiting for approval | Approve: `gcloud deploy rollouts approve` |
|
|
10
|
+
| Custom action fails | Job execution error | Check job logs with `gcloud run jobs executions logs` |
|
|
11
|
+
| Verify phase fails | Test job failed | Check verify job execution and logs |
|
|
12
|
+
| `Job not found` in custom action | Job not created before release | Ensure job creation step runs before release |
|
|
13
|
+
| Image not found | Image tag mismatch | Verify `--images` flag matches built image |
|
|
14
|
+
| `RENDER_FAILED` | Skaffold/manifest error | Check targetRenders in release describe |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Release Creation Failures
|
|
19
|
+
|
|
20
|
+
### Skaffold File Not Found
|
|
21
|
+
|
|
22
|
+
**Symptom:**
|
|
23
|
+
```
|
|
24
|
+
Error: skaffold.yaml not found
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Fix:** Specify correct path in release create:
|
|
28
|
+
```bash
|
|
29
|
+
gcloud deploy releases create $RELEASE \
|
|
30
|
+
--delivery-pipeline=$PIPELINE \
|
|
31
|
+
--region=$REGION \
|
|
32
|
+
--skaffold-file=path/to/skaffold.yaml
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Image Reference Error
|
|
36
|
+
|
|
37
|
+
**Symptom:**
|
|
38
|
+
```
|
|
39
|
+
Error: image "my-image" not found in --images flag
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Fix:** Ensure image name matches skaffold.yaml artifact:
|
|
43
|
+
```yaml
|
|
44
|
+
# skaffold.yaml
|
|
45
|
+
build:
|
|
46
|
+
artifacts:
|
|
47
|
+
- image: my-service # This name must match --images flag
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
gcloud deploy releases create $RELEASE \
|
|
52
|
+
--images=my-service=$REGION-docker.pkg.dev/$PROJECT/repo/my-service:$TAG
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Variable Interpolation in Release Name
|
|
56
|
+
|
|
57
|
+
**Symptom:** Release name contains literal `${SHORT_SHA}` instead of actual value.
|
|
58
|
+
|
|
59
|
+
**Fix:** Use shell variable expansion, not Cloud Build substitution:
|
|
60
|
+
```bash
|
|
61
|
+
# In cloudbuild.yaml bash script
|
|
62
|
+
RELEASE_NAME="my-release-${SHORT_SHA}"
|
|
63
|
+
gcloud deploy releases create "$RELEASE_NAME" ...
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Render Failures
|
|
69
|
+
|
|
70
|
+
### Kustomize Overlay Error
|
|
71
|
+
|
|
72
|
+
**Symptom:**
|
|
73
|
+
```
|
|
74
|
+
RENDER_FAILED: kustomize build failed
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Diagnose:**
|
|
78
|
+
```bash
|
|
79
|
+
# Check render status
|
|
80
|
+
gcloud deploy releases describe $RELEASE \
|
|
81
|
+
--delivery-pipeline=$PIPELINE \
|
|
82
|
+
--region=$REGION \
|
|
83
|
+
--format="yaml(targetRenders)"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Fix - Validate locally:**
|
|
87
|
+
```bash
|
|
88
|
+
kubectl kustomize deploy/overlays/dev
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Missing Kustomization File
|
|
92
|
+
|
|
93
|
+
**Symptom:**
|
|
94
|
+
```
|
|
95
|
+
Error: unable to find kustomization.yaml
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Fix:** Ensure directory structure:
|
|
99
|
+
```
|
|
100
|
+
deploy/overlays/dev/
|
|
101
|
+
├── kustomization.yaml
|
|
102
|
+
└── service.yaml
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Go Template Not Substituting (rawYaml)
|
|
106
|
+
|
|
107
|
+
**Symptom:** `{{.serviceName}}` appears literally in rendered manifest.
|
|
108
|
+
|
|
109
|
+
**Cause:** Skaffold's rawYaml deployer does NOT support Go template substitution.
|
|
110
|
+
|
|
111
|
+
**Fix:** Use Kustomize overlays with hardcoded values per environment instead:
|
|
112
|
+
```yaml
|
|
113
|
+
# skaffold.yaml - Use Kustomize, not rawYaml
|
|
114
|
+
profiles:
|
|
115
|
+
- name: dev
|
|
116
|
+
manifests:
|
|
117
|
+
kustomize:
|
|
118
|
+
paths:
|
|
119
|
+
- deploy/overlays/dev
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Invalid YAML in Manifest
|
|
123
|
+
|
|
124
|
+
**Symptom:**
|
|
125
|
+
```
|
|
126
|
+
Error: error parsing manifest: yaml: line X: ...
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Fix:** Validate YAML syntax:
|
|
130
|
+
```bash
|
|
131
|
+
# Check YAML validity
|
|
132
|
+
python -c "import yaml; yaml.safe_load(open('service.yaml'))"
|
|
133
|
+
|
|
134
|
+
# Or use yq
|
|
135
|
+
yq eval '.' service.yaml
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Rollout Failures
|
|
141
|
+
|
|
142
|
+
### Rollout Stuck in Pending
|
|
143
|
+
|
|
144
|
+
**Cause:** Target requires approval.
|
|
145
|
+
|
|
146
|
+
**Check:**
|
|
147
|
+
```bash
|
|
148
|
+
gcloud deploy rollouts describe $ROLLOUT \
|
|
149
|
+
--release=$RELEASE \
|
|
150
|
+
--delivery-pipeline=$PIPELINE \
|
|
151
|
+
--region=$REGION \
|
|
152
|
+
--format="yaml(approvalState,state)"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Fix:**
|
|
156
|
+
```bash
|
|
157
|
+
gcloud deploy rollouts approve $ROLLOUT \
|
|
158
|
+
--release=$RELEASE \
|
|
159
|
+
--delivery-pipeline=$PIPELINE \
|
|
160
|
+
--region=$REGION
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Rollout Failed in Deploy Phase
|
|
164
|
+
|
|
165
|
+
**Diagnose:**
|
|
166
|
+
```bash
|
|
167
|
+
# Get phase details
|
|
168
|
+
gcloud deploy rollouts describe $ROLLOUT \
|
|
169
|
+
--release=$RELEASE \
|
|
170
|
+
--delivery-pipeline=$PIPELINE \
|
|
171
|
+
--region=$REGION \
|
|
172
|
+
--format="yaml(phases)"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Common causes:**
|
|
176
|
+
1. Cloud Run service deployment failed (see deploy-failures.md)
|
|
177
|
+
2. Resource quota exceeded
|
|
178
|
+
3. IAM permissions missing
|
|
179
|
+
|
|
180
|
+
### Revision Limit Reached
|
|
181
|
+
|
|
182
|
+
**Symptom:**
|
|
183
|
+
```
|
|
184
|
+
Error: Revision limit of 100 reached
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Fix:** Delete old revisions:
|
|
188
|
+
```bash
|
|
189
|
+
# List revisions
|
|
190
|
+
gcloud run revisions list --service=$SERVICE --region=$REGION
|
|
191
|
+
|
|
192
|
+
# Delete old revision
|
|
193
|
+
gcloud run revisions delete $OLD_REVISION --region=$REGION
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Verification Failures
|
|
199
|
+
|
|
200
|
+
### Verify Job Failed
|
|
201
|
+
|
|
202
|
+
**Symptom:** Rollout fails in verify phase.
|
|
203
|
+
|
|
204
|
+
**Diagnose:**
|
|
205
|
+
```bash
|
|
206
|
+
# List job runs for the rollout
|
|
207
|
+
gcloud deploy job-runs list \
|
|
208
|
+
--rollout=$ROLLOUT \
|
|
209
|
+
--release=$RELEASE \
|
|
210
|
+
--delivery-pipeline=$PIPELINE \
|
|
211
|
+
--region=$REGION
|
|
212
|
+
|
|
213
|
+
# Get job run details
|
|
214
|
+
gcloud deploy job-runs describe $JOB_RUN \
|
|
215
|
+
--rollout=$ROLLOUT \
|
|
216
|
+
--release=$RELEASE \
|
|
217
|
+
--delivery-pipeline=$PIPELINE \
|
|
218
|
+
--region=$REGION
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Check underlying job execution:**
|
|
222
|
+
```bash
|
|
223
|
+
# The job run invokes a Cloud Run job - check its execution
|
|
224
|
+
gcloud run jobs executions list --job=$VERIFY_JOB --region=$REGION
|
|
225
|
+
gcloud run jobs executions logs $EXECUTION --job=$VERIFY_JOB --region=$REGION
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Test Timeout
|
|
229
|
+
|
|
230
|
+
**Symptom:** Verify phase times out.
|
|
231
|
+
|
|
232
|
+
**Fix:** Increase job timeout in skaffold.yaml verify config or Cloud Run job settings.
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Custom Action Failures
|
|
237
|
+
|
|
238
|
+
### Predeploy/Postdeploy Action Failed
|
|
239
|
+
|
|
240
|
+
**Symptom:**
|
|
241
|
+
```
|
|
242
|
+
Phase "predeploy" failed: job "run-migrations" failed
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Diagnose:**
|
|
246
|
+
```bash
|
|
247
|
+
# List job runs
|
|
248
|
+
gcloud deploy job-runs list \
|
|
249
|
+
--rollout=$ROLLOUT \
|
|
250
|
+
--release=$RELEASE \
|
|
251
|
+
--delivery-pipeline=$PIPELINE \
|
|
252
|
+
--region=$REGION \
|
|
253
|
+
--filter="jobRunId:run-migrations"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Job Not Found
|
|
257
|
+
|
|
258
|
+
**Symptom:**
|
|
259
|
+
```
|
|
260
|
+
Error: Cloud Run job "my-job-dev" not found
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Cause:** Job must exist before custom action tries to execute it.
|
|
264
|
+
|
|
265
|
+
**Fix:** Ensure Cloud Build creates the job before creating the release:
|
|
266
|
+
```yaml
|
|
267
|
+
# cloudbuild.yaml
|
|
268
|
+
steps:
|
|
269
|
+
- id: 'create-jobs'
|
|
270
|
+
# Create Cloud Run jobs FIRST
|
|
271
|
+
|
|
272
|
+
- id: 'create-release'
|
|
273
|
+
waitFor: ['create-jobs']
|
|
274
|
+
# Now create release that uses those jobs
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Custom Action Environment Variables
|
|
278
|
+
|
|
279
|
+
**Note:** Custom actions receive these variables automatically:
|
|
280
|
+
- `$ENV` - From target's deployParameters
|
|
281
|
+
- `$CLOUD_DEPLOY_LOCATION` - Region of the deployment
|
|
282
|
+
- `$CLOUD_DEPLOY_PROJECT` - Project ID
|
|
283
|
+
|
|
284
|
+
```yaml
|
|
285
|
+
# skaffold.yaml custom action example
|
|
286
|
+
customActions:
|
|
287
|
+
- name: run-migrations
|
|
288
|
+
containers:
|
|
289
|
+
- name: migrate
|
|
290
|
+
image: gcr.io/google.com/cloudsdktool/cloud-sdk:slim
|
|
291
|
+
command: ["/bin/sh", "-c"]
|
|
292
|
+
args: ["gcloud run jobs execute my-job-$ENV --args=migrate --region=$CLOUD_DEPLOY_LOCATION --wait"]
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Recovery Commands
|
|
298
|
+
|
|
299
|
+
### Retry Failed Job
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
gcloud deploy rollouts retry-job $ROLLOUT \
|
|
303
|
+
--release=$RELEASE \
|
|
304
|
+
--delivery-pipeline=$PIPELINE \
|
|
305
|
+
--region=$REGION \
|
|
306
|
+
--job-id=$JOB_ID \
|
|
307
|
+
--phase-id=$PHASE_ID
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
To find job-id and phase-id:
|
|
311
|
+
```bash
|
|
312
|
+
gcloud deploy rollouts describe $ROLLOUT \
|
|
313
|
+
--release=$RELEASE \
|
|
314
|
+
--delivery-pipeline=$PIPELINE \
|
|
315
|
+
--region=$REGION \
|
|
316
|
+
--format="yaml(phases)"
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Cancel Rollout
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
gcloud deploy rollouts cancel $ROLLOUT \
|
|
323
|
+
--release=$RELEASE \
|
|
324
|
+
--delivery-pipeline=$PIPELINE \
|
|
325
|
+
--region=$REGION
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Rollback to Previous Release
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
# List releases to find previous
|
|
332
|
+
gcloud deploy releases list \
|
|
333
|
+
--delivery-pipeline=$PIPELINE \
|
|
334
|
+
--region=$REGION \
|
|
335
|
+
--limit=5
|
|
336
|
+
|
|
337
|
+
# Create rollout for previous release
|
|
338
|
+
gcloud deploy rollouts create $NEW_ROLLOUT \
|
|
339
|
+
--release=$PREVIOUS_RELEASE \
|
|
340
|
+
--delivery-pipeline=$PIPELINE \
|
|
341
|
+
--region=$REGION
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Diagnostic Commands
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
# Pipeline overview
|
|
350
|
+
gcloud deploy delivery-pipelines describe $PIPELINE --region=$REGION
|
|
351
|
+
|
|
352
|
+
# Release render details
|
|
353
|
+
gcloud deploy releases describe $RELEASE \
|
|
354
|
+
--delivery-pipeline=$PIPELINE \
|
|
355
|
+
--region=$REGION \
|
|
356
|
+
--format="yaml(renderState,targetRenders,targetArtifacts)"
|
|
357
|
+
|
|
358
|
+
# All rollouts for a release
|
|
359
|
+
gcloud deploy rollouts list \
|
|
360
|
+
--release=$RELEASE \
|
|
361
|
+
--delivery-pipeline=$PIPELINE \
|
|
362
|
+
--region=$REGION
|
|
363
|
+
|
|
364
|
+
# Rollout with full phase breakdown
|
|
365
|
+
gcloud deploy rollouts describe $ROLLOUT \
|
|
366
|
+
--release=$RELEASE \
|
|
367
|
+
--delivery-pipeline=$PIPELINE \
|
|
368
|
+
--region=$REGION \
|
|
369
|
+
--format="yaml(state,phases[].state,phases[].childRolloutJobs)"
|
|
370
|
+
|
|
371
|
+
# All job runs for a rollout
|
|
372
|
+
gcloud deploy job-runs list \
|
|
373
|
+
--rollout=$ROLLOUT \
|
|
374
|
+
--release=$RELEASE \
|
|
375
|
+
--delivery-pipeline=$PIPELINE \
|
|
376
|
+
--region=$REGION \
|
|
377
|
+
--format="table(name,jobRunId,state,startTime,endTime)"
|
|
378
|
+
```
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloud-deploy
|
|
3
|
+
description: >
|
|
4
|
+
Cloud Deploy + Skaffold + Kustomize conventions. Read when designing multi-environment
|
|
5
|
+
CI/CD pipelines with staged promotion, verification gates, or GitFlow branching.
|
|
6
|
+
Also use when debugging Cloud Deploy pipeline failures. NOT for simple single-container
|
|
7
|
+
deploys — use cloud-build instead.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Cloud Deploy + Skaffold + Kustomize for Cloud Run
|
|
11
|
+
|
|
12
|
+
**Stack:** Cloud Build | Cloud Deploy | Skaffold | Kustomize | Cloud Run | Cloud Run Jobs
|
|
13
|
+
|
|
14
|
+
## Critical Rules
|
|
15
|
+
|
|
16
|
+
1. **Skaffold's rawYaml deployer does NOT support Go template substitution.** The `{{.param}}` syntax and `--set` flags are ignored for Cloud Run rawYaml manifests. Use Kustomize overlays instead.
|
|
17
|
+
|
|
18
|
+
2. **Use GitFlow with two pipelines:** dev branch → dev pipeline, master branch → release pipeline (staging → prod).
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## GitFlow Architecture
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
dev branch push ─────→ cloudbuild.yaml ─→ {service}-pipeline-dev ─────→ dev env
|
|
26
|
+
│ │
|
|
27
|
+
({service}-job-dev) (verify: tests)
|
|
28
|
+
|
|
29
|
+
master branch push ──→ cloudbuild.yaml ─→ {service}-pipeline-release ─→ staging ───→ prod
|
|
30
|
+
│ │ │ │
|
|
31
|
+
({service}-job-staging,prod) (verify: tests) (auto) (auto)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Directory Structure
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
backend/{service}/
|
|
40
|
+
├── skaffold.yaml # Profiles reference Kustomize overlays
|
|
41
|
+
├── cloudbuild.yaml # Single file with $BRANCH_NAME conditional logic
|
|
42
|
+
├── clouddeploy.yaml # Two pipelines (dev, release) and three targets
|
|
43
|
+
├── Dockerfile
|
|
44
|
+
├── entrypoint.sh # Handles: serve, migrate, seed, test
|
|
45
|
+
└── deploy/
|
|
46
|
+
└── overlays/
|
|
47
|
+
├── dev/
|
|
48
|
+
│ ├── kustomization.yaml
|
|
49
|
+
│ └── service.yaml
|
|
50
|
+
├── staging/
|
|
51
|
+
│ ├── kustomization.yaml
|
|
52
|
+
│ └── service.yaml
|
|
53
|
+
└── prod/
|
|
54
|
+
├── kustomization.yaml
|
|
55
|
+
└── service.yaml
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Next.js + Prisma Dockerfile Pattern (pnpm Monorepo)
|
|
61
|
+
|
|
62
|
+
For frontend services using Next.js standalone output with Prisma:
|
|
63
|
+
|
|
64
|
+
```dockerfile
|
|
65
|
+
FROM node:22-alpine AS base
|
|
66
|
+
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
|
|
67
|
+
|
|
68
|
+
# === BUILDER ===
|
|
69
|
+
FROM base AS builder
|
|
70
|
+
ENV NEXT_TELEMETRY_DISABLED=1
|
|
71
|
+
ENV DATABASE_URL="postgresql://user:pass@localhost:5432/db" # dummy for prisma generate
|
|
72
|
+
WORKDIR /app
|
|
73
|
+
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
|
74
|
+
COPY packages/ ./packages/
|
|
75
|
+
COPY frontend/{app}/ ./frontend/{app}/
|
|
76
|
+
RUN pnpm install --frozen-lockfile
|
|
77
|
+
RUN pnpm --filter @repo/database db:generate
|
|
78
|
+
RUN pnpm --filter @repo/{app} build
|
|
79
|
+
WORKDIR /app/frontend/{app}
|
|
80
|
+
RUN mkdir -p public
|
|
81
|
+
WORKDIR /app
|
|
82
|
+
RUN pnpm --filter @repo/database deploy /runtime-deps
|
|
83
|
+
|
|
84
|
+
# === RUNNER ===
|
|
85
|
+
FROM node:22-alpine AS runner
|
|
86
|
+
WORKDIR /app
|
|
87
|
+
RUN addgroup --system --gid 1001 nodejs && \
|
|
88
|
+
adduser --system --uid 1001 nextjs
|
|
89
|
+
COPY --from=builder --chown=nextjs:nodejs /app/frontend/{app}/.next/standalone ./
|
|
90
|
+
COPY --from=builder --chown=nextjs:nodejs /app/frontend/{app}/.next/static ./frontend/{app}/.next/static
|
|
91
|
+
COPY --from=builder --chown=nextjs:nodejs /app/frontend/{app}/public ./frontend/{app}/public
|
|
92
|
+
COPY --from=builder --chown=nextjs:nodejs /app/packages/database/prisma ./packages/database/prisma
|
|
93
|
+
COPY --from=builder --chown=nextjs:nodejs /app/packages/database/prisma.config.ts ./packages/database/prisma.config.ts
|
|
94
|
+
COPY --from=builder --chown=nextjs:nodejs /app/packages/database/src/generated ./packages/database/src/generated
|
|
95
|
+
COPY --from=builder /runtime-deps /runtime-deps
|
|
96
|
+
RUN mkdir -p /app/node_modules/@prisma && \
|
|
97
|
+
ln -s /runtime-deps/node_modules/@prisma/client /app/node_modules/@prisma/client
|
|
98
|
+
ENV PATH="/runtime-deps/node_modules/.bin:/app/node_modules/.bin:$PATH"
|
|
99
|
+
ENV NODE_PATH="/runtime-deps/node_modules"
|
|
100
|
+
COPY frontend/{app}/entrypoint.sh /entrypoint.sh
|
|
101
|
+
RUN chmod +x /entrypoint.sh
|
|
102
|
+
EXPOSE 3000
|
|
103
|
+
ENV NODE_ENV=production PORT=3000 HOSTNAME="0.0.0.0"
|
|
104
|
+
ENTRYPOINT ["/entrypoint.sh"]
|
|
105
|
+
CMD ["serve"]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Key Points
|
|
109
|
+
|
|
110
|
+
| Aspect | Details |
|
|
111
|
+
|--------|---------|
|
|
112
|
+
| Build context | Repository root (not app directory) for monorepo package access |
|
|
113
|
+
| Prisma generate | Run in builder with dummy DATABASE_URL |
|
|
114
|
+
| Runtime deps | Use `pnpm deploy` to copy database package with all dependencies |
|
|
115
|
+
| Symlink | Link @prisma/client so generated client can resolve runtime |
|
|
116
|
+
| Cloud SQL | Support Unix sockets via `?host=/cloudsql/instance` |
|
|
117
|
+
|
|
118
|
+
### Entrypoint Script
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
#!/bin/sh
|
|
122
|
+
set -e
|
|
123
|
+
|
|
124
|
+
# Construct DATABASE_URL from components if not set
|
|
125
|
+
if [ -z "$DATABASE_URL" ] && [ -n "$DB_USER" ] && [ -n "$DB_PASSWORD" ] && [ -n "$DB_NAME" ]; then
|
|
126
|
+
ENCODED_PASSWORD=$(DB_PASSWORD="$DB_PASSWORD" node -p "encodeURIComponent(process.env.DB_PASSWORD)")
|
|
127
|
+
if [ -n "$DB_SOCKET" ]; then
|
|
128
|
+
export DATABASE_URL="postgresql://${DB_USER}:${ENCODED_PASSWORD}@localhost/${DB_NAME}?host=${DB_SOCKET}"
|
|
129
|
+
else
|
|
130
|
+
export DATABASE_URL="postgresql://${DB_USER}:${ENCODED_PASSWORD}@${DB_HOST:-localhost}:${DB_PORT:-5432}/${DB_NAME}"
|
|
131
|
+
fi
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
case "$1" in
|
|
135
|
+
migrate) cd packages/database && prisma migrate deploy ;;
|
|
136
|
+
seed) cd packages/database && prisma db seed ;;
|
|
137
|
+
test) # Run vitest or other test runner ;;
|
|
138
|
+
serve) exec node frontend/{app}/server.js ;;
|
|
139
|
+
*) exec "$@" ;;
|
|
140
|
+
esac
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Configuration Templates
|
|
146
|
+
|
|
147
|
+
See [references/config-templates.md](references/config-templates.md) for complete
|
|
148
|
+
`clouddeploy.yaml`, `cloudbuild.yaml`, `skaffold.yaml`, and trigger setup commands.
|
|
149
|
+
Load when setting up a new service pipeline or adapting an existing one.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Developer Workflow
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
1. Work on feature branch
|
|
157
|
+
2. PR → dev branch (code review)
|
|
158
|
+
3. Merge to dev → auto-deploy to dev env
|
|
159
|
+
4. Test in dev, verify tests pass
|
|
160
|
+
5. PR → master branch (release review)
|
|
161
|
+
6. Merge to master → auto-deploy to staging
|
|
162
|
+
7. Verify in staging, tests pass
|
|
163
|
+
8. Auto-promote to prod (or manual approval if requireApproval: true)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Key Patterns
|
|
169
|
+
|
|
170
|
+
| Pattern | Description |
|
|
171
|
+
|---------|-------------|
|
|
172
|
+
| Two pipelines | Separate pipelines for dev and release flows |
|
|
173
|
+
| Single cloudbuild.yaml | `$BRANCH_NAME` conditional logic for branch-specific behavior |
|
|
174
|
+
| Kustomize overlays | Environment config baked into overlays, not templates |
|
|
175
|
+
| Cloud Run Jobs | Migrations, seed, tests run as jobs via custom actions |
|
|
176
|
+
| Verify phase | Tests run after deploy, gate promotion to next stage |
|
|
177
|
+
| Timestamp suffix | `$$TIMESTAMP` in release names to allow rebuilding same commit |
|
|
178
|
+
| Shell variable escaping | `$$VAR` to escape shell variables from Cloud Build substitution |
|
|
179
|
+
| pnpm deploy | Use instead of `npm install` for isolated deps (includes WASM files) |
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Common Issues
|
|
184
|
+
|
|
185
|
+
### Release ALREADY_EXISTS Error
|
|
186
|
+
|
|
187
|
+
Rebuilding the same commit creates a release with the same name. Fix: add timestamp suffix:
|
|
188
|
+
```bash
|
|
189
|
+
TIMESTAMP=$$(date +%H%M%S)
|
|
190
|
+
RELEASE_NAME="{service}-release-${SHORT_SHA}-$$TIMESTAMP"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Shell Variable Interpreted as Substitution
|
|
194
|
+
|
|
195
|
+
Cloud Build interprets `${VAR}` as a substitution variable. Fix: use `$$VAR` for shell variables.
|
|
196
|
+
|
|
197
|
+
### Template Not Substituting
|
|
198
|
+
|
|
199
|
+
`{{.serviceName}}` appears literally — Skaffold rawYaml doesn't support Go templates. Fix: use Kustomize overlays.
|
|
200
|
+
|
|
201
|
+
### Duplicate Container Name
|
|
202
|
+
|
|
203
|
+
Multiple verify containers with the same name. Fix: use unique container names per step.
|
|
204
|
+
|
|
205
|
+
### Prisma v7 Runtime Files Missing in Docker
|
|
206
|
+
|
|
207
|
+
`Cannot find module '@prisma/client/runtime/query_compiler_bg.postgresql.mjs'`. Fix: use `pnpm deploy` instead of `npm install`:
|
|
208
|
+
```dockerfile
|
|
209
|
+
# ✅ CORRECT — copies all dependencies including WASM runtime files
|
|
210
|
+
RUN pnpm --filter @repo/database deploy /runtime-deps
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Debugging Commands
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
# List recent releases
|
|
219
|
+
gcloud deploy releases list --delivery-pipeline={service}-pipeline-dev --region=$LOCATION --limit=3
|
|
220
|
+
|
|
221
|
+
# Check release details
|
|
222
|
+
gcloud deploy releases describe {release-name} --delivery-pipeline={service}-pipeline-{dev|release} --region=$LOCATION
|
|
223
|
+
|
|
224
|
+
# Check build logs
|
|
225
|
+
gcloud builds log {build-id} --region=$LOCATION
|
|
226
|
+
|
|
227
|
+
# Test Kustomize locally
|
|
228
|
+
kubectl kustomize deploy/overlays/dev
|
|
229
|
+
```
|