用途:为产品用户可见的 GUI 变更生成简短、真实的本地 GIF 演示,并在任务要求时把 GIF 附加到 Pull Request。录制只产出本地视频或截图与一个 .gif,不改动远端状态;发布是独立最后一步,仅在任务包含附加到 PR 时执行,且不触碰 PR 自身分支。
主要能力:优先使用可用的浏览器控制工作流;当该工作流支持 recordVideo 时启用视频以捕获更多中间帧,否则用截图。仅当浏览器控制不可用时,才用仓库声明的 Playwright 依赖在隔离无头浏览器中回退,并在说明中标注。内置编码脚本支持裁剪、变速、末尾停留、尺寸与体积控制。
使用方式:按 PR 暂存,要求干净工作树,用 git rev-parse HEAD 记录提交,再构建该树(如 pnpm run build && pnpm run build:web)。每个端口从该树启动一个服务器,使用全新 DSH_HOME、DSH_AGENTS_HOME、工作区与会话状态,浏览器用全新隔离上下文。录制脚本、原始视频、时序说明、QA 帧与 GIF 存放在被 gitignore 的 .playwright-mcp/ 目录。编码需 python3、ffmpeg、ffprobe,先单独一行 export GIF_SKILL_DIR=/absolute/path/to/this/skill,再运行 encode_gif.py,例如:python3 "$GIF_SKILL_DIR/scripts/encode_gif.py" /absolute/path/to/demo.webm /absolute/path/to/demo.gif --start 2 --end 32 --speed 2 --final-hold 3 --fps 10 --max-width 1200 --colors 128。截图目录用 --durations 与 --pattern。
适用场景:GUI 行为变更的 PR 演示、工具调用或错误恢复的轨迹展示、需要真实模型轮次的证据录制。
限制:不得用 fixture 查询、mock 传输、合成事件注入或测试专用钩子替代真实服务器与真实 API,除非用户明确要求 fixture 录制;凭据或服务器不可用时应报告限制而非替换。不得读取或暴露凭据值。一次 storyboard 视为一次证据运行,失败帧应丢弃并从头重跑,不得拼接不同运行。发布时 gh --attach 需 gh v2.99.0+、github.com 仓库、写权限且 GIF ≤10MB;否则用 orphan assets 分支,且永不删除、改写或强推该分支。编码器拒绝空区间、越界、少于两帧、模式不匹配参数与意外覆盖。本地媒体测试不在仓库 CI 中运行。