{"slug":"icon-lookup","title":"icon-lookup","summary":"Workaround for Claude Code filtering BMP PUA Unicode (U+E000-U+F8FF). Supplementary PUA Nerd Font icons like \uDB80\uDEA4 \uDB84\uDCFE \uDB80\uDC79 (U+F0000+, e.g. nf-md-github, nf-md-kubernetes, nf-md-battery) can be written directly. BMP PUA icons (Powerline, Font Awesome, Devicons) require placeholder synt","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-10-01T14:18:40.722719Z","repo":{"url":"https://github.com/malob/nix-config","stars":462,"forks":38,"license":"MIT","updatedAt":"2026-09-27T04:51:44Z"},"bodyHtml":"<hr>\n<h2>name: icon-lookup\ndescription: &gt;-\nWorkaround for Claude Code filtering BMP PUA Unicode (U+E000-U+F8FF). Supplementary PUA Nerd Font icons like \uDB80\uDEA4 \uDB84\uDCFE \uDB80\uDC79 (U+F0000+, e.g. nf-md-github, nf-md-kubernetes, nf-md-battery) can be written directly. BMP PUA icons (Powerline, Font Awesome, Devicons) require placeholder syntax like {{ U+E0A0 }} or {{ nf-fa-star }} (without spaces), which hooks auto-convert. Invoke when reading or writing Starship configs, tmux themes, shell prompts, or statuslines.</h2>\n<h1>BMP PUA Unicode Workaround</h1>\n<p>Claude Code filters Unicode characters in the BMP Private Use Area (U+E000-U+F8FF), which includes most Nerd Font icons. This skill provides tools for working with these icons.</p>\n<h2>Quick Reference</h2>\n<table>\n<thead>\n<tr>\n<th>Range</th>\n<th>Status</th>\n<th>Examples</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>U+E000-U+F8FF (BMP PUA)</td>\n<td><strong>Filtered</strong> - use placeholders</td>\n<td>Powerline, Devicons, Font Awesome, Octicons</td>\n</tr>\n<tr>\n<td>U+F0000+ (Supplementary PUA-A)</td>\n<td>Works directly</td>\n<td>Material Design Icons (nf-md-*)</td>\n</tr>\n</tbody>\n</table>\n<h2>Automatic Features</h2>\n<p><strong>When reading files:</strong> A PostToolUse hook automatically identifies all PUA characters, showing icon names, codepoints, and whether they're filtered.</p>\n<p><strong>When writing files:</strong> A PostToolUse hook automatically converts placeholder syntax to actual Unicode characters.</p>\n<h2>Placeholder Syntax</h2>\n<p>When writing icons in the filtered BMP PUA range, use placeholder syntax:</p>\n<ul>\n<li>By codepoint: <code>{{ U+E0A0 }}</code> (without the spaces)</li>\n<li>By name: <code>{{ nf-fa-star }}</code> (without the spaces)</li>\n</ul>\n<h2>Icon Lookup</h2>\n<p>Search for icons by name:</p>\n<pre><code>python3 ${CLAUDE_PLUGIN_ROOT}/scripts/lookup-icon.py \"&lt;search query&gt;\"\n</code></pre>\n<p>Example searches:</p>\n<ul>\n<li><code>git branch</code> → finds git-related icons</li>\n<li><code>folder</code> → finds folder/directory icons</li>\n<li><code>wizard</code> → finds wizard icons</li>\n</ul>\n<h2>Character Identification</h2>\n<p>Identify a specific character:</p>\n<pre><code># Direct argument (this is nf-md-battery, a Supplementary PUA icon)\npython3 ${CLAUDE_PLUGIN_ROOT}/scripts/identify-icons.py -c \"\uDB80\uDC79\"\n\n# From stdin\necho \"\uDB80\uDC79\" | python3 ${CLAUDE_PLUGIN_ROOT}/scripts/identify-icons.py -\n</code></pre>\n<h2>Workflow</h2>\n<ol>\n<li><strong>Reading files</strong> - Hook automatically shows icon info; use this to understand what icons are present</li>\n<li><strong>Writing icons</strong> - Search with lookup script, then use placeholder syntax for filtered icons</li>\n<li><strong>Comparing icons</strong> - Use identify script to check if two characters are the same icon</li>\n<li><strong>Material Design Icons</strong> (U+F0000+) can be written directly without placeholders</li>\n</ol>\n<h2>Manual Conversion</h2>\n<p>If placeholders weren't converted (e.g., hook didn't run):</p>\n<pre><code>${CLAUDE_PLUGIN_ROOT}/scripts/convert-placeholders.py /path/to/file\n</code></pre>\n","files":[{"path":"SKILL.md","sizeBytes":2804,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-01T14:19:30.106377Z","sha256":"9CC5F8AB77DB23F2BA089B54732F6EAFEBD7E44AF5F0FBA65769A6B72D2C695C","sizeBytes":1312},"review":null,"source":{"repositoryUrl":"https://github.com/malob/nix-config","path":"configs/claude/plugins/pua-unicode/skills/icon-lookup","license":"MIT","commit":"500b474e4d1a7bb5bfe8e14e66fadf3e739394b1","subtreeSha":"89BDD8A6A52835955AAC485D06B7E6C6A7CBF607B663A6A5431CD082E9995BE0","lastSyncedAt":"2026-10-01T14:18:38.843139Z"},"reviewedAt":"2026-10-01T14:20:58.11442Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/malob/nix-config/tree/master/configs/claude/plugins/pua-unicode/skills/icon-lookup"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install malob-nix-config@llmmart"},{"target":"git","command":"git clone https://github.com/malob/nix-config.git"}]}