glebis/font-features
This skill should be used when inspecting or applying advanced OpenType features of a font (woff2/otf/ttf) — ligatures, stylistic sets (ss01–ss20), character variants (cvXX), texture healing, slashed zero, tabular/oldstyle figures, fractions, small caps, case-sensitive forms — and generating the CSS to enable them. Interviews the user via cenno to pick features. Triggers on "OpenType features", "font features", "stylistic sets", "ligatures", "texture healing", "tabular figures", "what can this font do".
npx skills add https://github.com/glebis/claude-skills --skill font-features
Inspect a font's real OpenType feature inventory and generate CSS to enable chosen features. Never guess what a font supports — always run scripts/otfeat.py list first; only features present in the dump may be offered or enabled.
Requires fontTools (pip install fonttools if missing).
python3 <skill-dir>/scripts/otfeat.py list path/to/Font-Regular.woff2 [more fonts...]
Output lists each font's GSUB/GPOS tags with human descriptions (Monaspace stylistic sets are described precisely; unknown cvXX are labelled generically).
mcp__cenno__ask_user, or ask_sequence for several questions). Offer ONLY features found in step 1, grouped sensibly, with a recommendation. Typical question set:tnum) for tables/timers, oldstyle (onum) for prose, slashed zero (zero)calt) — for Monaspace, recommend ON everywherecase for uppercase labels/buttons, smcp if presentUse input: {kind: "choice"} with a text option, mark optional questions low-urgency, and respect a "skip" answer.
python3 <skill-dir>/scripts/otfeat.py css --family "Monaspace Neon" \
--features calt,liga,tnum,case --class prose
# cvXX with a value: --features cv01=2
High-level font-variant-* properties are preferred automatically (they cascade and combine better); remaining tags fall back to font-feature-settings. --no-variant-props forces the low-level form only.
tnum on tables/stat tiles only, ligature sets on code only). Verify in a browser with real content.font-feature-settings is all-or-nothing per declaration — a second declaration on a nested element REPLACES the inherited list; repeat the full list. This is the main reason to prefer font-variant-*.tnum/zero/smcp; it's a monospace family and zero is already slashed).case only raises : ¡ ¿ ‽ and combining accents — NOT quotes, brackets, or dashes).calt AND ligatures left enabled; font-variant-ligatures: none kills it.Take glebis/font-features from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.