TJ

T-006

Install Fonts

Installs every font in a folder, skipping web-only formats, duplicates and fonts already there.

14 files to 3 fonts

~/Downloads/fonts

  • Halden/OFL.txtLeft alone
  • Halden/OTF/Halden-Bold.otfInstall
  • Halden/OTF/Halden-Italic.otfAlready there
  • Halden/OTF/Halden-Regular.otfInstall
  • Halden/TTF/Halden-Bold.ttfHas an .otf
  • Halden/TTF/Halden-Italic.ttfHas an .otf
  • Halden/TTF/Halden-Regular.ttfHas an .otf
  • Halden/Web/Halden-Bold.woff2Web-only
  • Halden/Web/Halden-Regular.woffWeb-only
  • Halden/Web/Halden-Regular.woff2Web-only
  • Marlo Mono/MarloMono-Bold.ttfSame name, differs
  • Marlo Mono/MarloMono-Regular.ttfInstall
  • Marlo Mono/MarloMono-Regular.woff2Web-only
  • Specimen.otfNot a font
  • 3 Install
  • 3 Has an .otf
  • 4 Web-only
  • 1 Already there
  • 1 Same name, differs
  • 1 Not a font
$ python3 install-fonts.py ~/Downloads/fontsSource   ~/Downloads/fontsFaces    5 installable, from 2 familiesSkipped  4 web-only files (.woff2 and friends cannot be installed)Skipped  1 file(s) that are not valid fonts:           Specimen.otfSkipped  1 already installedSkipped  1 same name but different content (use --force):           MarloMono-Bold.ttfWould install 3 face(s) into ~/Library/Fonts:  Halden                 2  Marlo Mono             1Preview only. Re-run with --install to copy them.

What it does

  • Installs .otf, .ttf, .ttc and .dfont into ~/Library/Fonts.
  • Skips .woff, .woff2, .eot and .svg. They're for the web, and Font Book won't take them.
  • When a face comes as both .otf and .ttf, installs the .otf.
  • Skips fonts already in ~/Library/Fonts or /Library/Fonts, matched by content, so running it twice is safe.
  • Reports a font with the same name but different bytes instead of overwriting it, unless you pass --force.
  • Refuses a file whose header isn't a real font.
  • Looks inside every folder, so point it at the top of a download.

It only previews until you pass --install. Mac only.

Install

Two files: the skill, and the script it runs. Put both in your Claude Code skills folder, then ask Claude to install the fonts in a folder. It shows you the preview first.

Claude Code skill
mkdir -p ~/.claude/skills/install-fonts
cd ~/.claude/skills/install-fonts
curl -fsSLO https://tirthjivani-install-fonts.vercel.app/SKILL.md
curl -fsSLO https://tirthjivani-install-fonts.vercel.app/install-fonts.py

Or run the script yourself. It needs Python 3 and nothing else. The folder defaults to ~/Downloads/fonts.

Run it
python3 install-fonts.py ~/Downloads/fonts            # preview
python3 install-fonts.py ~/Downloads/fonts --install  # copy
python3 install-fonts.py ~/Downloads/fonts --install --force
# --force overwrites a same-named font that differs

To undo, delete the fonts from ~/Library/Fonts. There's nothing else to clean up.

Ideas

  • Drop in a link to a specimen page and get the font.
  • Find every font a site uses and install the free ones.
  • A new face installed every Monday, a font of the week.

Want one of these, or something wilder? Let's make it.