Communitygithub.com

baronguyen001/ai-automation-skills

Convierte una lista de diccionarios de resultados de una ejecución en un CSV con esquema y una tabla Markdown a partir de una sola especificación de columna: declara las columnas una vez, genera ambos formatos, con orden estable y escape seguro, solo librería estándar, sin pandas. Úsalo cuando el usuario pida escribir resultados en CSV, exportar un informe, crear una tabla resumen en Markdown o guardar la salida de una ejecución como hoja de cálculo.

¿Qué es ai-automation-skills?

Esta skill convierte una lista de diccionarios (resultados de una ejecución) en un CSV con esquema y una tabla Markdown a partir de una única definición de columnas. Es útil para desarrolladores que necesitan exportar datos a hojas de cálculo y, al mismo tiempo, generar tablas resumen para comentarios en PR, resúmenes en Telegram o informes, todo con código mínimo y sin dependencias externas como pandas. Funciona en cualquier entorno con Python estándar y se invoca manualmente o cuando el usuario lo solicita explícitamente. La skill declara columnas una vez (clave, encabezado, formateador opcional) y ambos formatos se generan consistentemente, manteniendo el mismo orden y escapado seguro (comillas en CSV, pipes y saltos de línea en Markdown), lo que evita desviaciones entre formatos.

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

Preguntar en tu IA favorita

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

Documentación

Generador de Informes CSV

Usa esta skill cuando un trabajo produzca una lista de filas de resultados y quieras un CSV ordenado para hojas de cálculo, además de una tabla Markdown para un comentario en PR o un resumen de Telegram, todo a partir de una única definición de columna, para que las dos salidas nunca se desvíen. Declaras las columnas (clave, encabezado, formateador opcional) una vez; el ayudante genera ambos formatos, en un orden estable de columnas, con el escapado correcto de CSV y de pipes para Markdown. Sin pandas.

Cuándo invocar

  • El usuario dice: "escribe los resultados en un CSV", "exporta un informe", "haz una tabla markdown de esto", "guarda la salida de la ejecución como hoja de cálculo".
  • El código en la conversación tiene un list[dict] (o lista de objetos) que actualmente se imprime de forma ad hoc.

Cuándo NO invocar

  • Los datos necesitan trabajo real de dataframes - joins, group-bys, pivotes; opta por pandas/polars.
  • Un único resultado escalar, donde un CSV/tabla es excesivo.

Ejemplo concreto

Entrada del usuario:

Tengo una lista de tokens escaneados con una puntuación y un precio. Guarda un CSV y también dame una tabla markdown para el resumen de Telegram.

Salida:

# Copia assets/report.py en tu proyecto, luego:
from report import Column, write_csv, to_markdown

columns = [
    Column("symbol", "Símbolo"),
    Column("score", "Puntuación", fmt=lambda v: f"{v:.1f}"),
    Column("price_usd", "Precio", fmt=lambda v: f"${v:,.4f}"),
]
rows = [
    {"symbol": "ABC", "score": 8.4, "price_usd": 0.0123},
    {"symbol": "XYZ", "score": 6.1, "price_usd": 1.5},
]

write_csv("scan.csv", columns, rows)        # CSV con esquema, orden estable de columnas
print(to_markdown(columns, rows))           # mismas columnas, tabla Markdown

Ambas salidas usan exactamente las mismas columnas en el mismo orden, por lo que el CSV y la tabla de resumen siempre coinciden.

Patrón a aplicar

  1. Declara cada Column(key, header, fmt=...) una vez; ambos escritores consumen la misma lista, por lo que los encabezados y el orden se mantienen sincronizados.
  2. Mantén el orden de las columnas estable y explícito; no confíes en el orden de inserción del diccionario de filas arbitrarias.
  3. Deja que el fmt invocable maneje la presentación (moneda, redondeo); almacena los valores sin procesar en los diccionarios de filas.
  4. Usa csv.writer para un escapado correcto; escapa | y saltos de línea en la tabla Markdown para que nunca rompa el diseño.
  5. Trata una clave faltante como una celda vacía en lugar de fallar, para que las filas parciales aún se reporten.

Referencia: assets/report.py.

Fuente

Destilado de uso en producción en los proyectos de automatización del autor. v1.0.0. Ver también: [[pr-body-formatter]], [[sqlite-state]], [[telegram-alerter]].

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

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.

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