Projects
Every project on this site started the same way: as a Markdown file that got increasingly detailed until there was no choice but to build the thing. The spec came first. The code came second. The name "menagerie" is only half-ironic. This is a diverse collection spanning AI research, developer tooling, game development, and system automation, but a common thread runs through all of it: documentation-first development and a belief that clear writing produces better software.
The projects are grouped below by domain. Each one has its own overview page with full details.
AI and LLM Research
These projects explore how AI systems interact with structured content, from web discoverability to retrieval quality to context window efficiency.
LlmsTxtKit
A C#/.NET library for the llms.txt standard: the full pipeline from parsing to context generation, plus an MCP server for AI agent integration. This is also the project that tripped over the llms.txt Access Paradox and spawned the research initiative.
Language: C#/.NET | → LlmsTxtKit Overview
DocStratum
An llms.txt validator. Think ESLint, but for a standard defined by a blog post rather than a formal grammar. Run it against real-world llms.txt files to check spec compliance.
Language: C#/.NET | → DocStratum Overview
FractalRecall
A research project exploring metadata-aware embeddings. The core thesis: metadata isn't something you attach to vectors after creation. It's structural information that should shape how data gets vectorized in the first place.
Language: C#/.NET | → FractalRecall Overview
Haiku Protocol
A Controlled Natural Language compression system that transforms verbose technical documentation into dense, machine-optimized strings for LLM context windows. Semantic minification for prose.
Language: Python | → Haiku Protocol Overview
Technical Writing and AI Tooling
Tools built at the intersection of technical writing and AI, designed for writers, documentation teams, and the workflows they actually use.
Lexichord
An AI orchestration tool built for technical writers. Not a chatbot with a style guide bolted on, but a coordination layer that understands terminology databases, audience-specific complexity rules, and document-type-specific formatting.
Language: C#/.NET | → Lexichord Overview
Sidekick
A JetBrains Rider plugin that integrates local AI capabilities into the IDE: streaming chat, code generators, an eight-specialist agent system, and visual enhancements. Zero cloud. Zero data exfiltration.
Language: Kotlin | → Sidekick Overview
Developer Tooling
Utilities and frameworks that make development workflows more reliable, visible, or tested.
lint-my-lines
An ESLint plugin with 24 rules for enforcing quality standards on code comments. Because if your code is linted, your comments should be too.
Language: JavaScript/TypeScript | → lint-my-lines Overview
Error Glossary
A web application providing friendly, human-readable explanations for common and cryptic programming error messages. Explains why errors happen, not just how to fix them.
Language: JavaScript/CSS | → Error Glossary Overview
git-chronoscope
A command-line tool and web GUI that generates time-lapse visualizations of how a Git repository's codebase evolves over commits. A visual history of your project.
Language: Python/JavaScript | → git-chronoscope Overview
shell-spec
A lightweight testing framework for shell scripts, written entirely in shell script. xUnit/Jest-style testing patterns for Bash (automatic discovery, assertions, mocking, coverage) with no external runtime.
Language: Bash | → shell-spec Overview
Circus
A macOS automation framework that transforms a fresh machine into a fully configured, security-hardened development environment. Role-based setup, 40+ management commands, and three privacy profiles.
Language: Bash | → Circus Overview
Games and Creative Coding
Not everything needs to be about AI. Sometimes you need to write code that stabs a goblin.
Rune & Rust
A text-based dungeon crawler written in C#. No rendering engine, no sprite sheets, just state machines, narrative branching, and pattern matching expressions. A design pattern playground disguised as a game.
Language: C# | → Rune & Rust Overview
Camelot Combat Reporter
A combat analysis tool for Dark Age of Camelot. Parses chat logs and generates detailed performance breakdowns: damage, healing, crowd control, death analysis, and group composition metrics.
Language: C#/.NET (Avalonia) | → Camelot Combat Reporter Overview
Chronicle
A CLI tool that treats worldbuilding lore like a software codebase. Git-based canon management, semantic validation via FractalRecall, and LLM-powered contradiction detection for fiction writers and game designers.
Language: C#/.NET | → Chronicle Overview
How They Connect
These projects weren't planned as a coherent portfolio. They emerged from real problems encountered in sequence, each one revealing the next. Lexichord needed better retrieval, which led to FractalRecall. LlmsTxtKit needed validation, which led to DocStratum. Circus needed testing, which led to shell-spec. The dungeon crawler needed combat analysis patterns, which turned out to look a lot like log parsing for Camelot Combat Reporter.
The common threads are documentation-driven development, a preference for C#/.NET (with pragmatic exceptions), and the conviction that the tools worth building are the ones you couldn't find when you needed them.