@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,451 @@
1
+ # IAM Patterns
2
+
3
+ IAM configuration for GCP resources, service accounts, and access control.
4
+
5
+ ## Service Account Operations
6
+
7
+ ### Create Service Account
8
+
9
+ ```bash
10
+ gcloud iam service-accounts create $NAME \
11
+ --display-name="$DISPLAY_NAME" \
12
+ --description="$DESCRIPTION" \
13
+ --project=$PROJECT_ID
14
+ ```
15
+
16
+ ### List Service Accounts
17
+
18
+ ```bash
19
+ # All service accounts in project
20
+ gcloud iam service-accounts list --project=$PROJECT_ID
21
+
22
+ # Filter by email pattern
23
+ gcloud iam service-accounts list \
24
+ --filter="email:~$PATTERN" \
25
+ --project=$PROJECT_ID
26
+ ```
27
+
28
+ ### Get Service Account Email
29
+
30
+ ```bash
31
+ # From name
32
+ SA_EMAIL="$NAME@$PROJECT_ID.iam.gserviceaccount.com"
33
+
34
+ # From project number
35
+ SA_EMAIL="$NAME@$PROJECT_NUMBER.iam.gserviceaccount.com"
36
+ ```
37
+
38
+ ---
39
+
40
+ ## Role Bindings
41
+
42
+ ### Grant Role to Service Account
43
+
44
+ ```bash
45
+ gcloud projects add-iam-policy-binding $PROJECT_ID \
46
+ --member="serviceAccount:$SA_EMAIL" \
47
+ --role="roles/$ROLE"
48
+ ```
49
+
50
+ ### Grant Role to User
51
+
52
+ ```bash
53
+ gcloud projects add-iam-policy-binding $PROJECT_ID \
54
+ --member="user:$EMAIL" \
55
+ --role="roles/$ROLE"
56
+ ```
57
+
58
+ ### Grant Role to Group
59
+
60
+ ```bash
61
+ gcloud projects add-iam-policy-binding $PROJECT_ID \
62
+ --member="group:$EMAIL" \
63
+ --role="roles/$ROLE"
64
+ ```
65
+
66
+ ### Grant Role to Domain
67
+
68
+ Grant access to all users in a Google Workspace domain:
69
+
70
+ ```bash
71
+ # Grant domain-wide access (e.g., all $YOUR_ORG employees)
72
+ gcloud projects add-iam-policy-binding $PROJECT_ID \
73
+ --member="domain:$YOUR_DOMAIN" \
74
+ --role="roles/$ROLE"
75
+
76
+ # Common roles for domain access
77
+ # roles/viewer - Read-only access
78
+ # roles/browser - Can browse resources
79
+ # roles/editor - Read/write access
80
+ # roles/owner - Full ownership (use with caution)
81
+ ```
82
+
83
+ ### Remove Role
84
+
85
+ ```bash
86
+ gcloud projects remove-iam-policy-binding $PROJECT_ID \
87
+ --member="serviceAccount:$SA_EMAIL" \
88
+ --role="roles/$ROLE"
89
+ ```
90
+
91
+ ---
92
+
93
+ ## Common Roles
94
+
95
+ | Role | Use Case |
96
+ |------|----------|
97
+ | `roles/secretmanager.secretAccessor` | Read secrets from Secret Manager |
98
+ | `roles/secretmanager.admin` | Create/manage secrets |
99
+ | `roles/iam.serviceAccountOpenIdTokenCreator` | Mint ID tokens for SAs |
100
+ | `roles/iam.serviceAccountKeyAdmin` | Create/manage SA keys |
101
+ | `roles/run.invoker` | Invoke Cloud Run services |
102
+ | `roles/run.admin` | Manage Cloud Run resources |
103
+ | `roles/cloudbuild.builds.builder` | Run Cloud Build builds |
104
+ | `roles/clouddeploy.operator` | Manage Cloud Deploy pipelines |
105
+ | `roles/composer.viewer` | View Airflow environments |
106
+ | `roles/composer.worker` | Run Airflow tasks |
107
+ | `roles/iap.httpsResourceAccessor` | Access IAP-protected resources |
108
+ | `roles/iap.httpsResourceAdmin` | Manage IAP settings |
109
+ | `roles/cloudsql.client` | Connect to Cloud SQL |
110
+ | `roles/storage.objectViewer` | Read from GCS |
111
+ | `roles/storage.objectAdmin` | Manage GCS objects |
112
+
113
+ ---
114
+
115
+ ## Token Minting
116
+
117
+ ### Mint ID Token (IAMCredentials)
118
+
119
+ ```bash
120
+ # Get ID token for service account
121
+ gcloud auth print-identity-token \
122
+ --audiences=$AUDIENCE \
123
+ --impersonate-service-account=$SA_EMAIL
124
+ ```
125
+
126
+ ### Sign JWT with Service Account
127
+
128
+ ```bash
129
+ # Create claims file
130
+ cat > /tmp/claims.json <<EOF
131
+ {
132
+ "iss": "$SA_EMAIL",
133
+ "sub": "$SA_EMAIL",
134
+ "aud": "$SERVICE_URL/*",
135
+ "iat": $(date +%s),
136
+ "exp": $(($(date +%s) + 600))
137
+ }
138
+ EOF
139
+
140
+ # Sign JWT
141
+ gcloud iam service-accounts sign-jwt /tmp/claims.json /tmp/signed.jwt \
142
+ --iam-account=$SA_EMAIL
143
+
144
+ # Extract token
145
+ TOKEN=$(cat /tmp/signed.jwt)
146
+ ```
147
+
148
+ ---
149
+
150
+ ## IAP Access Patterns
151
+
152
+ ### Cloud Run Native IAP
153
+
154
+ **Preferred method** — no load balancer or NEG required. Cloud Run supports IAP natively via the `--iap` flag (beta).
155
+
156
+ ```bash
157
+ # Enable IAP on a new Cloud Run service
158
+ gcloud beta run deploy $SERVICE \
159
+ --region=us-central1 \
160
+ --image=$IMAGE \
161
+ --no-allow-unauthenticated \
162
+ --iap
163
+
164
+ # Enable IAP on an existing service
165
+ gcloud beta run services update $SERVICE \
166
+ --region=us-central1 \
167
+ --iap
168
+ ```
169
+
170
+ **Grant access** via `iap web` with `--resource-type=cloud-run`:
171
+
172
+ ```bash
173
+ # Grant access to entire domain (e.g., all $YOUR_ORG employees)
174
+ gcloud beta iap web add-iam-policy-binding \
175
+ --resource-type=cloud-run \
176
+ --service=$SERVICE \
177
+ --region=us-central1 \
178
+ --member="domain:$YOUR_DOMAIN" \
179
+ --role="roles/iap.httpsResourceAccessor" \
180
+ --project=$PROJECT_ID
181
+
182
+ # Grant access to specific user
183
+ gcloud beta iap web add-iam-policy-binding \
184
+ --resource-type=cloud-run \
185
+ --service=$SERVICE \
186
+ --region=us-central1 \
187
+ --member="user:$EMAIL" \
188
+ --role="roles/iap.httpsResourceAccessor" \
189
+ --project=$PROJECT_ID
190
+
191
+ # Grant access to service account
192
+ gcloud beta iap web add-iam-policy-binding \
193
+ --resource-type=cloud-run \
194
+ --service=$SERVICE \
195
+ --region=us-central1 \
196
+ --member="serviceAccount:$SA_EMAIL" \
197
+ --role="roles/iap.httpsResourceAccessor" \
198
+ --project=$PROJECT_ID
199
+ ```
200
+
201
+ **Check IAP policy:**
202
+
203
+ ```bash
204
+ gcloud beta iap web get-iam-policy \
205
+ --resource-type=cloud-run \
206
+ --service=$SERVICE \
207
+ --region=us-central1 \
208
+ --project=$PROJECT_ID
209
+ ```
210
+
211
+ **In Cloud Build (`cloudbuild.yaml`):**
212
+
213
+ ```yaml
214
+ - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
215
+ entrypoint: bash
216
+ args:
217
+ - '-c'
218
+ - |
219
+ gcloud beta run deploy $SERVICE \
220
+ --image=$IMAGE \
221
+ --region=$REGION \
222
+ --no-allow-unauthenticated \
223
+ --iap
224
+ ```
225
+
226
+ **Enable IAP on Cloud Run (via gcloud run):**
227
+
228
+ ```bash
229
+ # Deploy with --no-allow-unauthenticated to block public access
230
+ gcloud run deploy {service}-{env} \
231
+ --image=$LOCATION-docker.pkg.dev/$PROJECT_ID/{repo}/{service}:latest \
232
+ --region=$LOCATION \
233
+ --platform=managed \
234
+ --no-allow-unauthenticated
235
+
236
+ # Enable IAP protection
237
+ gcloud beta run services update {service}-{env} \
238
+ --region=$LOCATION \
239
+ --iap
240
+ ```
241
+
242
+ **Grant IAP access via gcloud run:**
243
+
244
+ ```bash
245
+ # Grant $YOUR_ORG domain users access to IAP-protected Cloud Run
246
+ gcloud run services add-iam-policy-binding {service}-{env} \
247
+ --project=$PROJECT_ID \
248
+ --region=$LOCATION \
249
+ --member="domain:$YOUR_DOMAIN" \
250
+ --role="roles/iap.httpsResourceAccessor"
251
+
252
+ # Grant specific service account for E2E runners or CI/CD
253
+ gcloud run services add-iam-policy-binding {service}-{env} \
254
+ --project=$PROJECT_ID \
255
+ --region=$LOCATION \
256
+ --member="serviceAccount:e2e-runner@$PROJECT_ID.iam.gserviceaccount.com" \
257
+ --role="roles/run.invoker"
258
+ ```
259
+
260
+ **Known limitations:**
261
+ - Project must be within a Google Cloud organization
262
+ - Identities must be from within the same organization
263
+ - Cannot configure IAP on both a load balancer and the Cloud Run service
264
+ - Some integrations (e.g., Pub/Sub) may not work with IAP enabled
265
+
266
+ ### Load Balancer-Based IAP (Legacy)
267
+
268
+ Use only when Cloud Run native IAP is not suitable (e.g., custom domain SSL, multi-service routing).
269
+
270
+ ```bash
271
+ # Grant IAP access on backend service
272
+ gcloud iap web add-iam-policy-binding \
273
+ --project=$PROJECT_ID \
274
+ --resource-type=backend-services \
275
+ --service=BACKEND_SERVICE_NAME \
276
+ --member="serviceAccount:$SA_EMAIL" \
277
+ --role="roles/iap.httpsResourceAccessor"
278
+
279
+ # Grant to user
280
+ gcloud iap web add-iam-policy-binding \
281
+ --project=$PROJECT_ID \
282
+ --resource-type=backend-services \
283
+ --service=BACKEND_SERVICE_NAME \
284
+ --member="user:$EMAIL" \
285
+ --role="roles/iap.httpsResourceAccessor"
286
+
287
+ # Grant to domain
288
+ gcloud iap web add-iam-policy-binding \
289
+ --project=$PROJECT_ID \
290
+ --resource-type=backend-services \
291
+ --service=BACKEND_SERVICE_NAME \
292
+ --member="domain:$YOUR_DOMAIN" \
293
+ --role="roles/iap.httpsResourceAccessor"
294
+
295
+ # Get IAP OAuth Client ID
296
+ gcloud iap web describe \
297
+ --project=$PROJECT_ID \
298
+ --resource-type=backend-services \
299
+ --service=BACKEND_SERVICE_NAME \
300
+ --format="value(oauth2ClientId)"
301
+ ```
302
+
303
+ ### Service Account Authentication (JWT Pattern)
304
+
305
+ For E2E tests, automated runners, or services that need to call IAP-protected Cloud Run endpoints programmatically using a service account signed JWT:
306
+
307
+ **1. Grant IAP access to the service account**
308
+
309
+ ```bash
310
+ # Allow the service account to access the IAP-protected Cloud Run service
311
+ gcloud beta iap web add-iam-policy-binding \
312
+ --member="serviceAccount:$SA_EMAIL" \
313
+ --role="roles/iap.httpsResourceAccessor" \
314
+ --resource-type=cloud-run \
315
+ --service={service}-{env} \
316
+ --project=$PROJECT_ID \
317
+ --region=$LOCATION
318
+ ```
319
+
320
+ **2. Create and sign JWT payload**
321
+
322
+ ```bash
323
+ # Define variables
324
+ SA_EMAIL="e2e-runner@$PROJECT_ID.iam.gserviceaccount.com"
325
+ BASE_URL="https://{service}-{env}-$LOCATION.a.run.app"
326
+
327
+ # Create JWT payload
328
+ JWT_PAYLOAD=$(printf '{"iss":"%s","sub":"%s","aud":"%s/*","iat":%d,"exp":%d}' \
329
+ "$SA_EMAIL" "$SA_EMAIL" "$BASE_URL" "$(date +%s)" "$(($(date +%s)+3600))")
330
+
331
+ # Sign via IAMCredentials signJwt API
332
+ # gcloud sign-jwt already returns a valid JWT (header.payload.signature)
333
+ # NO base64 encoding needed - that would double-encode it!
334
+ SIGNED_JWT=$(gcloud iam service-accounts sign-jwt \
335
+ --iam-account="$SA_EMAIL" \
336
+ /dev/stdin /dev/stdout <<< "$JWT_PAYLOAD")
337
+ ```
338
+
339
+ **Key JWT claims:**
340
+ - `iss` = service account email
341
+ - `sub` = service account email
342
+ - `aud` = `${BASE_URL}/*` (must include the wildcard)
343
+ - `iat` / `exp` = now / now + 1 hour
344
+
345
+ **3. Use as Bearer token in Playwright**
346
+
347
+ ```typescript
348
+ // In test setup / globalSetup
349
+ const token = process.env.IAP_ID_TOKEN;
350
+ const context = await browser.newContext({
351
+ extraHTTPHeaders: {
352
+ 'Authorization': `Bearer ${token}`,
353
+ },
354
+ });
355
+ ```
356
+
357
+ **4. Preflight check (recommended)**
358
+
359
+ ```bash
360
+ # Add a GET to ${BASE_URL}/ before running tests — fail fast if IAP token is rejected
361
+ curl -H "Authorization: Bearer $SIGNED_JWT" "${BASE_URL}/"
362
+ ```
363
+
364
+ **Why this pattern:**
365
+ - Uses `gcloud iam service-accounts sign-jwt` via IAMCredentials API
366
+ - Signed JWT directly as Bearer token (no OAuth exchange needed)
367
+ - Works for E2E tests, CI/CD runners, and programmatic access
368
+ - Service account can sign JWT without storing private keys
369
+
370
+ **Common mistake:** Using the metadata server's ID token instead of a signed JWT, or setting `aud` to the base URL without the wildcard.
371
+ ---
372
+
373
+ ## Cloud Run SA Permissions
374
+
375
+ ### Grant Cloud Run Invoker
376
+
377
+ ```bash
378
+ gcloud run services add-iam-policy-binding $SERVICE \
379
+ --project=$PROJECT_ID \
380
+ --region=us-central1 \
381
+ --member="serviceAccount:$SA_EMAIL" \
382
+ --role="roles/run.invoker"
383
+ ```
384
+
385
+ ### Grant Cloud Run Admin (Deployments)
386
+
387
+ ```bash
388
+ gcloud run services add-iam-policy-binding $SERVICE \
389
+ --project=$PROJECT_ID \
390
+ --region=us-central1 \
391
+ --member="serviceAccount:$SA_EMAIL" \
392
+ --role="roles/run.admin"
393
+ ```
394
+
395
+ ---
396
+
397
+ ## Cloud SQL Access
398
+
399
+ ### Connect with SA (Automatic IAM Auth)
400
+
401
+ ```bash
402
+ # Grant Cloud SQL Client role
403
+ gcloud projects add-iam-policy-binding $PROJECT_ID \
404
+ --member="serviceAccount:$SA_EMAIL" \
405
+ --role="roles/cloudsql.client"
406
+ ```
407
+
408
+ ### Generate Connection String (Cloud SQL Auth Proxy)
409
+
410
+ ```bash
411
+ # Format: /cloudsql/INSTANCE_CONNECTION_NAME
412
+ CONN_STRING="/cloudsql/$PROJECT:$REGION:$INSTANCE"
413
+
414
+ # Use in DATABASE_URL
415
+ postgresql://$USER:$PASSWORD@localhost/$DB?host=$CONN_STRING
416
+ ```
417
+
418
+ ---
419
+
420
+ ## Debug IAM Issues
421
+
422
+ ### Check Effective Policy
423
+
424
+ ```bash
425
+ # For service account
426
+ gcloud iam service-accounts get-iam-policy $SA_EMAIL
427
+
428
+ # For project
429
+ gcloud projects get-iam-policy $PROJECT_ID
430
+
431
+ # For specific resource
432
+ gcloud run services get-iam-policy $SERVICE --region=us-central1
433
+ ```
434
+
435
+ ### Test Permissions
436
+
437
+ ```bash
438
+ # Test if SA can perform action
439
+ gcloud auth list --impersonate-service-account=$SA_EMAIL
440
+ gcloud run services describe $SERVICE --region=us-central1
441
+ ```
442
+
443
+ ### Common Permission Errors
444
+
445
+ | Error | Missing Permission | Fix |
446
+ |-------|-------------------|-----|
447
+ | `iam.serviceAccounts.getOpenIdToken` | Token creator | Add `roles/iam.serviceAccountOpenIdTokenCreator` |
448
+ | `secretmanager.versions.access` | Secret accessor | Add `roles/secretmanager.secretAccessor` |
449
+ | `run.services.invoke` | Run invoker | Add `roles/run.invoker` |
450
+ | `cloudsql.instances.connect` | SQL client | Add `roles/cloudsql.client` |
451
+ | `iap.web.getIamPolicy` | IAP access | Add `roles/iap.httpsResourceAccessor` |