From credo
Enforces visual verification as the Definition of Done for any UI change. Activates automatically when items are ui:true or about to mark done, using Playwright to prove behavior in a real browser.
How this skill is triggered — by the user, by Claude, or both
Slash command
/credo:verifyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Visual verification is the credo Definition-of-Done gate for anything with a runtime
Visual verification is the credo Definition-of-Done gate for anything with a runtime
surface. If a change renders something, updates something on screen, or reacts to a
user action, it is not done until that behavior has been observed - either by the user
in a real browser, or by a reliable automated Playwright check that drives the real
build. This skill is the DoD gate that ui: true items require.
Task backend. If the task backend is
gsd(.credo/config: task_backend, or theCREDO_TASK_BACKENDenv override), the credo item lifecycle is inactive, so there is no credo item to move to done - GSD owns task tracking. The verification method here still applies as a general "prove it renders" tool; just do not gate a credo item with it in that mode.
None of these are a substitute for visual proof:
node --check, a type-check, a lint pass, or a successful buildThey can all be green while the surface renders broken, never updates, or ignores the user. Verification means the rendered surface was exercised and observed.
Anything else is "wired-but-behavior-unverified", not "exercised".
getBoundingClientRect() (and
computed styles where relevant), do not rely on a screenshot alone. A screenshot is
evidence, not the measurement; a plausible-looking screenshot can still hide a
zero-height or off-canvas element that the box metrics expose.Verify at each configured viewport width. The universal defaults are 320, 768 and 1440 px, but read them from config as the source of truth - they may be overridden per project:
"${CLAUDE_PLUGIN_ROOT}/scripts/credo-config.sh" get verify.viewports
(Config key: verify.viewports.) Resize to each width, then measure and capture at
that width.
Run the Playwright verification inside a subagent that owns a single browser instance (a singleton), rather than spawning browsers in the main agent or opening several in parallel. One browser, driven step by step, keeps the run deterministic and keeps browser noise out of the main context. See the credo orchestration skill for how to delegate and monitor such a subagent without flooding the main context.
Capture one screenshot per viewport and save it to .credo/screenshots/ using this
exact naming rule:
<task-or-feature>-<viewport>-<YYYY-MM-DD>.png
Example: login-form-320-2026-07-04.png. <task-or-feature> is a short slug (an item
slug or feature name), <viewport> is the width in px, and the date is the day of the
verification. The .credo/ directory is git-excluded by design, so screenshots are
local evidence, not committed artifacts.
A change with a runtime surface is done only when its observable success criteria are
exercised (or confirmed by the user for human-only criteria). For items marked
ui: true, a passing visual verification at every configured viewport - measured
layout, real interaction, live update where required, hard reload after rebuild, and
saved screenshots - is mandatory before the item may move to done. If verification
surfaces a defect, the item is not done: it goes back to clarification with a note on
what was missed, per the credo item model. Never downgrade or self-approve this gate.
npx claudepluginhub marcel-bich/marcel-bich-claude-marketplace --plugin credoVisually verify implemented features work correctly before marking complete. Use when testing UI changes, verifying web features, or checking user flows work in the browser.
Performs Playwright-driven browser verification: visual checks, a11y audits, regression diffs, and E2E scaffolds. Default ON for UI agents.
Verifies frontend changes against spec acceptance criteria using Playwright MCP for browser automation. Automates spec intake, dev server/auth checks, and test runs.