Bryllen — design studio on an infinite canvas with live React code
npx claudepluginhub madebynoam/bryllenBryllen — design studio on an infinite canvas with live React code
Work in progress. Bryllen is under active development. Things will break and change.
A design studio on an infinite canvas where every design is live React code. Describe what you want, the agent builds it on the canvas, annotate elements to iterate, and ship the final code to a production repo.
Current version: 0.0.16
In your terminal, add the bryllen marketplace:
claude plugin marketplace add madebynoam/bryllen
Then open Claude Code and install the plugin:
/plugin install bryllen@bryllen
Restart your Claude Code session for the plugin to activate.
Open Claude Code in any directory and run:
/bryllen-new my-component
This will:
index.html, vite.config.ts, App.tsx, etc.)Tell the agent what to build. It generates a React component with all meaningful variations and states laid out as a matrix on the canvas:
Click "Annotate" on the canvas, select an element, describe the change, and click "Apply". The agent receives the annotation automatically and updates the component live.
For rapid annotation sessions, run /bryllen-watch to enter watch mode — the agent processes every annotation as it arrives. Send any message to exit back to chat.
Run /bryllen-iterate to create a new version (page) while keeping previous iterations frozen.
Run /bryllen-ship to PR the finished component to a production repo.
Run /bryllen-update inside a Claude Code session to update both the npm package and plugin.
| Skill | Description |
|---|---|
/bryllen-new <name> | Create a new design project |
/bryllen-design | Start the dev server (chat mode) |
/bryllen-watch | Enter watch mode for rapid annotations |
/bryllen-iterate | Create a new design iteration |
/bryllen-share | Build and deploy to GitHub Pages for sharing |
/bryllen-ship | Ship component to a production repo |
/bryllen-update | Update bryllen to latest version |
npx bryllen new # Scaffold project files and install dependencies
npx bryllen design # Start Vite dev server + annotation HTTP server
npx bryllen update # Update bryllen npm package to latest
Each design project lives in src/projects/<name>/:
src/projects/
my-component/
MyComponent.tsx # The React component
manifest.ts # Pages and frames (auto-discovered by the canvas)
The manifest declares which component variations to render:
import { MyComponent } from './MyComponent'
import type { ProjectManifest } from 'bryllen/runtime'
const manifest: ProjectManifest = {
project: 'my-component',
pages: [
{
name: 'V1 — Initial',
grid: { columns: 3, columnWidth: 300, rowHeight: 160, gap: 40 },
frames: [
{ id: 'my-component-short-default', title: 'MyComponent / Short / Default', component: MyComponent, props: { text: 'Click' } },
{ id: 'my-component-short-hover', title: 'MyComponent / Short / Hover', component: MyComponent, props: { text: 'Click', state: 'hover' } },
],
},
],
}
export default manifest
bryllen new, bryllen design)git clone https://github.com/madebynoam/bryllen.git
cd bryllen
npm install
src/runtime/, src/cli/, src/vite-plugin/npm test to verify the export contractbryllen-ui — run npx bryllen design from the repo root, changes reflect via HMRsrc/cli/migrations/ and a template update in src/cli/templates.jsPlugin changes (skills, MCP, CLAUDE.md) can't be tested until installed. To test locally without pushing:
/plugin-local in the bryllen repo — swaps the marketplace to the local plugin/ directoryclaude plugin update bryllen@bryllen then restart the sessionclaude plugin update bryllen@bryllen → restart → test again/plugin-release in the bryllen repo — swaps back to GitHubThe consumer folder always uses bryllen@bryllen and doesn't need to know whether the source is local or GitHub.