Status: Draft v0.1 Β· 2026-04-24 Scope: Product definition, scenarios, non-goals, high-level modules, and positioning against both Anthropic's Claude Design and the existing open-source alternative (Open CoDesign).
Other docs:
- Architecture β
architecture.md - Skills protocol β
skills-protocol.md - Agent adapters β
agent-adapters.md - Modes β
modes.md - References & credits β
references.md - Roadmap β
roadmap.md
A web app that turns natural-language briefs into editable, previewable design artifacts (prototypes, decks, templates, design systems) by orchestrating the code agent already installed on the user's machine.
| # | Bet | Anthropic Claude Design | Open CoDesign | OD |
|---|---|---|---|---|
| 1 | Where the product runs | claude.ai only | Local Electron app | Next.js web app + local daemon + desktop loop β pnpm tools-dev, Vercel web deploy |
| 2 | Who owns the agent loop | Anthropic, closed | Open CoDesign itself, via pi-ai |
The user's existing code agent CLI (Claude Code, Codex, Devin for Terminal, Cursor Agent, Gemini CLI, OpenCode, OpenClaw); direct Anthropic API as fallback |
| 3 | What "design skills" are | Proprietary internal tools | TypeScript modules baked into the app | File-based skills that follow Claude Code's SKILL.md spec β forkable, versionable, shareable, installable by symlink |
| 4 | How design systems are authored | Implicit in prompt | N/A | DESIGN.md files following the awesome-claude-design 9-section schema |
| 5 | Extension point | Anthropic only | Custom PRs | Drop a folder into skills/ β composable by third parties |
The differentiation is not "yet another design generator." It is an integration shell that refuses to own the agent, the model, or the skill catalog β all three are external and pluggable.
- Indie devs / designers who already pay for one coding agent and don't want a second subscription or a second model router just to get design output.
- Design system maintainers who want to codify their system as a
DESIGN.mdand have every skill respect it automatically. - Skill authors who want to publish a design skill (e.g. "SaaS marketing page with glassmorphism") and have it run inside any compatible agent without porting.
- Teams self-hosting AI tooling who need a web deployment, not an Electron binary, and who need to keep keys in their own infra.
User opens the web app, types "Airbnb-style search page, use our internal design system", OD picks the prototype-skill, resolves the user's DESIGN.md, dispatches to Claude Code with both files plus the brief, streams tool calls into the UI, and renders the resulting HTML in an iframe preview. User clicks an element, drops a comment, the agent rewrites just that region.
User says "8-slide magazine-style pitch deck for my seed round". OD routes to deck-skill (a fork of guizang-ppt-skill). Output is a single-file HTML deck; preview is the deck itself with arrow-key navigation; export is PDF/PPTX.
User picks "SaaS landing β Stripe-ish" from a gallery. Template is a pre-filled artifact bundle plus a DESIGN.md reference. Agent only fills content; structure is already there. This is the fastest mode β useful for users who don't want to prompt at all.
User uploads a screenshot, brand guide PDF, or Figma link. OD runs design-system-skill which produces a DESIGN.md following the 9-section format. That file is then referenced by every subsequent generation β prototypes, decks, templates all pick up the tokens.
These four scenarios map 1:1 to the four modes in modes.md.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Web App (Next.js) β
β chat Β· artifact tree Β· iframe preview Β· comment mode Β· exports β
ββββββββββββββ¬ββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββ
β HTTP + SSE (/api/chat) β HTTPS (BYOK direct)
ββββββββββββββΌβββββββββββββββββββ ββββββββββΌββββββββββββββββββ
β Local Daemon (od daemon) β β Anthropic Messages API β
β Β· agent detection β β (fallback when no CLI) β
β Β· skill registry β ββββββββββββββββββββββββββββ
β Β· artifact store β
β Β· design-system resolver β
ββββββββββββββ¬βββββββββββββββββββ
β spawn / stdio / SDK
ββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββ
β Code Agent CLIs on user's machine (one or more of): β
β Claude Code Β· Codex Β· Cursor Agent Β· Gemini CLI Β· OpenCode β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Module responsibilities:
- Web app β chat UI, artifact tree, sandboxed iframe preview, comment mode, slider controls, export UI. Stateless; all state lives in the daemon or in the browser's IndexedDB for cloud deploys.
- Daemon β long-running local process. Detects agents, registers skills, manages artifacts on disk, resolves the active design system, and brokers REST/SSE requests.
- Agent adapters β one adapter per supported CLI; see
agent-adapters.md. - Skill registry β scans
~/.claude/skills/,./skills/, and./.claude/skills/; merges and exposes a typed catalog. - Artifact store β project-scoped folder (default
./.od/) holding generated files, version snapshots (git-friendly), and per-artifact metadata. - Design-system resolver β loads the active
DESIGN.md, injects it as skill context. - Preview renderer β sandboxed iframe with vendored React + Babel for JSX artifacts; plain iframe for HTML; PDF via the daemon's headless Chrome.
- Export pipeline β HTML (inlined), PDF, PPTX, ZIP, Markdown.
- We do not ship a model router. If the user's agent supports 20 providers, great. If it only supports Anthropic, that's the ceiling. We don't layer our own provider abstraction on top of someone else's.
- We do not ship a desktop app. No Electron, no Tauri. The "local" story is a Next.js dev server + a Node daemon. If someone wants a tray icon, that's
cc-switch's job, not ours. - We do not reinvent the agent loop. No custom tool-use harness, no bespoke context-manager. Everything goes through the detected agent's native loop.
- We do not maintain a skill marketplace in v1. Skills are git URLs and local folders. A browsable UI is v2.
- We do not try to compete with Figma. Output is code (HTML/JSX) and content (
DESIGN.md, Markdown, PPTX), not editable vector canvases. - We do not implement auth / billing / orgs in MVP. Single-user, single-machine. Multi-user is post-v1 and optional.
7. Why not just extend Open CoDesign?
We seriously considered it. The concrete blockers:
- It's Electron. Porting to a web architecture requires ripping out ~40% of the code and rewriting the renderer/main IPC layer. At that point it's a rewrite.
- It owns the agent loop.
pi-aiis a perfectly fine provider abstraction, but it means every skill is written againstpi-ai's tool-use format β not against whatever Claude Code, Codex, or Cursor Agent natively speak. We can't reuse existing skills, and existing skills can't reuse us. - Skill format is proprietary. Its 12 skills are TypeScript modules compiled into the app. A user cannot drop
guizang-ppt-skillin and have it work; there's noSKILL.mdloader. - No design system abstraction. Design tokens live in prompts, not in a versioned file that can be shared across projects.
We keep the good parts: comment mode, slider-emitted parameters, multi-frame preview, single-file HTML export, sandboxed iframe rendering. These are all UI ideas that are orthogonal to the agent layer and we'll absolutely borrow them. See references.md for the explicit borrow list.
8. Positioning against Anthropic's Claude Design
We are not trying to out-feature Claude Design. Claude Design has Anthropic's model team, internal tooling, and a rendering pipeline we can't match. What we offer instead:
- Self-hostable. Run on your laptop, your Vercel, your k8s. Secrets never leave.
- BYO-agent. If you're already paying for Cursor, that's your agent. If you've standardized on Codex inside your company, use Codex. No mandatory Anthropic subscription.
- Skills as files. Version them in git. Fork them. Ship them to teammates as a repo. Run your team's branded deck skill without rebuilding a product.
- Design systems as files. A
DESIGN.mdis an artifact you can review in a PR. Claude Design's "design system" lives in an ephemeral chat.
In short: Claude Design is a product; OD is a substrate.
- One developer can
git clone && corepack enable && pnpm install && pnpm tools-dev run web, point at their Claude Code install, and produce a prototype in under 5 minutes. - A third party can author a skill in a separate git repo, publish it, and have a user install it by running
od skill add <git-url>without touching OD's source. - A design system author can write a
DESIGN.md, point OD at it, and have the style propagate across prototype / deck / template outputs. - Deploying to Vercel with a local daemon works end-to-end (the daemon is reachable via localhost tunnel or a user-provided URL).
- Swapping the underlying agent from Claude Code to Codex requires zero skill changes.
- Daemon β Vercel bridge. Do we ship a reverse-tunnel helper (like
cloudflared), require the user to set one up, or punt to "run locally for now"? My current lean: punt for MVP, helper in v1. - Artifact versioning. Git, or SQLite, or both? Open CoDesign uses SQLite; that's easier but less reviewable. Lean: write artifacts as plain files + a
.od/history.jsonllog. Git is the user's business. - Comment mode on non-Claude-Code agents. Claude Code supports surgical edits via its tool loop. Codex and Gemini CLI are less graceful. Do we degrade to "regenerate whole file" for weaker agents? Lean: yes, document clearly in the adapter table.
- Skill trust model. Skills can shell out via the agent. We should at minimum warn on install, and probably sandbox the agent's cwd to the project directory. Claude Code's permission mode handles this for us if we use it; Codex is looser. Needs a per-adapter note.
These go on the roadmap as Phase 0 discovery items.