@hegemonart/get-design-done 1.42.0 → 1.44.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 (430) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1126 -1038
  4. package/README.md +159 -155
  5. package/SKILL.md +42 -42
  6. package/agents/README.md +53 -53
  7. package/agents/a11y-mapper.md +3 -3
  8. package/agents/component-benchmark-harvester.md +8 -8
  9. package/agents/component-benchmark-synthesizer.md +11 -11
  10. package/agents/component-taxonomy-mapper.md +5 -5
  11. package/agents/compose-executor.md +25 -25
  12. package/agents/conflict-resolver.md +8 -8
  13. package/agents/cost-forecaster.md +12 -12
  14. package/agents/decision-journal-exporter.md +5 -5
  15. package/agents/design-advisor.md +19 -19
  16. package/agents/design-assumptions-analyzer.md +16 -16
  17. package/agents/design-auditor.md +39 -39
  18. package/agents/design-authority-watcher.md +28 -28
  19. package/agents/design-component-generator.md +27 -27
  20. package/agents/design-context-builder.md +66 -66
  21. package/agents/design-context-checker-gate.md +5 -5
  22. package/agents/design-context-checker.md +20 -20
  23. package/agents/design-discussant.md +23 -23
  24. package/agents/design-doc-writer.md +12 -12
  25. package/agents/design-executor.md +38 -38
  26. package/agents/design-figma-writer.md +31 -31
  27. package/agents/design-fixer.md +27 -27
  28. package/agents/design-integration-checker-gate.md +5 -5
  29. package/agents/design-integration-checker.md +29 -29
  30. package/agents/design-paper-writer.md +14 -14
  31. package/agents/design-pattern-mapper.md +9 -9
  32. package/agents/design-pencil-writer.md +12 -12
  33. package/agents/design-phase-researcher.md +14 -14
  34. package/agents/design-plan-checker.md +13 -13
  35. package/agents/design-planner.md +24 -24
  36. package/agents/design-reflector.md +48 -48
  37. package/agents/design-research-synthesizer.md +21 -21
  38. package/agents/design-start-writer.md +7 -7
  39. package/agents/design-update-checker.md +8 -8
  40. package/agents/design-verifier-gate.md +5 -5
  41. package/agents/design-verifier.md +80 -80
  42. package/agents/ds-generator.md +14 -14
  43. package/agents/ds-migration-planner.md +12 -12
  44. package/agents/email-executor.md +26 -26
  45. package/agents/experiment-result-ingester.md +10 -10
  46. package/agents/flutter-executor.md +28 -28
  47. package/agents/gdd-graph-refresh.md +10 -10
  48. package/agents/gdd-intel-updater.md +11 -11
  49. package/agents/gdd-learnings-extractor.md +2 -2
  50. package/agents/motion-mapper.md +8 -8
  51. package/agents/motion-verifier.md +16 -16
  52. package/agents/pdf-executor.md +27 -27
  53. package/agents/perf-analyzer.md +20 -20
  54. package/agents/pr-commenter.md +24 -24
  55. package/agents/prototype-gate.md +29 -29
  56. package/agents/quality-gate-runner.md +21 -21
  57. package/agents/rollout-coordinator.md +8 -8
  58. package/agents/swift-executor.md +41 -41
  59. package/agents/ticket-sync-agent.md +19 -19
  60. package/agents/token-mapper.md +6 -6
  61. package/agents/user-research-synthesizer.md +13 -13
  62. package/agents/visual-hierarchy-mapper.md +2 -2
  63. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +3 -3
  64. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +10 -10
  65. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +13 -13
  66. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  67. package/dist/claude-code/.claude/skills/audit/SKILL.md +7 -7
  68. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +7 -7
  69. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +7 -7
  70. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +10 -10
  71. package/dist/claude-code/.claude/skills/brief/SKILL.md +20 -20
  72. package/dist/claude-code/.claude/skills/budget/SKILL.md +4 -4
  73. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +6 -6
  74. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +5 -5
  75. package/dist/claude-code/.claude/skills/check-update/SKILL.md +5 -5
  76. package/dist/claude-code/.claude/skills/compare/SKILL.md +15 -15
  77. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +17 -17
  78. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +5 -5
  79. package/dist/claude-code/.claude/skills/connections/SKILL.md +11 -11
  80. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +76 -76
  81. package/dist/claude-code/.claude/skills/continue/SKILL.md +2 -2
  82. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +17 -17
  83. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +7 -7
  84. package/dist/claude-code/.claude/skills/debug/SKILL.md +3 -3
  85. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +12 -12
  86. package/dist/claude-code/.claude/skills/design/SKILL.md +12 -12
  87. package/dist/claude-code/.claude/skills/design/design-procedure.md +23 -23
  88. package/dist/claude-code/.claude/skills/discover/SKILL.md +7 -7
  89. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +18 -18
  90. package/dist/claude-code/.claude/skills/discuss/SKILL.md +12 -12
  91. package/dist/claude-code/.claude/skills/do/SKILL.md +1 -1
  92. package/dist/claude-code/.claude/skills/explore/SKILL.md +21 -21
  93. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +48 -48
  94. package/dist/claude-code/.claude/skills/export/SKILL.md +9 -9
  95. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +5 -5
  96. package/dist/claude-code/.claude/skills/fast/SKILL.md +7 -7
  97. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +11 -11
  98. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +6 -6
  99. package/dist/claude-code/.claude/skills/graphify/SKILL.md +4 -4
  100. package/dist/claude-code/.claude/skills/health/SKILL.md +16 -16
  101. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +3 -3
  102. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +6 -6
  103. package/dist/claude-code/.claude/skills/help/SKILL.md +1 -1
  104. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +4 -4
  105. package/dist/claude-code/.claude/skills/map/SKILL.md +12 -12
  106. package/dist/claude-code/.claude/skills/migrate/SKILL.md +5 -5
  107. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +2 -2
  108. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  109. package/dist/claude-code/.claude/skills/new-project/SKILL.md +1 -1
  110. package/dist/claude-code/.claude/skills/next/SKILL.md +5 -5
  111. package/dist/claude-code/.claude/skills/note/SKILL.md +1 -1
  112. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +4 -4
  113. package/dist/claude-code/.claude/skills/optimize/SKILL.md +15 -15
  114. package/dist/claude-code/.claude/skills/pause/SKILL.md +5 -5
  115. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +11 -11
  116. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  117. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +14 -14
  118. package/dist/claude-code/.claude/skills/peers/SKILL.md +4 -4
  119. package/dist/claude-code/.claude/skills/plan/SKILL.md +13 -13
  120. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +24 -24
  121. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +4 -4
  122. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +2 -2
  123. package/dist/claude-code/.claude/skills/progress/SKILL.md +15 -15
  124. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +22 -22
  125. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +19 -19
  126. package/dist/claude-code/.claude/skills/quick/SKILL.md +5 -5
  127. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +7 -7
  128. package/dist/claude-code/.claude/skills/reflect/SKILL.md +3 -3
  129. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +11 -11
  130. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +5 -5
  131. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +27 -27
  132. package/dist/claude-code/.claude/skills/resume/SKILL.md +9 -9
  133. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +3 -3
  134. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +3 -3
  135. package/dist/claude-code/.claude/skills/roi/SKILL.md +5 -5
  136. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +4 -4
  137. package/dist/claude-code/.claude/skills/router/SKILL.md +11 -11
  138. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +6 -6
  139. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +9 -9
  140. package/dist/claude-code/.claude/skills/router/router-rules.md +7 -7
  141. package/dist/claude-code/.claude/skills/scan/SKILL.md +16 -16
  142. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +42 -42
  143. package/dist/claude-code/.claude/skills/settings/SKILL.md +2 -2
  144. package/dist/claude-code/.claude/skills/ship/SKILL.md +7 -7
  145. package/dist/claude-code/.claude/skills/sketch/SKILL.md +10 -10
  146. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +12 -12
  147. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +5 -5
  148. package/dist/claude-code/.claude/skills/spike/SKILL.md +7 -7
  149. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +13 -13
  150. package/dist/claude-code/.claude/skills/start/SKILL.md +8 -8
  151. package/dist/claude-code/.claude/skills/start/start-procedure.md +9 -9
  152. package/dist/claude-code/.claude/skills/stats/SKILL.md +5 -5
  153. package/dist/claude-code/.claude/skills/style/SKILL.md +12 -12
  154. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +12 -12
  155. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +10 -10
  156. package/dist/claude-code/.claude/skills/timeline/SKILL.md +4 -4
  157. package/dist/claude-code/.claude/skills/todo/SKILL.md +3 -3
  158. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +10 -10
  159. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +3 -3
  160. package/dist/claude-code/.claude/skills/update/SKILL.md +9 -9
  161. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +17 -17
  162. package/dist/claude-code/.claude/skills/verify/SKILL.md +13 -13
  163. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +34 -34
  164. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +8 -8
  165. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +9 -9
  166. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +4 -4
  167. package/package.json +9 -2
  168. package/reference/DEPRECATIONS.md +10 -10
  169. package/reference/STATE-TEMPLATE.md +26 -26
  170. package/reference/accessibility.md +13 -13
  171. package/reference/adr-format.md +13 -13
  172. package/reference/ai-native-tool-interface.md +5 -5
  173. package/reference/anti-patterns.md +9 -9
  174. package/reference/architecture-vocabulary.md +31 -31
  175. package/reference/audit-scoring.md +13 -13
  176. package/reference/authority-feeds.md +36 -36
  177. package/reference/bandit-integration.md +25 -25
  178. package/reference/brand-voice.md +36 -36
  179. package/reference/capability-gap-stage-gate.md +20 -20
  180. package/reference/checklists.md +26 -26
  181. package/reference/cli-localization.md +13 -13
  182. package/reference/codex-tools.md +2 -2
  183. package/reference/color-theory.md +28 -28
  184. package/reference/component-authoring.md +4 -4
  185. package/reference/components/README.md +13 -13
  186. package/reference/components/TEMPLATE.md +13 -13
  187. package/reference/components/accordion.md +15 -15
  188. package/reference/components/alert.md +25 -25
  189. package/reference/components/badge.md +18 -18
  190. package/reference/components/breadcrumbs.md +24 -24
  191. package/reference/components/button.md +21 -21
  192. package/reference/components/card.md +13 -13
  193. package/reference/components/checkbox.md +20 -20
  194. package/reference/components/chip.md +20 -20
  195. package/reference/components/command-palette.md +15 -15
  196. package/reference/components/date-picker.md +22 -22
  197. package/reference/components/drawer.md +13 -13
  198. package/reference/components/file-upload.md +22 -22
  199. package/reference/components/input.md +18 -18
  200. package/reference/components/label.md +25 -25
  201. package/reference/components/link.md +19 -19
  202. package/reference/components/list.md +17 -17
  203. package/reference/components/menu.md +19 -19
  204. package/reference/components/modal-dialog.md +16 -16
  205. package/reference/components/navbar.md +19 -19
  206. package/reference/components/pagination.md +18 -18
  207. package/reference/components/popover.md +12 -12
  208. package/reference/components/progress.md +18 -18
  209. package/reference/components/radio.md +17 -17
  210. package/reference/components/rich-text-editor.md +24 -24
  211. package/reference/components/select-combobox.md +16 -16
  212. package/reference/components/sidebar.md +15 -15
  213. package/reference/components/skeleton.md +20 -20
  214. package/reference/components/slider.md +20 -20
  215. package/reference/components/stepper.md +24 -24
  216. package/reference/components/switch.md +19 -19
  217. package/reference/components/table.md +21 -21
  218. package/reference/components/tabs.md +11 -11
  219. package/reference/components/toast.md +19 -19
  220. package/reference/components/tooltip.md +19 -19
  221. package/reference/components/tree.md +17 -17
  222. package/reference/composition.md +38 -38
  223. package/reference/config-schema.md +37 -37
  224. package/reference/context-md-format.md +9 -9
  225. package/reference/contrast-advanced.md +29 -29
  226. package/reference/conversational-ui.md +17 -17
  227. package/reference/cost-governance.md +14 -14
  228. package/reference/css-grid-layout.md +8 -8
  229. package/reference/cycle-handoff-preamble.md +3 -3
  230. package/reference/data-visualization.md +67 -67
  231. package/reference/debugger-philosophy.md +5 -5
  232. package/reference/design-system-guidance.md +21 -21
  233. package/reference/design-systems-catalog.md +20 -20
  234. package/reference/design-variants.md +11 -11
  235. package/reference/domains/civic-patterns.md +10 -10
  236. package/reference/domains/finance-patterns.md +9 -9
  237. package/reference/domains/gaming-patterns.md +9 -9
  238. package/reference/domains/healthcare-patterns.md +11 -11
  239. package/reference/ds-bootstrap-rubric.md +13 -13
  240. package/reference/email-design.md +22 -22
  241. package/reference/emotional-design.md +10 -10
  242. package/reference/error-recovery.md +11 -11
  243. package/reference/export-formats.md +7 -7
  244. package/reference/figma-sandbox.md +6 -6
  245. package/reference/first-principles.md +10 -10
  246. package/reference/form-patterns.md +26 -26
  247. package/reference/framer-motion-patterns.md +49 -49
  248. package/reference/gdd-runtime-audit.md +17 -17
  249. package/reference/gdd-threat-model.md +44 -44
  250. package/reference/gemini-tools.md +3 -3
  251. package/reference/gestalt.md +24 -24
  252. package/reference/heuristics.md +32 -32
  253. package/reference/i18n.md +44 -44
  254. package/reference/iconography.md +24 -24
  255. package/reference/image-optimization.md +14 -14
  256. package/reference/information-architecture.md +47 -47
  257. package/reference/intel-schema.md +1 -1
  258. package/reference/known-failure-modes.md +37 -37
  259. package/reference/meta-rules.md +5 -5
  260. package/reference/migrations/material-3-to-4.md +17 -17
  261. package/reference/migrations/mui-v6.md +16 -16
  262. package/reference/migrations/shadcn-v2.md +25 -25
  263. package/reference/migrations/tailwind-v4.md +21 -21
  264. package/reference/model-prices.md +3 -3
  265. package/reference/model-tiers.md +40 -40
  266. package/reference/motion-advanced.md +21 -21
  267. package/reference/motion-easings.md +29 -29
  268. package/reference/motion-interpolate.md +1 -1
  269. package/reference/motion-spring.md +13 -13
  270. package/reference/motion-transition-taxonomy.md +34 -34
  271. package/reference/motion.md +31 -31
  272. package/reference/multi-author-model.md +13 -13
  273. package/reference/native-platforms.md +28 -28
  274. package/reference/notification-routing.md +6 -6
  275. package/reference/onboarding-progressive-disclosure.md +32 -32
  276. package/reference/openrouter-tier-mapping.md +8 -8
  277. package/reference/palette-catalog.md +37 -37
  278. package/reference/parallelism-rules.md +20 -20
  279. package/reference/peer-cli-capabilities.md +14 -14
  280. package/reference/peer-protocols.md +21 -21
  281. package/reference/perf-budget.md +21 -21
  282. package/reference/performance.md +22 -22
  283. package/reference/platforms.md +51 -51
  284. package/reference/pr-review-integration.md +7 -7
  285. package/reference/prices/antigravity.md +3 -3
  286. package/reference/prices/augment.md +3 -3
  287. package/reference/prices/claude.md +2 -2
  288. package/reference/prices/cline.md +4 -4
  289. package/reference/prices/codebuddy.md +3 -3
  290. package/reference/prices/codex.md +2 -2
  291. package/reference/prices/copilot.md +3 -3
  292. package/reference/prices/cursor.md +3 -3
  293. package/reference/prices/gemini.md +2 -2
  294. package/reference/prices/kilo.md +3 -3
  295. package/reference/prices/opencode.md +4 -4
  296. package/reference/prices/qwen.md +2 -2
  297. package/reference/prices/trae.md +3 -3
  298. package/reference/prices/windsurf.md +3 -3
  299. package/reference/prices.openrouter.md +5 -5
  300. package/reference/print-design.md +36 -36
  301. package/reference/priority-matrix.md +2 -2
  302. package/reference/project-skills-guide.md +3 -3
  303. package/reference/proportion-systems.md +23 -23
  304. package/reference/pseudonymization-rules.md +30 -30
  305. package/reference/retrieval-contract.md +14 -14
  306. package/reference/review-format.md +7 -7
  307. package/reference/rollout-coordination.md +10 -10
  308. package/reference/rtl-cjk-cultural.md +39 -39
  309. package/reference/runtime-models.md +28 -28
  310. package/reference/shared-preamble.md +26 -26
  311. package/reference/skill-authoring-contract.md +16 -16
  312. package/reference/skill-placeholders.md +3 -3
  313. package/reference/start-interview.md +10 -10
  314. package/reference/style-vocabulary.md +25 -25
  315. package/reference/surfaces.md +4 -4
  316. package/reference/ticket-sync.md +9 -9
  317. package/reference/typography.md +64 -64
  318. package/reference/user-research.md +54 -54
  319. package/reference/variable-fonts-loading.md +15 -15
  320. package/reference/visual-hierarchy-layout.md +41 -41
  321. package/scripts/lib/harness-freshness.cjs +59 -0
  322. package/scripts/lib/health-mirror/index.cjs +27 -0
  323. package/scripts/lib/manifest/harnesses.json +280 -14
  324. package/scripts/lib/manifest/prose-denylist.json +1 -1
  325. package/scripts/lib/manifest/schemas/harnesses.schema.json +32 -0
  326. package/sdk/mcp/gdd-mcp/server.js +125 -0
  327. package/skills/add-backlog/SKILL.md +3 -3
  328. package/skills/analyze-dependencies/SKILL.md +10 -10
  329. package/skills/apply-reflections/SKILL.md +13 -13
  330. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  331. package/skills/audit/SKILL.md +7 -7
  332. package/skills/bandit-status/SKILL.md +7 -7
  333. package/skills/benchmark/SKILL.md +7 -7
  334. package/skills/bootstrap-ds/SKILL.md +10 -10
  335. package/skills/brief/SKILL.md +20 -20
  336. package/skills/budget/SKILL.md +4 -4
  337. package/skills/cache-manager/SKILL.md +6 -6
  338. package/skills/cache-manager/cache-policy.md +5 -5
  339. package/skills/check-update/SKILL.md +5 -5
  340. package/skills/compare/SKILL.md +15 -15
  341. package/skills/compare/compare-rubric.md +17 -17
  342. package/skills/complete-cycle/SKILL.md +5 -5
  343. package/skills/connections/SKILL.md +11 -11
  344. package/skills/connections/connections-onboarding.md +76 -76
  345. package/skills/continue/SKILL.md +2 -2
  346. package/skills/darkmode/SKILL.md +17 -17
  347. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  348. package/skills/debug/SKILL.md +3 -3
  349. package/skills/debug/debug-feedback-loops.md +12 -12
  350. package/skills/design/SKILL.md +12 -12
  351. package/skills/design/design-procedure.md +23 -23
  352. package/skills/discover/SKILL.md +7 -7
  353. package/skills/discover/discover-procedure.md +18 -18
  354. package/skills/discuss/SKILL.md +12 -12
  355. package/skills/do/SKILL.md +1 -1
  356. package/skills/explore/SKILL.md +21 -21
  357. package/skills/explore/explore-procedure.md +48 -48
  358. package/skills/export/SKILL.md +9 -9
  359. package/skills/extract-learnings/SKILL.md +5 -5
  360. package/skills/fast/SKILL.md +7 -7
  361. package/skills/figma-extract/SKILL.md +11 -11
  362. package/skills/figma-write/SKILL.md +6 -6
  363. package/skills/graphify/SKILL.md +4 -4
  364. package/skills/health/SKILL.md +16 -16
  365. package/skills/health/health-mcp-detection.md +3 -3
  366. package/skills/health/health-skill-length-report.md +6 -6
  367. package/skills/help/SKILL.md +1 -1
  368. package/skills/list-assumptions/SKILL.md +4 -4
  369. package/skills/map/SKILL.md +12 -12
  370. package/skills/migrate/SKILL.md +5 -5
  371. package/skills/new-cycle/SKILL.md +2 -2
  372. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  373. package/skills/new-project/SKILL.md +1 -1
  374. package/skills/next/SKILL.md +5 -5
  375. package/skills/note/SKILL.md +1 -1
  376. package/skills/openrouter-status/SKILL.md +4 -4
  377. package/skills/optimize/SKILL.md +15 -15
  378. package/skills/pause/SKILL.md +5 -5
  379. package/skills/peer-cli-add/SKILL.md +11 -11
  380. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  381. package/skills/peer-cli-customize/SKILL.md +14 -14
  382. package/skills/peers/SKILL.md +4 -4
  383. package/skills/plan/SKILL.md +13 -13
  384. package/skills/plan/plan-procedure.md +24 -24
  385. package/skills/plant-seed/SKILL.md +4 -4
  386. package/skills/pr-branch/SKILL.md +2 -2
  387. package/skills/progress/SKILL.md +15 -15
  388. package/skills/quality-gate/SKILL.md +22 -22
  389. package/skills/quality-gate/threat-modeling.md +19 -19
  390. package/skills/quick/SKILL.md +5 -5
  391. package/skills/reapply-patches/SKILL.md +7 -7
  392. package/skills/reflect/SKILL.md +3 -3
  393. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  394. package/skills/report-issue/SKILL.md +5 -5
  395. package/skills/report-issue/report-issue-procedure.md +27 -27
  396. package/skills/resume/SKILL.md +9 -9
  397. package/skills/review-backlog/SKILL.md +3 -3
  398. package/skills/review-decisions/SKILL.md +3 -3
  399. package/skills/roi/SKILL.md +5 -5
  400. package/skills/rollout-status/SKILL.md +4 -4
  401. package/skills/router/SKILL.md +11 -11
  402. package/skills/router/capability-gap-emitter.md +6 -6
  403. package/skills/router/router-pick-emitter.md +9 -9
  404. package/skills/router/router-rules.md +7 -7
  405. package/skills/scan/SKILL.md +16 -16
  406. package/skills/scan/scan-procedure.md +42 -42
  407. package/skills/settings/SKILL.md +2 -2
  408. package/skills/ship/SKILL.md +7 -7
  409. package/skills/sketch/SKILL.md +10 -10
  410. package/skills/sketch-wrap-up/SKILL.md +12 -12
  411. package/skills/skill-manifest/SKILL.md +5 -5
  412. package/skills/spike/SKILL.md +7 -7
  413. package/skills/spike-wrap-up/SKILL.md +13 -13
  414. package/skills/start/SKILL.md +8 -8
  415. package/skills/start/start-procedure.md +9 -9
  416. package/skills/stats/SKILL.md +5 -5
  417. package/skills/style/SKILL.md +12 -12
  418. package/skills/style/style-doc-procedure.md +12 -12
  419. package/skills/synthesize/SKILL.md +10 -10
  420. package/skills/timeline/SKILL.md +4 -4
  421. package/skills/todo/SKILL.md +3 -3
  422. package/skills/turn-closeout/SKILL.md +10 -10
  423. package/skills/unlock-decision/SKILL.md +3 -3
  424. package/skills/update/SKILL.md +9 -9
  425. package/skills/using-gdd/SKILL.md +17 -17
  426. package/skills/verify/SKILL.md +13 -13
  427. package/skills/verify/verify-procedure.md +34 -34
  428. package/skills/warm-cache/SKILL.md +8 -8
  429. package/skills/watch-authorities/SKILL.md +9 -9
  430. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,60 +1,60 @@
1
- # Platforms Reference Guide
1
+ # Platforms - Reference Guide
2
2
 
3
- Platform conventions are not arbitrary constraints they are the accumulated result of billions of user interactions on each operating system. When a designer deviates from a platform convention, they are implicitly asking their user to unlearn a trained reflex and replace it with a novel one specific to this product. That is expensive. This reference establishes the canonical interaction patterns, layout rules, gesture vocabularies, and component conventions for each platform the get-design-done framework targets, along with the governing rule for when brand expression should yield to platform habit and when it should not.
3
+ Platform conventions are not arbitrary constraints - they are the accumulated result of billions of user interactions on each operating system. When a designer deviates from a platform convention, they are implicitly asking their user to unlearn a trained reflex and replace it with a novel one specific to this product. That is expensive. This reference establishes the canonical interaction patterns, layout rules, gesture vocabularies, and component conventions for each platform the get-design-done framework targets, along with the governing rule for when brand expression should yield to platform habit and when it should not.
4
4
 
5
5
  ---
6
6
 
7
7
  ## 1. Navigation Patterns by Platform
8
8
 
9
- Navigation is the skeleton of a product. Getting it wrong does not just inconvenience users it makes the entire product feel alien on its own operating system. Each platform has developed a navigation idiom that users practice dozens of times per day across every app on the device. A product that violates that idiom creates friction on every single screen transition.
9
+ Navigation is the skeleton of a product. Getting it wrong does not just inconvenience users - it makes the entire product feel alien on its own operating system. Each platform has developed a navigation idiom that users practice dozens of times per day across every app on the device. A product that violates that idiom creates friction on every single screen transition.
10
10
 
11
11
  ### iOS
12
12
 
13
- iOS navigation is built on a two-axis model: vertical hierarchy (drilling into content via a navigation stack managed by `UINavigationController` or SwiftUI's `NavigationStack`) and lateral switching (jumping between top-level sections via a `UITabBarController` or SwiftUI's `TabView`). The tab bar lives at the bottom of the screen and should contain between two and five destinations. Apple's Human Interface Guidelines are explicit that five tabs is the maximum adding a sixth requires a "More" overflow pattern, which is a recognized user experience penalty.
13
+ iOS navigation is built on a two-axis model: vertical hierarchy (drilling into content via a navigation stack managed by `UINavigationController` or SwiftUI's `NavigationStack`) and lateral switching (jumping between top-level sections via a `UITabBarController` or SwiftUI's `TabView`). The tab bar lives at the bottom of the screen and should contain between two and five destinations. Apple's Human Interface Guidelines are explicit that five tabs is the maximum - adding a sixth requires a "More" overflow pattern, which is a recognized user experience penalty.
14
14
 
15
- The navigation bar at the top of the screen carries the current screen title and back button. The back button is automatically generated by the navigation stack with the title of the previous screen as its label when space permits, falling back to the word "Back." Never replace the system back button with a custom left-side icon that performs a different action this violates user expectation so severely that it creates support tickets.
15
+ The navigation bar at the top of the screen carries the current screen title and back button. The back button is automatically generated by the navigation stack with the title of the previous screen as its label when space permits, falling back to the word "Back." Never replace the system back button with a custom left-side icon that performs a different action - this violates user expectation so severely that it creates support tickets.
16
16
 
17
17
  Hamburger menus (three-line "sandwich" icons triggering a side drawer) are a web and Android import. They are not idiomatic iOS and should not appear in native iOS apps. If a product has more destinations than five tabs can accommodate, the correct iOS solution is to reconsider the information architecture, not to add a drawer. Drawers exist in some iOS apps, but they are third-party patterns tolerated for legacy reasons, not blessed conventions.
18
18
 
19
19
  ### Android
20
20
 
21
- Android follows Material 3's navigation component system. The bottom navigation bar serves the same function as iOS's tab bar lateral switching between top-level destinations and should contain three to five destinations. Material 3 introduced the navigation rail as the preferred navigation surface on medium-width screens (tablets, foldables in unfolded state), where it appears as a vertical column of icons and labels on the leading edge of the layout. On large screens (desktop-class Android, Chromebook), a navigation drawer either modal or persistent replaces the rail.
21
+ Android follows Material 3's navigation component system. The bottom navigation bar serves the same function as iOS's tab bar - lateral switching between top-level destinations - and should contain three to five destinations. Material 3 introduced the navigation rail as the preferred navigation surface on medium-width screens (tablets, foldables in unfolded state), where it appears as a vertical column of icons and labels on the leading edge of the layout. On large screens (desktop-class Android, Chromebook), a navigation drawer - either modal or persistent - replaces the rail.
22
22
 
23
23
  The system back gesture on Android is an edge swipe from either the left or right side of the screen. Since Android 10 this is the system default, replacing the software back button in gesture navigation mode. Designs must never shadow this gesture with in-app behavior, because the OS intercepts it before the app's gesture recognizers fire. The back gesture always navigates up in the activity/fragment back stack or returns to the launcher; no design override is possible or appropriate.
24
24
 
25
25
  ### Web
26
26
 
27
- Web navigation has three dominant patterns, each suited to a different information architecture scale. Top navigation bars work for sites with five to eight primary sections whose names fit comfortably in a single horizontal row. Sidebars are the standard for application-density products (dashboards, admin tools, documentation sites) because they accommodate ten to thirty labeled destinations without cognitive overload, and they scale with the viewport rather than breaking. Mega-menus large overlay panels triggered by hovering or clicking a top-nav item suit e-commerce and marketing sites where category hierarchies are deep but users need cross-category discovery on every page.
27
+ Web navigation has three dominant patterns, each suited to a different information architecture scale. Top navigation bars work for sites with five to eight primary sections whose names fit comfortably in a single horizontal row. Sidebars are the standard for application-density products (dashboards, admin tools, documentation sites) because they accommodate ten to thirty labeled destinations without cognitive overload, and they scale with the viewport rather than breaking. Mega-menus - large overlay panels triggered by hovering or clicking a top-nav item - suit e-commerce and marketing sites where category hierarchies are deep but users need cross-category discovery on every page.
28
28
 
29
- The command palette, triggered by `Cmd+K` (macOS) or `Ctrl+K` (Windows/Linux), has become the power-user navigation layer for application-dense web products. It is not a replacement for structural navigation it is an accelerator for users who already know where they want to go. Implementing a command palette without maintaining the sidebar or top nav for discoverability is a mistake; command palettes serve learners and experts differently, and both populations need to be served simultaneously.
29
+ The command palette, triggered by `Cmd+K` (macOS) or `Ctrl+K` (Windows/Linux), has become the power-user navigation layer for application-dense web products. It is not a replacement for structural navigation - it is an accelerator for users who already know where they want to go. Implementing a command palette without maintaining the sidebar or top nav for discoverability is a mistake; command palettes serve learners and experts differently, and both populations need to be served simultaneously.
30
30
 
31
31
  ### visionOS
32
32
 
33
- visionOS inhabits three-dimensional space, and its navigation conventions emerge from the affordances of spatial UI. Users look around and glance at windows rather than tapping a nav bar, so the concept of a persistent bottom bar physically below the user's comfortable resting gaze is inappropriate. Apple's spatial design guidelines introduce orbital menus: radial arrangements of controls that anchor to content and appear at the periphery of a window when activated, keeping the central content area unobstructed.
33
+ visionOS inhabits three-dimensional space, and its navigation conventions emerge from the affordances of spatial UI. Users look around and glance at windows rather than tapping a nav bar, so the concept of a persistent bottom bar - physically below the user's comfortable resting gaze - is inappropriate. Apple's spatial design guidelines introduce orbital menus: radial arrangements of controls that anchor to content and appear at the periphery of a window when activated, keeping the central content area unobstructed.
34
34
 
35
- Window grouping is the visionOS analog of tab groups. Related windows can be positioned in the user's space as a coherent cluster, and the user navigates between them by glancing and reaching. The design implication is that each window should be self-sufficient and not require persistent navigation chrome navigation is spatial rather than embedded in a UI surface. Because users can position windows anywhere in their environment, designers cannot rely on spatial relationships that were composed in the design tool; design for each window independently, not for a composed layout.
35
+ Window grouping is the visionOS analog of tab groups. Related windows can be positioned in the user's space as a coherent cluster, and the user navigates between them by glancing and reaching. The design implication is that each window should be self-sufficient and not require persistent navigation chrome - navigation is spatial rather than embedded in a UI surface. Because users can position windows anywhere in their environment, designers cannot rely on spatial relationships that were composed in the design tool; design for each window independently, not for a composed layout.
36
36
 
37
37
  ### watchOS
38
38
 
39
- watchOS navigation is scroll-first. The primary navigation surface is a scrollable list the watch equivalent of a `UITableView` optimized for the Digital Crown, which provides physical momentum scrolling. Users expect to scroll down to see more content on the current screen and to use the Digital Crown as the primary navigation gesture for list content. Tapping the Digital Crown navigates to the watch face; this gesture is reserved by the OS and cannot be shadowed.
39
+ watchOS navigation is scroll-first. The primary navigation surface is a scrollable list - the watch equivalent of a `UITableView` - optimized for the Digital Crown, which provides physical momentum scrolling. Users expect to scroll down to see more content on the current screen and to use the Digital Crown as the primary navigation gesture for list content. Tapping the Digital Crown navigates to the watch face; this gesture is reserved by the OS and cannot be shadowed.
40
40
 
41
- Nested navigation should never exceed two levels on watchOS. The small screen area and the awkward input model (small touch targets, no text input without Siri) mean that deep navigation hierarchies become traps users lose orientation and cannot easily escape. If a feature cannot be expressed in two navigation levels or fewer, it is too complex for watchOS and should be redesigned or moved to the companion iOS app.
41
+ Nested navigation should never exceed two levels on watchOS. The small screen area and the awkward input model (small touch targets, no text input without Siri) mean that deep navigation hierarchies become traps - users lose orientation and cannot easily escape. If a feature cannot be expressed in two navigation levels or fewer, it is too complex for watchOS and should be redesigned or moved to the companion iOS app.
42
42
 
43
43
  ### Cross-Platform Consistency: Convention vs. Brand
44
44
 
45
45
  The governing rule for resolving the tension between platform convention and brand identity is this: **follow the platform for navigation, interaction patterns, and component behavior; apply the brand to color, typography scale, iconography, and illustration.** A user who encounters a bottom tab bar on iOS and a bottom navigation bar on Android is experiencing appropriate platform adaptation, not inconsistent branding. A user who encounters a custom gesture that conflicts with the OS back gesture is experiencing a design error, regardless of how on-brand the interaction felt in the design tool.
46
46
 
47
- Brand consistency lives in the visual layer your colors, type choices, illustration style, and motion language should be recognizable across platforms without requiring you to break platform idioms to achieve them. When a component does not exist in your design system for a given platform (for example, a native alert dialog on iOS vs. Android), the correct approach is to adapt the component to the platform's idiom while keeping the copy, color, and brand voice consistent.
47
+ Brand consistency lives in the visual layer - your colors, type choices, illustration style, and motion language should be recognizable across platforms without requiring you to break platform idioms to achieve them. When a component does not exist in your design system for a given platform (for example, a native alert dialog on iOS vs. Android), the correct approach is to adapt the component to the platform's idiom while keeping the copy, color, and brand voice consistent.
48
48
 
49
49
  ---
50
50
 
51
51
  ## 2. Safe Areas and Layout Margins
52
52
 
53
- Every modern mobile platform introduces areas of the display where UI elements should not appear: behind the status bar, under the home indicator, behind the camera cutout, or outside the circular mask of a watch. Ignoring safe areas does not merely produce visual bugs it can make controls unreachable or occluded in ways that break the product for large segments of users.
53
+ Every modern mobile platform introduces areas of the display where UI elements should not appear: behind the status bar, under the home indicator, behind the camera cutout, or outside the circular mask of a watch. Ignoring safe areas does not merely produce visual bugs - it can make controls unreachable or occluded in ways that break the product for large segments of users.
54
54
 
55
55
  ### iOS: Notch, Dynamic Island, and Home Indicator
56
56
 
57
- Since the iPhone X, iOS devices have a camera housing at the top of the display originally the notch, now the Dynamic Island on newer devices and a home indicator bar at the bottom. iOS exposes these as safe area insets, accessible in CSS via the environment function:
57
+ Since the iPhone X, iOS devices have a camera housing at the top of the display - originally the notch, now the Dynamic Island on newer devices - and a home indicator bar at the bottom. iOS exposes these as safe area insets, accessible in CSS via the environment function:
58
58
 
59
59
  ```css
60
60
  padding-top: env(safe-area-inset-top);
@@ -69,7 +69,7 @@ For web content rendered in a WKWebView or Safari on iOS, the viewport meta tag
69
69
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
70
70
  ```
71
71
 
72
- The home indicator at the bottom of the display on Face ID devices occupies approximately 34 points. Any interactive controls placed at the very bottom of the screen primary action buttons, persistent toolbars, bottom sheets must clear the home indicator. The system automatically applies the inset for native UIKit and SwiftUI layouts, but web-in-WebView requires the CSS above. Failing to handle the bottom inset is the single most common iOS layout bug in hybrid apps.
72
+ The home indicator at the bottom of the display on Face ID devices occupies approximately 34 points. Any interactive controls placed at the very bottom of the screen - primary action buttons, persistent toolbars, bottom sheets - must clear the home indicator. The system automatically applies the inset for native UIKit and SwiftUI layouts, but web-in-WebView requires the CSS above. Failing to handle the bottom inset is the single most common iOS layout bug in hybrid apps.
73
73
 
74
74
  ### Android: Status Bar, Navigation Bar, and Edge-to-Edge
75
75
 
@@ -77,7 +77,7 @@ Android has enforced edge-to-edge rendering as the default since Android 15. Pri
77
77
 
78
78
  Android exposes insets through `WindowInsetsCompat` in the Jetpack library. In Jetpack Compose, the `safeDrawing` inset padding modifier handles the most common cases. For React Native and Flutter apps targeting Android, the platform bridge handles inset forwarding, but custom navigation bars or bottom sheets still require explicit inset consumption.
79
79
 
80
- The system gesture navigation bar at the bottom of the screen is transparent by default on Android 10 and later, showing the app content beneath it. This means a white bottom sheet on a white background will appear to have no bottom boundary the bar blends in. The design solution is to draw content under the bar (which Android encourages) while ensuring the bottommost interactive control is above the gesture exclusion zone, which is approximately 30dp from the bottom edge.
80
+ The system gesture navigation bar at the bottom of the screen is transparent by default on Android 10 and later, showing the app content beneath it. This means a white bottom sheet on a white background will appear to have no bottom boundary - the bar blends in. The design solution is to draw content under the bar (which Android encourages) while ensuring the bottommost interactive control is above the gesture exclusion zone, which is approximately 30dp from the bottom edge.
81
81
 
82
82
  ### Web: Viewport Units and Browser Chrome Behavior
83
83
 
@@ -87,10 +87,10 @@ The correct unit is `dvh` (dynamic viewport height), introduced in the CSS Value
87
87
 
88
88
  | Unit | Resolves to | Use case |
89
89
  |------|-------------|----------|
90
- | `100vh` | Static initial viewport height, ignores chrome | Avoid on mobile; use for desktop |
91
- | `100dvh` | Dynamic updates as browser chrome shows/hides | Default choice for full-height mobile layouts |
92
- | `100svh` | Static smallest possible viewport (chrome fully visible) | Fixed bottom bars that should never resize |
93
- | `100lvh` | Static largest possible viewport (chrome fully hidden) | Hero sections that expand when chrome hides |
90
+ | `100vh` | Static - initial viewport height, ignores chrome | Avoid on mobile; use for desktop |
91
+ | `100dvh` | Dynamic - updates as browser chrome shows/hides | Default choice for full-height mobile layouts |
92
+ | `100svh` | Static - smallest possible viewport (chrome fully visible) | Fixed bottom bars that should never resize |
93
+ | `100lvh` | Static - largest possible viewport (chrome fully hidden) | Hero sections that expand when chrome hides |
94
94
 
95
95
  ### watchOS: Circular Display Mask
96
96
 
@@ -100,7 +100,7 @@ The Apple Watch display has rounded corners and a circular mask that clips conte
100
100
 
101
101
  ## 3. Gesture Vocabularies
102
102
 
103
- Gestures are the physical language of a platform. Each operating system has reserved certain gestures for system-level navigation, and these reservations cannot be overridden by applications the OS claims them before the app's gesture recognizers run. Shadowing a reserved gesture does not produce a conflict; it produces a silent failure where the user's intended in-app action triggers the system behavior instead, and the app gesture is never received.
103
+ Gestures are the physical language of a platform. Each operating system has reserved certain gestures for system-level navigation, and these reservations cannot be overridden by applications - the OS claims them before the app's gesture recognizers run. Shadowing a reserved gesture does not produce a conflict; it produces a silent failure where the user's intended in-app action triggers the system behavior instead, and the app gesture is never received.
104
104
 
105
105
  ### iOS Gesture Reservations
106
106
 
@@ -108,31 +108,31 @@ The most critical reserved gesture on iOS is the **swipe from the left edge of t
108
108
 
109
109
  **Swipe down from the top of the screen** opens Notification Center. On Face ID devices, swiping down from the upper-left opens Notification Center and swiping down from the upper-right opens Control Center. Custom pull-to-refresh gestures that begin at the very top of the screen work because they begin from within the scrollable content area, not from the status bar region.
110
110
 
111
- **Long press** on iOS surfaces context menus (UIContextMenu) or enters wiggle mode on home screen icons. In-app long press for custom behavior is acceptable as long as it is not the primary or only affordance for a critical action users cannot discover long-press affordances without experimentation, so any feature requiring long press must also be reachable through a visible control.
111
+ **Long press** on iOS surfaces context menus (UIContextMenu) or enters wiggle mode on home screen icons. In-app long press for custom behavior is acceptable as long as it is not the primary or only affordance for a critical action - users cannot discover long-press affordances without experimentation, so any feature requiring long press must also be reachable through a visible control.
112
112
 
113
113
  **Pinch** zooms content in maps, images, and text. Applications can use pinch for custom scaling behaviors within a content view, but pinch should not be used as a navigation trigger (e.g., pinch to go back) because it conflicts with system-level zoom accessibility features.
114
114
 
115
- **Force Touch / Haptic Touch** (long press with haptic response) is the iOS mechanism for quick actions and peek. It is available on all modern iOS devices. Use UIContextMenuInteraction for this behavior rather than attempting to detect touch pressure manually the system API handles the haptic response and the visual presentation.
115
+ **Force Touch / Haptic Touch** (long press with haptic response) is the iOS mechanism for quick actions and peek. It is available on all modern iOS devices. Use UIContextMenuInteraction for this behavior rather than attempting to detect touch pressure manually - the system API handles the haptic response and the visual presentation.
116
116
 
117
117
  ### Android Gesture Reservations
118
118
 
119
- The **edge swipe from either the left or right side of the screen** navigates back in the activity stack. This is identical in function to iOS's left-edge swipe but applies to both edges on Android. Applications can declare gesture exclusion rectangles specific screen regions where the app claims swipe gestures but these are limited to a maximum height of 200dp per region and cannot occupy the full screen height. Use gesture exclusion only for essential in-app swipe interactions like sliders and carousels that are positioned near the screen edge.
119
+ The **edge swipe from either the left or right side of the screen** navigates back in the activity stack. This is identical in function to iOS's left-edge swipe but applies to both edges on Android. Applications can declare gesture exclusion rectangles - specific screen regions where the app claims swipe gestures - but these are limited to a maximum height of 200dp per region and cannot occupy the full screen height. Use gesture exclusion only for essential in-app swipe interactions like sliders and carousels that are positioned near the screen edge.
120
120
 
121
121
  **Swipe up from the bottom** opens the app launcher/home screen or enters recents mode, depending on how far the swipe extends. This gesture cannot be intercepted or overridden by applications. Bottom sheets that need to be dragged upward must begin from a handle or content area clearly above the system gesture zone.
122
122
 
123
- **Long press** on Android surfaces the contextual action menu and is widely used for multi-select patterns. Applications using long press for multi-select should follow Material Design's contextual action bar pattern replacing the top app bar with an action bar that shows selection actions and a count of selected items.
123
+ **Long press** on Android surfaces the contextual action menu and is widely used for multi-select patterns. Applications using long press for multi-select should follow Material Design's contextual action bar pattern - replacing the top app bar with an action bar that shows selection actions and a count of selected items.
124
124
 
125
125
  ### Web Gesture Considerations
126
126
 
127
127
  Web applications run inside a browser, which itself manages scroll, zoom, and navigation gestures. The `touch-action` CSS property allows web applications to declare which gestures they handle natively, preventing the browser from consuming those gestures. For a swipeable carousel, setting `touch-action: pan-y` tells the browser to handle vertical scrolling and pass horizontal swipes to the app's event listeners.
128
128
 
129
- **Two-finger scroll** on trackpads and touchscreens is reserved for page scrolling and cannot be reliably shadowed for in-app use. Horizontal two-finger swipe in browsers navigates browser history (back/forward). Applications that use horizontal swipe for in-content navigation should be aware that this gesture will also trigger history navigation on some browser/OS combinations a usability bug that is difficult to resolve without harming native browser back behavior.
129
+ **Two-finger scroll** on trackpads and touchscreens is reserved for page scrolling and cannot be reliably shadowed for in-app use. Horizontal two-finger swipe in browsers navigates browser history (back/forward). Applications that use horizontal swipe for in-content navigation should be aware that this gesture will also trigger history navigation on some browser/OS combinations - a usability bug that is difficult to resolve without harming native browser back behavior.
130
130
 
131
131
  ### visionOS Gesture Vocabulary
132
132
 
133
- visionOS uses eye tracking combined with hand gestures. The primary interaction is look-and-tap: the user looks at a control (which highlights with a hover effect driven by eye tracking) and then performs a pinch gesture with thumb and index finger to activate it. Spatial pinch is the visionOS equivalent of a mouse click and should be treated as such buttons and interactive controls designed for iOS translate directly.
133
+ visionOS uses eye tracking combined with hand gestures. The primary interaction is look-and-tap: the user looks at a control (which highlights with a hover effect driven by eye tracking) and then performs a pinch gesture with thumb and index finger to activate it. Spatial pinch is the visionOS equivalent of a mouse click and should be treated as such - buttons and interactive controls designed for iOS translate directly.
134
134
 
135
- **Drag** is performed by looking at a draggable element, pinching to grab, and moving the hand. Applications should not create drag interactions that require precise or sustained hand movement the physical effort is significantly higher than a mouse drag, and prolonged gestures cause arm fatigue.
135
+ **Drag** is performed by looking at a draggable element, pinching to grab, and moving the hand. Applications should not create drag interactions that require precise or sustained hand movement - the physical effort is significantly higher than a mouse drag, and prolonged gestures cause arm fatigue.
136
136
 
137
137
  ### watchOS Gesture Vocabulary
138
138
 
@@ -146,17 +146,17 @@ The **Digital Crown** rotation is the signature watchOS input. It scrolls lists,
146
146
 
147
147
  ## 4. Platform-Specific Component Conventions
148
148
 
149
- Components carry platform affordances encoded in their shape, behavior, and position. Using the wrong component variant on a given platform is not merely a visual inconsistency it communicates a different action or intent to the user because the component's meaning is partially derived from its platform context.
149
+ Components carry platform affordances encoded in their shape, behavior, and position. Using the wrong component variant on a given platform is not merely a visual inconsistency - it communicates a different action or intent to the user because the component's meaning is partially derived from its platform context.
150
150
 
151
151
  ### Action Sheet vs. Bottom Sheet
152
152
 
153
- On iOS, the action sheet (`UIActionSheet`, or `actionSheet` in SwiftUI) presents a set of choices related to the current context, anchored to the bottom of the screen on iPhone and presented as a popover on iPad. Action sheets are for choosing between a set of actions they are not for arbitrary content. The Cancel button is always present at the bottom of the sheet and is the escape route.
153
+ On iOS, the action sheet (`UIActionSheet`, or `actionSheet` in SwiftUI) presents a set of choices related to the current context, anchored to the bottom of the screen on iPhone and presented as a popover on iPad. Action sheets are for choosing between a set of actions - they are not for arbitrary content. The Cancel button is always present at the bottom of the sheet and is the escape route.
154
154
 
155
- On Android, the equivalent is the modal bottom sheet from Material Design. It serves a broader role than the iOS action sheet: it can contain lists of actions, but also form fields, detail content, or navigation. The Android bottom sheet does not have a mandatory Cancel button in the same position; instead, it is dismissed by tapping the scrim outside or by dragging it down. This behavioral difference means designs cannot be directly translated an iOS action sheet with a prominent Cancel button will look wrong on Android because the dismiss convention differs.
155
+ On Android, the equivalent is the modal bottom sheet from Material Design. It serves a broader role than the iOS action sheet: it can contain lists of actions, but also form fields, detail content, or navigation. The Android bottom sheet does not have a mandatory Cancel button in the same position; instead, it is dismissed by tapping the scrim outside or by dragging it down. This behavioral difference means designs cannot be directly translated - an iOS action sheet with a prominent Cancel button will look wrong on Android because the dismiss convention differs.
156
156
 
157
157
  ### Alert Dialog vs. Dialog
158
158
 
159
- An iOS `UIAlertController` in alert style is a small centered dialog with a title, message, and up to two action buttons. When there are more than two actions, use the action sheet instead the iOS alert is intentionally constrained to binary decisions. Alert dialogs block all interaction until dismissed.
159
+ An iOS `UIAlertController` in alert style is a small centered dialog with a title, message, and up to two action buttons. When there are more than two actions, use the action sheet instead - the iOS alert is intentionally constrained to binary decisions. Alert dialogs block all interaction until dismissed.
160
160
 
161
161
  Android's AlertDialog from Material Design is visually similar but accepts up to three buttons (positive, negative, neutral) and supports more complex layouts including dividers and scrollable content. The Android dialog also uses stronger typographic hierarchy than iOS alerts, following Material's `Title/Body/Actions` pattern explicitly.
162
162
 
@@ -164,7 +164,7 @@ Neither platform's alert dialog is appropriate for complex content, form input,
164
164
 
165
165
  ### iOS Segmented Control vs. Android Tab Row
166
166
 
167
- The iOS segmented control is a compact selector for switching between two to five mutually exclusive views or modes. It appears inline in the content area or in navigation bars, and its selection is reflected immediately it is not a submit-style control. The segmented control is visually contained within a pill shape and does not have separate tab indicator lines.
167
+ The iOS segmented control is a compact selector for switching between two to five mutually exclusive views or modes. It appears inline in the content area or in navigation bars, and its selection is reflected immediately - it is not a submit-style control. The segmented control is visually contained within a pill shape and does not have separate tab indicator lines.
168
168
 
169
169
  Android's equivalent is the Tab layout from Material Design, which uses underline indicators on a row of text labels. Material 3 distinguishes between primary tabs (page-level navigation) and secondary tabs (content filtering within a page). The visual language is different enough that using an iOS segmented control design on Android will read as foreign. Design platform-specific variants for each; share only the component's logic and data model.
170
170
 
@@ -178,11 +178,11 @@ Android's Material Design switch uses the same horizontal sliding metaphor but h
178
178
 
179
179
  A web modal dialog (the HTML `<dialog>` element, or a custom overlay) blocks page interaction behind a scrim and centers a card in the viewport. It is the correct choice for confirmations, forms that require focus, and content previews when the user needs to complete or dismiss a task before continuing. Web modals work on both mouse and touch interfaces because they do not depend on the physical affordance of dragging a sheet from a panel edge.
180
180
 
181
- Native bottom sheets (half-modal sheets in iOS, bottom sheets in Android) are appropriate for mobile-width layouts where the card anchored to the screen bottom provides a tactile affordance users can drag the sheet down to dismiss it. On web, native sheet behavior can be approximated with CSS transitions and touch event handling, but it requires explicit engineering to match the physics of the native implementation. Reserve the sheet pattern for mobile web experiences; use centered modals for desktop web where sheets feel out of place.
181
+ Native bottom sheets (half-modal sheets in iOS, bottom sheets in Android) are appropriate for mobile-width layouts where the card anchored to the screen bottom provides a tactile affordance - users can drag the sheet down to dismiss it. On web, native sheet behavior can be approximated with CSS transitions and touch event handling, but it requires explicit engineering to match the physics of the native implementation. Reserve the sheet pattern for mobile web experiences; use centered modals for desktop web where sheets feel out of place.
182
182
 
183
183
  ### visionOS: Ornaments vs. Toolbars
184
184
 
185
- visionOS introduces the concept of ornaments UI elements that appear to float outside the boundary of a window, anchored to its edge. The primary toolbar of a visionOS window should be placed in an ornament rather than inside the window's content area. This keeps the window's content area clean and takes advantage of the spatial depth available in visionOS to create a sense of UI layering. Toolbars inside windows flatten the spatial affordance of the platform and feel like web content rather than native visionOS design.
185
+ visionOS introduces the concept of ornaments - UI elements that appear to float outside the boundary of a window, anchored to its edge. The primary toolbar of a visionOS window should be placed in an ornament rather than inside the window's content area. This keeps the window's content area clean and takes advantage of the spatial depth available in visionOS to create a sense of UI layering. Toolbars inside windows flatten the spatial affordance of the platform and feel like web content rather than native visionOS design.
186
186
 
187
187
  SwiftUI surfaces ornaments through the `.ornament` modifier, which anchors to a specified edge of the window at a specified offset. The recommended pattern is to place navigation controls (back, close, minimize) and contextual actions (edit, share, refresh) in an ornament anchored to the bottom or leading edge of the content window.
188
188
 
@@ -190,15 +190,15 @@ SwiftUI surfaces ornaments through the `.ornament` modifier, which anchors to a
190
190
 
191
191
  ## 5. Native Typography
192
192
 
193
- Platform typography is not merely a default font choice it is a system of optical sizes, weights, tracking values, and dynamic scaling behaviors that the platform vendor has spent years calibrating for their display hardware. Using the native type system correctly means the product's text will look and respond identically to text in the OS and every other native app, which is the baseline users calibrate their reading experience against.
193
+ Platform typography is not merely a default font choice - it is a system of optical sizes, weights, tracking values, and dynamic scaling behaviors that the platform vendor has spent years calibrating for their display hardware. Using the native type system correctly means the product's text will look and respond identically to text in the OS and every other native app, which is the baseline users calibrate their reading experience against.
194
194
 
195
195
  ### iOS: SF Pro, SF Rounded, and SF Compact
196
196
 
197
- San Francisco (SF Pro) is the system typeface on iOS, macOS, and visionOS. It is a variable-weight sans-serif with separate Display (for text above approximately 20pt) and Text (for text at and below 20pt) optical sizes. The Display variant has tighter tracking optimized for large sizes; the Text variant has slightly looser tracking optimized for readability at small sizes. The transition between them happens automatically when using Apple's dynamic text styles it does not happen automatically for custom font sizes, which is why specifying `UIFont.systemFont(ofSize:)` with sizes above 20pt while in a small-text context will produce tracking that looks subtly wrong.
197
+ San Francisco (SF Pro) is the system typeface on iOS, macOS, and visionOS. It is a variable-weight sans-serif with separate Display (for text above approximately 20pt) and Text (for text at and below 20pt) optical sizes. The Display variant has tighter tracking optimized for large sizes; the Text variant has slightly looser tracking optimized for readability at small sizes. The transition between them happens automatically when using Apple's dynamic text styles - it does not happen automatically for custom font sizes, which is why specifying `UIFont.systemFont(ofSize:)` with sizes above 20pt while in a small-text context will produce tracking that looks subtly wrong.
198
198
 
199
199
  SF Rounded is an alternate variant with softened terminals, appropriate for friendly or playful product tones. SF Mono is the monospaced variant, intended for code display, terminal output, and data values that must align in columns.
200
200
 
201
- Dynamic Type is Apple's system for user-controlled text scaling. Users can set their preferred text size in Settings > Accessibility, which scales all text using the Dynamic Type styles up to a maximum multiplier of approximately 3×. Every text style in an iOS app should use a named Dynamic Type style (`UIFont.TextStyle` or SwiftUI's `.font(.body)`, `.font(.headline)`) to participate in this scaling. Never use text below 11pt at any Dynamic Type setting below 11pt, letters collapse to the point of illegibility even on Retina displays. The minimum label size to target under standard accessibility settings is 13pt for body text, growing to as much as 53pt under the largest accessibility text size.
201
+ Dynamic Type is Apple's system for user-controlled text scaling. Users can set their preferred text size in Settings > Accessibility, which scales all text using the Dynamic Type styles up to a maximum multiplier of approximately 3×. Every text style in an iOS app should use a named Dynamic Type style (`UIFont.TextStyle` or SwiftUI's `.font(.body)`, `.font(.headline)`) to participate in this scaling. Never use text below 11pt at any Dynamic Type setting - below 11pt, letters collapse to the point of illegibility even on Retina displays. The minimum label size to target under standard accessibility settings is 13pt for body text, growing to as much as 53pt under the largest accessibility text size.
202
202
 
203
203
  The canonical Dynamic Type scale for iOS, at the default (large) system text size:
204
204
 
@@ -271,23 +271,23 @@ watchOS uses SF Compact, a narrower optical variant of San Francisco designed fo
271
271
 
272
272
  ## 6. Haptic Feedback
273
273
 
274
- Haptics are the tactile confirmation layer of mobile interfaces. They are the difference between an interface that feels alive under the finger and one that feels like touching a pane of glass. Used correctly, haptics confirm actions, communicate state transitions, and orient the user within a physical gesture. Used incorrectly too frequently, too intensely, or for decorative purposes they become noise that users disable in Settings, removing an entire feedback channel.
274
+ Haptics are the tactile confirmation layer of mobile interfaces. They are the difference between an interface that feels alive under the finger and one that feels like touching a pane of glass. Used correctly, haptics confirm actions, communicate state transitions, and orient the user within a physical gesture. Used incorrectly - too frequently, too intensely, or for decorative purposes - they become noise that users disable in Settings, removing an entire feedback channel.
275
275
 
276
276
  ### iOS: Taptic Engine
277
277
 
278
278
  Apple's Taptic Engine is the haptic actuator present in all iPhones from iPhone 6s onward. iOS exposes three distinct haptic feedback APIs, each for a different use case.
279
279
 
280
- `UIImpactFeedbackGenerator` communicates the physical metaphor of an impact two objects colliding. It offers three styles: `.light`, `.medium`, and `.heavy`, corresponding to the perceived mass of the collision. Light is appropriate for small UI events like toggles and minor selections; medium for confirmations and modal presentations; heavy for destructive actions and notifications that demand attention. Use this generator when the user's action has a direct, immediate effect and you want to confirm the moment of contact.
280
+ `UIImpactFeedbackGenerator` communicates the physical metaphor of an impact - two objects colliding. It offers three styles: `.light`, `.medium`, and `.heavy`, corresponding to the perceived mass of the collision. Light is appropriate for small UI events like toggles and minor selections; medium for confirmations and modal presentations; heavy for destructive actions and notifications that demand attention. Use this generator when the user's action has a direct, immediate effect and you want to confirm the moment of contact.
281
281
 
282
- `UINotificationFeedbackGenerator` communicates the outcome of a completed process. It has three types: `.success`, `.warning`, and `.error`. These should always be paired with their corresponding visual state change a haptic success without a visible success state is confusing, and a haptic error without a visible error state is alarming without explanation. Do not use notification feedback for routine actions; reserve it for operations with binary outcomes that the user needs to know about.
282
+ `UINotificationFeedbackGenerator` communicates the outcome of a completed process. It has three types: `.success`, `.warning`, and `.error`. These should always be paired with their corresponding visual state change - a haptic success without a visible success state is confusing, and a haptic error without a visible error state is alarming without explanation. Do not use notification feedback for routine actions; reserve it for operations with binary outcomes that the user needs to know about.
283
283
 
284
- `UISelectionFeedbackGenerator` communicates movement through a series of items a picker wheel advancing one position, a slider snapping to a value. It produces a subtle rhythmic tick that matches the cadence of physical detents on a mechanical dial. Use it only for continuous selection gestures, not for discrete button taps.
284
+ `UISelectionFeedbackGenerator` communicates movement through a series of items - a picker wheel advancing one position, a slider snapping to a value. It produces a subtle rhythmic tick that matches the cadence of physical detents on a mechanical dial. Use it only for continuous selection gestures, not for discrete button taps.
285
285
 
286
286
  The governing rule for iOS haptics is to trigger them from changes the user caused, not from changes the system initiated. Asynchronous events (incoming notifications, background data sync) should not trigger impact or selection haptics; they may use notification haptics only if the outcome is directly relevant to an action the user recently took.
287
287
 
288
288
  ### Android: VibrationEffect and HapticFeedbackConstants
289
289
 
290
- Android provides haptic feedback through two mechanisms depending on the use case. `HapticFeedbackConstants` is the high-level API accessed through `View.performHapticFeedback()` it uses semantic constants that the system maps to hardware-appropriate vibration patterns. Relevant constants and their iOS equivalents:
290
+ Android provides haptic feedback through two mechanisms depending on the use case. `HapticFeedbackConstants` is the high-level API accessed through `View.performHapticFeedback()` - it uses semantic constants that the system maps to hardware-appropriate vibration patterns. Relevant constants and their iOS equivalents:
291
291
 
292
292
  | Android constant | iOS equivalent | Semantics |
293
293
  |------------------|----------------|-----------|
@@ -299,15 +299,15 @@ Android provides haptic feedback through two mechanisms depending on the use cas
299
299
  | `GESTURE_START` | `.light` impact | Beginning of a drag gesture |
300
300
  | `GESTURE_END` | `.medium` impact | Completion of a drag gesture |
301
301
 
302
- `VibrationEffect` (accessed via `Vibrator.vibrate(VibrationEffect)`) provides lower-level control for custom patterns, intensities, and compositions. For most application use cases, `HapticFeedbackConstants` is sufficient and preferable it delegates pattern selection to the platform, which accounts for differences in actuator hardware across Android devices. A pattern tuned for a Pixel's linear resonant actuator will feel wrong on a budget device with an eccentric rotating mass vibrator.
302
+ `VibrationEffect` (accessed via `Vibrator.vibrate(VibrationEffect)`) provides lower-level control for custom patterns, intensities, and compositions. For most application use cases, `HapticFeedbackConstants` is sufficient and preferable - it delegates pattern selection to the platform, which accounts for differences in actuator hardware across Android devices. A pattern tuned for a Pixel's linear resonant actuator will feel wrong on a budget device with an eccentric rotating mass vibrator.
303
303
 
304
304
  Android 12 introduced `VibrationEffect.Composition`, which allows sequencing haptic primitives (ticks, clicks, thuds, spins) with custom durations and amplitudes. This is appropriate for games and rich interactive experiences; for standard application UI, prefer the semantic constants.
305
305
 
306
306
  ### Web: navigator.vibrate()
307
307
 
308
- The Web Vibration API (`navigator.vibrate(pattern)`) is supported primarily on Android Chrome. iOS Safari does not implement the Vibration API, and desktop browsers ignore it. This severely limits its utility as a universal web haptic strategy any feature that depends on `navigator.vibrate()` will silently do nothing on half the target audience.
308
+ The Web Vibration API (`navigator.vibrate(pattern)`) is supported primarily on Android Chrome. iOS Safari does not implement the Vibration API, and desktop browsers ignore it. This severely limits its utility as a universal web haptic strategy - any feature that depends on `navigator.vibrate()` will silently do nothing on half the target audience.
309
309
 
310
- The appropriate use of `navigator.vibrate()` on web is limited to a single, clearly defined scenario: **critical confirmations on mobile web experiences where the user is performing an action with significant consequences**, such as confirming a payment or an irreversible deletion. In this narrow case, the haptic provides an additional confirmation signal on devices that support it, while the experience degrades gracefully to visual-only confirmation on devices that do not. Decorative haptics, haptic rhythm patterns, and haptics on every button tap are inappropriate for web the unreliable cross-device support makes them an inconsistency rather than an enhancement.
310
+ The appropriate use of `navigator.vibrate()` on web is limited to a single, clearly defined scenario: **critical confirmations on mobile web experiences where the user is performing an action with significant consequences**, such as confirming a payment or an irreversible deletion. In this narrow case, the haptic provides an additional confirmation signal on devices that support it, while the experience degrades gracefully to visual-only confirmation on devices that do not. Decorative haptics, haptic rhythm patterns, and haptics on every button tap are inappropriate for web - the unreliable cross-device support makes them an inconsistency rather than an enhancement.
311
311
 
312
312
  Before triggering any haptic, always check for API availability:
313
313
 
@@ -323,11 +323,11 @@ Never use vibration patterns longer than 20ms for UI feedback; longer patterns f
323
323
 
324
324
  ## 7. Brand Consistency vs. Platform Convention
325
325
 
326
- Every product that ships on multiple platforms faces the same tension: the brand wants visual and behavioral unity across surfaces, while each platform has its own conventions that users expect. Resolving this tension incorrectly in either direction produces problems. Over-platforming designing each version so differently that the product feels like separate products creates brand confusion and multiplies design and engineering cost. Over-branding enforcing visual and behavioral uniformity at the cost of platform conventions produces products that feel foreign on every platform they ship to.
326
+ Every product that ships on multiple platforms faces the same tension: the brand wants visual and behavioral unity across surfaces, while each platform has its own conventions that users expect. Resolving this tension incorrectly in either direction produces problems. Over-platforming - designing each version so differently that the product feels like separate products - creates brand confusion and multiplies design and engineering cost. Over-branding - enforcing visual and behavioral uniformity at the cost of platform conventions - produces products that feel foreign on every platform they ship to.
327
327
 
328
328
  The resolution requires distinguishing between two categories of design decisions: **structural decisions** and **expressive decisions**.
329
329
 
330
- Structural decisions define how the user navigates, interacts, and recovers from errors. Navigation patterns, gesture vocabularies, component behaviors, safe area handling, and accessibility features all live in this category. For structural decisions, always follow the platform convention. The cost of deviating is real user confusion trained reflexes fire and produce the wrong outcome. No brand benefit is worth that cost.
330
+ Structural decisions define how the user navigates, interacts, and recovers from errors. Navigation patterns, gesture vocabularies, component behaviors, safe area handling, and accessibility features all live in this category. For structural decisions, always follow the platform convention. The cost of deviating is real user confusion - trained reflexes fire and produce the wrong outcome. No brand benefit is worth that cost.
331
331
 
332
332
  Expressive decisions define what the product looks and feels like at a perceptual level. Color palette, typography selection and scale, iconography style, illustration character, motion personality, and copy voice all live in this category. For expressive decisions, always follow the brand. Users recognize the product as "the same product" because these decisions are consistent, not because the tab bar appears at the same Y position on every platform.
333
333
 
@@ -336,10 +336,10 @@ The practical application is as follows:
336
336
  - Use the correct navigation component for each platform (tab bar on iOS, bottom nav bar on Android) but fill it with the brand's colors, icons, and typography.
337
337
  - Use platform-native dialogs and action sheets with the brand's color for accent buttons, not custom-shaped containers that shadow the OS dialog.
338
338
  - Never implement a custom gesture that conflicts with an OS-reserved gesture. Design the interaction within the gesture space the platform makes available.
339
- - Never override platform safe area handling. If a design requires content to appear in an unsafe zone, the design is wrong not the safe area.
339
+ - Never override platform safe area handling. If a design requires content to appear in an unsafe zone, the design is wrong - not the safe area.
340
340
  - Always respect the platform's minimum touch target and accessibility text scaling requirements. These are not platform conventions; they are accessibility requirements, and meeting them is a baseline, not an aspiration.
341
341
 
342
- The iOS Human Interface Guidelines, Material Design 3 documentation, and Microsoft Fluent 2 guidelines are the authoritative sources for platform structural decisions. When any detail in this reference conflicts with those sources, those sources take precedence they are updated continuously and reflect current platform capabilities and requirements. This reference synthesizes those sources for the purposes of the get-design-done framework but does not replace them.
342
+ The iOS Human Interface Guidelines, Material Design 3 documentation, and Microsoft Fluent 2 guidelines are the authoritative sources for platform structural decisions. When any detail in this reference conflicts with those sources, those sources take precedence - they are updated continuously and reflect current platform capabilities and requirements. This reference synthesizes those sources for the purposes of the get-design-done framework but does not replace them.
343
343
 
344
344
  ---
345
345
 
@@ -1,4 +1,4 @@
1
- # PR Review Integration the gh-based contract for `agents/pr-commenter.md`
1
+ # PR Review Integration - the gh-based contract for `agents/pr-commenter.md`
2
2
 
3
3
  How GDD surfaces verify/audit output **inline on a pull request** and as a **status check**, using the `gh` CLI only (no GitHub SDK, no network library). `agents/pr-commenter.md` posts against this contract after `/gdd:ship` creates the PR. Every outbound string is redacted first; every failure mode degrades to a noop (never fails the ship).
4
4
 
@@ -23,8 +23,8 @@ gh api repos/{owner}/{repo}/pulls/{number}/comments \
23
23
  -F line=42 -f side=RIGHT
24
24
  ```
25
25
 
26
- - `body` **redacted** finding text: the rule/pillar (`WCAG 1.4.3` / `audit:color`), the observation, a one-line suggested fix.
27
- - `path` + `line` + `side=RIGHT` the changed line locus (RIGHT = the new version).
26
+ - `body` - **redacted** finding text: the rule/pillar (`WCAG 1.4.3` / `audit:color`), the observation, a one-line suggested fix.
27
+ - `path` + `line` + `side=RIGHT` - the changed line locus (RIGHT = the new version).
28
28
  - One comment per located finding. Findings with **no** changed-line locus go into a single summary review (below), not scattered.
29
29
 
30
30
  ## Summary review (findings without a line locus)
@@ -34,7 +34,7 @@ gh api repos/{owner}/{repo}/pulls/{number}/reviews \
34
34
  -f body="$SAFE_SUMMARY" -f event=COMMENT
35
35
  ```
36
36
 
37
- `event=COMMENT` (never `REQUEST_CHANGES`/`APPROVE` GDD does not gate human approval). The summary lists verify pass/fail counts + the unlocated findings.
37
+ `event=COMMENT` (never `REQUEST_CHANGES`/`APPROVE` - GDD does not gate human approval). The summary lists verify pass/fail counts + the unlocated findings.
38
38
 
39
39
  ## The `gdd/design-review` check-run (the team gate)
40
40
 
@@ -48,7 +48,7 @@ gh api repos/{owner}/{repo}/check-runs \
48
48
  - `conclusion`: **`success`** = verify passed AND no blocker-level pillar AND a11y-gate not failed; **`failure`** = verify failed OR a11y-gate failed; **`neutral`** = verify incomplete / degraded.
49
49
  - `output.summary` (redacted) carries: per-pillar audit scores (from `.design/DESIGN-AUDIT.md`), verify pass/fail (from `.design/DESIGN-VERIFICATION.md`), and the a11y-gate result.
50
50
 
51
- **Making it a required check (the team step GDD never force-edits branch protection):** a maintainer enables `gdd/design-review` as a required status check via repo Settings → Branches, or via the bundled helper:
51
+ **Making it a required check (the team step - GDD never force-edits branch protection):** a maintainer enables `gdd/design-review` as a required status check via repo Settings → Branches, or via the bundled helper:
52
52
 
53
53
  ```bash
54
54
  scripts/apply-branch-protection.sh --require-check "gdd/design-review"
@@ -89,8 +89,8 @@ No raw artifact excerpt reaches `gh` un-redacted.
89
89
  | no PR number (manual/failed creation) | noop + one-line note |
90
90
  | a single `gh api` call fails (≤3 attempts) | print that body; continue with the rest |
91
91
 
92
- In all cases pr-commenter exits cleanly it **never** fails the `/gdd:ship` success path.
92
+ In all cases pr-commenter exits cleanly - it **never** fails the `/gdd:ship` success path.
93
93
 
94
94
  ## Out of scope (per Phase 35 split)
95
95
 
96
- Slack/Discord notifications (Phase 35.2); Linear/Jira ticket-sync (Phase 35.3); `pseudonymize.cjs` (Phase 30 wired for third-party channels); video walkthroughs (still images only); a GDD-side approver list (branch protection owns approvals).
96
+ Slack/Discord notifications (Phase 35.2); Linear/Jira ticket-sync (Phase 35.3); `pseudonymize.cjs` (Phase 30 - wired for third-party channels); video walkthroughs (still images only); a GDD-side approver list (branch protection owns approvals).
@@ -1,9 +1,9 @@
1
- # Antigravity Price Table (stub)
1
+ # Antigravity - Price Table (stub)
2
2
 
3
3
  **Runtime:** `antigravity` (Antigravity)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://antigravity.google/docs>` pending.
6
+ **Provenance:** `<TODO: confirm at https://antigravity.google/docs>` - pending.
7
7
 
8
8
  ## Pricing (USD per 1M tokens)
9
9
 
@@ -1,9 +1,9 @@
1
- # Augment Code Price Table (stub)
1
+ # Augment Code - Price Table (stub)
2
2
 
3
3
  **Runtime:** `augment` (Augment Code)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://docs.augmentcode.com>` pending.
6
+ **Provenance:** `<TODO: confirm at https://docs.augmentcode.com>` - pending.
7
7
 
8
8
  ## Pricing (USD per 1M tokens)
9
9
 
@@ -1,9 +1,9 @@
1
- # Anthropic Claude Code Price Table
1
+ # Anthropic - Claude Code Price Table
2
2
 
3
3
  **Runtime:** `claude` (Claude Code)
4
4
  **Phase 26 D-08 sub-table.** Authoritative pricing for the Anthropic models referenced in `reference/runtime-models.md` under `id: "claude"`. Read by `scripts/lib/budget-enforcer.cjs` (and indirectly by `hooks/budget-enforcer.ts`) to compute `est_cost_usd` per spawn.
5
5
 
6
- **Provenance:** https://docs.anthropic.com/en/docs/about-claude/pricing retrieved 2026-04-29, cycle `2026-04-29-v1.26`.
6
+ **Provenance:** https://docs.anthropic.com/en/docs/about-claude/pricing - retrieved 2026-04-29, cycle `2026-04-29-v1.26`.
7
7
 
8
8
  ## Pricing (USD per 1M tokens)
9
9
 
@@ -1,11 +1,11 @@
1
- # Cline Price Table (stub)
1
+ # Cline - Price Table (stub)
2
2
 
3
3
  **Runtime:** `cline` (Cline)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://docs.cline.bot>` pending.
6
+ **Provenance:** `<TODO: confirm at https://docs.cline.bot>` - pending.
7
7
 
8
- **Note:** Cline is a BYO-API-key runtime actual pricing is determined by whichever provider key the user supplies. The `tier_to_model` row in `reference/runtime-models.md` chooses a default model per tier; this table prices that default. Users of other providers should override locally.
8
+ **Note:** Cline is a BYO-API-key runtime - actual pricing is determined by whichever provider key the user supplies. The `tier_to_model` row in `reference/runtime-models.md` chooses a default model per tier; this table prices that default. Users of other providers should override locally.
9
9
 
10
10
  ## Pricing (USD per 1M tokens)
11
11
 
@@ -1,9 +1,9 @@
1
- # CodeBuddy Price Table (stub)
1
+ # CodeBuddy - Price Table (stub)
2
2
 
3
3
  **Runtime:** `codebuddy` (Tencent CodeBuddy)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://copilot.tencent.com>` pending.
6
+ **Provenance:** `<TODO: confirm at https://copilot.tencent.com>` - pending.
7
7
 
8
8
  ## Pricing (USD per 1M tokens)
9
9
 
@@ -1,9 +1,9 @@
1
- # OpenAI Codex CLI Price Table
1
+ # OpenAI - Codex CLI Price Table
2
2
 
3
3
  **Runtime:** `codex` (OpenAI Codex CLI)
4
4
  **Phase 26 D-08 sub-table.** Pricing for the OpenAI Codex tier referenced in `reference/runtime-models.md` under `id: "codex"`.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://openai.com/api/pricing/>` retrieved 2026-04-29 (placeholder v1.26.0 ships with seed numbers; runtime adapter authors confirm and PR before v1.27).
6
+ **Provenance:** `<TODO: confirm at https://openai.com/api/pricing/>` - retrieved 2026-04-29 (placeholder - v1.26.0 ships with seed numbers; runtime adapter authors confirm and PR before v1.27).
7
7
 
8
8
  **Status:** placeholder values are taken from public OpenAI tier-positioning at the time of v1.26.0 ship. The cost-aggregator will surface drift if measured spend per spawn diverges from these figures by more than 20% after 10+ cycles.
9
9
 
@@ -1,9 +1,9 @@
1
- # GitHub Copilot Price Table (stub)
1
+ # GitHub Copilot - Price Table (stub)
2
2
 
3
3
  **Runtime:** `copilot` (GitHub Copilot CLI)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://docs.github.com/en/copilot/about-github-copilot/plans-for-github-copilot>` pending.
6
+ **Provenance:** `<TODO: confirm at https://docs.github.com/en/copilot/about-github-copilot/plans-for-github-copilot>` - pending.
7
7
 
8
8
  ## Pricing (USD per 1M tokens)
9
9
 
@@ -1,9 +1,9 @@
1
- # Cursor Price Table (stub)
1
+ # Cursor - Price Table (stub)
2
2
 
3
3
  **Runtime:** `cursor` (Cursor IDE / CLI)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://docs.cursor.com/account/pricing>` pending.
6
+ **Provenance:** `<TODO: confirm at https://docs.cursor.com/account/pricing>` - pending.
7
7
 
8
8
  ## Pricing (USD per 1M tokens)
9
9
 
@@ -1,9 +1,9 @@
1
- # Google Gemini CLI Price Table
1
+ # Google - Gemini CLI Price Table
2
2
 
3
3
  **Runtime:** `gemini` (Google Gemini CLI)
4
4
  **Phase 26 D-08 sub-table.** Pricing for the Gemini 2.5 tier referenced in `reference/runtime-models.md` under `id: "gemini"`.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://ai.google.dev/pricing>` retrieved 2026-04-29 (placeholder v1.26.0 ships with seed numbers; runtime adapter authors confirm and PR before v1.27).
6
+ **Provenance:** `<TODO: confirm at https://ai.google.dev/pricing>` - retrieved 2026-04-29 (placeholder - v1.26.0 ships with seed numbers; runtime adapter authors confirm and PR before v1.27).
7
7
 
8
8
  **Status:** placeholder values reflect public Gemini 2.5 tier positioning at v1.26.0 ship time. Cost-aggregator will surface drift if measured spend deviates from these figures by more than 20% after 10+ cycles.
9
9
 
@@ -1,9 +1,9 @@
1
- # Kilo Code Price Table (stub)
1
+ # Kilo Code - Price Table (stub)
2
2
 
3
3
  **Runtime:** `kilo` (Kilo Code)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://kilocode.ai/docs>` pending.
6
+ **Provenance:** `<TODO: confirm at https://kilocode.ai/docs>` - pending.
7
7
 
8
8
  ## Pricing (USD per 1M tokens)
9
9
 
@@ -1,11 +1,11 @@
1
- # OpenCode Price Table (stub)
1
+ # OpenCode - Price Table (stub)
2
2
 
3
3
  **Runtime:** `opencode` (OpenCode)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://opencode.ai/docs>` pending.
6
+ **Provenance:** `<TODO: confirm at https://opencode.ai/docs>` - pending.
7
7
 
8
- **Note:** OpenCode is a BYO-API-key runtime actual pricing is determined by whichever provider key the user supplies. The `tier_to_model` row in `reference/runtime-models.md` chooses a default model per tier; this table prices that default. Users of other providers should override locally.
8
+ **Note:** OpenCode is a BYO-API-key runtime - actual pricing is determined by whichever provider key the user supplies. The `tier_to_model` row in `reference/runtime-models.md` chooses a default model per tier; this table prices that default. Users of other providers should override locally.
9
9
 
10
10
  ## Pricing (USD per 1M tokens)
11
11
 
@@ -1,9 +1,9 @@
1
- # Alibaba Qwen CLI Price Table
1
+ # Alibaba - Qwen CLI Price Table
2
2
 
3
3
  **Runtime:** `qwen` (Alibaba Qwen CLI)
4
4
  **Phase 26 D-08 sub-table.** Pricing for the Qwen 3 tier referenced in `reference/runtime-models.md` under `id: "qwen"`.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://www.alibabacloud.com/help/en/model-studio/billing-for-models>` retrieved 2026-04-29 (placeholder v1.26.0 ships with seed numbers; runtime adapter authors confirm and PR before v1.27).
6
+ **Provenance:** `<TODO: confirm at https://www.alibabacloud.com/help/en/model-studio/billing-for-models>` - retrieved 2026-04-29 (placeholder - v1.26.0 ships with seed numbers; runtime adapter authors confirm and PR before v1.27).
7
7
 
8
8
  **Status:** placeholder values reflect public Model Studio tier positioning at v1.26.0 ship time. Cost-aggregator will surface drift if measured spend deviates from these figures by more than 20% after 10+ cycles.
9
9
 
@@ -1,9 +1,9 @@
1
- # Trae Price Table (stub)
1
+ # Trae - Price Table (stub)
2
2
 
3
3
  **Runtime:** `trae` (Trae)
4
- **Phase 26 D-08 sub-table STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
4
+ **Phase 26 D-08 sub-table - STUB.** Placeholder so the price-table router (`reference/model-prices.md`) has a complete link list for all 14 runtimes. Runtime adapter authors fill this in with provenance citations in a later cycle.
5
5
 
6
- **Provenance:** `<TODO: confirm at https://trae.ai/docs>` pending.
6
+ **Provenance:** `<TODO: confirm at https://trae.ai/docs>` - pending.
7
7
 
8
8
  **Note:** Trae may be a `single_tier` runtime (one model maps to all three tiers). When confirming pricing, populate all three rows with the same numbers and the same model name; mark `single_tier: true` in the corresponding `reference/runtime-models.md` row.
9
9