Agent Infrastructure  ·  Curated marketplace

skill-creator

Create, edit, improve, or audit AgentSkills.

human agent ↗

---
name: extract-emojis
description: Extract every emoji from a block of text along with counts, surrounding context, and a coarse category (face, hand, animal, food, symbol, flag, other). Use whenever a user wants to inventory, audit, or analyze the emoji usage in a string, file, chat log, social-media post, or any other text payload, even if they don't explicitly say "extract" — phrases like "what emojis are in this", "count the emojis", "emoji breakdown", or "give me the emojis from X" should all trigger this skill.
---

# extract-emojis

A small but real skill: given any text, produce a structured JSON inventory of the emoji it contains.

## When to use this skill

Trigger whenever the user wants to know which emojis appear in a piece of text, how often, in what context, or grouped by kind. Examples of triggering phrases:

- "what emojis are in this Slack thread"
- "count emoji usage in my README"
- "emoji breakdown of this chat log"
- "pull the emojis out of this string and group them"
- "audit my tweets for emoji usage"

Do not use this skill for:

- *Generating* emoji from text (sentiment-to-emoji translation)
- Removing emoji from text (the script reports them, doesn't strip them)
- OCR-ing emoji from images (this is text-only)

## How it works

The skill bundles a single Python script, `scripts/extract_emojis.py`, that does the actual work. Run it on a text file and it writes a JSON inventory.
output Frontmatter + opening of the generated extract-emojis/SKILL.md. Passes skill-creator's own quick_validate.py.

What we ran it on:

Composite

4.4

C 4.4 · A 0.0

How we got there

Craft · D1–D5

D1 · Trigger clarity 5.0
D2 · Output specificity 4.0
D3 · Scope precision 4.5
D4 · Self-containment 4.0
D5 · Reusability 4.5

Spec

When this fires, what it takes, how it installs

Fires when

  • user says "make a skill for X" or "turn this into a skill"
  • user has a draft SKILL.md and wants to iterate on it with evals + benchmarks
  • user wants to optimize a skill's description for better triggering
  • user wants to package a folder into a .skill bundle for distribution
  • skill author is auditing their own skill before publishing

Skip when

  • user wants a one-shot generator with no human-in-the-loop iteration (skill-creator's spine is "draft → run → review → improve")
  • user is on Claude.ai with no filesystem (the bundled scripts assume a writeable cwd and Python)
  • user wants to evaluate a skill that depends on paid third-party APIs the session lacks
  • user just wants a SKILL.md template and not the whole eval/benchmark/packaging apparatus (overkill for that)

Takes

  • prompt:natural-language a description of what the new skill should do, when it should trigger, and what it should output; skill-creator's "Capture Intent" step pulls answers from chat history when possible
  • file:existing skill folder for the improve / package / description-optimize paths, pass the existing skill directory

Returns

  • file:skill folder (SKILL.md + scripts/ + references/ + assets/) SKILL.md passes the bundled quick_validate.py; structure follows the three-level progressive-disclosure pattern documented in the skill
  • file:.skill bundle (zip archive) produced by `python -m scripts.package_skill` — validates the folder first, then zips; emits to the skill-creator parent dir by default (not next to the input folder)
  • structured-data:evals.json + benchmark.json + grading.json only produced if you run the full eval loop; on Claude.ai or "vibe with me" runs these are explicitly skipped per the skill's own guidance

Install

pip install pyyaml
  • notes: Pure Python; no system deps for the create/validate/package path. The eval-viewer path additionally wants a browser; in Cowork/headless use --static.

No requirements.txt ships with skill-creator. quick_validate.py needs pyyaml (you'll get ModuleNotFoundError on first run otherwise). Every bundled script must be invoked as `python -m scripts.X` from inside the skill-creator directory — `python scripts/X.py` fails with `ModuleNotFoundError: No module named 'scripts'` because of the relative imports in utils.py. SKILL.md uses the correct form, but a casual reader running `python scripts/package_skill.py ./my-skill` will hit it.

Caveats

  • quick_validate.py imports pyyaml but skill-creator ships no requirements.txt — first run dies with ModuleNotFoundError until you `pip install pyyaml` yourself
  • every bundled script must be invoked as `python -m scripts.X` from inside the skill-creator dir; `python scripts/X.py` fails on relative imports (utils.py is `from scripts.utils import ...`). SKILL.md uses the right form but a casual user copying the path will hit this
  • package_skill.py writes the .skill bundle into the *current* working directory (the skill-creator folder), not next to the input skill. Easy to lose track of in a multi-skill workspace
  • the eval/benchmark/grading loop is the meat of the skill but requires subagents or the `claude` CLI in $PATH; on Claude.ai and Cowork the skill's own guidance is "skip benchmarking, do qualitative only" — so for ~50% of users the rigorous half is non-functional
  • description optimization (`run_loop.py`) shells out to `claude -p` and is silently a no-op without Claude Code installed — there is no preflight check
  • the skill encourages "pushy" descriptions to combat undertriggering; for a curator this is a double-edged sword (we got a 700-char description that does its job but reads like SEO copy)
  • no schema validation on test-case JSON beyond the inline example — malformed evals.json fails at run_eval.py time, not at lint time
02 — Cross-validation

4 sources verified

Install

Use this skill

/plugin install skill-creator
Use cases

Tasks this skill helps with


Auto-indexed. Editorial review pending — score is based on the rubric only.