opendevbrowser 0.0.30 → 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.
- package/README.md +20 -7
- package/dist/{accessibility-snapshot-CQ4ZKWKC.js → accessibility-snapshot-XOP66CSK.js} +11 -11
- package/dist/{active-window-TD5HYJ72.js → active-window-E3WFOQGX.js} +11 -11
- package/dist/{annotate-VTLFS2XV.js → annotate-MAE7ZJOZ.js} +10 -10
- package/dist/{artifacts-KJ6RNDO2.js → artifacts-JHDUUJGQ.js} +2 -2
- package/dist/{attr-BCI5KYCW.js → attr-M3PFDJ7Q.js} +10 -10
- package/dist/{canvas-5DFEEOKM.js → canvas-3AJVL5I5.js} +10 -10
- package/dist/{capture-desktop-HFTTWY4Z.js → capture-desktop-VJGEETMJ.js} +11 -11
- package/dist/{capture-window-X63XPIFF.js → capture-window-W5UFSFQL.js} +11 -11
- package/dist/{check-LWAUY7GC.js → check-4IR3UJVW.js} +10 -10
- package/dist/{checked-ZSOUKVYT.js → checked-PKNY7724.js} +10 -10
- package/dist/{chunk-KZ2IXVQT.js → chunk-2X4JFMKJ.js} +39 -4
- package/dist/chunk-2X4JFMKJ.js.map +1 -0
- package/dist/{chunk-IPE7TF2P.js → chunk-7BNU6DFI.js} +8 -5
- package/dist/chunk-7BNU6DFI.js.map +1 -0
- package/dist/{chunk-J47N77VG.js → chunk-AKIAGFOE.js} +31 -8
- package/dist/chunk-AKIAGFOE.js.map +1 -0
- package/dist/{chunk-RCZZGGJS.js → chunk-AWQ37HSC.js} +7 -3
- package/dist/chunk-AWQ37HSC.js.map +1 -0
- package/dist/{chunk-3ILXPKSJ.js → chunk-BUVYTJZR.js} +2 -1
- package/dist/chunk-BUVYTJZR.js.map +1 -0
- package/dist/{chunk-AHEWXOKY.js → chunk-BUXFIY2P.js} +4 -4
- package/dist/{chunk-QOMWCRE3.js → chunk-HBK56JST.js} +3 -3
- package/dist/{chunk-T4GMCW6Z.js → chunk-J3KYGJRQ.js} +3 -3
- package/dist/{chunk-6PVZ2ABC.js → chunk-L3YNUGYF.js} +2 -2
- package/dist/{chunk-JZXD6FWR.js → chunk-NURQB55J.js} +2 -2
- package/dist/{chunk-GQJ5S3BL.js → chunk-P5K3ZIPI.js} +3 -3
- package/dist/{chunk-PPUWQKIC.js → chunk-PIFHXKV4.js} +4 -4
- package/dist/{chunk-STGGGVYT.js → chunk-QMHKAFYX.js} +2 -2
- package/dist/{chunk-4BEJVZRK.js → chunk-RO3SMXF3.js} +1073 -138
- package/dist/chunk-RO3SMXF3.js.map +1 -0
- package/dist/{chunk-RPXWUCQQ.js → chunk-SKFB5ICF.js} +2 -2
- package/dist/{chunk-2SIMIPLY.js → chunk-W6YPVNDX.js} +3 -3
- package/dist/{chunk-MD655IPO.js → chunk-XDLJE3RJ.js} +11 -4
- package/dist/chunk-XDLJE3RJ.js.map +1 -0
- package/dist/{chunk-KDSNXS6N.js → chunk-ZMNEWS7A.js} +2 -2
- package/dist/{chunk-COAOWH3G.js → chunk-ZOVMMQO6.js} +119 -27
- package/dist/chunk-ZOVMMQO6.js.map +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/commands/daemon.d.ts +19 -2
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/inspiredesign.d.ts +6 -1
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts +12 -3
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/types.d.ts +1 -0
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/daemon-client.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon-mismatch.d.ts +9 -0
- package/dist/cli/daemon-mismatch.d.ts.map +1 -0
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/errors.d.ts +4 -2
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.js +91 -90
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/postinstall-skill-sync.js +2 -2
- package/dist/{click-2AILSEIZ.js → click-HLNXU4I5.js} +10 -10
- package/dist/{clone-component-TPJS3PEG.js → clone-component-QIKN5PIM.js} +9 -9
- package/dist/{clone-page-LE74CIFC.js → clone-page-5C7DTGZT.js} +9 -9
- package/dist/{close-HN4YI47K.js → close-PCRZHX7F.js} +9 -9
- package/dist/{close-WFERRHX6.js → close-WTXB3EDD.js} +9 -9
- package/dist/{connect-RWBV2UCQ.js → connect-6C2IG55I.js} +10 -10
- package/dist/{console-poll-PP4YYPDF.js → console-poll-VJXCZR3F.js} +10 -10
- package/dist/{cookie-import-6IP776FC.js → cookie-import-5OEDFB6U.js} +9 -9
- package/dist/{cookie-list-O2KG6DPU.js → cookie-list-44UNJJ6D.js} +9 -9
- package/dist/{daemon-2BSAZXLT.js → daemon-CIKGBWEB.js} +25 -12
- package/dist/daemon-CIKGBWEB.js.map +1 -0
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/{debug-trace-snapshot-F3BDVZXS.js → debug-trace-snapshot-RGXAPGWB.js} +10 -10
- package/dist/{dialog-6JQYUWMQ.js → dialog-S64MJUM2.js} +10 -10
- package/dist/{disconnect-763TP7GH.js → disconnect-MTIELIM7.js} +9 -9
- package/dist/{enabled-DLYQFNIP.js → enabled-KF2L7LW4.js} +10 -10
- package/dist/{goto-S346TJJH.js → goto-ULWINUAZ.js} +10 -10
- package/dist/{help-EKKKEDL5.js → help-IG5S5RJD.js} +14 -10
- package/dist/help-IG5S5RJD.js.map +1 -0
- package/dist/{hover-6JVJFGO7.js → hover-NOCOTR6N.js} +10 -10
- package/dist/{html-EVOSPBIT.js → html-LXSYP6BT.js} +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -17
- package/dist/index.js.map +1 -1
- package/dist/{inspector-H57BVUJP.js → inspector-62EPCLYB.js} +11 -11
- package/dist/{inspector-audit-NQBAJWC7.js → inspector-audit-T2IF67RJ.js} +13 -13
- package/dist/{inspector-plan-ZDIQVND3.js → inspector-plan-KQS6LRMW.js} +11 -11
- package/dist/inspiredesign/capture.d.ts +4 -0
- package/dist/inspiredesign/capture.d.ts.map +1 -1
- package/dist/inspiredesign/contract.d.ts +22 -0
- package/dist/inspiredesign/contract.d.ts.map +1 -1
- package/dist/inspiredesign/handoff.d.ts +7 -1
- package/dist/inspiredesign/handoff.d.ts.map +1 -1
- package/dist/inspiredesign/meta-prompt.d.ts +9 -0
- package/dist/inspiredesign/meta-prompt.d.ts.map +1 -0
- package/dist/inspiredesign/reference-discovery.d.ts +29 -0
- package/dist/inspiredesign/reference-discovery.d.ts.map +1 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts +21 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
- package/dist/inspiredesign/visual-evidence.d.ts +46 -0
- package/dist/inspiredesign/visual-evidence.d.ts.map +1 -0
- package/dist/inspiredesign/visual-policy.d.ts +17 -0
- package/dist/inspiredesign/visual-policy.d.ts.map +1 -0
- package/dist/{inspiredesign-IEUL4PX3.js → inspiredesign-DB6CHYN3.js} +71 -19
- package/dist/inspiredesign-DB6CHYN3.js.map +1 -0
- package/dist/{launch-EK66VQPF.js → launch-B5ES6FVS.js} +10 -10
- package/dist/{list-KKUKN467.js → list-TIZVR6RO.js} +9 -9
- package/dist/{list-ADZAQ2IU.js → list-XM4BP5GM.js} +9 -9
- package/dist/{macro-resolve-6DOQJ7CA.js → macro-resolve-TTQZVFIW.js} +10 -10
- package/dist/{native-UPLVQ2SG.js → native-J2DFLOLP.js} +3 -3
- package/dist/{network-poll-NUL4PDPY.js → network-poll-NNSY4W63.js} +10 -10
- package/dist/{new-5NKYPEFT.js → new-E6VNAC2A.js} +9 -9
- package/dist/{open-NR3BPLXV.js → open-F55XKMKB.js} +9 -9
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +46 -17
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/{perf-HJ36ZI6H.js → perf-RE7JE6CP.js} +10 -10
- package/dist/{pointer-down-IYTTQWXZ.js → pointer-down-BCBPC5FJ.js} +11 -11
- package/dist/{pointer-drag-A2YC5PWI.js → pointer-drag-QK7KGF7W.js} +11 -11
- package/dist/{pointer-move-W5K5FUI4.js → pointer-move-VFAZQAXA.js} +11 -11
- package/dist/{pointer-up-6GWVO64Y.js → pointer-up-FA5WE6LS.js} +11 -11
- package/dist/{press-A3V5WB3S.js → press-TNRHNDSW.js} +10 -10
- package/dist/{product-video-52REKWF3.js → product-video-UEANMZ2U.js} +11 -11
- package/dist/providers/renderer.d.ts +7 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +1 -0
- package/dist/providers/workflow-handoff.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts +45 -3
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-IMFYMMHQ.js → providers-AMCNWZUL.js} +3 -3
- package/dist/public-surface/generated-manifest.d.ts +12 -3
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +6 -6
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/{research-WB6BBCDD.js → research-YFY7WJSZ.js} +11 -11
- package/dist/{review-BGWVY4RA.js → review-NHOPLAT7.js} +11 -11
- package/dist/{review-desktop-LEORC5VS.js → review-desktop-OFWPDYGD.js} +11 -11
- package/dist/{rpc-4TSKSFGC.js → rpc-TVVQPUOL.js} +10 -10
- package/dist/{run-3NBLVWXD.js → run-OCBEZRDW.js} +8 -8
- package/dist/{screencast-start-UZVIT3IN.js → screencast-start-GTSDA33J.js} +10 -10
- package/dist/{screencast-stop-NOSJSIUO.js → screencast-stop-FYBUIXAA.js} +10 -10
- package/dist/{screenshot-LARG4JQG.js → screenshot-OEYRT3SP.js} +10 -10
- package/dist/{scroll-VNFMV6TW.js → scroll-35OFEFC5.js} +10 -10
- package/dist/{scroll-into-view-VYRT3JPT.js → scroll-into-view-UQ5RAWIX.js} +10 -10
- package/dist/{select-KJTUZDVO.js → select-K56QELVZ.js} +10 -10
- package/dist/{serve-EV7K4HKR.js → serve-5UJ3VMWC.js} +48 -24
- package/dist/serve-5UJ3VMWC.js.map +1 -0
- package/dist/{shopping-DTXHVQ2X.js → shopping-FJG7XB4Q.js} +11 -11
- package/dist/{skill-lifecycle-5UAZGKSN.js → skill-lifecycle-OWZYBPFS.js} +3 -3
- package/dist/skills/bundled-skill-directories.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +2 -2
- package/dist/{skills-NSXDX6YM.js → skills-KHMRNOE4.js} +3 -3
- package/dist/{snapshot-3XQMCMRJ.js → snapshot-W7RKVZEI.js} +10 -10
- package/dist/{status-YUMDP5KY.js → status-KHYCLGUD.js} +20 -12
- package/dist/status-KHYCLGUD.js.map +1 -0
- package/dist/{status-OXSYA5XD.js → status-R4EV4TWO.js} +11 -11
- package/dist/{status-capabilities-P4KDSE2Y.js → status-capabilities-XD3RGLKF.js} +11 -11
- package/dist/{text-V3B7UVIH.js → text-TANLFZ4O.js} +10 -10
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/{type-IYBN3ZLR.js → type-Y2Y7LX7Y.js} +10 -10
- package/dist/{uncheck-SG737EGI.js → uncheck-6REVUUB2.js} +10 -10
- package/dist/{uninstall-KYKGJAX7.js → uninstall-FW5ORBIN.js} +3 -3
- package/dist/{update-SMXPYGXS.js → update-FZGSXB74.js} +6 -2
- package/dist/update-FZGSXB74.js.map +1 -0
- package/dist/{update-skill-modes-BVX7IVMW.js → update-skill-modes-3ULKJK3Y.js} +3 -3
- package/dist/{upload-KH6ZABJA.js → upload-GGZC5UQP.js} +10 -10
- package/dist/{use-7YDKO3U4.js → use-B4Q7CFG2.js} +9 -9
- package/dist/{value-RZBWSKKM.js → value-DHOHO55D.js} +10 -10
- package/dist/{visible-BSFTAKXR.js → visible-S5BTWYNH.js} +10 -10
- package/dist/{wait-TMTEAYOP.js → wait-WV6NZUKL.js} +10 -10
- package/dist/{windows-HIZ23OHS.js → windows-GKE36DJQ.js} +11 -11
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/AGENTS.md +2 -1
- package/skills/opendevbrowser-best-practices/SKILL.md +9 -2
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +4 -3
- package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +7 -0
- package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +49 -3
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +24 -2
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +1 -0
- package/skills/opendevbrowser-design-agent/SKILL.md +3 -0
- package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +85 -40
- package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +2 -0
- package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +20 -5
- package/skills/opendevbrowser-motion-design/SKILL.md +129 -0
- package/skills/opendevbrowser-motion-design/artifacts/accessibility-reduced-motion.md +37 -0
- package/skills/opendevbrowser-motion-design/artifacts/device-breakpoint-posture.md +40 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-anti-patterns.md +29 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-pattern-catalog.md +430 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-release-gate.md +28 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-terminology.md +46 -0
- package/skills/opendevbrowser-motion-design/artifacts/open-dev-browser-motion-evidence.md +48 -0
- package/skills/opendevbrowser-motion-design/artifacts/performance-frame-budget.md +38 -0
- package/skills/opendevbrowser-motion-design/artifacts/platform-framework-guide.md +166 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-audit-report.v1.md +70 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-contract.v1.json +79 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-release-gate.v1.json +18 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-viewport-matrix.v1.json +76 -0
- package/skills/opendevbrowser-motion-design/scripts/motion-workflow.sh +163 -0
- package/skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh +374 -0
- package/dist/chunk-3ILXPKSJ.js.map +0 -1
- package/dist/chunk-4BEJVZRK.js.map +0 -1
- package/dist/chunk-COAOWH3G.js.map +0 -1
- package/dist/chunk-IPE7TF2P.js.map +0 -1
- package/dist/chunk-J47N77VG.js.map +0 -1
- package/dist/chunk-KZ2IXVQT.js.map +0 -1
- package/dist/chunk-MD655IPO.js.map +0 -1
- package/dist/chunk-RCZZGGJS.js.map +0 -1
- package/dist/daemon-2BSAZXLT.js.map +0 -1
- package/dist/help-EKKKEDL5.js.map +0 -1
- package/dist/inspiredesign-IEUL4PX3.js.map +0 -1
- package/dist/serve-EV7K4HKR.js.map +0 -1
- package/dist/status-YUMDP5KY.js.map +0 -1
- package/dist/update-SMXPYGXS.js.map +0 -1
- /package/dist/{accessibility-snapshot-CQ4ZKWKC.js.map → accessibility-snapshot-XOP66CSK.js.map} +0 -0
- /package/dist/{active-window-TD5HYJ72.js.map → active-window-E3WFOQGX.js.map} +0 -0
- /package/dist/{annotate-VTLFS2XV.js.map → annotate-MAE7ZJOZ.js.map} +0 -0
- /package/dist/{artifacts-KJ6RNDO2.js.map → artifacts-JHDUUJGQ.js.map} +0 -0
- /package/dist/{attr-BCI5KYCW.js.map → attr-M3PFDJ7Q.js.map} +0 -0
- /package/dist/{canvas-5DFEEOKM.js.map → canvas-3AJVL5I5.js.map} +0 -0
- /package/dist/{capture-desktop-HFTTWY4Z.js.map → capture-desktop-VJGEETMJ.js.map} +0 -0
- /package/dist/{capture-window-X63XPIFF.js.map → capture-window-W5UFSFQL.js.map} +0 -0
- /package/dist/{check-LWAUY7GC.js.map → check-4IR3UJVW.js.map} +0 -0
- /package/dist/{checked-ZSOUKVYT.js.map → checked-PKNY7724.js.map} +0 -0
- /package/dist/{chunk-AHEWXOKY.js.map → chunk-BUXFIY2P.js.map} +0 -0
- /package/dist/{chunk-QOMWCRE3.js.map → chunk-HBK56JST.js.map} +0 -0
- /package/dist/{chunk-T4GMCW6Z.js.map → chunk-J3KYGJRQ.js.map} +0 -0
- /package/dist/{chunk-6PVZ2ABC.js.map → chunk-L3YNUGYF.js.map} +0 -0
- /package/dist/{chunk-JZXD6FWR.js.map → chunk-NURQB55J.js.map} +0 -0
- /package/dist/{chunk-GQJ5S3BL.js.map → chunk-P5K3ZIPI.js.map} +0 -0
- /package/dist/{chunk-PPUWQKIC.js.map → chunk-PIFHXKV4.js.map} +0 -0
- /package/dist/{chunk-STGGGVYT.js.map → chunk-QMHKAFYX.js.map} +0 -0
- /package/dist/{chunk-RPXWUCQQ.js.map → chunk-SKFB5ICF.js.map} +0 -0
- /package/dist/{chunk-2SIMIPLY.js.map → chunk-W6YPVNDX.js.map} +0 -0
- /package/dist/{chunk-KDSNXS6N.js.map → chunk-ZMNEWS7A.js.map} +0 -0
- /package/dist/{click-2AILSEIZ.js.map → click-HLNXU4I5.js.map} +0 -0
- /package/dist/{clone-component-TPJS3PEG.js.map → clone-component-QIKN5PIM.js.map} +0 -0
- /package/dist/{clone-page-LE74CIFC.js.map → clone-page-5C7DTGZT.js.map} +0 -0
- /package/dist/{close-HN4YI47K.js.map → close-PCRZHX7F.js.map} +0 -0
- /package/dist/{close-WFERRHX6.js.map → close-WTXB3EDD.js.map} +0 -0
- /package/dist/{connect-RWBV2UCQ.js.map → connect-6C2IG55I.js.map} +0 -0
- /package/dist/{console-poll-PP4YYPDF.js.map → console-poll-VJXCZR3F.js.map} +0 -0
- /package/dist/{cookie-import-6IP776FC.js.map → cookie-import-5OEDFB6U.js.map} +0 -0
- /package/dist/{cookie-list-O2KG6DPU.js.map → cookie-list-44UNJJ6D.js.map} +0 -0
- /package/dist/{debug-trace-snapshot-F3BDVZXS.js.map → debug-trace-snapshot-RGXAPGWB.js.map} +0 -0
- /package/dist/{dialog-6JQYUWMQ.js.map → dialog-S64MJUM2.js.map} +0 -0
- /package/dist/{disconnect-763TP7GH.js.map → disconnect-MTIELIM7.js.map} +0 -0
- /package/dist/{enabled-DLYQFNIP.js.map → enabled-KF2L7LW4.js.map} +0 -0
- /package/dist/{goto-S346TJJH.js.map → goto-ULWINUAZ.js.map} +0 -0
- /package/dist/{hover-6JVJFGO7.js.map → hover-NOCOTR6N.js.map} +0 -0
- /package/dist/{html-EVOSPBIT.js.map → html-LXSYP6BT.js.map} +0 -0
- /package/dist/{inspector-H57BVUJP.js.map → inspector-62EPCLYB.js.map} +0 -0
- /package/dist/{inspector-audit-NQBAJWC7.js.map → inspector-audit-T2IF67RJ.js.map} +0 -0
- /package/dist/{inspector-plan-ZDIQVND3.js.map → inspector-plan-KQS6LRMW.js.map} +0 -0
- /package/dist/{launch-EK66VQPF.js.map → launch-B5ES6FVS.js.map} +0 -0
- /package/dist/{list-KKUKN467.js.map → list-TIZVR6RO.js.map} +0 -0
- /package/dist/{list-ADZAQ2IU.js.map → list-XM4BP5GM.js.map} +0 -0
- /package/dist/{macro-resolve-6DOQJ7CA.js.map → macro-resolve-TTQZVFIW.js.map} +0 -0
- /package/dist/{native-UPLVQ2SG.js.map → native-J2DFLOLP.js.map} +0 -0
- /package/dist/{network-poll-NUL4PDPY.js.map → network-poll-NNSY4W63.js.map} +0 -0
- /package/dist/{new-5NKYPEFT.js.map → new-E6VNAC2A.js.map} +0 -0
- /package/dist/{open-NR3BPLXV.js.map → open-F55XKMKB.js.map} +0 -0
- /package/dist/{perf-HJ36ZI6H.js.map → perf-RE7JE6CP.js.map} +0 -0
- /package/dist/{pointer-down-IYTTQWXZ.js.map → pointer-down-BCBPC5FJ.js.map} +0 -0
- /package/dist/{pointer-drag-A2YC5PWI.js.map → pointer-drag-QK7KGF7W.js.map} +0 -0
- /package/dist/{pointer-move-W5K5FUI4.js.map → pointer-move-VFAZQAXA.js.map} +0 -0
- /package/dist/{pointer-up-6GWVO64Y.js.map → pointer-up-FA5WE6LS.js.map} +0 -0
- /package/dist/{press-A3V5WB3S.js.map → press-TNRHNDSW.js.map} +0 -0
- /package/dist/{product-video-52REKWF3.js.map → product-video-UEANMZ2U.js.map} +0 -0
- /package/dist/{providers-IMFYMMHQ.js.map → providers-AMCNWZUL.js.map} +0 -0
- /package/dist/{research-WB6BBCDD.js.map → research-YFY7WJSZ.js.map} +0 -0
- /package/dist/{review-BGWVY4RA.js.map → review-NHOPLAT7.js.map} +0 -0
- /package/dist/{review-desktop-LEORC5VS.js.map → review-desktop-OFWPDYGD.js.map} +0 -0
- /package/dist/{rpc-4TSKSFGC.js.map → rpc-TVVQPUOL.js.map} +0 -0
- /package/dist/{run-3NBLVWXD.js.map → run-OCBEZRDW.js.map} +0 -0
- /package/dist/{screencast-start-UZVIT3IN.js.map → screencast-start-GTSDA33J.js.map} +0 -0
- /package/dist/{screencast-stop-NOSJSIUO.js.map → screencast-stop-FYBUIXAA.js.map} +0 -0
- /package/dist/{screenshot-LARG4JQG.js.map → screenshot-OEYRT3SP.js.map} +0 -0
- /package/dist/{scroll-VNFMV6TW.js.map → scroll-35OFEFC5.js.map} +0 -0
- /package/dist/{scroll-into-view-VYRT3JPT.js.map → scroll-into-view-UQ5RAWIX.js.map} +0 -0
- /package/dist/{select-KJTUZDVO.js.map → select-K56QELVZ.js.map} +0 -0
- /package/dist/{shopping-DTXHVQ2X.js.map → shopping-FJG7XB4Q.js.map} +0 -0
- /package/dist/{skill-lifecycle-5UAZGKSN.js.map → skill-lifecycle-OWZYBPFS.js.map} +0 -0
- /package/dist/{skills-NSXDX6YM.js.map → skills-KHMRNOE4.js.map} +0 -0
- /package/dist/{snapshot-3XQMCMRJ.js.map → snapshot-W7RKVZEI.js.map} +0 -0
- /package/dist/{status-OXSYA5XD.js.map → status-R4EV4TWO.js.map} +0 -0
- /package/dist/{status-capabilities-P4KDSE2Y.js.map → status-capabilities-XD3RGLKF.js.map} +0 -0
- /package/dist/{text-V3B7UVIH.js.map → text-TANLFZ4O.js.map} +0 -0
- /package/dist/{type-IYBN3ZLR.js.map → type-Y2Y7LX7Y.js.map} +0 -0
- /package/dist/{uncheck-SG737EGI.js.map → uncheck-6REVUUB2.js.map} +0 -0
- /package/dist/{uninstall-KYKGJAX7.js.map → uninstall-FW5ORBIN.js.map} +0 -0
- /package/dist/{update-skill-modes-BVX7IVMW.js.map → update-skill-modes-3ULKJK3Y.js.map} +0 -0
- /package/dist/{upload-KH6ZABJA.js.map → upload-GGZC5UQP.js.map} +0 -0
- /package/dist/{use-7YDKO3U4.js.map → use-B4Q7CFG2.js.map} +0 -0
- /package/dist/{value-RZBWSKKM.js.map → value-DHOHO55D.js.map} +0 -0
- /package/dist/{visible-BSFTAKXR.js.map → visible-S5BTWYNH.js.map} +0 -0
- /package/dist/{wait-TMTEAYOP.js.map → wait-WV6NZUKL.js.map} +0 -0
- /package/dist/{windows-HIZ23OHS.js.map → windows-GKE36DJQ.js.map} +0 -0
package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json
CHANGED
|
@@ -172,6 +172,45 @@
|
|
|
172
172
|
"figma_token_missing"
|
|
173
173
|
]
|
|
174
174
|
},
|
|
175
|
+
{
|
|
176
|
+
"packId": "opendevbrowser-motion-design",
|
|
177
|
+
"packType": "browser_surface",
|
|
178
|
+
"docOnly": false,
|
|
179
|
+
"validatorCommands": [
|
|
180
|
+
"./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh"
|
|
181
|
+
],
|
|
182
|
+
"sharedEvidenceIds": [
|
|
183
|
+
"live-regression",
|
|
184
|
+
"canvas-competitive",
|
|
185
|
+
"skill-discovery"
|
|
186
|
+
],
|
|
187
|
+
"runtimeSurfaces": {
|
|
188
|
+
"cliCommands": [
|
|
189
|
+
"canvas",
|
|
190
|
+
"screenshot",
|
|
191
|
+
"debug-trace-snapshot",
|
|
192
|
+
"screencast-start",
|
|
193
|
+
"screencast-stop"
|
|
194
|
+
],
|
|
195
|
+
"tools": [
|
|
196
|
+
"opendevbrowser_canvas",
|
|
197
|
+
"opendevbrowser_screenshot",
|
|
198
|
+
"opendevbrowser_debug_trace_snapshot",
|
|
199
|
+
"opendevbrowser_screencast_start",
|
|
200
|
+
"opendevbrowser_screencast_stop"
|
|
201
|
+
],
|
|
202
|
+
"modes": [
|
|
203
|
+
"managed",
|
|
204
|
+
"extension",
|
|
205
|
+
"cdpConnect"
|
|
206
|
+
]
|
|
207
|
+
},
|
|
208
|
+
"allowsEnvLimited": true,
|
|
209
|
+
"envLimitedReasons": [
|
|
210
|
+
"extension_unavailable",
|
|
211
|
+
"reduced_motion_emulation_unavailable"
|
|
212
|
+
]
|
|
213
|
+
},
|
|
175
214
|
{
|
|
176
215
|
"packId": "opendevbrowser-form-testing",
|
|
177
216
|
"packType": "workflow",
|
|
@@ -335,6 +374,7 @@
|
|
|
335
374
|
"opendevbrowser-continuity-ledger",
|
|
336
375
|
"opendevbrowser-data-extraction",
|
|
337
376
|
"opendevbrowser-design-agent",
|
|
377
|
+
"opendevbrowser-motion-design",
|
|
338
378
|
"opendevbrowser-form-testing",
|
|
339
379
|
"opendevbrowser-login-automation",
|
|
340
380
|
"opendevbrowser-product-presentation-asset",
|
|
@@ -361,6 +401,7 @@
|
|
|
361
401
|
],
|
|
362
402
|
"targetedRerunCommands": [
|
|
363
403
|
"./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh",
|
|
404
|
+
"./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh",
|
|
364
405
|
"node scripts/skill-runtime-audit.mjs --smoke --out artifacts/skill-runtime-audit/smoke.json"
|
|
365
406
|
]
|
|
366
407
|
},
|
|
@@ -470,7 +511,8 @@
|
|
|
470
511
|
"label": "Canvas, annotate, and design surfaces",
|
|
471
512
|
"priority": 5,
|
|
472
513
|
"packIds": [
|
|
473
|
-
"opendevbrowser-design-agent"
|
|
514
|
+
"opendevbrowser-design-agent",
|
|
515
|
+
"opendevbrowser-motion-design"
|
|
474
516
|
],
|
|
475
517
|
"proofLanes": [
|
|
476
518
|
"live-regression",
|
|
@@ -488,13 +530,16 @@
|
|
|
488
530
|
"src/tools/index.ts",
|
|
489
531
|
"src/public-surface/source.ts",
|
|
490
532
|
"extension/src/canvas/canvas-runtime.ts",
|
|
491
|
-
"extension/src/annotate-content.ts"
|
|
533
|
+
"extension/src/annotate-content.ts",
|
|
534
|
+
"skills/opendevbrowser-motion-design/SKILL.md",
|
|
535
|
+
"skills/opendevbrowser-motion-design/artifacts/open-dev-browser-motion-evidence.md"
|
|
492
536
|
],
|
|
493
537
|
"targetedRerunCommands": [
|
|
494
538
|
"node scripts/live-regression-direct.mjs --out artifacts/skill-runtime-audit/lanes/live-regression.json",
|
|
495
539
|
"node scripts/canvas-competitive-validation.mjs --out artifacts/skill-runtime-audit/lanes/canvas-competitive.json",
|
|
496
540
|
"node scripts/canvas-live-workflow.mjs --surface managed-headless",
|
|
497
|
-
"node scripts/annotate-live-probe.mjs --transport direct"
|
|
541
|
+
"node scripts/annotate-live-probe.mjs --transport direct",
|
|
542
|
+
"./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh"
|
|
498
543
|
]
|
|
499
544
|
},
|
|
500
545
|
{
|
|
@@ -504,6 +549,7 @@
|
|
|
504
549
|
"packIds": [
|
|
505
550
|
"opendevbrowser-best-practices",
|
|
506
551
|
"opendevbrowser-design-agent",
|
|
552
|
+
"opendevbrowser-motion-design",
|
|
507
553
|
"opendevbrowser-shopping"
|
|
508
554
|
],
|
|
509
555
|
"proofLanes": [
|
|
@@ -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
|
-
##
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
"
|
|
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.
|