Projects

The small tools I'm building.

Much of this orbits fabric.shivan.dev, a running set of notes on how I work with AI and the ecosystem of tools I build to sharpen that workflow. Fabric is also the stack I'm assembling piece by piece — tasker, ellipse, bureau, probe, identity. Thin, well-typed primitives over MCP, with the LLM doing the smart part.

Code is on github.com/cishiv. Anything not listed here is either older, archived, or not meant for daylight yet.

Site and CMS

statix

Markdown directory in, navigable site out. Preact + Vite + TypeScript. Folder structure becomes nav structure. Wikilinks resolve at build time. There's a knowledge graph view and a localhost-only CMS for editing without leaving the browser. This is what powers fabric.shivan.dev.

MVP Templates

The scaffolds I reach for when starting something new. Auth, billing, database, file storage, LLM access, all wired on day one. Nothing to discover.

kitchen-sink-ts

Single-bundle TypeScript template. TanStack Start (SSR) on Bun. React 19, Tailwind 4, shadcn/ui. BetterAuth, Drizzle, Polar, Cloudflare R2, OpenRouter via Vercel AI SDK. Use this when one deployable is enough.

kitchen-sink-twotier

Two-tier variant. Bun + Hono REST API on the server, Vite + React SPA on the client, Zod-typed contracts shared via a workspace package. Use this when you need separate deploy targets, multiple clients on one API, or non-trivial server-side processing.

Agent Tooling

skills

My personal Claude skills, plus skill-sync, a small Bun CLI for installing them into ~/.claude/skills. The first proper skill in there is interview-me, which interviews you with batched questions before producing a complex deliverable so the LLM doesn't quietly fill in blanks you should have filled yourself.

substrate

Terminal note-taking app in Go. Bubble Tea TUI. Tree nav, wikilink autocomplete, follow-link-creates-note, graph view. Notes are plain markdown on disk. A tool that treats your notes as a substrate instead of a CSV waiting to be exported.

Personal Tools

vaultmirror

An Obsidian plugin that copies files between two local vaults. I use it to move things out of my private vault into one published via Obsidian Publish. Built for me; works for me.

permissions

A tiny Zig CLI for octal permissions. Saves the time you'd otherwise spend parsing stat output. Originally a shell script I wrote in 2019, rewritten because I wanted an excuse to use Zig.