@djoeyg/pi-emoji

Slack-style :emoji: and kaomoji completion in the editor, with custom entries

Packages

Package details

extension

Install @djoeyg/pi-emoji from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@djoeyg/pi-emoji
Package
@djoeyg/pi-emoji
Version
0.2.0
Published
Oct 13, 2026
Downloads
173/mo · 38/wk
Author
djoeyg
License
MIT
Types
extension
Size
102.9 KB
Dependencies
0 dependencies · 1 peer
Pi manifest JSON
{
  "extensions": [
    "./src/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

@djoeyg/pi-emoji

Slack-style emoji for pi. Type : plus a few letters and pick from the popup; the emoji is inserted as plain text.

pi install npm:@djoeyg/pi-emoji

Usage

  • :tada → pick 🎉 :tada:. Names ignore _ vs -, so :thumbs_up and :thumbs-up both match.
  • Kaomoji use the same mechanism: :shrug → ¯\_(ツ)_/¯, :tableflip, :lenny, ...
  • Completion only starts at a word boundary after at least two characters, so http://, 10:30 and foo::bar are left alone.

Custom entries

Run /emoji to add, remove or list entries. They are stored as a flat JSON map of name to replacement text:

  • ~/.pi/agent/emoji.json for all projects
  • .pi/emoji.json for one project (overrides user entries)
{ "elmo-fire": "🔥", "ship-it": "🚢 (ง'̀-'́)ง" }

Custom names override built-ins. Slack-style image emoji such as :elmo-fire: cannot be rendered in a terminal, so map them to any text you like.

Data

data/emoji.json is generated from emojibase shortcodes (Slack, GitHub and CLDR sets merged, Slack names win): node scripts/generate-emoji.mjs <emojibase-data/en>. Skin-tone variants are not included.