VibeKit — Vibe-Coder-Optimized Library Idea

The Idea

A library/starter kit that implements the patterns from the Vibe Coding series — event bus, routing, idempotent init, typed returns — behind a simple API, with AI tool contracts built in so that Claude Code, Cursor, and other AI tools generate code that uses these patterns by default, without the vibe coder needing to know they exist.

The CTA from the articles: “I’m building a library that makes this the default. Subscribe to get early access / follow the build.”


Validation — Why This Is Real

The problem is proven:

The building blocks already exist in this repo:

Pattern Article Existing lib
Event bus Vibe Coding Part 7 appkit-core — already has mitt
Router + deterministic routing LLM deterministic article backendkit — ComputeRouter + DataRouter
Provider-agnostic AI calls LLM cost article ai-bridge — 8 providers, failover, key rotation
Composable use* API extkit, frontend-framework — use* wrappers
NLP contracts / code reuse darjs + dar-nlp — find/reuse before writing

This is not a greenfield idea. It’s a packaging and API-surface problem on top of existing work.

The distribution is already there:


What Makes It “Vibe-Coder Optimized”

Normal libraries are built for developers who read docs. This one is built for people who describe intent to AI.

Three layers:

Layer 1 — Simple API (what the vibe coder sees)

// install: npm create vibekit-app
import { on, emit, createRoute } from 'vibekit'

// Event bus in one line
on('user:subscribed', ({ email, page }) => unlockBook(page))
emit('user:subscribed', { email: '[email protected]', page: '/book1' })

// Deterministic routing in one line
const route = createRoute({
  'order_lookup':   (ctx) => db.getOrder(ctx.id),
  'date_calc':      (ctx) => addDays(ctx.date, ctx.days),
  '_default':       (ctx) => ai.complete(ctx.query)
})

Layer 2 — AI Tool Contracts (what Claude Code sees)

A VIBEKIT.md file in every project that documents:

This is the CLAUDE.md for the library. AI reads it and generates correct code the first time.

# VibeKit Contract — this project

## Events
- `user:subscribed` — { email, page, timestamp } — fired by subscribe-modal.js
- `book:unlocked` — { bookId, userId } — fired by book-gate.js

## Routes  
- order_lookup → db.getOrder(id)
- _default → ai.complete(query)

## Modules
- SubscribeModal — window.SubscribeModal.show(trigger)
- BookGate — window.BookGate.unlock(bookId)

Layer 3 — Claude Code Skills

Pre-built skills that AI tools can invoke:


What to Build (Phases)

Phase 0 — Validate with existing content (now)

Phase 1 — Core package (vibekit-core)

Phase 2 — VIBEKIT.md generator (vibekit-contracts)

Phase 3 — Claude Code skill pack (vibekit-skills)

Phase 4 — Starter template (create-vibekit-app)


Where It Fits in the Existing Ecosystem

appkit-core (mitt + signals + xstate)
       ↓ wraps
vibekit-core (simple API for vibe coders)
       ↓ introspects
vibekit-contracts (VIBEKIT.md generator + audit)
       ↓ informs
vibekit-skills (Claude Code skills that use VIBEKIT.md)

darjs stays as the power-user framework. vibekit is the on-ramp — simpler, opinionated, for people who describe intent to AI and need the AI to generate correct code.


The CTA for Articles

Short version (end of Vibe Coding articles):

“The patterns in this article work even better when the library handles them automatically. I’m building VibeKit — a starter kit that bakes these patterns in with Claude Code skills so AI generates event-driven code by default. [Follow the build / subscribe for early access]”


Open Questions Before Starting