Skip to main content
All Projects
skills.vishalvoid.com
Open SourceDeveloper Tool / Pattern LibraryActive

Open Source · Pattern Library

skills.vishalvoid.com

A curated library of production-ready engineering patterns — installable in one command. Browse 70+ patterns from React, Next.js, TypeScript, Anthropic, OpenAI, and more, or install my own handcrafted patterns directly into your project.

Product

skills

Role

Creator & Maintainer

Timeline

2025 – Present

Patterns

70+

By the numbers

70+

Curated patterns

1

Command to install

My

Production patterns

100%

Open source

Quick Start

Up and running in one command

Install once as a global package, run from any project directory. Santra indexes your repo automatically on first launch.

Terminal
$curl -fsSL https://skills.vishalvoid.com/install | bash
$# or install a specific pattern:
$curl -fsSL https://skills.vishalvoid.com/install react-optimistic-updates | bash

The Problem

Engineering knowledge that lives in your head, not in your repo

Experienced developers accumulate a toolkit of battle-tested patterns — how to handle optimistic updates correctly, how to wire Zod validation across a stack, how to structure a production Next.js app. But this knowledge stays tribal: it lives in your memory, in old repos, or in bookmarks nobody visits. Every new project starts from scratch.

Repeating the same setup ritual

Whether it's a TanStack Query mutation setup, a rate-limited API route, or a Zod-validated form — the same patterns get reimplemented project after project, slightly differently each time.

Documentation scattered across the internet

The React docs, TanStack Query docs, Anthropic docs, and Next.js docs all live in separate places. There is no curated, cross-referenced library that links related concepts.

No way to share personal architecture decisions

When you've spent a week finding the right way to compose something — a multi-provider AI client, a resilient server action pattern — there's no structured format to preserve and share that decision.

Copy-paste from old projects breeds drift

Pulling code from an 18-month-old project means pulling its outdated dependencies, pre-v5 TanStack Query patterns, and forgotten edge cases — then spending hours modernizing it.

The Solution

A personal pattern library you can install in seconds.

skills.vishalvoid.com is two things in one: a curated directory of 70+ external engineering skills linking directly to official documentation, and a set of my own handcrafted, production-tested patterns that install directly into your project with a single curl command.

One-Command Install

Run `curl -fsSL https://skills.vishalvoid.com/install | bash` to install any of my patterns directly into your project. No global tool, no CLI to install first — the bootstrap script handles detection and setup.

My Patterns — Documented & Versioned

Each of my patterns (React Optimistic Updates, Zod API Validation, Next.js Product Stack) includes a full problem statement, the exact hook or utility code, usage examples, and a list of related patterns.

Skills Directory — 70+ Curated Links

A searchable directory of skills from Anthropic, React, Next.js, TypeScript, Prisma, Drizzle, TanStack, and more — each tagged by source, difficulty, and topic, linking directly to official docs.

Cross-Referenced Patterns

Every pattern lists related patterns. React Optimistic Updates links to the Next.js Product Stack and Zod API Validation — so you can trace the full architecture, not just individual pieces.

Dark / Light Mode

The site respects system preference and allows manual toggle with zero flash on load — implemented with a synchronous inline script that sets the theme class before React hydrates.

Statically Generated, Zero Dependencies

Fully static Next.js site with no database, no auth, no CMS. The install script is a raw Bash file served from the same domain. Fast to load, simple to maintain.

Technology Stack

Built with the right tools

Next.jsNext.jsFramework
TypeScriptTypeScriptLanguage
Tailwind CSSTailwind CSSStyling
VercelVercelDeployment
BashBashInstall Script

Architecture

Static Site (Next.js App Router)

PagesNext.js App Router — app/
ComponentsReact + Tailwind CSS
Pattern DataTypeScript — data/skills.ts
Directory DataTypeScript — data/external-skills.ts
Install ScriptBash — app/install/route.ts
DeploymentVercel (edge)
skills.vishalvoid.com/
├── app/
│   ├── page.tsx              # Home — my patterns + directory preview
│   ├── [slug]/page.tsx       # Individual pattern detail
│   ├── skills/page.tsx       # Full directory listing
│   ├── skills/[slug]/page.tsx # External skill detail
│   └── install/route.ts      # Serves the Bash install script
├── components/
│   ├── SkillCard.tsx          # My pattern cards
│   ├── ExternalSkillCard.tsx  # Directory cards
│   └── InstallCommand.tsx     # Copy-to-clipboard install strip
└── data/
    ├── skills.ts              # My patterns (typed)
    └── external-skills.ts     # 70+ external skill entries (typed)

Development Journey

How it was built

Phase 01

The frustration behind it

The idea started with a recurring feeling: I kept solving the same problems. Optimistic UI updates in TanStack Query v5, Zod-validated API routes in Next.js, AI provider routing — each time I'd reconstruct the same solution from scratch because the last version was buried in a different project. The goal was a place to preserve these solutions in a shareable, installable form.

Phase 02

Designing the pattern format

The key constraint was that each pattern had to be more than a code snippet — it needed a problem statement, core code with explanation, a usage example, and links to related patterns. This structure came from thinking about how I'd actually want to rediscover a pattern six months later, or how a teammate would read it cold.

Phase 03

The install mechanism

The install script was the most interesting engineering problem. Rather than building a CLI, I went with a curl-piped Bash script — zero prerequisites. The script detects the project's package manager (npm, pnpm, yarn, bun), identifies missing dependencies, and copies the pattern file to the correct location. Simple, auditable, works everywhere.

Phase 04

Building the skills directory

The external skills directory grew from wanting a single place to link the documentation I actually reference. I tagged each skill by source (Anthropic, React, Next.js, etc.) and difficulty (beginner / intermediate / advanced), making it navigable without a search engine. The directory is statically typed — each skill entry has a defined schema in TypeScript.

Phase 05

The dark-mode-first UI

The UI was intentionally constrained: monospace fonts, tight spacing, muted opacity hierarchies, no color except functional accents. The theme toggle uses a synchronous inline script in the document head — the same approach React docs use — so there is never a flash of the wrong theme on first load, even on a slow connection.

Engineering Challenges

Hard problems, real solutions

Zero-flash theme switching

Problem

Next.js App Router hydrates asynchronously. A naive theme implementation using a React state hook will always flash the wrong theme on first load — the HTML renders without the theme class, React runs, and the class is applied too late.

Solution

Injected a synchronous inline `<script>` in the document `<head>` (before body render) that reads localStorage and sets the dark class on `<html>` immediately. This runs before paint, eliminating the flash entirely.

Package manager detection in the install script

Problem

Developers use npm, pnpm, yarn, and bun — and each has different lockfile names, install commands, and workspace conventions. A hardcoded install command would break for most users.

Solution

The Bash install script walks up from the current directory looking for lockfiles (pnpm-lock.yaml, yarn.lock, bun.lockb, package-lock.json) to infer the package manager. Falls back to npm if none found.

Keeping the directory maintainable as it grows

Problem

At 70+ external skills, a flat array becomes hard to navigate and update. Without structure, entries drift out of date and categories become inconsistent.

Solution

The directory is defined as a statically typed TypeScript array with a strict ExternalSkill type — source, difficulty, tags, and sourceUrl are all required. This means a missing field is a compile error, not a runtime surprise.

Quality & Testing

Static site — correctness is enforced by TypeScript.

As a static Next.js site with no backend, the primary quality mechanism is TypeScript's strict mode. Every skill entry, pattern definition, and page component is fully typed. The install script is tested manually across macOS (zsh), Linux (bash), and common CI environments.

MethodEndpoint / FunctionTestsPassing
GET/00
GET/skills00
GET/skills/[slug]00
GET/[slug]00
GET/install00
TypeScript (strict mode)100%
Pattern Data Schemas100%
Install Script (manual)95%
Static Generation100%
Overall Site98%

Project Roadmap

What's done, what's next

v1.0 · Stable

My patterns: React Optimistic Updates
My patterns: Zod API Validation
My patterns: Next.js Product Stack
External skills directory (70+ entries)
One-command Bash install script
Zero-flash dark/light mode
Static generation with Next.js App Router
Full TypeScript strict mode
Sitemap + SEO metadata

Upcoming · In Progress

5+ new patterns (AI, auth, caching)
Pattern version history
Community-submitted patterns (PRs)
Search across all patterns and skills

Future · Planned

Pattern playground (live code preview)
CLI tool: `npx vishalvoid-skills add <pattern>`
Pattern dependency graph
RSS feed for new patterns