Use quando o usuário quiser registrar (lançar) uma despesa ou receita, abrir o mês (lançar recorrências em lote), gerenciar recorrências/parcelamentos, ver o status/saldo do mês, ou fechar o mês do orçamento doméstico em BRL. Os dados ficam em CSVs mensais (AAAA-MM.csv) na pasta de orçamento do hestia no Google Drive (pasta configurável por workspace/defaults), acessada pelo conector. Sempre confirma antes de escrever e nunca dá conselho de investimento. Para análise histórica e comparações, use a skill irmã analisar-gastos.
Resources
1Install
npx skillscat add sallzzbr/hefesto-publico/orcamento Install via the SkillsCat registry.
Orçamento Doméstico
Esta skill ensina como organizar o orçamento doméstico mensal em arquivos CSV
guardados no Google Drive: o livro do mês (despesas E receitas) e o cadastro de
recorrências. Esta skill é só INSTRUÇÃO: ela não lê nem escreve arquivos sozinha —
quem acessa o Drive é o conector do Google Drive já configurado no Cowork/Claude Code.
Regras invioláveis (leia primeiro)
- Dados ficam no Google Drive, nunca no repositório. Use sempre o conector do Google Drive.
Refira a pasta pelo caminho/nome resolvido (ver "Onde ficam os dados"), NUNCA por ID. Não cole
IDs de pasta, links com ID, nem nomes de ferramentas específicas do conector — eles mudam de
ambiente para ambiente. - Confirme antes de QUALQUER escrita. Nunca crie, edite ou acrescente uma linha sem antes
mostrar exatamente o que será gravado e receber o "ok" do usuário. - Exibir em BRL, guardar no formato cru. Mostre valores como
R$ 1.234,56(ponto de milhar,
vírgula decimal). Grave no CSV como1234,56(vírgula decimal, sem ponto de milhar, semR$). - Esta skill não dá conselho de investimento. Ela registra e resume gastos e receitas.
Decisões financeiras são do usuário. - Fechar o mês é só leitura. Nunca apague, mova ou sobrescreva dados ao fechar.
Onde ficam os dados
A pasta-base do hestia no Drive é resolvida pela regra única de${CLAUDE_PLUGIN_ROOT}/skills/orcamento/references/defaults.md, nesta ordem: (1) campolocal_dados na seção ## Paths do workspace do CLAUDE.md do repositório atual;
(2) local_dados dos defaults do usuário (~/.claude/hestia/defaults.md); (3) default
documentado Financas/hestia/. Esta skill usa a subpasta orcamento/ da base resolvida.
Os paths Financas/hestia/orcamento/... citados nos exemplos abaixo são ilustrativos do
default, não hardcode. Dois tipos de arquivo:
Livro do mês — AAAA-MM.csv
Um arquivo por mês (ex.: 2026-06.csv). O "mês atual" vem da data de hoje, a menos que o
usuário indique outro mês; ao lançar com data explícita, o arquivo é o do mês daquela data.
Cabeçalho exato, nesta ordem, sempre na primeira linha:
data;tipo;categoria;descricao;valor;metododata: AAAA-MM-DD (ex.: 2026-06-28).tipo:despesaoureceita.categoria: texto livre (veja a regra de deduplicação abaixo).descricao: texto livre.valor: número com vírgula decimal, sem separador de milhar (ex.:1234,56). Sempre positivo
— o sinal vem dotipo. Nunca useR$nem ponto de milhar aqui.metodo: forma de pagamento/recebimento (pix, crédito, débito, dinheiro, transferência…).
O saldo do mês é receitas − despesas, calculado na leitura; nunca é persistido no livro.
Exemplo de arquivo 2026-06.csv:
data;tipo;categoria;descricao;valor;metodo
2026-06-01;receita;Salário;Salário do mês;8500,00;transferência
2026-06-03;despesa;Alimentação;Compra no mercado;352,90;crédito
2026-06-05;despesa;Transporte;Gasolina;200,00;débito
2026-06-10;despesa;Moradia;Conta de luz;187,45;pixCadastro de recorrências — recorrencias.csv
Um único arquivo com as contas fixas, assinaturas, parcelamentos e receitas recorrentes
(salário é uma receita fixa). Cabeçalho exato:
nome;tipo;categoria;descricao;valor;dia;metodo;parcelas_restantesnome: identificador legível e único ("Netflix", "Aluguel", "Salário", "Sofá 6x").tipo:despesaoureceita.dia: dia do mês previsto (1–31). Em mês mais curto que odia, considere o último dia do mês.parcelas_restantes: vazio = conta fixa (repete indefinidamente); número = parcelamento,
decrementado a cada abertura de mês em que a parcela é lançada. Ao chegar a 0, a linha é
removida do cadastro (com confirmação, como toda escrita).
Compatibilidade com o cabeçalho antigo (0.2.0)
Até a 0.2.0 o livro não tinha a coluna tipo (data;categoria;descricao;valor;metodo).
Ao abrir um CSV com o cabeçalho antigo:
- leia todas as linhas como
tipo=despesa; - ofereça atualizar o arquivo para o cabeçalho novo (reescrever inserindo
despesaem cada
linha) — só com confirmação explícita, nunca automaticamente.
O fallback de leitura do caminho da era economia-domestica também continua valendo
(seção seguinte).
Migração do caminho antigo (fallback de leitura)
Até a versão budget 0.1.0 (plugin economia-domestica), os dados viviam no caminho legado
— campo local_dados_legado da mesma regra de resolução (defaultFinancas/economia-domestica/budget/; vazio desliga o fallback). Regras de compatibilidade:
- Ao ler (status, fechar mês, checar categorias): se o CSV do mês não existir na pasta
resolvida mas existir no caminho legado, leia do legado e avise o usuário
que encontrou dados no local antigo. - Ao encontrar dados no caminho legado, ofereça migrar: copiar os CSVs para a pasta
resolvida, com confirmação explícita, sem apagar os originais. Nunca
migre sem perguntar. - Ao escrever: sempre no caminho novo. Se o mês corrente tiver CSV apenas no caminho antigo,
primeiro ofereça a migração daquele arquivo (para não dividir o mês em dois lugares); se o
usuário recusar, avise que o lançamento criará um arquivo novo no caminho novo e que o resumo
do mês passará a considerar os dois até a migração.
Escape de campos (quando um campo de texto tiver caracteres especiais)
Campos de texto livre podem conter o próprio separador, aspas ou quebra de linha. Siga as regras
de CSV (RFC 4180), adaptadas ao separador ;:
- Se um campo contiver
;,"ou quebra de linha, envolva o campo INTEIRO em aspas duplas:"…". - Dentro de um campo entre aspas, cada
"literal vira""(aspas dobradas). - Não envolva em aspas campos que não precisam — mantenha o arquivo legível.
- Ao LER o CSV, respeite as mesmas regras: um
;dentro de aspas NÃO é separador.
Exemplos:
- descrição
Mercado; feira→ grava"Mercado; feira". - descrição
Jantar "à la carte"→ grava"Jantar ""à la carte""".
Dica preventiva: em valor, nunca acrescente separador de milhar — assim a vírgula decimal nunca
colide com o ; e valor jamais precisa de aspas.
Fluxo 1 — Lançar (despesa ou receita)
- Entenda em linguagem natural: tipo (despesa ou receita — "gastei", "paguei" → despesa;
"recebi", "caiu", "lança receita" → receita; na dúvida, assumadespesae deixe o tipo visível
na confirmação), data (padrão = hoje), categoria, descrição, valor e método. Pergunte só o que
faltar. Aceite valores ditos como "R$ 352,90", "352,90" ou "352.90" e normalize para o formato
cru352,90. - Antes de escrever, cheque a categoria contra as já usadas do MESMO tipo. Leia as categorias
que já existem no CSV do mês atual (e, se útil, de 1–2 meses anteriores), separando categorias
de despesa e de receita. Compare a categoria nova com as existentes do mesmo tipo ignorando
maiúsculas/minúsculas, acentos e plural.- Se for parecida com uma já existente, NÃO grave ainda: sugira reaproveitar o rótulo existente
para não fragmentar. Ex.: usuário diz "mercado", já existe "Alimentação" → "Você já usa
Alimentação para esse tipo de gasto. Quer lançar como Alimentação em vez de mercado?" - Se for genuinamente nova, confirme o rótulo e siga com ele.
- Nunca renomeie nem unifique categorias antigas automaticamente — só sugira.
- Se for parecida com uma já existente, NÃO grave ainda: sugira reaproveitar o rótulo existente
- Confirme exatamente o que será gravado antes de escrever, mostrando a linha final já
formatada (otipoincluso):Vou gravar em
Financas/hestia/orcamento/2026-06.csv:2026-06-28;despesa;Alimentação;Compra no mercado;352,90;crédito
Confirma? - Só depois do "ok", grave (acrescente a linha no fim do arquivo) usando o conector.
- Se o CSV do mês não existir, crie-o primeiro com o cabeçalho
data;tipo;categoria;descricao;valor;metodoe então acrescente a linha. Avise que o arquivo do
mês foi criado. (Antes de criar, aplique o fallback do caminho antigo: o mês pode existir lá.) - Confirme o sucesso e mostre o valor lançado em BRL (
R$ 352,90).
Fluxo 2 — Abrir o mês (recorrências em lote)
Siga integralmente o protocolo em${CLAUDE_PLUGIN_ROOT}/skills/orcamento/references/abertura-mes-segura.md. Ele define a seleção
do lote, a confirmação única do efeito completo, o journal durável, as releituras antes de cada
escrita e a reconciliação depois de falha ou resultado incerto. A presença de uma linha no livro,
sozinha, nunca autoriza decrementar uma parcela.
Fluxo 3 — Gerenciar recorrências
Adicionar, editar, listar ou remover linhas de
recorrencias.csv, em linguagem natural
("cadastra o aluguel de 2.800 todo dia 5", "a Netflix subiu pra 55,90", "acabou o
financiamento do sofá").Para escrever: mostre a linha final exata (ou o antes/depois na edição, ou a linha que sai na
remoção) e confirme antes. Serecorrencias.csvnão existir, crie com o cabeçalho na
primeira adição (avisando).Ao listar, rode o script e apresente em BRL o que ele devolveu — fixas e parceladas
agrupadas, o total mensal comprometido (despesas) e o total recorrente de receitas:python3 ${CLAUDE_PLUGIN_ROOT}/scripts/recorrencias.py --recorrencias <recorrencias.csv>Ele separa fixa de parcelada pelo contrato (
parcelas_restantesvazio = fixa, número =
parcelamento), soma os dois lados e traz os subtotais por grupo. Três coisas para narrar em
vez de contornar:parcelas_zeradaslista parcelamento com 0 restante ainda no cadastro. Ele continua
no total, porque o total diz o que o arquivo diz hoje — some-lo calado derrubaria o
comprometido sem o usuário pedir. Ofereça remover a linha (é escrita, então confirme).avisostraz violação de contrato que não muda número nenhum:diafora de 1–31, nome
vazio, nome repetido. Os dois últimos importam além da estética — oresumo_mes.pye ogastos.pycasam recorrência com lançamento por nome, e nome repetido ou vazio cega os
dois. Aponte para o usuário corrigir.diferenca_receitas_menos_despesasé o que o CADASTRO diz, não previsão do mês: o mês
real tem gasto variável que não está ali. Para a foto do mês, é o Fluxo 4.
As somas dos Fluxos 4 e 5 rodam em SCRIPT
Não some o CSV de cabeça, e não converta valor para número na mão. resumo_mes.py faz
receitas, despesas, saldo, taxa de poupança, quebra por categoria e top 5 — determinístico, comDecimal e golden test:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/resumo_mes.py \
--livro <AAAA-MM.csv> [--recorrencias <recorrencias.csv>]O conector busca o CSV, você o materializa num arquivo temporário local, roda e narra o JSON.
Ele trata o cabeçalho antigo sem tipo (lê tudo como despesa) e declara que fez isso; omite
a taxa de poupança com motivo quando o mês não tem receita, em vez de devolver 0%; e para se
encontrar um tipo que não é despesa nem receita, em vez de escolher um lado.
Vale para o Fluxo 4 e para o Fluxo 5: os dois pedem os mesmos números do mesmo arquivo, e a
única diferença entre eles é o enquadramento da narrativa.
Até a 0.10.0 os dois fluxos traziam a receita da soma manual escrita aqui — "quebre o CSV,
troque a vírgula por ponto, some". Ela saiu porque tem dois furos que não dão sintoma: campo de
texto entre aspas com ; dentro desloca as colunas e produz número errado com cara de certo, e
a aritmética sai em ponto flutuante, onde 0,1 + 0,2 ≠ 0,3 e a divergência de centavos não é
rastreável. O script usa o módulo csv e Decimal exatamente por causa desses dois.
Fluxo 4 — Status do mês
- Leia o CSV do mês atual (ou o mês que o usuário indicar), aplicando o fallback do caminho
antigo e a compatibilidade de cabeçalho se necessário. Se não existir em lugar nenhum, diga
que ainda não há lançamentos nesse mês e ofereça lançar a primeira despesa/receita ou abrir o
mês. - Rode o
resumo_mes.py(seção acima). Receitas, despesas e saldo já vêm somados emDecimal; não refaça a conta por fora para conferir — se o número estiver errado, o conserto
é no script e no golden, nunca na narrativa. - Apresente em BRL o que o JSON devolveu: receitas do mês, despesas do mês, saldo, e a quebra de
despesas por categoria ordenada do maior para o menor, com valor e % do total de despesas. - Se
recorrencias.csvexistir, mostre também o comprometido restante devolvido peloresumo_mes.pye o saldo projetado correspondente. Esse relatório não autoriza escrita nem
decremento de parcela; qualquer abertura ou reconciliação continua regida pelo Fluxo 2 e sua
referência canônica. Sem cadastro, omita a seção. - Se notar categorias redundantes acumuladas (ex.: "Mercado" e "Alimentação" coexistindo),
sugira consolidar — mas NÃO consolide sozinho. Descreva o que mudaria e pergunte se o usuário
quer fazer isso (e em qual rótulo). - Para análise histórica (evolução, médias, variações fora do padrão), indique a skill
analisar-gastos— o status é a foto do mês, não a comparação entre meses.
Fluxo 5 — Fechar o mês
- Operação só de leitura. Nunca apague, mova, renomeie ou sobrescreva o CSV.
- Leia o CSV do mês (com fallback do caminho antigo, se necessário) e rode o
resumo_mes.py
(seção acima). Ele já devolve receitas totais, despesas totais, saldo, taxa de poupança
(saldo ÷ receitas; omitida com o motivo quando o mês não tem receita lançada — nunca divide
por zero), total por categoria de despesa (maior → menor) e as maiores despesas individuais
(top 5 porvalor). O fechamento é a mesma foto do Fluxo 4, narrada como encerramento. - Apresente tudo em BRL. Se quiser, ofereça salvar esse fechamento num arquivo SEPARADO (ex.:
Financas/hestia/orcamento/2026-06-resumo.md) — mas só com confirmação explícita, e
jamais tocando no CSV de lançamentos. - Lembre que isto não é conselho de investimento: é um retrato do mês.
Antes de confiar num arquivo existente
Ao abrir um CSV, confira o cabeçalho da primeira linha: o livro deve serdata;tipo;categoria;descricao;valor;metodo (ou o cabeçalho antigo sem tipo — aí vale a seção
de compatibilidade) e o cadastro deve sernome;tipo;categoria;descricao;valor;dia;metodo;parcelas_restantes. Se o cabeçalho estiver
diferente disso ou o arquivo parecer inconsistente, NÃO sobrescreva às cegas: mostre o problema
ao usuário e pergunte como proceder. Leia o arquivo imediatamente antes de gravar e prefira
acrescentar (append) em vez de reescrever o arquivo inteiro, para reduzir risco de conflito com
edições feitas no Excel/Drive.
Formatação BRL ↔ cru (referência)
| Exibir (usuário) | Gravar (CSV) |
|---|---|
R$ 1.234,56 |
1234,56 |
R$ 200,00 |
200,00 |
R$ 0,90 |
0,90 |
Nunca grave R$ nem separador de milhar; sempre grave com vírgula decimal.