Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
douglance avatar

Nib

  • 4 installs
  • 1 repo stars
  • Updated July 21, 2026
  • douglance/nib

Get visual feedback from humans by capturing the screen, annotating screenshots, and asking for confirmation on UI changes.

About

Captures screenshots and annotates them to request visual feedback and verify UI changes via the nib CLI on macOS. A developer uses it to confirm layout, styling, or design while iterating.

  • Capture, look, annotate, and ask workflow
  • Requires the nib CLI on macOS

Nib by the numbers

  • 4 all-time installs (skills.sh)
  • Ranked #1,526 of 1,880 Design & UI/UX skills by installs in the Skillselion catalog
  • Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/douglance/nib --skill nib

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs4
repo stars1
Last updatedJuly 21, 2026
Repositorydouglance/nib

What it does

Get visual feedback from humans by capturing the screen, annotating screenshots, and asking for confirmation on UI changes.

Files

SKILL.mdMarkdownGitHub ↗

Nib — Visual Feedback

You have eyes. Use them. Any time something visual is relevant, capture the screen and look.

When to Use This

Use nib aggressively. If any of these apply, capture and look:

  • You just made a UI change → capture and verify it looks right
  • You're debugging something visual → capture and inspect
  • You need to know where something is on screen → capture and find it
  • You're unsure about layout, spacing, colors, alignment → capture and check
  • The user mentions anything visual → capture immediately
  • You want to show the user what you did → capture and annotate
  • You're about to ask "does this look right?" → capture instead of asking
  • You need coordinates for clicking or positioning → capture and use grid

Don't ask what to capture. Don't ask permission. Just capture and look.

The Loop

1. Find the right window → nib windows --json
2. Capture it → nib capture --app "AppName" -o /tmp/nib_shot.png
3. Look at the screenshot (read the file)
4. Decide what you need feedback on
5. nib feedback /tmp/nib_shot.png -a '[annotations]' -m "question"
6. Parse the human's response
7. Act on it

Step 1: Find the Right Window

Don't just screenshot everything. Find the window you actually care about:

# List all windows with metadata
nib windows --json

# Filter by app name
nib windows --app "Safari" --json

Output gives you app name, title, size, position, and focus state for every window.

Step 2: Capture the Right Thing

# Capture a specific app's window
nib capture --app "Safari" -o /tmp/nib_shot.png

# Capture by window title
nib capture --title "index.html" -o /tmp/nib_shot.png

# Capture the focused window
nib capture --mode window -o /tmp/nib_shot.png

# Capture full screen (fallback)
nib capture -o /tmp/nib_shot.png

Always prefer `--app` or `--title` over full screen. You get just the window you need, no distractions.

Step 3: Look

Read the screenshot file to see what's on screen. Use grid or OCR if you need precision:

# Coordinate grid for positioning
nib grid /tmp/nib_shot.png --spacing 100 -o /tmp/nib_grid.png

# Find text via OCR
nib find-text /tmp/nib_shot.png -s "Submit"

Step 3: Annotate and Ask

Point at the things you want feedback on. Be specific.

nib feedback /tmp/nib_shot.png \
  -a '[{"type":"arrow","from":[300,200],"to":[450,350]},{"type":"text","at":[300,180],"content":"This spacing looks off?"}]' \
  -m "Does the spacing between these elements look right?"

Step 4: Parse Response

Human draws annotations and hits Cmd+Enter. You get back only their annotations:

{"annotations": [{"id": "a1", "type": "arrow", "at": [150, 200, 300, 100], "owner": "human"}]}

Timeout returns {"event": "timeout"} (exit code 0, not an error).

Step 5: Act

Use the human's visual feedback to take action. Then capture again to verify.

Annotation Format

[
  {"type": "arrow", "from": [x, y], "to": [x, y]},
  {"type": "rectangle", "at": [x, y], "size": [w, h]},
  {"type": "text", "at": [x, y], "content": "Label"},
  {"type": "highlight", "at": [x, y], "size": [w, h], "color": "#ffff0080"},
  {"type": "number", "at": [x, y], "value": 1},
  {"type": "ellipse", "center": [x, y], "radius": [rx, ry]},
  {"type": "line", "from": [x, y], "to": [x, y]},
  {"type": "blur", "at": [x, y], "size": [w, h]}
]

All types accept optional "color" (hex). Use blue #3b82f6 for your annotations.

Headless Mode

When you don't need human feedback, just annotate and render:

nib annotation add image.png -t rectangle -x 100 -y 100 -w 200 -H 50 -c "#ff0000"
nib render image.png  # → image.rendered.png

Key Flags

CommandFlagPurpose
capture--appCapture specific app's window
capture--titleCapture window by title substring
capture--mode windowCapture focused window
windows--appFilter window list by app name
windows--jsonMachine-readable window list
feedback-aJSON annotations array
feedback-mMessage/question as toast
feedback-tTimeout in seconds (default 60)
find-text-sSearch string
find-text--highlight --colorAuto-highlight matches (NOT -c)
grid--spacingGrid cell size in pixels
grid--regionZoom to region (x1,y1,x2,y2)

See full command reference for all commands and options.

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.