fix-nerd-fonts
Verify and fix Nerd Font icons after editing files.
Skill by shannonshell
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/shannonshell-fix-nerd-fonts
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/fix-nerd-fonts
What's inside
- Skill name
fix-nerd-fonts- Description
- Verify and fix Nerd Font icons after editing files. Use whenever writing or editing a file that contains Nerd Font characters (Private Use Area codepoints).
- License
- MIT
- Instructions
- 126 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Fix Nerd Fonts
Nerd Font icons use Unicode Private Use Area codepoints (U+E000-U+F8FF and
U+F0000-U+10FFFF). The Write and Edit tools may silently strip or corrupt these
characters. This skill ensures they survive every edit.
## When This Skill Applies
**After every Write or Edit to a file that contains Nerd Font icons.** Currently
the known files are:
| File | Icons |
| ------------------------------- | -------------------------------------------------------------------------------------------- |
| `tui/src/main.rs` | nf-md-web (U+F059F), nf-fa-keyboard_o (U+F11C), nf-fa-user (U+F007) |
| `issues/0504-web-tui/README.md` | nf-md-web (U+F059F), nf-fa-keyboard_o (U+F11C), nf-fa-user (U+F007), nf-md-refresh (U+F0450) |
Update this table when new files or icons are added.
## The Problem
The Write and Edit tools transmit file content as text. Characters in the
Private Use Area — especially Supplementary Private Use Area codepoints above
U+FFFF — may be silently dropped, replaced with replacement characters, or
truncated. The file saves without error, but the icons are gone.
This is invisible in diffs and code review because the missing character leaves
no trace — just an empty string where the icon was.
## Step 1: Verify Icons
After any edit, run the verification script:
```bash
python3 -c "
src = open('<file_path>').read()
icons = {
'nf-md-web (U+F059F)': '\U000F059F',
'nf-fa-keyboard_o (U+F11C)': '\uF11C',
'nf-fa-user (U+F007)': '\uF007',
'nf-md-refresh (U+F0450)': '\U000F0450',
}
for name, char in icons.items():
if char in src:
print(f' OK {name}')
else:
print(f' MISSING {name}')
"
```
Adjust the icon list to match what the file should contain.
## Step 2: Fix Missing Icons
If any icon is missing, use the placeholder-and-replace pattern:
1. **In the Edit tool**, use a unique ASCII placeholder string where the icon
should go (e.g., `PLACEHOLDER_WEB`, `PLACEHOLDER_KEYBOARD`).
2. **Then run Python** to replace the placeholder with the real Unicode
character:
```bash
python3 -c "
src = open('<file_path>').read()
src = src.replace('PLACEHOLDER_WEB', '\U000F059F')
src = src.replace('PLACEHOLDER_KEYBOARD', '\uF11C')
src = src.replace('PLACEHOLDER_USER', '\uF007')
src = src.replace('PLACEHOLDER_REFRESH', '\U000F0450')
open('<file_path>', 'w').write(src)
"
```
## Step 3: Verify Again
Re-run the verification script from Step 1 to confirm all icons are present.
## Python Escape Syntax
Codepoints at or below U+FFFF use `\uXXXX`:
```python
'\uF11C' # U+F11C (nf-fa-keyboard_o)
'\uF007' # U+F007 (nf-fa-user)
```
Codepoints above U+FFFF use `\U00XXXXXX` (8 hex digits, zero-padded):
```python
'\U000F059F' # U+F059F (nf-md-web)
'\U000F0450' # U+F0450 (nf-md-refresh)
```
Using `\uF059F` for a codepoint above U+FFFF is **wrong** — Python interprets it
as `\uF059` + literal `F`, producing a garbage character.
## Rule: Always Use Unicode Escape Syntax in Source Code
**NEVER embed raw Nerd Font bytes in source code.** Always use the language's
Unicode escape syntax. Raw UTF-8 bytes are silently corrupted by text editors,
LLM tools, clipboard operations, and diff/patch workflows. Unicode escapes are
pure ASCII and survive any tool chain.
| Language | Syntax | Example (U+F007) | Example (U+F059F) |
| ---------- | ----------------------- | ---------------- | ----------------- |
| Rust | `\u{XXXX}` | `"\u{F007}"` | `"\u{F059F}"` |
| Zig | `\u{XXXX}` | `"\u{F007}"` | `"\u{F059F}"` |
| Python | `\uXXXX` / `\U00XXXXXX` | `'\uF007'` | `'\U000F059F'` |
| C/C++ | `\uXXXX` / `\UXXXXXXXX` | `u8"\uF007"` | `u8"\U000F059F"` |
| Swift | `\u{XXXX}` | `"\u{F007}"` | `"\u{F059F}"` |
| JavaScript | `\u{XXXX}` | `"\u{F007}"` | `"\u{F059F}"` |
**When editing a file that contains raw Nerd Font bytes**, convert them to
Unicode escapes as part of the edit. Use `xxd` or `python3` to identify the
codepoint, then replace the raw bytes with the appropriate escape.
## Adding New Icons
When introducing a new Nerd Font icon to the project:
1. Add the icon name, codepoint, and file to the table in this skill.From shannonshell/shannon, MIT.
More from shannonshell/shannon
- 0.547score
codex-review
shannonshell
Ask Codex to review Shannon work.
SkillCFreshness: C★ 11Claude Code +9 - 0.543score
claude-review
shannonshell
Ask Claude to review Shannon work.
SkillCFreshness: C★ 11Claude Code +9 - 0.541score
research-open-source
shannonshell
Use the local copies of each repo when doing research.
SkillCFreshness: C★ 11Claude Code +9 - 0.541score
create-skill
shannonshell
Create a new agent skill.
SkillCFreshness: C★ 11Claude Code +9 - 0.539score
adversarial-review
shannonshell
Run an in-session adversarial review of Shannon work using a fresh-context reviewer.
SkillCFreshness: C★ 11Claude Code +9 - 0.537score
debug-logs
shannonshell
Store all debug logs in ~/dev/shannon/logs/.
SkillCFreshness: C★ 11Claude Code +9 - 0.536score
format-rust
shannonshell
Format Rust files with cargo fmt.
SkillCFreshness: C★ 11Claude Code +9 - 0.536score
format-markdown
shannonshell
Format markdown files with prettier.
SkillCFreshness: C★ 11Claude Code +9 - 0.536score
format-zig
shannonshell
Format Zig files with zig fmt.
SkillCFreshness: C★ 11Claude Code +9 - 0.533score
commit
shannonshell
Write entertaining commit messages as poetry
SkillCFreshness: C★ 11Claude Code +9 - 0.528score
merge-upstream
shannonshell
Merge new upstream releases of nushell and reedline into Shannon
SkillCFreshness: C★ 11Claude Code +9
Signals
- Stars
- 11
- Forks
- 1
- Open issues
- 3
- Last commit (this folder)
- Jun 20, 2026 (4 months ago)
- Last release
- Jun 20, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/shannonshell/shannon
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from shannonshell
- 0.547score
codex-review
shannonshell
Ask Codex to review Shannon work.
SkillCFreshness: C★ 11Claude Code +9 - 0.543score
claude-review
shannonshell
Ask Claude to review Shannon work.
SkillCFreshness: C★ 11Claude Code +9 - 0.541score
research-open-source
shannonshell
Use the local copies of each repo when doing research.
SkillCFreshness: C★ 11Claude Code +9 - 0.541score
create-skill
shannonshell
Create a new agent skill.
SkillCFreshness: C★ 11Claude Code +9 - 0.539score
adversarial-review
shannonshell
Run an in-session adversarial review of Shannon work using a fresh-context reviewer.
SkillCFreshness: C★ 11Claude Code +9 - 0.537score
debug-logs
shannonshell
Store all debug logs in ~/dev/shannon/logs/.
SkillCFreshness: C★ 11Claude Code +9
Cite this page
fix-nerd-fonts skill. Agent Mart. https://agentmart.dev/skills/shannonshell-fix-nerd-fonts (last updated 2026-10-24)