usenotra/skills

brand-logos

Fetch official brand/product/tool logos (Stripe, GitHub, Notion, AWS, Figma, etc.) as clean SVGs from SVGL (svgl.app) — as saved .svg files, inline markup, or installed React components. Check this whenever logos or SVGs come up, e.g. adding brand marks to integration/partner rows, footers, pricing tables, or slides; replacing a blurry logo with a vector; getting light/dark variants; or finding an official logo. Prefer it over hand-writing SVG markup or grabbing random files. Skip for generic U…

First seen Jun 3, 2026

Installation

$ npx skills add usenotra/skills --skill brand-logos

Summary

  • Fetch official brand/product/tool logos (Stripe, GitHub, Notion, AWS, Figma, etc.) as clean SVGs from SVGL (svgl.app) — as saved .svg files, inline markup, or installed React components.
  • Check this whenever logos or SVGs come up, e.g. adding brand marks to integration/partner rows, footers, pricing tables, or slides; replacing a blurry logo with a vector; getting light/dark variants; or finding an official logo.
  • Prefer it over hand-writing SVG markup or grabbing random files.
  • Skip for generic UI icons, illustrations, charts, favicons from an existing logo, or designing a brand-new custom logo.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from usenotra/skills.

npx skills add usenotra/skills

Browse all from usenotra/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 7
License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 8,461 B
  • docs SUMMARY.md 621 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 269 installs

SKILL.md

SVGL Brand Logo

SVGL is a library of brand/product/tool logos served as clean, optimized SVGs. It exposes a free, unauthenticated REST API at https://api.svgl.app and a shadcn-compatible registry for installing logos as React components. Use it instead of hand-writing logo SVGs or pulling random files off the web, since the markup is consistent and maintained.

When to use this skill

Trigger on any request to find, download, add, embed, or install a brand, product, company, or tool logo, even when the user does not name SVGL. Common phrasings: "add the X logo", "I need an SVG icon for X", "put a row of integration logos here", "get the dark-mode version of the Y logo", "install the Z logo as a component".

This skill is for known brand/product logos. It is not for generic UI icons (use an icon set like Lucide/Heroicons), illustrations, or a company's own custom logo that wouldn't be in a public library.

For social icons in app UI (e.g. share buttons, profile links, footer social rows), prefer the project's existing shared icon registry if it already has one — reuse it rather than fetching from SVGL and creating a parallel logo source. Only reach for SVGL when no such registry exists or the needed mark is missing from it.

Choosing the approach

Decide between the two workflows based on what the user is building:

  • REST API (download the raw SVG) — the default. Use when the user wants an .svg file on disk, inline SVG markup, or a logo for a non-React stack (plain HTML, Vue, Svelte, Astro, email, design files). Also use it for quick lookups and "does SVGL have X?" questions.
  • shadcn registry (install as a React component) — use only when the project already uses React + shadcn (there's a components.json) and the user wants a reusable component rather than a static file. When unsure which the project uses, check for components.json and the framework before assuming. A request for "the SVGL CLI" means this flow (SVGL has no CLI of its own — it's the shadcn CLI against SVGL's registry).

REST API workflow

Base URL: https://api.svgl.app. All responses are JSON except the raw SVG endpoint.

Each logo entry looks like this (note that route and wordmark may be either a single URL string or a { light, dark } object, and category may be a string or array):

{
  "id": 573,
  "title": "GitHub",
  "category": "Software",
  "route": {
    "light": "https://svgl.app/library/github_light.svg",
    "dark": "https://svgl.app/library/github_dark.svg"
  },
  "wordmark": {
    "light": "https://svgl.app/library/github_wordmark_light.svg",
    "dark": "https://svgl.app/library/github_wordmark_dark.svg"
  },
  "url": "https://github.com/",
  "brandUrl": "https://brand.github.com/"
}

Endpoints

Goal Request
Search by title GET https://api.svgl.app?search=<query>;
List a category GET https://api.svgl.app/category/<category>; (e.g. software)
Discover categories GET https://api.svgl.app/categories
All logos (optionally capped) GET https://api.svgl.app?limit=<n>;
Optimized SVG markup GET https://api.svgl.app/svg/<name>.svg
Unoptimized SVG markup GET https://api.svgl.app/svg/<name>.svg?no-optimize

The <name> for the /svg/ endpoint is the filename from a route URL without the path/extension prefix — e.g. the route https://svgl.app/library/githublight.svg maps to /svg/githublight.svg. The optimized version (run through svgo) is almost always what you want; only reach for ?no-optimize if the user needs the original markup (e.g. to diff against a source file or preserve specific structure).

Steps

  1. Search by the brand name: curl -s "https://api.svgl.app?search=stripe";. If nothing returns, try a shorter or alternate spelling, or list the likely category to browse.
  2. Pick the right variant from the result:

- If route is a plain string, there's one universal logo — use it. - If route is { light, dark }, choose based on where it will render: dark variants are designed to sit on dark backgrounds (light artwork), light variants on light backgrounds. When the app supports both themes, grab both and switch with CSS. Don't assume — match the destination background. - Use wordmark only when the user explicitly wants the logo with the company name (the wordmark/lockup) rather than the icon mark. If the user says "logo" generically, prefer route (the icon mark).

  1. Download the chosen SVG into the project's existing asset location rather than inventing a new folder. Look for where other logos/icons already live (e.g. public/, public/logos/, src/assets/, app/assets/icons/, static/) and match that convention and naming style.
  2. Confirm what you saved and where, and mention if both light/dark files were stored.

Example — download the GitHub icon (light + dark) into an existing assets dir:

curl -s -o public/logos/github-light.svg "https://api.svgl.app/svg/github_light.svg"
curl -s -o public/logos/github-dark.svg  "https://api.svgl.app/svg/github_dark.svg"

If the user wants it inline (e.g. to paste into a component), fetch the markup and embed it directly rather than saving a file:

curl -s "https://api.svgl.app/svg/stripe.svg"

shadcn registry workflow

SVGL has no standalone CLI of its own. When a user asks for "the SVGL CLI", "svgl cli", or "install via the SVGL CLI", they mean this flow — the shadcn registry, driven by the standard shadcn CLI pointed at SVGL's registry. Don't go looking for a separate svgl command; route these requests here.

For React projects already on shadcn, logos can be installed as typed components. Just run the install command, using the project's existing package manager (check for pnpm-lock.yaml, package-lock.json, yarn.lock, or bun.lockb and match it — don't introduce a new one):

pnpm dlx shadcn@latest add @svgl/github
# npm:  npx shadcn@latest add @svgl/github
# yarn: yarn dlx shadcn@latest add @svgl/github
# bun:  bunx shadcn@latest add @svgl/github

The @svgl/... namespace resolves out of the box — current shadcn versions know how to fetch from https://svgl.app/r/<name>.json without any project config. This generates React components (e.g. a GithubLight component) that accept standard SVGProps, so the user can size and style them like any other component. The component name maps to the same logo names used by the API.

Fallback: only if the CLI can't resolve the @svgl namespace (e.g. an older shadcn version), register it explicitly in components.json and re-run:

{
  "registries": {
    "@svgl": "https://svgl.app/r/{name}.json"
  }
}

Cautions

  • Rate limits. The API is open and unauthenticated but rate-limited to prevent abuse. Don't loop over hundreds of logos or poll it; search once, fetch the specific SVGs you need, and cache the files locally instead of re-downloading.
  • Brand usage rights. SVGL distributes logos for convenience, but trademark and brand-guideline rules still apply. Follow the brand owner's guidelines (the entry's brandUrl/url often points to them) — don't recolor, distort, or imply an endorsement/partnership the user doesn't have.
  • Don't clone SVGL. Per SVGL's own terms, the API is meant for extensions, plugins, and tools that help the community — not for scraping its catalog to rebuild a competing logo library.

Output

After fetching or installing, tell the user concisely:

  • Which logo(s) and variant(s) you used (icon vs wordmark, light/dark).
  • Where files were saved or which component(s) were installed.
  • Any follow-up they should handle themselves (theme switching wiring, brand-guideline review for prominent/marketing use).