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