@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,312 @@
|
|
|
1
|
+
# VPC Configuration
|
|
2
|
+
|
|
3
|
+
VPC networks, subnets, and firewall rules for GCP infrastructure.
|
|
4
|
+
|
|
5
|
+
## Network Operations
|
|
6
|
+
|
|
7
|
+
### List Networks
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# All networks in project
|
|
11
|
+
gcloud compute networks list
|
|
12
|
+
|
|
13
|
+
# With details
|
|
14
|
+
gcloud compute networks list --format="table(name,subnetMode,autoCreateSubnetworks)"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Create Network
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Custom subnet mode (recommended)
|
|
21
|
+
gcloud compute networks create $NAME \
|
|
22
|
+
--subnet-mode=custom \
|
|
23
|
+
--mtu=1460 \
|
|
24
|
+
--bgp-routing-mode=regional
|
|
25
|
+
|
|
26
|
+
# Legacy (auto-create subnets)
|
|
27
|
+
gcloud compute networks create $NAME \
|
|
28
|
+
--subnet-mode=legacy \
|
|
29
|
+
--auto-create-subnetworks
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Delete Network
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
gcloud compute networks delete $NAME
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Subnet Operations
|
|
41
|
+
|
|
42
|
+
### List Subnets
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# All subnets in region
|
|
46
|
+
gcloud compute networks subnets list --region=us-central1
|
|
47
|
+
|
|
48
|
+
# In specific network
|
|
49
|
+
gcloud compute networks subnets list \
|
|
50
|
+
--filter="network:$NETWORK" \
|
|
51
|
+
--region=us-central1
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Create Subnet
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
gcloud compute networks subnets create $SUBNET \
|
|
58
|
+
--network=$NETWORK \
|
|
59
|
+
--region=us-central1 \
|
|
60
|
+
--range=$IP_RANGE \
|
|
61
|
+
--purpose=REGIONAL_MANAGED_PROXY \
|
|
62
|
+
--enable-flow-logs \
|
|
63
|
+
--logging-flow-sampling=0.5 \
|
|
64
|
+
--logging-metadata=include-all
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Describe Subnet
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
gcloud compute networks subnets describe $SUBNET \
|
|
71
|
+
--region=us-central1 \
|
|
72
|
+
--format="yaml(ipCidrRange,purpose,privateIpGoogleAccess,secondaryIpRanges)"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Cloud Run with VPC
|
|
78
|
+
|
|
79
|
+
### Deploy Cloud Run with VPC
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
gcloud run deploy $SERVICE \
|
|
83
|
+
--image=$IMAGE \
|
|
84
|
+
--region=us-central1 \
|
|
85
|
+
--network=$NETWORK \
|
|
86
|
+
--subnet=$SUBNET
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Update Existing Service VPC
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
gcloud run services update $SERVICE \
|
|
93
|
+
--region=us-central1 \
|
|
94
|
+
--network=$NETWORK \
|
|
95
|
+
--subnet=$SUBNET
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Cloud Run Job with VPC
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
gcloud run jobs create $JOB \
|
|
102
|
+
--image=$IMAGE \
|
|
103
|
+
--region=us-central1 \
|
|
104
|
+
--network=$NETWORK \
|
|
105
|
+
--subnet=$SUBNET
|
|
106
|
+
|
|
107
|
+
# Update existing job
|
|
108
|
+
gcloud run jobs update $JOB \
|
|
109
|
+
--region=us-central1 \
|
|
110
|
+
--network=$NETWORK \
|
|
111
|
+
--subnet=$SUBNET
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Cloud SQL Connection Standard
|
|
117
|
+
|
|
118
|
+
**1Above standard:** Connect via direct VPC + private IP. Do NOT use Cloud SQL Auth Proxy (`--add-cloudsql-instances`).
|
|
119
|
+
|
|
120
|
+
### Connection string format
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
postgresql://<user>:<password>@<PRIVATE_IP>:5432/<database>?sslmode=no-verify&connect_timeout=5
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Cloud SQL instance private IPs (GCP project: cosmic-heaven-479306-v5)
|
|
127
|
+
|
|
128
|
+
| Instance | Private IP |
|
|
129
|
+
|----------|------------|
|
|
130
|
+
| ai-dev | 10.58.0.11 |
|
|
131
|
+
|
|
132
|
+
### Cloud Run deploy flags
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
--network=default \
|
|
136
|
+
--subnet=default \
|
|
137
|
+
--vpc-egress=private-ranges-only
|
|
138
|
+
# Do NOT add: --add-cloudsql-instances
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Why sslmode=no-verify?
|
|
142
|
+
|
|
143
|
+
`ai-dev` has `requireSsl: true` + `TRUSTED_CLIENT_CERTIFICATE_REQUIRED`.
|
|
144
|
+
`sslmode=no-verify` encrypts the connection without requiring client certificates — consistent with all existing services (a1-research-dev, etc.).
|
|
145
|
+
|
|
146
|
+
### Reference service
|
|
147
|
+
|
|
148
|
+
Check `a1-research-dev` DATABASE_URL in Secret Manager as the canonical example.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## VPC Connectors (Serverless VPC Access)
|
|
153
|
+
|
|
154
|
+
### Create VPC Connector
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
gcloud compute networks vpc-access connectors create $CONNECTOR \
|
|
158
|
+
--region=us-central1 \
|
|
159
|
+
--network=$NETWORK \
|
|
160
|
+
--range=$IP_RANGE
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### List VPC Connectors
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
gcloud compute networks vpc-access connectors list --region=us-central1
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Use Connector with Cloud Run
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
gcloud run services update $SERVICE \
|
|
173
|
+
--region=us-central1 \
|
|
174
|
+
--vpc-connector=$CONNECTOR
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Firewall Rules
|
|
180
|
+
|
|
181
|
+
### List Firewall Rules
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
# All rules
|
|
185
|
+
gcloud compute firewall-rules list
|
|
186
|
+
|
|
187
|
+
# For specific network
|
|
188
|
+
gcloud compute firewall-rules list --filter="network:$NETWORK"
|
|
189
|
+
|
|
190
|
+
# With details
|
|
191
|
+
gcloud compute firewall-rules describe $RULE
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Create Firewall Rule
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Allow SSH from anywhere (dev only)
|
|
198
|
+
gcloud compute firewall-rules create allow-ssh \
|
|
199
|
+
--network=$NETWORK \
|
|
200
|
+
--allow=tcp:22 \
|
|
201
|
+
--source-ranges=0.0.0.0/0 \
|
|
202
|
+
--target-tags=$TAG
|
|
203
|
+
|
|
204
|
+
# Allow internal traffic
|
|
205
|
+
gcloud compute firewall-rules create allow-internal \
|
|
206
|
+
--network=$NETWORK \
|
|
207
|
+
--allow=tcp,udp,icmp \
|
|
208
|
+
--source-ranges=$IP_RANGE \
|
|
209
|
+
--direction=INGRESS
|
|
210
|
+
|
|
211
|
+
# Allow health checks
|
|
212
|
+
gcloud compute firewall-rules create allow-health-check \
|
|
213
|
+
--network=$NETWORK \
|
|
214
|
+
--allow=tcp:80,tcp:443 \
|
|
215
|
+
--source-ranges=35.191.0.0/16,130.211.0.0/22 \
|
|
216
|
+
--target-tags=$TAG
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Private Google Access
|
|
222
|
+
|
|
223
|
+
### Check if Subnet Has Private Google Access
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
gcloud compute networks subnets describe $SUBNET \
|
|
227
|
+
--region=us-central1 \
|
|
228
|
+
--format="value(privateIpGoogleAccess)"
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Enable Private Google Access on Subnet
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
gcloud compute networks subnets describe $SUBNET \
|
|
235
|
+
--region=us-central1 \
|
|
236
|
+
--set-private-ip-google-access
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Shared VPC (Host Project)
|
|
242
|
+
|
|
243
|
+
### List Shared VPC Networks
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
gcloud compute shared-vpc list-host-projects
|
|
247
|
+
gcloud compute networks list --project=$HOST_PROJECT
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Enable Shared VPC on Service Project
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
gcloud compute projects enable-shared-vpc $SERVICE_PROJECT
|
|
254
|
+
|
|
255
|
+
# Attach service project to host
|
|
256
|
+
gcloud compute shared-vpc associated-projects add $SERVICE_PROJECT \
|
|
257
|
+
--host-project=$HOST_PROJECT
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## VPC Peering
|
|
263
|
+
|
|
264
|
+
### Create VPC Peering
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# From network A
|
|
268
|
+
gcloud compute networks peerings create $PEERING_NAME \
|
|
269
|
+
--network=$NETWORK_A \
|
|
270
|
+
--peer-project=$PROJECT_B \
|
|
271
|
+
--peer-network=$NETWORK_B \
|
|
272
|
+
--export-custom-routes \
|
|
273
|
+
--import-custom-routes
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### List Peerings
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
gcloud compute networks peerings list --network=$NETWORK
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Useful Queries
|
|
285
|
+
|
|
286
|
+
### Find Subnet by IP Range
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
gcloud compute networks subnets list \
|
|
290
|
+
--filter="ipCidrRange:$IP_RANGE" \
|
|
291
|
+
--regions=us-central1
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Find Resources Using Specific Network
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
# Cloud Run services
|
|
298
|
+
gcloud run services list \
|
|
299
|
+
--filter="metadata.annotations.run.googleapis.com/network-name:$NETWORK"
|
|
300
|
+
|
|
301
|
+
# Cloud Run jobs
|
|
302
|
+
gcloud run jobs list \
|
|
303
|
+
--filter="metadata.annotations.run.googleapis.com/network-name:$NETWORK"
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Check VPC Flow Logs Status
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
gcloud compute networks subnets describe $SUBNET \
|
|
310
|
+
--region=us-central1 \
|
|
311
|
+
--format="value(logConfig.enable)"
|
|
312
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Create Service Account with Standard Roles
|
|
3
|
+
# Usage: ./create-sa.sh [sa-name] [display-name] [roles...]
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
SA_NAME="${1:-my-sa}"
|
|
8
|
+
DISPLAY_NAME="${2:-$SA_NAME}"
|
|
9
|
+
PROJECT_ID="${PROJECT_ID:-your-project-id}"
|
|
10
|
+
|
|
11
|
+
# Optional roles (default: cloudsql.client, secretmanager.secretAccessor)
|
|
12
|
+
shift 2
|
|
13
|
+
ROLES=("${@:-roles/cloudsql.client roles/secretmanager.secretAccessor)}")
|
|
14
|
+
|
|
15
|
+
SA_EMAIL="${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
|
|
16
|
+
|
|
17
|
+
echo "Creating Service Account: $SA_NAME"
|
|
18
|
+
echo "Email: $SA_EMAIL"
|
|
19
|
+
echo "Roles: ${ROLES[*]}"
|
|
20
|
+
|
|
21
|
+
# Create SA
|
|
22
|
+
gcloud iam service-accounts create "$SA_NAME" \
|
|
23
|
+
--display-name="$DISPLAY_NAME" \
|
|
24
|
+
--project=$PROJECT_ID
|
|
25
|
+
|
|
26
|
+
# Grant roles
|
|
27
|
+
for ROLE in "${ROLES[@]}"; do
|
|
28
|
+
echo "Granting $ROLE..."
|
|
29
|
+
gcloud projects add-iam-policy-binding $PROJECT_ID \
|
|
30
|
+
--member="serviceAccount:$SA_EMAIL" \
|
|
31
|
+
--role="$ROLE"
|
|
32
|
+
done
|
|
33
|
+
|
|
34
|
+
echo ""
|
|
35
|
+
echo "Service Account created successfully!"
|
|
36
|
+
echo "Email: $SA_EMAIL"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Project: ${PROJECT_ID:-your-project-id}
|
|
3
|
+
# Region: us-central1
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
# Colors for output
|
|
8
|
+
RED='\033[0;31m'
|
|
9
|
+
GREEN='\033[0;32m'
|
|
10
|
+
YELLOW='\033[1;33m'
|
|
11
|
+
NC='\033[0m'
|
|
12
|
+
|
|
13
|
+
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
|
14
|
+
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
15
|
+
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
16
|
+
|
|
17
|
+
# Configuration
|
|
18
|
+
PROJECT_ID="${PROJECT_ID:-your-project-id}"
|
|
19
|
+
PROJECT_NUMBER="${PROJECT_NUMBER:-your-project-number}"
|
|
20
|
+
REGION="us-central1"
|
|
21
|
+
|
|
22
|
+
# Set project
|
|
23
|
+
gcloud config set project $PROJECT_ID
|
|
24
|
+
|
|
25
|
+
# Validate project
|
|
26
|
+
if ! gcloud projects describe $PROJECT_ID &>/dev/null; then
|
|
27
|
+
log_error "Project $PROJECT_ID not accessible"
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
log_info "Project $PROJECT_ID configured successfully"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Grant IAP Access to Service Account
|
|
3
|
+
# Usage: ./grant-iap-access.sh [service-account-email] [backend-service-name]
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
SA_EMAIL="${1:-e2e-runner@${PROJECT_ID:-your-project-id}.iam.gserviceaccount.com}"
|
|
8
|
+
BACKEND_SERVICE="${2:-my-backend-service}"
|
|
9
|
+
PROJECT_ID="${PROJECT_ID:-your-project-id}"
|
|
10
|
+
|
|
11
|
+
echo "Granting IAP access to: $SA_EMAIL"
|
|
12
|
+
echo "Backend service: $BACKEND_SERVICE"
|
|
13
|
+
|
|
14
|
+
# Grant IAP access on backend service
|
|
15
|
+
gcloud iap web add-iam-policy-binding \
|
|
16
|
+
--project=$PROJECT_ID \
|
|
17
|
+
--resource-type=backend-services \
|
|
18
|
+
--service=$BACKEND_SERVICE \
|
|
19
|
+
--member="serviceAccount:$SA_EMAIL" \
|
|
20
|
+
--role="roles/iap.httpsResourceAccessor"
|
|
21
|
+
|
|
22
|
+
echo ""
|
|
23
|
+
echo "IAP access granted successfully!"
|
|
24
|
+
echo ""
|
|
25
|
+
echo "Next: Use signed JWT to access IAP-protected service:"
|
|
26
|
+
echo ""
|
|
27
|
+
cat << 'EOF'
|
|
28
|
+
SERVICE_URL="https://${BACKEND_SERVICE}-${HASH}-uc.a.run.app"
|
|
29
|
+
SIGNER_SA="signer-sa@${PROJECT_ID}.iam.gserviceaccount.com"
|
|
30
|
+
|
|
31
|
+
NOW="$(date +%s)"
|
|
32
|
+
cat > /tmp/iap-jwt.json <<JSON
|
|
33
|
+
{"iss":"${SIGNER_SA}","sub":"${SIGNER_SA}","aud":"${SERVICE_URL}/*","iat":${NOW},"exp":$((NOW+600))}
|
|
34
|
+
JSON
|
|
35
|
+
|
|
36
|
+
gcloud iam service-accounts sign-jwt /tmp/iap-jwt.json /tmp/iap-jwt.jwt \
|
|
37
|
+
--iam-account="${SIGNER_SA}"
|
|
38
|
+
|
|
39
|
+
TOKEN="$(cat /tmp/iap-jwt.jwt)"
|
|
40
|
+
curl -i "${SERVICE_URL}/" -H "Authorization: Bearer ${TOKEN}"
|
|
41
|
+
EOF
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Setup Secrets for Service
|
|
3
|
+
# Usage: ./setup-secrets.sh [service-name]
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
SERVICE_NAME="${1:-my-service}"
|
|
8
|
+
PROJECT_ID="${PROJECT_ID:-your-project-id}"
|
|
9
|
+
ENVIRONMENTS=("dev" "staging" "prod")
|
|
10
|
+
|
|
11
|
+
for ENV in "${ENVIRONMENTS[@]}"; do
|
|
12
|
+
SECRET_NAME="${SERVICE_NAME}-database-url-${ENV}"
|
|
13
|
+
|
|
14
|
+
echo "Creating secret: $SECRET_NAME"
|
|
15
|
+
|
|
16
|
+
# Create secret (ignore if exists)
|
|
17
|
+
gcloud secrets create "$SECRET_NAME" \
|
|
18
|
+
--replication-policy="automatic" \
|
|
19
|
+
--project=$PROJECT_ID 2>/dev/null || true
|
|
20
|
+
|
|
21
|
+
# Add version placeholder (user should update with actual value)
|
|
22
|
+
echo -n "postgresql://user:pass@host/${SERVICE_NAME}-${ENV}" | \
|
|
23
|
+
gcloud secrets versions add "$SECRET_NAME" \
|
|
24
|
+
--data-file=- \
|
|
25
|
+
--project=$PROJECT_ID
|
|
26
|
+
done
|
|
27
|
+
|
|
28
|
+
# Create shared secret key
|
|
29
|
+
SHARED_SECRET="${SERVICE_NAME}-shared-secret"
|
|
30
|
+
echo "Creating shared secret: $SHARED_SECRET"
|
|
31
|
+
|
|
32
|
+
gcloud secrets create "$SHARED_SECRET" \
|
|
33
|
+
--replication-policy="automatic" \
|
|
34
|
+
--project=$PROJECT_ID 2>/dev/null || true
|
|
35
|
+
|
|
36
|
+
# Generate random key
|
|
37
|
+
openssl rand -hex 32 | \
|
|
38
|
+
gcloud secrets versions add "$SHARED_SECRET" \
|
|
39
|
+
--data-file=- \
|
|
40
|
+
--project=$PROJECT_ID
|
|
41
|
+
|
|
42
|
+
echo ""
|
|
43
|
+
echo "Secrets created successfully!"
|
|
44
|
+
echo ""
|
|
45
|
+
echo "Grant access to Cloud Run SA:"
|
|
46
|
+
echo " gcloud secrets add-iam-policy-binding ${SERVICE_NAME}-database-url-dev \\"
|
|
47
|
+
echo " --member=\"serviceAccount:${PROJECT_ID}-run@developer.gserviceaccount.com\" \\"
|
|
48
|
+
echo " --role=\"roles/secretmanager.secretAccessor\""
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mergify
|
|
3
|
+
description: "Mergify merge-queue config, rules, PR delivery, and queue status. Use whenever a merge queue is involved — including plain-sounding asks about one PR ('watch #123 till it merges', 'where is #412 in the queue', 'checks are green, get it merged'): a `gh pr view`/`gh pr checks` poll cannot see a dequeue, so these need `mergify queue show` and the bundled watcher, never hand-rolled polling. Also: authoring or debugging `.mergify.yml`, queue rules, merge protections, batch size, the GitHub ruleset making merges queue-only; enqueue policy (`@mergifyio queue` vs `auto_merge_conditions`); a push dequeuing a queued PR; bypass actors; freezing a branch. Failures: a PR stuck, queued but never merging, or merged unqueued; CI green on GitHub but unmet in Mergify; a batch going red or bisecting; a check missing rather than failing. Outranks the vendor mergify-* command skills. NOT for GitHub Actions authoring (cloud-build), a failing CI job (cloud-debug), or GCP deploy pipelines (cloud-deploy)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Mergify Merge Queue
|
|
7
|
+
|
|
8
|
+
Merge queue setup that defaults to **held**: a PR merges only when someone
|
|
9
|
+
explicitly enqueues it, batches of 3 are tested together, and the branch is kept
|
|
10
|
+
fresh against base.
|
|
11
|
+
|
|
12
|
+
**This file is an index.** The doctrine lives in `references/`, one file per
|
|
13
|
+
lane, because agents read skills partially — with an explicit `limit`, or by
|
|
14
|
+
skimming until the content looks familiar — and anything below that cutoff is
|
|
15
|
+
not deprioritized, it is *absent*. Keeping this file short means the routing
|
|
16
|
+
survives a partial read even when the detail does not. That failure is why the
|
|
17
|
+
file is shaped this way: an agent asked to watch a PR read the old 469-line
|
|
18
|
+
version with `limit: 200`, never reached a single line about `dequeued`,
|
|
19
|
+
hand-rolled its own shell watcher, and reported a queued PR as dequeued.
|
|
20
|
+
|
|
21
|
+
So: **find your task below, then read that row's target.** Do not work from this
|
|
22
|
+
page alone — it deliberately does not contain enough to act on.
|
|
23
|
+
|
|
24
|
+
## Routing
|
|
25
|
+
|
|
26
|
+
| Your task | Read | The rule you must not miss |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| **Get an open or just-pushed PR merged** | [`references/watch-contract.md`](references/watch-contract.md#enqueue-before-you-watch) | Enqueue, *then* watch — the watch never enqueues, so a watch started on a PR nothing will enqueue can only end `STALLED`. A push to an already-queued PR dequeues it (`pull-request-updated`): the verdict is stale, re-validate before re-enqueuing. Several ready at once? Enqueue them together — next row. |
|
|
29
|
+
| **Deliver several ready PRs at once (a stack, an epic's units, a burst)** | [`references/watch-contract.md`](references/watch-contract.md#batch-delivery--enqueue-the-whole-ready-set-together) | Enqueue the whole ready set **together**, then watch: PRs riding one batch cost one CI run, and a red batch bisects to the culprit while the rest carry on. "If possible" is the point — a lone PR, or stragglers still waiting on review/CI/conflict, never hold the batch window open. |
|
|
30
|
+
| Author or change `.mergify.yml` | [`references/configuration.md`](references/configuration.md) | [Rule 1](#rule-1--fetch-the-docs-before-writing-config): never write config from memory; finish with `validate` **and** `simulate`. |
|
|
31
|
+
| **Watch a PR through the queue** | [`references/watch-contract.md`](references/watch-contract.md) | **[Rule 2](#rule-2--never-hand-roll-a-watcher): run the bundled watcher, never hand-roll one.** A watch observes a *progression*, not one state. |
|
|
32
|
+
| Check status — "where is my PR?", "why is it stuck?" | [`references/diagnosis.md`](references/diagnosis.md#querying-pr-and-queue-status) | `mergify queue show <PR> -v` names the single blocking condition; nothing else in the toolchain does. `gh pr checks` is CI truth, never queue truth — and a one-off read of the `queued`/`dequeued` labels is neither. |
|
|
33
|
+
| A PR merged without ever being queued | [`references/branch-protection.md`](references/branch-protection.md) | A required status check does **not** make the queue mandatory. Only the `update` rule does. |
|
|
34
|
+
| Set up, audit, freeze, or protect a branch | [`references/configuration.md`](references/configuration.md#setup-checklist), then [`references/branch-protection.md`](references/branch-protection.md) | Bypass is granted per *ruleset*, never per rule — so Mergify bypasses the required check too. |
|
|
35
|
+
| A batch keeps going red, bisects, or hangs on a check | [`references/traps.md`](references/traps.md) | An *absent* check reads as permanently unmet. That is not the same as failing. |
|
|
36
|
+
| Something broke and you want the known landmines | [`references/traps.md`](references/traps.md) | Each one has been hit in production; skim it before debugging from first principles. |
|
|
37
|
+
|
|
38
|
+
**Templates** — both required. The `.mergify.yml` decides what the queue *does*;
|
|
39
|
+
the ruleset is what stops anyone bypassing the queue entirely.
|
|
40
|
+
|
|
41
|
+
- [`assets/templates/mergify.yml`](assets/templates/mergify.yml) — copy to the
|
|
42
|
+
repo root as `.mergify.yml` and fill in the placeholders.
|
|
43
|
+
- [`assets/templates/ruleset.json`](assets/templates/ruleset.json) — the GitHub
|
|
44
|
+
branch ruleset that makes the queue mandatory.
|
|
45
|
+
|
|
46
|
+
**Scripts** — run these rather than reimplementing what they do:
|
|
47
|
+
|
|
48
|
+
| Script | Use |
|
|
49
|
+
|---|---|
|
|
50
|
+
| [`scripts/watch-pr-delivery.mjs`](scripts/watch-pr-delivery.mjs) | Watch an enqueued PR to a terminal verdict. See [Rule 2](#rule-2--never-hand-roll-a-watcher). |
|
|
51
|
+
| [`scripts/audit.mjs`](scripts/audit.mjs) | Audit a `.mergify.yml` against this skill's defaults — the shape `config validate` cannot check. |
|
|
52
|
+
|
|
53
|
+
## Non-Negotiable Rules
|
|
54
|
+
|
|
55
|
+
Three rules, two of them on this page rather than in a reference because they
|
|
56
|
+
prevent a *silent* failure — the config looks valid, the watcher looks like it
|
|
57
|
+
is working — and the third because it is the delivery default batching depends
|
|
58
|
+
on. A reader who takes nothing else from this skill should take all three.
|
|
59
|
+
|
|
60
|
+
### Rule 1 — Fetch the docs before writing config
|
|
61
|
+
|
|
62
|
+
The schema changes and options get deprecated, so do not write `.mergify.yml`
|
|
63
|
+
from memory:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
curl -s https://docs.mergify.com/mergify-configuration-schema.json -o /tmp/mergify-schema.json
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Reference pages: `https://docs.mergify.com/merge-queue/rules`,
|
|
70
|
+
`/merge-queue/batches`, `/merge-protections/setup`, `/commands`. Full index at
|
|
71
|
+
`https://docs.mergify.com/llms.txt`.
|
|
72
|
+
|
|
73
|
+
Then always finish with both:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
mergify config validate # schema check
|
|
77
|
+
mergify config simulate https://github.com/<owner>/<repo>/pull/<n> # behaviour check
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`validate` catches typos. `simulate` catches the config being *valid but wrong*
|
|
81
|
+
— which is the failure mode that actually costs hours.
|
|
82
|
+
|
|
83
|
+
### Rule 2 — Never hand-roll a watcher
|
|
84
|
+
|
|
85
|
+
Watching a PR through the queue means running
|
|
86
|
+
[`scripts/watch-pr-delivery.mjs`](scripts/watch-pr-delivery.mjs). Writing your
|
|
87
|
+
own `gh pr view` polling snippet — in shell, in a background-task command, in
|
|
88
|
+
anything — is refused, not merely discouraged.
|
|
89
|
+
|
|
90
|
+
The reason is that **a watch tracks a progression, not a state.** The verdict
|
|
91
|
+
depends on what the watcher has *already seen*: absent queue membership means
|
|
92
|
+
"not admitted yet" before queue entry and "dequeued" after it, and no single
|
|
93
|
+
snapshot distinguishes them. So the watcher must carry `seenQueued`, process-local
|
|
94
|
+
`everActive` (membership observed *this* run — `--seen-queued` alone is only a
|
|
95
|
+
resume hint and must not invent that observation), a re-read counter,
|
|
96
|
+
readable-vs-absent, and a change clock across every poll. A background runner that
|
|
97
|
+
re-runs a command each tick and reads its exit code is a stateless predicate
|
|
98
|
+
evaluator with nowhere to keep any of that — the shape is wrong before the code is.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
node ~/.agents/skills/mergify/scripts/watch-pr-delivery.mjs \
|
|
102
|
+
--repo <owner/repo> \
|
|
103
|
+
--pr <number>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Enqueue first — the watch never enqueues, so on a manual-delivery repo a watch
|
|
107
|
+
started on an unqueued PR can only end `STALLED`. Full state machine, the
|
|
108
|
+
`queued`/`dequeued` label semantics, the `"queued": true` JSON-shape trap, the
|
|
109
|
+
dequeue-reason routing table, and how to read the `phases` progression:
|
|
110
|
+
[`references/watch-contract.md`](references/watch-contract.md).
|
|
111
|
+
|
|
112
|
+
### Rule 3 — Enqueue the whole ready set together
|
|
113
|
+
|
|
114
|
+
Batch mode only pays when the PRs are **in the queue together**, and only the
|
|
115
|
+
deliverer controls that. When several PRs against the same base are ready — a
|
|
116
|
+
stack, an epic's independently-shippable units, a burst of related edits —
|
|
117
|
+
enqueue them all in one pass, then watch them together. One batch CI run for N
|
|
118
|
+
PRs; a red batch bisects to the culprit and the rest carry on. Serial delivery —
|
|
119
|
+
enqueue, watch to merge, then enqueue the next — quietly buys N batches for
|
|
120
|
+
work that could have ridden one, and is never faster. "If possible" is the
|
|
121
|
+
escape hatch, not the rule: a lone PR, or PRs still waiting on review/CI/
|
|
122
|
+
conflict, never hold the batch window open. Mechanics and the grouping rule
|
|
123
|
+
(what Mergify actually batches together) live in
|
|
124
|
+
[`references/watch-contract.md`](references/watch-contract.md#batch-delivery--enqueue-the-whole-ready-set-together).
|
|
125
|
+
|
|
126
|
+
## Related Skills
|
|
127
|
+
|
|
128
|
+
- [cloud-build](../cloud-build/SKILL.md) — the CI the queue gates on
|
|
129
|
+
- [cloud-debug](../cloud-debug/SKILL.md) — when the CI job itself is failing
|
|
130
|
+
- [resolve-issues](../../engineering/resolve-issues/SKILL.md) — consumes this skill's delivery
|
|
131
|
+
watch contract when it delivers merge-ready PRs through Mergify
|
|
132
|
+
- `mergify-config`, `mergify-merge-queue`, `mergify-merge-protections`, `mergify-ci`,
|
|
133
|
+
`mergify-stack` (vendor plugin skills) — reference for raw CLI invocation. They document
|
|
134
|
+
*how to call* the commands; this skill decides *what the config should say* and owns the
|
|
135
|
+
GitHub-side enforcement. On any conflict, this skill wins — it encodes decisions the
|
|
136
|
+
vendor docs are neutral about (held-by-default enqueue, batch 3, the `update`-rule
|
|
137
|
+
ruleset, the traps in `references/traps.md`).
|
|
138
|
+
|