Communitygithub.com

baronguyen001/ai-automation-skills

Persiste registros entre ejecuciones programadas como JSON Lines de solo añadidura (un objeto por línea) con lecturas en flujo y deduplicación opcional por clave, solo biblioteca estándar. Úsalo cuando el usuario quiera registrar resultados en JSONL, añadir eventos a un archivo, deduplicar registros por ID entre ejecuciones o mantener un historial duradero y simple sin base de datos.

¿Qué es ai-automation-skills?

Esta habilidad proporciona una implementación ligera de almacenamiento JSONL (JSON Lines) para scripts programados o trabajos por lotes que necesitan persistencia entre ejecuciones sin la complejidad de una base de datos. Está diseñada para contextos donde un cron job o script periódico debe recordar qué registros ya procesó (por ejemplo, IDs, eventos o alertas) de manera eficiente y tolerante a fallos. Soporta añadiduras atómicas, lecturas en flujo que pueden saltar líneas corruptas (por ejemplo, por cortes de energía) y deduplicación opcional mediante `append_unique(record, key)`. Está basada únicamente en la biblioteca estándar de Python, por lo que no requiere dependencias externas. Es adecuada para entornos de agentes de IA como Claude Code, Cursor y Codex, así como scripts autónomos. La implementación incentiva el uso de un único archivo JSONL como almacenamiento entre ejecuciones, combinable con un programador de tareas para lograr idempotencia. No debe usarse cuando se requieren consultas, índices o escritores concurrentes; en esos casos se recomienda SQLite o una base de datos real.

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

Preguntar en tu IA favorita

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

Documentación

JSONL Store

Usa esta habilidad cuando un trabajo programado necesite recordar lo que ya ha hecho — alertas emitidas, IDs procesados, eventos capturados — pero una base de datos sea excesiva. JSON Lines (un objeto JSON por línea) es amigable para añadiduras, legible por humanos, greppable, y se transmite sin cargar todo el archivo. Este ayudante añade añadiduras atómicas, lecturas en flujo que sobreviven a una línea corrupta y append_unique(record, key) para que el mismo ID nunca se escriba dos veces entre ejecuciones.

Cuándo invocarlo

  • El usuario dice: "registrar resultados en un archivo JSONL", "añadir eventos al disco", "deduplicar por ID entre ejecuciones", "mantener un historial simple sin base de datos".
  • Un script cron o programado necesita estado duradero entre ejecuciones en un archivo plano.

Cuándo NO invocarlo

  • Necesitas consultas, índices o escritores concurrentes — usa SQLite (sqlite-state) o una base de datos real.
  • Los registros son enormes o binarios — JSONL es para filas estructuradas pequeñas.

Ejemplo concreto

Entrada del usuario:

Después de cada ejecución, añade nuevas alertas a alerts.jsonl pero nunca el mismo ID de alerta dos veces.

Salida:

# Copia assets/store.py a tu proyecto, luego:
from store import JsonlStore

store = JsonlStore("data/alerts.jsonl")
for alert in new_alerts:
    if store.append_unique(alert, key="id"):
        send(alert)        # solo se dispara para IDs no vistos en ninguna ejecución anterior

print("tamaño del historial:", store.count())

Las lecturas se transmiten línea por línea, por lo que un año de historial nunca se carga completamente en memoria, y una línea final a medio escribir de un fallo se omite sin romper la siguiente ejecución.

Patrón a aplicar

  1. Un objeto JSON por línea; añade con ensure_ascii=False para que el texto se mantenga legible.
  2. Lecturas en flujo con un generador; omite líneas en blanco o corruptas en lugar de lanzar una excepción.
  3. Deduplica con seen_keys(key) / append_unique(record, key) para hacer las ejecuciones idempotentes.
  4. Combínalo con un programador para que el archivo sea la memoria duradera entre invocaciones.

Referencia: assets/store.py.

Fuente

Destilado del manejo de estado de bots programados del autor. v1.0.0. Ver también: [[sqlite-state]], [[cron-dispatch]], [[pipeline-orchestrator]].

→ Construye el bot completo y ejecutable 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

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.

baronguyen001/ai-automation-skills

Give scheduled scripts memory between runs with one SQLite file - a seen-set for dedup, a key/value cursor to resume where you left off, and order-preserving new-item filtering. Use for dedup across runs, don't re-alert the same item, remember the last id, resume a scraper, or persist state between cron runs.

Skills relacionados