Programando análises de economia e finanças com um agente no terminal
Diferença para o Chat
No Chat você copia e cola código. No Claude Code, o agente mexe diretamente nos seus arquivos .R, .py, .qmd e roda o pipeline para você.
Exemplo: “Leia coleta_ipca.R, descubra por que a chamada à API do BCB está falhando e corrija.” → ele lê, identifica o erro, edita e roda de novo.
Tudo gratuito. Faça uma vez e está pronto para os próximos cursos:
| Ferramenta | Para quê | Onde |
|---|---|---|
| VS Code | editor onde tudo acontece | code.visualstudio.com |
| Extensão Claude Code | o agente dentro do VS Code | aba Extensions |
| Node.js (LTS) | requisito do Claude Code | nodejs.org |
| Python 3.10+ | rodar o projeto Focus | python.org |
Git + GitHub CLI (gh) |
versionar e publicar | git-scm.com · cli.github.com |
code.visualstudio.comCmd/Ctrl+Shift+X)Dica
Prefere o terminal? O Claude Code também roda como CLI: npm install -g @anthropic-ai/claude-code e depois claude na pasta do projeto.
Nota
No Windows, durante a instalação do Python marque “Add Python to PATH”. No Mac, muita coisa vem via brew install node python git gh se você usa o Homebrew.
resumo-focus/) e abra no VS Code (File → Open Folder)Dica
Rode sempre o Claude Code na raiz do projeto: é assim que ele lê o CLAUDE.md, os arquivos e o histórico do git.
Dica
Pedir o plano antes evita retrabalho — especialmente em pipelines de dados, onde uma mudança quebra várias etapas a jusante.
/clear para começar do zero; /compact para resumir e seguirNota
Em projetos de dados, evite carregar CSVs gigantes no contexto. Peça para o agente inspecionar via código (head, str, .info()) em vez de ler o arquivo inteiro.
pytest antes do commit)Nota
Esses recursos voltam no projeto do Focus: o CLAUDE.md (briefing), o routine-prompt.md (parente das skills) e, no Platform 101, o MCP do GitHub.
Dica
1 construir na máquina · 2 publicar no GitHub · 3 automatizar na nuvem.
Construir, ao vivo no VS Code, o projeto que baixa o Focus, prepara o resumo e já deixa a automação pronta — tudo na sua máquina.
São 15 passos até a Routine. Aqui vamos do Passo 1 ao 11; publicar no GitHub e automatizar (12–15) é o Platform 101.
Guia completo, com todos os prompts
CLAUDE.mdEstou começando um projeto Python do zero nesta pasta vazia. O objetivo é
baixar toda semana o boletim Focus do Banco Central (um PDF), extrair o
texto e, mais tarde, gerar e entregar um resumo. Faça duas coisas:
1. Crie a estrutura de pastas: src/, tests/, data/, output/focus/ e
.github/workflows/.
2. Crie um CLAUDE.md na raiz com o briefing: objetivo, fonte (página e PDF
do Focus no bcb.gov.br), convenções (focus_AAAA-MM-DD; data/ guarda PDFs
e textos) e regras (nunca inventar número; se segunda é feriado, o
download retrocede dia a dia até achar o PDF).
Me mostre a árvore de pastas e o CLAUDE.md.baixar_focus.pyCrie src/baixar_focus.py: uma função ultima_segunda(hoje) que retorna a
segunda mais recente ESTRITAMENTE anterior a hoje; uma função baixar(dest)
que parte da última segunda e tenta baixar R{AAAAMMDD}.pdf, recuando um dia
por tentativa (até 7), validando os bytes %PDF, salvando focus_AAAA-MM-DD.pdf
e retornando (data, caminho); use User-Agent de navegador e um main() que
baixe para data/. Comente em português.extrair_texto.pydemo.py (e o pipeline roda)Crie: README.md descrevendo o projeto; .gitignore (ignora __pycache__/,
.pytest_cache/, *.pyc, .venv/, .env; comenta que output/focus/ é versionado);
output/focus/.gitkeep; e .github/workflows/focus-download.yml — Action que
roda toda segunda às 9h15 BRT (12h15 UTC) e por workflow_dispatch, faz
checkout, instala o requirements, roda baixar_focus.py e extrair_texto.py e
commita data/focus_*.{pdf,txt} de volta (permissão contents: write).routine-prompt.mdVocê está executando a Routine de resumo semanal do Focus. O download e a
extração já foram feitos por um GitHub Action. Sua tarefa: ler o .txt mais
recente de data/, gerar um resumo em HTML com a logo da Análise Macro e
deixá-lo como rascunho de e-mail no Gmail.
[localizar .txt → checar frescor → sanity check (IPCA/Selic/PIB) → escrever
resumo executivo + 3 revisões → montar HTML → criar rascunho]
Nunca invente número.enviar_email.pyCrie src/enviar_email.py, que envia o resumo HTML do Focus por e-mail via
SMTP do Gmail. Requisitos:
- NUNCA colocar credenciais no código. Ler de variáveis de ambiente:
FOCUS_SMTP_USER, FOCUS_SMTP_APP_PASSWORD, FOCUS_EMAIL_DEST e FOCUS_EMAIL_BCC.
- Uma função que acha o focus_*.html mais recente em output/focus/.
- Montar e-mail com corpo HTML (e fallback texto), assunto "Resumo Focus —
AAAA-MM-DD" e enviar por smtp.gmail.com:465 (SSL) com a senha de app.
- main() com --html, --dest, --assunto e --dry-run (monta e mostra SEM enviar).
Comente em português e me mostre o arquivo.focus-enviar.ymlCrie .github/workflows/focus-enviar.yml: um Action que dispara no push de um
output/focus/focus_*.html na branch main (e por workflow_dispatch). Faz
checkout, instala o requirements e roda src/enviar_email.py, passando como
variáveis de ambiente os Secrets FOCUS_SMTP_USER, FOCUS_SMTP_APP_PASSWORD,
FOCUS_EMAIL_DEST e FOCUS_EMAIL_BCC.Atualize o routine-prompt.md: troque o passo final (que criava um rascunho
com create_draft) por "publicar o HTML": fazer git add do
output/focus/focus_AAAA-MM-DD.html, commit e git push para main, explicando
que é esse push que dispara o Action de envio (focus-enviar.yml). Mantenha os
passos de frescor, sanity check e "nunca invente número"; nas regras de
parada, troque "pare sem enviar e-mail" por "pare sem commitar o HTML".Com os Passos 1–11, o projeto está completo localmente: baixa, extrai, testa, tem o roteiro do agente e já sabe enviar.
➡️ Falta publicar no GitHub e ligar a automação na nuvem (Passos 12–15) — isso é o Claude Platform 101.
Continua no guia
CLAUDE.md em um projeto real da Análise MacroObrigado! — Análise Macro