Reference Document

Visual Brief System

A structured protocol for communicating visual context to Claude Code using numbered screenshots, master boards, and precise measurements.

v1.1 — February 2026 — JB Cloud

01 Philosophy

Claude Code can read images directly. One annotated screenshot with pixel measurements is worth more than five paragraphs of description. This system formalizes how to capture, organize, number, and reference visual context so every instruction is unambiguous.

Core Principle

Specificity beats volume. A numbered, annotated screenshot with exact measurements translates directly to code. No interpretation, no back-and-forth.

02 Toolkit

Measurement & Inspection

Chrome DevTools Built-in

Element inspector, computed styles, box model visualization, node screenshots, forced element states, CSS Overview, grid/flexbox overlays, device emulation.

Cmd+Shift+C inspect   Cmd+Shift+M device toolbar
VisBug Free

On-page spacing overlays, alignment guides, font inspection, color picking. Drag to measure distances between any elements.

Measure-it Free

Draw rulers directly on any page. Measure arbitrary distances between any two points in pixels.

PixelParallel Free

Overlay a design mockup on top of a live page at adjustable opacity. Pixel-perfect comparison between design and implementation.

Screenshot & Annotation

CleanShot X $29

Gold standard Mac screenshot tool. Scrolling capture, instant annotation (arrows, numbered badges, blur, measurements), pin as floating window, auto-save to folder.

macOS Screenshot + Preview Built-in

Native capture with Cmd+Shift+4 then annotate in Preview with markup tools. Slower than CleanShot but zero cost.

Cmd+Shift+3 full   Cmd+Shift+4 area   Cmd+Shift+5 menu

Composition & Organization

Figma Free tier

Infinite canvas for composing master boards. Drag in screenshots, add numbered labels, draw arrows, group sections. Export whole frame as single PNG.

Apple Freeform Built-in

Already on Mac, iPad, and iPhone. Infinite canvas, paste screenshots, add text annotations. Less precise than Figma but zero setup.

Accessibility & Color

Chrome DevTools — Rendering & Lighthouse Built-in

Rendering tab: emulate vision deficiencies (protanopia, deuteranopia, tritanopia, achromatopsia). Color picker: shows WCAG contrast ratio for any text. Lighthouse: full accessibility audit with score. CSS Overview: color inventory of every color in use on the page.

03 Master Board Anatomy

A single canvas containing everything needed for a feature or fix session. Every section is numbered for unambiguous reference during the conversation.

#0
Overview / Goal
One sentence: what we're building or fixing
#1
Current State
Screenshot of what exists now
#2
Target State
Mockup, sketch, or annotated desired outcome
#3
Detail A
Zoomed VisBug/DevTools capture with px values
#4
Detail B
Mobile variant, alternate breakpoint, or edge case
#5 — #N
Additional Details
States, edge cases, responsive breakpoints
Notes
Constraints & Exceptions
Rules, things to skip, relationships between items

04 State Documentation

Apple engineers document every UI state, not just the happy path. Use DevTools to force element states: right-click element in inspector → Force state → select :hover, :active, :focus, :focus-visible.

#StateHow to Capture
1DefaultNormal page load
2HoverForce :hover in DevTools
3Active / PressedForce :active
4FocusedForce :focus-visible or Tab to element
5LoadingThrottle network in DevTools, capture mid-load
6EmptyClear data source or mock empty response
7ErrorBlock network request or mock error
8DisabledSet attribute in Elements panel
9OverflowInject long text via Elements panel
10Dark ModeToggle in DevTools Rendering → prefers-color-scheme

05 Responsive Breakpoints

Use the DevTools device toolbar (Cmd+Shift+M) to capture at each critical width. Label screenshots with the viewport width.

LabelWidthDevice
#A375pxiPhone SE / mini
#B390pxiPhone standard
#C768pxiPad portrait
#D1024pxSmall laptop / iPad landscape
#E1440pxStandard desktop
#F1920pxExternal monitor

06 Capture Workflow

Follow these steps every time you prepare a visual brief for a Claude Code session.

  1. Identify
    Define what needs fixing or building. Write a one-sentence goal for section #0 of your board.
  2. Capture Current State
    Screenshot the existing UI. Use CleanShot or Cmd+Shift+4. Save to ~/briefs/project/feature/raw/.
    CleanShot X • macOS Screenshot
  3. Inspect & Measure
    Open DevTools, inspect the problem elements. Capture computed values, box model, spacing. Use VisBug for on-page measurement overlays.
    Chrome DevTools • VisBug • Measure-it
  4. Document States
    Force hover, focus, active, disabled states in DevTools. Capture each one. Test error and empty states.
    DevTools → Force State
  5. Capture Breakpoints
    Toggle device toolbar. Capture at 2-3 key viewport widths that matter for this feature.
    DevTools → Device Toolbar (Cmd+Shift+M)
  6. Compose the Board
    Drag all captures into a single Figma frame (or Freeform canvas). Arrange in the master board layout. Number every section.
    Figma • Apple Freeform
  7. Annotate
    Add arrows between related items, measurement labels, before/after pairs, and a notes section with constraints and exceptions.
    Figma annotations • CleanShot markup
  8. Export
    Export the full frame as a single PNG. Save to ~/briefs/project/feature/board.png.
  9. Brief Claude
    Start the session: "Read ~/briefs/project/feature/board.png — work items #1 through #6 in order."

07 Folder Structure

~/briefs/ ├── vaporforge/ │ ├── prompt-width-fix/ │ │ ├── board.png ← exported master board │ │ └── raw/ ← individual captures │ │ ├── 01-current-desktop.png │ │ ├── 02-target-desktop.png │ │ ├── 03-detail-spacing.png │ │ ├── 04-mobile-375.png │ │ └── 05-devtools-computed.png │ └── session-tabs-redesign/ │ ├── board.png │ └── raw/ ├── clarity/ │ └── coach-ui-update/ │ └── ... └── wp-dispatch/ └── ...

Each project gets a folder. Each feature or fix gets a subfolder with a board.png and a raw/ directory for the individual captures before composition.

08 Reference Language

Use these phrases during a session to reference your board. Numbered items create a shared, precise vocabulary.

Start a session
"Read ~/briefs/vaporforge/tabs/board.png. Work #1 through #5 in order."
Reference a target
"#4 spacing should match #2, not #1."
Skip an item
"Skip #5, that's a separate session."
Add a constraint
"New rule for #3: minimum 44px touch target."
Update a capture
"#6 is outdated, read ~/briefs/.../raw/06-v2.png instead."
Compare states
"The hover state in #7 has the wrong shadow. Match #2."

09 Quick Mode

For small fixes where a full master board is overkill, use the 30-second version:

  1. Capture
    Cmd+Shift+4 → select the problem area.
  2. Annotate
    Open in Preview → Markup → add a numbered circle and an arrow pointing to the issue.
  3. Save & Reference
    Save to Desktop. Tell Claude: "Read ~/Desktop/Screenshot.png — the arrow shows where spacing is off, should be 16px."

10 DevTools Cheat Sheet

ActionHow
Inspect elementCmd+Shift+C then click
Device toolbarCmd+Shift+M
Capture node screenshotRight-click element in inspector → "Capture node screenshot"
Capture full pageCmd+Shift+P → type "screenshot" → "Capture full size screenshot"
Force element stateRight-click element → Force state → :hover / :active / :focus
CSS OverviewMore tools → CSS Overview → Capture
Emulate vision deficiencyRendering tab → "Emulate vision deficiencies"
Toggle dark modeRendering tab → prefers-color-scheme: dark
Throttle networkNetwork tab → Throttling dropdown → Slow 3G
View computed stylesElements → Computed tab (shows resolved values + box model)
Grid/Flexbox overlayClick badge next to display: grid or flex in Styles

11 Automation

The /brief skill automates the capture-compose-export pipeline. It uses Puppeteer to capture multi-breakpoint screenshots, assembles them into a self-contained HTML board, and exports the board as a single PNG.

Commands

CommandAction
/brief [project] [feature] [url]Full pipeline: init + capture + compose + export
/brief:init [project] [feature]Create ~/briefs/{project}/{feature}/raw/
/brief:capture [url]Capture screenshots at all breakpoints
/brief:composeGenerate board.html from captures
/brief:exportConvert board.html to board.png

Optional Flags

FlagDescription
--selectorCSS selector to screenshot instead of full page
--cookiesPath to JSON file with cookies to inject
--waitExtra wait time in ms after page load
--darkEmulate prefers-color-scheme: dark
--breakpointsComma-separated labels (e.g., A,C,E)

Example Usage

/brief vaporforge prompt-width-fix https://vaporforge.dev

This runs the full pipeline:

  1. Init
    Creates ~/briefs/vaporforge/prompt-width-fix/raw/
  2. Capture
    Takes 6 screenshots (375px through 1920px) at 2x DPR, saves PNGs and manifest.json to raw/.
  3. Compose
    Reads captures, embeds as base64 data URIs into a dark-themed board.html. Narrow widths paired two-per-row, wide widths full-width.
  4. Export
    Renders board.html at 2400px and exports as board.png.

Output

~/briefs/vaporforge/prompt-width-fix/ ├── board.html ← self-contained master board ├── board.png ← exported PNG for Claude └── raw/ ├── A-375w.png ├── B-390w.png ├── C-768w.png ├── D-1024w.png ├── E-1440w.png ├── F-1920w.png └── manifest.json
When to Use Manual Workflow

Automation captures static page states only. For hover/active/focus states, annotations with measurements, before/after comparisons, or complex interactions, use the manual workflow from Sections 02-06 above.

Configuration

Breakpoints and export settings live in ~/.claude/skills/brief/config.json. Add or remove breakpoints, change DPR, or adjust the pair threshold (default 800px) in one place.