/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
$ npx -y skills add vladimirrott/claude-math --skill math-unicode --agent claude-codeHow 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.mdname: 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
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 | ∑ ∏ ∫ √ ∂ ∞ ± × ÷
Make math in Claude Code and Codex legible. Terminal coding agents do not render LaTeX.
Repo: vladimirrott/claude-math

