getdesign

April 2026 to present · Founder · Solo project with AI agents

A getdesign interface card with design tokens and a rendered page

I am not a strong designer, so most of my design work starts with references. I would give an agent a screenshot and ask it to build something similar. It could usually copy the big decisions, but it missed the details that made the original work: the exact colors, border radii, spacing, typography, shadows, and component proportions.

I built getdesign to give the agent both sides of the reference. It gets a screenshot of the rendered page and a structured design document built from the page's actual CSS.

Why a screenshot was not enough

A screenshot tells an agent what the page looks like. It does not reliably tell it whether a card uses a 12px or 16px radius, which gray belongs to a border, or how the spacing changes between sections.

getdesign collects the page's HTML and stylesheets, renders it in a real browser, and extracts colors, typography, spacing, radii, borders, shadows, and responsive rules. It then combines that evidence with screenshots instead of asking the model to guess everything from pixels.

I based the file format on Google Labs Code's DESIGN.md idea, then made getdesign's own fixed nine-section contract. Every run returns the same order, including components, layout, depth, interactions, responsive behavior, and an agent prompt guide.

The getdesign landing page with a URL input and an example design document
The private-beta product starts with a URL and returns a screenshot plus design.md.
what the agent misseswhat getdesign adds
exact colors
CSS-backed paletteValues come from fetched and rendered styles
border radius
Radius scaleRepeated values become usable rules
spacing rhythm
Layout guidanceSection and component spacing are recorded
type hierarchy
Typography rolesFamily, size, weight, and line height
below-the-fold design
Full-page captureOrdered tiles cover the complete landing page
how to apply it
Agent prompt guideThe last section turns evidence into instructions
The document carries the small decisions that a screenshot leaves ambiguous.

The Daytona implementation

The Daytona capture system was the hardest part to build, and it is the part I am most proud of. Each run creates a temporary Daytona sandbox and launches Chromium inside it. getdesign measures the rendered page, captures it in viewport-sized tiles, scrolls through the full page, and stitches those tiles into one screenshot. The sandbox is deleted after the run.

This took far more work than calling a screenshot API. Pages load at different speeds, some continue growing as they scroll, fixed headers appear in every tile, and the browser can report a page as ready before the visual layout has settled.

The launch film shows the URL-to-design.md product story.

How getdesign captures a full page

01Create a sandbox

Start a short-lived Daytona environment.

02Launch Chromium

Open the submitted URL in kiosk mode.

03Measure the page

Read the rendered height inside the sandbox.

04Capture tiles

Screenshot each viewport while moving down the page.

05Stitch the page

Combine the ordered tiles into one full-page image.

06Delete the sandbox

Remove the temporary environment after the run.

The screenshot comes from a real browser session, not a static HTML preview.

One extraction pipeline, several ways in

Entry points
Hosted webPrivate beta
Agent skillPublic, lighter capture path
CLI and SDKPublished packages
Hosted APINot ready
Evidence
CrawlerHTML, stylesheets, fonts, and CSS rules
DaytonaRendered page and ordered screenshot tiles
Analysis
Token extractionColors, type, spacing, radii, borders, and shadows
Visual descriptionWhat the full rendered page actually shows
Structured synthesisValidated nine-section document
Output
Full-page screenshotThe visual reference
design.mdExact values and instructions for the coding agent
The screenshot and CSS evidence meet in the same structured result.

What works today and what still breaks

getdesign is ready for private beta clients. A few friends use it, but the hosted extractor is not publicly available yet. The agent skill is public and works, although it is less reliable than the complete Daytona pipeline. The CLI and TypeScript SDK are published. The dashboard, documentation, and desktop app also work. The hosted API is not ready.

The weakest part is fetching the page source and CSS. Some sites render most of their interface on the server. Others inject styles after JavaScript runs, lazy-load assets, hide files behind authentication, or ship more CSS than the fetcher can reasonably process. The screenshot shows what appeared, but the crawler may still miss the rule that produced it.

getdesign is one of my startup projects, but Oikina gets most of my time. getdesign will stay open source. The business would come from hosted runs through a subscription, usage pricing, or a mix of both. I have not settled on the model yet.

Published CLI and SDKterminal + app.ts
# CLI
npx @getdesign/cli https://cursor.com --out design.md

# TypeScript SDK
import { getDesign } from "@getdesign/sdk";
const result = await getDesign("https://cursor.com");

npx @getdesign/cli https://cursor.com --out design.md

The CLI and TypeScript SDK are published, although the hosted product is still private beta.