Projects

Things I've built with LLMs: a focus tool you can download, and tools for extending Claude.

Product

Focus Guard

A Chrome extension that keeps you on task by looking at what's on your screen.

Set a goal and a timer. Every few seconds Focus Guard asks a vision AI model whether the page you're on serves that goal, and if you stay off task, it blocks the page and shows you why. Unlike a blocklist, it can tell a coding tutorial on YouTube from a music video.

  • Judges what's on the page, not just the URL: a screenshot, the title and your goal go to a vision model every 5 seconds.
  • Tolerates brief detours: a page is blocked only after 15 seconds judged off task, with a one-click Resume.
  • Bring your own key: works with OpenAI, OpenRouter or a model you host yourself. Nothing is sent to me.
Download for Chrome ↓ Free · v1.1.1 · needs your own OpenAI or OpenRouter API key
  1. Unzip the download.
  2. Open chrome://extensions and turn on Developer mode.
  3. Click Load unpacked and select the focus-guard folder.
  4. Paste your API key on the Settings page that opens.
JavaScriptChrome Extensions (Manifest V3)Vision LLMsOpenAI-compatible APIs
EVENT SAT · 8 PM Claude 8 tools 6 tools

Tools

MCP Servers: Google Maps + Ticketmaster

Give Claude live maps, places, directions and event search.

Two Python MCP servers built on the official SDK that let Claude call Google Maps Platform and the Ticketmaster Discovery API. Together they answer questions like "what's on near me this weekend, and how long to get there?"

  • 14 tools: 8 for Google Maps (Places, Geocoding, Directions, Distance Matrix, Geolocation) and 6 for Ticketmaster events, attractions and venues.
  • Finds your current location through macOS CoreLocation, falling back to IP geolocation, then a configured default.
  • Trims event payloads to what a model needs: venue and coordinates, performers, genre, sales window, price range.
PythonModel Context ProtocolFastMCPhttpxGoogle Maps PlatformTicketmaster API
query() step 1 client step 2 @tool step 3 hooks step 4 subagents step 5 $ python step5_subagent.py ~/repo

Teaching

Repo Inspector: Claude Agent SDK Starter

Learn the Claude Agent SDK in five small Python scripts.

A step-by-step tutorial: each standalone script points an agent at a local code folder and adds one SDK concept. A shared renderer prints every tool call and result, so you can watch the agent loop as it runs.

  • Five steps: query(), a multi-turn ClaudeSDKClient REPL, a custom @tool on an in-process MCP server, a PostToolUse audit hook, and a subagent.
  • Agents stay read-only (Read, Glob, Grep), plus the custom save_finding tool and subagent delegation where those steps add them.
  • Checked against claude-agent-sdk 0.2.174.
PythonClaude Agent SDKMCPasyncio