Skip to content
Back to skills

No Emojis In Ui

ASecurity

Emoji and Unicode-glyph removal for Lucide-only UI (Pattern Patrol P6). Use when running a P6 patrol, a UI edit meets an emoji or icon glyph in TSX, or asked to enforce Lucide-only icons.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 3, 2026
documentationbashreactgitdocumentation

Works with

  • terminal

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 3, 2026

npx -y skills add armanisadeghi/ai-matrx --skill no-emojis-in-ui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of No Emojis In Ui?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for No Emojis In Ui
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/armanisadeghi-no-emojis-in-ui/badge)](https://www.skillsdirectory.com/skills/armanisadeghi-no-emojis-in-ui)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: no-emojis-in-ui
description: "Emoji and Unicode-glyph removal for Lucide-only UI (Pattern Patrol P6). Use when running a P6 patrol, a UI edit meets an emoji or icon glyph in TSX, or asked to enforce Lucide-only icons."
---

# no-emojis-in-ui

Enforce one rule: user-visible UI uses Lucide icons, never emoji or Unicode
icon glyphs. Follow the Pattern Patrol constitution and keep each mutation
batch to 15 files or fewer.

## Detect

Run the registry detector over `.tsx` files:

```bash
rg -n -P '[\x{1F000}-\x{1FAFF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}\x{2205}]' --glob '*.tsx'
```

Inspect every match in rendering context. Classify it as:

- **Finding:** JSX text, a rendered string, a chip/title/button label, seed or
  sample data rendered by the app, product-authored text copied/exported for
  the user, or an icon value that reaches the UI.
- **False positive:** non-rendered comment/documentation, console-only
  diagnostic text, a parser constant accepting glyphs as input, or an internal
  sentinel value that never reaches rendered or exported content.
- **Unresolved:** reachability or rendering cannot be proven. Report it; never
  silently clear it.

Rendered demos, admin tools, debug panels, and sample apps are UI findings.
User-authored or external content is not ours to rewrite; report the rendering
path only if the product itself injects the glyph.

## Route approval; never stop at the scan

Every verified finding takes exactly one route:

1. **Auto-approved:** it passes every gate below; fix it immediately.
2. **Manual approval:** the problem is certain and the repair is known, but an
   auto-approval gate fails; propose the exact repair to Arman.
3. **Unresolved:** certainty or a safe repair is missing; keep it open with the
   missing evidence.

An empty auto-approved set is not completion. Tier R forbids unapproved
mutation; it still requires a plain-English approval proposal for every
certain, safe, worthwhile repair.

## Auto-approval gates

Auto-approve only when all are true:

- The glyph is authored by us and visibly functions as UI iconography.
- One exact Lucide icon preserves its meaning, or an adjacent Lucide icon
  already communicates the same meaning and the glyph is redundant.
- Copy, handler behavior, state, semantic colors, DOM interaction, ARIA text,
  desktop/mobile layout, and light/dark behavior stay unchanged.
- The repair adds no wrapper/card/chrome, changes no chunk boundary, widens no
  type, adds no suppression, and touches no generated file.
- The result remains clear without relying on icon shape alone.

Anything ambiguous routes to manual approval. Never auto-approve edits to
user content, parser behavior, terminal protocols, branded art, complex ASCII
or Unicode diagrams, or copy whose meaning changes when the glyph disappears.

## Approved transformations

Choose the semantic Lucide icon already used by the component when available.
Otherwise import it directly from `lucide-react`.

| UI meaning | Normal repair |
|---|---|
| success / complete | `Check` or `CheckCircle2` |
| warning | `TriangleAlert` |
| private / locked | `Lock` |
| public | `Globe2` |
| keyword / key | `KeyRound` |
| document | `FileText` |
| removed / truncated | `Scissors` |
| new game | `Gamepad2` |
| reset / refresh | `RotateCcw` |
| celebration | `PartyPopper` |
| purely decorative glyph | delete it; preserve the text |

This is a semantic map, not a blind replacement table. Preserve icon size,
alignment, and `shrink-0` where wrapping text needs it. Mark decorative icons
`aria-hidden="true"`; an icon-only control keeps a real accessible label.
Delete a glyph instead of adding a second icon when a sibling Lucide icon
already conveys the same state. Never replace an emoji with a Lucide icon
banned by `matrx/no-banned-lucide-icons`; delete redundant decoration or route
the choice to manual approval.

## Verify and certify

For each batch:

1. Re-run the detector on every touched file and confirm only documented
   false positives remain.
2. Run `pnpm type-check`, `git diff --check`, and the relevant repo gates.
3. Inspect changed surfaces at desktop and mobile widths in light and dark
   themes. Exercise every changed control.
4. Spawn a second adversarial agent with: **"assume this broke something; find
   it."** It reruns the gates, audits false-positive classes, and returns
   `CERTIFIED` or `REJECTED`.
5. Fix or fully revert a rejected batch. Commit a certified batch by path and
   push to `main`; the release train ships it. Never run `./scripts/release.sh`
   unless Arman asked you to.

Update `.matrx/PATROL_SIGHTINGS.md` and
`.matrx/patrol-reports/no-emojis-in-ui.md` with the findings, fixes, approval
route, and certifier verdict.

Files in this skill

  • SKILL.md4.6 KB
  • agents/openai.yaml209 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…