@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,409 @@
1
+ # React 19 Server Action Patterns
2
+
3
+ Full-stack form pattern using `useActionState`, `serverAction` wrapper, `withCallbacks`, and Zod validation.
4
+
5
+ ---
6
+
7
+ ## Data Flow
8
+
9
+ ```
10
+ User submits form
11
+ |
12
+ handleSubmit (react-hook-form + zod)
13
+ |
14
+ startTransition -> formAction(payload)
15
+ |
16
+ withCallbacks intercepts call
17
+ |
18
+ Server action runs (isPending = true)
19
+ |- beforeAction (auth check)
20
+ |- Zod validation
21
+ |- DAL function execution
22
+ |- onSuccess (revalidatePath)
23
+ |
24
+ Returns ActionState
25
+ |
26
+ withCallbacks triggers success/error callback
27
+ |- onSuccess: toast, reset, close dialog
28
+ |- onError: toast error, rollback optimistic
29
+ |
30
+ Component re-renders
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Core Utilities
36
+
37
+ ### ActionState Type
38
+
39
+ ```typescript
40
+ // lib/server-action.ts
41
+ export type ActionState<T = unknown> = {
42
+ success: boolean;
43
+ message?: string;
44
+ error?: {
45
+ code: number;
46
+ detail?: string;
47
+ };
48
+ data?: T;
49
+ };
50
+ ```
51
+
52
+ ### withCallbacks
53
+
54
+ Wraps async actions with success/error callbacks:
55
+
56
+ ```typescript
57
+ type Callbacks<T> = {
58
+ onSuccess?: (state: T) => void;
59
+ onError?: (state: T) => void;
60
+ };
61
+
62
+ export function withCallbacks<Args extends unknown[], T extends ActionState>(
63
+ fn: (...args: Args) => Promise<T>,
64
+ callbacks: Callbacks<T>
65
+ ): (...args: Args) => Promise<T> {
66
+ return async (...args: Args) => {
67
+ const state = await fn(...args);
68
+
69
+ if (state?.success === true) {
70
+ callbacks.onSuccess?.(state);
71
+ } else if (state?.success === false) {
72
+ callbacks.onError?.(state);
73
+ }
74
+
75
+ return state;
76
+ };
77
+ }
78
+ ```
79
+
80
+ ### serverAction Factory
81
+
82
+ ```typescript
83
+ export type ServerActionOptions<TInput extends z.ZodTypeAny> = {
84
+ beforeAction?: () => Promise<void>;
85
+ onSuccess?: (data: z.infer<TInput>) => Promise<void>;
86
+ };
87
+
88
+ export function serverAction<TInput extends z.ZodTypeAny, TOutput>(
89
+ action: (data: z.infer<TInput>) => Promise<TOutput>,
90
+ schema: TInput,
91
+ options?: ServerActionOptions<TInput>
92
+ ) {
93
+ return async (
94
+ _previousState: unknown,
95
+ payload: z.infer<TInput>
96
+ ): Promise<ActionState<TOutput>> => {
97
+ try {
98
+ if (options?.beforeAction) {
99
+ await options.beforeAction();
100
+ }
101
+
102
+ const validated = await schema.safeParseAsync(payload);
103
+ if (!validated.success) {
104
+ return {
105
+ success: false,
106
+ message: "Validation failed",
107
+ error: { code: 422, detail: validated.error.message },
108
+ };
109
+ }
110
+
111
+ const result = await action(validated.data);
112
+
113
+ if (options?.onSuccess) {
114
+ await options.onSuccess(validated.data);
115
+ }
116
+
117
+ return { success: true, message: "Success", data: result };
118
+ } catch (error: unknown) {
119
+ console.error("Server action error:", error);
120
+ return {
121
+ success: false,
122
+ message: error instanceof Error ? error.message : "Error occurred",
123
+ error: { code: 500 },
124
+ };
125
+ }
126
+ };
127
+ }
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Authentication Hooks
133
+
134
+ ```typescript
135
+ // lib/require-auth.ts
136
+ "use server";
137
+
138
+ import { auth } from "@/lib/auth";
139
+ import { headers } from "next/headers";
140
+ import { cache } from "react";
141
+ import prisma from "@/lib/prisma";
142
+
143
+ export const getSession = cache(async () => {
144
+ return await auth.api.getSession({ headers: await headers() });
145
+ });
146
+
147
+ export async function requireAuth() {
148
+ const session = await getSession();
149
+ if (!session?.user?.id) {
150
+ throw new Error("Unauthorized");
151
+ }
152
+ }
153
+
154
+ export async function requireAdmin() {
155
+ const session = await getSession();
156
+ if (!session?.user?.id) throw new Error("Unauthorized");
157
+
158
+ const user = await prisma.user.findUnique({
159
+ where: { id: session.user.id },
160
+ select: { role: true },
161
+ });
162
+
163
+ if (user?.role !== "admin") throw new Error("Admin required");
164
+ }
165
+
166
+ export function requireOrgAccess(organizationId: string) {
167
+ return async () => {
168
+ const session = await getSession();
169
+ if (!session?.user?.id) throw new Error("Unauthorized");
170
+
171
+ const membership = await prisma.organizationMember.findFirst({
172
+ where: { userId: session.user.id, organizationId },
173
+ });
174
+
175
+ if (!membership) throw new Error("No access");
176
+ };
177
+ }
178
+ ```
179
+
180
+ ---
181
+
182
+ ## Server Action Definition
183
+
184
+ ```typescript
185
+ // app/dashboard/actions.ts
186
+ "use server";
187
+
188
+ import { revalidatePath } from "next/cache";
189
+ import { serverAction } from "@/lib/server-action";
190
+ import { requireAuth, requireAdmin } from "@/lib/require-auth";
191
+ import { createOrganizationDAL, deleteOrganizationDAL } from "@/dal/organization";
192
+ import { createOrgSchema, deleteOrgSchema } from "@/types/organization";
193
+
194
+ // Basic with auth + revalidation
195
+ export const createOrganization = serverAction(
196
+ createOrganizationDAL,
197
+ createOrgSchema,
198
+ {
199
+ beforeAction: requireAuth,
200
+ onSuccess: async () => revalidatePath("/organization"),
201
+ }
202
+ );
203
+
204
+ // Admin-only
205
+ export const deleteOrganization = serverAction(
206
+ deleteOrganizationDAL,
207
+ deleteOrgSchema,
208
+ {
209
+ beforeAction: requireAdmin,
210
+ onSuccess: async () => revalidatePath("/organization"),
211
+ }
212
+ );
213
+ ```
214
+
215
+ ---
216
+
217
+ ## Client Component: Basic Form
218
+
219
+ ```tsx
220
+ "use client";
221
+
222
+ import { startTransition, useActionState, useMemo, useState } from "react";
223
+ import { useForm } from "react-hook-form";
224
+ import { zodResolver } from "@hookform/resolvers/zod";
225
+ import { toast } from "sonner";
226
+ import { z } from "zod";
227
+ import { withCallbacks } from "@/lib/server-action";
228
+
229
+ const schema = z.object({
230
+ name: z.string().min(1),
231
+ email: z.string().email(),
232
+ });
233
+ type FormData = z.infer<typeof schema>;
234
+
235
+ interface Props {
236
+ action: (state: unknown, payload: FormData) => Promise<ActionState>;
237
+ onSuccess?: () => void;
238
+ }
239
+
240
+ export function CreateUserForm({ action, onSuccess }: Props) {
241
+ const { register, handleSubmit, reset, formState: { errors } } = useForm<FormData>({
242
+ resolver: zodResolver(schema),
243
+ });
244
+ const [open, setOpen] = useState(false);
245
+
246
+ // 1. Wrap with callbacks (memoize when deps change)
247
+ const wrappedAction = useMemo(
248
+ () => withCallbacks(action, {
249
+ onSuccess: (state) => {
250
+ toast.success(state.message || "Created");
251
+ reset();
252
+ onSuccess?.();
253
+ setOpen(false);
254
+ },
255
+ onError: (state) => {
256
+ toast.error(state.message || "Failed");
257
+ },
258
+ }),
259
+ [action, reset, onSuccess]
260
+ );
261
+
262
+ // 2. Use wrapped action
263
+ const [, formAction, isPending] = useActionState(wrappedAction, undefined);
264
+
265
+ // 3. Submit with startTransition
266
+ function onSubmit(data: FormData) {
267
+ startTransition(() => formAction(data));
268
+ }
269
+
270
+ return (
271
+ <form onSubmit={handleSubmit(onSubmit)}>
272
+ <input {...register("name")} />
273
+ {errors.name && <p>{errors.name.message}</p>}
274
+ <input {...register("email")} type="email" />
275
+ {errors.email && <p>{errors.email.message}</p>}
276
+ <button disabled={isPending}>Save</button>
277
+ </form>
278
+ );
279
+ }
280
+ ```
281
+
282
+ ---
283
+
284
+ ## Optimistic Updates
285
+
286
+ ```tsx
287
+ "use client";
288
+
289
+ import { startTransition, useActionState, useState } from "react";
290
+ import { withCallbacks } from "@/lib/server-action";
291
+ import { toast } from "sonner";
292
+
293
+ export function StatusToggle({ initialEnabled, action }) {
294
+ const [enabled, setEnabled] = useState(initialEnabled);
295
+ const [previousEnabled, setPreviousEnabled] = useState(initialEnabled);
296
+
297
+ const [, toggleAction, isPending] = useActionState(
298
+ withCallbacks(action, {
299
+ onSuccess: () => toast.success("Updated"),
300
+ onError: (result) => {
301
+ toast.error(result.message);
302
+ setEnabled(previousEnabled); // Rollback
303
+ },
304
+ }),
305
+ null
306
+ );
307
+
308
+ function onToggle() {
309
+ setPreviousEnabled(enabled); // Save for rollback
310
+ setEnabled(!enabled); // Optimistic update
311
+
312
+ startTransition(() => {
313
+ toggleAction({ enabled: !enabled });
314
+ });
315
+ }
316
+
317
+ return (
318
+ <button onClick={onToggle} disabled={isPending}>
319
+ {enabled ? "Enabled" : "Disabled"}
320
+ </button>
321
+ );
322
+ }
323
+ ```
324
+
325
+ ---
326
+
327
+ ## Auth Forms (Direct Client)
328
+
329
+ For auth client calls (not DAL):
330
+
331
+ ```tsx
332
+ "use client";
333
+
334
+ import { startTransition, useActionState, useEffect } from "react";
335
+ import { useRouter } from "next/navigation";
336
+ import { useForm } from "react-hook-form";
337
+ import { zodResolver } from "@hookform/resolvers/zod";
338
+ import { z } from "zod";
339
+ import { authClient } from "@/lib/auth-client";
340
+ import type { ActionState } from "@/lib/server-action";
341
+
342
+ const loginSchema = z.object({
343
+ email: z.string().email(),
344
+ password: z.string().min(8),
345
+ });
346
+
347
+ export function LoginForm() {
348
+ const router = useRouter();
349
+ const { handleSubmit, register } = useForm({
350
+ resolver: zodResolver(loginSchema),
351
+ });
352
+
353
+ const [state, formAction, isPending] = useActionState<ActionState, FormData>(
354
+ async (prev, data) => {
355
+ const result = await authClient.signIn.email(data);
356
+ if (result.error) {
357
+ return { success: false, message: result.error.message };
358
+ }
359
+ return { success: true, data: result.data };
360
+ },
361
+ { success: false }
362
+ );
363
+
364
+ useEffect(() => {
365
+ if (state.success) router.push("/dashboard");
366
+ }, [state, router]);
367
+
368
+ function onSubmit(data) {
369
+ startTransition(() => formAction(data));
370
+ }
371
+
372
+ return (
373
+ <form onSubmit={handleSubmit(onSubmit)}>
374
+ <input {...register("email")} type="email" />
375
+ <input {...register("password")} type="password" />
376
+ {!state.success && state.message && <p>{state.message}</p>}
377
+ <button disabled={isPending}>Log in</button>
378
+ </form>
379
+ );
380
+ }
381
+ ```
382
+
383
+ ---
384
+
385
+ ## Key Rules
386
+
387
+ | Rule | Implementation |
388
+ |------|----------------|
389
+ | Always use `startTransition` | Prevents UI blocking |
390
+ | Wrap with `useMemo` | When callbacks have changing deps |
391
+ | Pass action as prop | Dependency injection |
392
+ | Zod validation | Server in serverAction, client in react-hook-form |
393
+ | Toast in withCallbacks | Keep UI feedback in callbacks |
394
+ | Revalidate in serverAction | Cache invalidation via onSuccess |
395
+ | Optimistic updates | Store previous, update UI, rollback on error |
396
+ | Auth in beforeAction | Use requireAuth/requireAdmin hooks |
397
+
398
+ ---
399
+
400
+ ## When to Use Each Approach
401
+
402
+ | Use Case | Approach |
403
+ |----------|----------|
404
+ | Database mutations | `serverAction` + DAL |
405
+ | Auth client calls | Inline async in `useActionState` |
406
+ | API routes | Inline async in `useActionState` |
407
+ | Sensitive operations | `serverAction` with `beforeAction` |
408
+ | Cookie/session access | `serverAction` |
409
+ | Public forms | `serverAction` without `beforeAction` |
@@ -0,0 +1,3 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 1AboveIO
@@ -0,0 +1,180 @@
1
+ ---
2
+ name: prisma-setup
3
+ description: Use when adding or debugging Prisma with PostgreSQL, Next.js, or Turborepo, including schema.prisma, prisma.config.ts, client generation, migrations, seeds, relations, adapters, and DAL/database-layer setup. Triggers on phrases like "Prisma schema", "prisma migrate", "schema.prisma", "seed the database", "PrismaClient error", "relation issue", or "database layer".
4
+ ---
5
+
6
+ # Prisma v7 Setup Guide
7
+
8
+ **Prisma ORM v7** | **PostgreSQL** | **@prisma/adapter-pg**
9
+
10
+ ## Reference Guides
11
+
12
+ - [Next.js + Prisma v7](nextjs.md) - Standalone Next.js setup
13
+ - [Turborepo + Prisma v7](turborepo.md) - Monorepo with shared DB package
14
+
15
+ ---
16
+
17
+ ## Critical Prisma v7 Requirements
18
+
19
+ ### Generator Configuration
20
+
21
+ ```prisma
22
+ generator client {
23
+ provider = "prisma-client" # NOT "prisma-client-js"
24
+ output = "../app/generated/prisma" # Custom output REQUIRED
25
+ }
26
+
27
+ datasource db {
28
+ provider = "postgresql"
29
+ # NO url here - moved to prisma.config.ts
30
+ }
31
+ ```
32
+
33
+ ### Client Import Path
34
+
35
+ ```typescript
36
+ // CORRECT - include /client at the end
37
+ import { PrismaClient } from "../app/generated/prisma/client"
38
+
39
+ // WRONG - missing /client
40
+ import { PrismaClient } from "../app/generated/prisma"
41
+
42
+ // WRONG - default location
43
+ import { PrismaClient } from "@prisma/client"
44
+ ```
45
+
46
+ ### Prisma Config (prisma.config.ts)
47
+
48
+ ```typescript
49
+ import "dotenv/config" // REQUIRED at top
50
+ import { defineConfig, env } from "prisma/config"
51
+
52
+ export default defineConfig({
53
+ schema: "prisma/schema.prisma",
54
+ migrations: {
55
+ path: "prisma/migrations",
56
+ },
57
+ // NO engine property - removed in v7
58
+ datasource: {
59
+ url: env("DATABASE_URL"),
60
+ },
61
+ })
62
+ ```
63
+
64
+ ### Client Singleton
65
+
66
+ ```typescript
67
+ // lib/prisma.ts
68
+ import { PrismaClient } from "../app/generated/prisma/client"
69
+ import { PrismaPg } from "@prisma/adapter-pg"
70
+
71
+ const adapter = new PrismaPg({
72
+ connectionString: process.env.DATABASE_URL!,
73
+ })
74
+
75
+ const globalForPrisma = global as unknown as { prisma: PrismaClient }
76
+
77
+ const prisma = globalForPrisma.prisma || new PrismaClient({ adapter })
78
+
79
+ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma
80
+
81
+ export default prisma
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Deprecated Patterns (NEVER USE)
87
+
88
+ ```typescript
89
+ // DEPRECATED - prisma-client-js
90
+ generator client {
91
+ provider = "prisma-client-js"
92
+ }
93
+
94
+ // DEPRECATED - url in datasource
95
+ datasource db {
96
+ provider = "postgresql"
97
+ url = env("DATABASE_URL")
98
+ }
99
+
100
+ // DEPRECATED - engine property
101
+ export default defineConfig({
102
+ engine: "classic", // REMOVED in v7
103
+ })
104
+
105
+ // DEPRECATED - accelerateUrl
106
+ new PrismaClient({
107
+ accelerateUrl: process.env.DATABASE_URL,
108
+ })
109
+
110
+ // DEPRECATED - Accelerate extension (for TCP connections)
111
+ import { withAccelerate } from "@prisma/extension-accelerate"
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Version Requirements
117
+
118
+ - **Node.js:** 20.19+ (Node 18 NOT supported)
119
+ - **TypeScript:** 5.4.0+
120
+ - **Prisma:** 7.0.0+
121
+
122
+ ---
123
+
124
+ ## Installation
125
+
126
+ ```bash
127
+ # Dev dependencies
128
+ npm install prisma tsx --save-dev
129
+
130
+ # Production dependencies
131
+ npm install @prisma/adapter-pg @prisma/client dotenv
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Database URL
137
+
138
+ Must use standard TCP URL:
139
+
140
+ ```env
141
+ # CORRECT
142
+ DATABASE_URL="postgres://user:pass@host:5432/db"
143
+
144
+ # WRONG - HTTP URL
145
+ DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/..."
146
+ ```
147
+
148
+ ---
149
+
150
+ ## Common Commands
151
+
152
+ ```bash
153
+ # Generate client
154
+ npx prisma generate
155
+
156
+ # Push schema (no migrations)
157
+ npx prisma db push
158
+
159
+ # Create migration
160
+ npx prisma migrate dev --name your_migration
161
+
162
+ # Open Studio
163
+ npx prisma studio
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Verification Checklist
169
+
170
+ Before writing any Prisma code, verify:
171
+
172
+ 1. `provider = "prisma-client"` (not prisma-client-js)
173
+ 2. Custom `output` path specified
174
+ 3. Import from `generated/prisma/client` (with /client)
175
+ 4. `import "dotenv/config"` in prisma.config.ts
176
+ 5. Using `@prisma/adapter-pg` with `adapter` property
177
+ 6. No `url` in datasource block
178
+ 7. No `engine` property in config
179
+ 8. DATABASE_URL uses `postgres://` (not `prisma+postgres://`)
180
+ 9. All DB operations wrapped in try-catch