Communitygithub.com

aiagentwithdhruv/skills

Etiqueta automáticamente correos de Gmail en las categorías 'Acción Requerida', 'Esperando Respuesta' y 'Referencia'. Útil cuando el usuario solicita etiquetar correos, organizar la bandeja de entrada, categorizar mensajes u organizar Gmail.

¿Qué es skills?

Esta habilidad permite a un agente de IA clasificar y etiquetar automáticamente correos de Gmail en tres categorías: 'Acción Requerida' (alertas de seguridad, tareas pendientes), 'Esperando Respuesta' (correos de ventas, tickets de soporte) y 'Referencia' (boletines, avisos, códigos). Es compatible con agentes que ejecutan scripts de Python (Claude Code, Codex, etc.) y utiliza una arquitectura de subagentes paralelos para clasificar correos de forma eficiente. El flujo principal consiste en obtener correos mediante la API de Gmail, dividirlos en lotes, clasificarlos en paralelo con 10 subagentes usando el modelo Sonnet 4.5, fusionar los resultados y aplicar las etiquetas en la bandeja de entrada. La clasificación paralela reduce el tiempo de proceso de 34s a aproximadamente 19s para 100 correos, evitando la saturación del contexto al usar archivos para la comunicación entre subagentes. La habilidad incluye un registro de cuentas de Gmail y herramientas para añadir nuevas cuentas mediante autenticación OAuth.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aiagentwithdhruv/skills/tree/HEAD/gmail-label

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Auto-Etiquetado de Gmail

Objetivo

Obtener correos de la bandeja de entrada, clasificarlos mediante subagentes paralelos en 'Acción Requerida' / 'Esperando Respuesta' / 'Referencia' y aplicar las etiquetas en lote a través de la API de Gmail.

Scripts

  • ./scripts/gmail_label_fetch.py - Obtiene resúmenes de correos como JSON compacto
  • ./scripts/gmail_label_split.py - Divide los correos en N lotes para clasificación paralela
  • ./scripts/gmail_label_merge.py - Fusiona los lotes clasificados en un único labels.json
  • ./scripts/gmail_label_apply.py - Aplica las clasificaciones de etiquetas en lote

Subagente

  • email-classifier — definido en .claude/agents/email-classifier.md
  • Modelo: Sonnet 4.5 (rápido, clasificación eficiente en costos)
  • Cada subagente lee un lote y escribe un archivo de salida clasificado

Flujo (Paralelo — predeterminado)

Paso 1: Obtener correos

python3 .claude/skills/gmail-label/scripts/gmail_label_fetch.py \
  --account CUENTA --query "in:inbox" --limit 100 --output .tmp/emails.json

Paso 2: Dividir en lotes

python3 .claude/skills/gmail-label/scripts/gmail_label_split.py \
  --input .tmp/emails.json --chunks 10 --output-dir .tmp/chunks

Paso 3: Clasificar en paralelo (generar 10 subagentes)

Genera 10 subagentes email-classifier en segundo plano, uno por lote. Cada subagente:

  • Lee .tmp/chunks/chunk_N.json
  • Clasifica cada correo
  • Escribe .tmp/chunks/classified_N.json

Usa la herramienta Task con run_in_background: true y model: "sonnet". Lanza TODOS los 10 en un solo mensaje para lograr verdadero paralelismo:

Para cada lote 0-9, genera una Task con:
  subagent_type: "email-classifier"
  model: "sonnet"
  run_in_background: true
  prompt: "Lee /ruta/absoluta/.tmp/chunks/chunk_N.json, clasifica cada correo, escribe los resultados en /ruta/absoluta/.tmp/chunks/classified_N.json"

CRÍTICO: NO uses TaskOutput para leer los resultados de los subagentes. Los subagentes escriben sus resultados en archivos; el agente principal nunca necesita ver los datos de clasificación. Leer TaskOutput saturará la ventana de contexto y causará errores de "prompt demasiado largo" con lotes grandes (500+ correos).

En su lugar, verifica la existencia de los archivos:

# Espera hasta que todos los archivos clasificados existan (tiempo límite de 120s)
for i in $(seq 0 9); do
  while [ ! -f ".tmp/chunks/classified_$i.json" ]; do sleep 2; done
done

Luego continúa directamente al Paso 4 (fusión).

Paso 4: Fusionar clasificaciones

python3 .claude/skills/gmail-label/scripts/gmail_label_merge.py \
  --input-dir .tmp/chunks --output .tmp/labels.json

Paso 5: Aplicar etiquetas

python3 .claude/skills/gmail-label/scripts/gmail_label_apply.py \
  --account CUENTA --input .tmp/labels.json

Guías de Clasificación

Acción Requerida:

  • Alertas de seguridad que necesitan verificación
  • Tarjetas de crédito / renovaciones de dominio próximas a vencer
  • Menciones @ en Slack que hacen preguntas
  • Nuevos miembros del equipo a saludar (notificaciones de Slack)
  • Correos de clientes que requieren respuesta
  • Actualizaciones de listados comerciales (Google Business Profile, Bing Places)
  • Avisos de Stripe que requieren acción

Esperando Respuesta:

  • Correos de ventas salientes esperando respuesta
  • Tickets de soporte pendientes de resolución
  • Propuestas enviadas, pendientes de respuesta

Referencia:

  • Boletines de marketing (DigitalMarketer, etc.)
  • Boletines de organizaciones benéficas/sin ánimo de lucro (RAPS, etc.)
  • Informes de rendimiento de Google Business Profile
  • Ofertas promocionales (Blinkist, ventas, etc.)
  • Notificaciones de actualizaciones de plataforma (Google Play, Apify, etc.)
  • Códigos de confirmación (ya usados)
  • Boletines inmobiliarios (Westbank, etc.)
  • Correos de cuentas de juegos (Riot Games, etc.)
  • Alertas de seguridad informativas (2FA activado, etc.)
  • Avisos de salud
  • Notificaciones de cambios legales/políticas

Registro de Cuentas

Las cuentas se almacenan en gmail_accounts.json en la raíz del espacio de trabajo. Cada cuenta necesita:

  • email - Dirección de Gmail
  • token_file - Ruta al token OAuth

Añadir Nuevas Cuentas

python3 .claude/skills/gmail-inbox/scripts/gmail_multi_auth.py --account NOMBRE_CUENTA --email EMAIL

Rendimiento

  • Flujo serial: ~36s para 100 correos (obtener 1s + clasificar 34s + aplicar 1s)
  • Flujo paralelo: ~30s para 100 correos (clasificar 19s + fusionar <1s + aplicar ~10s)
  • La clasificación es el cuello de botella; 10 subagentes paralelos la reducen de 34s a 19s (~1.8x de aceleración)
  • La sobrecarga de inicio de los agentes (~4s de escalonamiento) limita las ganancias teóricas
  • El paso de aplicar puede variar debido a la limitación de la API de Gmail

Esquema

Entradas

NombreTipoRequeridoDescripción
accountstringSíNombre de la cuenta de Gmail del registro
querystringNoConsulta de búsqueda de Gmail (por defecto: 'in:inbox')
limitintegerNoMáximo de correos a clasificar (por defecto: 100)
chunksintegerNoLotes para clasificación paralela (por defecto: 10)

Salidas

NombreTipoDescripción
labels_appliedobjectConteo por categoría: Acción Requerida, Esperando Respuesta, Referencia

Credenciales

NombreOrigen
credentials.jsonarchivo
token_*.jsonarchivo (generado automáticamente)

Componible Con

Habilidades que encadenan bien con esta: gmail-inbox

Costo

API de Claude Sonnet para clasificación

Individual skills in this repo

This repo contains 10 individual skills — each has its own dedicated page.

aiagentwithdhruv/skills

Add new Modal webhooks for event-driven execution. Use when user asks to create a webhook, add an endpoint, or set up event triggers.

aiagentwithdhruv/skills

Answer Euron Gen AI Bootcamp doubts instantly. Covers Euri API setup across all frameworks (Python, LangChain, OpenAI SDK, TypeScript, n8n, curl), MCP server setup, common errors, model recommendations, and token limits. Use when someone in the bootcamp asks a question.

aiagentwithdhruv/skills

Manage emails across multiple Gmail accounts with unified tooling. Use when user asks to check email, read inbox, label emails, archive messages, or manage Gmail across accounts.

aiagentwithdhruv/skills

Scrape Google Maps for B2B leads with deep website enrichment and contact extraction. Use when user asks to find local businesses, scrape Google Maps, generate contractor lists, or build local service business databases.

aiagentwithdhruv/skills

Run Claude orchestrator locally with Cloudflare tunneling. Use when user asks to run locally, start local server, or test webhooks locally.

aiagentwithdhruv/skills

MCP server for AI-powered macOS control — apps, display, audio, files, screenshots, clipboard

aiagentwithdhruv/skills

Deploy execution scripts to Modal cloud. Use when user asks to deploy to Modal, push code to cloud, or update Modal functions.

aiagentwithdhruv/skills

Scrape and verify business leads using Apify, classify with LLM, enrich emails, and save to Google Sheets. Use when user asks to find leads, scrape businesses, generate prospect lists, or build lead databases for any industry or location.

aiagentwithdhruv/skills

Query Skool community content using RAG pipeline with vector search. Use when user asks to search Skool knowledge, find community answers, or query Skool content.

aiagentwithdhruv/skills

Scrape Upwork jobs and generate personalized proposals with cover letters. Use when user asks to find Upwork jobs, create Upwork proposals, or apply to Upwork listings.

Skills relacionados