brand-extract
Helps your agent extract brand information from a website. It collects colors, fonts, and logos to create a complete brand kit.
What it does
This tool extracts design information from a website, such as colors, fonts, and logos, to create a "Brand Kit". It works by measuring the website directly, rather than guessing.
When to use it
- ✓When you need to create a brand guide for an existing website.
- ✓When starting a design project and needing visual references.
- ✓When someone asks to "extract the brand" from a specific website.
Example of what to ask your AI
“Extract the brand from example.com”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool uses a browser to visit the website and collect data like colors, fonts, and logos directly from the page's code and design. This information is then organized into a "Brand Kit".
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add nexu-io/open-design --skill brand-extractOr download just the file:
curl -L https://raw.githubusercontent.com/nexu-io/open-design/main/skills/brand-extract/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
brand-extract
Turn a live website into a complete, machine-consumable Brand Kit —
identity, semantic color palette, typography, voice — by measuring the real
page, not guessing from memory. This is the methodology behind a brand-extraction
project: the target site is open in a secondary in-app Browser tab, and you
drive it with the agent-browser tool.
The live kit page (brand.html)
The extraction project opens with brand.html as the active tab — a
self-contained brand-kit page (template:
brand-extract/templates/brand-kit.html) that the daemon renders from
brand.json. The daemon pre-seeds it with a deterministic first paint — a
harvested logo, an approximate palette, font families, and a few cover images —
so it is NOT all-skeleton when it opens. Your job is to replace that seed with
measured truth and fill in the rest, progressively, so the user watches it
complete module by module. You never hand-edit it: you write brand.json, then
run od brand preview <brandId> and the daemon re-renders the page (the page
soft-reloads itself while extracting). Optimize for fast first paint and
progressive fill-in — write a partial brand.json and preview it the moment
you have a name, a couple of colors, and a logo, then preview again after each
field group rather than batching the whole kit to the end.
The trap to avoid: an LLM left alone regresses to the mean — Inter, an indigo accent, a purple gradient. That is off-brand for everyone. Every value you emit must trace to something you measured on the page.
The three-step chain
Work in order. Skipping straight to writing brand.json is how off-brand,
hallucinated kits happen.
1. Measure (drive the open Browser tab)
Use agent-browser against the selected browser tab (its URL/title are in
your run context — treat "this page" / "the site" as that tab):
agent-browser get url/get titleto confirm the target.agent-browser snapshotbefore extracting anything.- Harvest the real design language from the DOM/CSS, not the screenshot alone:
- Colors — frequency-rank color literals and resolve the seven semantic
roles:
background,surface,foreground,muted,border,accent,accent-secondary. The most frequent near-white/cream is usually the background; the most frequent chromatic mid-saturation color is usually the accent. - Typography — the
@font-facenames andfont-familydeclarations for display, body, and (if present) mono. Note weights actually used. - Logo (save MULTIPLE candidates) — extract every logo asset you find and
save each as a file under
logos/: the inline header/nav<svg>(write the literal<svg>…</svg>markup verbatim tologos/header.svg— do not just reference it), any<img>logo,apple-touch-icon, favicon, andog:image. Fetch the asset URLs directly — never leavelogo.primaryempty when the site has any mark. Setlogo.primaryto the best vector / transparent lockup (SVG wordmark > apple-touch-icon > favicon > og:image) and list the rest inlogo.alternates; the kit page renders them as switchable thumbnails. (The daemon auto-fetches a favicon/og:image fallback intologos/so the page is never logo-less, but that safety net is no substitute for saving the real wordmark.) - Imagery (save 6–8 of the site's LARGE / COVER / HERO images) — this is
the Images module. Harvest the site's actual big representative pictures and
save them into
imagery/: theog:image/twitter:imagesocial card, the hero/banner art, the largest<img>(resolve the highest-ressrcset/<picture>source), CSSbackground-imagehero blocks, product or app screenshots, and illustration/photography samples. Filter by rendered size — keep only big images (roughly ≥320px on the long edge) and drop icons, sprites, logos, avatars, and tracking pixels. List them inbrand.jsonasimagery.samples(see shape below); the kit page renders them as a clean labeled Images gallery (a thumbnail grid). Pick 6–8 varied, on-brand images — never UI chrome or icons. (The daemon runs a deterministic cover/hero-image fallback at finalize so the gallery is rarely empty, but that safety net is no substitute for picking the real hero images.)
- Colors — frequency-rank color literals and resolve the seven semantic
roles:
…
FAQ
What is a "Brand Kit"?
It's a set of guidelines and visual elements (colors, fonts, logo) that define a brand's identity.
What happens if the website has a security check (like CAPTCHA)?
The tool will ask you to resolve the check in the browser and then continue the extraction.
Does the tool guess the information or collect it?
It collects information directly from the website by measuring visual elements, ensuring accuracy.
Details
Original description by the author
Extract a complete Brand Kit from a live website by driving the in-app browser. Use when a brand-extraction project opens with a site in the Browser tab, or when the user asks to "extract a brand", "pull the brand from <url>", "get the colors/fonts/logo from this site", or build a brand/design system from a reference website. Pairs with the agent-browser tool for measurement and pauses for the use
repo: nexu-io/open-design
Popularity
- GitHub stars
- 101k
- Ranking position
- #667
- License
- Apache-2.0
- Updated
- 10/16/2026
Comments
- …
More skills from this repository
sample-plugin
Makes your agent create a metadata file for tests. It helps ensure code works correctly in different situations.
nexu-io/open-design
aster-atelier
Helps your agent create an artistic website with a classic look. It uses elegant imagery, blue skies, and serif fonts for a cinematic feel.
nexu-io/open-design
audio-jingle
Makes your agent generate audio like jingles and sound effects. It can create music and voices, saving the result as an audio file.
nexu-io/open-design
blog-post
Helps your agent write long articles or blog posts. It includes space for images, quotes, and author information.
nexu-io/open-design
Similar skills
brand-discovery
Helps define a brand's identity through structured interviews. It creates a complete guide with the brand's purpose, audience, and personality.
affaan-m/ECC
brand-voice
Creates a writing profile based on actual brand texts. It ensures content and communications maintain a consistent and authentic style.
affaan-m/ECC
brand-guidelines
Has your agent apply Anthropic's brand colors and visual style to materials. It's useful for maintaining the company's visual identity across projects.
anthropics/skills