一键导入
ui-verify
Use when ship-flow needs UI verify coverage for render fidelity, selectors, design tokens, computed CSS, dimensions, or handoff targets.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when ship-flow needs UI verify coverage for render fidelity, selectors, design tokens, computed CSS, dimensions, or handoff targets.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when writing a ship-flow plan for a shaped entity, especially implementation tasks, TDD needs, runtime commands, or scope anchoring. Layer A delegation: superpowers:writing-plans owns plan authoring; ship-flow:test-driven-development owns fallback TDD contracts.
Use when shaping vague, complex, or ambiguous ship-flow requests into a Shape Up pitch, including `/shape`, discussion, or skill-authoring work.
Use when shape finds UI, domain, contract, interface, visual ambiguity, affects_ui, design_required, or no design reference before plan.
Use when ship-flow needs execute-stage implementation from an approved plan, including wave tasks, blocked work, or PR feedback re-entry. Layer A delegation: superpowers:subagent-driven-development owns wave dispatch discipline.
Use when `/ship` should run ship-flow for an entity id or good-enough raw requirement; vague inputs need shape clarification.
Use when verify passed and ship-flow needs review, PR readiness, PR body drafting, or canonical docs sync. Layer A delegation: pr-review-toolkit:review-pr owns PR review persona philosophy.
| name | ui-verify |
| description | Use when ship-flow needs UI verify coverage for render fidelity, selectors, design tokens, computed CSS, dimensions, or handoff targets. |
Ship-flow built-in utility for fragment-level UI parity. It compares known DOM
selectors against exact getComputedStyle() values in a live browser and writes
a machine-readable report for ship-verify.
Use this for:
render_fidelity_targets[] generated by ship-design and
generate-ui-verify-spec.sh.design-system-parity runtime evidence when the selector and CSS property
are known; ship-verify populates its actual_computed_value evidence field
from the runner report's per-property Actual browser-returned
getComputedStyle() value.Do not use this as whole-page approval. Fragment-level checks can pass while the
page composition still diverges from design. Whole-page parity is handled by
ship-verify Step 3.6.1 via whole_page_visual_targets[], full-page screenshot
capture, and reference-artifact comparison.
mockup-parity is outside fixed selector/value checks: it compares live DOM
structure against an HTML mockup or design artifact. Ship-verify owns that Done
Criterion judgment; use a DOM structure comparator, e2e/browser report, or
normalized digest rather than this computed-style utility.
Run the built-in runner from a project root:
node plugins/ship-flow/skills/ui-verify/bin/run.js <yaml-path> [--no-screenshot] [--bail-on-first-fail]
YAML schema:
version: 1
mapping: spacebridge
auth_account: tenant_admin
title: "War room density tokens"
readiness:
timeout_ms: 10000
poll_ms: 100
setup:
- action: goto
url: "/"
- action: click
selector: ".open-density-panel"
ensure: open
postcondition: ".density-panel"
checks:
- name: "D1 row padding"
selector: ".entity-row"
expect:
paddingTop: "4px"
pseudo:
"::before":
backgroundColor: "rgb(178, 105, 255)"
readiness is optional. The defaults shown above apply when it is omitted, so
existing version 1 YAML remains compatible. A setup click polls its target
within the bounded readiness window instead of racing a cold page, then clicks
exactly once. CSS, XPath, @ref, and text= click locators remain accepted. A
click may override timeout_ms or poll_ms on that step.
Use ensure: open with a CSS postcondition when clicking a toggle should
open a surface idempotently. If the postcondition already exists, the runner
skips the click; otherwise it waits for a successful click and then for the
postcondition. ensure: open without postcondition is a runner error.
Before any computed-style probe, the runner polls the union of all declared
checks[].selector values until every selector exists in the same current
document. goto, login, redirect, and legacy wait: { for: networkidle }
setup declarations use timeout-bounded document or URL state rather than an
unbounded network-idle verdict. Explicit millisecond sleeps remain accepted for
backward compatibility, but the selector-union barrier is the readiness
verdict for checks.
The runner resolves .claude/e2e/mappings/<mapping>.yaml for base_url and
optional auth. It drives agent-browser, probes getComputedStyle(), and
writes .claude/e2e/reports/verify-<yaml-stem>-<timestamp>.md.
Exit codes:
0 — all properties pass.1 — at least one selector/property check fails.2 — YAML, mapping, auth, setup, or runner error.Report rows include selector, expected value, actual value, and pass/fail per property. A selector not found is a failed check, not a skip.
A readiness timeout prints diagnostic evidence: current URL, missing selectors,
navigation timing/type, and available console and page-error context. Setup,
login, and navigation timeouts are runner errors and exit 2. A check-selector
timeout still writes a failed-check report and exits 1, preserving version 1
missing-selector behavior. Diagnostic collection is best-effort and reports
unavailable browser channels without masking the original timeout.
| Need | Use |
|---|---|
| Fixed selector × exact computed value | ship-flow:ui-verify |
design-system-parity computed-style evidence | ship-flow:ui-verify when selector/property are known |
mockup-parity DOM structure comparison | ship-verify with a live DOM structure comparator; outside fixed selector/value checks |
| Navigation, state transitions, user actions | e2e-pipeline:e2e-test or Playwright |
| Whole-page visual/design reference parity | ship-verify Step 3.6.1 |
| Unknown selector, CSS forensics, dynamic element discovery | agent-browser directly |
rgb(250, 250, 248).