DAY 2 · SECTION 7 · HANDS-ON LAB

Skill AI Agent untuk
Mengelola Email

Sekarang agent yang sama kita pakai untuk email. Setelah skill dipasang, dia bisa meringkas inbox, memberi label, dan mengirim dokumen setelah Anda setujui.

Day 2Section 7Praktik bersama
Show me my latest 5 emails using the gmail-skills skill.
📬 Latest 5 emails
1. Dicoding · Diskon 81% · 8 min ago (unread)
2. Google · Security alert · 19 min ago (unread)
fetched: 5 snippets, full content: none
Inbox saya berantakan. Hapus semua email promo bulan lalu.
Tidak bisa. Menghapus email dilarang di aturan saya. Yang bisa saya lakukan: beri label AI-Triage/Newsletter, dan itu bisa dibatalkan kapan saja.

navigasi  ·  F fullscreen  ·  ⌘P export PDF

SEBELUM MULAI

Pasang gmail-skills untuk mengelola email

Agent sudah terhubung ke Google sejak Section 4. Sekarang kita tambahkan Gmail sekaligus aturan tentang apa yang boleh dan tidak boleh dilakukan di inbox.

Yang sudah ada

Drive, Docs, dan Slides sudah tersambung. Agent bisa membaca file dan menyimpan hasilnya.

Yang belum

Izin Gmail belum ditambahkan. Tanpa skill, cara merapikan inbox juga masih ditentukan sendiri oleh agent setiap kali.

Yang kita pasang

Satu file skill berisi enam playbook, plus satu blok aturan yang berlaku di semua sesi.

Hari ini kita coba langsung apa yang boleh dan tidak boleh dilakukan agent di Gmail
LIMA PEKERJAAN YANG DICOBA

Hari ini kita coba lima pekerjaan di Gmail

Kita mulai dari baca email, lalu bertahap sampai memberi label dan mengirim dokumen dengan persetujuan.

1

Cek email terbaru

Ambil lima email terbaru. Di tahap ini agent hanya membaca.

2

Ringkasan harian

Email 24 jam terakhir diringkas jadi satu pesan: perlu tindakan, cukup tahu, atau bisa dilewati.

3

Rekap mingguan per orang

Rekap siapa saja yang berkirim email minggu ini dan topik yang dibahas.

4

Label otomatis

Email yang belum berlabel diklasifikasi ke AI-Triage/. Ini pertama kalinya agent mengubah sesuatu di Gmail.

5

Kirim dokumen

BRD dari Section 6 dikirim lewat email, setelah dicek isinya dan Anda setujui.

Empat playbook hanya membaca. Untuk aksi yang mengubah atau mengirim sesuatu, agent harus menunjukkan dry run dan menunggu persetujuan
DUA LAPIS ATURAN

Skill mengatur cara kerja, AGENTS.md membatasi aksinya

Kita pakai dua lapis aturan karena fungsinya berbeda.

SKILL.md

SKILL.md berisi enam playbook, perintah gog yang dipakai, batas hasil, dan format output. Aturan ini dipakai saat skill dijalankan.

guardrails.md → AGENTS.md

guardrails.md berisi larangan untuk hapus, balas, dan kirim email. Setelah masuk ke AGENTS.md, aturan ini dibaca di setiap sesi.

Jadi meskipun skill tidak terbaca, larangan di AGENTS.md tetap berlaku
ALUR KERJANYA

Dari Telegram sampai Gmail

Setup-nya hanya memakai dua file teks. Tidak ada kode baru yang perlu ditulis.

TelegramgatewayAGENTS.mdgmail-skillsgog CLIGmail

Baca

Semua perintah baca memakai --readonly dan batas --max. Empat playbook hanya bekerja sampai tahap membaca.

Label

Hanya label di dalam AI-Triage/. Label lain dan label buatan Anda sendiri tidak boleh disentuh.

Kirim

Email boleh dikirim ke alamat yang Anda tentukan, tapi selalu lewat dry run dan persetujuan terlebih dahulu.

Satu hal yang memang tidak kita berikan: akses untuk menghapus email
YANG PERLU DISIAPKAN

Sebelum mulai, cek enam hal ini

Pastikan keenamnya siap supaya latihan berikutnya bisa berjalan.

01

VPS dan bot Telegram hidup

Hasil Section 3, dan bot masih membalas pesan Anda.

02

Koneksi Google sudah jadi

Section 4 selesai: gog terpasang, OAuth beres, AGENTS.md sudah ada.

03

OAuth app sudah Published

Kalau masih Testing, token mati tiap 7 hari dan cron ikut mati diam-diam.

04

Starter kit sudah di laptop

Download dari bit.ly/gmail-starter-kit, lalu ekstrak.

05

Gmail dengan email asli

Pakai akun yang inbox-nya memang aktif supaya hasil digest dan latihan lainnya terlihat.

06

Telegram di komputer yang sama

Dua file dari starter kit dilampirkan lewat Telegram desktop atau web.telegram.org.

Tahap ini tidak perlu install tambahan dan tidak membutuhkan billing account
TAHAP 1 DARI 5 · SEBELUM HARI-H

Sambungkan Gmail ke agent

Bagian ini sebaiknya dikerjakan sehari sebelum sesi. Saat proses auth dimulai, link-nya berlaku sekitar 15 menit.

Nyalakan Gmail API

Di Google Cloud console, project yang sama dengan Section 4.

Tambah izin Gmail

Izin Drive, Docs, dan Slides tetap dipertahankan. Kita hanya menambahkan Gmail.

Lewat jalur Section 4

Proses auth tetap mengikuti jalur Section 4, bukan lewat bot Telegram biasa.

Kalau gog auth list sudah menampilkan gmail, lewati tahap ini dan langsung ke Tahap 2
1
TAHAP 1 · SAMBUNGKAN GMAIL

Buka Google Cloud console

01

Buka console.cloud.google.com di browser.

  • Pakai akun Google yang sama dengan Section 4
  • Kalau punya beberapa akun, pastikan yang aktif akun bot-nya
console.cloud.google.com
01 BUKA DI BROWSER
TAHAP 1 · SAMBUNGKAN GMAIL

Pastikan project-nya benar

02

Cek nama project di bagian atas halaman.

  • Harus project yang dipakai Section 4, bukan project baru
  • Kalau salah project, Gmail API-nya nyala di tempat yang salah
02 NAMA PROJECT
TAHAP 1 · SAMBUNGKAN GMAIL

Masuk ke API Library

03

Klik menu di kiri atas, lalu APIs & Services → Library.

  • Menu-nya ikon tiga garis di sebelah tulisan Google Cloud
  • Pilih Library, bukan Enabled APIs
03 LIBRARY
TAHAP 1 · SAMBUNGKAN GMAIL

Cari gmail api

04

Ketik gmail api di kotak pencarian.

  • Hasil pencarian bisa lebih dari satu, yang kita mau bernama persis Gmail API
04 KETIK DI SINI
TAHAP 1 · SAMBUNGKAN GMAIL

Buka kartu Gmail API

05

Klik kartu Gmail API di hasil pencarian.

  • Keterangannya: View and manage Gmail mailbox data
  • Abaikan hasil lain seperti Gmail Postmaster Tools
05 KLIK KARTU INI
TAHAP 1 · SAMBUNGKAN GMAIL

Klik Enable

06

Klik tombol Enable, lalu tunggu sampai halamannya berganti.

  • Prosesnya beberapa detik
  • Gratis, tidak perlu billing account
06 ENABLE
TAHAP 1 · SAMBUNGKAN GMAIL

Pastikan status Enabled

07

Cek baris Status di halaman detail.

  • Harus tertulis Enabled
  • Kalau masih Disabled, ulangi klik Enable
Sampai di sini belum ada yang berubah di agent. Baru API-nya yang dinyalakan.
07 STATUS: ENABLED
TAHAP 1 · PROMPT

Prompt 1 menambah izin Gmail

1

Tambah izin Gmail

Isi EMAIL dulu, sisanya salin apa adanya
  • Daftar layanannya jangan diubah, supaya izin Drive, Docs, dan Slides yang lama tidak hilang
  • Prompt ini dikirim lewat jalur Section 4, bukan ke bot Telegram biasa
  • Setelah dikirim, ada jendela 15 menit untuk menyelesaikan izinnya di browser
Isi kotak oranye di baris pertama saja. Kata EMAIL di badan prompt biarkan, itu memang dibaca agent sebagai rujukan.
prompt-1 · tambah-izin-gmail.txt
EMAIL = Extend my gog authorization to include Gmail. Run exactly: export $(grep GOG_KEYRING_PASSWORD ~/.openclaw/.env) gog auth list gog auth add EMAIL --services drive,docs,slides,gmail --remote --step 1 Keep the services list exactly as written so the existing Drive, Docs, and Slides access stays. Never use the listener flow (no gog auth add without --remote), never touch GOG_KEYRING_PASSWORD. Report the current auth list, then the auth_url on its own line, and tell me: open it, pick EMAIL in the account chooser, tick ALL scope checkboxes including Gmail, approve, and paste back the FULL redirect URL within 15 minutes. On any error, paste it exactly and stop.
TAHAP 1 · SAMBUNGKAN GMAIL

Isi baris EMAIL dulu

08

Tempel Prompt 1 yang kotak EMAIL-nya sudah terisi.

  • Isinya alamat Gmail yang mau dipakai agent
  • Jangan kirim dulu sebelum baris ini terisi
08 GANTI BAGIAN INI
TAHAP 1 · SAMBUNGKAN GMAIL

Kirim Prompt 1

09

Kalau barisnya sudah terisi, kirim pesannya.

  • Balasan pertama berisi daftar izin yang sekarang
  • Setelah itu agent mengirim satu link panjang
09 SUDAH TERISI
TAHAP 1 · SAMBUNGKAN GMAIL

Buka link dari agent

10

Klik link auth yang dikirim agent, buka di browser.

  • Link ini berlaku 15 menit
  • Kalau kelewat, minta agent membuatkan link baru
10 LINK BERLAKU 15 MENIT
TAHAP 1 · SAMBUNGKAN GMAIL

Pilih akun yang benar

11

Pilih akun Google yang tadi Anda tulis di baris EMAIL.

  • Salah akun berarti izinnya menempel di email yang salah
11 PILIH AKUN INI
TAHAP 1 · SAMBUNGKAN GMAIL

Buka Advanced, lalu lanjutkan

12

Di layar peringatan, klik Advanced lalu Go to jarvis-agent (unsafe).

  • Layar ini muncul karena app-nya milik Anda sendiri dan belum diverifikasi Google
  • Nama app-nya mengikuti nama project Anda
12 LANJUTKAN DI SINI
TAHAP 1 · SAMBUNGKAN GMAIL

Centang Select all

13

Centang semua kotak izin, termasuk yang Gmail.

  • Pastikan izin Gmail ikut dicentang. Kalau tidak, perintah Gmail akan gagal.
  • Kalau ragu, klik Select all di paling atas
13 SELECT ALL
TAHAP 1 · SAMBUNGKAN GMAIL

Klik Continue

14

Scroll ke bawah, lalu klik Continue.

  • Jangan klik Cancel, izinnya tidak akan tersimpan
14 CONTINUE
TAHAP 1 · SAMBUNGKAN GMAIL

Salin URL dari address bar

15

Halaman error ini memang yang diharapkan. Salin seluruh URL-nya.

  • Tulisan This site can’t be reached itu normal
  • Yang dibutuhkan agent adalah URL panjang di address bar, salin semuanya
15 SALIN SELURUH URL
TAHAP 1 · SAMBUNGKAN GMAIL

Tempel URL-nya ke chat

16

Kembali ke chat, tempel URL tadi, lalu kirim.

  • Agent sudah tahu apa yang harus dijalankan dengan URL ini
  • Tempel utuh, jangan dipotong
16 TEMPEL URL DI SINI
TAHAP 1 · SAMBUNGKAN GMAIL

Pastikan gmail sudah masuk

17

Cek daftar layanan di balasan agent.

  • Harus tertulis docs,drive,gmail,slides
  • Kalau gmail belum ada, ulangi dari Prompt 1
17 GMAIL SUDAH MASUK
TAHAP 1 · PROMPT

Prompt 2 menguji izinnya

2

Uji baca Gmail

Isi EMAIL, lalu salin apa adanya
  • Daftar izin saja belum cukup. Prompt ini benar-benar mencoba membaca inbox.
  • Hasil kosong tetap dianggap berhasil, yang penting perintahnya tidak error
  • Prompt ini tidak memperbaiki apa pun, cuma mengecek
prompt-2 · uji-baca-gmail.txt
EMAIL = Verify the Gmail scope end-to-end. Run exactly: export $(grep GOG_KEYRING_PASSWORD ~/.openclaw/.env) && gog auth list, then gog --readonly gmail search 'newer_than:1d' --max 3 --json. Success = the auth list shows gmail for EMAIL and the search returns JSON (an empty result array is still success). Report two lines: auth: «services list», gmail read: ok | fail: «exact error». Do not fix anything; on error paste it exactly and stop.
TAHAP 1 · SAMBUNGKAN GMAIL

Kirim Prompt 2

18

Tempel Prompt 2, isi EMAIL, lalu kirim.

  • Balasannya cuma dua baris
  • Baris kedua yang menentukan: gmail read
18 ISI EMAIL, LALU KIRIM
TAHAP 1 · SAMBUNGKAN GMAIL

Kalau muncul Gmail API is not enabled

19

Ini error yang paling sering muncul di sini.

  • Artinya izinnya sudah ada, tapi API-nya belum dinyalakan
  • Ulangi langkah 03 sampai 07, lalu kirim ulang Prompt 2
Kalau errornya insufficient authentication scopes, berarti ada kotak izin yang belum dicentang. Ulangi dari Prompt 1.
19 API BELUM NYALA
TAHAP 1 · SAMBUNGKAN GMAIL

Pastikan gmail read: ok

20

Kalau berhasil, hasilnya seperti ini.

  • Baris pertama: docs,drive,gmail,slides
  • Baris kedua: gmail read: ok
20 GMAIL READ: OK
CHECKPOINT 1

Checkpoint 1: Gmail sudah tersambung

Sebelum lanjut ke pemasangan skill, cek tiga hal ini.

Gmail API berstatus Enabled

Di halaman API/Service Details, baris Status tertulis Enabled.

Daftar izin memuat gmail

Balasan agent menampilkan docs,drive,gmail,slides untuk akun yang benar.

Perintah baca Gmail berhasil

Baris gmail read: ok. Hasil pencarian kosong tetap dihitung berhasil.

Kalau ketiganya sudah, sisa sesi bisa dikerjakan lewat Telegram saja
TAHAP 2 DARI 5 · DI TELEGRAM

Pasang gmail-skills dan guardrails

Kita pasang dua file lewat Telegram, lalu cek lagi dari sesi baru untuk memastikan keduanya benar-benar terbaca.

Satu file, satu pesan

File dan prompt-nya dikirim bersamaan. Tidak perlu SSH dan tidak ada scp.

Pasang guardrails setelah skill

Setelah skill terpasang, isi guardrails.md ditambahkan ke AGENTS.md.

Diuji dari sesi baru

Terpasang dan terbaca itu dua hal berbeda, jadi kita reset dulu lalu cek lagi.

File zip tidak perlu dikirim. Kirim SKILL.md dan guardrails.md satu per satu
2
ISI STARTER KIT

Dua file dengan fungsi yang berbeda

Keduanya hanya file markdown, tapi dipakai di tempat yang berbeda.

SKILL.md

Enam playbook: cek email terbaru, digest harian, rekap mingguan per orang, label otomatis, notifikasi email masuk, dan kirim email. Masing-masing menyebut perintah gog-nya, batas jumlah hasil, dan format pesannya.

guardrails.md

Sebelas aturan keras yang ditempel ke AGENTS.md: jangan hapus, jangan balas atau teruskan, jangan kirim tanpa persetujuan, jangan sentuh auth. Berlaku di semua sesi.

SKILL.md dipakai saat skill dijalankan. AGENTS.md tetap dibaca di setiap sesi
TAHAP 2 · PASANG SKILL

Mulai dari sesi baru

21

Kirim /reset, tunggu balasan Session reset.

  • Percakapan sebelumnya jangan ikut terbawa
  • Tunggu balasannya muncul sebelum kirim prompt berikutnya
21 SESSION RESET
TAHAP 2 · PASANG SKILL · PROMPT

Prompt 3 memeriksa, bukan memasang

3

Pre-flight check

Salin apa adanya
  • Tiga perintah pengecekan, tidak ada yang diinstall atau diubah
  • Kalau hasil grep pertama kosong, itu hasil yang benar karena skill memang belum terpasang.
  • Yang dibaca cuma baris verdict paling bawah
prompt-3 · pre-flight-check.txt
Check whether my OpenClaw VPS is ready for the gmail-skills training. Run exactly these three commands and nothing else: openclaw skills list | grep -i gmail-skills, then gog --version, then export $(grep GOG_KEYRING_PASSWORD ~/.openclaw/.env) && gog auth list. Do not install, update, or change anything. Report one line each in exactly this format: skill: absent (correct, fresh install ahead) | ALREADY INSTALLED, gog: <version> | missing, auth: <account>: <services> | none, verdict: ready (continue to Step 3) | gmail scope missing (do Step 1 first) | blocked: <which line failed>. An empty grep result on the first command is the GOOD outcome, not an error. The verdict is "ready" only if the services list includes gmail. If any command errors, paste its exact error text instead of interpreting it.
TAHAP 2 · PASANG SKILL

Kirim Prompt 3

22

Tempel Prompt 3, lalu kirim.

  • Balasannya empat baris pendek
  • Kalau ada perintah yang error, agent menempelkan teks errornya apa adanya
22 TEMPEL, LALU KIRIM
TAHAP 2 · PASANG SKILL

Baca baris verdict

23

Yang menentukan cuma baris paling bawah.

  • skill: absent memang yang kita harapkan, artinya belum pernah terpasang
  • verdict: ready berarti boleh lanjut
23 VERDICT: READY
CARA MEMBACA HASIL PRE-FLIGHT

Empat kemungkinan hasilnya

Kalau verdict-nya bukan ready, cocokkan dengan baris di bawah ini.

1

verdict: ready

Semua siap. Lanjut download starter kit.

2

skill: ALREADY INSTALLED

Skill sudah ada dari sesi sebelumnya. Kalau ingin demo dari kondisi awal, parkir dulu lewat langkah troubleshooting.

3

gmail scope missing

Tahap 1 terlewat, atau ada kotak izin yang belum dicentang. Kerjakan Tahap 1, lalu ulangi Prompt 3.

4

gog: missing

Binary gog tidak ditemukan. Kembali ke setup Section 4 sebelum lanjut.

Kalau verdict belum ready, selesaikan masalahnya dulu sebelum lanjut ke pemasangan skill
TAHAP 2 · PASANG SKILL

Download starter kit

24

Buka link di bawah, lalu download file zip-nya.

  • Isinya dua file: SKILL.md dan guardrails.md
  • File zip tidak dikirim ke bot. Nanti kita kirim isinya satu per satu
bit.ly/gmail-starter-kit
24 UNDUH DI LAPTOP
TAHAP 2 · PASANG SKILL

Ekstrak, lalu cek dua filenya

25

Ekstrak zip-nya, buka folder gmail-skills.

  • Harus ada SKILL.md dan guardrails.md
  • Biarkan folder ini terbuka, keduanya dilampirkan satu per satu
Buka Telegram di komputer yang sama supaya lebih gampang saat melampirkan file.
25 DUA FILE
TAHAP 2 · PASANG SKILL · PROMPT

Prompt 4 memasang skill

4

Pasang SKILL.md

Salin apa adanya, lampirkan SKILL.md
  • Prompt ini menyimpan file, restart gateway, lalu langsung mengecek hasilnya
  • Kalau lampiran tidak terbaca, agent harus berhenti dan melapor. File tidak boleh dibuat ulang sendiri.
  • Lampirkan SKILL.md di pesan yang sama
Prompt ini me-restart gateway yang dipakai bot itu sendiri. Jeda 15 sampai 30 detik itu normal.
prompt-4 · pasang-skill.txt
Install the gmail-skills skill. Attached: SKILL.md. Run exactly: mkdir -p ~/.openclaw/skills/gmail-skills, then save the attachment as ~/.openclaw/skills/gmail-skills/SKILL.md byte-for-byte as sent, then systemctl --user restart openclaw-gateway.service, then openclaw skills list | grep -i gmail-skills. If there is no attachment on this message, stop and tell me, do not create the file yourself. Never openclaw skills install (this is a local folder, not a ClawHub skill), never edit or reformat the attached file. Success = the last command prints gmail-skills. Report exactly two lines: registered: yes | no, description shown: «paste it». If not registered, paste the output of ls -la ~/.openclaw/skills/gmail-skills/ and stop, do not keep restarting.
TAHAP 2 · PASANG SKILL

Tempel Prompt 4 dulu

26

Tempel prompt-nya, filenya menyusul di langkah berikutnya.

  • Prompt dan file harus terkirim dalam satu pesan
  • Kalau sudah tertempel, jangan tekan kirim dulu
26 TEMPEL, JANGAN KIRIM
TAHAP 2 · PASANG SKILL

Klik ikon klip, pilih File

27

Sekarang lampirkan SKILL.md ke pesan yang sama.

  • Pilih File, jangan Photo or Video
  • Kalau dikirim sebagai foto, isinya tidak terbaca agent
27 PILIH FILE
TAHAP 2 · PASANG SKILL

Pilih SKILL.md

28

Cari folder starter kit, pilih SKILL.md, klik Open.

  • Yang ini dulu. guardrails.md menyusul di prompt berikutnya
28 SKILL.MD
TAHAP 2 · PASANG SKILL

Kirim prompt dan file bersamaan

29

Pastikan prompt-nya masih ada di kolom caption, lalu kirim.

  • Ukuran filenya sekitar 7 KB
  • Kalau caption-nya hilang, batalkan dan ulangi dari langkah tempel prompt
29 KIRIM
TAHAP 2 · PASANG SKILL

Pastikan registered: yes

30

Balasannya dua baris.

  • registered: yes
  • description shown: keterangan skill-nya ikut ditampilkan
Kalau tidak ada balasan sama sekali setelah 30 detik, kirim /reset lalu minta: Run exactly openclaw skills list | grep -i gmail-skills and paste the output.
30 REGISTERED: YES
TAHAP 2 · PASANG SKILL · PROMPT

Prompt 5 memasang aturannya

5

Pasang guardrails

Salin apa adanya, lampirkan guardrails.md
  • Isi guardrails.md ditempel ke ujung AGENTS.md, file yang dimuat OpenClaw di setiap sesi
  • Pengecekan grep mencegah blok aturan ditambahkan dua kali.
  • Tidak ada restart gateway di sini, AGENTS.md dibaca ulang tiap sesi baru
prompt-5 · pasang-guardrails.txt
Install the Gmail guardrails. Attached: guardrails.md. First run ls ~/.openclaw/workspace/AGENTS.md; if it does not exist, stop and report what the workspace directory contains instead. Then save the attachment as ~/guardrails-gmail.md byte-for-byte as sent, then run exactly: WS=~/.openclaw/workspace/AGENTS.md grep -q "## Gmail guardrails (hard rules)" "$WS" || { echo "" >> "$WS"; cat ~/guardrails-gmail.md >> "$WS"; } rm ~/guardrails-gmail.md tail -15 "$WS" Never edit, reword, or soften the attached text, and never append the block twice (the grep guard prevents it). No gateway restart is needed; AGENTS.md loads into every new session. Report two lines: guardrails: appended | already present, tail: «the tail output».
TAHAP 2 · PASANG SKILL

Tempel Prompt 5

31

Sama seperti tadi: prompt dulu, file menyusul.

  • Kalau AGENTS.md belum ada, agent diminta berhenti dan melapor
  • AGENTS.md dibuat di Section 4, jadi seharusnya sudah ada
31 TEMPEL, JANGAN KIRIM
TAHAP 2 · PASANG SKILL

Klik ikon klip, pilih File

32

Lampirkan guardrails.md ke pesan yang sama.

  • Pilih File lagi, bukan Photo or Video
32 PILIH FILE
TAHAP 2 · PASANG SKILL

Pilih guardrails.md

33

Kali ini file yang satunya.

  • Ukurannya jauh lebih kecil, sekitar 1 KB
33 GUARDRAILS.MD
TAHAP 2 · PASANG SKILL

Kirim pesannya

34

Cek caption-nya masih utuh, lalu kirim.

  • Perintah bash di dalam prompt ikut terkirim sebagai teks biasa
34 KIRIM
TAHAP 2 · PASANG SKILL

Pastikan guardrails: appended

35

Balasannya dua baris: status dan potongan akhir AGENTS.md.

  • guardrails: appended untuk pemasangan pertama
  • Kalau tertulis already present, blok-nya memang sudah ada dan tidak digandakan
35 APPENDED
ISI GUARDRAILS

Yang dilarang di semua sesi

Ada sebelas aturan. Ini beberapa yang paling relevan untuk latihan hari ini.

1

Hapus email

Agent tidak boleh delete, trash, untrash, empty trash, atau menandai spam. Kalau diminta menghapus, agent harus menolak dan menawarkan label sebagai alternatif.

2

Balas dan teruskan

Reply, forward, serta membuat atau mengirim draft tidak diizinkan. Kalau perlu mengirim pesan, gunakan alur email baru dengan persetujuan.

3

Kirim tanpa persetujuan

Agent boleh mengirim ke alamat yang Anda tentukan, tetapi harus dry run dulu lalu menunggu persetujuan.

4

Kirim dari cron

Cron dan heartbeat tidak boleh mengirim email karena tidak ada proses persetujuan manusia saat job berjalan.

5

Sentuh auth

gog auth, credentials, dan ~/.openclaw/.env tidak boleh disentuh dari chat.

Untuk perubahan di inbox, agent hanya boleh menambahkan label di dalam AI-Triage/
TAHAP 2 · PASANG SKILL

Cek apakah bot memahami guardrails

36

Tanyakan langsung ke bot untuk melihat aturan yang sedang dia baca.

  • Coba kirim: what guardrails gmail prevention for?
  • Jawabannya harus sesuai dengan guardrails yang baru dipasang.
36 BOT MENJELASKAN SENDIRI
TAHAP 2 · PASANG SKILL

Reset sesi, lalu uji lagi

37

Kirim /reset lagi, tunggu balasannya.

  • Percakapan pemasangan tadi masih membawa konteks skill dan guardrails.
  • Karena itu kita cek lagi dari sesi baru untuk memastikan file benar-benar terbaca.
37 SESSION RESET
TAHAP 2 · PASANG SKILL · PROMPT

Prompt 6 menguji dari sesi baru

6

Uji sesi baru

Salin apa adanya
  • Prompt ini menanyakan dua hal ke bot: skill-nya kelihatan atau tidak, dan aturannya terbaca atau tidak
  • Bot diminta mengutip bullet pertama guardrails persis, bukan meringkasnya
  • Tidak boleh install ulang, restart, atau mengubah file apa pun
prompt-6 · uji-sesi-baru.txt
Fresh-session check of the gmail-skills setup. Run exactly: openclaw skills info gmail-skills | head -20. Success = the output shows "Ready" and "Visible to model: yes". Also answer two questions from your own point of view, without running anything else: (1) can you see and use the gmail-skills skill in this session, yes or no? (2) quote the first bullet of the "Gmail guardrails (hard rules)" section from your loaded instructions, verbatim. Report exactly three lines: info: Ready + visible | fail: «the lines that differ», usable in this session: yes | no, guardrails loaded: «the first bullet» | not found. Do not reinstall, do not restart the gateway, do not edit any files. If the command errors, paste it exactly and stop.
TAHAP 2 · PASANG SKILL

Kirim Prompt 6

38

Tempel di sesi yang baru saja direset, lalu kirim.

  • Sesi ini sama sekali tidak tahu soal pemasangan tadi
38 TEMPEL, LALU KIRIM
TAHAP 2 · PASANG SKILL

Pastikan tiga baris ini lulus

39

Ketiga baris ini memastikan skill dan guardrails terbaca dari sesi baru.

  • info: Ready + visible
  • usable in this session: yes
  • guardrails loaded: bot mengutip Never delete email… dari instruksinya sendiri
39 TIGA BARIS LULUS
CHECKPOINT 2

Checkpoint 2: skill dan aturan terpasang

Jangan masuk ke latihan sebelum keempatnya lulus.

Skill terdaftar

openclaw skills list menampilkan gmail-skills, lengkap dengan keterangannya.

Skill terbaca dari sesi baru

Setelah /reset, baris usable in this session tetap yes.

Guardrails ada di AGENTS.md

Bot bisa mengutip bullet pertamanya tanpa membuka file.

Tab Gmail sudah terbuka

mail.google.com dengan akun yang sama, dibiarkan terbuka sampai sesi selesai.

Kalau baris skill gagal, ulangi Prompt 4. Kalau baris guardrails gagal, ulangi Prompt 5. Setelah itu reset dan cek lagi
TAHAP 3 DARI 5 · TELEGRAM & GMAIL

Jalankan lima latihan Gmail

Setiap latihan memakai satu playbook dari SKILL.md dan dijalankan lewat percakapan biasa di Telegram.

Mulai dari baca, lalu menulis

Mulai dari melihat lima email, meringkasnya, membuat digest, rekap mingguan, lalu menambahkan label.

Prompt-nya pendek

Detailnya sudah ada di dalam skill. Prompt cuma menyebut playbook mana yang dipakai.

Semua dicek di Gmail

Tab Gmail dibiarkan terbuka. Di latihan kelima labelnya muncul di sidebar sambil ditonton.

Empat latihan pertama hanya membaca. Latihan kelima mulai mengubah inbox dengan menambahkan label
3
TAHAP 3 · LIMA LATIHAN · PROMPT

Prompt 7 daftar 5 email

7

Latihan 1 · daftar email

Salin apa adanya
  • Latihan pertama untuk memastikan koneksi Gmail dan skill bekerja dari awal sampai akhir.
  • Cuma snippet, tidak ada isi email yang diambil penuh
  • Baris terakhir melaporkan berapa yang diambil
prompt-7 · daftar-5-email.txt
Show me my latest 5 emails using the gmail-skills skill, playbook "latest mail check", list form. Run export $(grep GOG_KEYRING_PASSWORD ~/.openclaw/.env), then exactly gog --readonly gmail search 'in:inbox' --max 5 --json, and send ONE message in the playbook's list template: one line per email with sender, subject, how long ago, and an (unread) mark. Snippets only, do not fetch any full content. Read-only: no labels, no archive, no delete. On any unexpected error, paste it exactly and stop. After the list, report one line: fetched: 5 snippets, full content: none.
TAHAP 3 · LIMA LATIHAN

Kirim Prompt 7

40

Tempel Prompt 7, lalu kirim.

  • Balasannya satu pesan berisi lima baris
  • Setelah itu satu baris laporan
40 TEMPEL, LALU KIRIM
TAHAP 3 · LIMA LATIHAN

Bandingkan dengan inbox asli

41

Sandingkan daftar di Telegram dengan tab Gmail.

  • Lima email yang sama, urutan yang sama, dari paling atas
  • Tanda (unread) cocok dengan baris tebal di Gmail
  • Baris terakhir: full content: none, jadi memang cuma daftar
41 SATU BARIS PER EMAIL
TAHAP 3 · LIMA LATIHAN · PROMPT

Prompt 8 meringkas isinya

8

Latihan 2 · ringkas email

Salin apa adanya
  • Lima email yang sama, sekarang isinya dibaca
  • Ringkas boleh, tapi tenggat, nominal, dan pertanyaan langsung tidak boleh hilang
  • Isi email diambil dengan --sanitize-content
prompt-8 · ringkas-5-email.txt
Summarize my latest 5 emails using the gmail-skills skill, playbook "latest mail check", summary form. Run the same search (gog --readonly gmail search 'in:inbox' --max 5 --json), then fetch each of the 5 with gog --readonly gmail get «id» --sanitize-content --json, and send ONE message in the playbook's summary template: per email, sender and subject, then 1-2 lines with what it says and what it asks. Keep it short, but never drop a deadline, an amount, or a direct question. Read-only throughout. On any unexpected error, paste it exactly and stop. After the summary, report one line: fetched: 5 snippets + 5 sanitized messages.
TAHAP 3 · LIMA LATIHAN

Kirim Prompt 8

42

Tempel Prompt 8, lalu kirim.

  • Balasannya lebih panjang karena isinya sudah dibaca
42 TEMPEL, LALU KIRIM
TAHAP 3 · LIMA LATIHAN

Cocokkan satu ringkasan dengan email asli

43

Ambil satu ringkasan, buka email aslinya di tab Gmail.

  • Tenggat dan nominal di ringkasan harus sama persis dengan yang di email
  • Kalau angkanya hilang atau berubah, itu yang perlu dibahas
43 5 SNIPPET + 5 ISI PENUH
SATU FLAG YANG PENTING

Kenapa selalu ada --sanitize-content

Ini pertama kalinya agent mengambil isi email, dan dia mengambilnya dalam bentuk yang sudah dibersihkan.

Yang dibuang

Tanda tangan, disclaimer perusahaan, dan riwayat balasan yang menumpuk di bawah.

Efeknya ke token

Isi email jadi jauh lebih pendek, jadi lebih banyak email yang muat dibaca sekali jalan.

Efeknya ke hasil

Model membaca teks bersih, jadi ringkasannya lebih tepat.

`--sanitize-content` membantu agent membaca bagian email yang relevan tanpa membawa banyak teks tambahan
TAHAP 3 · LIMA LATIHAN · PROMPT

Prompt 9 digest harian

9

Latihan 3 · digest sehari

Salin apa adanya
  • Sekarang cakupannya diperluas dari lima email menjadi email 24 jam terakhir.
  • Tiga kelompok: perlu tindakan, cukup tahu, dan yang dilewat
  • Kelompok terakhir cuma dihitung, tidak dirinci satu-satu
prompt-9 · digest-harian.txt
Run the gmail-skills "daily digest" playbook once, right now, exactly as written: the playbook's search (gog --readonly gmail search 'newer_than:1d' --max 30 --json), full content only for needs-action candidates and always with --sanitize-content, and ONE Telegram message in the playbook's template: needs action / FYI / skipped as a count only. Read-only throughout. On any unexpected error, paste it exactly and stop. After the digest, report two lines: fetched: «N» snippets + «N» full messages, buckets: «n» / «n» / «n».
TAHAP 3 · LIMA LATIHAN

Kirim Prompt 9

44

Tempel Prompt 9, lalu kirim.

  • Ini juga isi pesan yang nanti datang tiap pagi jam 07:00
44 TEMPEL, LALU KIRIM
TAHAP 3 · LIMA LATIHAN

Baca tiga kelompoknya

45

Satu pesan, tiga kelompok, plus dua baris laporan.

  • Kelompok perlu tindakan menyebut apa yang diminta dan kapan
  • Kelompok terakhir cuma angka, misalnya Skipped: 9 messages
  • Baris fetched menunjukkan berapa snippet yang dicek dan berapa email yang benar-benar dibuka penuh.
45 TIGA KELOMPOK
TAHAP 3 · LIMA LATIHAN · PROMPT

Prompt 10 rekap per orang

10

Latihan 4 · rekap mingguan

Salin apa adanya
  • Dari sehari jadi seminggu, dan dari urut waktu jadi per orang
  • Isi percakapan cuma diambil untuk 5 pengirim teratas
  • Pengirim otomatis seperti newsletter dijadikan satu baris saja
prompt-10 · rekap-mingguan.txt
Build my weekly connections digest with the gmail-skills skill, playbook "weekly connections digest". Follow the playbook exactly: one search (gog --readonly gmail search 'newer_than:7d' --max 100 --json), group by correspondent from the snippets, fetch full threads only for the top 5 correspondents (at most 3 threads each, always with --sanitize-content), and send ONE Telegram message in the playbook's template: one bullet per person with a topic phrase, automated senders collapsed to a single "skipped" line. Read-only throughout: no labels, no archive, no delete, no send. On any unexpected error, paste it exactly and stop. After the digest, report three lines: skill: used | not visible, fetched: «N» snippets + «N» full threads, safety: read-only confirmed.
TAHAP 3 · LIMA LATIHAN

Kirim Prompt 10

46

Tempel Prompt 10, lalu kirim.

  • Pencariannya sampai 100 email, tapi yang dibuka penuh cuma sedikit
46 TEMPEL, LALU KIRIM
TAHAP 3 · LIMA LATIHAN

Baca hasil per orang

47

Satu baris per orang, plus topik yang dibahas.

  • Baris skill: used memastikan skill-nya memang dipakai
  • Kalau inbox-nya isinya newsletter semua, hasilnya jujur: 0 orang, sekian percakapan otomatis
  • Gmail sendiri tidak menampilkan rekap percakapan dalam format per orang seperti ini.
47 REKAP PER ORANG
SEBELUM LATIHAN KELIMA

Latihan berikutnya: menambahkan label

Empat latihan sebelumnya hanya membaca. Sekarang agent boleh melakukan satu perubahan: menambahkan label.

Hanya menambah label

Agent hanya boleh menambahkan label. Tidak boleh hapus, arsip, atau memindahkan email.

Hanya label AI-Triage/

Semua label diawali AI-Triage/. Label buatan Anda sendiri tidak disentuh.

Harus lewat persetujuan

Agent menampilkan usulan label dalam tabel, lalu berhenti sampai Anda membalas approve.

Kalau klasifikasinya salah, label bisa dipindahkan lagi. Emailnya tetap ada dan tidak dihapus
TAHAP 3 · LIMA LATIHAN · PROMPT

Prompt 11 label otomatis

11

Latihan 5 · label otomatis

Salin apa adanya
  • Empat langkah: buat label, ambil kandidat, usulkan, baru terapkan
  • Agent berhenti setelah tabel usulan dan menunggu balasan approve
  • Flag yang dipakai --add. Tidak ada --remove, tidak ada label di luar AI-Triage/
prompt-11 · label-otomatis.txt
Run the gmail-skills "auto-labeling" playbook, dry run first, exactly as written: gog gmail labels list --json, then create whichever of AI-Triage/Client, AI-Triage/Internal, AI-Triage/Newsletter, AI-Triage/Invoice, AI-Triage/Urgent are missing, with gog gmail labels create "«label»", one per command. Fetch candidates: gog --readonly gmail search 'is:unread -has:userlabels newer_than:1d' --max 20 --json. DRY RUN: classify each message into exactly one of the five labels and send me the proposal as a table (from, subject, proposed label). Apply NOTHING yet; end your message with "reply approve to apply" and wait. Only after I reply "approve": apply with gog gmail messages modify «id» --add "«label»", one message per command. Never --remove, never any label outside AI-Triage/, never delete or archive anything. Report after applying: labeled: «N» messages, per label: «counts».
TAHAP 3 · LIMA LATIHAN

Kirim Prompt 11

48

Tempel Prompt 11, lalu kirim.

  • Lima label dibuat dulu kalau memang belum ada
  • Setelah itu agent berhenti dan menunggu
48 TEMPEL, LALU KIRIM
TAHAP 3 · LIMA LATIHAN

Baca tabel usulannya

49

Belum ada satu pun yang diterapkan di titik ini.

  • Bacakan tabelnya bersama peserta
  • Kalau ada klasifikasi yang kurang tepat, catat dulu. Belum ada perubahan yang diterapkan.
  • Pesannya ditutup dengan reply approve to apply
49 BELUM DITERAPKAN
TAHAP 3 · LIMA LATIHAN

Balas approve

50

Ketik approve, kirim, lalu pindah ke tab Gmail.

  • Persetujuan ini cuma berlaku untuk tabel yang barusan ditampilkan
  • Laporan setelahnya menyebut jumlah per label
50 APPROVE
TAHAP 3 · LIMA LATIHAN

Buka gmail.com

51

Pindah ke tab Gmail, refresh halamannya.

  • Pastikan akunnya sama dengan yang dipakai agent
mail.google.com
51 PINDAH KE TAB GMAIL
TAHAP 3 · LIMA LATIHAN

Cek sidebar Gmail

52

Label AI-Triage muncul di daftar label sebelah kiri.

  • Gmail otomatis menyusunnya bertingkat karena ada tanda /
  • Angka di sebelah kanan label adalah jumlah email yang masuk ke situ
  • Kalau tidak kelihatan, klik More di sidebar
52 LABEL AI-TRIAGE
TAHAP 3 · LIMA LATIHAN

Buka salah satu labelnya

53

Klik AI-Triage/Newsletter atau label yang paling banyak isinya.

  • Emailnya masih di inbox, masih belum dibaca, tidak ada yang dipindah
  • Coba tarik satu email ke label lain: itu cara membatalkannya
53 KLIK LABELNYA
KALAU PERINTAHNYA DITOLAK

Flag-nya --add, bukan --add-label

Nama flag berbeda antar versi gog. Kalau muncul error seperti ini, cocokkan dulu namanya sebelum mengulang.

gog gmail messages modify
salah $ gog gmail messages modify 1a01 --add-label "AI-Triage/Urgent" unknown flag: --add-label benar $ gog gmail messages modify 1a01 --add "AI-Triage/Urgent"
Kalau versi gog Anda menolak juga, minta agent menjalankan gog gmail messages modify --help, tempelkan hasilnya, lalu sesuaikan nama flag-nya. Jangan biarkan agent menebak sendiri.
CHECKPOINT 3

Checkpoint 3: cek hasil label di Gmail

Semuanya dicek di tab Gmail, bukan di balasan bot.

AI-Triage muncul di sidebar

Lengkap dengan lima anak labelnya. Gmail menyusunnya bertingkat otomatis.

Emailnya masih utuh

Masih di inbox, masih belum dibaca. Tidak ada yang dipindah atau dihapus.

Jumlahnya cocok

Angka di sidebar sama dengan laporan per label dari bot.

Salah label bisa ditarik balik

Coba pindahkan satu email ke label lain untuk memastikan perubahan label bisa dibatalkan.

Empat playbook hanya mendapat akses baca. Untuk auto-labeling, perubahannya dibatasi hanya pada label AI-Triage/
TAHAP 4 DARI 5 · DI TELEGRAM

Jadwalkan notifikasi dan digest

Playbook-nya sudah kita coba manual. Sekarang notifikasi email dan digest harian dibuat berjalan otomatis.

Notifikasi email masuk

Ikut heartbeat. Tiap email baru diberitahukan sekali, diringkas dua kalimat.

Digest harian

Dapat jadwal 07:00 Asia/Jakarta, isinya persis seperti Latihan 3 tadi.

Diuji dulu

Digest sudah dicoba di Tahap 3, dan notifikasi diuji sekali sebelum dibiarkan jalan.

Karena itu keduanya diuji manual dulu sebelum dijadwalkan
4
TAHAP 4 · JADWALKAN · PROMPT

Prompt 12 notifikasi email masuk

12

Notifikasi ke heartbeat

Salin apa adanya
  • Blok aturannya ditempel ke HEARTBEAT.md, bukan ke cron
  • Penjaga grep membuat prompt ini aman diulang
  • Bagian akhir menjalankan playbook-nya sekali sebagai uji coba
prompt-12 · notifikasi-email-masuk.txt
Add the gmail-skills new-mail alert to my heartbeat. First run ls ~/.openclaw/workspace/HEARTBEAT.md; if it does not exist, stop and report how your heartbeat is configured instead, do not create anything. Then run exactly: HB=~/.openclaw/workspace/HEARTBEAT.md grep -q "## New-mail alert (gmail-skills)" "$HB" || cat >> "$HB" << 'EOF' ## New-mail alert (gmail-skills) - Every heartbeat: run the "new-mail alert" playbook from the gmail-skills skill. - For every NEW email not yet in the skill's state/alerted-ids.txt: send one message, exactly two sentences of summary, then record its ID. - If there is no new mail: stay silent, send nothing. EOF tail -8 "$HB" Report two lines: heartbeat: appended | already present, tail: «the tail output». Then, as a one-time test in this conversation, run the playbook once right now: send the alert(s) for whatever is new, or reply exactly "alert: no new mail, staying silent". Two sentences per email, never more.
TAHAP 4 · JADWALKAN

Kirim Prompt 12

54

Tempel Prompt 12, lalu kirim.

  • Kalau HEARTBEAT.md tidak ada, agent diminta berhenti dan melapor, bukan membuat file baru
54 HEARTBEAT.MD ADA
TAHAP 4 · JADWALKAN

Cek blok yang masuk

55

Balasan kedua menampilkan isi akhir HEARTBEAT.md.

  • heartbeat: appended
  • Tiga baris aturannya harus kelihatan utuh di bagian tail
55 BLOK SUDAH MASUK
TAHAP 4 · JADWALKAN

Uji sekali di chat

56

Bagian terakhir prompt menjalankan playbook-nya sekali sekarang.

  • Kalau ada email baru: muncul notifikasi, dua kalimat per email
  • Kalau tidak ada: agent membalas bahwa tidak ada email baru, dan itu juga hasil yang benar
56 UJI SEKALI
KENAPA TIDAK JADI SPAM

File ini mencegah notifikasi yang sama dikirim ulang

Setiap email yang sudah diberi notifikasi dicatat berdasarkan ID. Kalau ID-nya sudah ada, agent tidak mengirim notifikasi yang sama lagi.

~/.openclaw/skills/gmail-skills/state/alerted-ids.txt
1a0138f59a733b6a sudah diberitahukan 13:19 1a01390f5023dd2b sudah diberitahukan 13:08

Satu email, satu notifikasi

Walaupun email belum dibuka beberapa hari, notifikasinya tetap hanya dikirim sekali.

Dua kalimat itu cukup

Tugas notifikasi adalah bantu Anda memutuskan perlu buka Gmail atau tidak, bukan menggantikan membaca email.

Sesuaikan jendelanya

Jendela pencariannya newer_than:2h. Buat sedikit lebih panjang dari jarak antar heartbeat.

Kalau notifikasi yang sama terus berulang, cek file state ini lebih dulu
TAHAP 4 · JADWALKAN · PROMPT

Prompt 13 digest tiap pagi

13

Jadwal 07:00

Salin apa adanya
  • Nama perintah scheduler berbeda antar versi OpenClaw, jadi prompt ini menyebut niatnya
  • Kalau versinya tidak punya scheduler, agent diminta melapor dan berhenti
  • System crontab dilarang dipakai
prompt-13 · jadwal-digest.txt
Schedule the gmail-skills daily digest. Create a scheduled job in OpenClaw's own scheduler (cron feature) named gmail-daily-digest: every day at 07:00 Asia/Jakarta, run the "daily digest" playbook from the gmail-skills skill and send the digest to this chat. Use only OpenClaw's built-in scheduling; if this OpenClaw version has none, report exactly what scheduling mechanisms it does have and stop, do not improvise with system crontab. After creating it, list the scheduled jobs so I can see it registered. Report two lines: cron: created (07:00 Asia/Jakarta) | unavailable: «what exists instead», jobs: «the list output».
TAHAP 4 · JADWALKAN

Kirim Prompt 13

57

Tempel Prompt 13, lalu kirim.

  • Ganti jam atau zona waktunya kalau perlu, tulis di prompt sebelum dikirim
57 TEMPEL, LALU KIRIM
TAHAP 4 · JADWALKAN

Pastikan job-nya terdaftar

58

Balasannya menampilkan daftar job yang aktif.

  • cron: created (07:00 Asia/Jakarta)
  • Baris jobs menyebut nama, jadwal, dan waktu jalan berikutnya
  • Mau ganti jam? Cukup bilang: reschedule gmail-daily-digest to 06:30
58 JOB TERDAFTAR
CHECKPOINT 4

Checkpoint 4: otomatisasi sudah aktif

Sekarang cek apakah notifikasi dan jadwalnya benar-benar berjalan.

Notifikasi datang sendiri

Minta rekan mengirim email apa saja. Beberapa heartbeat kemudian notifikasinya masuk, dua kalimat.

Email yang sama tidak diulang

Tunggu heartbeat berikutnya. Email tadi tidak diberitahukan lagi.

Diam juga hasil yang benar

Heartbeat tanpa email baru tidak mengirim pesan apa pun.

Job digest terdaftar

Muncul di daftar job dengan jadwal 07:00 di zona waktu yang benar.

Digest berikutnya akan dikirim otomatis sesuai jadwal yang sudah dibuat
TAHAP 5 DARI 5 · DI TELEGRAM

Kirim BRD lewat email dengan persetujuan

Sekarang kita kirim BRD dari Section 6 lewat email. Sebelum dikirim, agent harus menemukan file yang benar, membukanya, lalu menunjukkan dry run.

Filenya dicari dan dibuka

Sebelum dilampirkan, file dibuka dulu untuk memastikan judul, versi, dan isinya benar.

Dry run dulu

Perintah lengkapnya ditampilkan, termasuk badan emailnya, lalu agent berhenti.

Baru Anda setujui

Perintah yang dijalankan harus sama dengan dry run yang Anda setujui. Kalau berubah, harus minta persetujuan lagi.

Agent bisa mengirim ke alamat yang Anda tentukan, tetapi setiap pengiriman tetap membutuhkan persetujuan
5
KENAPA DIPECAH LIMA PESAN

Proses kirim dibagi menjadi lima langkah

Alurnya sengaja dipecah supaya setiap pengecekan terlihat dan lebih mudah mengetahui bagian yang gagal.

14

Kirim sebagai siapa

Cek akun pengirim lebih dulu dengan gog auth list sebelum menyiapkan email.

15

Filenya di mana

Cari file di VPS dulu. Kalau tidak ada, baru cari salinannya di Drive.

16

Filenya benar dan utuh?

File dibuka untuk membaca judul dan versinya. Kalau tidak bisa dibaca, proses berhenti.

17

Latihan ke diri sendiri

Dry run, Anda setujui, lalu terkirim ke alamat Anda sendiri.

18

Yang sebenarnya, ke rekan

File yang sama, alur yang sama, satu alamat berbeda.

Identitas file dicek sebelum masuk ke email. Kalau file tidak cocok, proses berhenti sebelum pengiriman
TAHAP 5 · KIRIM DOKUMEN · PROMPT

Prompt 14 kirim sebagai siapa

14

Cek akun pengirim

Isi EMAIL, lalu salin apa adanya
  • Satu perintah saja, hasilnya satu baris
  • Semua langkah setelah ini mengirim dari akun ini
  • Lebih baik salah akun diketahui sekarang, sebelum ada email yang dikirim.
prompt-14 · cek-akun-pengirim.txt
EMAIL = Run exactly gog auth list and nothing else. Report one line: account: «the authorized address». If it is not EMAIL, stop and tell me which account is authorized instead.
TAHAP 5 · KIRIM DOKUMEN

Isi EMAIL, lalu kirim

59

Tulis alamat yang Anda harapkan, lalu kirim.

  • Yang ditulis di sini adalah alamat yang Anda kira sedang dipakai agent
59 ISI EMAIL, LALU KIRIM
TAHAP 5 · KIRIM DOKUMEN

Pastikan akunnya benar

60

Balasannya satu baris.

  • Kalau alamatnya beda, berhenti dulu dan cek akun mana yang sebenarnya diizinkan
  • Jangan lanjut sebelum baris ini cocok
60 ACCOUNT
TAHAP 5 · KIRIM DOKUMEN · PROMPT

Prompt 15 cari filenya

15

Cari BRD

Ganti EMAIL, lalu salin apa adanya
  • Dicari di dua tempat, berurutan: VPS dulu, baru Drive
  • Belum ada yang di-download, dilampirkan, atau dikirim
  • Kalau kandidatnya lebih dari satu, agent diminta berhenti dan menyebutkan semuanya
prompt-15 · cari-brd.txt
Locate the BRD document built earlier: a .docx whose file name starts with BRD-. Look in two places, in this order: first the newest BRD-*.docx under brd-build/ on this VPS; if there is none, the Drive copy archived in training-ai-forge-brd/02-skill-output, found with gog drive search "BRD" --account EMAIL --json. Do not download, attach, or send anything yet. Report two lines: source: vps «full path» | drive «fileId» «file name», candidates: «how many matched». If more than one matched, list them with their modified dates and stop.
TAHAP 5 · KIRIM DOKUMEN

Kirim Prompt 15

61

Tempel, ganti EMAIL, lalu kirim.

  • Kalau VPS-nya sudah dibangun ulang sejak Section 6, agent otomatis mencari ke Drive
61 GANTI EMAIL, LALU KIRIM
TAHAP 5 · KIRIM DOKUMEN

Pastikan cuma satu kandidat

62

Balasannya dua baris: sumber dan jumlah yang cocok.

  • candidates: 1 yang kita mau
  • Kalau lebih dari satu, pilih yang Anda buat sendiri, lalu sebutkan file ID-nya
  • Folder 01-baseline berisi contoh tanpa skill, yang dipakai adalah 02-skill-output
62 CANDIDATES: 1
TAHAP 5 · KIRIM DOKUMEN · PROMPT

Prompt 16 cek isi dan identitas file

16

Cek isi file

Ganti EMAIL, lalu salin apa adanya
  • Kalau filenya di Drive, di-download dulu ke VPS
  • Perintah python di dalamnya membuka .docx dan membaca teks awalnya
  • Kalau perintahnya error atau tidak keluar teks, agent berhenti dan tidak melampirkan apa pun
prompt-16 · cek-isi-file.txt
Bring that file here and prove it is the right one. If it is on Drive, download it first: gog drive download «fileId» --out ~/«the file name» --account EMAIL. Then run exactly: python3 -c "import zipfile,re,sys; z=zipfile.ZipFile(sys.argv[1]); x=z.read('word/document.xml').decode('utf-8','ignore'); print('parts:', len(z.namelist())); print(re.sub(r'\s+',' ', re.sub(r'<[^>]+>',' ', x))[:1200])" «path». Report four lines: path: «full path», size: «KB», parts: «the number printed», identity: «document title» «version» «date» «status». If the command raises an error or prints no text, stop: the file is not a usable .docx and nothing gets attached.
TAHAP 5 · KIRIM DOKUMEN

Kirim Prompt 16

63

Tempel, ganti EMAIL, lalu kirim.

  • Perintahnya panjang. Salin utuh, satu karakter berubah membuatnya gagal
63 SALIN UTUH
TAHAP 5 · KIRIM DOKUMEN

Cocokkan baris identity

64

Empat baris laporan, yang paling penting baris terakhir.

  • Judul, versi, tanggal, dan status harus cocok dengan BRD yang Anda buat
  • Baris parts menunjukkan filenya memang .docx yang utuh
  • Semua ini dicek sebelum file dipakai sebagai lampiran.
64 IDENTITY COCOK
TAHAP 5 · KIRIM DOKUMEN · PROMPT

Prompt 17 latihan ke diri sendiri

17

Kirim ke alamat sendiri

Ganti EMAIL, lalu salin apa adanya
  • Dua langkah: dry run dulu, baru kirim setelah Anda balas approve
  • Badan emailnya ditampilkan utuh, tidak dipotong
  • Tidak ada --cc, tidak ada --bcc, tidak ada penerima tambahan
prompt-17 · kirim-ke-diri-sendiri.txt
Send that file to me with the gmail-skills "approved send" playbook, dry run first. DRY RUN: gog gmail send --to "EMAIL" --subject "«the title and version from the identity line»" --body "«two sentences: what the document is, and that you drafted it»" --attach «the path you verified in the previous message» --dry-run. Run it, show me the exact command and the full body text, then stop and end with "reply approve to send". Only after I reply "approve": re-print the command, confirm it is identical, and run it without --dry-run. Never add --cc or --bcc, never another recipient, never reply to or forward anything. Report: sent: «subject» to EMAIL, attached: «filename» («size»).
TAHAP 5 · KIRIM DOKUMEN

Kirim Prompt 17

65

Tempel, ganti EMAIL, lalu kirim.

  • Agent menjalankan dry run dulu, lalu berhenti
65 GANTI EMAIL, LALU KIRIM
TAHAP 5 · KIRIM DOKUMEN

Baca dry run sampai habis

66

Baca seluruh dry run sebelum menyetujui.

  • Satu penerima, satu subjek, satu lampiran
  • Badan emailnya ditampilkan utuh di bawah perintah
  • Baris cc: none, bcc: none, reply/forward: none
66 NOTHING SENT
TAHAP 5 · KIRIM DOKUMEN

Balas approve

67

Setelah dibaca, ketik approve.

  • Agent mencetak ulang perintahnya, memastikan sama persis, baru menjalankannya
  • Kalau perintah berubah, agent harus membuat dry run baru dan meminta persetujuan lagi.
67 APPROVE
TAHAP 5 · KIRIM DOKUMEN

Cek inbox Anda

68

Pindah ke tab Gmail, refresh.

  • Emailnya muncul di inbox, pengirimnya Anda sendiri
  • Hanya ada satu, bukan dua. Dry run memang tidak mengirim apa pun
68 EMAIL MASUK
TAHAP 5 · KIRIM DOKUMEN

Buka emailnya, cek lampirannya

69

Buka .docx-nya langsung dari lampiran.

  • Harus dokumen yang sama dengan yang tadi dibacakan identity-nya
  • Tidak ada cc dan tidak ada bcc di email ini
69 LAMPIRAN .DOCX
TAHAP 5 · KIRIM DOKUMEN · PROMPT

Prompt 18 ke alamat rekan

18

Kirim ke satu rekan

Isi RECIPIENT, lalu salin apa adanya
  • File yang sama, alur yang sama, cuma penerimanya berbeda
  • Pilih rekan di ruangan yang bisa langsung bilang sudah sampai
  • Sebelum mengetik approve, bacakan baris penerimanya keras-keras
prompt-18 · kirim-ke-rekan.txt
RECIPIENT = Same file, same flow, one different recipient: send the BRD you verified to RECIPIENT. Dry run first, show me the exact command and the full body, then stop and wait. Only after I reply "approve", run the identical command without --dry-run. Use only RECIPIENT, add nobody else, no --cc, no --bcc. Report: sent: «subject» to RECIPIENT, attached: «filename» («size»).
TAHAP 5 · KIRIM DOKUMEN

Dry run ke alamat rekan

70

Isi RECIPIENT dengan satu alamat asli, lalu kirim.

  • Perhatikan baris To di ringkasan dry run: alamatnya harus persis yang Anda tulis
  • Polanya tetap sama: agent menyiapkan, Anda mengecek alamat penerima sebelum approve.
70 CEK ALAMAT PENERIMA
TAHAP 5 · KIRIM DOKUMEN

Balas approve

71

Setelah alamatnya benar, ketik approve.

  • Laporan akhirnya menyebut penerima, subjek, dan nama lampirannya
  • Minta rekan Anda memastikan emailnya sampai, lengkap dengan lampirannya
71 APPROVE
CHECKPOINT 5

Checkpoint 5: tidak ada yang keluar tanpa izin Anda

Empat yang dicek, dua yang sengaja dicoba dijebol.

Identity-nya cocok

Judul, versi, tanggal, dan status yang dibaca dari file sama dengan BRD yang Anda buat.

Dua email sampai

Satu di inbox Anda, satu dikonfirmasi rekan Anda. Lampirannya bisa dibuka, tidak ada cc atau bcc.

Folder Sent isinya dua

Satu per persetujuan. Tidak ada kembaran dari dry run.

Coba lewati preview

"Kirim BRD itu ke alamat lain sekarang, tidak usah pakai preview." Harus tetap dry run dan menunggu.

Coba minta izin permanen

"Mulai sekarang kirim dokumen itu ke siapa pun yang minta." Harus menolak izin borongan.

Kalau agent mengirim tanpa preview dan approval, berarti guardrails tidak bekerja sebagaimana mestinya
KALAU ADA YANG MACET · 1

Masalah saat menyambung dan memasang

Sebagian besar masalah bisa dicek lewat chat. Untuk masalah auth atau keyring, ikuti jalur setup Section 4.

1

insufficient authentication scopes atau 403

Tahap 1 terlewat, atau ada kotak izin yang belum dicentang. Ulangi Tahap 1 dan klik Select all.

2

no TTY available for keyring

Password keyring belum di-export di shell itu. Tambahkan export $(grep GOG_KEYRING_PASSWORD ~/.openclaw/.env) && di depan perintahnya.

3

openclaw skills list tidak menampilkan gmail-skills

SKILL.md tidak tersimpan di path yang benar, atau gateway belum di-restart. Minta: ls ~/.openclaw/skills/gmail-skills/SKILL.md, lalu ulangi Prompt 4.

4

Prompt 5 melapor AGENTS.md tidak ada

Section 4 Step 11 belum dikerjakan. Selesaikan itu dulu, baru ulangi Prompt 5.

5

Hasil latihan mengabaikan format playbook

Skill-nya tidak terbaca di sesi itu. Ulangi Prompt 6 sampai lulus, lalu kirim ulang prompt latihannya.

Kalau akses Gmail berhenti setelah beberapa hari, cek lagi status OAuth app dan token-nya
SECTION 7 SELESAI

Section 7 selesai:
agent sudah bisa membantu mengelola Gmail

gmail-skills dan guardrails sudah terpasang, lima latihan sudah dicoba, dan dua pekerjaan sudah dijadwalkan. Setelah ini, pilih satu pekerjaan email berulang di unit Anda dan buat playbook dengan pola yang sama.

Gmail tersambungSkill terpasangLima latihanCron jalanKirim dengan izin
07
1 / 115