Skill: coorops25/gmailcleaner (version 1.0.0)

--- name: email-reader version: "2.0.0" description: > Reads emails from Gmail (all folders/labels) using the gog CLI. Use when the user asks to check email, read inbox, show unread messages, list folders, search messages, or fetch emails from any Gmail label. homepage: https://gogcli.sh metadata: clawdbot: emoji: "📥" requires: bins: ["gog"] env: - name: GOG_ACCOUNT description: "Tu dirección de Gmail, ej: [REDACTED_SECRET]" install: - id: brew kind: brew formula: steipete/tap/gogcli bins: ["gog"] label: "Install gog CLI (brew)" --- # Email Reader Lee correos de Gmail usando el CLI `gog`. Requiere que `gog auth` esté configurado. Si no lo está, ejecuta el setup primero. ## Setup inicial (solo una vez) ```bash gog auth credentials /ruta/a/client_secret.json gog auth add $GOG_ACCOUNT --services gmail gog auth list # verificar que quedó bien ``` ## Cuándo usar esta skill - "Revisa mi correo" - "¿Qué correos nuevos tengo?" - "Muéstrame los no leídos de hoy" - "Lee los correos de Juan" - "Busca correos sobre la propuesta del Q1" - "¿Cuántos correos de spam tengo?" - "Muéstrame el hilo de [asunto]" - "Lee la carpeta Clientes" ## Comandos principales ### Leer inbox (correos recientes) ```bash gog gmail search 'in:inbox newer_than:1d' --max 20 --json gog gmail search 'in:inbox is:unread' --max 50 --json gog gmail search 'in:inbox newer_than:7d' --max 100 --json ``` ### Leer spam ```bash gog gmail search 'in:spam newer_than:30d' --max 50 --json ``` ### Leer una carpeta/etiqueta específica ```bash # Etiquetas de sistema gog gmail search 'in:sent newer_than:7d' --max 20 --json gog gmail search 'in:drafts' --max 20 --json gog gmail search 'in:trash newer_than:30d' --max 20 --json gog gmail search 'is:starred' --max 20 --json # Etiquetas personalizadas (carpetas del usuario) gog gmail search 'label:Clientes newer_than:30d' --max 20 --json gog gmail search 'label:Proyectos' --max 20 --json gog gmail search 'label:Facturas newer_than:90d' --max 20 --json ``` ### Buscar correos ```bash # Por remitente gog gmail search 'from:[REDACTED_SECRET] newer_than:30d' --max 20 --json # Por asunto gog gmail search 'subject:propuesta' --max 10 --json # Por contenido gog gmail search 'propuesta presupuesto 2026' --max 10 --json # Combinado gog gmail search 'from:[REDACTED_SECRET] is:unread newer_than:7d' --max 10 --json # Con adjuntos gog gmail search 'has:attachment in:inbox newer_than:7d' --max 10 --json ``` ### Filtros de tiempo útiles | Filtro | Significado | |--------|-------------| | `newer_than:1d` | último día | | `newer_than:7d` | última semana | | `newer_than:30d` | último mes | | `older_than:180d` | más de 6 meses | | `after:2026/01/01` | desde fecha exacta | ## Presentación de resultados Después de obtener el JSON, presenta un resumen claro al usuario: ``` 📥 INBOX — 8 correos nuevos (3 no leídos) ⭐ [hoy 09:14] [REDACTED_SECRET] "Reunión urgente esta tarde" 📧 [hoy 08:30] [REDACTED_SECRET] "Re: Propuesta Q1 2026" 📰 [ayer 18:00] [REDACTED_SECRET] "Top 10 AI tools this week" ... ¿Quieres que analice estos correos o que responda alguno? ``` ## Múltiples cuentas Si el usuario tiene más de una cuenta de Gmail: ```bash # Listar cuentas configuradas gog auth list # Leer de una cuenta específica gog gmail search 'in:inbox is:unread' --account [REDACTED_SECRET] --max 20 --json # Cambiar cuenta por defecto export GOG_ACCOUNT=[REDACTED_SECRET] ``` ## Notas importantes - Usar siempre `--json` para obtener datos estructurados - Usar `--no-input` en modo automático/cron para evitar prompts interactivos - El flag `--max` limita resultados; aumentar si el usuario quiere más - Los resultados de búsqueda de Gmail usan la misma sintaxis que gmail.com

path: email-reader-SKILL.md
content: ---
name: email-reader
description: Read/search Gmail via gog CLI. Inbox check, email search, content retrieval.
user-invocable: true
tools: Bash
metadata: {"openclaw":{"emoji":"📬","requires":{"bins":["gog"],"env":["GOG_ACCOUNT"]}}}
---

# email-reader

## When to use
User asks to check inbox, search emails, read email content, or summarize recent messages.

## Commands

```bash
# List unread (default action)
gog gmail search 'in:inbox is:unread' --max 5 --format minimal --json

# Search by criteria (use Gmail search syntax)
gog gmail search '<query>' --max 10 --format minimal --json

# Read full email
gog gmail get <message_id> --format full --json

# Get thread
gog gmail thread <thread_id> --format minimal --json
```

## Workflow
1. Verify `gog` on PATH and `GOG_ACCOUNT` set
2. Build Gmail search query from user intent — ask if ambiguous
3. Run `gog gmail search` with `--format minimal --json --max N`
4. Parse JSON → present formatted list (sender, subject, date, snippet, ID)
5. Offer: read full email, refine search, or act on message

## Output format

```
📬 [count] emails:
1. **From:** Name <email> | **Subject:** … | **Date:** YYYY-MM-DD HH:MM
   Preview: … | ID: msg_xxx
```

## Rules
- ALWAYS use `--format minimal --json --max N` (default N=5)
- Never show raw JSON; never fetch full content unless asked
- Preserve message IDs for follow-up actions
- Empty results → confirm criteria, suggest broader terms
- Read-only; send/reply requires email-responder skill
- Never store email content in MEMORY.md unless user requests

## Error handling
- `gog` missing → show install: `npm i -g gogcli` or `brew install gogcli`
- `GOG_ACCOUNT` unset → ask user for Gmail address
- Token expired → `gog auth add <email>`
- API error → show error, suggest fix

## Gmail search operators
`from:` `to:` `subject:` `label:` `is:unread` `is:starred` `has:attachment` `newer_than:Nd` `older_than:Nd` `in:inbox` `in:sent` `filename:ext`


path: README.md
content: # 📬 OpenClaw Email Skills v2 — con gog CLI

Pack de 6 skills para OpenClaw que gestionan completamente tu Gmail
usando el CLI `gog` (Google Workspace CLI) como backend nativo.

> **v2.0** — Reescritas para usar `gog` en lugar de scripts Python.
> Más simples, más rápidas, sin dependencias extras.

---

## Skills incluidas

| Skill | Emoji | Función |
|-------|-------|---------|
| `email-reader` | 📥 | Lee inbox, spam, carpetas, busca correos |
| `email-organizer` | 🗂️ | Mueve, archiva, etiqueta, limpia en batch |
| `email-analyzer` | 🤖 | Clasifica con IA, detecta spam/phishing/prompts |
| `email-responder` | ✍️ | Genera y envía respuestas con contexto del hilo |
| `email-scheduler` | ⏰ | Cron jobs, heartbeat, alertas automáticas |
| `email-reporter` | 📊 | Informes, stats, exporta a Google Sheets |

---

## Instalación

### 1. Instalar gog CLI
```bash
brew install steipete/tap/gogcli
```

### 2. Instalar las skills
```bash
clawhub install email-reader
clawhub install email-organizer
clawhub install email-analyzer
clawhub install email-responder
clawhub install email-scheduler
clawhub install email-reporter
```

O manualmente:
```bash
cp -r openclaw-email-skills-v2/* ~/.openclaw/workspace/skills/
openclaw gateway restart
```

---

## Configuración inicial

### Autenticar gog con tu Gmail
```bash
# Descargar credentials.json desde Google Cloud Console primero
gog auth credentials /ruta/a/client_secret.json
gog auth add [REDACTED_SECRET] --services gmail,sheets,docs
gog auth list   # verificar
```

### Configurar variable de entorno
```bash
export GOG_ACCOUNT=[REDACTED_SECRET]
# O añadir a ~/.openclaw/workspace/.env
echo "GOG_ACCOUNT=[REDACTED_SECRET]" >> ~/.openclaw/workspace/.env
```

### Configurar API key de Anthropic (para email-analyzer y email-responder)
```bash
export ANTHROPIC_API_KEY=sk-ant-...
# Nunca pegar la key en el chat
```

---

## Uso

Una vez instaladas, habla con OpenClaw normalmente:

```
"Revisa mi correo"
"¿Hay algo urgente en mi inbox?"
"Limpia el spam"
"Responde al correo de Juan"
"Activa la revisión automática cada hora"
"Dame el resumen semanal"
"Exporta las estadísticas a mi Google Sheet"
```

---

## Dependencias

| Dependencia | Para qué |
|-------------|----------|
| `gog` CLI | Acceso a Gmail, Sheets, Docs |
| `ANTHROPIC_API_KEY` | Análisis IA y generación de respuestas |
| `GOG_ACCOUNT` | Cuenta Gmail por defecto |
| `NOTIFY_CHANNEL` | Canal para alertas automáticas (opcional) |


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: suspicious | SkillSpector: suspicious (CRITICAL)