Deft
Ask AI

Search

Search skills, authors and topics

fatihaydost / brand-identity-skill

brand-identity

Brand identity sets from one brief - logo, typography and colour palette built together, measured (contrast, colour blindness, glyph coverage, font licences, small-size logo renders) and compared side by side as identity cards, shown on the user's own site, then a brand guidelines kit (PDF, logo files, tokens) for the chosen set. Use for a new brand or any part of one (logo, fonts, colours, or a mix), for refreshing an identity, or for critiquing one, even if the user only says "branding".

Install

npx skills add https://github.com/fatihaydost/brand-identity-skill --skill brand-identity

Type

Choosing, pairing and checking a set's faces. Tags: [strong] [limited] [practice] [popular-unsupported].

Selection

  • Display does voice, text does reading. People attribute consistent personas to faces (Brumberger 2003, Technical Communication 50:2); fitting the persona matters in ads, legibility elsewhere (Shaikh, Chaparro & Fox 2006, Usability News 8:1). [limited]
  • Class → voice (grotesk honest, neo-grotesk neutral, geometric modern, humanist warm, old-style literary, Didone dramatic and fragile when small, slab sturdy, mono technical) is vocabulary, culture-bound (Google Fonts checklist). [practice]
  • Holds up: round ↔ sweet, angular ↔ sour across countries (Velasco et al. 2015) [strong]; its effect on taste or sales is mixed [limited]. No "most legible font": speed varies by reader (Wallace et al. 2022) [strong]; serif vs sans makes no difference once x-height is matched (Arditi & Cho 2005) [strong]. Humanist sans reads better at a glance at small sizes (Dobres et al. 2016). [limited] "Hard-to-read fonts are remembered" failed replication (Taylor et al. 2020). [popular-unsupported]
  • Work from constraints first: languages, smallest and largest size, weights, licence, web budget; then set the real brand name and a real sentence in candidates, never Lorem (Type Founders). [practice]
  • Before picking, run the reflex test (ai-defaults.md). brand.py fonts search --exclude-defaults hides listed faces.

Pairing modes (identitylib.PAIRING_MODES; give sets different modes)

ModeUse
single-familyone variable family; hierarchy from wght/opsz/width. Lowest risk, fewest bytes
superfamilysans + serif sharing skeleton and x-height (IBM Plex, Source)
contrastcharacterful display + neutral text
same-designertwo faces by one designer or foundry
data-faceadds mono or tabular-figure face for data, only when the product shows numbers

A second face only if it does what the first cannot (GF, superfamily); mixing is optional and low contrast can work (Butterick). [practice] Rule only where measurable: one family per role, every family has a role. For inline mixing keep x/cap ratios close (CSS font-size-adjust); no threshold is evidenced.

Checks (brand.py fonts audit FAMILY --langs … --numbers)

  • Gate: 100% of base exemplars of every brief language (gflanguages; tr → tr_Latn). Missing ğ ş İ fall back letter by letter.
  • Gate: licence known and covers logo outline, web, app, PDF embed.
  • Gate: tnum when the product shows numbers.
  • Warn: text family with < 2 real weights (a wght axis spanning 400–700 counts); I/l/1 raster IoU > 0.9 (heuristic; suggest an ss/cv disambiguation feature); high stroke contrast in the text role.
  • Info: GF Latin Core coverage, locl, total web weight.
  • Casing is the browser's job: set lang so Turkish i uppercases to İ, and only there.

Licences and rendering

SourcePolicy
Google Fonts (OFL/Apache/UFL)rendered and outlined. Pinned instances are OFL Modified Versions: cache only, never shipped. Some families have a Reserved Font Name (Source Sans 3: "Source"), so the kit links the font and gives embed code instead of subsetting; PDF embedding is allowed (OFL-FAQ) [strong]
Fontshare (ITF FFL 2.0)link + note only, not rendered: no subsetting or conversion, no handing files to clients (licence) [strong]
Commercialname + note "licences per weight and use: desktop / web / app; client buys" + a rendered free alternative. Trial fonts are presentation-only (Klim)
User filesused as given, never redistributed; no file → keep the name, offer a fallback, never call the fallback the original

Competitor type map

  1. brand.py site competitors WORK URL… reads heading/body families.
  2. Classify each (catalogue class, or "custom/commercial" by eye; CSS names can be aliases like sohne-var).
  3. Grid: class × role, cells = competitor count. Crowded cell = category code; empty cell = room to differ. Leaders often use their own or commercial faces (Wise Sans, Söhne, Monzo Sans; our 6-site sample); an OFL set differs by class, family and features. Inter is ~1% of the whole web (Web Almanac 2024); its ubiquity is a startup and AI-output effect. Show a face in real use with Fonts In Use links, one at a time, no bulk scraping.