opendevbrowser 0.0.31 → 0.0.32

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 (294) hide show
  1. package/README.md +18 -5
  2. package/dist/{accessibility-snapshot-CQ4ZKWKC.js → accessibility-snapshot-XOP66CSK.js} +11 -11
  3. package/dist/{active-window-TD5HYJ72.js → active-window-E3WFOQGX.js} +11 -11
  4. package/dist/{annotate-VTLFS2XV.js → annotate-MAE7ZJOZ.js} +10 -10
  5. package/dist/{artifacts-KJ6RNDO2.js → artifacts-JHDUUJGQ.js} +2 -2
  6. package/dist/{attr-BCI5KYCW.js → attr-M3PFDJ7Q.js} +10 -10
  7. package/dist/{canvas-5DFEEOKM.js → canvas-3AJVL5I5.js} +10 -10
  8. package/dist/{capture-desktop-HFTTWY4Z.js → capture-desktop-VJGEETMJ.js} +11 -11
  9. package/dist/{capture-window-X63XPIFF.js → capture-window-W5UFSFQL.js} +11 -11
  10. package/dist/{check-LWAUY7GC.js → check-4IR3UJVW.js} +10 -10
  11. package/dist/{checked-ZSOUKVYT.js → checked-PKNY7724.js} +10 -10
  12. package/dist/{chunk-KZ2IXVQT.js → chunk-2X4JFMKJ.js} +39 -4
  13. package/dist/chunk-2X4JFMKJ.js.map +1 -0
  14. package/dist/{chunk-IPE7TF2P.js → chunk-7BNU6DFI.js} +8 -5
  15. package/dist/chunk-7BNU6DFI.js.map +1 -0
  16. package/dist/{chunk-6B5WAQV7.js → chunk-AKIAGFOE.js} +30 -7
  17. package/dist/chunk-AKIAGFOE.js.map +1 -0
  18. package/dist/{chunk-2I3YS3DV.js → chunk-AWQ37HSC.js} +7 -3
  19. package/dist/chunk-AWQ37HSC.js.map +1 -0
  20. package/dist/{chunk-3ILXPKSJ.js → chunk-BUVYTJZR.js} +2 -1
  21. package/dist/chunk-BUVYTJZR.js.map +1 -0
  22. package/dist/{chunk-AHEWXOKY.js → chunk-BUXFIY2P.js} +4 -4
  23. package/dist/{chunk-QOMWCRE3.js → chunk-HBK56JST.js} +3 -3
  24. package/dist/{chunk-T4GMCW6Z.js → chunk-J3KYGJRQ.js} +3 -3
  25. package/dist/{chunk-6PVZ2ABC.js → chunk-L3YNUGYF.js} +2 -2
  26. package/dist/{chunk-JZXD6FWR.js → chunk-NURQB55J.js} +2 -2
  27. package/dist/{chunk-GQJ5S3BL.js → chunk-P5K3ZIPI.js} +3 -3
  28. package/dist/{chunk-PPUWQKIC.js → chunk-PIFHXKV4.js} +4 -4
  29. package/dist/{chunk-STGGGVYT.js → chunk-QMHKAFYX.js} +2 -2
  30. package/dist/{chunk-4BEJVZRK.js → chunk-RO3SMXF3.js} +1073 -138
  31. package/dist/chunk-RO3SMXF3.js.map +1 -0
  32. package/dist/{chunk-RPXWUCQQ.js → chunk-SKFB5ICF.js} +2 -2
  33. package/dist/{chunk-2SIMIPLY.js → chunk-W6YPVNDX.js} +3 -3
  34. package/dist/{chunk-MD655IPO.js → chunk-XDLJE3RJ.js} +11 -4
  35. package/dist/chunk-XDLJE3RJ.js.map +1 -0
  36. package/dist/{chunk-KDSNXS6N.js → chunk-ZMNEWS7A.js} +2 -2
  37. package/dist/{chunk-COAOWH3G.js → chunk-ZOVMMQO6.js} +119 -27
  38. package/dist/chunk-ZOVMMQO6.js.map +1 -0
  39. package/dist/cli/args.d.ts.map +1 -1
  40. package/dist/cli/commands/daemon.d.ts +19 -2
  41. package/dist/cli/commands/daemon.d.ts.map +1 -1
  42. package/dist/cli/commands/inspiredesign.d.ts +6 -1
  43. package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
  44. package/dist/cli/commands/serve.d.ts +12 -3
  45. package/dist/cli/commands/serve.d.ts.map +1 -1
  46. package/dist/cli/commands/status.d.ts.map +1 -1
  47. package/dist/cli/commands/types.d.ts +1 -0
  48. package/dist/cli/commands/types.d.ts.map +1 -1
  49. package/dist/cli/daemon-client.d.ts.map +1 -1
  50. package/dist/cli/daemon-commands.d.ts.map +1 -1
  51. package/dist/cli/daemon-mismatch.d.ts +9 -0
  52. package/dist/cli/daemon-mismatch.d.ts.map +1 -0
  53. package/dist/cli/daemon.d.ts.map +1 -1
  54. package/dist/cli/errors.d.ts +4 -2
  55. package/dist/cli/errors.d.ts.map +1 -1
  56. package/dist/cli/help.d.ts.map +1 -1
  57. package/dist/cli/index.js +89 -88
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/cli/installers/postinstall-skill-sync.js +2 -2
  60. package/dist/{click-2AILSEIZ.js → click-HLNXU4I5.js} +10 -10
  61. package/dist/{clone-component-TPJS3PEG.js → clone-component-QIKN5PIM.js} +9 -9
  62. package/dist/{clone-page-LE74CIFC.js → clone-page-5C7DTGZT.js} +9 -9
  63. package/dist/{close-HN4YI47K.js → close-PCRZHX7F.js} +9 -9
  64. package/dist/{close-WFERRHX6.js → close-WTXB3EDD.js} +9 -9
  65. package/dist/{connect-RWBV2UCQ.js → connect-6C2IG55I.js} +10 -10
  66. package/dist/{console-poll-PP4YYPDF.js → console-poll-VJXCZR3F.js} +10 -10
  67. package/dist/{cookie-import-6IP776FC.js → cookie-import-5OEDFB6U.js} +9 -9
  68. package/dist/{cookie-list-O2KG6DPU.js → cookie-list-44UNJJ6D.js} +9 -9
  69. package/dist/{daemon-2BSAZXLT.js → daemon-CIKGBWEB.js} +25 -12
  70. package/dist/daemon-CIKGBWEB.js.map +1 -0
  71. package/dist/daemon-fingerprint.json +1 -1
  72. package/dist/{debug-trace-snapshot-F3BDVZXS.js → debug-trace-snapshot-RGXAPGWB.js} +10 -10
  73. package/dist/{dialog-6JQYUWMQ.js → dialog-S64MJUM2.js} +10 -10
  74. package/dist/{disconnect-763TP7GH.js → disconnect-MTIELIM7.js} +9 -9
  75. package/dist/{enabled-DLYQFNIP.js → enabled-KF2L7LW4.js} +10 -10
  76. package/dist/{goto-S346TJJH.js → goto-ULWINUAZ.js} +10 -10
  77. package/dist/{help-U7KBQME6.js → help-IG5S5RJD.js} +13 -9
  78. package/dist/help-IG5S5RJD.js.map +1 -0
  79. package/dist/{hover-6JVJFGO7.js → hover-NOCOTR6N.js} +10 -10
  80. package/dist/{html-EVOSPBIT.js → html-LXSYP6BT.js} +10 -10
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +46 -17
  83. package/dist/index.js.map +1 -1
  84. package/dist/{inspector-H57BVUJP.js → inspector-62EPCLYB.js} +11 -11
  85. package/dist/{inspector-audit-NQBAJWC7.js → inspector-audit-T2IF67RJ.js} +13 -13
  86. package/dist/{inspector-plan-ZDIQVND3.js → inspector-plan-KQS6LRMW.js} +11 -11
  87. package/dist/inspiredesign/capture.d.ts +4 -0
  88. package/dist/inspiredesign/capture.d.ts.map +1 -1
  89. package/dist/inspiredesign/contract.d.ts +22 -0
  90. package/dist/inspiredesign/contract.d.ts.map +1 -1
  91. package/dist/inspiredesign/handoff.d.ts +7 -1
  92. package/dist/inspiredesign/handoff.d.ts.map +1 -1
  93. package/dist/inspiredesign/meta-prompt.d.ts +9 -0
  94. package/dist/inspiredesign/meta-prompt.d.ts.map +1 -0
  95. package/dist/inspiredesign/reference-discovery.d.ts +29 -0
  96. package/dist/inspiredesign/reference-discovery.d.ts.map +1 -0
  97. package/dist/inspiredesign/reference-pattern-board.d.ts +21 -0
  98. package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
  99. package/dist/inspiredesign/visual-evidence.d.ts +46 -0
  100. package/dist/inspiredesign/visual-evidence.d.ts.map +1 -0
  101. package/dist/inspiredesign/visual-policy.d.ts +17 -0
  102. package/dist/inspiredesign/visual-policy.d.ts.map +1 -0
  103. package/dist/{inspiredesign-IEUL4PX3.js → inspiredesign-DB6CHYN3.js} +71 -19
  104. package/dist/inspiredesign-DB6CHYN3.js.map +1 -0
  105. package/dist/{launch-EK66VQPF.js → launch-B5ES6FVS.js} +10 -10
  106. package/dist/{list-KKUKN467.js → list-TIZVR6RO.js} +9 -9
  107. package/dist/{list-ADZAQ2IU.js → list-XM4BP5GM.js} +9 -9
  108. package/dist/{macro-resolve-6DOQJ7CA.js → macro-resolve-TTQZVFIW.js} +10 -10
  109. package/dist/{native-UPLVQ2SG.js → native-J2DFLOLP.js} +3 -3
  110. package/dist/{network-poll-NUL4PDPY.js → network-poll-NNSY4W63.js} +10 -10
  111. package/dist/{new-5NKYPEFT.js → new-E6VNAC2A.js} +9 -9
  112. package/dist/{open-NR3BPLXV.js → open-F55XKMKB.js} +9 -9
  113. package/dist/opendevbrowser.d.ts.map +1 -1
  114. package/dist/opendevbrowser.js +46 -17
  115. package/dist/opendevbrowser.js.map +1 -1
  116. package/dist/{perf-HJ36ZI6H.js → perf-RE7JE6CP.js} +10 -10
  117. package/dist/{pointer-down-IYTTQWXZ.js → pointer-down-BCBPC5FJ.js} +11 -11
  118. package/dist/{pointer-drag-A2YC5PWI.js → pointer-drag-QK7KGF7W.js} +11 -11
  119. package/dist/{pointer-move-W5K5FUI4.js → pointer-move-VFAZQAXA.js} +11 -11
  120. package/dist/{pointer-up-6GWVO64Y.js → pointer-up-FA5WE6LS.js} +11 -11
  121. package/dist/{press-A3V5WB3S.js → press-TNRHNDSW.js} +10 -10
  122. package/dist/{product-video-52REKWF3.js → product-video-UEANMZ2U.js} +11 -11
  123. package/dist/providers/renderer.d.ts +7 -1
  124. package/dist/providers/renderer.d.ts.map +1 -1
  125. package/dist/providers/workflow-handoff.d.ts +1 -0
  126. package/dist/providers/workflow-handoff.d.ts.map +1 -1
  127. package/dist/providers/workflows.d.ts +45 -3
  128. package/dist/providers/workflows.d.ts.map +1 -1
  129. package/dist/{providers-IMFYMMHQ.js → providers-AMCNWZUL.js} +3 -3
  130. package/dist/public-surface/generated-manifest.d.ts +12 -3
  131. package/dist/public-surface/generated-manifest.d.ts.map +1 -1
  132. package/dist/public-surface/source.d.ts +5 -5
  133. package/dist/public-surface/source.d.ts.map +1 -1
  134. package/dist/{research-WB6BBCDD.js → research-YFY7WJSZ.js} +11 -11
  135. package/dist/{review-BGWVY4RA.js → review-NHOPLAT7.js} +11 -11
  136. package/dist/{review-desktop-LEORC5VS.js → review-desktop-OFWPDYGD.js} +11 -11
  137. package/dist/{rpc-4TSKSFGC.js → rpc-TVVQPUOL.js} +10 -10
  138. package/dist/{run-3NBLVWXD.js → run-OCBEZRDW.js} +8 -8
  139. package/dist/{screencast-start-UZVIT3IN.js → screencast-start-GTSDA33J.js} +10 -10
  140. package/dist/{screencast-stop-NOSJSIUO.js → screencast-stop-FYBUIXAA.js} +10 -10
  141. package/dist/{screenshot-LARG4JQG.js → screenshot-OEYRT3SP.js} +10 -10
  142. package/dist/{scroll-VNFMV6TW.js → scroll-35OFEFC5.js} +10 -10
  143. package/dist/{scroll-into-view-VYRT3JPT.js → scroll-into-view-UQ5RAWIX.js} +10 -10
  144. package/dist/{select-KJTUZDVO.js → select-K56QELVZ.js} +10 -10
  145. package/dist/{serve-EV7K4HKR.js → serve-5UJ3VMWC.js} +48 -24
  146. package/dist/serve-5UJ3VMWC.js.map +1 -0
  147. package/dist/{shopping-DTXHVQ2X.js → shopping-FJG7XB4Q.js} +11 -11
  148. package/dist/{skill-lifecycle-5UAZGKSN.js → skill-lifecycle-OWZYBPFS.js} +3 -3
  149. package/dist/skills/bundled-skill-directories.d.ts.map +1 -1
  150. package/dist/skills/skill-loader.js +2 -2
  151. package/dist/{skills-NSXDX6YM.js → skills-KHMRNOE4.js} +3 -3
  152. package/dist/{snapshot-3XQMCMRJ.js → snapshot-W7RKVZEI.js} +10 -10
  153. package/dist/{status-YUMDP5KY.js → status-KHYCLGUD.js} +20 -12
  154. package/dist/status-KHYCLGUD.js.map +1 -0
  155. package/dist/{status-OXSYA5XD.js → status-R4EV4TWO.js} +11 -11
  156. package/dist/{status-capabilities-P4KDSE2Y.js → status-capabilities-XD3RGLKF.js} +11 -11
  157. package/dist/{text-V3B7UVIH.js → text-TANLFZ4O.js} +10 -10
  158. package/dist/tools/inspiredesign_run.d.ts.map +1 -1
  159. package/dist/{type-IYBN3ZLR.js → type-Y2Y7LX7Y.js} +10 -10
  160. package/dist/{uncheck-SG737EGI.js → uncheck-6REVUUB2.js} +10 -10
  161. package/dist/{uninstall-KYKGJAX7.js → uninstall-FW5ORBIN.js} +3 -3
  162. package/dist/{update-skill-modes-BVX7IVMW.js → update-skill-modes-3ULKJK3Y.js} +3 -3
  163. package/dist/{upload-KH6ZABJA.js → upload-GGZC5UQP.js} +10 -10
  164. package/dist/{use-7YDKO3U4.js → use-B4Q7CFG2.js} +9 -9
  165. package/dist/{value-RZBWSKKM.js → value-DHOHO55D.js} +10 -10
  166. package/dist/{visible-BSFTAKXR.js → visible-S5BTWYNH.js} +10 -10
  167. package/dist/{wait-TMTEAYOP.js → wait-WV6NZUKL.js} +10 -10
  168. package/dist/{windows-HIZ23OHS.js → windows-GKE36DJQ.js} +11 -11
  169. package/extension/manifest.json +1 -1
  170. package/package.json +1 -1
  171. package/skills/AGENTS.md +2 -1
  172. package/skills/opendevbrowser-best-practices/SKILL.md +9 -2
  173. package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +4 -3
  174. package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +7 -0
  175. package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +49 -3
  176. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +24 -2
  177. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +1 -0
  178. package/skills/opendevbrowser-design-agent/SKILL.md +3 -0
  179. package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +85 -40
  180. package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +2 -0
  181. package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +20 -5
  182. package/skills/opendevbrowser-motion-design/SKILL.md +129 -0
  183. package/skills/opendevbrowser-motion-design/artifacts/accessibility-reduced-motion.md +37 -0
  184. package/skills/opendevbrowser-motion-design/artifacts/device-breakpoint-posture.md +40 -0
  185. package/skills/opendevbrowser-motion-design/artifacts/motion-anti-patterns.md +29 -0
  186. package/skills/opendevbrowser-motion-design/artifacts/motion-pattern-catalog.md +430 -0
  187. package/skills/opendevbrowser-motion-design/artifacts/motion-release-gate.md +28 -0
  188. package/skills/opendevbrowser-motion-design/artifacts/motion-terminology.md +46 -0
  189. package/skills/opendevbrowser-motion-design/artifacts/open-dev-browser-motion-evidence.md +48 -0
  190. package/skills/opendevbrowser-motion-design/artifacts/performance-frame-budget.md +38 -0
  191. package/skills/opendevbrowser-motion-design/artifacts/platform-framework-guide.md +166 -0
  192. package/skills/opendevbrowser-motion-design/assets/templates/motion-audit-report.v1.md +70 -0
  193. package/skills/opendevbrowser-motion-design/assets/templates/motion-contract.v1.json +79 -0
  194. package/skills/opendevbrowser-motion-design/assets/templates/motion-release-gate.v1.json +18 -0
  195. package/skills/opendevbrowser-motion-design/assets/templates/motion-viewport-matrix.v1.json +76 -0
  196. package/skills/opendevbrowser-motion-design/scripts/motion-workflow.sh +163 -0
  197. package/skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh +374 -0
  198. package/dist/chunk-2I3YS3DV.js.map +0 -1
  199. package/dist/chunk-3ILXPKSJ.js.map +0 -1
  200. package/dist/chunk-4BEJVZRK.js.map +0 -1
  201. package/dist/chunk-6B5WAQV7.js.map +0 -1
  202. package/dist/chunk-COAOWH3G.js.map +0 -1
  203. package/dist/chunk-IPE7TF2P.js.map +0 -1
  204. package/dist/chunk-KZ2IXVQT.js.map +0 -1
  205. package/dist/chunk-MD655IPO.js.map +0 -1
  206. package/dist/daemon-2BSAZXLT.js.map +0 -1
  207. package/dist/help-U7KBQME6.js.map +0 -1
  208. package/dist/inspiredesign-IEUL4PX3.js.map +0 -1
  209. package/dist/serve-EV7K4HKR.js.map +0 -1
  210. package/dist/status-YUMDP5KY.js.map +0 -1
  211. /package/dist/{accessibility-snapshot-CQ4ZKWKC.js.map → accessibility-snapshot-XOP66CSK.js.map} +0 -0
  212. /package/dist/{active-window-TD5HYJ72.js.map → active-window-E3WFOQGX.js.map} +0 -0
  213. /package/dist/{annotate-VTLFS2XV.js.map → annotate-MAE7ZJOZ.js.map} +0 -0
  214. /package/dist/{artifacts-KJ6RNDO2.js.map → artifacts-JHDUUJGQ.js.map} +0 -0
  215. /package/dist/{attr-BCI5KYCW.js.map → attr-M3PFDJ7Q.js.map} +0 -0
  216. /package/dist/{canvas-5DFEEOKM.js.map → canvas-3AJVL5I5.js.map} +0 -0
  217. /package/dist/{capture-desktop-HFTTWY4Z.js.map → capture-desktop-VJGEETMJ.js.map} +0 -0
  218. /package/dist/{capture-window-X63XPIFF.js.map → capture-window-W5UFSFQL.js.map} +0 -0
  219. /package/dist/{check-LWAUY7GC.js.map → check-4IR3UJVW.js.map} +0 -0
  220. /package/dist/{checked-ZSOUKVYT.js.map → checked-PKNY7724.js.map} +0 -0
  221. /package/dist/{chunk-AHEWXOKY.js.map → chunk-BUXFIY2P.js.map} +0 -0
  222. /package/dist/{chunk-QOMWCRE3.js.map → chunk-HBK56JST.js.map} +0 -0
  223. /package/dist/{chunk-T4GMCW6Z.js.map → chunk-J3KYGJRQ.js.map} +0 -0
  224. /package/dist/{chunk-6PVZ2ABC.js.map → chunk-L3YNUGYF.js.map} +0 -0
  225. /package/dist/{chunk-JZXD6FWR.js.map → chunk-NURQB55J.js.map} +0 -0
  226. /package/dist/{chunk-GQJ5S3BL.js.map → chunk-P5K3ZIPI.js.map} +0 -0
  227. /package/dist/{chunk-PPUWQKIC.js.map → chunk-PIFHXKV4.js.map} +0 -0
  228. /package/dist/{chunk-STGGGVYT.js.map → chunk-QMHKAFYX.js.map} +0 -0
  229. /package/dist/{chunk-RPXWUCQQ.js.map → chunk-SKFB5ICF.js.map} +0 -0
  230. /package/dist/{chunk-2SIMIPLY.js.map → chunk-W6YPVNDX.js.map} +0 -0
  231. /package/dist/{chunk-KDSNXS6N.js.map → chunk-ZMNEWS7A.js.map} +0 -0
  232. /package/dist/{click-2AILSEIZ.js.map → click-HLNXU4I5.js.map} +0 -0
  233. /package/dist/{clone-component-TPJS3PEG.js.map → clone-component-QIKN5PIM.js.map} +0 -0
  234. /package/dist/{clone-page-LE74CIFC.js.map → clone-page-5C7DTGZT.js.map} +0 -0
  235. /package/dist/{close-HN4YI47K.js.map → close-PCRZHX7F.js.map} +0 -0
  236. /package/dist/{close-WFERRHX6.js.map → close-WTXB3EDD.js.map} +0 -0
  237. /package/dist/{connect-RWBV2UCQ.js.map → connect-6C2IG55I.js.map} +0 -0
  238. /package/dist/{console-poll-PP4YYPDF.js.map → console-poll-VJXCZR3F.js.map} +0 -0
  239. /package/dist/{cookie-import-6IP776FC.js.map → cookie-import-5OEDFB6U.js.map} +0 -0
  240. /package/dist/{cookie-list-O2KG6DPU.js.map → cookie-list-44UNJJ6D.js.map} +0 -0
  241. /package/dist/{debug-trace-snapshot-F3BDVZXS.js.map → debug-trace-snapshot-RGXAPGWB.js.map} +0 -0
  242. /package/dist/{dialog-6JQYUWMQ.js.map → dialog-S64MJUM2.js.map} +0 -0
  243. /package/dist/{disconnect-763TP7GH.js.map → disconnect-MTIELIM7.js.map} +0 -0
  244. /package/dist/{enabled-DLYQFNIP.js.map → enabled-KF2L7LW4.js.map} +0 -0
  245. /package/dist/{goto-S346TJJH.js.map → goto-ULWINUAZ.js.map} +0 -0
  246. /package/dist/{hover-6JVJFGO7.js.map → hover-NOCOTR6N.js.map} +0 -0
  247. /package/dist/{html-EVOSPBIT.js.map → html-LXSYP6BT.js.map} +0 -0
  248. /package/dist/{inspector-H57BVUJP.js.map → inspector-62EPCLYB.js.map} +0 -0
  249. /package/dist/{inspector-audit-NQBAJWC7.js.map → inspector-audit-T2IF67RJ.js.map} +0 -0
  250. /package/dist/{inspector-plan-ZDIQVND3.js.map → inspector-plan-KQS6LRMW.js.map} +0 -0
  251. /package/dist/{launch-EK66VQPF.js.map → launch-B5ES6FVS.js.map} +0 -0
  252. /package/dist/{list-KKUKN467.js.map → list-TIZVR6RO.js.map} +0 -0
  253. /package/dist/{list-ADZAQ2IU.js.map → list-XM4BP5GM.js.map} +0 -0
  254. /package/dist/{macro-resolve-6DOQJ7CA.js.map → macro-resolve-TTQZVFIW.js.map} +0 -0
  255. /package/dist/{native-UPLVQ2SG.js.map → native-J2DFLOLP.js.map} +0 -0
  256. /package/dist/{network-poll-NUL4PDPY.js.map → network-poll-NNSY4W63.js.map} +0 -0
  257. /package/dist/{new-5NKYPEFT.js.map → new-E6VNAC2A.js.map} +0 -0
  258. /package/dist/{open-NR3BPLXV.js.map → open-F55XKMKB.js.map} +0 -0
  259. /package/dist/{perf-HJ36ZI6H.js.map → perf-RE7JE6CP.js.map} +0 -0
  260. /package/dist/{pointer-down-IYTTQWXZ.js.map → pointer-down-BCBPC5FJ.js.map} +0 -0
  261. /package/dist/{pointer-drag-A2YC5PWI.js.map → pointer-drag-QK7KGF7W.js.map} +0 -0
  262. /package/dist/{pointer-move-W5K5FUI4.js.map → pointer-move-VFAZQAXA.js.map} +0 -0
  263. /package/dist/{pointer-up-6GWVO64Y.js.map → pointer-up-FA5WE6LS.js.map} +0 -0
  264. /package/dist/{press-A3V5WB3S.js.map → press-TNRHNDSW.js.map} +0 -0
  265. /package/dist/{product-video-52REKWF3.js.map → product-video-UEANMZ2U.js.map} +0 -0
  266. /package/dist/{providers-IMFYMMHQ.js.map → providers-AMCNWZUL.js.map} +0 -0
  267. /package/dist/{research-WB6BBCDD.js.map → research-YFY7WJSZ.js.map} +0 -0
  268. /package/dist/{review-BGWVY4RA.js.map → review-NHOPLAT7.js.map} +0 -0
  269. /package/dist/{review-desktop-LEORC5VS.js.map → review-desktop-OFWPDYGD.js.map} +0 -0
  270. /package/dist/{rpc-4TSKSFGC.js.map → rpc-TVVQPUOL.js.map} +0 -0
  271. /package/dist/{run-3NBLVWXD.js.map → run-OCBEZRDW.js.map} +0 -0
  272. /package/dist/{screencast-start-UZVIT3IN.js.map → screencast-start-GTSDA33J.js.map} +0 -0
  273. /package/dist/{screencast-stop-NOSJSIUO.js.map → screencast-stop-FYBUIXAA.js.map} +0 -0
  274. /package/dist/{screenshot-LARG4JQG.js.map → screenshot-OEYRT3SP.js.map} +0 -0
  275. /package/dist/{scroll-VNFMV6TW.js.map → scroll-35OFEFC5.js.map} +0 -0
  276. /package/dist/{scroll-into-view-VYRT3JPT.js.map → scroll-into-view-UQ5RAWIX.js.map} +0 -0
  277. /package/dist/{select-KJTUZDVO.js.map → select-K56QELVZ.js.map} +0 -0
  278. /package/dist/{shopping-DTXHVQ2X.js.map → shopping-FJG7XB4Q.js.map} +0 -0
  279. /package/dist/{skill-lifecycle-5UAZGKSN.js.map → skill-lifecycle-OWZYBPFS.js.map} +0 -0
  280. /package/dist/{skills-NSXDX6YM.js.map → skills-KHMRNOE4.js.map} +0 -0
  281. /package/dist/{snapshot-3XQMCMRJ.js.map → snapshot-W7RKVZEI.js.map} +0 -0
  282. /package/dist/{status-OXSYA5XD.js.map → status-R4EV4TWO.js.map} +0 -0
  283. /package/dist/{status-capabilities-P4KDSE2Y.js.map → status-capabilities-XD3RGLKF.js.map} +0 -0
  284. /package/dist/{text-V3B7UVIH.js.map → text-TANLFZ4O.js.map} +0 -0
  285. /package/dist/{type-IYBN3ZLR.js.map → type-Y2Y7LX7Y.js.map} +0 -0
  286. /package/dist/{uncheck-SG737EGI.js.map → uncheck-6REVUUB2.js.map} +0 -0
  287. /package/dist/{uninstall-KYKGJAX7.js.map → uninstall-FW5ORBIN.js.map} +0 -0
  288. /package/dist/{update-skill-modes-BVX7IVMW.js.map → update-skill-modes-3ULKJK3Y.js.map} +0 -0
  289. /package/dist/{upload-KH6ZABJA.js.map → upload-GGZC5UQP.js.map} +0 -0
  290. /package/dist/{use-7YDKO3U4.js.map → use-B4Q7CFG2.js.map} +0 -0
  291. /package/dist/{value-RZBWSKKM.js.map → value-DHOHO55D.js.map} +0 -0
  292. /package/dist/{visible-BSFTAKXR.js.map → visible-S5BTWYNH.js.map} +0 -0
  293. /package/dist/{wait-TMTEAYOP.js.map → wait-WV6NZUKL.js.map} +0 -0
  294. /package/dist/{windows-HIZ23OHS.js.map → windows-GKE36DJQ.js.map} +0 -0
@@ -18,6 +18,14 @@ CLI_PREFIX="$(render_cli_prefix)"
18
18
  PACKAGE_ROOT="$(cd "$script_dir/../../.." && pwd)"
19
19
  TRANSCRIPT_PROBE_PATH="$(printf '%q' "$PACKAGE_ROOT/scripts/youtube-transcript-live-probe.mjs")"
20
20
 
21
+ print_daemon_preflight() {
22
+ cat <<EOF
23
+ # Daemon preflight for daemon-backed workflows:
24
+ $CLI_PREFIX status --daemon --output-format json
25
+ # Continue only when data.fingerprintCurrent === true.
26
+ EOF
27
+ }
28
+
21
29
  print_help() {
22
30
  cat <<'EOF'
23
31
  OpenDevBrowser workflow router
@@ -73,6 +81,7 @@ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
73
81
  EOF
74
82
  ;;
75
83
  inspiredesign)
84
+ print_daemon_preflight
76
85
  cat <<EOF
77
86
  # Pair with opendevbrowser-design-agent when the contract will flow into implementation or /canvas work.
78
87
  $CLI_PREFIX inspiredesign run --brief "Design a premium docs workspace" --url "https://example.com/reference-a" --url "https://example.com/reference-b" --capture-mode off --include-prototype-guidance --mode json --output-format json
@@ -118,6 +127,7 @@ opendevbrowser_network_poll sessionId="<session-id>" max=100
118
127
  EOF
119
128
  ;;
120
129
  canvas-preflight)
130
+ print_daemon_preflight
121
131
  cat <<EOF
122
132
  cat skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json
123
133
  cat skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json
@@ -132,6 +142,7 @@ $CLI_PREFIX canvas --command canvas.plan.set --params-file skills/opendevbrowser
132
142
  EOF
133
143
  ;;
134
144
  canvas-feedback-eval)
145
+ print_daemon_preflight
135
146
  cat <<EOF
136
147
  cat skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md
137
148
  cat skills/opendevbrowser-best-practices/assets/templates/canvas-feedback-eval.json
@@ -151,6 +162,7 @@ npm run test -- tests/tools.test.ts tests/daemon-commands.integration.test.ts
151
162
  EOF
152
163
  ;;
153
164
  release-direct-gates)
165
+ print_daemon_preflight
154
166
  cat <<'EOF'
155
167
  mkdir -p artifacts/release/vX.Y.Z
156
168
  node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json
@@ -158,6 +170,7 @@ node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/v
158
170
  EOF
159
171
  ;;
160
172
  skill-runtime-audit)
173
+ print_daemon_preflight
161
174
  cat <<'EOF'
162
175
  npm run build
163
176
  node scripts/docs-drift-check.mjs
@@ -174,6 +187,7 @@ OPENCODE_CONFIG_DIR="$WORKDIR/config" CODEX_HOME="$WORKDIR/codex-home" CLAUDECOD
174
187
  ./skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh
175
188
  ./skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh
176
189
  ./skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh
190
+ ./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh
177
191
  ./skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh
178
192
  ./skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh
179
193
  ./skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh
@@ -184,6 +198,7 @@ node scripts/skill-runtime-audit.mjs --out artifacts/skill-runtime-audit/full.js
184
198
  EOF
185
199
  ;;
186
200
  validated-capabilities)
201
+ print_daemon_preflight
187
202
  cat <<EOF
188
203
  # Public-first YouTube transcript probe
189
204
  node $TRANSCRIPT_PROBE_PATH --url "https://www.youtube.com/watch?v=aircAruvnKk" --youtube-mode auto --out artifacts/capability-fix/youtube-transcript-auto.json
@@ -214,22 +229,29 @@ EOF
214
229
  ops-channel-check)
215
230
  cat <<EOF
216
231
  $CLI_PREFIX serve
232
+ # Daemon preflight for daemon-backed workflows:
233
+ $CLI_PREFIX status --daemon --output-format json
234
+ # Continue only when data.fingerprintCurrent === true.
217
235
  $CLI_PREFIX launch --extension-only --wait-for-extension --output-format json
218
236
  $CLI_PREFIX status --daemon --output-format json
219
- # Verify opsConnected=true and extensionHandshakeComplete=true
237
+ # Verify fingerprintCurrent=true, opsConnected=true, and extensionHandshakeComplete=true
220
238
  cat skills/opendevbrowser-best-practices/assets/templates/ops-request-envelope.json
221
239
  EOF
222
240
  ;;
223
241
  cdp-channel-check)
224
242
  cat <<EOF
225
243
  $CLI_PREFIX serve
244
+ # Daemon preflight for daemon-backed workflows:
245
+ $CLI_PREFIX status --daemon --output-format json
246
+ # Continue only when data.fingerprintCurrent === true.
226
247
  $CLI_PREFIX launch --extension-only --extension-legacy --wait-for-extension --output-format json
227
248
  $CLI_PREFIX status --daemon --output-format json
228
- # Verify cdpConnected=true while legacy session is active
249
+ # Verify fingerprintCurrent=true and cdpConnected=true while legacy session is active
229
250
  cat skills/opendevbrowser-best-practices/assets/templates/cdp-forward-envelope.json
230
251
  EOF
231
252
  ;;
232
253
  mode-flag-matrix)
254
+ print_daemon_preflight
233
255
  cat <<EOF
234
256
  cat skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json
235
257
  $CLI_PREFIX launch --no-extension --output-format json
@@ -79,6 +79,7 @@ const workflowMarkers = [
79
79
  "npx opendevbrowser help",
80
80
  "./skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh",
81
81
  "resolve-odb-cli.sh",
82
+ "./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh",
82
83
  "CLI_PREFIX"
83
84
  ];
84
85
 
@@ -40,6 +40,7 @@ Use this skill for frontend work that must be visually strong, contract-first, a
40
40
  - `scripts/design-workflow.sh`
41
41
  - `scripts/extract-canvas-plan.sh`
42
42
  - `scripts/validate-skill-assets.sh`
43
+ - Motion authority: `../opendevbrowser-motion-design/SKILL.md`
43
44
  - Shared robustness matrix: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
44
45
  - Shared canvas workflow baseline: `../opendevbrowser-best-practices/SKILL.md`
45
46
 
@@ -72,6 +73,7 @@ Use this skill for frontend work that must be visually strong, contract-first, a
72
73
  ## Supporting Surfaces
73
74
 
74
75
  - Use browser replay (`screencast-start` / `screencast-stop`) during real-surface validation when motion, sequencing, or transition timing matters.
76
+ - Load `opendevbrowser-motion-design` when motion-heavy work needs terminology, pattern catalog decisions, platform/framework policy, device posture, reduced-motion rules, performance budgets, or temporal proof.
75
77
  - Treat shader, WebGL, Spline-style, and custom 3D motion references as advisory cues unless current runtime evidence proves support.
76
78
  - Desktop observation stays read-only and is only for external window or OS-level evidence around the workflow; it is not a design-surface control lane.
77
79
  - Browser-scoped computer use remains a challenge posture knob via `--challenge-automation-mode`, not a desktop-agent capability.
@@ -98,6 +100,7 @@ Use this skill for frontend work that must be visually strong, contract-first, a
98
100
  - For non-canvas frontend work, still fill the same design-contract fields before coding so decisions stay consistent across code, preview, and docs.
99
101
  - Use one owner for overlays, drawers, sheets, and detail panels; prefer item-backed state over boolean sprawl.
100
102
  - If motion depends on scroll or viewport progress, define the driver and reduced-motion fallback before implementation.
103
+ - For animation systems, route the motion-specific decisions through `../opendevbrowser-motion-design/artifacts/motion-pattern-catalog.md`, `../opendevbrowser-motion-design/artifacts/platform-framework-guide.md`, `../opendevbrowser-motion-design/artifacts/performance-frame-budget.md`, and `../opendevbrowser-motion-design/artifacts/open-dev-browser-motion-evidence.md`.
101
104
  - Carry advanced motion cues through `designVectors` and `motionSystem` as design intent only; they do not authorize new runtime libraries.
102
105
  - Keep `libraryPolicy.motion` and `libraryPolicy.threeD` empty in samples unless a separate runtime change explicitly approves those lanes.
103
106
  - Use `artifacts/scroll-reveal-surface-planning.md` whenever the design depends on pinned sections, reveal stages, or viewport-driven sequencing.
@@ -4,44 +4,95 @@ Use this workflow before design direction is locked, when the brief references c
4
4
 
5
5
  ## Goal
6
6
 
7
- Turn live product references into a deterministic pattern board instead of vague inspiration.
7
+ Turn live product references into a deterministic ranked pattern board and motion-aware design brief instead of vague inspiration.
8
8
 
9
9
  ## Inputs
10
10
 
11
11
  - A focused brief or design question
12
- - `3` to `5` reference products or pages
12
+ - `3` to `5` reference products or pages, or a bounded public discovery query
13
13
  - The target surface in this repo
14
14
  - Constraints that must not be violated:
15
15
  - existing design system rules
16
16
  - supported libraries and runtime budgets
17
17
  - accessibility and responsive requirements
18
+ - provider policy boundaries for blocked, auth-required, challenge, or rate-limited references
18
19
 
19
- ## Evidence Loop
20
-
21
- 1. Pick reference pages that match the product shape:
22
- - dashboard
23
- - marketing landing page
24
- - onboarding flow
25
- - editor
26
- - auth/settings surface
27
- 2. Capture the surface with OpenDevBrowser:
28
- - `launch`
29
- - `goto`
30
- - `snapshot`
31
- - `screenshot`
32
- - `debug-trace-snapshot` when motion, loading, or layout churn matters
33
- 3. Record each page in `assets/templates/reference-pattern-board.v1.json`.
34
- 4. For each reference, extract:
35
- - layout recipe
36
- - content hierarchy
37
- - component families
38
- - motion posture
39
- - loading and empty-state strategy
40
- - token and theming clues
41
- - patterns to borrow
42
- - patterns to reject
43
- 5. Synthesize only the patterns that fit the repo's current surface, libraries, and runtime budgets.
44
- 6. Translate the synthesis into the design contract before touching `/canvas` or code.
20
+ ## Primary Harvest Loop
21
+
22
+ Prefer the dedicated InspireDesign harvest entrypoint for visual-first research:
23
+
24
+ ```bash
25
+ npx opendevbrowser inspiredesign harvest \
26
+ --brief "Synthesize a premium docs workspace" \
27
+ --query "best docs product landing pages" \
28
+ --provider web/default \
29
+ --max-references 5 \
30
+ --visual-evidence required \
31
+ --browser-mode managed \
32
+ --mode json
33
+ ```
34
+
35
+ Use explicit references when the team already knows the right examples:
36
+
37
+ ```bash
38
+ npx opendevbrowser inspiredesign harvest \
39
+ --brief "Extract reusable dashboard patterns" \
40
+ --url https://example.com/reference-a \
41
+ --url https://example.com/reference-b \
42
+ --visual-evidence required \
43
+ --mode json
44
+ ```
45
+
46
+ Harvest defaults:
47
+
48
+ - `mode=path`
49
+ - `visualEvidence=required`
50
+ - `maxReferences=5`
51
+ - explicit `--url` references rank before query-discovered candidates during collection
52
+ - the daemon method remains `inspiredesign.run`
53
+
54
+ ## Required Artifact Review
55
+
56
+ After a successful harvest, inspect these files before `/canvas` or code changes:
57
+
58
+ 1. `advanced-brief.md` for the reference-first creative brief.
59
+ 2. `ranked-references.json` for rank, score, confidence, visual strengths, visual risks, rejected references, and selection reasons.
60
+ 3. `visual-evidence.json` and `screenshot-index.json` for artifact-relative PNG paths, hashes, byte counts, viewport metadata when available, provenance, and warnings.
61
+ 4. PNG files under `visual-evidence/<referenceId>/viewport.png` for actual visual review.
62
+ 5. `meta-prompt.md` for borrow guidance, reject guidance, motion posture, accessibility constraints, no-copy warning, and validation gates.
63
+ 6. `canvas-plan.request.json` and `design-agent-handoff.json` only after the visual synthesis is accepted.
64
+
65
+ JSON files are metadata-only. They must not contain base64 screenshots, absolute temp paths, full DOM, or full snapshot text.
66
+
67
+ ## Manual Evidence Fallback
68
+
69
+ Use the lower-level browser loop only when harvest cannot run or when a single reference needs debugging:
70
+
71
+ ```bash
72
+ npx opendevbrowser launch --no-extension --start-url https://example.com
73
+ npx opendevbrowser goto --session-id <session-id> --url <reference-url>
74
+ npx opendevbrowser snapshot --session-id <session-id>
75
+ npx opendevbrowser screenshot --session-id <session-id> --path ./artifacts/reference.png
76
+ npx opendevbrowser debug-trace-snapshot --session-id <session-id>
77
+ ```
78
+
79
+ Record manual evidence in `assets/templates/reference-pattern-board.v1.json` using the same ranking and screenshot metadata fields as harvest.
80
+
81
+ ## What To Extract
82
+
83
+ For each accepted reference, extract:
84
+
85
+ - layout recipe
86
+ - content hierarchy
87
+ - component families
88
+ - motion posture
89
+ - loading and empty-state strategy
90
+ - token and theming clues
91
+ - visual strengths to borrow
92
+ - visual risks and patterns to reject
93
+ - screenshot path, hash, viewport, and warning metadata when available
94
+
95
+ Synthesize only the patterns that fit the repo's current surface, libraries, runtime budgets, and accessibility policy.
45
96
 
46
97
  ## What To Borrow From External Patterns
47
98
 
@@ -61,21 +112,15 @@ These cues should stay explicit in the pattern board:
61
112
  - inspect current stack and assets first
62
113
  - combine aesthetics, accessibility, and implementation practicality in one review loop
63
114
 
64
- ## OpenDevBrowser Command Pattern
65
-
66
- ```bash
67
- npx opendevbrowser launch --no-extension --start-url https://example.com
68
- npx opendevbrowser goto --session-id <session-id> --url <reference-url>
69
- npx opendevbrowser snapshot --session-id <session-id>
70
- npx opendevbrowser screenshot --session-id <session-id>
71
- npx opendevbrowser debug-trace-snapshot --session-id <session-id>
72
- ```
115
+ ## Motion Follow-through
73
116
 
74
- Repeat this for each selected reference. Keep the resulting notes in one pattern board so the design contract has a visible source of truth.
117
+ Load `opendevbrowser-motion-design` before translating harvest motion posture into timing tokens, scroll choreography, gesture motion, reduced-motion behavior, or temporal proof. Harvest motion cues are design intent only; they do not authorize new runtime dependencies or shader, WebGL, Spline, or 3D lanes.
75
118
 
76
119
  ## Exit Criteria
77
120
 
78
- - The pattern board lists at least `3` live references.
121
+ - The pattern board lists at least `3` live references unless provider policy or discovery diagnostics explain the smaller set.
79
122
  - Borrowed and rejected patterns are both explicit.
123
+ - Rank 1 justifies the dominant direction.
124
+ - Screenshot metadata points to existing PNG artifacts or explains skipped or failed visual evidence.
80
125
  - The chosen design direction is justified by evidence, not taste alone.
81
- - The resulting design contract names component families, state ownership, and validation targets before implementation starts.
126
+ - The resulting design contract names component families, state ownership, motion posture, and validation targets before implementation starts.
@@ -2,6 +2,8 @@
2
2
 
3
3
  Use this when narrative sequencing, pinned sections, or viewport-driven motion is part of the design instead of decorative afterthought.
4
4
 
5
+ For broader motion language, pattern selection, device posture, reduced-motion rules, performance budgets, and temporal proof, also load `../opendevbrowser-motion-design/SKILL.md`.
6
+
5
7
  ## 1. Declare The Driver First
6
8
 
7
9
  Choose one progress owner before writing animation code:
@@ -4,30 +4,45 @@
4
4
  "references": [
5
5
  {
6
6
  "id": "ref-001",
7
+ "rank": 1,
8
+ "score": 86,
9
+ "confidence": 0.86,
7
10
  "name": "Example product page",
8
11
  "url": "https://example.com",
9
12
  "surfaceType": "marketing",
10
13
  "capturedVia": [
14
+ "fetch",
11
15
  "snapshot",
12
- "screenshot"
16
+ "clone",
17
+ "dom",
18
+ "visual"
13
19
  ],
14
20
  "layoutRecipe": "",
15
21
  "contentHierarchy": [],
16
22
  "componentFamilies": [],
17
- "motionPosture": "",
18
- "advancedMotionAdvisory": [],
19
- "loadingStrategy": "",
23
+ "motionPosture": [],
20
24
  "tokenNotes": [],
25
+ "visualStrengths": [],
26
+ "visualRisks": [],
27
+ "selectionReason": "",
21
28
  "patternsToBorrow": [],
22
29
  "patternsToReject": [],
23
30
  "whyItWorks": ""
24
31
  }
25
32
  ],
33
+ "rejectedReferences": [
34
+ {
35
+ "id": "ref-rejected-001",
36
+ "url": "https://example.com/rejected",
37
+ "reason": "policy_blocked|auth_required|challenge_detected|rate_limited|not_relevant|duplicate",
38
+ "fetchStatus": "failed",
39
+ "captureStatus": "off"
40
+ }
41
+ ],
26
42
  "synthesis": {
27
43
  "dominantDirection": "",
28
44
  "sharedStrengths": [],
29
45
  "sharedFailuresToAvoid": [],
30
- "motionContractDeltas": [],
31
46
  "contractDeltas": []
32
47
  }
33
48
  }
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: opendevbrowser-motion-design
3
+ description: Deterministic motion and animation design guidance for OpenDevBrowser agents building web and mobile UI with real-browser temporal evidence.
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Motion Design Skill
8
+
9
+ Use this skill when a task asks for animation, motion language, transition systems, scroll choreography, gesture motion, reduced-motion audits, browser replay evidence, or motion-heavy UI implementation.
10
+
11
+ ## Pack Contents
12
+
13
+ - `artifacts/motion-terminology.md`
14
+ - `artifacts/motion-pattern-catalog.md`
15
+ - `artifacts/platform-framework-guide.md`
16
+ - `artifacts/device-breakpoint-posture.md`
17
+ - `artifacts/accessibility-reduced-motion.md`
18
+ - `artifacts/performance-frame-budget.md`
19
+ - `artifacts/open-dev-browser-motion-evidence.md`
20
+ - `artifacts/motion-release-gate.md`
21
+ - `artifacts/motion-anti-patterns.md`
22
+ - `assets/templates/motion-contract.v1.json`
23
+ - `assets/templates/motion-audit-report.v1.md`
24
+ - `assets/templates/motion-viewport-matrix.v1.json`
25
+ - `assets/templates/motion-release-gate.v1.json`
26
+ - `scripts/motion-workflow.sh`
27
+ - `scripts/validate-skill-assets.sh`
28
+
29
+ ## Quick Start
30
+
31
+ 1. Load `opendevbrowser-best-practices` first for OpenDevBrowser runtime rules.
32
+ 2. Load `opendevbrowser-design-agent` for the parent UI implementation workflow, design contract, `/canvas`, and real-surface validation.
33
+ 3. Load `opendevbrowser-motion-design` for motion language, pattern selection, platform policy, device posture, reduced motion, frame budget, and temporal proof.
34
+ 4. Validate this pack before relying on its assets. From the loaded `opendevbrowser-motion-design` skill root, run:
35
+
36
+ ```bash
37
+ ./scripts/validate-skill-assets.sh
38
+ ./scripts/motion-workflow.sh contract-first
39
+ ./scripts/motion-workflow.sh temporal-proof
40
+ ```
41
+
42
+ ## InspireDesign Harvest Inputs
43
+
44
+ When an InspireDesign harvest bundle is available, read `meta-prompt.md`, `ranked-references.json`, `visual-evidence.json`, `screenshot-index.json`, and the referenced PNG files before selecting motion patterns. Treat harvested motion posture as evidence-backed design intent, not permission to add dependencies or copy source-brand choreography. Carry accepted cues into the motion contract with explicit reduced-motion behavior, device posture, frame budget, and temporal proof requirements.
45
+
46
+ ## Motion Contract
47
+
48
+ Motion is a contract field, not decoration. Before implementation, fill `assets/templates/motion-contract.v1.json` and connect it to the design-agent `motionSystem`, `performanceModel`, `responsiveSystem`, and `accessibilityPolicy` fields.
49
+
50
+ The contract must define:
51
+
52
+ - intent and user value
53
+ - selected patterns from `artifacts/motion-pattern-catalog.md`
54
+ - timing tokens, easing tokens, and spring tokens
55
+ - driver ownership for scroll, viewport, gesture, route, and state transitions
56
+ - device and breakpoint posture from `artifacts/device-breakpoint-posture.md`
57
+ - `prefers-reduced-motion` behavior from `artifacts/accessibility-reduced-motion.md`
58
+ - performance budget from `artifacts/performance-frame-budget.md`
59
+ - verification plan from `artifacts/open-dev-browser-motion-evidence.md`
60
+
61
+ ## Pattern Selection
62
+
63
+ Choose patterns by user job, not visual novelty. Start with the smallest motion grammar that clarifies hierarchy or state:
64
+
65
+ - no-motion for stable task surfaces
66
+ - opacity or fade-through for low-attention state changes
67
+ - shared element, FLIP, or layout transition when continuity is the point
68
+ - sheet, modal, popover, toast, and progressive disclosure motion for containment
69
+ - scroll reveal, parallax, pinned stage, or scroll snap only when the narrative depends on viewport progress
70
+ - gesture, inertia, spring settle, interruptibility, and haptics only when direct manipulation matters
71
+ - Lottie, Rive, 3D transform, or WebGL/spatial motion only when the illustration or spatial model carries meaning
72
+
73
+ Every selected pattern needs a reduced-motion fallback, device posture, and temporal evidence.
74
+
75
+ ## Platform And Framework Policy
76
+
77
+ Frameworks are implementation primitives, not permission to add dependencies. Prefer existing project libraries and platform primitives. New runtime dependencies require separate explicit approval and must be recorded in `libraryPolicy`.
78
+
79
+ Use `artifacts/platform-framework-guide.md` for CSS transitions, CSS keyframes, Web Animations API, View Transition API, CSS scroll-driven animations, Motion for React with `motion/react`, GSAP 3.x, Anime.js 4.x, react-spring, Lottie, Rive, Three.js, react-three-fiber, Spline/WebGL advisory, SwiftUI, UIKit/Core Animation, Jetpack Compose, Android MotionLayout, React Native Reanimated 4.x, Flutter animation APIs, and haptics.
80
+
81
+ ## Device Posture
82
+
83
+ Motion must change across phones, tablets, laptops, desktops, large monitors, short viewports, coarse pointers, fine pointers, keyboard-only use, reduced-power devices, high-refresh displays, and foldable posture. Use `artifacts/device-breakpoint-posture.md` and `assets/templates/motion-viewport-matrix.v1.json` before coding responsive animation.
84
+
85
+ ## Reduced Motion
86
+
87
+ Reduced motion is mandatory. Follow WCAG 2.2 SC 2.3.3 and `prefers-reduced-motion`. The reduced path must preserve meaning and task completion. It may remove travel, parallax, pinning, looping, and large transform distance, but it must not hide information, reorder focus, or remove feedback.
88
+
89
+ ## Verification
90
+
91
+ Prove motion in a real browser. Static code review is not enough for timing, choreography, scroll stages, or gesture behavior.
92
+
93
+ Required evidence for motion-heavy work:
94
+
95
+ - `snapshot`
96
+ - `screenshot`
97
+ - `debug-trace-snapshot`
98
+ - `screencast-start`
99
+ - interaction or scroll sequence
100
+ - `screencast-stop`
101
+ - console and network stability checks
102
+ - viewport matrix checks
103
+ - reduced-motion checks
104
+ - `/canvas` preview evidence when using design-agent canvas workflow
105
+
106
+ Use `scripts/motion-workflow.sh temporal-proof` and `artifacts/open-dev-browser-motion-evidence.md`.
107
+
108
+ ## Anti-patterns
109
+
110
+ Do not ship motion when any of these are true:
111
+
112
+ - the motion has no user value
113
+ - the progress owner is unclear
114
+ - multiple scroll observers fight the same narrative
115
+ - layout properties animate in hot paths
116
+ - reduced motion removes meaning
117
+ - hover is the only affordance
118
+ - mobile travel is long enough to disorient
119
+ - pinned scroll traps reading order or focus
120
+ - gesture animation cannot be interrupted or retargeted
121
+ - a new dependency was added without approval
122
+
123
+ Use `artifacts/motion-anti-patterns.md` before release.
124
+
125
+ ## Related Skills
126
+
127
+ - `opendevbrowser-best-practices`: runtime, CLI, browser, evidence, and release governance.
128
+ - `opendevbrowser-design-agent`: parent UI design, InspireDesign harvest review, and `/canvas` implementation workflow.
129
+ - `opendevbrowser-motion-design`: motion-specific terminology, pattern catalog, platform policy, device posture, reduced motion, performance, and temporal evidence.
@@ -0,0 +1,37 @@
1
+ # Accessibility And Reduced Motion
2
+
3
+ Motion must satisfy WCAG 2.2 SC 2.3.3 Animation from Interactions and respect `prefers-reduced-motion`.
4
+
5
+ ## Essential Versus Non-essential Motion
6
+
7
+ Essential motion is required to understand spatial continuity, preserve orientation, or complete a task. Non-essential motion is decorative, atmospheric, or brand-only. Non-essential motion must be disableable. Essential motion still needs a reduced alternative that preserves meaning.
8
+
9
+ ## Required Rules
10
+
11
+ - Provide a `prefers-reduced-motion` path for every selected pattern.
12
+ - Preserve all information in the reduced path.
13
+ - Do not remove task feedback, labels, focus, or completion state when reducing motion.
14
+ - Do not rely on motion-only feedback; pair it with text, state, color, icon, or ARIA where relevant.
15
+ - Avoid vestibular triggers: large parallax, zoom, spinning, unbounded loops, forced pinning, and long-distance travel.
16
+ - Keep keyboard order and visual order coherent.
17
+ - Keep focus stable before, during, and after animation.
18
+ - Provide pause, disable, or non-looping behavior for decorative repeated animation.
19
+ - Screen-reader alternatives must describe state changes when animation communicates status.
20
+ - Use ARIA live regions for async status only when they are relevant and not noisy.
21
+
22
+ ## Reduced-motion Examples
23
+
24
+ - Shared element transition becomes fade-through or instant route change with heading focus.
25
+ - Pinned scroll stage becomes stacked static sections.
26
+ - Parallax becomes a static layered image.
27
+ - Skeleton shimmer becomes a static skeleton with loading text.
28
+ - Drag overshoot becomes direct snap to final target.
29
+ - Lottie or Rive loop becomes a poster frame.
30
+
31
+ ## Blocking Failures
32
+
33
+ - Reduced motion removes content.
34
+ - Reduced motion leaves content hidden because the reveal animation never runs.
35
+ - Focus moves to an invisible or offscreen element.
36
+ - A hover animation is the only affordance.
37
+ - A loop cannot be paused or stopped.
@@ -0,0 +1,40 @@
1
+ # Device And Breakpoint Posture
2
+
3
+ Motion must adapt to posture, pointer, viewport height, power, and refresh rate. Do not assume desktop timing scales down.
4
+
5
+ ## Posture Matrix
6
+
7
+ | Posture | Motion Changes |
8
+ |---|---|
9
+ | Mobile portrait | Shorter duration, shorter travel, no default parallax, avoid pinned scroll, larger gesture thresholds, protect touch targets. |
10
+ | Mobile landscape | Reduce vertical choreography, avoid blocking short viewports, keep primary actions visible. |
11
+ | Tablet portrait | Moderate travel, sheet or side panel based on density, touch-friendly drag thresholds. |
12
+ | Tablet landscape | Can use wider spatial transitions, but preserve reading order and pointer/touch parity. |
13
+ | Laptop and desktop | Fine pointer allows hover and richer route continuity, but keyboard parity remains required. |
14
+ | Large monitor | Avoid excessive travel across long distances; anchor transitions to local regions. |
15
+ | Short viewport | Disable pinning, reduce stage count, avoid vertical reveal dependency. |
16
+ | Coarse pointer | Prefer press/tap feedback, larger handles, drag thresholds, no hover-only affordance. |
17
+ | Fine pointer | Hover/focus microinteractions allowed with keyboard equivalent. |
18
+ | Trackpad | Scroll and inertia can be richer, but must not fight native scroll. |
19
+ | Touch gesture context | Use interruptible, retargetable, threshold-based motion. |
20
+ | Keyboard-only context | Motion cannot change focus order or hide reachable controls. |
21
+ | Reduced-power devices | Prefer opacity, transform, static skeletons, fewer simultaneous animations. |
22
+ | High-refresh displays | Validate smoothness at high refresh and avoid timing tied to frame counts. |
23
+ | Foldable/device posture | Treat `device-posture` as experimental progressive enhancement only. Default to responsive breakpoints first. |
24
+
25
+ ## What Changes By Posture
26
+
27
+ - Duration: shorter on phones, reduced-power devices, and repeated workflows.
28
+ - Distance: local on mobile and large monitors; never force long travel across the screen.
29
+ - Pinned-scroll allowance: desktop only by default, disabled on short viewports and most phones.
30
+ - Parallax allowance: off by default on mobile and reduced motion.
31
+ - Gesture thresholds: larger for touch, smaller for precision pointer, always cancellable.
32
+ - Touch target protection: animation must not shrink active targets below usable size.
33
+ - Density: reduce stagger count and choreography in dense content.
34
+ - Viewport-height constraints: no stage should require more height than the viewport can provide.
35
+ - Fallback behavior: static, stacked, and readable content must exist for every scroll stage.
36
+ - Reduced-motion handling: remove travel, pinning, parallax, loops, and non-essential gesture flourish.
37
+
38
+ ## Foldable Rule
39
+
40
+ `device-posture` is experimental. Use it only as progressive enhancement after the default responsive layout and motion contract already work without it.
@@ -0,0 +1,29 @@
1
+ # Motion Anti-patterns
2
+
3
+ Do not ship these motion failures.
4
+
5
+ - Decorative motion without user value.
6
+ - Missing progress owner for route, state, scroll, or gesture animation.
7
+ - Competing scroll observers for the same narrative.
8
+ - Layout-property animation in hot paths.
9
+ - Long-distance mobile travel.
10
+ - Default parallax without vestibular and reduced-motion review.
11
+ - Pinned scroll without escape condition.
12
+ - Hover-only affordance.
13
+ - Hidden focus or reading-order changes.
14
+ - Reduced motion that removes meaning.
15
+ - Unbounded loops.
16
+ - Fake progress.
17
+ - Unapproved runtime dependency.
18
+ - Haptic spam.
19
+ - Index-keyed animated lists.
20
+ - Non-interruptible gesture animation.
21
+ - Motion-only status feedback.
22
+ - Skeleton shimmer that never resolves.
23
+ - Shared element transition with unstable identity.
24
+ - WebGL or canvas motion without static accessible equivalent.
25
+ - Animation cleanup leaks after unmount or route change.
26
+
27
+ ## Fix Pattern
28
+
29
+ For every anti-pattern, either remove the motion, reduce it to a simpler pattern, or rewrite the motion contract with a clear owner, fallback, and evidence plan.