Skip to content
Development
Skill

/math-unicode

Use when a response needs mathematical notation (equations, filters, set-builder notation, statistics, calculus, linear algebra, logic, ratios, drops, counts) and the output goes to a terminal or TUI that cannot render LaTeX: Claude Code, Codex CLI, SSH and tmux sessions, CI

From plugin
claude-math
181 skill
Install
$ npx -y skills add vladimirrott/claude-math --skill math-unicode --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/math-unicode

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when a response needs mathematical notation (equations, filters, set-builder notation, statistics, calculus, linear algebra, logic, ratios, drops, counts) and the output goes to a terminal or TUI that cannot render LaTeX: Claude Code, Codex CLI, SSH and tmux sessions, CI

SKILL.md

math-unicode.SKILL.md
name: math-unicode
description: Use when a response needs mathematical notation (equations, filters, set-builder notation, statistics, calculus, linear algebra, logic, ratios, drops, counts) and the output goes to a terminal or TUI that cannot render LaTeX: Claude Code, Codex CLI, SSH and tmux sessions, CI logs. Load it before composing, including when the user explicitly mentions math-unicode. Emit Unicode glyphs inline, never raw LaTeX delimiters or commands. Do not use when the host renders math natively, such as ChatGPT or Codex on desktop and web, notebooks, or a KaTeX/MathJax target, and do not use when the user asked for LaTeX or a .tex file.
disable-model-invocation: false

math-unicode

When emitting mathematical notation in a terminal coding agent (Claude Code, Codex CLI, or similar), **always use Unicode glyphs inline** — never wrap math in `$…$`, `\(...\)`, or `$$...$$`. These terminals do not render LaTeX; raw delimiters appear as plain dollar signs and reduce readability.

When this skill applies

Two conditions, both required: the response carries mathematical notation, and the surface it lands on does not render LaTeX.

Surfaces that do not render LaTeX (apply the skill):

  • Claude Code, Codex CLI, and other terminal or TUI coding agents
  • Anything read through SSH, tmux, a pager, or a CI log

Surfaces that render math natively (do not apply the skill):

  • ChatGPT and Codex on desktop and web, where math already renders
  • Notebooks, and any target consumed by KaTeX or MathJax

No host exposes a per-surface predicate to a skill today, so this boundary is a judgement the model makes from its own context. If you cannot tell, and the session is a terminal coding agent, apply the skill.

Triggers (use Unicode math):

  • Equations, formulas, derivations
  • Filter conditions, set-builder notation
  • Statistics: probabilities, expectations, distributions
  • Calculus, linear algebra, logic
  • Counts, ratios, fractions, drops where precision matters

Skip (do not transform):

  • The user explicitly asks for LaTeX or a `.tex` file
  • Math inside fenced code blocks (preserve source syntax)
  • Strings being passed to a system that consumes LaTeX (KaTeX MCP, etc.)

Glyph cheatsheet

Greek

lowercase   α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω
uppercase   Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω
variants    ϵ ϑ ϕ ϖ ϱ ς

Operators

arithmetic     + − × ÷ ± ∓ · ∗ ⋅ ∘ ⊕ ⊖ ⊗ ⊘ ⊙
big            ∑ ∏ ∐ ∫ ∬ ∭
roots          √ ∛ ∜
calculus       ∂ ∇ Δ ∆
constants      ∞ ∅

Relations

equality       =  ≠  ≈  ≅  ≡  ≜  ≝  ≐  ∝  ∼  ≃  ≢
order          <  >  ≤  ≥  ⊴  ⊵
set            ∈ ∉ ∋ ∌  ⊂ ⊃ ⊆ ⊇ ⊊ ⊋  ⊏ ⊐ ⊑ ⊒
set ops        ∪ ∩ ⊎ ⊔ ⊓        (set difference: A \ B)

Logic & arrows

logic          ∧ ∨ ¬ ⊕   ⊢ ⊥ ⊤
quantifiers    ∀ ∃ ∄ ∴ ∵
arrows         → ← ↔ ⇒ ⇐ ⇔ ↦ ↪ ↩ ↑ ↓ ⇑ ⇓ ⟶ ⟵ ⟷ ⊸

Number sets & brackets

sets           ℕ ℤ ℚ ℝ ℂ ℙ ℍ
brackets       ⟨ ⟩  ⌈ ⌉  ⌊ ⌋  ‖ ‖

Sub/superscript glyph blocks

superscript    ⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹  ⁺ ⁻ ⁼ ⁽ ⁾  ⁱ ⁿ ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ʲ ᵏ ˡ ᵐ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ
sup (capital)  ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ
sup (Greek)    ᶿ                    (θ only; the rest are opt-in)
subscript      ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉  ₊ ₋ ₌ ₍ ₎  ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ

**Do not invent or approximate a missing glyph.** A whitelist on its own is not a membership test; these are the exact gaps that make the bare `^x` / `_x` fallbacks in Rules 3, 4 and 5 fire. Two separate causes, same outcome.

No Unicode code point exists at all:

subscript letters      b c d f g q w y z    → x_b, x_c, x_d
subscript capitals     all 26               → A_B, M_N  (Unicode has no
                                              subscript capital, 0/26)
superscript capitals   X Y Z                → A^X, M^Y, A^Z
superscript ∞          none                 → never ^∞ as a glyph; use ∫[a..∞]
Greek sub/superscript  μ ν σ and most rest  → I_ν, ∂_μ, x^ν (Rules 3, 4, 8)

A code point exists, but no monospace font in the measured set ships it, so treat it as absent:

superscript S          U+A7F1, Unicode 17.0 → A^S
superscript C F Q      U+A7F2..U+A7F4       → A^C, A^F, A^Q
superscript q          U+107A5, outside BMP → x^q
Greek subscripts       ᵦ ᵧ ᵨ ᵩ ᵪ            → x_β, I_ρ, x_γ
Greek superscripts     ᵝ ᵞ ᵟ ᵠ ᵡ            → x^β, x^φ

Two Greek exceptions worth knowing, because the older wording here got them wrong. `ᶿ` (superscript θ, U+1DBF) renders as widely as the Latin blocks below and is a normal part of the portable set, so write `xᶿ`, not `x^θ`. And `ρ` does have a subscript, `ᵨ` U+1D68; it is missing from most terminal fonts rather than from Unicode, which is why `I_ρ` stays the recommendation.

Measured coverage of the portable set: **17/26** lowercase subscripts, **0/26** subscript capitals, and **19/26** superscript capitals with a code point that some monospace font ships. The `∞` gap is why big-operator bounds use a bracketed range rather than stacked scripts: `∫₀^∞` would render one bound as a glyph and the other as a caret in the same operator. When unsure, the bare `^` / `_` form is always acceptable; a wrong or missing glyph is not.

If your terminal font does carry the Greek scripts or the rarer capitals, see `references/extended-glyphs.md` for the opt-in set.

Font coverage

Unicode says a code point exists. Whether a terminal draws it is a property of the font. These counts come from reading the `cmap` table of twelve monospace fonts: the six most widely installed programming fonts (JetBrains Mono, Fira Code, Cascadia Code, Hack, Source Code Pro, IBM Plex Mono) and six system fonts (DejaVu Sans Mono, Liberation Mono, Ubuntu Mono, Ubuntu Sans Mono, Noto Mono, Cousine). `scripts/measure-font-coverage.mjs` regenerates them and the test suite asserts every number below against the result.

| what | glyphs | fonts | |---|---|---| | core operators and relations | ∑ ∏ ∫ √ ∂ ∞ ± × ÷

Read more
Ships withclaude-math

Make math in Claude Code and Codex legible. Terminal coding agents do not render LaTeX.

Get the whole plugin
Stats
18
Stars
0
Forks
Active
Maintenance
JavaScript
Language
MIT
License
29d ago
Last commit
2mo ago
Created

Repo: vladimirrott/claude-math