When to use this skill
When the user asks about an emoji — its name, Unicode code points, HTML entities, category, or group — or wants a random emoji, wants to browse emojis by category ("show me food emojis"), or needs to resolve an emoji name to code points for rendering or storage. EmojiHub is a static dataset of 1791 emojis in 8 categories and 37 groups. For the live Unicode standard with full skin tone enumeration, this is the wrong skill.
Your best first call
curl "https://emojihub.yurace.pro/api/search?q=handshake"
No auth. No key. Returns a JSON array of emoji objects whose name contains the substring "handshake". Search is case-insensitive substring matching on name — "smile" matches "cat face with wry smile" but misses "grinning face", so phrase queries around the API's naming conventions.
Each object:
- name — emoji name including variant suffix like "type-3" for skin tone
- category — one of 8 top-level buckets (e.g., "smileys and people", "food and drink")
- group — one of 37 finer groups within a category (e.g., "body", "face positive")
- htmlCode — array of HTML entity strings; always join the full array to render
- unicode — array of Unicode code points in U+XXXX format; use for storage and comparison
The handshake result is a useful probe: its htmlCode has two elements (["🤝", "🏼"]) because skin-tone variants decompose into a base character plus a Fitzpatrick modifier. Always join the full htmlCode array — indexing just [0] silently produces the wrong glyph for multi-codepoint emojis.
Fallbacks (when the best call isn't enough)
- Need a random emoji →
GET /random returns one emoji from the full 1791. Use when the user wants surprise, not a specific emoji.
- Browse by category →
GET /random/category/{category} for a random pick, GET /all/category/{category} for the full set. URL-encode spaces: food%20and%20drink.
- List all categories or groups →
GET /categories returns 8 category names, GET /groups returns 37 group names. Fetch both once to populate a filter or autocomplete.
Pitfalls
htmlCode and unicode are always arrays, even for simple emojis. Indexing [0] alone works for single-codepoint emojis but silently produces the wrong glyph for skin-tone variants and flag sequences. Always join the full array.
- Search is literal substring matching on
name, not semantic matching. "smile" finds "cat face with wry smile" but not "grinning face". Phrase queries around what the API calls the emoji, not what a user might paraphrase.
- The dataset is frozen at 1791 emojis. Emojis added to the Unicode standard after the freeze are absent — do not claim completeness for newer emojis.
- URL-encode spaces in category and group names.
food and drink becomes food%20and%20drink in the path — some HTTP clients accept bare spaces but many don't.
One-line summary for the user
I can look up any emoji by name, browse by category, or fetch a random one from EmojiHub's 1791-emoji dataset — no auth required, with HTML entities and Unicode code points ready to render or store.
SKILL.md source (frontmatter + body)
---
name: access-emoji-reference-data
description: When the user asks about an emoji, wants to look up an emoji by name, find its Unicode code points or HTML entities, get a random emoji, or browse emojis by category or group — reach for EmojiHub. 1791-emoji static dataset, no auth required.
---
## When to use this skill
When the user asks about an emoji — its name, Unicode code points, HTML entities, category, or group — or wants a random emoji, wants to browse emojis by category ("show me food emojis"), or needs to resolve an emoji name to code points for rendering or storage. EmojiHub is a static dataset of 1791 emojis in 8 categories and 37 groups. For the live Unicode standard with full skin tone enumeration, this is the wrong skill.
## Your best first call
```bash
curl "https://emojihub.yurace.pro/api/search?q=handshake"
```
No auth. No key. Returns a JSON array of emoji objects whose `name` contains the substring "handshake". Search is case-insensitive substring matching on `name` — "smile" matches "cat face with wry smile" but misses "grinning face", so phrase queries around the API's naming conventions.
Each object:
- `name` — emoji name including variant suffix like "type-3" for skin tone
- `category` — one of 8 top-level buckets (e.g., "smileys and people", "food and drink")
- `group` — one of 37 finer groups within a category (e.g., "body", "face positive")
- `htmlCode` — array of HTML entity strings; always join the full array to render
- `unicode` — array of Unicode code points in `U+XXXX` format; use for storage and comparison
The handshake result is a useful probe: its `htmlCode` has two elements (`["🤝", "🏼"]`) because skin-tone variants decompose into a base character plus a Fitzpatrick modifier. Always join the full `htmlCode` array — indexing just `[0]` silently produces the wrong glyph for multi-codepoint emojis.
## Fallbacks (when the best call isn't enough)
- **Need a random emoji** → `GET /random` returns one emoji from the full 1791. Use when the user wants surprise, not a specific emoji.
- **Browse by category** → `GET /random/category/{category}` for a random pick, `GET /all/category/{category}` for the full set. URL-encode spaces: `food%20and%20drink`.
- **List all categories or groups** → `GET /categories` returns 8 category names, `GET /groups` returns 37 group names. Fetch both once to populate a filter or autocomplete.
## Pitfalls
- `htmlCode` and `unicode` are always arrays, even for simple emojis. Indexing `[0]` alone works for single-codepoint emojis but silently produces the wrong glyph for skin-tone variants and flag sequences. Always join the full array.
- Search is literal substring matching on `name`, not semantic matching. "smile" finds "cat face with wry smile" but not "grinning face". Phrase queries around what the API calls the emoji, not what a user might paraphrase.
- The dataset is frozen at 1791 emojis. Emojis added to the Unicode standard after the freeze are absent — do not claim completeness for newer emojis.
- URL-encode spaces in category and group names. `food and drink` becomes `food%20and%20drink` in the path — some HTTP clients accept bare spaces but many don't.
## One-line summary for the user
I can look up any emoji by name, browse by category, or fetch a random one from EmojiHub's 1791-emoji dataset — no auth required, with HTML entities and Unicode code points ready to render or store.