All skills
massimodeluisa avatar

/nerd-fonts

@0b00b79

Use Nerd Fonts (nerdfonts) glyphs for icons in CLI output, TUIs, shell prompts, statuslines, editor and terminal configs, docs, and web pages. Pick a named glyph from the 10,995 on nerdfonts.com/cheat-sheet (nf-md-, nf-fa-, nf-dev-, nf-oct-, nf-cod-, nf-seti-, nf-pl-), verify the codepoint, and install a patched font from nerdfonts.com/font-downloads. Use when adding or fixing terminal or editor icons, tofu or empty boxes instead of icons, starship, powerlevel10k, oh-my-posh, tmux, lualine, nvim-tree, or a Nerd Font install, even if the user does not say nerd fonts. Do not use for Lucide, Heroicons, Tabler, Iconify SVGs, or Google Fonts pairings. Also: Nerd Font Mono vs Propo, brew, scoop, choco, font-patcher. Triggers: icon, glyph, nerd font, nerdfonts, powerline, starship, powerlevel10k, oh-my-posh, tmux status, lualine, nvim-tree, devicons, tofu, boxes instead of icons, terminal font, editor font, codepoint, font-patcher, emoji, icon font, file icons, statusline icons.

Use this Skill: https://skilld.dev/gh/massimodeluisa/nerdfonts-skill/nerd-fonts

This session only. Nothing lands on disk.

referencesterminals.md

≈1.5k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Terminals, editors, prompts and web

Data: Nerd Fonts v3.5.1, retrieved 2026-08-28. Sources: upstream README "Font Installation" and wiki "FAQ and Troubleshooting"; family names from fc-list on installed v3.5.1 fonts; settings from each tool's documentation.

Family strings

  • Regular: <Family> Nerd Font. Mono: <Family> Nerd Font Mono. Propo: <Family> Nerd Font Propo.
  • Symbols Only: Symbols Nerd Font and Symbols Nerd Font Mono.
  • <Family> is the patched name from fonts.md: JetBrainsMono, CaskaydiaCove, MesloLGS, SauceCodePro, BlexMono.

Keep your text font, add the icons

App How
Linux (fontconfig) copy 10-nerd-font-symbols.conf from NerdFontsSymbolsOnly.zip to ~/.config/fontconfig/conf.d/, run fc-cache -fv; it prefers Symbols Nerd Font as fallback for monospace and every upstream family
kitty symbol_map (below)
WezTerm already bundled in the default fallback list; font_with_fallback (below) pins the order
iTerm2 Settings > Profiles > Text > "Use a different font for non-ASCII text" > Symbols Nerd Font Mono
Ghostty already bundled
VS Code put 'Symbols Nerd Font Mono' after your font in editor.fontFamily
Alacritty, GNOME Terminal, Konsole no setting; the OS fallback applies (fontconfig on Linux, CoreText on macOS)

Alignment

Patched fonts place every icon inside the cell. Fallback symbols do not always land on the text line: upstream documents that "scaling and placement of the fallback symbols can be hit or miss". Fixes, in order of preference:

  • Use the patched font (<Family> Nerd Font Mono when cells must stay strict).
  • kitty: modify_font baseline 2 (points; px and % suffixes work; try small positive and negative values).
  • WezTerm: config.font = wezterm.font_with_fallback({ "Your Text Font", { family = "Symbols Nerd Font Mono", scale = 0.9 } }).

Check with a line that mixes letters and icons and look at the vertical position: printf 'abc  󰉋 xyz\n' (nf-oct-git_branch U+F418, nf-md-folder U+F024B).

kitty (~/.config/kitty/kitty.conf)

font_family      JetBrainsMono Nerd Font
bold_font        auto
italic_font      auto
bold_italic_font auto

Keep another text font and route the Nerd Fonts ranges to the symbols font:

font_family Your Text Font
symbol_map U+E000-U+E00A,U+E0A0-U+E0D7,U+E200-U+E2A9,U+E300-U+E3E3,U+E5FA-U+E6BB,U+E700-U+E958,U+EA60-U+EC84,U+ED00-U+F2FF,U+F300-U+F385,U+F400-U+F533,U+F0001-U+F1AF0 Symbols Nerd Font Mono

Check with kitty +list-fonts | grep -i nerd and kitty --debug-font-fallback.

Alacritty (alacritty.toml)

[font]
size = 13

[font.normal]
family = "JetBrainsMono Nerd Font"
style = "Regular"

WezTerm (wezterm.lua)

local wezterm = require("wezterm")
local config = wezterm.config_builder()
config.font = wezterm.font_with_fallback({ "JetBrainsMono Nerd Font", "Symbols Nerd Font Mono" })
return config

Ghostty (config)

font-family = "JetBrainsMono Nerd Font"

iTerm2

Settings > Profiles > Text > Font > JetBrainsMono Nerd Font. Restart iTerm2 after installing a font.

Windows Terminal (settings.json)

{
  "profiles": {
    "defaults": {
      "font": { "face": "JetBrainsMono Nerd Font" }
    }
  }
}

GNOME Terminal, Konsole

  • GNOME Terminal: Preferences > profile > Text > uncheck "Use the system fixed width font" > Custom font.
  • Konsole: Settings > Edit Current Profile > Appearance > Font.

VS Code (settings.json)

{
  "editor.fontFamily": "'JetBrainsMono Nerd Font', 'Symbols Nerd Font Mono', monospace",
  "terminal.integrated.fontFamily": "JetBrainsMono Nerd Font"
}

Neovim

  • In a terminal, Neovim uses the terminal font: fix the terminal first, then plugins such as nvim-web-devicons, nvim-tree and lualine render.
  • Neovide: vim.o.guifont = "JetBrainsMono Nerd Font:h14".
  • Test in the shell before touching the editor: printf '  󰉋\n' (nf-custom-vim U+E62B, nf-oct-git_branch U+F418, nf-md-folder U+F024B).

tmux, ssh, containers

The font belongs to the local terminal emulator. Nothing to install on the remote side or in the container. tmux status strings accept literal glyphs.

Prompt tools

Tool Command or setting
starship starship preset nerd-font-symbols -o ~/.config/starship.toml; custom modules use the literal glyph, for example symbol = " " (nf-oct-git_branch U+F418)
powerlevel10k p10k configure asks whether Nerd Font icons render and recommends its bundled MesloLGS NF
oh-my-posh oh-my-posh font install meslo (pick another name from oh-my-posh font list); themes use literal glyphs

Web

Hot-linked stylesheet (prototyping):

<link rel="stylesheet" href="https://www.nerdfonts.com/assets/css/webfont.css">
<i class="nf nf-fa-heart" aria-hidden="true"></i>
<button type="button" aria-label="Star this repository"><i class="nf nf-oct-star" aria-hidden="true"></i></button>

Self-hosted (production):

@font-face {
  font-family: "Symbols Nerd Font";
  src: url("/fonts/SymbolsNerdFont-Regular.ttf") format("truetype");
  font-display: swap;
}
.nf { font-family: "Symbols Nerd Font"; font-style: normal; font-weight: normal; line-height: 1; }
.nf-oct-mark_github::before { content: "\f408"; }

SymbolsNerdFont-Regular.ttf and its LICENSE come from NerdFontsSymbolsOnly.zip; ship both. Decorative icons get aria-hidden="true"; icon-only controls get an accessible name.

Alignment: the webfont class already sets line-height: 1; add vertical-align and tune it against your text font, or center icons in flex containers.

.nf { line-height: 1; vertical-align: -0.125em; }
.icon-button { display: inline-flex; align-items: center; gap: 0.5em; }

Check a line that mixes text and icons before shipping.

Source: SKILL.md on GitHub

1 alert20d3 checks · Risk HIGH
  • Gen Agent Trust Hub20d

    The skill provides icon lookup and font management tools for Nerd Fonts. It includes instructions to download data and scripts from the official Nerd Fonts repository and review user files for icon usage. While these actions involve external downloads and execution of project scripts, they are central to the skill's intended purpose and target a well-known project source.

  • Socket20d

    No alerts

  • Snyk20d

    Risk: LOW · No issues

Signed by skilld at 0b00b79. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 weeks ago.

Activeupdated 3 weeks ago
Other metadata
metadata
{
  "author": "massimodeluisa",
  "version": "1.2.0",
  "website": "https://www.nerdfonts.com",
  "upstream": "https://github.com/ryanoasis/nerd-fonts",
  "nerd-fonts-release": "v3.5.1"
}

README badge

README badge for massimodeluisa/nerdfonts-skill