Communitygithub.com

baronguyen001/ai-automation-skills

Transforme uma lista de dicionários de resultados em um CSV com esquema e uma tabela Markdown a partir de uma única especificação de coluna — declare as colunas uma vez, emita ambas, com ordenação estável e escape seguro, apenas stdlib, sem pandas. Use quando o usuário pedir para escrever resultados em CSV, exportar um relatório, criar uma tabela de resumo Markdown ou salvar a saída de uma execução como planilha.

O que é ai-automation-skills?

Esta skill permite que agentes de IA (como Claude Code, Cursor ou Codex) convertam uma lista de dicionários de resultados em dois formatos simultaneamente: um CSV próprio para planilhas e uma tabela Markdown para comentários em PRs, Telegram ou outros resumos. A grande vantagem é que ambos os formatos compartilham a mesma definição de colunas, garantindo que nunca haja divergência entre a exportação tabular e a tabela textual. Suporta personalização de formatação (moeda, arredondamento) através de funções lambda e trata chaves ausentes com células vazias, evitando erros. A implementação usa apenas a biblioteca padrão do Python, sem dependências externas como pandas, tornando-a leve e portátil.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Escritor de Relatórios CSV (CSV Report Writer)

Use esta skill quando um trabalho produzir uma lista de linhas de resultados e você quiser um CSV limpo para planilhas, além de uma tabela Markdown para um comentário em PR ou resumo no Telegram — a partir de uma única definição de colunas, para que as duas saídas nunca fiquem dessincronizadas. Você declara as colunas (chave, cabeçalho, formatador opcional) uma vez; o helper emite ambas, em uma ordem de colunas estável, com citações CSV adequadas e escape de pipes para Markdown. Nada de pandas.

Quando invocar

  • O usuário diz: "escreva os resultados em um CSV", "exporte um relatório", "crie uma tabela Markdown disso", "salve a saída da execução como uma planilha".
  • O código na conversa tem uma list[dict] (ou lista de objetos) que atualmente imprime de forma ad hoc.

Quando NÃO invocar

  • Os dados precisam de trabalho real com dataframes — junções, agrupamentos, pivôs; recorra a pandas/polars.
  • Um único resultado escalar, onde um CSV/tabela é exagero.

Exemplo concreto

Entrada do usuário:

Tenho uma lista de tokens escaneados com uma pontuação e um preço. Salve um CSV e também me dê uma tabela markdown para o resumo do Telegram.

Saída:

# Copie assets/report.py para o seu projeto, depois:
from report import Column, write_csv, to_markdown

columns = [
    Column("symbol", "Símbolo"),
    Column("score", "Pontuação", fmt=lambda v: f"{v:.1f}"),
    Column("price_usd", "Preço", 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 com esquema, ordem estável de colunas
print(to_markdown(columns, rows))           # mesmas colunas, tabela Markdown

Ambas as saídas usam exatamente as mesmas colunas na mesma ordem, então o CSV e a tabela do resumo sempre concordam.

Padrão a aplicar

  1. Declare cada Column(key, header, fmt=...) uma vez; ambos os escritores consomem a mesma lista, então cabeçalhos e ordem permanecem sincronizados.
  2. Mantenha a ordem das colunas estável e explícita — não dependa da ordem de inserção do dicionário de linhas arbitrárias.
  3. Deixe o fmt callable cuidar da apresentação (moeda, arredondamento); armazene valores brutos nos dicionários de linha.
  4. Use csv.writer para citação correta; escape | e novas linhas na tabela Markdown para que ela nunca quebre o layout.
  5. Trate uma chave ausente como célula vazia em vez de causar erro, para que linhas parciais ainda sejam reportadas.

Referência: assets/report.py.

Fonte

Destilado do uso em produção nos projetos de automação do autor. v1.0.0. Veja também: [[pr-body-formatter]], [[sqlite-state]], [[telegram-alerter]].

→ Construa o bot executável completo com o 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.

Habilidades Relacionadas