Resources
Contributing
How to set up the repo, add a new icon, follow design guidelines, and ship a release.
Thanks for your interest in contributing to Brand Icons!
Prerequisites
- Node.js 22+
- pnpm 10+
Setup
pnpm install
pnpm build
pnpm test
Adding a new icon
Option A — Automated (recommended)
Use the icon-fetcher Claude Code subagent:
/agent icon-fetcher add linear
The agent will:
- Search and download the official SVG (or convert a raster image).
- Generate the
mono.svgvariant. - Create
meta.jsonwith brand metadata. - Validate against the build pipeline.
- Create a branch and commit the changes.
Option B — Manual
- Create
icons/<slug>/with kebab-case slug (e.g.linear). - Create at least one millésime subdir
icons/<slug>/<year>/(e.g.2024) containing:color.svg— official multi-color logo (24×24 viewBox).mono.svg— monochrome version withfill="currentColor".
- Create
icons/<slug>/meta.json(brand-level, year-aware):latestpointing to one ofyears[].year.years[]withyear,palette[],source, optionalnotes.- See the full schema in the repository’s
.claude/rules/meta.md.
- Add additional millésimes by repeating step 2 with new
<year>/subdirs and pushing entries intometa.years[]. - Run
pnpm build:icons --icon=<slug>to validate. - Open a PR targeting the
canarybranch and assign it to @BryanBerger98.
Icon design guidelines
- viewBox:
0 0 24 24whenever possible. color.svg: faithful to brand guidelines, no background unless integral.mono.svg: usefill="currentColor", flatten gradients, single-color.- Historic millésimes: source from Wikimedia Commons, archive.org, brand history pages. Document the source URL per year in
meta.years[].source.
Commit conventions
Conventional Commits:
feat(icons): add <brand>— new icon.feat(<pkg>): ...— feature in a package.fix(<pkg>): ...— bug fix.docs: ...,chore: ...,refactor: ....
Pull requests
- Target the
canarybranch. - Assign the PR to @BryanBerger98 for review.