espanso/skills/espanso/SKILL.md
Espanso text expander configuration, match authoring, and workflow automation on macOS. Use when the user asks to: create or edit espanso matches/triggers, set up text snippets, configure dynamic expansions (date, shell, clipboard, forms), manage app-specific config, organize matches into packages, debug why a trigger isn't firing, or add new shortcuts to their espanso setup. Trigger phrases include "add an espanso snippet", "create a trigger for", "configure espanso", "text expander", "espanso match", or any request to expand or automate typed text on macOS.
npx skillsauth add grailautomation/claude-plugins espansoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Espanso is a cross-platform text expander written in Rust. It intercepts keystrokes and replaces trigger strings with defined expansions. Config is YAML-based.
ESPANSO_CONFIG_DIR when set; otherwise use the macOS default path.| File | Purpose |
|------|----------|
| $CONFIG/config/default.yml | Global settings |
| $CONFIG/match/base.yml | Default matches (always active) |
| $CONFIG/match/packages/ | Third-party packages |
$CONFIG = ${ESPANSO_CONFIG_DIR:-$HOME/Library/Application Support/espanso}
Back up a match file before editing:
CONFIG="${ESPANSO_CONFIG_DIR:-$HOME/Library/Application Support/espanso}"
TARGET="$CONFIG/match/base.yml"
mkdir -p "$CONFIG/backups"
cp "$TARGET" "$CONFIG/backups/$(basename "$TARGET").$(date +%Y%m%d%H%M%S).bak"
:){{varname}}date, shell, clipboard, form, random, script)matches:
- trigger: ":sig"
replace: "Best regards,\nYour Name"
# word: true — only fires when surrounded by word separators
- trigger: "teh"
replace: "the"
word: true
# propagate_case — alh→although, Alh→Although, ALH→ALTHOUGH
- trigger: "alh"
replace: "although"
propagate_case: true
word: true
# $|$ — cursor lands here after expansion
- trigger: ":div"
replace: "<div>$|$</div>"
# Multiple triggers for one replacement
- triggers: [":hello", ":hi"]
replace: "Hello, World!"
See references/extensions.md for full extension reference.
matches:
# Date
- trigger: ":today"
replace: "{{date}}"
vars:
- name: date
type: date
params:
format: "%Y-%m-%d"
# Shell command
- trigger: ":user"
replace: "{{output}}"
vars:
- name: output
type: shell
params:
cmd: "whoami"
# Clipboard + form combined
- trigger: ":mdlink"
replace: "[{{form1.title}}]({{clipboard}})"
vars:
- name: clipboard
type: clipboard
- name: form1
type: form
params:
layout: "Link title: [[title]]"
Forms prompt the user with a popup before expanding.
- trigger: ":email"
replace: "Hi {{form1.name}},\n\n{{form1.body}}\n\nBest,\nYour Name"
vars:
- name: form1
type: form
params:
layout: |
Name: [[name]]
Body:
[[body]]
fields:
body:
multiline: true
Create $CONFIG/config/<appname>.yml to override settings per app.
# $CONFIG/config/vscode.yml
filter_title: "Visual Studio Code"
backend: clipboard # clipboard backend recommended for Electron apps
Available filters: filter_title, filter_class, filter_exec (all support regex).
espanso status # check if espanso is running
espanso restart # restart after config changes
espanso edit # open base.yml in default editor
espanso match list # list all active matches
espanso log # tail logs (debug trigger issues)
espanso package install <name> # install from the Hub
espanso package list # list installed packages
All .yml files under $CONFIG/match/ are loaded automatically — split by topic:
match/
base.yml # general snippets
dev.yml # code/dev snippets
email.yml # email templates
dates.yml # date/time expansions
$CONFIG and inspect the target match/config file$CONFIG/match/ when adding snippets$CONFIG/config/espanso match list to verify a trigger is registeredespanso log to debug unexpected behaviordevelopment
Parse and analyze Workato recipe JSON exports. Use when the user asks about a Workato recipe's logic, data flow, field mappings, error handling, or control flow. Also use when the user references a .recipe.json file or asks to debug a Workato integration.
databases
Review implementation plans as a staff software engineer. Use when the user asks for staff engineer feedback, senior engineering review, plan review, architecture review, implementation-plan critique, approval before proceeding, risk review, or feedback on a proposed technical plan.
tools
Use when the user invokes $spec-kit:tasks or /spec-kit:tasks, or asks to generate dependency-ordered tasks from the plan and repo context.
testing
Use when the user invokes $spec-kit:specify or /spec-kit:specify, or asks to create a brownfield-aware feature specification from a natural language description.