---
name: install-fonts
description: Install every font in a folder into ~/Library/Fonts, skipping web-only formats, duplicate formats of the same face, and anything already installed. Use when the user asks to install fonts, add a font family to their Mac, or clear out a folder of downloaded fonts.
---

# Install fonts

Run the script. It previews by default, so show the preview first, then install.

```bash
python3 "$CLAUDE_SKILL_DIR/install-fonts.py" <folder>             # preview
python3 "$CLAUDE_SKILL_DIR/install-fonts.py" <folder> --install   # copy
```

`<folder>` defaults to `~/Downloads/fonts`. The script recurses, so point it at
the top of a download, not at each family.

## What it does, and why

Foundry downloads ship the same face three times (`.otf`, `.ttf`, `.woff2`),
usually nested a folder or two deep. Installing all of it floods Font Book with
duplicate families and with web formats macOS cannot use. So the script:

- installs only `.otf`, `.ttf`, `.ttc`, `.dfont`
- skips `.woff`/`.woff2` — those are for CSS `@font-face`, Font Book rejects them
- installs the `.otf` when a face ships as both `.otf` and `.ttf`
- skips faces already in `~/Library/Fonts` or `/Library/Fonts`, matched by
  content hash so re-running is always safe
- refuses files whose header is not a real font, and lists them

Same filename but different bytes is reported, not overwritten. Pass `--force`
only if the user wants the newer copy to win.

## Reporting back

Give the user the real number, which is usually far smaller than the file count
they see in Finder, and say why. Name the families installed. Mention that Font
Book picks fonts up immediately but an already-open app needs a restart before
they appear in its font menu.

If the filenames carry `TRIAL` or `Demo`, note once that trial fonts are
normally licensed for evaluation only, not for published or commercial work.

## Uninstalling

Fonts are plain files. To undo, delete them from `~/Library/Fonts` — there is no
registry to clean up.
