@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,4 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from './watch-pr-delivery-core.mjs'
3
+
4
+ runCli(process.argv.slice(2)).then((code) => { process.exitCode = code })
@@ -0,0 +1,3 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 1AboveIO
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: podman
3
+ description: "Debug, design, or fix Podman: rootless/rootful containers, pods, podman-compose, the socket and systemd services, Docker-compatible API (DOCKER_HOST/CONTAINER_HOST), networking, volumes, SELinux labels, Docker migration, and CI/SSH provisioning of rootless sockets (user lingering, XDG_RUNTIME_DIR). Covers FailedToOpenSocket and systemctl --user DBUS/XDG errors."
4
+ ---
5
+
6
+ # Podman Operations
7
+
8
+ ## Core Rule
9
+
10
+ Treat Podman as its own container runtime first. Use Docker-compatible behavior deliberately, and always verify whether a problem belongs to Podman itself, the compatibility socket/API, networking, storage, SELinux, or compose translation.
11
+
12
+ ## Decision Path
13
+
14
+ 1. Classify the environment.
15
+ - Rootless or rootful.
16
+ - Direct `podman` CLI, `podman-compose`, or Docker-compatible API.
17
+ - Single containers, pods, or compose-managed services.
18
+ - For the triage checklist, read [troubleshooting.md](references/troubleshooting.md).
19
+
20
+ 2. If Docker-compatible tooling is involved, verify the socket/API layer.
21
+ - Prefer explicit `DOCKER_HOST` over assuming `/var/run/docker.sock`.
22
+ - Mount socket directories instead of socket files when a container needs access to a rootless socket.
23
+ - Keep the API service lifetime explicit when long-lived clients depend on it.
24
+ - A systemd `User=` **system** service does not get `XDG_RUNTIME_DIR`; set it (or `CONTAINER_HOST`/`DOCKER_HOST`) in a unit drop-in to reach that user's rootless socket. Provisioning `systemctl --user` over SSH needs explicit `XDG_RUNTIME_DIR` + `DBUS_SESSION_BUS_ADDRESS` and lingering on.
25
+ - For details, read [rootless-services-and-sockets.md](references/rootless-services-and-sockets.md).
26
+
27
+ 3. If ports or connectivity fail, inspect Podman networking before changing application code.
28
+ - Check port publishing, rootless networking backend, host/container address assumptions, pod membership, and DNS.
29
+ - For details, read [networking-and-ports.md](references/networking-and-ports.md).
30
+
31
+ 4. If compose behavior differs from Docker Compose, isolate compose translation from runtime behavior.
32
+ - Compare generated containers, pods, networks, volume mounts, environment variables, and health checks.
33
+ - For details, read [compose-compatibility.md](references/compose-compatibility.md).
34
+
35
+ ## Fast Checks
36
+
37
+ Inspect runtime mode and version:
38
+
39
+ ```bash
40
+ podman info
41
+ podman version
42
+ podman system connection list
43
+ ```
44
+
45
+ Inspect containers, pods, networks, and published ports:
46
+
47
+ ```bash
48
+ podman ps -a
49
+ podman pod ps
50
+ podman network ls
51
+ podman port --all
52
+ ```
53
+
54
+ Verify the rootless socket from the host:
55
+
56
+ ```bash
57
+ systemctl --user status podman.socket podman.service
58
+ test -S /run/user/$(id -u)/podman/podman.sock
59
+ curl --unix-socket /run/user/$(id -u)/podman/podman.sock \
60
+ http://localhost/v4.0.0/libpod/info
61
+ ```
62
+
63
+ ## Review Heuristics
64
+
65
+ - Do not hide Podman runtime issues by hard-coding fixed host ports or privileged containers.
66
+ - Do not mount a rootless socket file directly when the socket may be restarted; mount the socket directory.
67
+ - Do not assume Docker Compose behavior maps exactly to `podman-compose`; inspect the realized containers.
68
+ - Persist socket, service, SELinux, and network fixes in provisioning or preflight code.
69
+ - Validate fixes with live `podman` commands, not only static config review.
70
+
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Podman"
3
+ short_description: "Podman runtime diagnostics"
4
+ default_prompt: "Use $podman to diagnose and fix a Podman container, socket, network, compose, or rootless service issue."
@@ -0,0 +1,6 @@
1
+ # Compose fragment for a container that needs rootless Podman's Docker-compatible API.
2
+ # Mount the socket directory rather than the socket file so socket restarts do not stale the mount.
3
+ environment:
4
+ DOCKER_HOST: "unix:///run/user/1000/podman/podman.sock"
5
+ volumes:
6
+ - /run/user/1000/podman:/run/user/1000/podman:z
@@ -0,0 +1,3 @@
1
+ [Service]
2
+ ExecStart=
3
+ ExecStart=/usr/bin/podman system service --time=0
@@ -0,0 +1,70 @@
1
+ # Compose Compatibility
2
+
3
+ Use this reference when `podman-compose` or `docker compose` against a Podman socket behaves differently from Docker Compose.
4
+
5
+ ## Debug The Realized State
6
+
7
+ Do not rely only on the compose file. Inspect what Podman actually created:
8
+
9
+ ```bash
10
+ podman ps -a
11
+ podman pod ps
12
+ podman network ls
13
+ podman volume ls
14
+ podman inspect <container>
15
+ ```
16
+
17
+ Check:
18
+
19
+ - container names
20
+ - pod membership
21
+ - networks and DNS names
22
+ - published ports
23
+ - bind mounts and SELinux labels
24
+ - environment variables
25
+ - health check command and status
26
+
27
+ ## Environment Loading
28
+
29
+ `podman-compose` behavior around `.env` files and shell environment may differ from Docker Compose. If substitution is unreliable, explicitly load environment variables before invoking compose:
30
+
31
+ ```bash
32
+ set -a
33
+ . ./.env
34
+ set +a
35
+ podman-compose up -d
36
+ ```
37
+
38
+ ## Socket-Based Docker Compose
39
+
40
+ Some environments use Docker Compose as a client against Podman's Docker-compatible API:
41
+
42
+ ```bash
43
+ export DOCKER_HOST="unix:///run/user/$(id -u)/podman/podman.sock"
44
+ docker compose up -d
45
+ ```
46
+
47
+ When doing this, validate the API service and socket first with [rootless-services-and-sockets.md](rootless-services-and-sockets.md).
48
+
49
+ ## Health Checks
50
+
51
+ If compose waits forever or reports unhealthy:
52
+
53
+ ```bash
54
+ podman inspect <container> --format '{{json .State.Health}}'
55
+ podman logs <container>
56
+ ```
57
+
58
+ Confirm the image contains the health-check binary. For example, `pg_isready` exists in official Postgres images, but a minimal custom image may not include the tool your compose file expects.
59
+
60
+ ## SELinux Volume Labels
61
+
62
+ On SELinux systems, bind mounts often need labels:
63
+
64
+ ```yaml
65
+ volumes:
66
+ - ./data:/var/lib/app:z
67
+ ```
68
+
69
+ Use `:z` for shared access and `:Z` for private relabeling. Avoid relabeling system paths.
70
+
@@ -0,0 +1,74 @@
1
+ # Networking And Ports
2
+
3
+ Use this reference when Podman containers cannot connect to each other, host services are unreachable, or published ports collide.
4
+
5
+ ## Inspect Networking
6
+
7
+ ```bash
8
+ podman network ls
9
+ podman network inspect <network>
10
+ podman pod ps
11
+ podman ps --format 'table {{.Names}}\t{{.Networks}}\t{{.Ports}}'
12
+ podman port --all
13
+ ```
14
+
15
+ ## Port Publishing
16
+
17
+ Avoid fixed host ports when multiple containers may run concurrently on the same host:
18
+
19
+ ```bash
20
+ podman run -p 5432 postgres:17
21
+ ```
22
+
23
+ Podman will choose an available host port. Discover it with:
24
+
25
+ ```bash
26
+ podman port <container> 5432
27
+ ```
28
+
29
+ Use fixed ports only when the host owns that port and concurrency is impossible:
30
+
31
+ ```bash
32
+ podman run -p 5432:5432 postgres:17
33
+ ```
34
+
35
+ ## Rootless Host Reachability
36
+
37
+ Rootless networking can differ by Podman version and backend. Validate the actual host alias instead of assuming Docker behavior:
38
+
39
+ ```bash
40
+ podman run --rm alpine getent hosts host.containers.internal
41
+ podman run --rm alpine sh -c 'ip route && cat /etc/resolv.conf'
42
+ ```
43
+
44
+ If a container needs to reach a host service, test from inside a minimal container on the same network:
45
+
46
+ ```bash
47
+ podman run --rm --network <network> curlimages/curl:latest \
48
+ curl -v http://host.containers.internal:<port>
49
+ ```
50
+
51
+ ## Pods
52
+
53
+ Containers in the same pod share a network namespace. Publish pod ports on the pod, then add containers:
54
+
55
+ ```bash
56
+ podman pod create --name app-pod -p 8080:8080
57
+ podman run -d --pod app-pod --name app app-image
58
+ podman run -d --pod app-pod --name sidecar sidecar-image
59
+ ```
60
+
61
+ Do not debug pod members as if each has independent port publishing.
62
+
63
+ ## DNS And Service Names
64
+
65
+ For named containers on a user-defined network:
66
+
67
+ ```bash
68
+ podman network create app-net
69
+ podman run -d --name db --network app-net postgres:17
70
+ podman run --rm --network app-net alpine getent hosts db
71
+ ```
72
+
73
+ If DNS fails, inspect the network backend and generated container/network configuration.
74
+
@@ -0,0 +1,156 @@
1
+ # Rootless Services And Sockets
2
+
3
+ Use this reference when long-running tools, nested containers, or Docker-compatible clients need to reach rootless Podman through a socket.
4
+
5
+ ## Socket Paths
6
+
7
+ Rootless Podman usually exposes the API at:
8
+
9
+ ```bash
10
+ /run/user/$(id -u)/podman/podman.sock
11
+ ```
12
+
13
+ Rootful Podman commonly uses:
14
+
15
+ ```bash
16
+ /run/podman/podman.sock
17
+ ```
18
+
19
+ Prefer explicit environment configuration for Docker-compatible clients:
20
+
21
+ ```bash
22
+ export DOCKER_HOST="unix:///run/user/$(id -u)/podman/podman.sock"
23
+ ```
24
+
25
+ ## Mount Directory, Not Socket File
26
+
27
+ When a container needs access to a rootless Podman socket, mount the socket directory rather than the socket file:
28
+
29
+ ```yaml
30
+ environment:
31
+ DOCKER_HOST: "unix:///run/user/1000/podman/podman.sock"
32
+ volumes:
33
+ - /run/user/1000/podman:/run/user/1000/podman:z
34
+ ```
35
+
36
+ Use `assets/templates/podman-compose-socket-directory.yml` for a copyable compose fragment.
37
+
38
+ Why:
39
+
40
+ - Socket activation can replace the socket inode.
41
+ - A direct file mount can become stale after `podman.socket` restarts.
42
+ - A directory mount lets the container see the replacement socket.
43
+
44
+ ## Keep The API Service Alive
45
+
46
+ The socket-activated API service can exit after an idle timeout. If long-lived clients need stable access, install a user-level override:
47
+
48
+ ```bash
49
+ mkdir -p ~/.config/systemd/user/podman.service.d
50
+ cat > ~/.config/systemd/user/podman.service.d/override.conf <<'EOF'
51
+ [Service]
52
+ ExecStart=
53
+ ExecStart=/usr/bin/podman system service --time=0
54
+ EOF
55
+
56
+ systemctl --user daemon-reload
57
+ systemctl --user restart podman.socket
58
+ systemctl --user restart podman.service
59
+ ```
60
+
61
+ Use `assets/templates/podman-service-override.conf` for the override file.
62
+
63
+ Persist this in provisioning or preflight. Make it idempotent:
64
+
65
+ - write the override if missing or changed
66
+ - run `systemctl --user daemon-reload` only after changes
67
+ - start `podman.socket`
68
+ - start or restart `podman.service`
69
+ - verify the socket exists
70
+
71
+ ## Reaching A Rootless Socket From A System Service (`User=`)
72
+
73
+ A common deploy shape: a long-running binary runs as a **systemd system service** with
74
+ `User=svcuser` and needs to reach `svcuser`'s **rootless** Podman socket.
75
+
76
+ Failure signature — the client falls back to `http://localhost` because it has no
77
+ socket path:
78
+
79
+ ```
80
+ Error: Was there a typo in the url or port?
81
+ path: "http://localhost/v4.0.0/libpod/pods/create" code: FailedToOpenSocket
82
+ ```
83
+
84
+ Cause: a `User=` **system** unit is not a user unit, so systemd does **not** set
85
+ `XDG_RUNTIME_DIR`. The Podman/Docker client then builds an empty
86
+ `$XDG_RUNTIME_DIR/podman/podman.sock` path and fails.
87
+
88
+ Fix — make the socket path explicit in a drop-in (pick one):
89
+
90
+ ```ini
91
+ # /etc/systemd/system/<svc>.service.d/podman.conf
92
+ [Service]
93
+ # either point XDG_RUNTIME_DIR at the user's runtime dir...
94
+ Environment=XDG_RUNTIME_DIR=/run/user/<uid>
95
+ # ...or set the client host directly (equivalent, more explicit):
96
+ # Environment=CONTAINER_HOST=unix:///run/user/<uid>/podman/podman.sock
97
+ # Environment=DOCKER_HOST=unix:///run/user/<uid>/podman/podman.sock
98
+ ```
99
+
100
+ Then `daemon-reload` and restart the service. The user's `podman.socket` must also be
101
+ running and lingering enabled (next section). Compute `<uid>` at provision time
102
+ (`id -u svcuser`) — do not hard-code 1000.
103
+
104
+ ## Enabling A User Socket Non-Interactively (provisioning / SSH)
105
+
106
+ `systemctl --user …` run via `sudo` over SSH (no login session) fails with:
107
+
108
+ ```
109
+ Failed to connect to user scope bus via local transport:
110
+ $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined
111
+ ```
112
+
113
+ There is no user D-Bus/session for the target user in that context. Provide both
114
+ explicitly (lingering must be on so `/run/user/<uid>` exists):
115
+
116
+ ```bash
117
+ sudo loginctl enable-linger svcuser
118
+ UID_AG=$(id -u svcuser)
119
+ sudo -u svcuser \
120
+ XDG_RUNTIME_DIR=/run/user/$UID_AG \
121
+ DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID_AG/bus \
122
+ systemctl --user enable --now podman.socket
123
+ ```
124
+
125
+ (`machinectl shell svcuser@` is an alternative that sets up the session for you.)
126
+ Make this idempotent in provisioning: enable-linger → enable+start `podman.socket`
127
+ with explicit env → verify the socket file exists.
128
+
129
+ ## Validation
130
+
131
+ ```bash
132
+ systemctl --user status podman.socket podman.service
133
+ curl --unix-socket /run/user/$(id -u)/podman/podman.sock \
134
+ http://localhost/v4.0.0/libpod/info
135
+ ```
136
+
137
+ For a system service that uses the drop-in above, confirm it resolved the socket
138
+ (not `http://localhost`) in its own logs after restart.
139
+
140
+ For Docker-compatible clients:
141
+
142
+ ```bash
143
+ DOCKER_HOST="unix:///run/user/$(id -u)/podman/podman.sock" docker version
144
+ ```
145
+
146
+ For stability after socket/service changes:
147
+
148
+ ```bash
149
+ for i in 1 2 3 4 5; do
150
+ DOCKER_HOST="unix:///run/user/$(id -u)/podman/podman.sock" \
151
+ docker version --format '{{.Server.Version}}' >/dev/null || exit 1
152
+ sleep 1
153
+ done
154
+ echo stable
155
+ ```
156
+
@@ -0,0 +1,98 @@
1
+ # Podman Troubleshooting
2
+
3
+ Use this reference for general Podman failures before applying targeted fixes.
4
+
5
+ ## First Classification
6
+
7
+ Answer these before editing configuration:
8
+
9
+ - Is Podman running rootless or rootful?
10
+ - Is the failing path using `podman`, `podman-compose`, or Docker-compatible API calls?
11
+ - Is the workload a single container, a pod, or compose-managed services?
12
+ - Is the failure in image pull, container create, network setup, health check, volume mount, permission, or cleanup?
13
+
14
+ ## Core Commands
15
+
16
+ ```bash
17
+ podman info
18
+ podman version
19
+ podman system df
20
+ podman ps -a
21
+ podman pod ps
22
+ podman images
23
+ podman network ls
24
+ podman volume ls
25
+ podman events --since 30m
26
+ ```
27
+
28
+ For a specific container:
29
+
30
+ ```bash
31
+ podman inspect <container>
32
+ podman logs <container>
33
+ podman top <container>
34
+ podman port <container>
35
+ ```
36
+
37
+ ## Rootless Checks
38
+
39
+ ```bash
40
+ id
41
+ echo "${XDG_RUNTIME_DIR:-unset}"
42
+ test -d /run/user/$(id -u)
43
+ test -S /run/user/$(id -u)/podman/podman.sock
44
+ systemctl --user status podman.socket podman.service
45
+ ```
46
+
47
+ If user services are unavailable after login/session changes, check lingering:
48
+
49
+ ```bash
50
+ loginctl show-user "$(id -un)" --property=Linger
51
+ ```
52
+
53
+ If a client reports `FailedToOpenSocket` and falls back to `http://localhost/...`
54
+ (e.g. `path: "http://localhost/v4.0.0/libpod/..."`), `XDG_RUNTIME_DIR` is unset or
55
+ the socket path is empty. For a systemd `User=` system service reaching a rootless
56
+ socket, or for enabling `podman.socket` non-interactively over SSH, see
57
+ [rootless-services-and-sockets.md](rootless-services-and-sockets.md).
58
+
59
+ ## Storage And Permission Checks
60
+
61
+ ```bash
62
+ podman info --format '{{.Store.GraphRoot}}'
63
+ podman unshare cat /proc/self/uid_map
64
+ podman unshare cat /proc/self/gid_map
65
+ ```
66
+
67
+ For host mounts:
68
+
69
+ ```bash
70
+ ls -ldZ <host-path>
71
+ podman unshare ls -ld <host-path>
72
+ ```
73
+
74
+ SELinux symptoms often appear as permission denied despite Unix permissions looking correct. Prefer `:z` or `:Z` mount labels where appropriate:
75
+
76
+ ```bash
77
+ podman run --rm -v "$PWD/data:/data:z" alpine ls -la /data
78
+ ```
79
+
80
+ ## Cleanup
81
+
82
+ Inspect before removing:
83
+
84
+ ```bash
85
+ podman ps -a
86
+ podman pod ps
87
+ podman network ls
88
+ podman volume ls
89
+ ```
90
+
91
+ Then clean targeted resources by ID/name. Use broad pruning only when the environment owns all local Podman state:
92
+
93
+ ```bash
94
+ podman container prune
95
+ podman pod prune
96
+ podman network prune
97
+ ```
98
+
@@ -0,0 +1,3 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 1AboveIO
@@ -0,0 +1,156 @@
1
+ ---
2
+ name: e2e-test
3
+ description: "Playwright end-to-end standard: the 3-tier suite (render-health / functional / journey), generated route manifest, presentation sweep, and CI route gates. Use when browser routes or user flows ship or change, or a Playwright test flakes. NOT for non-browser tests, defining what to test (ensure-coverage), or the curated ALIVE/DEAD gate (smoke)."
4
+ ---
5
+
6
+ # E2E Testing Standard
7
+
8
+ This file is the **spine** — tiers, rules, and where this fits. Mechanics (route discovery, manifest projection, the presentation sweep, Playwright config, CI wiring) live in `references/`; load one only when the step needs it (see [Reference Map](#reference-map)).
9
+
10
+ ## Where this fits (pipeline)
11
+
12
+ Not a pipeline stage — invoked by the stages as the **executable browser layer** for `ensure-coverage`'s doctrine. `ensure-coverage` defines *what must be proven* (required levels, the Coverage Ledger, the presentation floor) and owns the gate *contract* (`ensure-coverage/references/enforcement/ci-contract.md`); this skill is *how* browser/journey surfaces get proven and *the scripts CI runs*.
13
+
14
+ | Stage | This skill's role |
15
+ |---|---|
16
+ | `resolve-issues` | **orchestrate**: the issue→merge-ready loop that invokes this skill at the implement/verify steps |
17
+ | `to-issues` | route/journey discovery so issues are sliced as vertical journeys |
18
+ | `implement-and-pr` | **produce**: write tiered tests, regenerate the manifest, tag `@covers/@level`, run the presentation sweep locally |
19
+ | `review-pr` | **verify**: the [reviewing checklist](references/reviewing.md); confirm the sweep ran and the manifest isn't stale |
20
+ | **CI build** | **enforce**: route-detect, manifest-validate, the functional/journey suite, and the **presentation sweep as a separate blocking job** |
21
+
22
+ The **gate contract** lives in `ensure-coverage`; the **runnable templates** that satisfy it are in this skill's `assets/` (`ci-gates.cloudbuild.yaml`, `ci-gates.github.yml`). A repo copies a template; `ensure-coverage`'s `ci-audit.mjs` verifies it stays wired.
23
+
24
+ ## Test Tiers
25
+
26
+ | Tier | Name | What to test | Required when |
27
+ |------|------|-------------|---------------|
28
+ | 1 | **Render-health** | Route loads, no crash, heading visible, no console errors (the `presentation:render-health` spine) | Every route/endpoint |
29
+ | 2 | **Functional** | Forms, filters, auth, API responses, error states | Routes with user interaction |
30
+ | 3 | **Journey** | Multi-step flows crossing pages/APIs — the **golden paths**: critical business flows whose failure means do-not-ship | Core business flows |
31
+
32
+ **Tier 3 is where the golden paths live.** A *golden path* is a Tier-3 journey whose failure alone means do-not-ship — not a separate test type. `smoke` authors nothing new: it **selects a curated `@smoke`-tagged subset of this tier** and gates it (ALIVE/DEAD) as the per-PR liveness floor, adding only curation, a binary verdict, and target-safety. Breadth across *all* core journeys is Tier 3's job; the do-not-ship *subset* is `smoke`'s.
33
+
34
+ ## Verify e2e changes locally before the batch
35
+
36
+ A repo's merge queue re-validates the full browser matrix on the merged
37
+ candidate, so one e2e regression (or a bug in the e2e test/helper code itself)
38
+ fails the whole batch and resets every PR in it — 20-30 min per round. Before
39
+ relying on that gate, verify affected specs locally:
40
+
41
+ 1. **Check the environment before assuming it can't run.** Docker/Podman +
42
+ PostgreSQL + cached Playwright browsers may all be present even when a doc
43
+ says the lane is "unavailable" — actually probe (`docker info`, `pg_isready`,
44
+ `ls ~/Library/Caches/ms-playwright`).
45
+ 2. **Run the affected specs, not the whole suite** (repo-local runner, e.g.
46
+ `pnpm test:functional:shard 1 --grep <pattern>`; see the repo's E2E.md for
47
+ the exact command). A focused run is minutes; the full matrix is the
48
+ batch's job.
49
+ 3. **Docker-space gotcha**: a full Docker VM disk surfaces as `tar: Cannot
50
+ create symlink ... No space left on device` inside the run — free it with
51
+ `docker system prune --volumes -f` and retry.
52
+ 4. **Unit-test your own test/helper changes** where possible (a hydration
53
+ marker, a wait helper, a retry loop are all testable with mocked page/locator
54
+ objects) — that catches bugs the e2e run itself would only expose as flakes.
55
+
56
+ ## Directory Structure
57
+
58
+ ```
59
+ e2e/
60
+ ├── route-manifest.json # generated projection (see references/route-manifest.md)
61
+ ├── route-manifest.overlay.json # curated tier/ignore deviations
62
+ ├── render/ # Tier 1 (render-health)
63
+ ├── functional/ # Tier 2 (subdirs by feature: auth/, filters/, forms/)
64
+ ├── journeys/ # Tier 3 (golden paths; do-not-ship subset tagged @smoke)
65
+ ├── fixtures/ # Shared auth, test data
66
+ └── utils/ # Helpers
67
+ ```
68
+
69
+ Backend: `tests/e2e/` with `endpoint-manifest.json`, same tier subdirectories, `conftest.py`.
70
+
71
+ ## Writing Tests
72
+
73
+ 1. Every new route/endpoint needs at least a Tier 1 render-health test.
74
+ 2. Interactive routes need Tier 2 tests (success + error + edge cases).
75
+ 3. Core business flows need Tier 3 journey tests (the golden paths); tag the do-not-ship subset `@smoke` so the smoke gate selects it.
76
+ 4. The manifest is **generated**, not hand-edited — regenerate it (see [route-manifest.md](references/route-manifest.md)); put curation in the overlay.
77
+ 5. Use Given/When/Then comments; use `getByRole`/`getByLabel`/`getByText`, never CSS selectors; never `waitForTimeout()`.
78
+ 6. Auth in shared fixtures — never duplicate across files.
79
+ 7. **Tag every test with `// @covers <surface-id>` and `// @level <level>`** so ensure-coverage's `coverage-ledger.mjs` resolves your evidence. Untagged specs are invisible to the accounting gate. Use the presentation tokens for sweep/instrument specs.
80
+ 8. **Never skip a test.** The committed suite contains only tests that run and assert — no `test.skip`/`xit`/`describe.skip`, no conditional skip, no disguised `if (!x) return`. A missing precondition is the test's *arrange* step. Pick the non-skip path by case:
81
+
82
+ | Situation | Instead of skip |
83
+ |---|---|
84
+ | Missing data / session / migration / flag / entity-state | **seed it** |
85
+ | Third-party dependency | **sandbox at the boundary** |
86
+ | Un-sandboxable external **or** genuine flake | **quarantine lane** (`@quarantine` tag — non-blocking, still runs+reports, graded `Unverified`) |
87
+ | Platform/capability-specific | **route** via project/matrix/tag |
88
+ | Behavior not built yet | **land the test with it** (TDD red→green) |
89
+ | Obsolete / wrong test | **delete it** |
90
+ | Can't run in any env we control | **manual-check doc**, tracked |
91
+
92
+ Full rationale + enforcement: [authoring/test-skipping.md](references/authoring/test-skipping.md). The `lint-tests.mjs` gate (`no-skip` rule) fails CI on a skip added in a PR; it also carries `no-fixed-timeout` (no `waitForTimeout`).
93
+
94
+ Locator patterns, tier examples, mocking → [authoring/playwright-patterns.md](references/authoring/playwright-patterns.md). Playwright config + AGENTS.md snippet → [authoring/playwright-config.md](references/authoring/playwright-config.md). No-skip policy (seed/quarantine/route/delete — never disable a test) → [authoring/test-skipping.md](references/authoring/test-skipping.md). Auth surfaces (login/signup/forgot-password — assert authenticated state not form presence; fake the email boundary) → [authoring/auth-flows.md](references/authoring/auth-flows.md).
95
+
96
+ **Lead every coverage deliverable with the verdict.** Whether you added tests, wrote a `notes.md`, or reviewed a PR, put a one-line verdict at the *top*: is this surface covered, do gaps remain, is it ship-ready? Then what the new tests prove (and deliberately do *not*), and concrete **follow-up action items** for anything uncovered (owner/level where known). The reader's first question is "is this safe to ship?" — answer it before the spec detail.
97
+
98
+ ## Route Discovery & Coverage
99
+
100
+ Never audit coverage from memory — produce a deterministic route/endpoint inventory and classify reachability **first**. Full protocol + per-framework discovery sources: [route-discovery.md](references/route-discovery.md). The route manifest is a **generated projection** of ensure-coverage's surface inventory (no drift by construction): [route-manifest.md](references/route-manifest.md).
101
+
102
+ ## Presentation Sweep (the third axis)
103
+
104
+ A green functional suite can pass while a route throws on render — if its only spec intercepts the route's own API, the real render path is never exercised. The **presentation sweep** opens every manifest route in a real browser (no first-party interception) and asserts the presentation floor **spine first** (`presentation:render-health`: no `pageerror`/`console.error`/error-boundary/5xx). It is a **separate gate** from the functional suite — a green functional run is not the presentation gate. The floor levels auto-apply to every route; **`presentation:visual`** is an **opt-in** pixel-baseline level a surface raises via its `*.coverage.yml`, run CI-only in a pinned Playwright container (`toHaveScreenshot()`). Instruments, the sweep command, fixtures, "mutate-health" (render-health held *through* a write), and the visual job/evidence step: [presentation-sweep.md](references/presentation-sweep.md).
105
+
106
+ ## CI Enforcement
107
+
108
+ Blocking gates, each a separate job (per ensure-coverage's CI contract). The **per-PR floor**: inventory freshness, accounting (`coverage-ledger.mjs validate`), the presentation sweep, no-over-mock (`lint-tests --rules mock-internal-seam`), the Review-Contract checklist validate, quarantine auto-resurface, and the **curated E2E smoke gate** (gate 8 — boots the real app and drives the do-not-ship golden journeys; for browser paths a tiny curated subset driven through this skill's Playwright layer). Manifest validation proves a spec was *authored*; only the sweep proves the page *renders*; only smoke proves the selected golden journeys are *alive*. The **broad functional + journey suite (gate 4)** is **demoted off the per-PR critical path to the integration lane** (the integration-branch push; nightly optional) — required before release, not per-PR. Commands, templates, and the post-deploy pattern: [ci-integration.md](references/ci-integration.md).
109
+
110
+ **Wiring conventions** (encoded in the templates; `ci-audit.mjs` checks they stay):
111
+
112
+ - **Docker-preferred.** Every browser job runs in the **pinned official Playwright
113
+ container** (`mcr.microsoft.com/playwright:<version>`) — browsers ship in the image
114
+ (no per-job install), so the rendering environment is identical across jobs. The
115
+ plain-runner + `playwright install` alternative stays sanctioned but is not the
116
+ default. A missing browser shared library such as `libnspr4.so` means the job is in
117
+ the wrong container. Options, `docker run` for self-hosted runners,
118
+ `services.postgres` networking, native `container:` caveats:
119
+ [ci-playwright-container.md](references/ci-playwright-container.md).
120
+ - **5-minute PR lane.** PR-lane jobs carry `timeout-minutes: 5` / `timeout: 300s`;
121
+ golden paths run in parallel (workers; matrix fan-out when needed) so wall clock ≈
122
+ the slowest path. Actions/assertions time out at **15s**
123
+ ([authoring/playwright-config.md](references/authoring/playwright-config.md)). Longer
124
+ leashes are for the integration-lane suite and auxiliary (quarantine/visual) jobs —
125
+ never the PR-lane gates.
126
+ - **One umbrella check.** On GitHub Actions, branch protection requires only the
127
+ **`all-gates`** job (it `needs:` every blocking gate) — a renamed or added gate can't
128
+ silently fall out of protection. Cloud Build needs none: the build's single status is
129
+ the check.
130
+
131
+ **Three lanes.** *PR lane* = the per-PR floor above. *Integration lane* = the broad functional/journey suite, on the integration-branch push (where the `resolve-issues` epic gate boots + smokes the assembled branch). *Release lane* = a **promotion to production**: don't re-run the mutating suite on prod — where the promotion fast-forwards, prod is the exact SHA the PR + integration gates already passed, so gate on *that* result (under GitHub Flow the release branch is rebased first, which demotes that result to a pre-filter). Prod gets only a **read-only smoke, run against a 0%-traffic candidate before traffic shifts**, under a **read-only production profile** (`prod-preview`/`prod-active`) — against production a declared synthetic tenant is not sufficient. See [ci-integration.md](references/ci-integration.md) → Three lanes.
132
+
133
+ ## Reviewing PRs
134
+
135
+ Checklist + comment template: [reviewing.md](references/reviewing.md). Block on: route discovery not run, a new route without a manifest entry, an interactive route without Tier 2, or a browser-route change with the presentation sweep absent/warn-only.
136
+
137
+ ## Reference Map
138
+
139
+ | When you need to… | Read |
140
+ |---|---|
141
+ | write tests (locators, tiers, mocking) | [authoring/playwright-patterns.md](references/authoring/playwright-patterns.md) |
142
+ | Playwright config + AGENTS.md snippet | [authoring/playwright-config.md](references/authoring/playwright-config.md) |
143
+ | no-skip policy + per-case solutions map | [authoring/test-skipping.md](references/authoring/test-skipping.md) |
144
+ | test auth flows (login / signup / forgot-password) | [authoring/auth-flows.md](references/authoring/auth-flows.md) |
145
+ | discover routes / classify reachability | [route-discovery.md](references/route-discovery.md) |
146
+ | (re)generate the route manifest, understand the projection | [route-manifest.md](references/route-manifest.md) |
147
+ | run/understand the presentation sweep + mutate-health | [presentation-sweep.md](references/presentation-sweep.md) |
148
+ | drive a route's real render when there's no in-app way in (prefer `agent-browser`) | [presentation-sweep.md → "No in-app way to view it"](references/presentation-sweep.md#no-in-app-way-to-view-it-is-not-blocked) |
149
+ | wire CI / gate templates / post-deploy pattern | [ci-integration.md](references/ci-integration.md) · `assets/ci-gates.*` |
150
+ | run Playwright in the pinned official container (preferred; incl. self-hosted Docker/Podman) | [ci-playwright-container.md](references/ci-playwright-container.md) |
151
+ | review a PR for E2E coverage | [reviewing.md](references/reviewing.md) |
152
+ | debug a failing E2E | [debugging.md](references/debugging.md) |
153
+
154
+ ## Scripts
155
+
156
+ `detect-routes-nextjs.mjs` · `detect-routes-fastapi.py` (discovery) · `project-route-manifest.mjs` · `validate-manifest.mjs` (manifest) · `presentation-sweep.mjs` + `presentation-{render-health,checks,perceivability,reachability,temporal,visual}.mjs` (the sweep + instruments; `presentation-visual.mjs` is the **opt-in**, CI-only pixel-baseline gate) · `post-visual-evidence.mjs` (upserts the baseline/diff evidence comment to the issue + PR after baseline-regen).