skills/brand-extractor/SKILL.md
Extract comprehensive brand profiles from URLs, descriptions, or existing assets using a multi-tier AI analysis with web search fallback. Use when "extracting brand identity", "brand analysis", "brand profiling", or "creating brand profiles".
npx skillsauth add paolomoz/skills brand-extractorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Category | Trigger | Complexity | Source | |----------|---------|------------|--------| | brand-design | "brand analysis", "extract brand", "brand profile", "brand identity" | Medium | 6 projects |
Extract structured brand profiles from any input — a URL, a text description, uploaded assets, or a company name. The skill produces a typed BrandProfile object with tone, values, colors, typography, and positioning, plus optional supporting brand documentation files. It uses a multi-tier fallback strategy to maximize extraction quality regardless of input quality.
Classify the user's input into one of four categories. This determines which extraction tier to start with.
| Input Type | Example | Starting Tier |
|------------|---------|---------------|
| URL | https://acme.com | Tier 1 (web search) |
| Company name | "Stripe" | Tier 1 (web search) |
| Verbal description | "A playful fintech startup for Gen Z" | Tier 2 (training knowledge) |
| Uploaded assets | Logo PNG, brand PDF, screenshot | Tier 2 (training knowledge) |
Run through the tiers in order. Stop at the first tier that produces a confidence score above 0.6. If a tier fails or returns low confidence, fall through to the next.
Use web search to gather live brand information. Search for the company's homepage, About page, press/media kit, brand guidelines PDF ("{brand name}" brand guidelines filetype:pdf), social media profiles (for tone calibration), press coverage (for positioning context), and competitor landscape. This tier produces the highest confidence because it uses real, current brand signals.
For well-known brands, rely on training knowledge. For verbal descriptions, infer attributes from the description. Works well for major brands (Apple, Nike, Airbnb) but degrades for smaller companies. If the description is too vague, ask: "What industry?", "Who is the audience?", "Name 2-3 brands this should feel similar to (and 2-3 it should NOT feel like)."
Check if a local brand profile already exists in the project's brand directory (typically brands/ or brand-profiles/). If found, load and validate it against the BrandProfile schema. Merge with any new information from higher tiers.
Last resort: extract from URL structure (domain, TLD, paths), visible meta tags, or the raw description. This tier produces a skeleton profile with many inferred fields. Flag to the user that the profile needs manual review.
The output must conform to this interface:
interface BrandProfile {
name: string; // Official brand name
url?: string; // Primary URL if available
industry: string; // Industry or sector
tone: string[]; // 4-5 evocative tone attributes
values: string[]; // 3-5 core brand values
audience: string; // Primary audience description
colorPalette: string[]; // 3-6 hex color codes
typography: string; // Typography description
personality: string; // Brand personality summary
positioning: string; // Strategic positioning statement
visualStyle?: string; // Visual style description
competitors?: string[]; // Key competitors
confidence: number; // 0-1 extraction confidence score
tier: number; // Which tier produced the result
}
Tone attributes are the single most reused field in downstream skills. They must be evocative and specific — avoid generic descriptors that could apply to any brand.
DO — use evocative, ownable attributes:
DON'T — use attributes that describe every brand:
Think about the brand's reason for existing before writing tone attributes. What makes this brand's voice recognizable in a blind test? Those are your tone words.
Values should feel owned by this brand, not borrowed from a corporate template.
DO: "Radical transparency", "Design as respect", "Accessible luxury" DON'T: "Innovation", "Excellence", "Integrity" — these are corporate wallpaper.
Positioning is a strategic insight, not a tagline. It should answer: "Why does this brand win against alternatives?"
DO: "Stripe wins by making complex financial infrastructure feel like a simple developer tool — the brand promises that payments can be as elegant as a well-documented API." DON'T: "Stripe is a leading payment platform." — this is a Wikipedia summary, not positioning.
Use specific cultural and design references to anchor the visual style.
DO: "Swiss modernism meets California warmth — Helvetica precision but with generous whitespace and soft photography" DON'T: "Clean and modern design" — meaningless without reference points.
Before returning the profile, run these validation checks:
If the user requests a full brand package, generate up to 9 supporting documents in a brand-docs/ directory adjacent to the profile:
| File | Purpose | Key Content |
|------|---------|-------------|
| identity.md | Core brand identity | Mission, vision, values, positioning, brand story |
| visual.md | Visual identity system | Color palette, usage rules, spacing, imagery style |
| voice.md | Voice and tone guidelines | Writing principles, do/don't examples, tone spectrum |
| accessibility.md | Accessibility standards | WCAG targets, color contrast ratios, alt text rules |
| iconography.md | Icon system | Icon style, grid, stroke weight, metaphor rules |
| photography.md | Photography direction | Subject matter, lighting, color treatment, composition |
| content.md | Content strategy | Content pillars, editorial calendar themes, CTAs |
| social.md | Social media guidelines | Platform-specific voice, posting cadence, visual rules |
| logo.md | Logo usage | Clear space, minimum size, color variations, misuse examples |
Each file should be 500-1000 words of actionable guidelines, not generic brand theory. Reference the BrandProfile fields directly — tone attributes become voice guidelines, color palette becomes visual rules, positioning becomes content strategy.
Return the BrandProfile as a JSON object and summarize key findings for the user. If confidence is below 0.6, explicitly flag which fields are inferred and need human review.
| Problem | Cause | Fix | |---------|-------|-----| | All tone attributes are generic | Skipped the "reason for existing" analysis | Spend more time on positioning first, then derive tone from positioning | | Color palette looks wrong | Web search returned outdated brand colors | Check the live site's CSS custom properties or meta theme-color tag directly | | Confidence is very low (< 0.3) | Brand is too new or too niche for any tier | Ask the user for brand guidelines PDF or existing assets to analyze | | Profile feels interchangeable | Values and tone could apply to any competitor | Add the competitor list and explicitly differentiate: "Unlike X, this brand..." | | Visual style is vague | No specific cultural references | Force yourself to complete: "This looks like [specific reference] meets [specific reference]" |
development
Generate artistic infographics from any topic. Runs the Sumi pipeline (analyze → structure → craft prompt → generate image) entirely within Claude Code. Use when "generate infographic", "create infographic", "sumi", "make an infographic about", or "visualize topic".
tools
Implement Server-Sent Events streaming from Cloudflare Workers to browser clients with reconnection, state persistence, and progress tracking. Use when building "SSE streaming", "real-time updates", "server push", or "event streaming".
development
Audit websites by cross-referencing query indexes, sitemaps, and navigation to identify content gaps, stale pages, missing metadata, and quality issues. Use when "auditing a website", "finding content gaps", "site quality audit", or "content inventory analysis".
data-ai
Track user session context across multi-turn interactions using browser sessionStorage and server-side KV caching with TTL. Use when implementing "session tracking", "conversation context", "multi-turn sessions", or "user journey tracking".