Skip to main content

The lab

Tools I built because I needed them. Some are published, some just run quietly in the background of everything else here.

claude-hooks

Guardrails for AI-assisted development.

Twenty-four Go binaries that sit between an AI coding agent and a repository: blocking destructive commands, enforcing tests on commit, validating structure, and generating typed hooks from backend functions. Uses tree-sitter to analyze the actual syntax tree rather than pattern-matching source text.

~56,700 lines of Go · in daily use across every project here

oxlint-plugin-convex

Nine lint rules for Convex backends.

Catches the Convex mistakes that only show up under load: filtering inside a query, collecting an unbounded table. Deliberately built without type information so it runs at native linter speed on every keystroke, with a per-rule ratchet that blocks new violations while leaving existing ones as warnings.

Published on npm as @milehighideas/oxlint-plugin-convex

PDR Telemetry

Reading the data your car records but never shows you.

Cadillac and Chevrolet Performance Data Recorder video carries an undocumented telemetry stream no consumer tool exposes. This decodes it and exports it as CSV: GPS, per-wheel speed, three-axis acceleration, rpm, throttle, and tyre temperatures at roughly 80Hz. A fallback path reads the burned-in lap timer optically.

Python · reverse-engineered from the container format

sift

A tidier Desktop, without the anxiety.

A macOS command-line tool that ages files through a two-stage review-then-delete pipeline instead of deleting anything outright, writing countdown tags into Finder so the deadline is visible where the files are. Zero third-party dependencies.

4,520 lines of Swift · real test suite · launchd-scheduled

deploy-tool

Build locally, deploy prebuilt, version last.

A Go CLI that runs deploys as a fixed phase pipeline, deferring the release commit and tag until the very end so a failed build can never leave a phantom version bump behind. Used across the client applications here.

Go · internal tooling

  • Go
  • Vercel

mobile-build-system

Repeatable Expo builds across projects.

The EAS build and submit pipeline shared by the React Native apps here, so a release to TestFlight or the Play Store is the same set of steps whichever project it is rather than something rediscovered each time.

Expo / EAS · internal tooling

  • Expo
  • EAS
  • React Native

convex-worktree-isolation

One backend per checkout, so agents stop colliding.

Running several coding agents against parallel checkouts of a repository means they all share one development backend and overwrite each other's data. This gives every checkout its own seeded deployment, packaged as an installable skill with a fake-backend test harness.

Node · published as a reusable pattern

Let's connect

Whether it's a cloud architecture problem, a platform that needs building, or something in between, I'm glad to talk it through.

Résumé

Parker, Colorado

© 2026 Brandon Shutter