app
Adom Google
Public Made by Adomby adom
Drive your whole Google Workspace from the terminal, run by your AI. Read Gmail, write Google Docs, build Google Sheets and Google Slides, search Google Drive, manage Google Calendar and Google Tasks, and post to Google Chat, plus any Google API and a zero-setup personal Gmail.
← Commit history
SKILL.md+56@@ -161,6 +161,62 @@ non-adom.inc accounts at consent. Two options to surface to them: Chat-app configuration (name/avatar/description) in the Cloud console's Chat API → Configuration tab, or `spaces.*` calls 404 with "Chat app not found". +## ⭐ READ EMAIL WITH THIS, NEVER WITH A BROWSER++**Default posture: if a task needs the user's mail, reach for `adom-google` first and SUGGEST+setting it up if it is not configured.** Driving Gmail in pup or the native browser to read a+message is slow, fragile, foregrounds windows, and is completely unnecessary. Caught live+2026-09-01: an agent drove a whole Gmail session in the user's real Chrome to find one+invitation link that `adom-google` returned in a single call.++**Check first, every time:**++```bash+adom-google accounts # which identities are already authorized (work AND personal)+adom-google status # scopes on the default account+```++If the identity you need is missing, SAY SO and offer the one-time+`adom-google --account <name> auth` (one consent, long-lived token). Do not silently fall back+to a browser.++### Searching and reading full messages (the `gmail` subcommand does NOT do this)++`adom-google gmail` only covers attachments/.ics. For search and message bodies, use the `api`+passthrough - it is the whole Gmail REST API, signed:++```bash+# whose mailbox is this?+adom-google --account personal api gmail.googleapis.com/gmail/v1/users/me/profile++# search (full Gmail query syntax: from:, subject:, newer_than:, has:attachment, ...)+adom-google --account personal api gmail.googleapis.com/gmail/v1/users/me/messages \+ -q 'q=from:library.io' -q 'maxResults=5'++# the whole message; body parts are base64url in payload.parts[].body.data+adom-google --account personal api gmail.googleapis.com/gmail/v1/users/me/messages/<id> \+ -q 'format=full'+```++Decode a body and pull links out of it in one step:++```python+import base64, json, re+def bodies(p, out):+ if p.get("body", {}).get("data"):+ out.append(base64.urlsafe_b64decode(p["body"]["data"]).decode("utf8", "replace"))+ for c in p.get("parts") or []:+ bodies(c, out)+```++### Multiple identities++`--account <name>` selects the identity; the default (unnamed) account is usually work. A+personal gmail.com address typically needs its own account entry. **Match the account to the+task**: mail sent to a personal address is not in the work mailbox, and vice versa. This is the+clean way to act for a second identity, and it is the ONLY way when pup has no browser session+for that account.+ ## Commands ```bash