---
name: holomoc-email
description: "Mengelola email Holomoc Indonesia via Himalaya CLI (IMAP/SMTP): list, baca, cari, kirim, balas, forward, hapus, dan pindahkan email. Gunakan saat user berkata 'kirim email', 'cek email', 'baca email', 'balas email', 'forward email', 'cari email', 'hapus email', 'cek inbox', atau 'email baru'."
metadata:
  version: 2.1.0
  category: communication
---

# Holomoc Email (Himalaya CLI)

Menggunakan `himalaya` untuk mengelola email IMAP/SMTP dari terminal. Skill ini diadaptasi untuk kebutuhan email Holomoc Indonesia.

## Referensi Detail

Lihat file berikut untuk panduan lengkap:
- `references/configuration.md`: Konfigurasi akun, auth, backend setup.
- `references/message-composition.md`: Format MML untuk compose dan attachment.
- `references/gmail-locale-folders.md`: Nama folder Gmail lokal (Indonesia) & troubleshooting.

## Step 1: Setup & Verifikasi

```bash
# Cek apakah himalaya terinstall
himalaya --version

# Konfigurasi akun (jika belum)
himalaya account configure
```

Config path: `~/.config/himalaya/config.toml`.

**⚠️ Hermes Profile Context:** Config himalaya untuk profile `holomoc-admin` tersimpan di path non-standar:
```
/home/ubuntu/.hermes/profiles/holomoc-admin/home/.config/himalaya/config.toml
```
Untuk menggunakannya, SET `HOME` dulu sebelum setiap perintah himalaya:
```bash
HOME=/home/ubuntu/.hermes/profiles/holomoc-admin/home himalaya <command>
```
Jika tidak set HOME, himalaya akan membaca dari `~/.config/himalaya/config.toml` yang mungkin tidak ada atau bukan config profile ini.

Prefer password managers/keyrings untuk credentials; jangan paste secrets ke chat/logs.

---

## Step 2: Baca & Cari Email

### Step 2a: Lihat Daftar Folder
```bash
himalaya folder list
```

### Step 2b: Lihat Daftar Email (Inbox)
```bash
himalaya envelope list
himalaya envelope list --folder "Inbox" --page 1 --page-size 20
```

### Step 2c: Filter Pencarian
```bash
# Cari berdasarkan pengirim
himalaya envelope list from alice@example.com

# Cari berdasarkan subjek
himalaya envelope list subject invoice

# Cari berdasarkan tanggal
himalaya envelope list date 2026-06-01
```

### Step 2d: Baca Isi Email
```bash
himalaya message read <id>
```

---

## Step 3: Kirim & Balas Email

### Step 3a: Kirim Email Baru

Gunakan MML untuk attachment dan rich messages. Baca `references/message-composition.md` terlebih dahulu.

```bash
# Tulis email dengan editor
himalaya message write

# Kirim dari template file
himalaya template send < /tmp/message.txt
```

**Format file template (`/tmp/message.txt`):**
```
From: sender@holomoc.com
To: recipient@example.com
Cc: other@example.com
Subject: Judul Email

Isi email...
```

### Step 3b: Balas Email
```bash
# Opsi 1: Set EDITOR dan reply interaktif
EDITOR=cat himalaya message reply <id>
# (Keterbatasan: langsung kirim tanpa edit)

# Opsi 2 (disarankan): Gunakan template send dengan header manual
# 1. Baca dulu email yang akan dibalas
himalaya message read <id>
# 2. Buat file balasan dengan header In-Reply-To
cat > /tmp/balasan.txt << 'EOF'
From: sender@holomoc.com
To: recipient@example.com
Subject: Re: Original Subject
In-Reply-To: <message-id-from-original>

Isi balasan...
EOF
# 3. Kirim
himalaya template send < /tmp/balasan.txt
```

### Step 3c: Forward Email
```bash
himalaya message forward <id>
```

Gunakan metode `template send` yang sama seperti reply jika `message forward` membutuhkan editor.

---

## Step 4: Atur & Organisasi Email

```bash
# Salin email ke folder lain
himalaya message copy <id> <folder>

# Pindahkan email ke folder lain
himalaya message move <id> <folder>

# Hapus email
himalaya message delete <id>

# Tandai sudah dibaca
himalaya flag add <id> --flag seen

# Tandai belum dibaca
himalaya flag remove <id> --flag seen
```

---

## MCP Integration Patterns

### Sequential Orchestration
Workflow Email memiliki urutan langkah yang WAJIB diikuti:
- **Membaca Email**: Step 1 (Cek Setup) → Step 2a (Cek Folder) → Step 2b (List Email) → Step 2d (Baca Email)
- **Mengirim Email**: Step 1 (Cek Setup) → Step 3a (Tulis & Kirim)
- **Membalas Email**: Step 2d (Baca Email Asli) → Step 3b (Buat Balasan) → Kirim
- Jangan kirim email sebelum verifikasi alamat tujuan dan isi pesan.

### Multi-MCP (Cross-Skill Coordination)
- **holomoc-email → arsip-document**: Jika user menerima email dengan attachment penting dan berkata "arsipkan", gunakan skill `arsip-document` untuk menyimpan file.
- **holomoc-email → mom**: Jika user menerima undangan rapat via email dan berkata "buat mom", arahkan ke skill `mom`.

### Iterative Refinement
- Jika `himalaya message reply` gagal karena `$EDITOR` tidak diset, gunakan metode `template send` alternatif.
- Jika pengiriman gagal dengan "Folder doesn't exist", buat folder "Sent" secara manual sebagai solusi.
- Jika pencarian email tidak menemukan hasil, coba variasi kata kunci atau filter tanggal yang lebih luas.

---

## Agent Iteration & Evaluation Guidance

### Trigger Phrase Testing
Skill ini akan terpanggil saat user menggunakan kata/frasa:
- ✅ "kirim email", "email baru", "buat email"
- ✅ "cek email", "cek inbox", "lihat email", "baca email"
- ✅ "balas email", "reply email", "forward email"
- ✅ "cari email", "hapus email", "pindahkan email"
- ✅ "cek email [nama orang/perusahaan]"

Jika skill terlalu sering aktif di luar konteks (overtriggering), persempit deskripsi di frontmatter.

### Failure Recovery
- **himalaya not found**: Install himalaya CLI via `cargo install himalaya` atau package manager.
- **"cannot get editor from env var"**: Gunakan metode `template send` (Step 3b Opsi 2) — jangan gunakan `message reply` langsung.
- **"Folder doesn't exist" saat kirim**: Buat folder "Sent" manual: `himalaya folder create "Sent"`.
- **IMAP auth gagal**: Pastikan menggunakan App Password (jika Gmail dengan 2FA) — 16 karakter tanpa spasi.
- **Folder list locale mismatch**: Cek nama folder asli dengan `himalaya folder list`, gunakan nama dari list tersebut.

### Precondition Verification
Sebelum menjalankan operasi apa pun, WAJIB verifikasi:
1. ✅ `himalaya` CLI terinstall dan bisa dijalankan (`himalaya --version`)
2. ✅ Akun email sudah dikonfigurasi (`himalaya account list` atau cek `~/.config/himalaya/config.toml`)
3. ✅ Koneksi IMAP/SMTP tersedia
4. ✅ Untuk kirim/balas: alamat tujuan valid, subject tidak kosong, isi pesan ada

---

## Troubleshooting

### `himalaya message reply` gagal: `cannot get editor from env var`

Saat membalas email dengan `himalaya message reply <id>`, error berikut muncul jika `$EDITOR` tidak diset:
```
Error: cannot get editor from env var
   0: environment variable not found
```

**Penyebab:** `himalaya message reply` membuka editor teks interaktif (`$EDITOR`) untuk mengedit balasan. Di environment server tanpa editor, variabel `$EDITOR` tidak terdefinisi.

**Solusi (2 opsi):**
1. **Set EDITOR sementara:**
   ```bash
   EDITOR=cat himalaya message reply <id>
   ```
   Tapi ini langsung mengirim tanpa bisa edit — tidak ideal.

2. **Gunakan `template send` dengan header manual (disarankan):**
   Baca dulu email yang akan dibalas dengan `himalaya message read <id>`, lalu buat file teks baru dengan header `In-Reply-To` dan kirim via `template send`:
   ```bash
   cat /tmp/balasan.txt | himalaya template send
   ```
   Format file:
   ```
   From: sender@example.com
   To: recipient@example.com
   Subject: Re: Original Subject
   In-Reply-To: <message-id>

   Isi balasan...
   ```
   Catatan: `In-Reply-To` header tidak wajib untuk pengiriman, tapi membantu threading di Gmail.

### "Folder doesn't exist" saat kirim email (Gmail locale)

Gmail di luar AS sering memakai nama folder lokal, misal:
- Indonesia: `[Gmail]/Surat Terkirim` (bukan `[Gmail]/Sent Mail`)
- Indonesia: `[Gmail]/Draf`, `[Gmail]/Tong Sampah`

Saat `himalaya template send` / `himalaya message send` gagal dengan error:
```
cannot add IMAP message → Folder doesn't exist
```

**Penyebab:** Himalaya default menyimpan salinan ke folder "Sent", tapi folder itu tidak ada di Gmail Indonesia.

**Solusi:** Buat folder "Sent" secara manual:
```bash
himalaya folder create "Sent"
```
Setelah itu kirim ulang email. Opsional, mapping `folder.sent` di config juga bisa ditambahkan:
```toml
[accounts.<name>.folder]
sent = "[Gmail]/Surat Terkirim"
```

Catatan: Mapping `folder.sent` tidak selalu di-respect oleh `template send` / `message send` — pembuatan folder "Sent" adalah solusi yang paling reliable.

### IMAP auth gagal

Gmail requires App Password jika 2FA aktif. Gunakan format 16 karakter tanpa spasi.
Config gunakan `backend.auth.raw` atau backend.auth.cmd dengan password manager.

### Folder list locale mismatch

Cek nama folder asli dengan:
```bash
himalaya folder list
```
Gunakan nama folder dari list tersebut di mapping alias config.

## Safety

- Confirm before sending, deleting, or moving many messages.
- Use `--account` when multiple accounts exist.
- Quote exact message IDs in summaries.
