Communitygithub.com

baronguyen001/estado-sqlite

Dale memoria a scripts programados entre ejecuciones usando un solo archivo SQLite — un conjunto de vistos para deduplicación, un cursor clave/valor para reanudar donde lo dejaste y filtrado de elementos nuevos que preserva el orden. Útil para deduplicar entre ejecuciones, no re-alertar el mismo ítem, recordar el último ID, reanudar un scraper o persistir estado entre ejecuciones de cron.

¿Qué es estado-sqlite?

Esta habilidad proporciona un mecanismo simple pero robusto para que scripts programados (como trabajos cron, scrapers o alertas) mantengan estado persistente entre ejecuciones, utilizando un único archivo SQLite. Es ideal para tareas que necesitan recordar lo que ya se procesó, evitando duplicados o reanudando desde el último punto. La habilidad se basa en funciones como `filter_new` y `mark_seen` para gestionar un conjunto de elementos ya vistos, y `set_cursor`/`get_cursor` para almacenar progresos. Soporta plataformas como Claude Code, Cursor y Codex, y su documentación detalla patrones de uso, casos de aplicación y cuándo no utilizarla (por ejemplo, si múltiples máquinas necesitan estado compartido concurrente). La implementación es ligera, sin dependencias externas adicionales más allá de SQLite, y el archivo `.db` resultante puede respaldarse para preservar todo el historial del trabajo.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/baronguyen001/ai-automation-skills/tree/HEAD/skills/sqlite-state

Preguntar en tu IA favorita

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

Documentación

Estado SQLite

Usa esta habilidad cuando un trabajo recurrente deba recordar lo que ya hizo — qué elementos ha alertado, el último cursor que procesó — para que no re-notifique o re-scrapee en el próximo tick. Un solo archivo SQLite estándar proporciona estado duradero con bloqueo de archivo, sin servidor y sin dependencias adicionales.

Cuándo invocar

  • El usuario dice: "no alertes lo mismo dos veces", "deduplica entre ejecuciones", "recuerda el último id", "reanuda donde lo dejaste".
  • El código en la conversación es un script programado (cron) que actualmente reprocesa todo en cada ejecución.

Cuándo NO invocar

  • El estado es pequeño y efímero dentro de una sola ejecución — un simple conjunto/diccionario es suficiente.
  • Múltiples máquinas deben compartir estado concurrentemente; recurre a una base de datos real con servidor en lugar de un solo archivo.

Ejemplo concreto

Entrada del usuario:

Mi scraper de noticias reenvía los mismos titulares cada hora. Haz que solo envíe los nuevos.

Salida:

from state import filter_new, mark_seen

db = "news.db"
fresh = filter_new(db, [a["url"] for a in articles])   # solo URLs no vistas
for url in fresh:
    send_alert(url)
mark_seen(db, *fresh)                                   # recuérdalos para la próxima ejecución

Patrón a aplicar

  1. Clave cada elemento por algo estable y único (URL, id, hash de contenido), no por posición en un arreglo.
  2. Usa filter_new para decidir sobre qué actuar, luego mark_seen solo después de que la acción tenga éxito.
  3. Almacena el progreso como un cursor con nombre (set_cursor/get_cursor) para que un scraper reanudable se reinicie a medio camino.
  4. Habilita el modo WAL para escrituras duraderas con lectores concurrentes; mantén un solo escritor.
  5. Respaldar o versionar el único archivo .db — es toda la memoria del trabajo.

Referencia: assets/state.py.

Fuente

Destilado del uso en producción en los proyectos de automatización del autor. v1.0.0. Ver también: [[pipeline-orchestrator]], [[cron-dispatch]], [[webhook-receiver]].

→ Construye el bot ejecutable completo con Trawlkit.

Individual skills in this repo

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

baronguyen001/ai-automation-skills

Schedule any script to run on a recurring schedule on Windows (Task Scheduler) or Linux (cron) - register, list, and remove jobs from one command, with logging to a file and a guard against overlapping runs. Use for schedule a script, run nightly, set up a cron job, windows task scheduler, or run on a timer.

baronguyen001/ai-automation-skills

Turn a run's list of result dicts into a schema'd CSV and a Markdown table from one column spec - declare columns once, emit both, with stable ordering and safe escaping, stdlib only, no pandas. Use when the user asks to write results to CSV, export a report, make a markdown summary table, or save a run's output as a spreadsheet.

baronguyen001/ai-automation-skills

Strip HTML to clean plain text with the standard library only (no BeautifulSoup/lxml): drops script/style, turns block tags into line breaks, and collapses whitespace. Use when the user wants readable text from an HTML page/email, to clean scraped HTML before sending it to an LLM, or to build a text index from web content.

baronguyen001/ai-automation-skills

Persist records between scheduled runs as append-only JSON Lines (one object per line) with streaming reads and optional key-based dedup, stdlib only. Use when the user wants to log run results to JSONL, append events to a file, dedup records by id across runs, or keep a simple durable history without a database.

baronguyen001/ai-automation-skills

Extract text and simple table-like rows from a PDF for downstream AI without OCR binaries. Use when the user asks to read a PDF, turn a PDF into text, pull simple tables from statements/reports, or feed PDF content into an LLM pipeline.

baronguyen001/ai-automation-skills

Rotate a pool of HTTP/SOCKS proxies with round-robin selection, failure tracking, and a cooldown that benches dead proxies before retrying. BYO proxy list via env - none are shipped. Use for rotate proxies, spread requests across proxies, avoid IP bans, retry through a different proxy, or proxy health check.

baronguyen001/ai-automation-skills

Parse an RSS 2.0 or Atom feed into normalized item dicts (title, link, id, published, summary) with the standard library only - no feedparser. Use when the user asks to read an RSS/Atom feed, poll a blog/news feed, extract feed entries, or watch a site that publishes a feed.

baronguyen001/ai-automation-skills

Upload and download run artifacts from S3-compatible storage with BYO bucket and credentials from env. Use when the user asks to store scraper output, archive reports, publish artifacts to object storage, fetch a prior run file, or use MinIO/R2/Spaces/S3 without hardcoding credentials.

baronguyen001/ai-automation-skills

Draft a short-form TikTok/Reels/Shorts or long-form video script from a topic and creator persona file - hook variants, beat-structured body, CTA, b-roll cues, caption overlays, and [STORY]/[NUMBER] slots so the model never fabricates personal facts. Use for write a video script, tiktok script, youtube script, or /shortform-script.

Skills relacionados