skills/email/SKILL.md
Manage emails via Himalaya CLI. Use when the user wants to read, send, search, or organize emails. Triggers on "email", "inbox", "send email", "check mail", "reply to", "forward", or mentions of Gmail, Outlook, iCloud, Proton Mail.
npx skillsauth add lvndry/jazz emailInstall 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.
Manage emails using Himalaya CLI - a powerful command-line email client supporting IMAP, SMTP, Maildir, and Notmuch backends.
When using this skill as an agent, run commands via execute_command. Prefer these patterns:
Always use --output json when you need to parse results (subject, from, id). Example:
himalaya envelope list --folder INBOX --page-size 20 --output json | jq '.[] | {id, subject, from, date}'
Non-interactive send: message write opens $EDITOR. For automation, pipe a full RFC-style message to himalaya template send (if available), or use a temp file:
echo -e "To: [email protected]\nSubject: Subject\n\nBody text" | himalaya template send
If template send is not available, use himalaya message write --to "recipient" --subject "Subject" and note that it may open an editor—check himalaya --help for your version.
Extract message IDs for follow-up actions: himalaya envelope list --output json | jq -r '.[].id'
Batch operations: Pass multiple IDs to move/delete: himalaya message move <id1> <id2> <id3> --folder "Archives"
Check before acting: Run himalaya account list and himalaya folder list first if the user has multiple accounts or folders.
Use --account <name> when the user has multiple accounts (e.g., himalaya --account work envelope list).
Before any email operation, verify Himalaya is installed and configured:
# Check if installed
which himalaya
# Check if configured (lists accounts)
himalaya account list
If not installed → Guide through Installation If no accounts → Guide through Account Setup
curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | PREFIX=~/.local sh
brew install himalaya
pacman -S himalaya
cargo install himalaya --locked
Direct user to: https://github.com/pimalaya/himalaya#installation
Recommended approach: Use Himalaya's built-in wizard which auto-discovers settings.
# First-time setup - wizard starts automatically
himalaya
# Or configure a specific account
himalaya account configure <account-name>
The wizard will:
| Provider | Special Requirements | | --------------- | -------------------------------------------- | | Gmail | Requires App Password or OAuth 2.0 setup | | Outlook | Works with password or OAuth 2.0 | | iCloud | IMAP login is username only (not full email) | | Proton Mail | Requires Proton Bridge running locally |
💡 Tip: Many providers use the same app-specific password for both email and calendar. Store credentials in pass with consistent naming (e.g., google/app-password, icloud/app-password) to reuse them across both email and calendar skills. For multiple accounts, use a hierarchical structure (e.g., google/personal/app-password, google/work/app-password)—the / creates folders to keep things organized.
For detailed provider configs, see references/providers.md
# List recent emails in INBOX
himalaya envelope list
# List from specific folder
himalaya envelope list --folder "Archives"
# List with specific account
himalaya envelope list --account gmail
# Paginate results
himalaya envelope list --page 2 --page-size 20
# Read by ID
himalaya message read <id>
# Read in plain text (no HTML)
himalaya message read <id> --plain
# Read headers only
himalaya message read <id> --headers
# Compose new email (opens $EDITOR)
himalaya message write
# Send with pre-filled fields
himalaya message write --to "[email protected]" --subject "Hello"
# Reply to a message
himalaya message reply <id>
# Reply all
himalaya message reply <id> --all
# NOTE: `envelope list` does NOT support a `--query` flag.
# Any trailing arguments are interpreted as the search query.
# Put options FIRST (e.g., --folder/--output/--page-size), then query tokens.
# NOTE: There is no `--max-size` flag. To limit results, use `--page-size` (and optionally `--page`).
# Basic filters (direct Himalaya query syntax)
# Search by subject
himalaya envelope list --folder INBOX subject "meeting"
# Search by sender
himalaya envelope list --folder INBOX from "[email protected]"
# Unread (not seen)
himalaya envelope list --folder INBOX not flag seen
# Search by exact date (YYYY-MM-DD or YYYY/MM/DD)
himalaya envelope list --folder INBOX date 2026-02-09
# Combine filters with and/or (quote the expression to keep it as one arg)
himalaya envelope list --folder INBOX "from [email protected] and subject invoice and not flag seen"
# ---------------------------------------------------------------------------
# Shell-level helpers (useful patterns for LLMs)
# ---------------------------------------------------------------------------
# Count emails received TODAY in INBOX
# 1) List all envelopes
# 2) Skip the header lines
# 3) Grep for today's ISO date string
# 4) Count lines
TODAY=$(date +%Y-%m-%d)
himalaya envelope list --folder INBOX \
| tail -n +3 \
| grep "${TODAY}" \
| wc -l
# Count unread emails in INBOX
himalaya envelope list --folder INBOX not flag seen \
| tail -n +3 \
| wc -l
# Show latest N emails in INBOX (for quick inspection)
# Use pagination flags (not `tail`) to reliably fetch only N messages.
himalaya envelope list --folder INBOX --page 1 --page-size 10
# Show latest N *unread* emails
himalaya envelope list --folder INBOX --page 1 --page-size 10 not flag seen
# List folders
himalaya folder list
# Create folder
himalaya folder create "Projects/ClientA"
# Move message to folder
himalaya message move <id> --folder "Archives"
# Copy message
himalaya message copy <id> --folder "Important"
# Mark as read
himalaya flag add <id> seen
# Mark as unread
himalaya flag remove <id> seen
# Star/flag message
himalaya flag add <id> flagged
# Delete (move to trash)
himalaya message delete <id>
# Use specific account for any command
himalaya --account work envelope list
himalaya --account personal message write
# List configured accounts
himalaya account list
# Check unread across accounts
for account in $(himalaya account list --output json | jq -r '.[].name'); do
echo "=== $account ==="
himalaya --account "$account" envelope list --page-size 5 not flag seen
done
Himalaya supports JSON output for scripting:
# JSON output
himalaya envelope list --output json
# Parse with jq
himalaya envelope list --output json | jq '.[].subject'
# Enable debug logging
RUST_LOG=debug himalaya envelope list
# Full trace
himalaya --debug envelope list
| Error | Solution |
| ----------------------- | ------------------------------------------------- |
| "Account not found" | Run himalaya account configure <name> |
| "Authentication failed" | Check password/app password, regenerate if needed |
| "Connection refused" | Check IMAP/SMTP host and port settings |
| "Certificate error" | Check TLS settings in config |
Config file location: ~/.config/himalaya/config.toml (or $XDG_CONFIG_HOME/himalaya/config.toml)
# View current config
cat ~/.config/himalaya/config.toml
# Edit config manually
$EDITOR ~/.config/himalaya/config.toml
# Reconfigure account interactively
himalaya account configure <name>
# Use alternative config file
himalaya --config /path/to/custom/config.toml envelope list
Environment variable override:
export HIMALAYA_CONFIG=~/.config/himalaya/custom-config.toml
himalaya envelope list
Himalaya uses your $EDITOR for composing. The format is:
To: [email protected]
Cc: [email protected]
Subject: Your subject here
Your message body here.
Himalaya’s search uses a positional query expression, not a --query flag.
# Envelopes strictly after a given date
himalaya envelope list "after 2026-02-10"
# Envelopes strictly before a given date
himalaya envelope list "before 2026-02-10"
# All emails received today (from local date)
himalaya envelope list "after $(date +%Y-%m-%d)"
# From a specific sender
himalaya envelope list "from [email protected]"
# To a specific recipient
himalaya envelope list "to [email protected]"
# Subject contains words
himalaya envelope list "subject report"
# Combine filters (AND semantics)
himalaya envelope list "from [email protected] and subject report"
| Task | Command |
| ----------- | ------------------------------------------------------ |
| Check inbox | himalaya envelope list |
| Read email | himalaya message read <id> |
| Compose new | himalaya message write |
| Reply | himalaya message reply <id> |
| Search | himalaya envelope list "from [email protected]" |
| Mark read | himalaya flag add <id> seen |
| Delete | himalaya message delete <id> |
| Move | himalaya message move --folder SOURCE TARGET <id...> |
tools
Create and track task lists for complex multi-step work. Use when planning projects, breaking down work, tracking progress, or when a task has 3+ steps. Triggers on "plan", "todo", "task list", "break down", "step by step", or complex requests requiring multiple actions.
development
Brainstorm startup ideas using top-founder mental models, trend analysis, and competition research. Use when the user wants to brainstorm startup ideas, explore business opportunities, validate concepts, or think like elite founders. Triggers on "startup ideas", "business ideas", "what should I build", "startup brainstorm", "idea validation", "trends and opportunities", "think like a founder".
tools
Create new Jazz skills for automating workflows. Use when the user asks to create a skill, make a skill, or wants to define custom automation behavior.
tools
Generate pull request titles and descriptions from diffs and context. Use when creating a PR, writing PR description, drafting merge request, or summarizing changes for review.