I build small, sharp TypeScript tools, mostly things that fix a problem I got tired of having. I build them AI-accelerated: agent-ready APIs, an embedded docs assistant, and daily Claude Code / Cursor workflows. I build the tooling, not just use it.
Here's my CV/resume, in your terminal, in a green-screen mainframe UI. It's also one of the projects pinned below.
npx run-cv craigWhat I'm building at @northguild β independent open-source engineering
- gmt β Give Me Temporal! JavaScript's
Dateis a decades-old bug factory: mutable, timezone-naive, and happy to guess what you meant. GMT wraps the Temporal API in string-in / string-out helpers so date handling stops being a source of production incidents. Ships with companion lint packages (gmt-oxlint,gmt-eslint,gmt-biome) that keep humans and AI agents off the legacy footguns. Nx + pnpm monorepo, published as@northguild/gmt. - worktree β Git worktrees are excellent and the raw commands are awkward. This CLI turns branch-off β create β copy
.envβ open editor β clean up later into a few commands with sensible prompts β plus an embedded "Chat with the Docs" AI assistant. Context switching without the stash-and-pray dance. Docs - run-cv β a mainframe-inspired terminal CV viewer built with Node, React, and Ink. Markdown-driven, keyboard-navigable, multi-profile. Landing page
Most of my production work over the last decade lived in organizations I no longer have access to. What's left under my personal account is largely a decade of learning exercises and course demos β I've kept them public because the trail is worth more than a tidy profile. The open-source I own and actively maintain is under @northguild, pinned above.
Also: I read and speak Chinese. Years of parsing a language with no spaces, no tenses, and heavy context-dependence turns out to be decent training for reading unfamiliar codebases.
Portfolio Β· LinkedIn Β· @northguild



