@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,257 @@
|
|
|
1
|
+
# Cloud Deploy Configuration Templates
|
|
2
|
+
|
|
3
|
+
Load this file when setting up Cloud Deploy pipelines, Skaffold configs, or
|
|
4
|
+
cloudbuild.yaml for a new service. Copy and adapt the templates below.
|
|
5
|
+
|
|
6
|
+
## clouddeploy.yaml (Two Pipelines)
|
|
7
|
+
|
|
8
|
+
```yaml
|
|
9
|
+
# =============================================================================
|
|
10
|
+
# DEV PIPELINE (triggered by dev branch)
|
|
11
|
+
# =============================================================================
|
|
12
|
+
apiVersion: deploy.cloud.google.com/v1
|
|
13
|
+
kind: DeliveryPipeline
|
|
14
|
+
metadata:
|
|
15
|
+
name: {service}-pipeline-dev
|
|
16
|
+
description: {Service} dev pipeline (dev branch → dev env)
|
|
17
|
+
serialPipeline:
|
|
18
|
+
stages:
|
|
19
|
+
- targetId: {service}-dev
|
|
20
|
+
profiles: ["dev"]
|
|
21
|
+
strategy:
|
|
22
|
+
standard:
|
|
23
|
+
predeploy:
|
|
24
|
+
actions: ["run-migrations"]
|
|
25
|
+
postdeploy:
|
|
26
|
+
actions: ["run-seed"]
|
|
27
|
+
verify: true
|
|
28
|
+
---
|
|
29
|
+
# =============================================================================
|
|
30
|
+
# RELEASE PIPELINE (triggered by master branch)
|
|
31
|
+
# =============================================================================
|
|
32
|
+
apiVersion: deploy.cloud.google.com/v1
|
|
33
|
+
kind: DeliveryPipeline
|
|
34
|
+
metadata:
|
|
35
|
+
name: {service}-pipeline-release
|
|
36
|
+
description: {Service} release pipeline (master branch → staging → prod)
|
|
37
|
+
serialPipeline:
|
|
38
|
+
stages:
|
|
39
|
+
- targetId: {service}-staging
|
|
40
|
+
profiles: ["staging"]
|
|
41
|
+
strategy:
|
|
42
|
+
standard:
|
|
43
|
+
predeploy:
|
|
44
|
+
actions: ["run-migrations"]
|
|
45
|
+
postdeploy:
|
|
46
|
+
actions: ["run-seed"]
|
|
47
|
+
verify: true
|
|
48
|
+
- targetId: {service}-prod
|
|
49
|
+
profiles: ["prod"]
|
|
50
|
+
strategy:
|
|
51
|
+
standard:
|
|
52
|
+
predeploy:
|
|
53
|
+
actions: ["run-migrations"]
|
|
54
|
+
postdeploy:
|
|
55
|
+
actions: ["run-seed"]
|
|
56
|
+
---
|
|
57
|
+
# =============================================================================
|
|
58
|
+
# TARGETS
|
|
59
|
+
# =============================================================================
|
|
60
|
+
apiVersion: deploy.cloud.google.com/v1
|
|
61
|
+
kind: Target
|
|
62
|
+
metadata:
|
|
63
|
+
name: {service}-dev
|
|
64
|
+
description: Development environment
|
|
65
|
+
requireApproval: false
|
|
66
|
+
run:
|
|
67
|
+
location: projects/$PROJECT_ID/locations/$LOCATION
|
|
68
|
+
deployParameters:
|
|
69
|
+
ENV: "dev"
|
|
70
|
+
---
|
|
71
|
+
apiVersion: deploy.cloud.google.com/v1
|
|
72
|
+
kind: Target
|
|
73
|
+
metadata:
|
|
74
|
+
name: {service}-staging
|
|
75
|
+
description: Staging environment
|
|
76
|
+
requireApproval: false
|
|
77
|
+
run:
|
|
78
|
+
location: projects/$PROJECT_ID/locations/$LOCATION
|
|
79
|
+
deployParameters:
|
|
80
|
+
ENV: "staging"
|
|
81
|
+
---
|
|
82
|
+
apiVersion: deploy.cloud.google.com/v1
|
|
83
|
+
kind: Target
|
|
84
|
+
metadata:
|
|
85
|
+
name: {service}-prod
|
|
86
|
+
description: Production environment
|
|
87
|
+
requireApproval: false # Set to true if manual approval needed before prod deploy
|
|
88
|
+
run:
|
|
89
|
+
location: projects/$PROJECT_ID/locations/$LOCATION
|
|
90
|
+
deployParameters:
|
|
91
|
+
ENV: "prod"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## cloudbuild.yaml (Single File with Branch Detection)
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
# GitFlow branching:
|
|
98
|
+
# - dev branch → {service}-pipeline-dev → dev environment
|
|
99
|
+
# - master branch → {service}-pipeline-release → staging → prod
|
|
100
|
+
|
|
101
|
+
substitutions:
|
|
102
|
+
_FF_API_KEY_SECRET: "ff-api-key"
|
|
103
|
+
_DATABASE_URL_SECRET_DEV: "database-url-{service}-dev"
|
|
104
|
+
_DATABASE_URL_SECRET_STAGING: "database-url-{service}-staging"
|
|
105
|
+
_DATABASE_URL_SECRET_PROD: "database-url-{service}-prod"
|
|
106
|
+
_VPC_NETWORK_DEV: "default"
|
|
107
|
+
_VPC_SUBNET_DEV: "default"
|
|
108
|
+
_VPC_NETWORK_PROD: "prod"
|
|
109
|
+
_VPC_SUBNET_PROD: "prod"
|
|
110
|
+
|
|
111
|
+
steps:
|
|
112
|
+
- id: "test-{service}"
|
|
113
|
+
# ... unit tests ...
|
|
114
|
+
|
|
115
|
+
- id: "build-{service}"
|
|
116
|
+
# ... docker build ...
|
|
117
|
+
|
|
118
|
+
- id: "push-{service}"
|
|
119
|
+
# ... docker push ...
|
|
120
|
+
|
|
121
|
+
# Create jobs based on branch
|
|
122
|
+
- id: "create-jobs"
|
|
123
|
+
name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
|
|
124
|
+
waitFor: ["push-{service}"]
|
|
125
|
+
entrypoint: "bash"
|
|
126
|
+
args:
|
|
127
|
+
- "-c"
|
|
128
|
+
- |
|
|
129
|
+
set -e
|
|
130
|
+
if [ "$BRANCH_NAME" = "dev" ]; then
|
|
131
|
+
gcloud run jobs deploy {service}-job-dev --image=... --set-env-vars=ENV=dev
|
|
132
|
+
else
|
|
133
|
+
gcloud run jobs deploy {service}-job-staging --image=... --set-env-vars=ENV=staging
|
|
134
|
+
gcloud run jobs deploy {service}-job-prod --image=... --set-env-vars=ENV=prod
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
- id: "apply-clouddeploy"
|
|
138
|
+
# ... apply clouddeploy.yaml ...
|
|
139
|
+
|
|
140
|
+
# Create release based on branch
|
|
141
|
+
- id: "create-release"
|
|
142
|
+
name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
|
|
143
|
+
waitFor: ["apply-clouddeploy"]
|
|
144
|
+
entrypoint: "bash"
|
|
145
|
+
args:
|
|
146
|
+
- "-c"
|
|
147
|
+
- |
|
|
148
|
+
set -e
|
|
149
|
+
|
|
150
|
+
# Add timestamp for unique release names on rebuild
|
|
151
|
+
TIMESTAMP=$$(date +%H%M%S)
|
|
152
|
+
# Get commit message for release description
|
|
153
|
+
COMMIT_MSG=$$(git log -1 --pretty=%s | head -c 100)
|
|
154
|
+
|
|
155
|
+
if [ "$BRANCH_NAME" = "dev" ]; then
|
|
156
|
+
PIPELINE="{service}-pipeline-dev"
|
|
157
|
+
RELEASE_NAME="{service}-dev-${SHORT_SHA}-$$TIMESTAMP"
|
|
158
|
+
else
|
|
159
|
+
PIPELINE="{service}-pipeline-release"
|
|
160
|
+
RELEASE_NAME="{service}-release-${SHORT_SHA}-$$TIMESTAMP"
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
gcloud deploy releases create "$$RELEASE_NAME" \
|
|
164
|
+
--delivery-pipeline="$$PIPELINE" \
|
|
165
|
+
--region=${LOCATION} \
|
|
166
|
+
--description="$$COMMIT_MSG (branch: $BRANCH_NAME)" \
|
|
167
|
+
--skaffold-file=skaffold.yaml \
|
|
168
|
+
--images={service}=${LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO}/{service}:${SHORT_SHA}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## skaffold.yaml
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
apiVersion: skaffold/v4beta11
|
|
175
|
+
kind: Config
|
|
176
|
+
metadata:
|
|
177
|
+
name: {service}
|
|
178
|
+
build:
|
|
179
|
+
artifacts:
|
|
180
|
+
- image: {service}
|
|
181
|
+
context: .
|
|
182
|
+
docker:
|
|
183
|
+
dockerfile: Dockerfile
|
|
184
|
+
deploy:
|
|
185
|
+
cloudrun:
|
|
186
|
+
projectid: "{{.PROJECT_ID}}"
|
|
187
|
+
region: "{{.LOCATION}}"
|
|
188
|
+
customActions:
|
|
189
|
+
- name: run-migrations
|
|
190
|
+
containers:
|
|
191
|
+
- name: migrate
|
|
192
|
+
image: gcr.io/google.com/cloudsdktool/cloud-sdk:slim
|
|
193
|
+
command: ["/bin/sh", "-c"]
|
|
194
|
+
args: ["gcloud run jobs execute {service}-job-$ENV --args=migrate --region=$CLOUD_DEPLOY_LOCATION --wait"]
|
|
195
|
+
- name: run-seed
|
|
196
|
+
containers:
|
|
197
|
+
- name: seed
|
|
198
|
+
image: gcr.io/google.com/cloudsdktool/cloud-sdk:slim
|
|
199
|
+
command: ["/bin/sh", "-c"]
|
|
200
|
+
args: ["gcloud run jobs execute {service}-job-$ENV --args=seed --region=$CLOUD_DEPLOY_LOCATION --wait"]
|
|
201
|
+
profiles:
|
|
202
|
+
- name: dev
|
|
203
|
+
manifests:
|
|
204
|
+
kustomize:
|
|
205
|
+
paths:
|
|
206
|
+
- deploy/overlays/dev
|
|
207
|
+
verify:
|
|
208
|
+
- name: tests
|
|
209
|
+
container:
|
|
210
|
+
name: tests
|
|
211
|
+
image: gcr.io/google.com/cloudsdktool/cloud-sdk:slim
|
|
212
|
+
command: ["/bin/sh", "-c"]
|
|
213
|
+
args: ["gcloud run jobs execute {service}-job-$ENV --args=test --region=$CLOUD_DEPLOY_LOCATION --wait"]
|
|
214
|
+
- name: staging
|
|
215
|
+
manifests:
|
|
216
|
+
kustomize:
|
|
217
|
+
paths:
|
|
218
|
+
- deploy/overlays/staging
|
|
219
|
+
verify:
|
|
220
|
+
- name: tests
|
|
221
|
+
container:
|
|
222
|
+
name: tests
|
|
223
|
+
image: gcr.io/google.com/cloudsdktool/cloud-sdk:slim
|
|
224
|
+
command: ["/bin/sh", "-c"]
|
|
225
|
+
args: ["gcloud run jobs execute {service}-job-$ENV --args=test --region=$CLOUD_DEPLOY_LOCATION --wait"]
|
|
226
|
+
- name: prod
|
|
227
|
+
manifests:
|
|
228
|
+
kustomize:
|
|
229
|
+
paths:
|
|
230
|
+
- deploy/overlays/prod
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Cloud Build Triggers Setup
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Dev trigger (dev branch → dev env)
|
|
237
|
+
gcloud builds triggers create github \
|
|
238
|
+
--name="{service}-dev" \
|
|
239
|
+
--repo-name="REPO_NAME" \
|
|
240
|
+
--repo-owner="OWNER" \
|
|
241
|
+
--branch-pattern="^dev$" \
|
|
242
|
+
--build-config="backend/{service}/cloudbuild.yaml" \
|
|
243
|
+
--region=$LOCATION
|
|
244
|
+
|
|
245
|
+
# Release trigger (master branch → staging → prod)
|
|
246
|
+
gcloud builds triggers create github \
|
|
247
|
+
--name="{service}-release" \
|
|
248
|
+
--repo-name="REPO_NAME" \
|
|
249
|
+
--repo-owner="OWNER" \
|
|
250
|
+
--branch-pattern="^master$" \
|
|
251
|
+
--build-config="backend/{service}/cloudbuild.yaml" \
|
|
252
|
+
--region=$LOCATION
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Note: Both triggers use the same `cloudbuild.yaml` file. The `$BRANCH_NAME`
|
|
256
|
+
variable is automatically set by Cloud Build to detect which branch triggered
|
|
257
|
+
the build.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docker
|
|
3
|
+
description: Docker/Podman container architecture and build patterns. Read when designing or reviewing containerization, Dockerfile structure, multi-stage builds, PyPI mirror support, or docker-compose setup for Python/uv projects.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Docker Build Patterns
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This skill covers Docker build patterns for Python projects using uv, with support for:
|
|
11
|
+
- Multi-stage builds for smaller images
|
|
12
|
+
- PyPI mirror configuration (for China/corporate mirrors)
|
|
13
|
+
- Podman as drop-in replacement for Docker
|
|
14
|
+
- docker-compose integration
|
|
15
|
+
|
|
16
|
+
## Makefile Pattern
|
|
17
|
+
|
|
18
|
+
Auto-detect podman or docker, load env vars, and pass build args:
|
|
19
|
+
|
|
20
|
+
```makefile
|
|
21
|
+
.PHONY: build rebuild
|
|
22
|
+
|
|
23
|
+
# Auto-detect compose tool (prefer podman-compose, fallback to docker compose)
|
|
24
|
+
COMPOSE_CMD := $(shell command -v podman-compose >/dev/null 2>&1 && echo "podman-compose" || echo "docker compose")
|
|
25
|
+
# Export .env vars for build arg substitution (podman-compose doesn't auto-load .env)
|
|
26
|
+
COMPOSE := set -a && . ./.env && set +a && $(COMPOSE_CMD)
|
|
27
|
+
|
|
28
|
+
# Auto-detect container build tool (prefer podman, fallback to docker)
|
|
29
|
+
BUILD_CMD := $(shell command -v podman >/dev/null 2>&1 && echo "podman" || echo "docker")
|
|
30
|
+
|
|
31
|
+
# Load UV_DEFAULT_INDEX from .env for build args
|
|
32
|
+
UV_DEFAULT_INDEX := $(shell grep -E '^UV_DEFAULT_INDEX=' .env 2>/dev/null | cut -d= -f2)
|
|
33
|
+
|
|
34
|
+
build: ## Build Docker image
|
|
35
|
+
$(BUILD_CMD) build --build-arg UV_DEFAULT_INDEX=$(UV_DEFAULT_INDEX) -t app-local:latest .
|
|
36
|
+
|
|
37
|
+
rebuild: ## Rebuild Docker image (no cache)
|
|
38
|
+
$(BUILD_CMD) build --no-cache --build-arg UV_DEFAULT_INDEX=$(UV_DEFAULT_INDEX) -t app-local:latest .
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Dockerfile Pattern (Multi-stage with uv)
|
|
42
|
+
|
|
43
|
+
```dockerfile
|
|
44
|
+
# Stage 1: Build dependencies
|
|
45
|
+
FROM python:3.12-slim-bookworm AS builder
|
|
46
|
+
|
|
47
|
+
# PyPI mirror (for China users): e.g., https://mirrors.aliyun.com/pypi/simple/
|
|
48
|
+
ARG UV_DEFAULT_INDEX=
|
|
49
|
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /usr/local/bin/
|
|
50
|
+
|
|
51
|
+
WORKDIR /opt/app
|
|
52
|
+
COPY pyproject.toml uv.lock ./
|
|
53
|
+
|
|
54
|
+
# Install dependencies (creates .venv)
|
|
55
|
+
# If mirror URL provided, create uv.toml with default=true to disable PyPI
|
|
56
|
+
# Note: --frozen uses hardcoded PyPI URLs from lock file, so we omit it when using mirror
|
|
57
|
+
RUN if [ -n "$UV_DEFAULT_INDEX" ]; then \
|
|
58
|
+
mkdir -p /root/.config/uv && \
|
|
59
|
+
printf '[[index]]\nurl = "%s"\ndefault = true\n' "$UV_DEFAULT_INDEX" > /root/.config/uv/uv.toml && \
|
|
60
|
+
echo "Using mirror: $UV_DEFAULT_INDEX" && \
|
|
61
|
+
cat /root/.config/uv/uv.toml && \
|
|
62
|
+
uv sync --no-dev; \
|
|
63
|
+
else \
|
|
64
|
+
uv sync --frozen --no-dev; \
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
# Stage 2: Runtime
|
|
68
|
+
FROM python:3.12-slim-bookworm
|
|
69
|
+
|
|
70
|
+
RUN useradd -m -d /opt/app -s /bin/bash app
|
|
71
|
+
WORKDIR /opt/app
|
|
72
|
+
|
|
73
|
+
# Copy virtual environment from builder
|
|
74
|
+
COPY --from=builder --chown=app:app /opt/app/.venv /opt/app/.venv
|
|
75
|
+
|
|
76
|
+
ENV PATH="/opt/app/.venv/bin:$PATH"
|
|
77
|
+
USER app
|
|
78
|
+
|
|
79
|
+
COPY --chown=app:app . .
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## docker-compose.yaml Pattern
|
|
83
|
+
|
|
84
|
+
```yaml
|
|
85
|
+
x-app-common: &app-common
|
|
86
|
+
image: ${APP_IMAGE:-app-local:latest}
|
|
87
|
+
build:
|
|
88
|
+
context: .
|
|
89
|
+
args:
|
|
90
|
+
UV_DEFAULT_INDEX: ${UV_DEFAULT_INDEX:-}
|
|
91
|
+
restart: unless-stopped
|
|
92
|
+
# ... rest of config
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## .env Configuration
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# PyPI Mirror (for users in China)
|
|
99
|
+
# UV_DEFAULT_INDEX=https://mirrors.aliyun.com/pypi/simple/
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## PyPI Mirror: Why `default = true` is Required
|
|
103
|
+
|
|
104
|
+
`UV_DEFAULT_INDEX` alone doesn't work because:
|
|
105
|
+
1. It's a lower-priority fallback, not a replacement for PyPI
|
|
106
|
+
2. `--frozen` uses hardcoded `files.pythonhosted.org` URLs from `uv.lock`
|
|
107
|
+
|
|
108
|
+
Solution: Create `uv.toml` with `[[index]]` and `default = true` to completely disable PyPI.
|
|
109
|
+
|
|
110
|
+
Per [uv docs](https://docs.astral.sh/uv/concepts/indexes/):
|
|
111
|
+
> "marking an index as default will disable the PyPI default index"
|
|
112
|
+
|
|
113
|
+
## Common Mirrors
|
|
114
|
+
|
|
115
|
+
| Region | URL |
|
|
116
|
+
|--------|-----|
|
|
117
|
+
| China (Aliyun) | `https://mirrors.aliyun.com/pypi/simple/` |
|
|
118
|
+
| China (Tsinghua) | `https://pypi.tuna.tsinghua.edu.cn/simple/` |
|
|
119
|
+
| China (USTC) | `https://pypi.mirrors.ustc.edu.cn/simple/` |
|
|
120
|
+
|
|
121
|
+
## Podman Notes
|
|
122
|
+
|
|
123
|
+
- Podman is a drop-in replacement for Docker (same CLI)
|
|
124
|
+
- `podman-compose` replaces `docker compose`
|
|
125
|
+
- Podman doesn't auto-load `.env` files, hence the `set -a && . ./.env` pattern in Makefile
|
|
126
|
+
- Rootless by default (better security)
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: google-cloud
|
|
3
|
+
description: >
|
|
4
|
+
GCP operations covering IAM, IAP, VPC, Secret Manager, Cloud Storage, and
|
|
5
|
+
project management. Use when configuring GCP resources, managing service
|
|
6
|
+
accounts, setting up IAP access, configuring VPC networks, managing secrets,
|
|
7
|
+
or debugging cloud infrastructure.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Google Cloud Platform (GCP) Skill
|
|
11
|
+
|
|
12
|
+
Reference hub for GCP operations. Use `$PROJECT_ID`, `$REGION`, and
|
|
13
|
+
`$PROJECT_NUMBER` environment variables throughout — set them for your project.
|
|
14
|
+
|
|
15
|
+
## Quick Commands
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Set default project
|
|
19
|
+
gcloud config set project $PROJECT_ID
|
|
20
|
+
|
|
21
|
+
# Set default region
|
|
22
|
+
gcloud config set compute/region $REGION
|
|
23
|
+
|
|
24
|
+
# List enabled APIs
|
|
25
|
+
gcloud services list --enabled --project=$PROJECT_ID
|
|
26
|
+
|
|
27
|
+
# Describe project
|
|
28
|
+
gcloud projects describe $PROJECT_ID
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Topic Index
|
|
32
|
+
|
|
33
|
+
Load the relevant reference file based on the task:
|
|
34
|
+
|
|
35
|
+
| Task | Reference | When to load |
|
|
36
|
+
|------|-----------|--------------|
|
|
37
|
+
| Service accounts, roles, IAP | [references/iam.md](references/iam.md) | Configuring IAM, creating service accounts, granting roles, setting up IAP |
|
|
38
|
+
| VPC, subnets, firewall rules | [references/vpc.md](references/vpc.md) | Setting up VPC networks, subnets, firewall rules, or debugging connectivity |
|
|
39
|
+
| Secret Manager | [references/secrets.md](references/secrets.md) | Creating, accessing, or granting access to secrets |
|
|
40
|
+
| Cloud Storage (GCS) | [references/gcs.md](references/gcs.md) | Managing buckets, objects, lifecycle policies, or GCS IAM |
|
|
41
|
+
| Project metadata, quotas | [references/project.md](references/project.md) | Checking project config, quotas, billing, or API enablement |
|
|
42
|
+
|
|
43
|
+
## Scripts
|
|
44
|
+
|
|
45
|
+
Reusable shell scripts in `scripts/`:
|
|
46
|
+
|
|
47
|
+
| Script | Purpose |
|
|
48
|
+
|--------|---------|
|
|
49
|
+
| `scripts/create-sa.sh` | Create a service account with roles |
|
|
50
|
+
| `scripts/gcp-config.sh` | Set up gcloud default config |
|
|
51
|
+
| `scripts/grant-iap.sh` | Grant IAP access to a user or service account |
|
|
52
|
+
| `scripts/setup-secrets.sh` | Create and populate secrets in Secret Manager |
|
|
53
|
+
|
|
54
|
+
## Common Patterns
|
|
55
|
+
|
|
56
|
+
### Service Account Token Minting
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Mint ID token for service account
|
|
60
|
+
gcloud iam service-accounts get-openid-token-identity \
|
|
61
|
+
$SA_EMAIL \
|
|
62
|
+
--audiences=$AUDIENCE
|
|
63
|
+
|
|
64
|
+
# Sign JWT with service account
|
|
65
|
+
gcloud iam service-accounts sign-jwt /tmp/claims.json /tmp/signed.jwt \
|
|
66
|
+
--iam-account=$SA_EMAIL
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### VPC Network Lookup
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# List networks
|
|
73
|
+
gcloud compute networks list
|
|
74
|
+
|
|
75
|
+
# List subnets in region
|
|
76
|
+
gcloud compute networks subnets list --region=$REGION
|
|
77
|
+
|
|
78
|
+
# Describe specific subnet
|
|
79
|
+
gcloud compute networks subnets describe $SUBNET --region=$REGION
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Secret Access
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# List secrets
|
|
86
|
+
gcloud secrets list --project=$PROJECT_ID
|
|
87
|
+
|
|
88
|
+
# Access latest version
|
|
89
|
+
gcloud secrets versions access latest --secret=$SECRET_NAME
|
|
90
|
+
|
|
91
|
+
# Grant access to service account
|
|
92
|
+
gcloud secrets add-iam-policy-binding $SECRET \
|
|
93
|
+
--member="serviceAccount:$SA_EMAIL" \
|
|
94
|
+
--role="roles/secretmanager.secretAccessor"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### GCS Operations
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# List buckets
|
|
101
|
+
gcloud storage buckets list --project=$PROJECT_ID
|
|
102
|
+
|
|
103
|
+
# Upload / download / copy
|
|
104
|
+
gcloud storage cp file.txt gs://$BUCKET_NAME/
|
|
105
|
+
gcloud storage cp gs://$BUCKET_NAME/file.txt ./
|
|
106
|
+
gcloud storage cp gs://$BUCKET_A/file.txt gs://$BUCKET_B/
|
|
107
|
+
|
|
108
|
+
# Set IAM on bucket
|
|
109
|
+
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \
|
|
110
|
+
--member="serviceAccount:$SA_EMAIL" \
|
|
111
|
+
--role="roles/storage.objectViewer"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Related Skills
|
|
115
|
+
|
|
116
|
+
- [cloud-build](../cloud-build/SKILL.md) — Cloud Build → Cloud Run deployments
|
|
117
|
+
- [cloud-deploy](../cloud-deploy/SKILL.md) — Cloud Deploy + Skaffold pipelines
|
|
118
|
+
- [cloud-debug](../cloud-debug/SKILL.md) — Debugging Cloud Build/Deploy failures
|