himalaya について
himalaya は、外部の Himalaya CLI を使って IMAP、SMTP、Notmuch、Sendmail 経由でメールを管理する、エージェントやスクリプト向けのターミナルメールクライアントスキルです。
主な機能
- 01メールの一覧表示・検索・閲覧
- 02メールの作成・返信・転送
- 03メールの移動・コピー・削除とフラグ管理
- 04複数アカウントとフォルダーの管理
- 05添付ファイルのダウンロードと構造化出力
活用シーン
- 01送信者や件名でメールを検索
- 02ターミナルツールから返信を作成して送信
- 03メールをアーカイブまたは削除し、フラグを更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nousresearch/ hermes-agent --skill himalayaインストール後、Claude Code で/himalayaを入力して読み込まれたか確認します。
同梱ファイルreferences/configuration.mdreferences/message-composition.md
詳細
Himalaya メール CLI
Himalaya は、IMAP、SMTP、Notmuch、または Sendmail バックエンドを使用して、ターミナルからメールを管理できる CLI メールクライアントです。
このスキルは Hermes Email ゲートウェイアダプターとは別のものです。ゲートウェイアダプターを使うと、ユーザーはエージェントにメールを送信でき、Hermes に組み込まれた IMAP/SMTP アダプターが使用されます。一方、このスキルではエージェントがターミナルツールからメールボックスを操作でき、外部の himalaya CLI が必要です。
参考資料
references/configuration.md(設定ファイルのセットアップと IMAP/SMTP 認証)references/message-composition.md(メール作成用の MML 構文)
前提条件
- Himalaya CLI がインストールされていること(
himalaya --versionで確認) ~/.config/himalaya/config.tomlに設定ファイルがあること- IMAP/SMTP の認証情報が設定されていること(パスワードは安全に保存)
インストール
# Pre-built binary (Linux/macOS — recommended)
curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | PREFIX=~/.local sh
# macOS via Homebrew
brew install himalaya
# Or via cargo (any platform with Rust)
cargo install himalaya --locked
設定のセットアップ
対話型ウィザードを実行してアカウントを設定します。
himalaya account configure
または、~/.config/himalaya/config.toml を手動で作成します。
[accounts.personal]
email = "[email protected]"
display-name = "Your Name"
default = true
backend.type = "imap"
backend.host = "imap.example.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "[email protected]"
backend.auth.type = "password"
backend.auth.cmd = "pass show email/imap" # or use keyring
message.send.backend.type = "smtp"
message.send.backend.host = "smtp.example.com"
message.send.backend.port = 587
message.send.backend.encryption.type = "start-tls"
message.send.backend.login = "[email protected]"
message.send.backend.auth.type = "password"
message.send.backend.auth.cmd = "pass show email/smtp"
# Folder aliases (himalaya v1.2.0+ syntax). Required whenever the
# server's folder names don't match himalaya's canonical names
# (inbox/sent/drafts/trash). Gmail is the common case — see
# `references/configuration.md` for the `[Gmail]/Sent Mail` mapping.
folder.aliases.inbox = "INBOX"
folder.aliases.sent = "Sent"
folder.aliases.drafts = "Drafts"
folder.aliases.trash = "Trash"
エイリアス構文に関する注意。 v1.2.0 より前のドキュメントでは、
[accounts.NAME.folder.alias]サブセクション(単数形のalias)を使用していました。 v1.2.0 ではこの形式は警告なしに無視されます。TOML の解析自体は問題なく行われますが、 エイリアスリゾルバーがこの設定を読み取らないため、すべての検索が 正規名にフォールバックします。Gmail では、SMTP 配信が成功した後に 送信済みフォルダーへの保存が失敗し、himalaya message sendが 0 以外の終了コードで終了します。 エージェント、スクリプト、ユーザーなど、終了コードを受けて再試行する呼び出し元は SMTP 送信を含む送信処理全体を再実行するため、宛先にメールが重複して届きます。 必ず[accounts.NAME]の直下にfolder.aliases.X(複数形のaliases、ドット区切りの キー)を使用してください。
Hermes との連携に関するメモ
- 読み取り、一覧表示、検索、移動、削除は、すべてターミナルツールから直接実行できます。
- 作成、返信、転送には、パイプ入力(
cat << EOF | himalaya template send)を推奨します。対話型の$EDITORモードはpty=true、バックグラウンド実行、プロセスツールを組み合わせて使用できますが、使用するエディターとそのコマンドを把握している必要があります。 - プログラムから解析しやすい構造化出力には、
--output jsonを使用します。 himalaya account configureウィザードには対話型入力が必要です。PTY モードを使用してください:terminal(command="himalaya account configure", pty=true)
よく使う操作
フォルダーの一覧表示
himalaya folder list
メールの一覧表示
INBOX のメールを一覧表示します(デフォルト)。
himalaya envelope list
特定のフォルダーのメールを一覧表示します。
himalaya envelope list --folder "Sent"
ページネーションを使用して一覧表示します。
himalaya envelope list --page 1 --page-size 20
メールの検索
himalaya envelope list from [email protected] subject meeting
メールを読む
ID を指定してメールを読み取ります(プレーンテキストを表示)。
himalaya message read 42
生の MIME をエクスポートします。
himalaya message export 42 --full
メールに返信する
Hermes から対話型操作なしで返信するには、元のメッセージを読み取り、返信を作成してパイプで渡します。
# Get the reply template, edit it, and send
himalaya template reply 42 | sed 's/^$/\nYour reply text here\n/' | himalaya template send
または、返信を手動で作成します。
cat << 'EOF' | himalaya template send
From: [email protected]
To: [email protected]
Subject: Re: Original Subject
In-Reply-To: <original-message-id>
Your reply here.
EOF
全員に返信(対話型。$EDITOR が必要です。代わりに上記のテンプレート方式を使用してください)。
himalaya message reply 42 --all
メールを転送する
# Get forward template and pipe with modifications
himalaya template forward 42 | sed 's/^To:.*/To: [email protected]/' | himalaya template send
新しいメールを作成する
対話型操作なし(Hermes からはこちらを使用) — 標準入力からメッセージをパイプで渡します。
cat << 'EOF' | himalaya template send
From: [email protected]
To: [email protected]
Subject: Test Message
Hello from Himalaya!
EOF
または、ヘッダーフラグを指定します。
himalaya message write -H "To:[email protected]" -H "Subject:Test" "Message body here"
注:himalaya message write をパイプ入力なしで実行すると、$EDITOR が開きます。これは pty=true とバックグラウンドモードを組み合わせて使用できますが、パイプ入力のほうが簡単で信頼性も高いです。
メールの移動/コピー
フォルダーに移動します(先に移動先のフォルダーを指定し、次にメッセージ ID を指定します)。
himalaya message move "Archive" 42
フォルダーにコピーします(先にコピー先のフォルダーを指定し、次にメッセージ ID を指定します)。
himalaya message copy "Important" 42
メールを削除する
himalaya message delete 42
フラグを管理する
フラグを追加します。
himalaya flag add 42 --flag seen
フラグを削除します。
himalaya flag remove 42 --flag seen
複数のアカウント
アカウントを一覧表示します。
himalaya account list
特定のアカウントを使用します。
himalaya --account work envelope list
添付ファイル
メッセージから添付ファイルを保存します。
himalaya attachment download 42
特定のディレクトリに保存します。
himalaya attachment download 42 --downloads-dir ~/Downloads
出力形式
ほとんどのコマンドは、構造化出力用の --output に対応しています。
himalaya envelope list --output json
himalaya envelope list --output plain
デバッグ
デバッグログを有効にします。
RUST_LOG=debug himalaya envelope list
バックトレース付きの完全なトレースを出力します。
RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope list
ヒント
- 詳しい使い方は、
himalaya --helpまたはhimalaya <command> --helpを使用してください。 - メッセージ ID は現在のフォルダーを基準とします。フォルダーを変更した後は、一覧を再表示してください。
- 添付ファイル付きのリッチメールを作成する場合は、MML 構文を使用してください(
references/message-composition.mdを参照)。 - パスワードは
pass、システムのキーリング、またはパスワードを出力するコマンドを使用して安全に保存してください。