Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when you are about to hand off any UI change - the four-width check and the screenshot checklist that decide whether the screen is really done.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
A change that compiles and passes its tests has not been looked at. The UI you're about to hand off is not done because the build is green or because you read the JSX and it looked right — it is done when you have screenshots at four widths that prove it.
Core principle: Default assumption: the change is NOT done until the screenshots prove it. Be the skeptic here, not the advocate — look for what's still wrong, not for confirmation that it's fine.
mkdir -p /tmp/tt-<task key> && npm run dev > /tmp/tt-<task key>/dev.log 2>&1 &, then sleep 5; cat /tmp/tt-<task key>/dev.log to read the port.browser_navigate to the changed page.browser_wait_for the content that proves the page actually rendered (not a spinner, not a blank shell).browser_set_viewport with the exact args from the table below.browser_screenshot with full_page: true and no width argument (passing width here re-emulates the viewport and silently throws away the size you just set).browser_read_dom with contains: "..." for each new element, to confirm it's actually present (and whether hidden) — this is not a substitute for looking at the screenshot, it's a second signal.| Name | Width | browser_set_viewport call | Tailwind band |
|---|---|---|---|
| phone | 360 | {device: "mobile", width: 360} | below sm |
| tablet | 768 | {device: "tablet"} | md |
| laptop | 1024 | {device: "desktop", width: 1024} | lg |
| desktop | 1440 | {device: "desktop"} | xl+ |
Phone is 360, not 390, on purpose — most real overflow bugs show up between 320 and 375, and 390 is wide enough to hide some of them.
Collect every finding from every width before you touch any code. Fixing after each screenshot means re-screenshotting after each fix, which is slower and hides whether one fix broke another width. Fix everything from the batch in one pass, then re-run the full four-width check once. At most two rounds total — whatever is still open after round two goes into the closing message, honestly, rather than triggering a third silent pass.
Each item is a yes/no question with a concrete threshold — "looks okay" is not an answer to any of them.
Layout & overflow
browser_set_viewport report zero horizontal scroll and zero overflowing elements at all four widths?min-w-0, and are long words break-words not break-all?Hierarchy & rhythm
Typography
max-w-prose), are headings text-balance and body text-pretty, are numbers/prices tabular-nums?Colour & contrast
bg-primary, text-muted-foreground) — no raw palette class, no hex, in the diff?States & content resilience
focus-visible, active, and disabled all styled on every control you touched?Navigation & touch
md, does ≥5 links collapse into a menu button with aria-expanded/aria-controls, and does the panel close on link click and Escape?Consistency
Copy
lorem ipsum/placeholder text, no TODO/FIXME visible in the UI?Before calling it done, put the component under realistic stress — not just the one happy-path string from the task description: the longest name/title/URL you can plausibly expect, a zero-item list, an empty string in an optional field. If a co-located test already asserts this, reading that test counts; if not, feed it manually and look.
State, for each width checked: what you set it to, what the viewport report said, and what the screenshot showed. Name any residual issue honestly rather than omitting it — a known gap reported is not a failure, an unverified claim of "done" is.
width argument after browser_set_viewport — it silently re-emulates desktop, so the screenshot is not of the size you think it is.browser_read_dom text alone, with no screenshot actually looked at.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
日本語の概要は準備中です。原文の説明を表示しています。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
日本語の概要は準備中です。原文の説明を表示しています。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
日本語の概要は準備中です。原文の説明を表示しています。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
日本語の概要は準備中です。原文の説明を表示しています。
Use when deciding whether a request needs an analiz task before implementation - the conditions that require the architect's analysis versus going straight to implementation
日本語の概要は準備中です。原文の説明を表示しています。