For AI agents
Build with skeehn from an AI agent
skeehn is built to be driven by coding agents — Claude Code, Cursor, v0. An agent can discover the catalog, install components, compose whole interfaces from blocks, theme them to a brand, and extend the foundation — producing bespoke UI, not generic output.
Recommended
MCP server
The @skeehn/mcp-server exposes the catalog and tools over the Model Context Protocol. Add it to Claude Code or Cursor:
{
"mcpServers": {
"skeehn": {
"command": "npx",
"args": ["-y", "@skeehn/mcp-server"]
}
}
}# Claude Code — add the skeehn MCP server
claude mcp add skeehn -- npx -y @skeehn/mcp-server
# …or drop the JSON above into .mcp.json (project) / ~/.claude.json (global)It serves resources (component schema, theme registry, prop contracts, agent docs, examples, patterns) and tools: list_components, install_component, generate_ui_code, validate_props, swap_theme, add_to_project — so an agent can go from “build a voice-agent console with skeehn” to installed, composed, and themed code.
Distribution
Install from the registry
Every component is a shadcn-compatible registry item with inline file content, so it installs into any project — the user owns the code:
# Any component, copied into the user's project (they own the code):
npx shadcn@latest add https://ui.skeehn.com/r/chat-bubble.json
npx shadcn@latest add https://ui.skeehn.com/r/button.json
# the engine + tokens + default theme:
npx shadcn@latest add https://ui.skeehn.com/r/skeehn-engine.jsonContext
llms.txt
A machine-readable index of the whole library — install paths, the token contract, components, themes, the AI SDK layer, and blocks — lives at ui.skeehn.com/llms.txt. Point an agent at it for grounding.
Compose
AI SDK v5 + blocks
skeehn is a drop-in for the Vercel AI SDK. Render useChat messages directly, or drop in a whole console from @skeehn/react/blocks:
import { useChat } from '@ai-sdk/react';
import { Conversation } from '@skeehn/react/ai';
import { ChatConsole } from '@skeehn/react/blocks';
import '@skeehn/core/styles.css';
export function Chat() {
const { messages, sendMessage, status } = useChat();
// drop-in: render AI SDK messages, or a whole console
return <ChatConsole messages={messages} busy={status === 'streaming'}
onSend={(text) => sendMessage({ text })} />;
}See AI SDK, Blocks, and the brand theme generator (derive a full theme from one color — perfect for “make it match our brand”).