Skip to content
~/skunk $ ls ./projects

PROJECTS

Things I'm building and breaking

~/skunk $ cat dream-home-pipeline.md

Dream Home Pipeline

The real-estate portal shows you the photos. I built the rest.

GOAL

Find cheap NSW rural land that already carries valuable native bush — the kind that earns biodiversity-credit income — and screen it systematically over a multi-year search.

NEEDS

A 30-second automated screen of any listing against 31+ government biodiversity and hazard layers, a scoring rubric that finds income-ready blocks — enough of the right native vegetation, in a catchment with real demand — and a per-property credit-revenue projection, so every candidate gets an auditable dossier instead of a gut feel.

PURPOSE

Biodiversity credit markets are opaque and broker-mediated, and the "buy cheap bush → earn credit income" thesis has no public tooling. This turns a years-long search into a versioned shortlist and flags the dealbreakers (title, slope, native title) before a wasted site visit.

Python4× MCP servers (FastMCP)NSW SEED/cadastre dataBAM scoring

STATUS Active (personal)

Private — locations & financials generalized.

Show more →
~/skunk $ cat imagen-mcp.md

Imagen 4 MCP Server

Imagen 4 + Claude, actually talking to each other.

GOAL

Expose Google's Imagen 4 and Veo video generation directly inside Claude as a Claude Code plugin.

NEEDS

Stop copy-pasting between a chat and a web UI — "generate this" and it happens, in-session.

PURPOSE

Ship production AI tooling at the bleeding edge, native to the Claude Code plugin system.

TypeScriptNodeGoogle Imagen/Gemini APIMCP

STATUS Active (v2)

Private repo — publishable.

Show more →
~/skunk $ cat casevault.md

CaseVault

Built for people whose adversary has server access.

GOAL

A workers-comp case-management app where the server is blind by design — zero-knowledge encryption, client-held keys only.

NEEDS

Claimants need court-ready document handling the insurer can't covertly read; subpoena the database and you get ciphertext. Cross-platform (iOS, Android, web) with ML document classification.

PURPOSE

Show real security thinking under an adversarial constraint, not tutorial CRUD.

SvelteKitCapacitor (iOS/Android)XChaCha20-Poly1305Drizzle/PostgresONNX ML

STATUS Pre-beta

Not yet public.

Show more →
~/skunk $ cat spinners.md

Spinners

Spent three months getting Beyblade physics right.

GOAL

A LÖVE2D roguelike with real Box2D physics, built to a standard most hobby games never reach.

NEEDS

60+ modules, 700+ automated tests, and a headless balance simulator that runs thousands of rounds to tune the spin physics — because the wrong physics bothered me.

PURPOSE

The craft card: proof the engineering rigour is real, even on a weekend project.

Lua 5.1 / LÖVE 11.5Box2DBusted (700+ tests)

STATUS Active (hobby)

Private repo.

Show more →
~/skunk $ cat skunk-systems-site.md

This Site — skunk.systems

You're looking at the portfolio piece.

GOAL

Ship a fast, distinctive site that is itself the proof of work — designed, built and tuned end-to-end, not a template.

NEEDS

A published, reusable design system, light/dark theming, a terminal identity, a markdown blog, and genuine performance — mobile Lighthouse 90, CLS 0, auto-optimized images, and server-rendered content for SEO + AI discovery.

PURPOSE

Best-practice "vibe coding" in the open: Next.js App Router, a token-driven design system, agentic-discovery SEO. The medium is the message — if my own site is sloppy, why trust me with yours?

Next.js 14TypeScriptTailwindnext/font + sharpDesignSync

STATUS Live (you're on it)

Show more →