@mmerterden/multi-agent-pipeline 20.2.1 → 20.3.1

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 (622) hide show
  1. package/CHANGELOG.md +919 -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 +617 -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/usage-endpoint.mjs +33 -0
  148. package/pipeline/lib/user-facing.mjs +82 -0
  149. package/pipeline/lib/user-facing.sh +58 -0
  150. package/pipeline/multi-agent-refs/_dev-context.md +1 -1
  151. package/pipeline/multi-agent-refs/analysis/evidence.md +4 -0
  152. package/pipeline/multi-agent-refs/analysis/locked.md +2 -2
  153. package/pipeline/multi-agent-refs/analysis/render.md +4 -3
  154. package/pipeline/multi-agent-refs/analysis/resolve.md +3 -1
  155. package/pipeline/multi-agent-refs/analysis/synthesis.md +4 -5
  156. package/pipeline/multi-agent-refs/analysis-template.md +10 -17
  157. package/pipeline/multi-agent-refs/channels/jira.md +1 -1
  158. package/pipeline/multi-agent-refs/component-dispatch.md +3 -3
  159. package/pipeline/multi-agent-refs/conventions-defaults.md +32 -32
  160. package/pipeline/multi-agent-refs/cross-cli-contract.md +10 -17
  161. package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +37 -9
  162. package/pipeline/multi-agent-refs/features/autopilot-operations.md +277 -0
  163. package/pipeline/multi-agent-refs/features/constitution.md +196 -0
  164. package/pipeline/multi-agent-refs/features/doctor.md +6 -3
  165. package/pipeline/multi-agent-refs/features/external-context-injection.md +6 -1
  166. package/pipeline/multi-agent-refs/features/jira-context.md +1 -1
  167. package/pipeline/multi-agent-refs/features/maturity-followup.md +43 -23
  168. package/pipeline/multi-agent-refs/features/model-fallback.md +9 -0
  169. package/pipeline/multi-agent-refs/features/phone-api.md +306 -0
  170. package/pipeline/multi-agent-refs/features/plan-critic.md +159 -0
  171. package/pipeline/multi-agent-refs/features/research.md +150 -0
  172. package/pipeline/multi-agent-refs/features/review-decision.md +185 -0
  173. package/pipeline/multi-agent-refs/features/scaffold.md +160 -0
  174. package/pipeline/multi-agent-refs/features/security-audit.md +6 -2
  175. package/pipeline/multi-agent-refs/features/skill-conformance.md +4 -1
  176. package/pipeline/multi-agent-refs/features/stack-adapters.md +116 -0
  177. package/pipeline/multi-agent-refs/features/unattended-gates.md +316 -0
  178. package/pipeline/multi-agent-refs/features/unattended-security.md +731 -0
  179. package/pipeline/multi-agent-refs/features/url-enrichment.md +2 -2
  180. package/pipeline/multi-agent-refs/features/usage-reporting.md +127 -35
  181. package/pipeline/multi-agent-refs/features/verify-by-test.md +1 -1
  182. package/pipeline/multi-agent-refs/features/visual-evidence.md +7 -7
  183. package/pipeline/multi-agent-refs/keychain.md +6 -11
  184. package/pipeline/multi-agent-refs/payload-contracts.md +2 -2
  185. package/pipeline/multi-agent-refs/phases/log-format.md +2 -3
  186. package/pipeline/multi-agent-refs/phases/modes.md +10 -12
  187. package/pipeline/multi-agent-refs/phases/operations.md +11 -5
  188. package/pipeline/multi-agent-refs/phases/phase-0-init.md +73 -81
  189. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +22 -22
  190. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +42 -66
  191. package/pipeline/multi-agent-refs/phases/phase-3-review.md +45 -79
  192. package/pipeline/multi-agent-refs/phases/phase-4-commit.md +28 -38
  193. package/pipeline/multi-agent-refs/phases/phase-5-report.md +27 -25
  194. package/pipeline/multi-agent-refs/phases.md +1 -1
  195. package/pipeline/multi-agent-refs/picker-contract.md +1 -1
  196. package/pipeline/multi-agent-refs/progress-contract.md +13 -16
  197. package/pipeline/multi-agent-refs/readiness-review.md +1 -1
  198. package/pipeline/multi-agent-refs/research/engine.md +91 -0
  199. package/pipeline/multi-agent-refs/rules.md +6 -4
  200. package/pipeline/multi-agent-refs/setup/repo-discovery.md +2 -2
  201. package/pipeline/multi-agent-refs/tracker-contract.md +2 -2
  202. package/pipeline/multi-agent-refs/unattended-contract.md +68 -16
  203. package/pipeline/rules/figma-pipeline.md +12 -12
  204. package/pipeline/schemas/agent-state.schema.json +480 -18
  205. package/pipeline/schemas/analysis-spec.schema.json +4 -4
  206. package/pipeline/schemas/answer-request.schema.json +24 -0
  207. package/pipeline/schemas/answer-result.schema.json +28 -0
  208. package/pipeline/schemas/autopilot-config.schema.json +111 -13
  209. package/pipeline/schemas/command-parameters.schema.json +99 -0
  210. package/pipeline/schemas/constitution.schema.json +56 -0
  211. package/pipeline/schemas/contract-error.schema.json +52 -0
  212. package/pipeline/schemas/design-check-config.schema.json +5 -1
  213. package/pipeline/schemas/issues.schema.json +61 -0
  214. package/pipeline/schemas/launch-plan.schema.json +46 -0
  215. package/pipeline/schemas/launch-request.schema.json +45 -0
  216. package/pipeline/schemas/launch.json +61 -0
  217. package/pipeline/schemas/launch.schema.json +84 -0
  218. package/pipeline/schemas/phases.json +2 -2
  219. package/pipeline/schemas/phases.schema.json +68 -0
  220. package/pipeline/schemas/phone-devices.schema.json +61 -0
  221. package/pipeline/schemas/phone-signed-request.schema.json +67 -0
  222. package/pipeline/schemas/plan-critique.schema.json +99 -0
  223. package/pipeline/schemas/plan-todos.schema.json +7 -7
  224. package/pipeline/schemas/planning-output.schema.json +5 -0
  225. package/pipeline/schemas/pr-request.schema.json +46 -0
  226. package/pipeline/schemas/prefs.schema.json +79 -8
  227. package/pipeline/schemas/research-output.schema.json +118 -0
  228. package/pipeline/schemas/review-file-exclusions.schema.json +25 -0
  229. package/pipeline/schemas/reviewer-output.schema.json +40 -4
  230. package/pipeline/schemas/run-questions.json +392 -0
  231. package/pipeline/schemas/run-questions.schema.json +118 -0
  232. package/pipeline/schemas/runs-index.schema.json +189 -0
  233. package/pipeline/schemas/scaffold-manifest.schema.json +43 -0
  234. package/pipeline/schemas/secret-patterns.schema.json +28 -0
  235. package/pipeline/schemas/stack-adapters.json +527 -0
  236. package/pipeline/schemas/stack-adapters.schema.json +184 -0
  237. package/pipeline/schemas/token-budget.json +1 -1
  238. package/pipeline/schemas/token-budget.schema.json +26 -0
  239. package/pipeline/schemas/triage-output.schema.json +64 -3
  240. package/pipeline/schemas/unattended-policy.json +139 -0
  241. package/pipeline/schemas/unattended-policy.schema.json +73 -0
  242. package/pipeline/schemas/unattended-profile.json +248 -0
  243. package/pipeline/schemas/unattended-profile.schema.json +198 -0
  244. package/pipeline/schemas/worktrees.schema.json +51 -0
  245. package/pipeline/scripts/README.md +1 -0
  246. package/pipeline/scripts/_autopilot-config.mjs +130 -0
  247. package/pipeline/scripts/_autopilot-ops.mjs +567 -0
  248. package/pipeline/scripts/_autopilot-outcomes.mjs +174 -0
  249. package/pipeline/scripts/_command-contract.mjs +384 -0
  250. package/pipeline/scripts/_cost.mjs +40 -0
  251. package/pipeline/scripts/_notices.mjs +160 -0
  252. package/pipeline/scripts/_phone-auth.mjs +485 -0
  253. package/pipeline/scripts/_pre-existing.mjs +294 -0
  254. package/pipeline/scripts/_redact.mjs +77 -0
  255. package/pipeline/scripts/_run-paths.mjs +4 -2
  256. package/pipeline/scripts/_stack-adapter.mjs +678 -0
  257. package/pipeline/scripts/_stack-routing.mjs +1 -1
  258. package/pipeline/scripts/agent-guard.py +348 -37
  259. package/pipeline/scripts/agent-guard.sh +41 -13
  260. package/pipeline/scripts/analysis-story-tree.mjs +79 -3
  261. package/pipeline/scripts/answer-question.mjs +181 -0
  262. package/pipeline/scripts/audit-log-rotate.sh +1 -4
  263. package/pipeline/scripts/audit-log.sh +4 -4
  264. package/pipeline/scripts/autopilot-arming.mjs +389 -21
  265. package/pipeline/scripts/autopilot-awake.mjs +255 -0
  266. package/pipeline/scripts/autopilot-intake.mjs +137 -36
  267. package/pipeline/scripts/autopilot-menubar.swift +156 -44
  268. package/pipeline/scripts/autopilot-publish.mjs +1625 -0
  269. package/pipeline/scripts/autopilot-runner.mjs +1678 -222
  270. package/pipeline/scripts/autopilot-status.sh +198 -33
  271. package/pipeline/scripts/build-lock.sh +120 -0
  272. package/pipeline/scripts/build-references.mjs +4 -1
  273. package/pipeline/scripts/build-stack-plugins.mjs +59 -22
  274. package/pipeline/scripts/capture-flush.sh +1 -1
  275. package/pipeline/scripts/capture-resume.sh +13 -9
  276. package/pipeline/scripts/check-derived-drift.mjs +52 -11
  277. package/pipeline/scripts/commands.mjs +88 -0
  278. package/pipeline/scripts/constitution.mjs +362 -0
  279. package/pipeline/scripts/contract-server.mjs +776 -0
  280. package/pipeline/scripts/cost-analyze.mjs +89 -39
  281. package/pipeline/scripts/diff-explain.mjs +12 -1
  282. package/pipeline/scripts/doctor.mjs +77 -28
  283. package/pipeline/scripts/evidence-gate.mjs +192 -12
  284. package/pipeline/scripts/feedback-send.mjs +4 -2
  285. package/pipeline/scripts/gate-ledger.mjs +449 -0
  286. package/pipeline/scripts/gc-abandoned.sh +132 -13
  287. package/pipeline/scripts/gen-facts.mjs +31 -15
  288. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  289. package/pipeline/scripts/github-ssh-setup.sh +140 -29
  290. package/pipeline/scripts/graph-mermaid.mjs +4 -1
  291. package/pipeline/scripts/issues.mjs +236 -0
  292. package/pipeline/scripts/jira-attach.sh +6 -2
  293. package/pipeline/scripts/jira-search.sh +4 -3
  294. package/pipeline/scripts/keychain-save.sh +125 -24
  295. package/pipeline/scripts/keychain.py +63 -93
  296. package/pipeline/scripts/launch-request.mjs +747 -0
  297. package/pipeline/scripts/localize-commands.mjs +4 -10
  298. package/pipeline/scripts/log-metric.sh +6 -5
  299. package/pipeline/scripts/maturity-followup.mjs +13 -4
  300. package/pipeline/scripts/memory-save.sh +25 -0
  301. package/pipeline/scripts/migrate-prefs.mjs +4 -3
  302. package/pipeline/scripts/open-questions-gate.mjs +276 -0
  303. package/pipeline/scripts/phase-tracker.sh +41 -27
  304. package/pipeline/scripts/phase0-exit-gate.mjs +22 -4
  305. package/pipeline/scripts/phone-devices.mjs +224 -0
  306. package/pipeline/scripts/plan-coverage-gate.mjs +200 -66
  307. package/pipeline/scripts/plan-critique-gate.mjs +591 -0
  308. package/pipeline/scripts/pr-request.mjs +188 -0
  309. package/pipeline/scripts/pre-commit-check.sh +115 -4
  310. package/pipeline/scripts/probe-evidence-capability.sh +44 -5
  311. package/pipeline/scripts/record-phase.mjs +71 -0
  312. package/pipeline/scripts/render-agent-log-cost.sh +17 -2
  313. package/pipeline/scripts/render-cost-summary.sh +1 -1
  314. package/pipeline/scripts/render-work-summary.sh +1 -1
  315. package/pipeline/scripts/require-supported-version.sh +4 -1
  316. package/pipeline/scripts/research-gate.mjs +704 -0
  317. package/pipeline/scripts/review-decision-gate.mjs +403 -0
  318. package/pipeline/scripts/routine-registry.mjs +5 -2
  319. package/pipeline/scripts/runs-index.mjs +135 -27
  320. package/pipeline/scripts/scaffold-gate.mjs +393 -0
  321. package/pipeline/scripts/skill-conformance.mjs +25 -8
  322. package/pipeline/scripts/skill-siblings.mjs +2 -1
  323. package/pipeline/scripts/smoke-cross-cli-behavior.sh +32 -6
  324. package/pipeline/scripts/smoke-schema-validation.sh +6 -2
  325. package/pipeline/scripts/spec-consistency-gate.mjs +469 -0
  326. package/pipeline/scripts/symbol-existence-gate.mjs +450 -0
  327. package/pipeline/scripts/test-gap-scan.mjs +40 -2
  328. package/pipeline/scripts/test-integrity-gate.mjs +20 -4
  329. package/pipeline/scripts/test-strength.mjs +484 -0
  330. package/pipeline/scripts/test-summary.mjs +651 -0
  331. package/pipeline/scripts/triage-memory.mjs +49 -9
  332. package/pipeline/scripts/unattended_policy.py +2786 -0
  333. package/pipeline/scripts/uninstall.mjs +10 -10
  334. package/pipeline/scripts/update-issue-progress.sh +1 -1
  335. package/pipeline/scripts/usage-identity.mjs +288 -0
  336. package/pipeline/scripts/usage-register.mjs +187 -67
  337. package/pipeline/scripts/usage-report.mjs +232 -67
  338. package/pipeline/scripts/validate-complaint-doc.mjs +28 -10
  339. package/pipeline/scripts/validate-planning.mjs +6 -0
  340. package/pipeline/scripts/verify-citations.mjs +151 -38
  341. package/pipeline/scripts/verify.mjs +58 -18
  342. package/pipeline/scripts/worktree-prepare.sh +126 -0
  343. package/pipeline/scripts/worktrees.mjs +124 -0
  344. package/pipeline/scripts/write-state.mjs +48 -17
  345. package/pipeline/skills/.skill-manifest.json +222 -226
  346. package/pipeline/skills/.skills-index.json +77 -88
  347. package/pipeline/skills/shared/README.md +44 -45
  348. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +3 -2
  349. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +3 -2
  350. package/pipeline/skills/shared/core/multi-agent/SKILL.md +10 -9
  351. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +6 -5
  352. package/pipeline/skills/shared/core/multi-agent-analysis-jira/SKILL.md +11 -3
  353. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +2 -1
  354. package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +4 -3
  355. package/pipeline/skills/shared/core/multi-agent-autopilot-off/SKILL.md +32 -6
  356. package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +66 -8
  357. package/pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md +27 -9
  358. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +2 -1
  359. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +7 -4
  360. package/pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md +3 -2
  361. package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +2 -1
  362. package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +7 -5
  363. package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +2 -1
  364. package/pipeline/skills/shared/core/multi-agent-doctor/SKILL.md +3 -2
  365. package/pipeline/skills/shared/core/multi-agent-feedback/SKILL.md +2 -1
  366. package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +2 -1
  367. package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +2 -1
  368. package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +2 -1
  369. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +2 -1
  370. package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -1
  371. package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +3 -2
  372. package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +2 -1
  373. package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +7 -4
  374. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -1
  375. package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +2 -1
  376. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +2 -1
  377. package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +2 -1
  378. package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +2 -1
  379. package/pipeline/skills/shared/core/multi-agent-prune-prompts/SKILL.md +2 -1
  380. package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +2 -1
  381. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +2 -1
  382. package/pipeline/skills/shared/core/multi-agent-research/SKILL.md +35 -0
  383. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +7 -3
  384. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +7 -5
  385. package/pipeline/skills/shared/core/multi-agent-review-analysis/SKILL.md +2 -1
  386. package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +3 -2
  387. package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +2 -1
  388. package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +2 -1
  389. package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +2 -1
  390. package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +2 -1
  391. package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +2 -1
  392. package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +3 -2
  393. package/pipeline/skills/shared/core/multi-agent-scaffold/SKILL.md +30 -0
  394. package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +2 -1
  395. package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +4 -3
  396. package/pipeline/skills/shared/core/multi-agent-security-review/SKILL.md +2 -1
  397. package/pipeline/skills/shared/core/multi-agent-serve/SKILL.md +60 -0
  398. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +8 -8
  399. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +2 -1
  400. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +7 -8
  401. package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -1
  402. package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +2 -1
  403. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +10 -10
  404. package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +2 -1
  405. package/pipeline/skills/shared/core/multi-agent-test-accessibility/SKILL.md +2 -1
  406. package/pipeline/skills/shared/core/multi-agent-test-dark-mode/SKILL.md +2 -1
  407. package/pipeline/skills/shared/core/multi-agent-test-dynamic-type/SKILL.md +2 -1
  408. package/pipeline/skills/shared/core/multi-agent-test-screenshots/SKILL.md +2 -1
  409. package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +2 -1
  410. package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +3 -2
  411. package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +2 -1
  412. package/pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md +46 -0
  413. package/pipeline/skills/shared/external/NOTICE-dimillian-skills.md +9 -3
  414. package/pipeline/skills/shared/external/NOTICE-paul-hudson-skills.md +54 -0
  415. package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +9 -11
  416. package/pipeline/skills/shared/external/NOTICE-vibeship-spawner-skills.md +203 -0
  417. package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +10 -3
  418. package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +131 -25
  419. package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -3
  420. package/pipeline/skills/shared/external/alarmkit/SKILL.md +2 -1
  421. package/pipeline/skills/shared/external/android-architecture/SKILL.md +85 -76
  422. package/pipeline/skills/shared/external/android-build-quality-gates/SKILL.md +51 -3
  423. package/pipeline/skills/shared/external/android-build-quality-gates/references/patterns.md +9 -0
  424. package/pipeline/skills/shared/external/android-datastore/SKILL.md +4 -3
  425. package/pipeline/skills/shared/external/android-design-tokens-codegen/SKILL.md +4 -3
  426. package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +106 -181
  427. package/pipeline/skills/shared/external/android-jetpack-compose-expert/references/patterns.md +147 -0
  428. package/pipeline/skills/shared/external/android-mvi-viewmodel/SKILL.md +45 -4
  429. package/pipeline/skills/shared/external/android-performance/SKILL.md +27 -2
  430. package/pipeline/skills/shared/external/android-performance/references/patterns.md +37 -37
  431. package/pipeline/skills/shared/external/api-patterns/SKILL.md +111 -67
  432. package/pipeline/skills/shared/external/api-patterns/references/contract-details.md +128 -0
  433. package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +136 -186
  434. package/pipeline/skills/shared/external/api-security-best-practices/references/abuse-controls.md +140 -0
  435. package/pipeline/skills/shared/external/api-security-best-practices/references/identity-and-access.md +207 -0
  436. package/pipeline/skills/shared/external/api-security-best-practices/references/operations.md +66 -0
  437. package/pipeline/skills/shared/external/api-security-best-practices/references/request-handling.md +175 -0
  438. package/pipeline/skills/shared/external/app-clips/SKILL.md +2 -0
  439. package/pipeline/skills/shared/external/app-intents/SKILL.md +2 -0
  440. package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +4 -3
  441. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +2 -0
  442. package/pipeline/skills/shared/external/app-store-review/SKILL.md +2 -0
  443. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +2 -0
  444. package/pipeline/skills/shared/external/architecture/SKILL.md +106 -39
  445. package/pipeline/skills/shared/external/architecture/references/adr-and-review.md +76 -0
  446. package/pipeline/skills/shared/external/authentication/SKILL.md +2 -0
  447. package/pipeline/skills/shared/external/avkit/SKILL.md +2 -0
  448. package/pipeline/skills/shared/external/background-processing/SKILL.md +2 -1
  449. package/pipeline/skills/shared/external/backlog/SKILL.md +3 -2
  450. package/pipeline/skills/shared/external/callkit-voip/SKILL.md +2 -0
  451. package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +1 -1
  452. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +3 -2
  453. package/pipeline/skills/shared/external/clean-code/SKILL.md +192 -90
  454. package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +2 -1
  455. package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +1 -1
  456. package/pipeline/skills/shared/external/compose-components/SKILL.md +4 -4
  457. package/pipeline/skills/shared/external/compose-navigation/SKILL.md +22 -22
  458. package/pipeline/skills/shared/external/compose-navigation/references/patterns.md +10 -10
  459. package/pipeline/skills/shared/external/compose-testing/SKILL.md +13 -6
  460. package/pipeline/skills/shared/external/compose-testing/references/patterns.md +59 -59
  461. package/pipeline/skills/shared/external/contacts-framework/SKILL.md +2 -0
  462. package/pipeline/skills/shared/external/context-compression/SKILL.md +118 -250
  463. package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +2 -0
  464. package/pipeline/skills/shared/external/core-data/SKILL.md +2 -0
  465. package/pipeline/skills/shared/external/core-motion/SKILL.md +2 -0
  466. package/pipeline/skills/shared/external/core-nfc/SKILL.md +2 -0
  467. package/pipeline/skills/shared/external/coreml/SKILL.md +2 -1
  468. package/pipeline/skills/shared/external/council/SKILL.md +2 -1
  469. package/pipeline/skills/shared/external/cryptokit/SKILL.md +2 -0
  470. package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
  471. package/pipeline/skills/shared/external/database-patterns/SKILL.md +3 -2
  472. package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +2 -0
  473. package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +130 -20
  474. package/pipeline/skills/shared/external/debugging-strategies/references/hard-cases.md +54 -0
  475. package/pipeline/skills/shared/external/device-integrity/SKILL.md +2 -0
  476. package/pipeline/skills/shared/external/docker-expert/SKILL.md +137 -381
  477. package/pipeline/skills/shared/external/docker-expert/references/patterns.md +98 -0
  478. package/pipeline/skills/shared/external/energykit/SKILL.md +2 -1
  479. package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +3 -1
  480. package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +2 -2
  481. package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +116 -185
  482. package/pipeline/skills/shared/external/fastapi-pro/references/app-structure.md +235 -0
  483. package/pipeline/skills/shared/external/fastapi-pro/references/testing-and-deployment.md +69 -0
  484. package/pipeline/skills/shared/external/firebase/SKILL.md +4 -3
  485. package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +151 -293
  486. package/pipeline/skills/shared/external/github-actions-templates/references/patterns.md +96 -0
  487. package/pipeline/skills/shared/external/healthkit/SKILL.md +2 -0
  488. package/pipeline/skills/shared/external/hig-components-content/SKILL.md +69 -72
  489. package/pipeline/skills/shared/external/hig-components-content/references/content-views.md +111 -0
  490. package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +77 -86
  491. package/pipeline/skills/shared/external/hig-components-layout/references/containers.md +98 -0
  492. package/pipeline/skills/shared/external/hig-components-status/SKILL.md +150 -78
  493. package/pipeline/skills/shared/external/hig-components-system/SKILL.md +76 -97
  494. package/pipeline/skills/shared/external/hig-components-system/references/surfaces.md +98 -0
  495. package/pipeline/skills/shared/external/hig-foundations/SKILL.md +48 -76
  496. package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +132 -0
  497. package/pipeline/skills/shared/external/hig-inputs/SKILL.md +147 -106
  498. package/pipeline/skills/shared/external/hig-patterns/SKILL.md +61 -77
  499. package/pipeline/skills/shared/external/hig-patterns/references/patterns.md +92 -0
  500. package/pipeline/skills/shared/external/hig-platforms/SKILL.md +147 -77
  501. package/pipeline/skills/shared/external/hig-technologies/SKILL.md +61 -121
  502. package/pipeline/skills/shared/external/hig-technologies/references/technologies.md +108 -0
  503. package/pipeline/skills/shared/external/homekit-matter/SKILL.md +2 -0
  504. package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +1 -1
  505. package/pipeline/skills/shared/external/html-semantic/SKILL.md +3 -2
  506. package/pipeline/skills/shared/external/humanizer/SKILL.md +2 -1
  507. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +2 -0
  508. package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +2 -1
  509. package/pipeline/skills/shared/external/ios-coding-standard/references/STANDARD.md +14 -2
  510. package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +2 -2
  511. package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +4 -3
  512. package/pipeline/skills/shared/external/ios-localization/SKILL.md +8 -6
  513. package/pipeline/skills/shared/external/ios-localization/evals/evals.json +2 -2
  514. package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +11 -11
  515. package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +2 -1
  516. package/pipeline/skills/shared/external/ios-networking/SKILL.md +2 -0
  517. package/pipeline/skills/shared/external/ios-simulator/SKILL.md +2 -0
  518. package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +102 -193
  519. package/pipeline/skills/shared/external/kotlin-coroutines-expert/references/patterns.md +103 -0
  520. package/pipeline/skills/shared/external/live-activities/SKILL.md +4 -2
  521. package/pipeline/skills/shared/external/live-activities/evals/evals.json +2 -2
  522. package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +7 -9
  523. package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +3 -3
  524. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +2 -2
  525. package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +4 -3
  526. package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +5 -3
  527. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +2 -0
  528. package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +1 -1
  529. package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +2 -0
  530. package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +1 -1
  531. package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +149 -46
  532. package/pipeline/skills/shared/external/monorepo-architect/references/patterns.md +70 -0
  533. package/pipeline/skills/shared/external/musickit-audio/SKILL.md +2 -0
  534. package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +1 -1
  535. package/pipeline/skills/shared/external/natural-language/SKILL.md +2 -0
  536. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +3 -2
  537. package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +91 -21
  538. package/pipeline/skills/shared/external/nodejs-backend-patterns/references/runtime-patterns.md +247 -0
  539. package/pipeline/skills/shared/external/nodejs-backend-patterns/references/testing-and-frameworks.md +57 -0
  540. package/pipeline/skills/shared/external/observability-engineer/SKILL.md +155 -232
  541. package/pipeline/skills/shared/external/observability-engineer/references/patterns.md +75 -0
  542. package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +2 -0
  543. package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +2 -2
  544. package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +18 -18
  545. package/pipeline/skills/shared/external/pdfkit/SKILL.md +2 -1
  546. package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +2 -0
  547. package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +1 -1
  548. package/pipeline/skills/shared/external/permissionkit/SKILL.md +2 -0
  549. package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +2 -1
  550. package/pipeline/skills/shared/external/push-notifications/SKILL.md +2 -0
  551. package/pipeline/skills/shared/external/python-patterns/SKILL.md +3 -2
  552. package/pipeline/skills/shared/external/react-best-practices/SKILL.md +3 -2
  553. package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +2 -2
  554. package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +1 -1
  555. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +3 -2
  556. package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +7 -7
  557. package/pipeline/skills/shared/external/retrofit-networking/references/patterns.md +69 -69
  558. package/pipeline/skills/shared/external/room-database/references/patterns.md +126 -126
  559. package/pipeline/skills/shared/external/search-first/SKILL.md +2 -1
  560. package/pipeline/skills/shared/external/security-review/SKILL.md +4 -3
  561. package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +2 -2
  562. package/pipeline/skills/shared/external/signal-community/SKILL.md +1 -1
  563. package/pipeline/skills/shared/external/skill-creator/SKILL.md +2 -1
  564. package/pipeline/skills/shared/external/speech-recognition/SKILL.md +2 -1
  565. package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +2 -0
  566. package/pipeline/skills/shared/external/storekit/SKILL.md +2 -0
  567. package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +2 -0
  568. package/pipeline/skills/shared/external/swift-architecture/SKILL.md +2 -1
  569. package/pipeline/skills/shared/external/swift-charts/SKILL.md +2 -1
  570. package/pipeline/skills/shared/external/swift-codable/SKILL.md +2 -0
  571. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +3 -1
  572. package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +5 -4
  573. package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -1
  574. package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +2 -0
  575. package/pipeline/skills/shared/external/swift-language/SKILL.md +3 -1
  576. package/pipeline/skills/shared/external/swift-security/SKILL.md +2 -1
  577. package/pipeline/skills/shared/external/swift-testing/SKILL.md +2 -0
  578. package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -1
  579. package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +10 -0
  580. package/pipeline/skills/shared/external/swiftdata/SKILL.md +2 -0
  581. package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -1
  582. package/pipeline/skills/shared/external/swiftlint/SKILL.md +2 -0
  583. package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +2 -0
  584. package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +3 -1
  585. package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +2 -0
  586. package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +2 -0
  587. package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +2 -0
  588. package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +2 -0
  589. package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +3 -1
  590. package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +3 -1
  591. package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +5 -4
  592. package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -1
  593. package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +5 -4
  594. package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +2 -0
  595. package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +4 -3
  596. package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +2 -0
  597. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
  598. package/pipeline/skills/shared/external/testing-backend/SKILL.md +3 -2
  599. package/pipeline/skills/shared/external/tipkit/SKILL.md +2 -0
  600. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +3 -2
  601. package/pipeline/skills/shared/external/vision-framework/SKILL.md +2 -0
  602. package/pipeline/skills/shared/external/vue-composition/SKILL.md +3 -2
  603. package/pipeline/skills/shared/external/weatherkit/SKILL.md +2 -0
  604. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +3 -2
  605. package/pipeline/skills/shared/external/web-performance/SKILL.md +3 -2
  606. package/pipeline/skills/shared/external/web-testing/SKILL.md +3 -2
  607. package/pipeline/skills/shared/external/widgetkit/SKILL.md +2 -0
  608. package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +1 -1
  609. package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +2 -0
  610. package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +2 -0
  611. package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +2 -0
  612. package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +2 -0
  613. package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +2 -0
  614. package/pipeline/skills/skills-index.md +40 -41
  615. package/docs/token-budget-history.md +0 -24
  616. package/pipeline/skills/shared/external/agentflow/SKILL.md +0 -199
  617. package/pipeline/skills/shared/external/android-ui-verification/SKILL.md +0 -66
  618. package/pipeline/skills/shared/external/api-security-best-practices/references/auth.md +0 -299
  619. package/pipeline/skills/shared/external/api-security-best-practices/references/input-validation.md +0 -255
  620. package/pipeline/skills/shared/external/api-security-best-practices/references/rate-limiting.md +0 -167
  621. package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +0 -116
  622. package/pipeline/skills/shared/external/ios-developer/SKILL.md +0 -216
@@ -1,81 +1,78 @@
1
1
  ---
2
2
  name: hig-components-content
3
- description: "Apple Human Interface Guidelines for content display components. Use when designing or reviewing how content is displayed on an Apple platform."
4
- risk: unknown
5
- source: community
6
- date_added: '2026-02-27'
3
+ description: "Apple HIG for content views mapped to SwiftUI: lists, tables, grids, charts, images, text, web views, empty states. Use when choosing or reviewing how an Apple-platform app presents content."
4
+ metadata:
5
+ risk: safe
6
+ source: multi-agent-pipeline
7
+ date_added: "2026-09-25"
7
8
  ---
8
9
 
9
- # Apple HIG: Content Components
10
+ # HIG: Content Views
10
11
 
11
- Check for `.claude/apple-design-context.md` before asking questions. Use existing context and only ask for information not already covered.
12
+ Content views are the part of a screen people came for. The container around
13
+ them (split view, tab bar, sheet) is covered by `hig-components-layout`; this
14
+ skill picks the view that holds the data and checks it behaves the way the
15
+ platform trains people to expect.
12
16
 
13
- ## Key Principles
17
+ ## Start from the shape of the data
14
18
 
15
- 1. **Adapt to different sizes and contexts.** Content components must work across screen sizes, orientations, and multitasking configurations. Use Auto Layout and size classes.
19
+ Pick the view from the data, not from a mockup. The same product catalogue can
20
+ be a list, a grid or a table depending on what the reader compares.
16
21
 
17
- 2. **Make content accessible.** Charts need audio graph support. Images need alt text. Collections need proper VoiceOver navigation order. All content components need labels and descriptions.
18
-
19
- 3. **Maintain visual hierarchy.** Use spacing, sizing, and grouping to establish clear information hierarchy. Primary content should be visually prominent.
20
-
21
- 4. **Use system components first.** Evaluate UICollectionView, SwiftUI Charts, WKWebView before building custom. System components come with built-in accessibility and platform adaptation.
22
-
23
- 5. **Respect platform conventions.** A collection on tvOS uses large lockups with parallax. The same collection on iOS uses compact cells with touch targets. On visionOS, content gains depth and hover effects.
24
-
25
- 6. **Handle empty states.** Show a meaningful empty state with guidance on how to populate it, not a blank screen.
26
-
27
- 7. **Optimize for performance.** Use lazy loading, cell reuse, pagination, and prefetching for large datasets.
28
-
29
- ## Topics
30
-
31
- | Topic | Key content |
32
- |---|---|
33
- | Charts | Swift Charts, bar/line/area/point marks, chart accessibility, audio graphs |
34
- | Collections | Grid/list layouts, compositional layout, selection, reordering, diffable data sources |
35
- | Image Views | Aspect ratio handling, content modes, SF Symbol images, accessibility |
36
- | Image Wells | Drag-and-drop image selection, macOS-specific, placeholder content |
37
- | Color Wells | Color selection UI, system color picker, custom color spaces |
38
- | Web Views | WKWebView, SFSafariViewController, navigation controls, content restrictions |
39
- | Activity Views | Share sheets, activity items, custom activities, action extensions |
40
- | Lockups | Image+text elements, tvOS card layouts, focus effects, shelf layouts |
41
-
42
- ## Component Selection Guide
43
-
44
- | Content Need | Recommended Component | Platform Notes |
22
+ | The reader needs to... | Reach for | SwiftUI |
45
23
  |---|---|---|
46
- | Visualizing quantitative data | Charts (Swift Charts) | iOS 16+, macOS 13+, watchOS 9+ |
47
- | Browsing a grid or list of items | Collection View | Compositional layout for complex arrangements |
48
- | Displaying a single image | Image View | Support aspect ratio fitting; provide accessibility description |
49
- | Selecting an image via drag or browse | Image Well | macOS primarily; use image pickers on iOS |
50
- | Selecting a color | Color Well | Triggers system color picker; macOS, iOS 14+ |
51
- | Showing web content inline | Web View (WKWebView) | Use SFSafariViewController for external browsing |
52
- | Sharing content to other apps | Activity View | System share sheet with configurable activity types |
53
- | Content card (image + text) | Lockup | Primarily tvOS; adaptable to other platforms |
54
-
55
- ## Output Format
56
-
57
- 1. **Component recommendation with rationale**, referencing the relevant HIG topic.
58
- 2. **Configuration guidance** -- key properties and setup.
59
- 3. **Accessibility requirements** for the recommended component.
60
- 4. **Platform-specific notes** for targeted platforms.
61
-
62
- ## Questions to Ask
63
-
64
- 1. What type of content? (Quantitative data, images, web content, browsable collection, share action?)
65
- 2. Which platforms?
66
- 3. Static or dynamic content?
67
- 4. How much content? (Few items vs hundreds/thousands affects component choice and optimization.)
68
-
69
- ## Related Skills
70
-
71
- - **hig-foundations** -- Color, typography, accessibility, and image guidelines
72
- - **hig-patterns** -- Data visualization, sharing, and loading patterns
73
- - **hig-components-layout** -- Structural containers (scroll views, lists, split views) hosting content
74
- - **hig-platforms** -- Platform-specific component behavior (lockups on tvOS, web views on macOS)
75
-
76
- ---
77
-
78
- *Built by [Raintree Technology](https://raintree.technology) · [More developer tools](https://raintree.technology)*
79
-
80
- ## When to Use
81
- This skill is applicable to execute the workflow or actions described in the overview.
24
+ | Scan rows of mostly text and act on one | List | `List`, `Section`, `.listStyle(.insetGrouped)` |
25
+ | Compare several attributes across many rows | Table (iPad, Mac) | `Table` with `TableColumn`, `sortOrder:` binding |
26
+ | Browse items where the picture carries the meaning | Grid / collection | `LazyVGrid`, `LazyHGrid`, `Grid` for small fixed layouts |
27
+ | See a trend, distribution or proportion | Chart | Swift Charts: `Chart`, `BarMark`, `LineMark`, `SectorMark` |
28
+ | Read or edit longer prose | Text view | `Text`, `TextEditor`, `TextField(axis: .vertical)` |
29
+ | Look at one image closely | Image view | `Image`, `AsyncImage`, zoom via gesture or `ScrollView` |
30
+ | Show web content the app does not own | Web view | `WebView` / `WebPage` (iOS 26), `SFSafariViewController` for external links |
31
+ | Send the current thing elsewhere | Share sheet | `ShareLink` with a `Transferable` item |
32
+ | Nothing to show yet | Empty state | `ContentUnavailableView` |
33
+
34
+ A table collapses to its first column in compact width. Put the identifying
35
+ value (the order number, the product name) in that column and let the rest
36
+ reappear when there is room.
37
+
38
+ ## Details on demand
39
+
40
+ Load `references/content-views.md` for per-view rules and SwiftUI examples for lists, tables, grids, charts, images, text, web content and sharing.
41
+
42
+ ## Empty, loading and error states
43
+
44
+ - Use `ContentUnavailableView` for "no notes yet" and
45
+ `ContentUnavailableView.search` for "no results", with an action button when
46
+ there is an obvious next step.
47
+ - While loading, show placeholder rows with `.redacted(reason: .placeholder)`
48
+ rather than a blank screen; progress guidance is in `hig-components-status`.
49
+ - An error state explains what happened and what to do, in plain language,
50
+ and keeps whatever content was already on screen.
51
+
52
+ ## Review checklist
53
+
54
+ 1. Does the chosen view match what the reader compares or scans?
55
+ 2. Does every swipe or gesture action also exist in a visible place?
56
+ 3. Do lists and grids use system selection, refresh and context menus?
57
+ 4. Does every chart say its conclusion and work without colour?
58
+ 5. Do images carry labels, keep their aspect ratio while loading, and zoom?
59
+ 6. Does text use text styles and scale to the largest accessibility sizes?
60
+ 7. Are external links handed to Safari instead of an embedded browser?
61
+ 8. Is there a designed empty state, loading state and error state?
62
+
63
+ ## Related skills
64
+
65
+ - `hig-components-layout` for the container: split views, tabs, sheets.
66
+ - `hig-components-status` for progress, gauges and loading feedback.
67
+ - `hig-foundations` for colour, typography, SF Symbols and accessibility.
68
+ - `swift-charts` and `swiftui-webkit` for implementation detail.
69
+
70
+ ## References
71
+
72
+ - https://developer.apple.com/design/human-interface-guidelines/lists-and-tables
73
+ - https://developer.apple.com/design/human-interface-guidelines/collections
74
+ - https://developer.apple.com/design/human-interface-guidelines/charts
75
+ - https://developer.apple.com/design/human-interface-guidelines/image-views
76
+ - https://developer.apple.com/design/human-interface-guidelines/text-views
77
+ - https://developer.apple.com/design/human-interface-guidelines/web-views
78
+ - https://developer.apple.com/design/human-interface-guidelines/activity-views
@@ -0,0 +1,111 @@
1
+ # Content views in detail
2
+
3
+ Companion to `../SKILL.md` for the `hig-components-content` skill.
4
+
5
+ ## Lists and tables
6
+
7
+ - Rows should read left to right as: leading image or symbol, primary text,
8
+ secondary text, trailing value or accessory. Keep that order stable across
9
+ every row in a list so the eye can run down one column.
10
+ - Swipe actions are shortcuts, not the only path. Anything in
11
+ `.swipeActions` must also be reachable from a context menu or the detail
12
+ screen, because swipes are undiscoverable and awkward with VoiceOver.
13
+ - Destructive swipe actions use `role: .destructive`, and a full swipe should
14
+ only trigger an action that can be undone or that asks first.
15
+ - Use `.contextMenu` for secondary actions on a row, with a preview when the
16
+ row opens into something visual.
17
+ - Selection: `List(selection:)` gives the system edit mode, multi-select with
18
+ two-finger pan on iPad, and keyboard selection on Mac. Do not build custom
19
+ checkmark rows for this.
20
+ - `.refreshable` gives the standard pull-to-refresh; do not add a manual
21
+ refresh button to the same list on iOS.
22
+ - Section headers are for grouping, not decoration. If every section has one
23
+ row, the grouping is probably wrong.
24
+
25
+ ```swift
26
+ List(selection: $selectedOrderIDs) {
27
+ ForEach(orders) { order in
28
+ OrderRow(order: order)
29
+ .swipeActions(edge: .trailing) {
30
+ Button("Archive", systemImage: "archivebox") { archive(order) }
31
+ .tint(.indigo)
32
+ }
33
+ .contextMenu {
34
+ Button("Archive", systemImage: "archivebox") { archive(order) }
35
+ ShareLink(item: order.receiptURL)
36
+ }
37
+ }
38
+ }
39
+ .refreshable { await store.reload() }
40
+ ```
41
+
42
+ ## Collections and grids
43
+
44
+ - Prefer adaptive columns (`GridItem(.adaptive(minimum: 140))`) so the grid
45
+ reflows from iPhone portrait to a Mac window without per-device code.
46
+ - Keep item spacing consistent and let the content define the item, not a
47
+ heavy card border. On iOS 26, avoid stacking glass effects on grid items;
48
+ glass belongs to controls and navigation layered above content.
49
+ - Large data sets need the lazy stacks and grids; `Grid` lays out every child
50
+ eagerly and suits a dozen cells, not a thousand.
51
+ - Give tappable cells a clear pressed state and a context menu, the same as
52
+ list rows.
53
+
54
+ ## Charts
55
+
56
+ - A chart must answer one question at a glance. Title it with the question or
57
+ the conclusion ("Orders per week, last quarter"), not the data source.
58
+ - Choose the mark from the comparison: bars for discrete categories, lines for
59
+ change over continuous time, sectors only for a few parts of one whole.
60
+ - Colour is never the only carrier of meaning. Add `.foregroundStyle(by:)`
61
+ with a legend and a second cue (symbol shape, direct labels, pattern).
62
+ - Provide `.accessibilityLabel` and `.accessibilityValue` on marks, or an
63
+ audio graph via `AXChartDescriptorRepresentable`, so VoiceOver users get
64
+ the same answer.
65
+ - Use `.chartXSelection` / `.chartScrollableAxes` for exploration instead of
66
+ bespoke gesture code.
67
+ - Small inline charts (sparklines in a row or widget) drop axes and legends
68
+ entirely and must still make sense without them.
69
+
70
+ ## Images and media
71
+
72
+ - Supply images at the scales the device needs, or use SF Symbols and vector
73
+ assets so they scale with Dynamic Type and the display.
74
+ - Every meaningful image gets an accessibility label; decorative ones get
75
+ `.accessibilityHidden(true)` or `Image(decorative:)`.
76
+ - `AsyncImage` needs a placeholder with the final aspect ratio so layout does
77
+ not jump when the image arrives.
78
+ - Let people zoom and pan full-screen images with the standard gestures; a
79
+ double tap toggles between fit and a closer zoom.
80
+ - For video use `VideoPlayer` or `AVPlayerViewController` so people get
81
+ system controls, Picture in Picture and AirPlay for free.
82
+
83
+ ## Text
84
+
85
+ - Use text styles (`.body`, `.headline`, `.caption`) so Dynamic Type works;
86
+ never fix a point size for reading text.
87
+ - Make read-only text selectable with `.textSelection(.enabled)` when people
88
+ might want to copy it (an order number, a tracking code, an address).
89
+ - Long editable text belongs in `TextEditor` or a multi-line `TextField`, not
90
+ a single-line field that scrolls sideways.
91
+
92
+ ## Web content
93
+
94
+ - Use an embedded web view only for content that is part of the app's own
95
+ experience (help pages, rendered documents). For arbitrary external links,
96
+ hand off to Safari or `SFSafariViewController` so people keep their
97
+ cookies, autofill and content blockers.
98
+ - On iOS 26, the SwiftUI `WebView` with a `WebPage` model replaces most
99
+ `UIViewRepresentable` wrappers around `WKWebView`.
100
+ - Do not rebuild a browser: no custom address bar, no custom back stack
101
+ unless the web content is the whole product.
102
+
103
+ ## Sharing
104
+
105
+ - `ShareLink` presents the system share sheet; make the shared item a
106
+ `Transferable` type so it exports the richest representation available
107
+ and falls back gracefully (a file, then a URL, then plain text).
108
+ - Put the share action where the object is shown (toolbar of the detail view,
109
+ context menu of the row), and use the standard `square.and.arrow.up` symbol.
110
+ - Provide a `SharePreview` with a title and image so the sheet shows what is
111
+ being sent.
@@ -1,95 +1,86 @@
1
1
  ---
2
2
  name: hig-components-layout
3
- description: "Apple Human Interface Guidelines for layout and navigation components. Use when designing or reviewing layout and navigation on an Apple platform."
4
- risk: unknown
5
- source: community
6
- date_added: '2026-02-27'
3
+ description: "Apple HIG for app structure mapped to SwiftUI: tab bars, split views, navigation stacks, toolbars, sheets, popovers, alerts, windows, iOS 26 Liquid Glass bars. Use when designing layout and navigation on an Apple platform."
4
+ metadata:
5
+ risk: safe
6
+ source: multi-agent-pipeline
7
+ date_added: "2026-09-25"
7
8
  ---
8
9
 
9
- # Apple HIG: Layout and Navigation Components
10
+ # HIG: Layout and Navigation Containers
10
11
 
11
- Check for `.claude/apple-design-context.md` before asking questions. Use existing context and only ask for information not already covered.
12
+ This skill decides the frame of an app: how top-level areas are reached, how
13
+ people drill in and back out, and when something should appear modally. The
14
+ views inside the frame are covered by `hig-components-content`.
12
15
 
13
- ## Key Principles
16
+ ## Pick the top-level structure
14
17
 
15
- 1. **Organize hierarchically.** Structure information from broad categories to specific details. Sidebars for top-level sections, lists for browsable items, detail views for individual content.
18
+ Count the app's peer areas and ask how people switch between them.
16
19
 
17
- 2. **Use standard navigation patterns.** Tab bars for flat navigation between peer sections (iPhone). Sidebars for deep hierarchical navigation (iPad, Mac). Match the pattern to the information architecture and platform.
18
-
19
- 3. **Adapt to screen size.** Three-column on iPad collapses to single-column on iPhone. Use size classes and adaptive APIs (NavigationSplitView) for automatic adaptation.
20
-
21
- 4. **Support multitasking on iPad.** Respond gracefully to Split View, Slide Over, and Stage Manager. Test at every split ratio and size class transition.
22
-
23
- 5. **Maintain spatial consistency on visionOS.** Windows, volumes, and ornaments in shared space. Position predictably. Use ornaments for toolbars and controls without occluding content.
24
-
25
- 6. **Use scroll views for overflow content.** Enable paging for discrete content units. Support pull-to-refresh where appropriate. Respect safe areas.
26
-
27
- 7. **Keep navigation predictable.** Users should always know where they are, how they got there, and how to go back. Use back buttons, breadcrumbs, and clear section titles.
28
-
29
- 8. **Prefer system components.** UINavigationController, UISplitViewController, NavigationSplitView, and TabView provide built-in adaptivity, accessibility, and state restoration.
30
-
31
- ## Topics
32
-
33
- | Topic | Key content |
34
- |---|---|
35
- | Sidebars | Source lists, selection state, collapsible sections, iPad/Mac patterns |
36
- | Column Views | Finder-style browsing, progressive disclosure through columns |
37
- | Outline Views | Expandable hierarchies, disclosure triangles, tree structures |
38
- | Split Views | Two/three column layouts, NavigationSplitView, adaptive collapse |
39
- | Tab Views | Segmented tabs, page-style tabs, macOS tab grouping |
40
- | Tab Bars | Bottom tab bars (iOS), badge counts, max tab count |
41
- | Scroll Views | Paging, scroll indicators, content insets, pull-to-refresh |
42
- | Windows | macOS/visionOS window management, sizing, full-screen, restoration |
43
- | Panels | Inspector panels, utility panels, floating panels, macOS conventions |
44
- | Lists and Tables | Plain/grouped/inset-grouped styles, swipe actions, section headers |
45
- | Boxes | Content grouping containers, labeled boxes, macOS grouping |
46
- | Ornaments | visionOS toolbar attachments, positioning, visibility |
47
-
48
- ## Navigation Pattern Selection
49
-
50
- | App Structure | Recommended Pattern | Platform Adaptation |
20
+ | Situation | Structure | SwiftUI |
51
21
  |---|---|---|
52
- | 3-5 peer top-level sections | Tab Bar | iPhone: bottom tab bar. iPad: sidebar (`.sidebarAdaptable`, iPadOS 18+). Mac: sidebar or toolbar tabs |
53
- | Deep hierarchical content | Sidebar + NavigationSplitView | iPhone: single column stack. iPad: two/three columns. Mac: full multi-column |
54
- | Deep file/folder tree | Column View | Mac: Finder-style. iPad: adaptable. iPhone: push navigation |
55
- | Flat list with detail | Split View (two column) | iPhone: push/pop stack. iPad/Mac: primary + detail columns |
56
- | Document-based with inspectors | Window + Panels | Mac: main window with inspector. iPad: sheet or popover |
57
- | Spatial app with tools | Window + Ornaments | visionOS: ornaments on window. Other platforms: toolbars |
58
-
59
- ## Layout Adaptation Checklist
60
-
61
- - [ ] **Compact width (iPhone portrait):** Navigation collapses to single stack? Tab bars visible?
62
- - [ ] **Regular width (iPad landscape, Mac):** Navigation expands to sidebar + detail? Space used well?
63
- - [ ] **Multitasking (iPad):** Adapts at every split ratio? Works in Slide Over?
64
- - [ ] **Accessibility:** Supports Dynamic Type at all sizes? VoiceOver order logical?
65
- - [ ] **Orientation:** Content reflows between portrait and landscape?
66
- - [ ] **visionOS:** Windows positioned ergonomically? Ornaments accessible? Depth meaningful?
67
-
68
- ## Output Format
69
-
70
- 1. **Recommended navigation pattern** with rationale for the app's information architecture.
71
- 2. **Layout hierarchy** from root container down (e.g., TabView > NavigationSplitView > List > Detail).
72
- 3. **Platform adaptation** across targeted platforms and size classes.
73
- 4. **Size class behavior** at each transition.
74
-
75
- ## Questions to Ask
76
-
77
- 1. What is the app's information architecture? (Sections, hierarchy depth, top-level categories?)
78
- 2. How many top-level sections?
79
- 3. Which platforms?
80
- 4. Need multitasking on iPad?
81
- 5. SwiftUI or UIKit?
82
-
83
- ## Related Skills
84
-
85
- - **hig-foundations** -- Layout spacing, margins, safe areas, alignment
86
- - **hig-platforms** -- Platform-specific navigation conventions
87
- - **hig-patterns** -- Multitasking, full-screen, and launching patterns
88
- - **hig-components-content** -- Content displayed within layout containers
89
-
90
- ---
91
-
92
- *Built by [Raintree Technology](https://raintree.technology) · [More developer tools](https://raintree.technology)*
93
-
94
- ## When to Use
95
- This skill is applicable to execute the workflow or actions described in the overview.
22
+ | A few peer areas used often (orders, products, account) | Tab bar | `TabView` with `Tab` values |
23
+ | Many areas, or areas people customise, on iPad and Mac | Sidebar | `TabView` + `.tabViewStyle(.sidebarAdaptable)`, or `NavigationSplitView` |
24
+ | One list that opens details | Stack | `NavigationStack` with `navigationDestination(for:)` |
25
+ | List, detail and a third level on large screens | Three columns | `NavigationSplitView(sidebar:content:detail:)` |
26
+ | Contextual settings for the current selection | Inspector | `.inspector(isPresented:)` |
27
+ | A single focused task that ends in done or cancel | Sheet | `.sheet`, `.fullScreenCover` for immersive tasks |
28
+
29
+ A tab bar switches context and never navigates within one; do not use a tab
30
+ to trigger an action like "new note". A sidebar-adaptable `TabView` gives a
31
+ tab bar on iPhone and a sidebar on iPad and Mac from one declaration.
32
+
33
+ ## Details on demand
34
+
35
+ Load `references/containers.md` for tab bars, sidebars, navigation bars, toolbars, scroll views, windows and size adaptation, with SwiftUI examples.
36
+
37
+ ## Modality: sheets, popovers, alerts
38
+
39
+ Modality interrupts. Use it for a self-contained task or a decision that must
40
+ happen now, and always give an obvious way out.
41
+
42
+ - **Sheet** for a task with its own steps (compose a note, edit an address).
43
+ Title it, put Cancel on the leading side and the confirming action on the
44
+ trailing side. Use `.presentationDetents([.medium, .large])` for resizable
45
+ sheets; on iOS 26 partial-height sheets float with a glass background and
46
+ inset edges.
47
+ - Protect unsaved input with `.interactiveDismissDisabled(hasChanges)` plus a
48
+ confirmation, rather than silently discarding it on swipe down.
49
+ - **Popover** on iPad and Mac for short contextual content anchored to a
50
+ control; it adapts to a sheet in compact width.
51
+ - **Alert** only for information that needs acknowledgement or a decision
52
+ with two or three outcomes. Use `role: .destructive` and `role: .cancel`.
53
+ - **Confirmation dialog** (`.confirmationDialog`) for choosing among actions
54
+ triggered by the person, such as "Delete order" with a cancel.
55
+ - Avoid stacking modals. If a sheet needs another sheet, the flow wants a
56
+ navigation stack inside the first sheet.
57
+
58
+ ## Review checklist
59
+
60
+ - Is the top-level structure chosen from the number and use of peer areas?
61
+ - Does every tab keep its own state, and is no tab used as an action?
62
+ - Do modals have a clear cancel, and is unsaved work protected?
63
+ - Does content run under glass bars rather than behind opaque fills (iOS 26)?
64
+ - Are toolbar items declared with semantic placements?
65
+ - Does the layout adapt across size classes, windows and orientations?
66
+
67
+ ## Related skills
68
+
69
+ - `hig-components-content` for lists, grids, charts inside these containers.
70
+ - `hig-patterns` for flows such as first launch, search and settings.
71
+ - `hig-platforms` for per-platform differences.
72
+ - `swiftui-navigation` and `swiftui-liquid-glass` for implementation detail.
73
+
74
+ ## References
75
+
76
+ - https://developer.apple.com/design/human-interface-guidelines/tab-bars
77
+ - https://developer.apple.com/design/human-interface-guidelines/sidebars
78
+ - https://developer.apple.com/design/human-interface-guidelines/split-views
79
+ - https://developer.apple.com/design/human-interface-guidelines/toolbars
80
+ - https://developer.apple.com/design/human-interface-guidelines/scroll-views
81
+ - https://developer.apple.com/design/human-interface-guidelines/sheets
82
+ - https://developer.apple.com/design/human-interface-guidelines/popovers
83
+ - https://developer.apple.com/design/human-interface-guidelines/alerts
84
+ - https://developer.apple.com/design/human-interface-guidelines/windows
85
+ - https://developer.apple.com/design/human-interface-guidelines/panels
86
+ - https://developer.apple.com/design/human-interface-guidelines/layout
@@ -0,0 +1,98 @@
1
+ # Layout containers in detail
2
+
3
+ Companion to `../SKILL.md` for the `hig-components-layout` skill.
4
+
5
+ ## Tab bars
6
+
7
+ - Keep tabs few and stable. Each tab keeps its own navigation state; switching
8
+ back returns people to where they left off.
9
+ - Never hide or disable a tab because of state. Show the tab and explain
10
+ inside it (an empty state or sign-in prompt).
11
+ - On iOS 18 and later, `Tab(role: .search)` places search as a dedicated tab;
12
+ on iOS 26 it is set apart at the trailing end of the floating glass tab bar.
13
+ - iOS 26 renders the tab bar as floating Liquid Glass above content. Let
14
+ content scroll underneath it; do not paint an opaque background behind it.
15
+ - `.tabBarMinimizeBehavior(.onScrollDown)` (iOS 26) shrinks the bar while
16
+ reading; `.tabViewBottomAccessory` places a persistent control such as a
17
+ playback bar above it.
18
+ - Badges (`.badge(3)`) are for counts people act on, not marketing.
19
+
20
+ ```swift
21
+ TabView(selection: $selection) {
22
+ Tab("Orders", systemImage: "shippingbox", value: .orders) {
23
+ OrdersView()
24
+ }
25
+ .badge(pendingCount)
26
+ Tab("Products", systemImage: "square.grid.2x2", value: .products) {
27
+ ProductsView()
28
+ }
29
+ Tab(value: .search, role: .search) {
30
+ SearchView()
31
+ }
32
+ }
33
+ .tabViewStyle(.sidebarAdaptable)
34
+ .tabBarMinimizeBehavior(.onScrollDown)
35
+ ```
36
+
37
+ ## Sidebars and split views
38
+
39
+ - The sidebar lists destinations, grouped into sections when there are many.
40
+ It does not hold actions or forms.
41
+ - Let the system collapse columns in compact width;
42
+ `NavigationSplitView` becomes a stack on iPhone automatically. Use
43
+ `preferredCompactColumn` to choose what shows first.
44
+ - Keep selection visible: the chosen sidebar row stays highlighted while its
45
+ detail is shown.
46
+ - iOS 26 draws the sidebar as a glass layer floating over content. Use
47
+ `.backgroundExtensionEffect()` on hero images in the detail column so they
48
+ extend visually beneath the sidebar instead of stopping at its edge.
49
+
50
+ ## Navigation stacks and bars
51
+
52
+ - The title names the current place. Use large titles at the root of a
53
+ hierarchy and inline titles deeper in.
54
+ - The back button shows the previous title or "Back"; never replace it with a
55
+ custom control that breaks the edge-swipe gesture.
56
+ - Drive navigation from data: a `NavigationPath` or a typed selection binding
57
+ makes deep links and state restoration straightforward.
58
+ - Put no more than a couple of frequent actions in the bar. Secondary actions
59
+ go in a `Menu` behind an ellipsis item.
60
+
61
+ ## Toolbars
62
+
63
+ - Declare actions with `.toolbar` and placements (`.primaryAction`,
64
+ `.topBarTrailing`, `.bottomBar`, `.confirmationAction`,
65
+ `.cancellationAction`) so the system positions them per platform.
66
+ - On iOS 26 toolbar items sit on glass and are grouped automatically;
67
+ `ToolbarSpacer` separates groups. Prefer SF Symbols over text for bar items
68
+ and let the system apply glass; do not add your own backgrounds.
69
+ - Use `.toolbarRole(.editor)` on document-style screens and let people
70
+ customise Mac and iPad toolbars with `id`-based toolbar items.
71
+
72
+ ## Scroll views
73
+
74
+ - Content should scroll under bars and the tab bar; the scroll edge effect
75
+ keeps controls legible on iOS 26.
76
+ - Show scroll indicators for long content, and use `.scrollTargetBehavior(.paging)`
77
+ or `.viewAligned` only when the content really is paged.
78
+ - Never nest two scroll views on the same axis.
79
+ - Use `.safeAreaInset(edge:)` for a persistent footer (a checkout summary)
80
+ so the content scrolls clear of it.
81
+
82
+ ## Windows and panels (iPadOS, macOS, visionOS)
83
+
84
+ - Support multiple windows when people might compare two items; use
85
+ `WindowGroup(for:)` with a value so each window restores its item.
86
+ - Open auxiliary windows with `openWindow(value:)`; a Mac utility panel is a
87
+ `Window` or `UtilityWindow` scene, not a sheet.
88
+ - Size layouts with flexible frames and size classes so the same scene works
89
+ from a narrow iPad split to a full Mac display.
90
+ - Add `Settings` for Mac preferences instead of a settings tab.
91
+
92
+ ## Adapting across sizes
93
+
94
+ 1. Check compact width (iPhone portrait, iPad slide over) and regular width.
95
+ 2. Confirm split views collapse to a sensible first column.
96
+ 3. Confirm tab bars turn into a sidebar where `.sidebarAdaptable` is used.
97
+ 4. Test the largest Dynamic Type size: bars stay usable, content scrolls.
98
+ 5. Test right-to-left: back buttons, sidebars and swipe edges mirror.