@mmerterden/multi-agent-pipeline 20.2.0 → 20.3.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 (621) hide show
  1. package/CHANGELOG.md +923 -1
  2. package/README.md +104 -81
  3. package/README.tr.md +103 -62
  4. package/docs/FIGMA_PIPELINE.md +35 -35
  5. package/docs/adr/0006-skills-core-external-split.md +1 -1
  6. package/docs/adr/0007-multi-tool-adapter-framework.md +6 -0
  7. package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +7 -0
  8. package/docs/architecture.md +50 -14
  9. package/docs/best-practices.md +1 -1
  10. package/docs/ecosystem.md +56 -32
  11. package/docs/facts.json +10 -10
  12. package/docs/features.md +97 -5
  13. package/docs/recovery-guide.md +7 -14
  14. package/docs/server-readiness.md +31 -24
  15. package/index.js +1 -1
  16. package/install/_common.mjs +3 -5
  17. package/install/_platform-filter.mjs +23 -1
  18. package/install/_unattended-profile.mjs +321 -75
  19. package/install/claude.mjs +51 -10
  20. package/install/codex.mjs +2 -0
  21. package/install/copilot.mjs +2 -0
  22. package/install/index.mjs +30 -17
  23. package/install/templates/claude-hooks.json +16 -5
  24. package/install/templates/copilot-instructions.md +1 -1
  25. package/install/templates/multi-agent-autopilot-awake.plist.template +48 -0
  26. package/install/templates/multi-agent-autopilot.plist.template +12 -5
  27. package/install/unattended-profile-legacy.json +80 -0
  28. package/manifest.json +616 -483
  29. package/package.json +8 -3
  30. package/pipeline/agents/code-reviewer.md +10 -0
  31. package/pipeline/agents/plan-critic.md +98 -0
  32. package/pipeline/agents/security-auditor.md +10 -0
  33. package/pipeline/agents/task-clarifier.md +10 -0
  34. package/pipeline/commands/multi-agent/SKILL.md +2 -2
  35. package/pipeline/commands/multi-agent/analysis/SKILL.md +6 -2
  36. package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +12 -1
  37. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +4 -0
  38. package/pipeline/commands/multi-agent/autopilot/SKILL.md +6 -2
  39. package/pipeline/commands/multi-agent/autopilot-off/SKILL.md +36 -6
  40. package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +77 -12
  41. package/pipeline/commands/multi-agent/autopilot-status/SKILL.md +29 -8
  42. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +4 -0
  43. package/pipeline/commands/multi-agent/channels/SKILL.md +9 -9
  44. package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +5 -1
  45. package/pipeline/commands/multi-agent/create-jira/SKILL.md +4 -0
  46. package/pipeline/commands/multi-agent/design-check/SKILL.md +16 -11
  47. package/pipeline/commands/multi-agent/diff-explain/SKILL.md +4 -0
  48. package/pipeline/commands/multi-agent/doctor/SKILL.md +4 -0
  49. package/pipeline/commands/multi-agent/feedback/SKILL.md +5 -1
  50. package/pipeline/commands/multi-agent/forget/SKILL.md +4 -0
  51. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +4 -0
  52. package/pipeline/commands/multi-agent/graph/SKILL.md +4 -0
  53. package/pipeline/commands/multi-agent/help/SKILL.md +37 -39
  54. package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +4 -0
  55. package/pipeline/commands/multi-agent/issue/SKILL.md +7 -1
  56. package/pipeline/commands/multi-agent/jira/SKILL.md +7 -1
  57. package/pipeline/commands/multi-agent/kill/SKILL.md +9 -3
  58. package/pipeline/commands/multi-agent/language/SKILL.md +4 -0
  59. package/pipeline/commands/multi-agent/log/SKILL.md +4 -0
  60. package/pipeline/commands/multi-agent/manual-test/SKILL.md +5 -0
  61. package/pipeline/commands/multi-agent/model/SKILL.md +4 -0
  62. package/pipeline/commands/multi-agent/prune-logs/SKILL.md +4 -0
  63. package/pipeline/commands/multi-agent/prune-prompts/SKILL.md +4 -0
  64. package/pipeline/commands/multi-agent/purge/SKILL.md +4 -0
  65. package/pipeline/commands/multi-agent/refactor/SKILL.md +5 -0
  66. package/pipeline/commands/multi-agent/research/SKILL.md +49 -0
  67. package/pipeline/commands/multi-agent/resume/SKILL.md +29 -6
  68. package/pipeline/commands/multi-agent/review/SKILL.md +28 -9
  69. package/pipeline/commands/multi-agent/review-analysis/SKILL.md +5 -1
  70. package/pipeline/commands/multi-agent/review-issue/SKILL.md +4 -0
  71. package/pipeline/commands/multi-agent/review-jira/SKILL.md +4 -0
  72. package/pipeline/commands/multi-agent/route-off/SKILL.md +4 -0
  73. package/pipeline/commands/multi-agent/route-on/SKILL.md +4 -0
  74. package/pipeline/commands/multi-agent/route-status/SKILL.md +4 -0
  75. package/pipeline/commands/multi-agent/routines/SKILL.md +4 -0
  76. package/pipeline/commands/multi-agent/save/SKILL.md +6 -2
  77. package/pipeline/commands/multi-agent/scaffold/SKILL.md +47 -0
  78. package/pipeline/commands/multi-agent/scan/SKILL.md +4 -0
  79. package/pipeline/commands/multi-agent/search/SKILL.md +12 -8
  80. package/pipeline/commands/multi-agent/security-review/SKILL.md +4 -0
  81. package/pipeline/commands/multi-agent/serve/SKILL.md +62 -0
  82. package/pipeline/commands/multi-agent/setup/SKILL.md +27 -36
  83. package/pipeline/commands/multi-agent/stack/SKILL.md +4 -0
  84. package/pipeline/commands/multi-agent/status/SKILL.md +10 -9
  85. package/pipeline/commands/multi-agent/steer/SKILL.md +5 -1
  86. package/pipeline/commands/multi-agent/store-ready/SKILL.md +4 -0
  87. package/pipeline/commands/multi-agent/sync/SKILL.md +13 -13
  88. package/pipeline/commands/multi-agent/test/SKILL.md +4 -0
  89. package/pipeline/commands/multi-agent/test-accessibility/SKILL.md +4 -0
  90. package/pipeline/commands/multi-agent/test-dark-mode/SKILL.md +4 -0
  91. package/pipeline/commands/multi-agent/test-dynamic-type/SKILL.md +4 -0
  92. package/pipeline/commands/multi-agent/test-screenshots/SKILL.md +5 -1
  93. package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +4 -0
  94. package/pipeline/commands/multi-agent/uninstall/SKILL.md +5 -1
  95. package/pipeline/commands/multi-agent/update/SKILL.md +4 -0
  96. package/pipeline/contract/CHANGELOG.md +74 -0
  97. package/pipeline/contract/README.md +126 -0
  98. package/pipeline/contract/build.mjs +427 -0
  99. package/pipeline/contract/fixtures/answer-result.json +11 -0
  100. package/pipeline/contract/fixtures/error-invalid-request.json +8 -0
  101. package/pipeline/contract/fixtures/error-unauthorized.json +5 -0
  102. package/pipeline/contract/fixtures/error-unsigned.json +5 -0
  103. package/pipeline/contract/fixtures/issues-empty.json +18 -0
  104. package/pipeline/contract/fixtures/launch-plan.json +31 -0
  105. package/pipeline/contract/fixtures/runs-awaiting-question.json +70 -0
  106. package/pipeline/contract/fixtures/runs-empty.json +6 -0
  107. package/pipeline/contract/fixtures/runs-failed.json +84 -0
  108. package/pipeline/contract/fixtures/runs-old-schema.json +70 -0
  109. package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +101 -0
  110. package/pipeline/contract/fixtures/runs-pr-opened.json +106 -0
  111. package/pipeline/contract/fixtures/runs-running.json +84 -0
  112. package/pipeline/contract/fixtures/worktrees-empty.json +4 -0
  113. package/pipeline/contract/frozen/toolbox.json +107 -0
  114. package/pipeline/contract/manifest.json +263 -0
  115. package/pipeline/contract/types/index.d.ts +343 -0
  116. package/pipeline/lib/_jira-auth.sh +6 -2
  117. package/pipeline/lib/account-resolver.sh +1 -1
  118. package/pipeline/lib/autopilot-state.sh +19 -0
  119. package/pipeline/lib/context-link-extractor.sh +12 -5
  120. package/pipeline/lib/credential-inventory.sh +12 -5
  121. package/pipeline/lib/credential-store.sh +116 -185
  122. package/pipeline/lib/fetch-confluence.sh +44 -3
  123. package/pipeline/lib/fetch-document.sh +3 -4
  124. package/pipeline/lib/fetch-fortify.sh +1 -1
  125. package/pipeline/lib/figma-mcp-refresh.sh +2 -2
  126. package/pipeline/lib/figma-token.sh +5 -1
  127. package/pipeline/lib/issue-fetcher.sh +233 -16
  128. package/pipeline/lib/json-file-lock.mjs +172 -0
  129. package/pipeline/lib/model-dispatch.sh +21 -12
  130. package/pipeline/lib/model-rung.sh +6 -1
  131. package/pipeline/lib/multi-repo-pipeline.sh +1 -1
  132. package/pipeline/lib/outbound-gate.mjs +46 -16
  133. package/pipeline/lib/parse-complaints.sh +14 -7
  134. package/pipeline/lib/plan-todos.sh +3 -3
  135. package/pipeline/lib/post-pr-review.sh +9 -9
  136. package/pipeline/lib/pr-request-location.mjs +85 -0
  137. package/pipeline/lib/regular-file.mjs +153 -0
  138. package/pipeline/lib/repo-hygiene.sh +17 -0
  139. package/pipeline/lib/route-state.sh +5 -1
  140. package/pipeline/lib/run-paths.sh +3 -2
  141. package/pipeline/lib/stack-detect.sh +19 -1
  142. package/pipeline/lib/unattended-profile-check.mjs +178 -0
  143. package/pipeline/lib/unattended-settings-location.mjs +28 -0
  144. package/pipeline/lib/unattended.mjs +76 -0
  145. package/pipeline/lib/unattended.sh +32 -0
  146. package/pipeline/lib/untrusted.mjs +76 -0
  147. package/pipeline/lib/user-facing.mjs +82 -0
  148. package/pipeline/lib/user-facing.sh +58 -0
  149. package/pipeline/multi-agent-refs/_dev-context.md +1 -1
  150. package/pipeline/multi-agent-refs/analysis/evidence.md +4 -0
  151. package/pipeline/multi-agent-refs/analysis/locked.md +2 -2
  152. package/pipeline/multi-agent-refs/analysis/render.md +4 -3
  153. package/pipeline/multi-agent-refs/analysis/resolve.md +3 -1
  154. package/pipeline/multi-agent-refs/analysis/synthesis.md +4 -5
  155. package/pipeline/multi-agent-refs/analysis-template.md +10 -17
  156. package/pipeline/multi-agent-refs/channels/jira.md +1 -1
  157. package/pipeline/multi-agent-refs/component-dispatch.md +3 -3
  158. package/pipeline/multi-agent-refs/conventions-defaults.md +32 -32
  159. package/pipeline/multi-agent-refs/cross-cli-contract.md +10 -17
  160. package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +37 -9
  161. package/pipeline/multi-agent-refs/features/autopilot-operations.md +277 -0
  162. package/pipeline/multi-agent-refs/features/constitution.md +196 -0
  163. package/pipeline/multi-agent-refs/features/doctor.md +6 -3
  164. package/pipeline/multi-agent-refs/features/external-context-injection.md +6 -1
  165. package/pipeline/multi-agent-refs/features/jira-context.md +1 -1
  166. package/pipeline/multi-agent-refs/features/maturity-followup.md +43 -23
  167. package/pipeline/multi-agent-refs/features/model-fallback.md +9 -0
  168. package/pipeline/multi-agent-refs/features/phone-api.md +306 -0
  169. package/pipeline/multi-agent-refs/features/plan-critic.md +159 -0
  170. package/pipeline/multi-agent-refs/features/research.md +150 -0
  171. package/pipeline/multi-agent-refs/features/review-decision.md +185 -0
  172. package/pipeline/multi-agent-refs/features/scaffold.md +160 -0
  173. package/pipeline/multi-agent-refs/features/security-audit.md +6 -2
  174. package/pipeline/multi-agent-refs/features/skill-conformance.md +4 -1
  175. package/pipeline/multi-agent-refs/features/stack-adapters.md +116 -0
  176. package/pipeline/multi-agent-refs/features/unattended-gates.md +316 -0
  177. package/pipeline/multi-agent-refs/features/unattended-security.md +731 -0
  178. package/pipeline/multi-agent-refs/features/url-enrichment.md +2 -2
  179. package/pipeline/multi-agent-refs/features/usage-reporting.md +127 -31
  180. package/pipeline/multi-agent-refs/features/verify-by-test.md +1 -1
  181. package/pipeline/multi-agent-refs/features/visual-evidence.md +7 -7
  182. package/pipeline/multi-agent-refs/keychain.md +6 -11
  183. package/pipeline/multi-agent-refs/payload-contracts.md +2 -2
  184. package/pipeline/multi-agent-refs/phases/log-format.md +2 -3
  185. package/pipeline/multi-agent-refs/phases/modes.md +10 -12
  186. package/pipeline/multi-agent-refs/phases/operations.md +11 -5
  187. package/pipeline/multi-agent-refs/phases/phase-0-init.md +73 -81
  188. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +22 -22
  189. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +42 -66
  190. package/pipeline/multi-agent-refs/phases/phase-3-review.md +45 -79
  191. package/pipeline/multi-agent-refs/phases/phase-4-commit.md +28 -38
  192. package/pipeline/multi-agent-refs/phases/phase-5-report.md +27 -25
  193. package/pipeline/multi-agent-refs/phases.md +1 -1
  194. package/pipeline/multi-agent-refs/picker-contract.md +1 -1
  195. package/pipeline/multi-agent-refs/progress-contract.md +13 -16
  196. package/pipeline/multi-agent-refs/readiness-review.md +1 -1
  197. package/pipeline/multi-agent-refs/research/engine.md +91 -0
  198. package/pipeline/multi-agent-refs/rules.md +6 -4
  199. package/pipeline/multi-agent-refs/setup/repo-discovery.md +2 -2
  200. package/pipeline/multi-agent-refs/tracker-contract.md +2 -2
  201. package/pipeline/multi-agent-refs/unattended-contract.md +68 -16
  202. package/pipeline/rules/figma-pipeline.md +12 -12
  203. package/pipeline/schemas/agent-state.schema.json +480 -18
  204. package/pipeline/schemas/analysis-spec.schema.json +4 -4
  205. package/pipeline/schemas/answer-request.schema.json +24 -0
  206. package/pipeline/schemas/answer-result.schema.json +28 -0
  207. package/pipeline/schemas/autopilot-config.schema.json +111 -13
  208. package/pipeline/schemas/command-parameters.schema.json +99 -0
  209. package/pipeline/schemas/constitution.schema.json +56 -0
  210. package/pipeline/schemas/contract-error.schema.json +52 -0
  211. package/pipeline/schemas/design-check-config.schema.json +5 -1
  212. package/pipeline/schemas/issues.schema.json +61 -0
  213. package/pipeline/schemas/launch-plan.schema.json +46 -0
  214. package/pipeline/schemas/launch-request.schema.json +45 -0
  215. package/pipeline/schemas/launch.json +61 -0
  216. package/pipeline/schemas/launch.schema.json +84 -0
  217. package/pipeline/schemas/phases.json +2 -2
  218. package/pipeline/schemas/phases.schema.json +68 -0
  219. package/pipeline/schemas/phone-devices.schema.json +61 -0
  220. package/pipeline/schemas/phone-signed-request.schema.json +67 -0
  221. package/pipeline/schemas/plan-critique.schema.json +99 -0
  222. package/pipeline/schemas/plan-todos.schema.json +7 -7
  223. package/pipeline/schemas/planning-output.schema.json +5 -0
  224. package/pipeline/schemas/pr-request.schema.json +46 -0
  225. package/pipeline/schemas/prefs.schema.json +82 -7
  226. package/pipeline/schemas/research-output.schema.json +118 -0
  227. package/pipeline/schemas/review-file-exclusions.schema.json +25 -0
  228. package/pipeline/schemas/reviewer-output.schema.json +40 -4
  229. package/pipeline/schemas/run-questions.json +392 -0
  230. package/pipeline/schemas/run-questions.schema.json +118 -0
  231. package/pipeline/schemas/runs-index.schema.json +189 -0
  232. package/pipeline/schemas/scaffold-manifest.schema.json +43 -0
  233. package/pipeline/schemas/secret-patterns.schema.json +28 -0
  234. package/pipeline/schemas/stack-adapters.json +527 -0
  235. package/pipeline/schemas/stack-adapters.schema.json +184 -0
  236. package/pipeline/schemas/token-budget.json +1 -1
  237. package/pipeline/schemas/token-budget.schema.json +26 -0
  238. package/pipeline/schemas/triage-output.schema.json +64 -3
  239. package/pipeline/schemas/unattended-policy.json +139 -0
  240. package/pipeline/schemas/unattended-policy.schema.json +73 -0
  241. package/pipeline/schemas/unattended-profile.json +248 -0
  242. package/pipeline/schemas/unattended-profile.schema.json +198 -0
  243. package/pipeline/schemas/worktrees.schema.json +51 -0
  244. package/pipeline/scripts/README.md +1 -0
  245. package/pipeline/scripts/_autopilot-config.mjs +130 -0
  246. package/pipeline/scripts/_autopilot-ops.mjs +567 -0
  247. package/pipeline/scripts/_autopilot-outcomes.mjs +174 -0
  248. package/pipeline/scripts/_command-contract.mjs +384 -0
  249. package/pipeline/scripts/_cost.mjs +40 -0
  250. package/pipeline/scripts/_notices.mjs +160 -0
  251. package/pipeline/scripts/_phone-auth.mjs +485 -0
  252. package/pipeline/scripts/_pre-existing.mjs +294 -0
  253. package/pipeline/scripts/_redact.mjs +77 -0
  254. package/pipeline/scripts/_run-paths.mjs +4 -2
  255. package/pipeline/scripts/_stack-adapter.mjs +678 -0
  256. package/pipeline/scripts/_stack-routing.mjs +1 -1
  257. package/pipeline/scripts/agent-guard.py +348 -37
  258. package/pipeline/scripts/agent-guard.sh +41 -13
  259. package/pipeline/scripts/analysis-story-tree.mjs +79 -3
  260. package/pipeline/scripts/answer-question.mjs +181 -0
  261. package/pipeline/scripts/audit-log-rotate.sh +1 -4
  262. package/pipeline/scripts/audit-log.sh +4 -4
  263. package/pipeline/scripts/autopilot-arming.mjs +389 -21
  264. package/pipeline/scripts/autopilot-awake.mjs +255 -0
  265. package/pipeline/scripts/autopilot-intake.mjs +137 -36
  266. package/pipeline/scripts/autopilot-menubar.swift +156 -44
  267. package/pipeline/scripts/autopilot-publish.mjs +1625 -0
  268. package/pipeline/scripts/autopilot-runner.mjs +1678 -222
  269. package/pipeline/scripts/autopilot-status.sh +198 -33
  270. package/pipeline/scripts/build-lock.sh +120 -0
  271. package/pipeline/scripts/build-references.mjs +4 -1
  272. package/pipeline/scripts/build-stack-plugins.mjs +59 -22
  273. package/pipeline/scripts/capture-flush.sh +1 -1
  274. package/pipeline/scripts/capture-resume.sh +13 -9
  275. package/pipeline/scripts/check-derived-drift.mjs +52 -11
  276. package/pipeline/scripts/commands.mjs +88 -0
  277. package/pipeline/scripts/constitution.mjs +362 -0
  278. package/pipeline/scripts/contract-server.mjs +776 -0
  279. package/pipeline/scripts/cost-analyze.mjs +89 -39
  280. package/pipeline/scripts/diff-explain.mjs +12 -1
  281. package/pipeline/scripts/doctor.mjs +77 -28
  282. package/pipeline/scripts/evidence-gate.mjs +192 -12
  283. package/pipeline/scripts/feedback-send.mjs +4 -2
  284. package/pipeline/scripts/gate-ledger.mjs +449 -0
  285. package/pipeline/scripts/gc-abandoned.sh +132 -13
  286. package/pipeline/scripts/gen-facts.mjs +31 -15
  287. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  288. package/pipeline/scripts/github-ssh-setup.sh +140 -29
  289. package/pipeline/scripts/graph-mermaid.mjs +4 -1
  290. package/pipeline/scripts/issues.mjs +236 -0
  291. package/pipeline/scripts/jira-attach.sh +6 -2
  292. package/pipeline/scripts/jira-search.sh +4 -3
  293. package/pipeline/scripts/keychain-save.sh +125 -24
  294. package/pipeline/scripts/keychain.py +63 -93
  295. package/pipeline/scripts/launch-request.mjs +747 -0
  296. package/pipeline/scripts/localize-commands.mjs +4 -10
  297. package/pipeline/scripts/log-metric.sh +6 -5
  298. package/pipeline/scripts/maturity-followup.mjs +13 -4
  299. package/pipeline/scripts/memory-save.sh +25 -0
  300. package/pipeline/scripts/migrate-prefs.mjs +4 -3
  301. package/pipeline/scripts/open-questions-gate.mjs +276 -0
  302. package/pipeline/scripts/phase-tracker.sh +41 -27
  303. package/pipeline/scripts/phase0-exit-gate.mjs +22 -4
  304. package/pipeline/scripts/phone-devices.mjs +224 -0
  305. package/pipeline/scripts/plan-coverage-gate.mjs +200 -66
  306. package/pipeline/scripts/plan-critique-gate.mjs +591 -0
  307. package/pipeline/scripts/pr-request.mjs +188 -0
  308. package/pipeline/scripts/pre-commit-check.sh +115 -4
  309. package/pipeline/scripts/probe-evidence-capability.sh +44 -5
  310. package/pipeline/scripts/record-phase.mjs +71 -0
  311. package/pipeline/scripts/render-agent-log-cost.sh +17 -2
  312. package/pipeline/scripts/render-cost-summary.sh +1 -1
  313. package/pipeline/scripts/render-work-summary.sh +1 -1
  314. package/pipeline/scripts/require-supported-version.sh +4 -1
  315. package/pipeline/scripts/research-gate.mjs +704 -0
  316. package/pipeline/scripts/review-decision-gate.mjs +403 -0
  317. package/pipeline/scripts/routine-registry.mjs +5 -2
  318. package/pipeline/scripts/runs-index.mjs +135 -27
  319. package/pipeline/scripts/scaffold-gate.mjs +393 -0
  320. package/pipeline/scripts/skill-conformance.mjs +25 -8
  321. package/pipeline/scripts/skill-siblings.mjs +2 -1
  322. package/pipeline/scripts/smoke-cross-cli-behavior.sh +32 -6
  323. package/pipeline/scripts/smoke-schema-validation.sh +6 -2
  324. package/pipeline/scripts/spec-consistency-gate.mjs +469 -0
  325. package/pipeline/scripts/symbol-existence-gate.mjs +450 -0
  326. package/pipeline/scripts/test-gap-scan.mjs +40 -2
  327. package/pipeline/scripts/test-integrity-gate.mjs +20 -4
  328. package/pipeline/scripts/test-strength.mjs +484 -0
  329. package/pipeline/scripts/test-summary.mjs +651 -0
  330. package/pipeline/scripts/triage-memory.mjs +49 -9
  331. package/pipeline/scripts/unattended_policy.py +2786 -0
  332. package/pipeline/scripts/uninstall.mjs +10 -10
  333. package/pipeline/scripts/update-issue-progress.sh +1 -1
  334. package/pipeline/scripts/usage-identity.mjs +288 -0
  335. package/pipeline/scripts/usage-register.mjs +185 -63
  336. package/pipeline/scripts/usage-report.mjs +230 -66
  337. package/pipeline/scripts/validate-complaint-doc.mjs +28 -10
  338. package/pipeline/scripts/validate-planning.mjs +6 -0
  339. package/pipeline/scripts/verify-citations.mjs +151 -38
  340. package/pipeline/scripts/verify.mjs +58 -18
  341. package/pipeline/scripts/worktree-prepare.sh +126 -0
  342. package/pipeline/scripts/worktrees.mjs +124 -0
  343. package/pipeline/scripts/write-state.mjs +48 -17
  344. package/pipeline/skills/.skill-manifest.json +222 -226
  345. package/pipeline/skills/.skills-index.json +77 -88
  346. package/pipeline/skills/shared/README.md +44 -45
  347. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +3 -2
  348. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +3 -2
  349. package/pipeline/skills/shared/core/multi-agent/SKILL.md +10 -9
  350. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +6 -5
  351. package/pipeline/skills/shared/core/multi-agent-analysis-jira/SKILL.md +11 -3
  352. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +2 -1
  353. package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +4 -3
  354. package/pipeline/skills/shared/core/multi-agent-autopilot-off/SKILL.md +32 -6
  355. package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +66 -8
  356. package/pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md +27 -9
  357. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +2 -1
  358. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +7 -4
  359. package/pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md +3 -2
  360. package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +2 -1
  361. package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +7 -5
  362. package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +2 -1
  363. package/pipeline/skills/shared/core/multi-agent-doctor/SKILL.md +3 -2
  364. package/pipeline/skills/shared/core/multi-agent-feedback/SKILL.md +2 -1
  365. package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +2 -1
  366. package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +2 -1
  367. package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +2 -1
  368. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +2 -1
  369. package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -1
  370. package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +3 -2
  371. package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +2 -1
  372. package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +7 -4
  373. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -1
  374. package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +2 -1
  375. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +2 -1
  376. package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +2 -1
  377. package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +2 -1
  378. package/pipeline/skills/shared/core/multi-agent-prune-prompts/SKILL.md +2 -1
  379. package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +2 -1
  380. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +2 -1
  381. package/pipeline/skills/shared/core/multi-agent-research/SKILL.md +35 -0
  382. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +7 -3
  383. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +7 -5
  384. package/pipeline/skills/shared/core/multi-agent-review-analysis/SKILL.md +2 -1
  385. package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +3 -2
  386. package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +2 -1
  387. package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +2 -1
  388. package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +2 -1
  389. package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +2 -1
  390. package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +2 -1
  391. package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +3 -2
  392. package/pipeline/skills/shared/core/multi-agent-scaffold/SKILL.md +30 -0
  393. package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +2 -1
  394. package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +4 -3
  395. package/pipeline/skills/shared/core/multi-agent-security-review/SKILL.md +2 -1
  396. package/pipeline/skills/shared/core/multi-agent-serve/SKILL.md +60 -0
  397. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +8 -8
  398. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +2 -1
  399. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +7 -8
  400. package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -1
  401. package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +2 -1
  402. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +10 -10
  403. package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +2 -1
  404. package/pipeline/skills/shared/core/multi-agent-test-accessibility/SKILL.md +2 -1
  405. package/pipeline/skills/shared/core/multi-agent-test-dark-mode/SKILL.md +2 -1
  406. package/pipeline/skills/shared/core/multi-agent-test-dynamic-type/SKILL.md +2 -1
  407. package/pipeline/skills/shared/core/multi-agent-test-screenshots/SKILL.md +2 -1
  408. package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +2 -1
  409. package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +3 -2
  410. package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +2 -1
  411. package/pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md +46 -0
  412. package/pipeline/skills/shared/external/NOTICE-dimillian-skills.md +9 -3
  413. package/pipeline/skills/shared/external/NOTICE-paul-hudson-skills.md +54 -0
  414. package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +9 -11
  415. package/pipeline/skills/shared/external/NOTICE-vibeship-spawner-skills.md +203 -0
  416. package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +10 -3
  417. package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +131 -25
  418. package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -3
  419. package/pipeline/skills/shared/external/alarmkit/SKILL.md +2 -1
  420. package/pipeline/skills/shared/external/android-architecture/SKILL.md +85 -76
  421. package/pipeline/skills/shared/external/android-build-quality-gates/SKILL.md +51 -3
  422. package/pipeline/skills/shared/external/android-build-quality-gates/references/patterns.md +9 -0
  423. package/pipeline/skills/shared/external/android-datastore/SKILL.md +4 -3
  424. package/pipeline/skills/shared/external/android-design-tokens-codegen/SKILL.md +4 -3
  425. package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +106 -181
  426. package/pipeline/skills/shared/external/android-jetpack-compose-expert/references/patterns.md +147 -0
  427. package/pipeline/skills/shared/external/android-mvi-viewmodel/SKILL.md +45 -4
  428. package/pipeline/skills/shared/external/android-performance/SKILL.md +27 -2
  429. package/pipeline/skills/shared/external/android-performance/references/patterns.md +37 -37
  430. package/pipeline/skills/shared/external/api-patterns/SKILL.md +111 -67
  431. package/pipeline/skills/shared/external/api-patterns/references/contract-details.md +128 -0
  432. package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +136 -186
  433. package/pipeline/skills/shared/external/api-security-best-practices/references/abuse-controls.md +140 -0
  434. package/pipeline/skills/shared/external/api-security-best-practices/references/identity-and-access.md +207 -0
  435. package/pipeline/skills/shared/external/api-security-best-practices/references/operations.md +66 -0
  436. package/pipeline/skills/shared/external/api-security-best-practices/references/request-handling.md +175 -0
  437. package/pipeline/skills/shared/external/app-clips/SKILL.md +2 -0
  438. package/pipeline/skills/shared/external/app-intents/SKILL.md +2 -0
  439. package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +4 -3
  440. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +2 -0
  441. package/pipeline/skills/shared/external/app-store-review/SKILL.md +2 -0
  442. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +2 -0
  443. package/pipeline/skills/shared/external/architecture/SKILL.md +106 -39
  444. package/pipeline/skills/shared/external/architecture/references/adr-and-review.md +76 -0
  445. package/pipeline/skills/shared/external/authentication/SKILL.md +2 -0
  446. package/pipeline/skills/shared/external/avkit/SKILL.md +2 -0
  447. package/pipeline/skills/shared/external/background-processing/SKILL.md +2 -1
  448. package/pipeline/skills/shared/external/backlog/SKILL.md +3 -2
  449. package/pipeline/skills/shared/external/callkit-voip/SKILL.md +2 -0
  450. package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +1 -1
  451. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +3 -2
  452. package/pipeline/skills/shared/external/clean-code/SKILL.md +192 -90
  453. package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +2 -1
  454. package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +1 -1
  455. package/pipeline/skills/shared/external/compose-components/SKILL.md +4 -4
  456. package/pipeline/skills/shared/external/compose-navigation/SKILL.md +22 -22
  457. package/pipeline/skills/shared/external/compose-navigation/references/patterns.md +10 -10
  458. package/pipeline/skills/shared/external/compose-testing/SKILL.md +13 -6
  459. package/pipeline/skills/shared/external/compose-testing/references/patterns.md +59 -59
  460. package/pipeline/skills/shared/external/contacts-framework/SKILL.md +2 -0
  461. package/pipeline/skills/shared/external/context-compression/SKILL.md +118 -250
  462. package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +2 -0
  463. package/pipeline/skills/shared/external/core-data/SKILL.md +2 -0
  464. package/pipeline/skills/shared/external/core-motion/SKILL.md +2 -0
  465. package/pipeline/skills/shared/external/core-nfc/SKILL.md +2 -0
  466. package/pipeline/skills/shared/external/coreml/SKILL.md +2 -1
  467. package/pipeline/skills/shared/external/council/SKILL.md +2 -1
  468. package/pipeline/skills/shared/external/cryptokit/SKILL.md +2 -0
  469. package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
  470. package/pipeline/skills/shared/external/database-patterns/SKILL.md +3 -2
  471. package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +2 -0
  472. package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +130 -20
  473. package/pipeline/skills/shared/external/debugging-strategies/references/hard-cases.md +54 -0
  474. package/pipeline/skills/shared/external/device-integrity/SKILL.md +2 -0
  475. package/pipeline/skills/shared/external/docker-expert/SKILL.md +137 -381
  476. package/pipeline/skills/shared/external/docker-expert/references/patterns.md +98 -0
  477. package/pipeline/skills/shared/external/energykit/SKILL.md +2 -1
  478. package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +3 -1
  479. package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +2 -2
  480. package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +116 -185
  481. package/pipeline/skills/shared/external/fastapi-pro/references/app-structure.md +235 -0
  482. package/pipeline/skills/shared/external/fastapi-pro/references/testing-and-deployment.md +69 -0
  483. package/pipeline/skills/shared/external/firebase/SKILL.md +4 -3
  484. package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +151 -293
  485. package/pipeline/skills/shared/external/github-actions-templates/references/patterns.md +96 -0
  486. package/pipeline/skills/shared/external/healthkit/SKILL.md +2 -0
  487. package/pipeline/skills/shared/external/hig-components-content/SKILL.md +69 -72
  488. package/pipeline/skills/shared/external/hig-components-content/references/content-views.md +111 -0
  489. package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +77 -86
  490. package/pipeline/skills/shared/external/hig-components-layout/references/containers.md +98 -0
  491. package/pipeline/skills/shared/external/hig-components-status/SKILL.md +150 -78
  492. package/pipeline/skills/shared/external/hig-components-system/SKILL.md +76 -97
  493. package/pipeline/skills/shared/external/hig-components-system/references/surfaces.md +98 -0
  494. package/pipeline/skills/shared/external/hig-foundations/SKILL.md +48 -76
  495. package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +132 -0
  496. package/pipeline/skills/shared/external/hig-inputs/SKILL.md +147 -106
  497. package/pipeline/skills/shared/external/hig-patterns/SKILL.md +61 -77
  498. package/pipeline/skills/shared/external/hig-patterns/references/patterns.md +92 -0
  499. package/pipeline/skills/shared/external/hig-platforms/SKILL.md +147 -77
  500. package/pipeline/skills/shared/external/hig-technologies/SKILL.md +61 -121
  501. package/pipeline/skills/shared/external/hig-technologies/references/technologies.md +108 -0
  502. package/pipeline/skills/shared/external/homekit-matter/SKILL.md +2 -0
  503. package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +1 -1
  504. package/pipeline/skills/shared/external/html-semantic/SKILL.md +3 -2
  505. package/pipeline/skills/shared/external/humanizer/SKILL.md +2 -1
  506. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +2 -0
  507. package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +2 -1
  508. package/pipeline/skills/shared/external/ios-coding-standard/references/STANDARD.md +14 -2
  509. package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +2 -2
  510. package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +4 -3
  511. package/pipeline/skills/shared/external/ios-localization/SKILL.md +8 -6
  512. package/pipeline/skills/shared/external/ios-localization/evals/evals.json +2 -2
  513. package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +11 -11
  514. package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +2 -1
  515. package/pipeline/skills/shared/external/ios-networking/SKILL.md +2 -0
  516. package/pipeline/skills/shared/external/ios-simulator/SKILL.md +2 -0
  517. package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +102 -193
  518. package/pipeline/skills/shared/external/kotlin-coroutines-expert/references/patterns.md +103 -0
  519. package/pipeline/skills/shared/external/live-activities/SKILL.md +4 -2
  520. package/pipeline/skills/shared/external/live-activities/evals/evals.json +2 -2
  521. package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +7 -9
  522. package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +3 -3
  523. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +2 -2
  524. package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +4 -3
  525. package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +5 -3
  526. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +2 -0
  527. package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +1 -1
  528. package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +2 -0
  529. package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +1 -1
  530. package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +149 -46
  531. package/pipeline/skills/shared/external/monorepo-architect/references/patterns.md +70 -0
  532. package/pipeline/skills/shared/external/musickit-audio/SKILL.md +2 -0
  533. package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +1 -1
  534. package/pipeline/skills/shared/external/natural-language/SKILL.md +2 -0
  535. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +3 -2
  536. package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +91 -21
  537. package/pipeline/skills/shared/external/nodejs-backend-patterns/references/runtime-patterns.md +247 -0
  538. package/pipeline/skills/shared/external/nodejs-backend-patterns/references/testing-and-frameworks.md +57 -0
  539. package/pipeline/skills/shared/external/observability-engineer/SKILL.md +155 -232
  540. package/pipeline/skills/shared/external/observability-engineer/references/patterns.md +75 -0
  541. package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +2 -0
  542. package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +2 -2
  543. package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +18 -18
  544. package/pipeline/skills/shared/external/pdfkit/SKILL.md +2 -1
  545. package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +2 -0
  546. package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +1 -1
  547. package/pipeline/skills/shared/external/permissionkit/SKILL.md +2 -0
  548. package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +2 -1
  549. package/pipeline/skills/shared/external/push-notifications/SKILL.md +2 -0
  550. package/pipeline/skills/shared/external/python-patterns/SKILL.md +3 -2
  551. package/pipeline/skills/shared/external/react-best-practices/SKILL.md +3 -2
  552. package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +2 -2
  553. package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +1 -1
  554. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +3 -2
  555. package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +7 -7
  556. package/pipeline/skills/shared/external/retrofit-networking/references/patterns.md +69 -69
  557. package/pipeline/skills/shared/external/room-database/references/patterns.md +126 -126
  558. package/pipeline/skills/shared/external/search-first/SKILL.md +2 -1
  559. package/pipeline/skills/shared/external/security-review/SKILL.md +4 -3
  560. package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +2 -2
  561. package/pipeline/skills/shared/external/signal-community/SKILL.md +1 -1
  562. package/pipeline/skills/shared/external/skill-creator/SKILL.md +2 -1
  563. package/pipeline/skills/shared/external/speech-recognition/SKILL.md +2 -1
  564. package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +2 -0
  565. package/pipeline/skills/shared/external/storekit/SKILL.md +2 -0
  566. package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +2 -0
  567. package/pipeline/skills/shared/external/swift-architecture/SKILL.md +2 -1
  568. package/pipeline/skills/shared/external/swift-charts/SKILL.md +2 -1
  569. package/pipeline/skills/shared/external/swift-codable/SKILL.md +2 -0
  570. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +3 -1
  571. package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +5 -4
  572. package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -1
  573. package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +2 -0
  574. package/pipeline/skills/shared/external/swift-language/SKILL.md +3 -1
  575. package/pipeline/skills/shared/external/swift-security/SKILL.md +2 -1
  576. package/pipeline/skills/shared/external/swift-testing/SKILL.md +2 -0
  577. package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -1
  578. package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +10 -0
  579. package/pipeline/skills/shared/external/swiftdata/SKILL.md +2 -0
  580. package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -1
  581. package/pipeline/skills/shared/external/swiftlint/SKILL.md +2 -0
  582. package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +2 -0
  583. package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +3 -1
  584. package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +2 -0
  585. package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +2 -0
  586. package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +2 -0
  587. package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +2 -0
  588. package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +3 -1
  589. package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +3 -1
  590. package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +5 -4
  591. package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -1
  592. package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +5 -4
  593. package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +2 -0
  594. package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +4 -3
  595. package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +2 -0
  596. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
  597. package/pipeline/skills/shared/external/testing-backend/SKILL.md +3 -2
  598. package/pipeline/skills/shared/external/tipkit/SKILL.md +2 -0
  599. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +3 -2
  600. package/pipeline/skills/shared/external/vision-framework/SKILL.md +2 -0
  601. package/pipeline/skills/shared/external/vue-composition/SKILL.md +3 -2
  602. package/pipeline/skills/shared/external/weatherkit/SKILL.md +2 -0
  603. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +3 -2
  604. package/pipeline/skills/shared/external/web-performance/SKILL.md +3 -2
  605. package/pipeline/skills/shared/external/web-testing/SKILL.md +3 -2
  606. package/pipeline/skills/shared/external/widgetkit/SKILL.md +2 -0
  607. package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +1 -1
  608. package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +2 -0
  609. package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +2 -0
  610. package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +2 -0
  611. package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +2 -0
  612. package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +2 -0
  613. package/pipeline/skills/skills-index.md +40 -41
  614. package/docs/token-budget-history.md +0 -24
  615. package/pipeline/skills/shared/external/agentflow/SKILL.md +0 -199
  616. package/pipeline/skills/shared/external/android-ui-verification/SKILL.md +0 -66
  617. package/pipeline/skills/shared/external/api-security-best-practices/references/auth.md +0 -299
  618. package/pipeline/skills/shared/external/api-security-best-practices/references/input-validation.md +0 -255
  619. package/pipeline/skills/shared/external/api-security-best-practices/references/rate-limiting.md +0 -167
  620. package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +0 -116
  621. package/pipeline/skills/shared/external/ios-developer/SKILL.md +0 -216
@@ -1,413 +1,169 @@
1
1
  ---
2
2
  name: docker-expert
3
- description: "You are an advanced Docker containerization expert with comprehensive, practical knowledge of container optimization, security hardening, multi-stage builds, orchestration patterns, and production deployment strategies based on current industry best practices. Use when writing or reviewing a Dockerfile, compose setup, or container build."
4
- category: devops
5
- risk: unknown
6
- source: community
7
- date_added: "2026-02-27"
3
+ description: "Dockerfiles and images: multi-stage builds, BuildKit cache and secret mounts, slim or distroless bases, non-root, healthchecks, scanning, multi-arch, Compose for dev. Use when writing, shrinking or hardening a container build."
4
+ metadata:
5
+ risk: safe
6
+ source: multi-agent-pipeline
7
+ date_added: "2026-09-25"
8
8
  ---
9
9
 
10
- # Docker Expert
11
-
12
- You are an advanced Docker containerization expert with comprehensive, practical knowledge of container optimization, security hardening, multi-stage builds, orchestration patterns, and production deployment strategies based on current industry best practices.
13
-
14
- ## When invoked:
15
-
16
- 0. If the issue requires ultra-specific expertise outside Docker, recommend switching and stop:
17
- - Kubernetes orchestration, pods, services, ingress → kubernetes-expert (future)
18
- - GitHub Actions CI/CD with containers → github-actions-expert
19
- - AWS ECS/Fargate or cloud-specific container services → devops-expert
20
- - Database containerization with complex persistence → database-expert
21
-
22
- Example to output:
23
- "This requires Kubernetes orchestration expertise. Please invoke: 'Use the kubernetes-expert subagent.' Stopping here."
24
-
25
- 1. Analyze container setup comprehensively:
26
-
27
- **Use internal tools first (Read, Grep, Glob) for better performance. Shell commands are fallbacks.**
28
-
29
- ```bash
30
- # Docker environment detection
31
- docker --version 2>/dev/null || echo "No Docker installed"
32
- docker info | grep -E "Server Version|Storage Driver|Container Runtime" 2>/dev/null
33
- docker context ls 2>/dev/null | head -3
34
-
35
- # Project structure analysis
36
- find . -name "Dockerfile*" -type f | head -10
37
- find . -name "*compose*.yml" -o -name "*compose*.yaml" -type f | head -5
38
- find . -name ".dockerignore" -type f | head -3
39
-
40
- # Container status if running
41
- docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" 2>/dev/null | head -10
42
- docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" 2>/dev/null | head -10
43
- ```
44
-
45
- **After detection, adapt approach:**
46
- - Match existing Dockerfile patterns and base images
47
- - Respect multi-stage build conventions
48
- - Consider development vs production environments
49
- - Account for existing orchestration setup (Compose/Swarm)
50
-
51
- 2. Identify the specific problem category and complexity level
52
-
53
- 3. Apply the appropriate solution strategy from my expertise
54
-
55
- 4. Validate thoroughly:
56
- ```bash
57
- # Build and security validation
58
- docker build --no-cache -t test-build . 2>/dev/null && echo "Build successful"
59
- docker history test-build --no-trunc 2>/dev/null | head -5
60
- docker scout quickview test-build 2>/dev/null || echo "No Docker Scout"
61
-
62
- # Runtime validation
63
- docker run --rm -d --name validation-test test-build 2>/dev/null
64
- docker exec validation-test ps aux 2>/dev/null | head -3
65
- docker stop validation-test 2>/dev/null
66
-
67
- # Compose validation
68
- docker-compose config 2>/dev/null && echo "Compose config valid"
69
- ```
70
-
71
- ## Core Expertise Areas
72
-
73
- ### 1. Dockerfile Optimization & Multi-Stage Builds
74
-
75
- **High-priority patterns I address:**
76
- - **Layer caching optimization**: Separate dependency installation from source code copying
77
- - **Multi-stage builds**: Minimize production image size while keeping build flexibility
78
- - **Build context efficiency**: Comprehensive .dockerignore and build context management
79
- - **Base image selection**: Alpine vs distroless vs scratch image strategies
80
-
81
- **Key techniques:**
82
- ```dockerfile
83
- # Optimized multi-stage pattern
84
- FROM node:18-alpine AS deps
85
- WORKDIR /app
86
- COPY package*.json ./
87
- RUN npm ci --only=production && npm cache clean --force
10
+ # Docker Images and Compose
88
11
 
89
- FROM node:18-alpine AS build
90
- WORKDIR /app
91
- COPY package*.json ./
92
- RUN npm ci
93
- COPY . .
94
- RUN npm run build && npm prune --production
12
+ An image is a deployable artifact. It should be small enough to pull quickly,
13
+ reproducible enough that the same commit gives the same result, and boring
14
+ enough at runtime that nothing in it surprises an operator. This skill is the
15
+ checklist for getting there, ordered by how much each item usually buys.
95
16
 
96
- FROM node:18-alpine AS runtime
97
- RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001
98
- WORKDIR /app
99
- COPY --from=deps --chown=nextjs:nodejs /app/node_modules ./node_modules
100
- COPY --from=build --chown=nextjs:nodejs /app/dist ./dist
101
- COPY --from=build --chown=nextjs:nodejs /app/package*.json ./
102
- USER nextjs
103
- EXPOSE 3000
104
- HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
105
- CMD curl -f http://localhost:3000/health || exit 1
106
- CMD ["node", "dist/index.js"]
107
- ```
17
+ Pipeline wiring (where the image is built, pushed and promoted) belongs to
18
+ `ci-cd-pipelines`; workflow YAML belongs to `github-actions-templates`.
108
19
 
109
- ### 2. Container Security Hardening
20
+ ## Review order
110
21
 
111
- **Security focus areas:**
112
- - **Non-root user configuration**: Proper user creation with specific UID/GID
113
- - **Secrets management**: Docker secrets, build-time secrets, avoiding env vars
114
- - **Base image security**: Regular updates, minimal attack surface
115
- - **Runtime security**: Capability restrictions, resource limits
22
+ 1. Does the build context contain only what the build needs?
23
+ 2. Is the layer order stable-first, volatile-last, so the cache survives edits?
24
+ 3. Does the final stage carry only runtime files?
25
+ 4. Does the process run as a non-root user with a read-only-friendly layout?
26
+ 5. Are secrets kept out of every layer and of the build history?
27
+ 6. Can an orchestrator tell whether the container is healthy and stop it cleanly?
28
+ 7. Are base images pinned and scanned?
116
29
 
117
- **Security patterns:**
118
- ```dockerfile
119
- # Security-hardened container
120
- FROM node:18-alpine
121
- RUN addgroup -g 1001 -S appgroup && \
122
- adduser -S appuser -u 1001 -G appgroup
123
- WORKDIR /app
124
- COPY --chown=appuser:appgroup package*.json ./
125
- RUN npm ci --only=production
126
- COPY --chown=appuser:appgroup . .
127
- USER 1001
128
- # Drop capabilities, set read-only root filesystem
129
- ```
30
+ ## 1. Build context
31
+
32
+ Everything in the context is sent to the builder and can invalidate `COPY . .`.
33
+ Start `.dockerignore` from a deny list and widen only when a build fails:
130
34
 
131
- ### 3. Docker Compose Orchestration
132
-
133
- **Orchestration expertise:**
134
- - **Service dependency management**: Health checks, startup ordering
135
- - **Network configuration**: Custom networks, service discovery
136
- - **Environment management**: Dev/staging/prod configurations
137
- - **Volume strategies**: Named volumes, bind mounts, data persistence
138
-
139
- **Production-ready compose pattern:**
140
- ```yaml
141
- version: '3.8'
142
- services:
143
- app:
144
- build:
145
- context: .
146
- target: production
147
- depends_on:
148
- db:
149
- condition: service_healthy
150
- networks:
151
- - frontend
152
- - backend
153
- healthcheck:
154
- test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
155
- interval: 30s
156
- timeout: 10s
157
- retries: 3
158
- start_period: 40s
159
- deploy:
160
- resources:
161
- limits:
162
- cpus: '0.5'
163
- memory: 512M
164
- reservations:
165
- cpus: '0.25'
166
- memory: 256M
167
-
168
- db:
169
- image: postgres:15-alpine
170
- environment:
171
- POSTGRES_DB_FILE: /run/secrets/db_name
172
- POSTGRES_USER_FILE: /run/secrets/db_user
173
- POSTGRES_PASSWORD_FILE: /run/secrets/db_password
174
- secrets:
175
- - db_name
176
- - db_user
177
- - db_password
178
- volumes:
179
- - postgres_data:/var/lib/postgresql/data
180
- networks:
181
- - backend
182
- healthcheck:
183
- test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
184
- interval: 10s
185
- timeout: 5s
186
- retries: 5
187
-
188
- networks:
189
- frontend:
190
- driver: bridge
191
- backend:
192
- driver: bridge
193
- internal: true
194
-
195
- volumes:
196
- postgres_data:
197
-
198
- secrets:
199
- db_name:
200
- external: true
201
- db_user:
202
- external: true
203
- db_password:
204
- external: true
205
35
  ```
36
+ .git
37
+ **/node_modules
38
+ **/__pycache__
39
+ **/.venv
40
+ dist
41
+ coverage
42
+ *.log
43
+ .env*
44
+ Dockerfile*
45
+ compose*.yaml
46
+ ```
47
+
48
+ A `.env` file that reaches the context ends up in a layer the moment someone
49
+ writes `COPY . .`. Ignoring it is cheaper than remembering.
206
50
 
207
- ### 4. Image Size Optimization
51
+ ## 2. Layer order and caching
208
52
 
209
- **Size reduction strategies:**
210
- - **Distroless images**: Minimal runtime environments
211
- - **Build artifact optimization**: Remove build tools and cache
212
- - **Layer consolidation**: Combine RUN commands strategically
213
- - **Multi-stage artifact copying**: Only copy necessary files
53
+ Copy dependency manifests, install, then copy source. Source changes daily;
54
+ the lockfile changes weekly.
214
55
 
215
- **Optimization techniques:**
216
56
  ```dockerfile
217
- # Minimal production image
218
- FROM gcr.io/distroless/nodejs18-debian11
219
- COPY --from=build /app/dist /app
220
- COPY --from=build /app/node_modules /app/node_modules
57
+ # syntax=docker/dockerfile:1.7
58
+ FROM node:22-bookworm-slim AS deps
221
59
  WORKDIR /app
222
- EXPOSE 3000
223
- CMD ["index.js"]
60
+ COPY package.json package-lock.json ./
61
+ RUN --mount=type=cache,target=/root/.npm \
62
+ npm ci --omit=dev
224
63
  ```
225
64
 
226
- ### 5. Development Workflow Integration
227
-
228
- **Development patterns:**
229
- - **Hot reloading setup**: Volume mounting and file watching
230
- - **Debug configuration**: Port exposure and debugging tools
231
- - **Testing integration**: Test-specific containers and environments
232
- - **Development containers**: Remote development container support via CLI tools
233
-
234
- **Development workflow:**
235
- ```yaml
236
- # Development override
237
- services:
238
- app:
239
- build:
240
- context: .
241
- target: development
242
- volumes:
243
- - .:/app
244
- - /app/node_modules
245
- - /app/dist
246
- environment:
247
- - NODE_ENV=development
248
- - DEBUG=app:*
249
- ports:
250
- - "9229:9229" # Debug port
251
- command: npm run dev
252
- ```
65
+ BuildKit cache mounts keep the package manager cache between builds without
66
+ putting it in the image. Equivalents:
253
67
 
254
- ### 6. Performance & Resource Management
255
-
256
- **Performance optimization:**
257
- - **Resource limits**: CPU, memory constraints for stability
258
- - **Build performance**: Parallel builds, cache utilization
259
- - **Runtime performance**: Process management, signal handling
260
- - **Monitoring integration**: Health checks, metrics exposure
261
-
262
- **Resource management:**
263
- ```yaml
264
- services:
265
- app:
266
- deploy:
267
- resources:
268
- limits:
269
- cpus: '1.0'
270
- memory: 1G
271
- reservations:
272
- cpus: '0.5'
273
- memory: 512M
274
- restart_policy:
275
- condition: on-failure
276
- delay: 5s
277
- max_attempts: 3
278
- window: 120s
279
- ```
68
+ | Tool | Mount target |
69
+ |------|--------------|
70
+ | npm | `/root/.npm` |
71
+ | pnpm | `/root/.local/share/pnpm/store` |
72
+ | pip / uv | `/root/.cache/pip`, `/root/.cache/uv` |
73
+ | Go | `/go/pkg/mod` and `/root/.cache/go-build` |
74
+ | apt | `/var/cache/apt` and `/var/lib/apt` with `sharing=locked` |
280
75
 
281
- ## Advanced Problem-Solving Patterns
76
+ For apt, remove the image's `docker-clean` hook or the cache mount stays empty,
77
+ and always pair `update` and `install` in one `RUN`.
282
78
 
283
- ### Cross-Platform Builds
284
- ```bash
285
- # Multi-architecture builds
286
- docker buildx create --name multiarch-builder --use
287
- docker buildx build --platform linux/amd64,linux/arm64 \
288
- -t myapp:latest --push .
289
- ```
79
+ ## 4. Runtime user and filesystem
290
80
 
291
- ### Build Cache Optimization
292
81
  ```dockerfile
293
- # Mount build cache for package managers
294
- FROM node:18-alpine AS deps
82
+ FROM python:3.13-slim
83
+ RUN groupadd --system app && useradd --system --gid app --home /app app
295
84
  WORKDIR /app
296
- COPY package*.json ./
297
- RUN --mount=type=cache,target=/root/.npm \
298
- npm ci --only=production
85
+ COPY --from=build --chown=app:app /app/.venv /app/.venv
86
+ COPY --chown=app:app src/ ./src/
87
+ USER app
88
+ ENV PATH="/app/.venv/bin:$PATH" PYTHONUNBUFFERED=1
89
+ CMD ["python", "-m", "src.products_api"]
299
90
  ```
300
91
 
301
- ### Secrets Management
92
+ - Numeric `USER 10001` works with Kubernetes `runAsNonRoot` checks, which cannot
93
+ resolve names.
94
+ - Write only to declared volumes or `/tmp`, so the container can run with
95
+ `read_only: true`.
96
+ - Listen on a port above 1024; a non-root process cannot bind lower ones
97
+ without extra capabilities.
98
+
99
+ ## 5. Secrets
100
+
101
+ Never `ARG` or `ENV` a token: both are visible in `docker history` and in the
102
+ image config. Use a secret mount, which exists only for that `RUN`:
103
+
302
104
  ```dockerfile
303
- # Build-time secrets (BuildKit)
304
- FROM alpine
305
- RUN --mount=type=secret,id=api_key \
306
- API_KEY=$(cat /run/secrets/api_key) && \
307
- # Use API_KEY for build process
105
+ RUN --mount=type=secret,id=npm_token,env=NPM_TOKEN \
106
+ npm ci
308
107
  ```
309
108
 
310
- ### Health Check Strategies
109
+ ```bash
110
+ docker buildx build --secret id=npm_token,env=NPM_TOKEN .
111
+ ```
112
+
113
+ For private Git dependencies use `--mount=type=ssh` with `--ssh default`.
114
+ Runtime secrets come from the orchestrator (mounted files or env injected at
115
+ start), never from the image.
116
+
117
+ ## 6. Process behaviour
118
+
119
+ - Exec form (`CMD ["bin", "arg"]`) so the app is PID 1 and receives `SIGTERM`.
120
+ Shell form wraps it in `/bin/sh -c`, which does not forward signals.
121
+ - Handle `SIGTERM`: stop accepting work, finish requests already running, exit within
122
+ the orchestrator's grace period. Add `--init` or `tini` when the app spawns
123
+ children it does not reap.
124
+ - Log to stdout and stderr; let the platform collect them.
125
+ - `HEALTHCHECK` is honoured by Docker and Compose but ignored by Kubernetes,
126
+ which uses its own probes. Keep the health endpoint cheap and dependency-free
127
+ for liveness; check dependencies only in readiness.
128
+
311
129
  ```dockerfile
312
- # Sophisticated health monitoring
313
- COPY health-check.sh /usr/local/bin/
314
- RUN chmod +x /usr/local/bin/health-check.sh
315
- HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
316
- CMD ["/usr/local/bin/health-check.sh"]
130
+ HEALTHCHECK --interval=15s --timeout=3s --start-period=20s --retries=3 \
131
+ CMD ["/app/.venv/bin/python", "-c", "import urllib.request,sys; urllib.request.urlopen('http://127.0.0.1:8080/healthz', timeout=2)"]
317
132
  ```
318
133
 
319
- ## Code Review Checklist
320
-
321
- When reviewing Docker configurations, focus on:
322
-
323
- ### Dockerfile Optimization & Multi-Stage Builds
324
- - [ ] Dependencies copied before source code for optimal layer caching
325
- - [ ] Multi-stage builds separate build and runtime environments
326
- - [ ] Production stage only includes necessary artifacts
327
- - [ ] Build context optimized with comprehensive .dockerignore
328
- - [ ] Base image selection appropriate (Alpine vs distroless vs scratch)
329
- - [ ] RUN commands consolidated to minimize layers where beneficial
330
-
331
- ### Container Security Hardening
332
- - [ ] Non-root user created with specific UID/GID (not default)
333
- - [ ] Container runs as non-root user (USER directive)
334
- - [ ] Secrets managed properly (not in ENV vars or layers)
335
- - [ ] Base images kept up-to-date and scanned for vulnerabilities
336
- - [ ] Minimal attack surface (only necessary packages installed)
337
- - [ ] Health checks implemented for container monitoring
338
-
339
- ### Docker Compose & Orchestration
340
- - [ ] Service dependencies properly defined with health checks
341
- - [ ] Custom networks configured for service isolation
342
- - [ ] Environment-specific configurations separated (dev/prod)
343
- - [ ] Volume strategies appropriate for data persistence needs
344
- - [ ] Resource limits defined to prevent resource exhaustion
345
- - [ ] Restart policies configured for production resilience
346
-
347
- ### Image Size & Performance
348
- - [ ] Final image size optimized (avoid unnecessary files/tools)
349
- - [ ] Build cache optimization implemented
350
- - [ ] Multi-architecture builds considered if needed
351
- - [ ] Artifact copying selective (only required files)
352
- - [ ] Package manager cache cleaned in same RUN layer
353
-
354
- ### Development Workflow Integration
355
- - [ ] Development targets separate from production
356
- - [ ] Hot reloading configured properly with volume mounts
357
- - [ ] Debug ports exposed when needed
358
- - [ ] Environment variables properly configured for different stages
359
- - [ ] Testing containers isolated from production builds
360
-
361
- ### Networking & Service Discovery
362
- - [ ] Port exposure limited to necessary services
363
- - [ ] Service naming follows conventions for discovery
364
- - [ ] Network security implemented (internal networks for backend)
365
- - [ ] Load balancing considerations addressed
366
- - [ ] Health check endpoints implemented and tested
367
-
368
- ## Common Issue Diagnostics
369
-
370
- ### Build Performance Issues
371
- **Symptoms**: Slow builds (10+ minutes), frequent cache invalidation
372
- **Root causes**: Poor layer ordering, large build context, no caching strategy
373
- **Solutions**: Multi-stage builds, .dockerignore optimization, dependency caching
374
-
375
- ### Security Vulnerabilities
376
- **Symptoms**: Security scan failures, exposed secrets, root execution
377
- **Root causes**: Outdated base images, hardcoded secrets, default user
378
- **Solutions**: Regular base updates, secrets management, non-root configuration
379
-
380
- ### Image Size Problems
381
- **Symptoms**: Images over 1GB, deployment slowness
382
- **Root causes**: Unnecessary files, build tools in production, poor base selection
383
- **Solutions**: Distroless images, multi-stage optimization, artifact selection
384
-
385
- ### Networking Issues
386
- **Symptoms**: Service communication failures, DNS resolution errors
387
- **Root causes**: Missing networks, port conflicts, service naming
388
- **Solutions**: Custom networks, health checks, proper service discovery
389
-
390
- ### Development Workflow Problems
391
- **Symptoms**: Hot reload failures, debugging difficulties, slow iteration
392
- **Root causes**: Volume mounting issues, port configuration, environment mismatch
393
- **Solutions**: Development-specific targets, proper volume strategy, debug configuration
394
-
395
- ## Integration & Handoff Guidelines
396
-
397
- **When to recommend other experts:**
398
- - **Kubernetes orchestration** → kubernetes-expert: Pod management, services, ingress
399
- - **CI/CD pipeline issues** → github-actions-expert: Build automation, deployment workflows
400
- - **Database containerization** → database-expert: Complex persistence, backup strategies
401
- - **Application-specific optimization** → Language experts: Code-level performance issues
402
- - **Infrastructure automation** → devops-expert: Terraform, cloud-specific deployments
403
-
404
- **Collaboration patterns:**
405
- - Provide Docker foundation for DevOps deployment automation
406
- - Create optimized base images for language-specific experts
407
- - Establish container standards for CI/CD integration
408
- - Define security baselines for production orchestration
409
-
410
- I provide comprehensive Docker containerization expertise with focus on practical optimization, security hardening, and production-ready patterns. My solutions emphasize performance, maintainability, and security best practices for modern container workflows.
411
-
412
- ## When to Use
413
- This skill is applicable to execute the workflow or actions described in the overview.
134
+ Distroless images have no `curl`; ship a tiny health binary or rely on the
135
+ orchestrator's probe.
136
+
137
+ ## 7. Pinning, scanning, provenance
138
+
139
+ - Pin bases by digest in release images (`FROM node:22-bookworm-slim@sha256:...`)
140
+ and let Renovate or Dependabot bump the digest.
141
+ - Scan in CI and fail on fixable critical findings: `docker scout cves`,
142
+ `trivy image`, or `grype`.
143
+ - Emit an SBOM and provenance attestation with
144
+ `docker buildx build --sbom=true --provenance=mode=max`.
145
+ - Add OCI labels (`org.opencontainers.image.source`, `.revision`, `.version`)
146
+ so a running image leads back to its commit.
147
+
148
+ ## Diagnosing a build
149
+
150
+ | Symptom | First check |
151
+ |---------|-------------|
152
+ | Every build reinstalls dependencies | a `COPY . .` before the install step, or a missing lockfile copy |
153
+ | Context upload is large | `.dockerignore`; run `docker buildx build --progress=plain` and read the context size |
154
+ | Image is hundreds of MB | `docker history --no-trunc` or `dive` to find the heavy layer |
155
+ | Works locally, fails on arm64 | a prebuilt native binary for one architecture only |
156
+ | Container ignores stop and is killed after 10s | shell-form `CMD`, or no `SIGTERM` handler |
157
+ | `permission denied` after adding `USER` | files copied without `--chown`, or writes outside a writable path |
158
+
159
+ ## Done means
160
+
161
+ - `docker buildx build` succeeds from a clean cache and from a warm one.
162
+ - Final image runs as non-root, has no compilers or package manager caches.
163
+ - No secret appears in `docker history` or `docker inspect`.
164
+ - Scanner reports no fixable critical vulnerability.
165
+ - The container stops within its grace period on `SIGTERM`.
166
+
167
+ ## References
168
+
169
+ - `references/patterns.md`: multi-stage Dockerfiles and choosing a runtime base, buildx multi-arch builds, and Compose v2 for local development. Load it when the task reaches those topics.
@@ -0,0 +1,98 @@
1
+ # Docker build patterns
2
+
3
+ Loaded on demand from `../SKILL.md`.
4
+
5
+ ## 3. Multi-stage builds
6
+
7
+ Build tools, compilers and dev dependencies stay in earlier stages. The last
8
+ stage copies artifacts only.
9
+
10
+ ```dockerfile
11
+ # syntax=docker/dockerfile:1.7
12
+ FROM golang:1.23 AS build
13
+ WORKDIR /src
14
+ COPY go.mod go.sum ./
15
+ RUN --mount=type=cache,target=/go/pkg/mod go mod download
16
+ COPY . .
17
+ RUN --mount=type=cache,target=/go/pkg/mod \
18
+ --mount=type=cache,target=/root/.cache/go-build \
19
+ CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/orders-api ./cmd/orders-api
20
+
21
+ FROM gcr.io/distroless/static-debian12:nonroot
22
+ COPY --from=build /out/orders-api /orders-api
23
+ EXPOSE 8080
24
+ ENTRYPOINT ["/orders-api"]
25
+ ```
26
+
27
+ Useful stage tricks:
28
+
29
+ - A `test` stage that runs the suite, built with `--target test` in CI, keeps
30
+ test tooling out of the release image.
31
+ - A `dev` stage with hot reload tools, selected in Compose with `target: dev`.
32
+ - `COPY --link` lets BuildKit reuse a layer even when an earlier layer changed.
33
+
34
+ ### Choosing the runtime base
35
+
36
+ | Base | Size | Shell | Fits |
37
+ |------|------|-------|------|
38
+ | `scratch` | none | no | static binaries that need no CA bundle or tzdata |
39
+ | `distroless/static` / `distroless/base` | very small | no | Go, Rust, JVM (`distroless/java21`) |
40
+ | `*-slim` (Debian) | small | yes | Python, Node, anything needing glibc and debugging |
41
+ | `alpine` | small | yes | when musl is known to be fine for every native dependency |
42
+
43
+ Alpine's musl changes DNS behaviour and breaks some prebuilt wheels and native
44
+ modules. Pick it on evidence, not by default.
45
+
46
+ ## Multi-architecture builds
47
+
48
+ ```bash
49
+ docker buildx create --use --name multi
50
+ docker buildx build \
51
+ --platform linux/amd64,linux/arm64 \
52
+ --cache-from type=registry,ref=registry.example.com/orders-api:buildcache \
53
+ --cache-to type=registry,ref=registry.example.com/orders-api:buildcache,mode=max \
54
+ -t registry.example.com/orders-api:1.4.0 --push .
55
+ ```
56
+
57
+ QEMU emulation works but is slow for compiled languages. Prefer cross
58
+ compilation in the build stage using `--platform=$BUILDPLATFORM` plus the
59
+ `TARGETOS` / `TARGETARCH` build args, or native runners per architecture.
60
+
61
+ ## Compose v2 for local development
62
+
63
+ Use `compose.yaml` and `docker compose` (the v1 `docker-compose` binary and the
64
+ top-level `version:` key are obsolete).
65
+
66
+ ```yaml
67
+ services:
68
+ api:
69
+ build: { context: ., target: dev }
70
+ ports: ["8080:8080"]
71
+ env_file: .env.local
72
+ depends_on:
73
+ db: { condition: service_healthy }
74
+ develop:
75
+ watch:
76
+ - action: sync
77
+ path: ./src
78
+ target: /app/src
79
+ - action: rebuild
80
+ path: package-lock.json
81
+ db:
82
+ image: postgres:17
83
+ environment:
84
+ POSTGRES_PASSWORD: devonly
85
+ volumes: [pgdata:/var/lib/postgresql/data]
86
+ healthcheck:
87
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
88
+ interval: 5s
89
+ retries: 10
90
+ volumes:
91
+ pgdata:
92
+ ```
93
+
94
+ - `depends_on` with `service_healthy` replaces sleep-and-retry wrappers.
95
+ - `docker compose watch` syncs files or rebuilds on change.
96
+ - Profiles (`profiles: [tools]`) keep optional services off by default.
97
+ - Compose is for development and small single-host deployments; production
98
+ orchestration settings (replicas, rollout) belong to the platform.
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  name: energykit
3
3
  description: "Query grid electricity forecasts and submit load events using EnergyKit to help users optimize home electricity usage. Use when building smart home apps, EV charger controls, HVAC scheduling, or energy management dashboards that guide users to use power during cleaner or cheaper grid periods."
4
+ metadata:
5
+ source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
4
6
  ---
5
-
6
7
  # EnergyKit
7
8
 
8
9
  Provide grid electricity forecasts to help users choose when to use electricity.