Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

nitpin is the UI-refinement loop for macOSsweat the details, ship the delight.

It’s the tool for nailing the small things that separate a generic, just-functional interface from a delightful one: the misalignments, the rough edges, the half-second of jank, the final touches. In an era where the first cut of a UI is increasingly machine-generated, nitpin is the layer that makes it feel crafted. You pin the nits; your coding agent refines them.

How it works

You drive your own app — a browser, the iOS Simulator, an Android emulator, anything. nitpin only captures: a global hotkey freezes a window’s pixels, and you drop pins and regions with notes on the still. Each capture is saved as an issue in a per-project store. Your coding agent then reads those issues over MCP — looking at the actual screenshot, locating the responsible code, fixing it, and recording what changed.

┌─────────────┐   capture (⇧⌘6 / ⇧⌘7)   ┌──────────────┐   /nitpin    ┌──────────────┐
│   Your app  │ ──────────────────────▶ │  nitpin app  │ ───────────▶ │ Coding agent │
│ (browser…)  │   pin / region + note   │  (menu bar)  │   over MCP   │  fixes code  │
└─────────────┘                         └──────────────┘              └──────────────┘

What you capture

  • Issue — one capture (a frozen screenshot). It has a number (#3), an auto-generated title, and an optional top-level body note.
  • Sub-issue — one problem on that capture: a pin on a precise spot, a region around an area, or a note about the whole frame. Sub-issues are numbered within the issue — the badges you see on the annotated image.
  • Each sub-issue has a status — unresolved → fixed / won’t fix — and the issue’s state rolls up from its sub-issues.

You never manage any of this by hand. You drop pins and type notes; nitpin writes the store for you.

The promises

  • Capture-only. nitpin reads pixels and window metadata. It never clicks, types into, or navigates your apps — that’s the whole product promise. Even in Live mode, you drive the page; nitpin only freezes it.
  • Local-first. Your issues are plain files — YAML and PNGs — in your repo or on your machine. Screenshots, notes, and code never leave your device.
  • Your words are immutable. Once captured, an issue’s body and notes are never edited. Agents speak through comments and resolve notes, kept separate from what you wrote.

Requirements

  • macOS 26 (Tahoe) or later.
  • A coding agent with MCP support — Claude Code, Codex, OpenCode, or Pi.
  • Screen Recording permission, granted on first run — nitpin needs it to read window pixels (and only reads them when you take a shot; it never records continuously).

Where to go next