From financeiro
Onboarding completo do FIN App. Três modos: Modo A (questionário guiado em 6 blocos, do zero) — Modo B (importação de documento de setup pronto) — Modo C (aprendizado retroativo, quando o FIN já tem contas/categorias/histórico e o plugin precisa só aprender o que já existe e popular a memória). Use quando o FIN da pessoa estiver vazio, quando ela tiver um documento pronto, ou quando ela já usa o FIN há tempo mas é a primeira vez rodando o plugin. Idempotente: rodar 2x não duplica nada.
How this skill is triggered — by the user, by Claude, or both
Slash command
/financeiro:onboarding [caminho-do-documento-de-setup OU 'retroativo'][caminho-do-documento-de-setup OU 'retroativo']This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
- **Modo A — FIN vazio:** `fin_listar_contas` retorna lista vazia. Pessoa pediu "configura meu FIN do zero", "vamos do zero", "instala o FIN pra mim"
fin_listar_contas retorna lista vazia. Pessoa pediu "configura meu FIN do zero", "vamos do zero", "instala o FIN pra mim".md em vez de criar do zero./financeiro:instalar-fin-mcp antesFinanceiro/ da pessoa já tem Estabelecimentos.md populado com regras (ou seja, o plugin já aprendeu antes nessa máquina) — nesse caso, o trabalho de aprendizado já foi feito, não precisa rodar onboardingTudo que for contexto operacional do FIN (regras aprendidas, estabelecimentos, preferências, conciliação, feedback de bugs, e ponto de parada de sessões de importação) deve viver dentro da pasta Financeiro/ do vault/diretório da pessoa, NÃO na memória pessoal do Claude Code (~/.claude/projects/*/memory/).
Motivo: o vault é a fonte de verdade do trabalho. Se a pessoa mover de máquina, abrir noutro dia, ou quiser versionar via git, tudo tem que estar junto. A memória do Claude Code fica pra coisas sobre a PESSOA (preferências de comunicação, perfil, hábitos), não sobre o trabalho.
Estrutura recomendada dentro de Financeiro/:
Financeiro/
├── Contas e Cartões.md ← fonte de verdade das contas/cartões
├── Preferências.md ← decisões não-óbvias, regras de vida
├── Estabelecimentos.md ← regras aprendidas nome → categoria
├── Status Conciliação.md ← o que já foi conferido com extrato/fatura
├── FIN - Feedback e Bugs.md ← bugs, inconsistências e sugestões pro FIN
└── Sessões/ ← ponto de parada de cada sessão longa
└── YYYY-MM-DD - <resumo>.md
Quando uma sessão de importação é longa e vai precisar ser retomada depois (ex: precisa reiniciar o Claude Code pra atualizar MCP, pessoa vai dormir no meio, bug do FIN que só o dev pode corrigir), crie um arquivo em Financeiro/Sessões/ com: o que já foi feito, o TODO pendente com IDs necessários pra retomar (UUIDs de contas, hashes de extrato, etc), e os aprendizados importantes que não podem se perder. Na próxima sessão, ao ler Financeiro/, o plugin vai encontrar esse arquivo e retomar de onde parou.
fin_listar_contas. Se falhar, dispare /financeiro:instalar-fin-mcp e pause.Financeiro/ definida. Leia ~/.fin-plugin/config.json. Se não existir, faça o setup de localização (ver agente principal, seção "Primeira execução"), depois volte.fin://docs/guia pra ter as regras de negócio do FIN frescas.fin_listar_contas e fin_listar_categorias. Se já houver coisa, avise a pessoa antes e pergunte se ela quer continuar (modo idempotente: você só cria o que falta) ou abortar.Antes de perguntar qualquer coisa, detecte automaticamente rodando:
fin_listar_contas
fin_listar_categorias
Lógica de detecção:
$ARGUMENTS aponte pra um documento (aí Modo B)$ARGUMENTS é caminho de arquivo .md/.txt → vai pro Modo B (importação), independente do estado do FIN$ARGUMENTS contém "retroativo" / "aprender" / "já tenho" → força Modo C mesmo se o FIN parecer vazioQuando detectar Modo C automaticamente, avise a pessoa antes de seguir:
Vi que tu já tem [N] contas, [M] cartões e [K] categorias no FIN. Vou rodar em modo retroativo: não vou criar nada, vou só ler o que já tem, analisar teu histórico e popular minha memória pra aprender teus padrões. Beleza? (isso é não-destrutivo, posso parar a qualquer momento)
Se a pessoa quiser outro modo mesmo com FIN populado (raro: ela quer redo do zero), respeita.
Você vai entrevistar a pessoa em 6 blocos. Avance bloco por bloco. Não pule nada. Confirme ao final de cada bloco antes de seguir.
Tom: parceiro direto, pergunta uma coisa de cada vez quando precisa de detalhe, agrupa quando dá pra agrupar. Não enche linguiça.
Pergunte:
Bloco 1: Contas. Em quais bancos tu tem conta? Pode listar todas, pode ser conta corrente, poupança, conta digital.
Pra cada banco que ela listar, capture:
Depois, pergunta sobre dinheiro vivo:
Tu costuma andar com dinheiro vivo? Carteira, cofre em casa, envelope?
Se sim, crie uma conta tipo "Dinheiro" (ou o nome que ela preferir, ex: "Carteira"). Dinheiro vivo é uma conta como qualquer outra no FIN, vai ter saldo, recebe lançamentos, participa de transferências.
Se ela tem múltiplos lugares de dinheiro vivo (carteira + cofre + envelope viagem), pergunte:
Quer que eu junte tudo numa conta única "Dinheiro" ou prefere separar (Carteira, Cofre, etc.)?
Default: uma conta única.
Pergunta sobre conta em dólar:
Tu tem alguma conta em dólar? Carteira USD, conta em fintech internacional, conta nos EUA, broker em dólar, qualquer coisa que guarda valor em USD em vez de reais?
Se sim, pra cada conta USD capture:
fin_ajustar_saldo_conta)Como funciona despesa em conta USD:
Dá pra lançar despesa categorizada em USD. O FIN grava
amountsempre em BRL (pra relatórios ficarem honestos), e guarda o valor nativo em USD como metadata. Na hora de lançar, eu vou te perguntar: "gastou $X na [conta USD] — sabe quanto saiu em reais da tua conta, ou prefere estimar com uma cotação?" (modo exato ou modo cotação).O que dá pra fazer com conta USD:
- Despesa/receita categorizada em USD via
fin_criar_despesa/fin_criar_receitacomoriginal_amount_cents+original_currency: "USD".- Câmbio USD ↔ BRL (vender ou comprar dólar) via
fin_cambio— cria 2 transações vinculadas, categoria "Câmbio"- Ajustar saldo da conta USD a qualquer momento via
fin_ajustar_saldo_conta- Patrimônio consolidado em reais via
fin_patrimonio— converte USD→BRL na leitura usando cotação cached (1h)Beleza?
Confirme o bloco 1 antes de seguir:
Anotei: [N contas BRL bancárias] + [conta Dinheiro, se aplicável] + [N contas USD, se aplicável]. Confirma ou ajusta?
Bloco 2: Cartões de crédito. Tem cartão de crédito? De quais bancos ou lojas?
Pra cada cartão, capture:
Cálculo automático do fechamento:
fechamento = melhor dia de compra - 1
Se a pessoa souber o dia de fechamento direto, aceite. Se ela não souber nem o melhor dia nem o fechamento, peça pra ela conferir no app do banco e voltar.
Cartão de loja vs cartão de banco:
Aviso sobre variação de fechamento (importante):
Esse dia de fechamento que tu me passou é referência. Na prática, pode variar 1 ou 2 dias por causa de fim de semana, feriado ou ciclo do banco. Quando eu processar uma fatura tua depois, eu uso o período real da fatura, não o dia fixo. Beleza?
Confirme o bloco 2 antes de seguir.
Bloco 3: Tua renda. Tu é CLT, PJ, autônoma, ou um misto?
Sugira categorias de receita simples e confirme:
Pergunte se tem outras fontes (aluguel, freela ocasional, etc.).
Fluxo aprofundado:
Tu emite nota por uma empresa (CNPJ próprio) ou recebe direto como PF?
Se tem CNPJ:
Qual o nome ou apelido dessa empresa? Vou usar como categoria mãe das tuas receitas. (ex: "Trabalho [nome]")
Se recebe como PF, a categoria mãe vira só "Trabalho" ou "Renda Profissional".
Quais tipos de trabalho tu faz? Lista pra mim, cada tipo vai virar uma subcategoria.
NÃO sugira tipos. A pessoa que diz. Anote literal.
Tem contrato fixo mensal com algum cliente?
Se sim, crie uma subcategoria especial pra esse contrato fixo (ex: "Fixo [nome do cliente]"), pra ela conseguir separar fixo de avulso na análise.
Quando tem CNPJ PJ, avise:
Como tu é PJ, vou criar uma categoria de despesa "Taxas, Juros & Impostos" com subs "Impostos PJ (DAS)", "INSS", "Contador". Beleza?
Combina os dois fluxos: cria categorias CLT + categorias do freela com o mesmo aprofundamento.
Pergunta no fim do bloco:
Tem alguma renda extra? Aluguel, rendimento de investimento, reembolso, venda de coisa pessoal?
Cria categorias conforme o que ela disser. Sugere genéricas: Renda Fixa Pessoal, Rendimento, Reembolso, Pontuais, Ajuste Financeiro.
Confirme o bloco 3.
Esse é o bloco mais conversacional. Pergunta uma coisa de cada vez, mas rápido. Cada resposta gera uma ou mais categorias.
Bloco 4: Estilo de vida. Vou fazer umas perguntas rápidas pra montar tuas categorias de despesa.
end_date (último mês com ocorrência) ou max_occurrences (N parcelas). O FIN para de gerar ocorrências fantasma depois disso. Ex: IPTU 10x jan-out/2026 → end_date: "2026-10-10". Sem isso, a bill gera ocorrência eterna até alguém marcar is_active: false.O FIN só suporta 2 níveis: categoria → subcategoria. Se a pessoa quiser 3 níveis (ex: Estética > Cabelo > Corte/Coloração), você precisa achatar:
Opção 1 — Achatar pra subs diretas com prefixo:
Opção 2 — Reduzir granularidade:
Explique o limite pra pessoa antes de criar:
Por enquanto o FIN só tem 2 níveis (categoria + subcategoria). Pra essa rotina de cuidados, posso fazer assim: [opção 1 ou 2]. Qual prefere?
Com tudo dos blocos 3 e 4, você tem a base pra montar a lista de categorias da pessoa. Agora consolida e mostra a proposta pra revisão.
Princípio: a proposta é derivada das respostas dela, não de um template fixo. Se ela disse que tem cachorro, vai ter Pets. Se não disse, não inventa. Se trabalha com IA e paga várias assinaturas, faz sentido ter sub "IA" em Tecnologia. Se nunca mencionou IA, não cria. Você nunca puxa categoria que ela não justificou.
Formato da proposta (template estrutural, conteúdo é montado a partir das respostas):
## Proposta de categorias
### Despesas
- **[Categoria 1]**: [Sub], [Sub], [Sub]
- **[Categoria 2]**: [Sub], [Sub]
...
### Receitas
- **[Categoria 1]**: [Sub], [Sub]
...
Como derivar:
Mostre e pergunte:
Essa é minha proposta. Quer ajustar alguma coisa? Tirar, adicionar, renomear?
A pessoa pode rodar quantas rodadas de ajuste precisar até confirmar. Cada rodada, você atualiza a lista e mostra de novo.
Captura de "decisões não-óbvias": durante o ajuste, se a pessoa colocar algo numa categoria diferente do que seria o default óbvio pra ela (ex: uma assinatura num lugar inesperado, uma despesa de higiene em saúde em vez de pessoal, etc.), anote essa decisão com o motivo. Vai pra Preferências.md > Decisões não-óbvias no final. Não imponha defaults — só anote os desvios que ela tomou conscientemente.
Crie Financeiro/Setup.md com tudo consolidado:
---
tipo: setup-financeiro
status: pronto-para-criar
gerado_em: {ISO timestamp}
---
# Setup FIN
## Contas
| Nome | Tipo | Saldo inicial |
|---|---|---|
## Cartões
| Nome | Limite | Fechamento | Vencimento | Melhor dia compra | Conta vinculada |
|---|---|---|---|---|---|
## Categorias de despesa
(lista categoria > subcategorias)
## Categorias de receita
(lista categoria > subcategorias)
## Decisões não-óbvias
(captura de escolhas que fugiram do default, com motivo se houver)
Mostre o documento gerado pra confirmação final. A pessoa lê, ajusta se quiser, confirma.
Antes de qualquer criação, rode fin_listar_contas e fin_listar_categorias pra ver o que já existe. Pula o que já existe (idempotência).
Ordem de criação:
fin_criar_conta pra cada conta nova (incluindo Dinheiro)fin_criar_conta (cartões são contas tipo crédito no FIN, ou via tool específica se houver — confira a description da tool)fin_criar_categoria pra cadafin_criar_subcategoria pra cadafin_criar_categoriafin_criar_subcategoriaMostre o progresso em tempo real (use os nomes reais das contas/cartões/categorias da pessoa):
Criando contas... [3/4 ✓] [conta], [conta], [conta] Criando cartões... [2/6 ✓] [cartão], [cartão] Criando categorias... [5/12 ✓] ...
.md da pasta Financeiro/Depois que tudo foi criado no FIN, popula:
Financeiro/Contas e Cartões.md — lista todas as contas e cartões criados, com fechamento cadastrado, vencimento, conta vinculada.
Financeiro/Preferências.md — começa vazio mas com a seção Decisões não-óbvias já preenchida com as decisões capturadas no Bloco 5.
Financeiro/Estabelecimentos.md — começa vazio (vai populando conforme uso). Estrutura mínima recomendada (4 seções):
## Regras automáticas (3+ ocorrências consistentes)
| Merchant | Categoria | Subcategoria | Ocorrências | Obs |
## Candidatos (2 ocorrências, aguardando 3ª)
| Merchant | Categoria sugerida | Ocorrências | Status |
## Ambíguos permanentes (sempre perguntar)
> Merchants guarda-chuva (Apple, Google Play, PayPal, MercadoPago) que cobram dezenas de assinaturas/serviços diferentes pela mesma string. Nunca virar regra automática.
| Merchant | Por que é ambíguo |
## Ambíguos (categorias divergentes no histórico)
| Merchant | Categorias usadas | Provável resolução |
Financeiro/Status Conciliação.md — começa vazio (vai populando conforme conciliações). Estrutura recomendada — manter separado o "estado atual por conta" (substitui a cada update) do "log de sessões" (append):
## Estado atual por conta
### [Conta]
- Conciliado até: <data>
- Saldo banco / Saldo FIN
- Observações relevantes (curto)
## Cartões — última fatura processada por cartão
### [Cartão]
- Fatura [ref], vence DD/MM, total R$ X — paga ✅ / aberta
- Período real / observações
## Refunds pendentes
| Data lançamento | Descrição | Valor | transaction_id | Fatura |
## Log de sessões
- [data] resumo curto
Sem isso, o arquivo vira um wall of text cronológico em poucos meses e fica difícil pra skill achar o estado atual.
Pronto. Criado: X contas, Y cartões, Z categorias de despesa com W subs, K categorias de receita com L subs. Tudo no FIN. Tuas decisões não-óbvias ficaram salvas em Preferências.md.
Próximos passos sugeridos:
- Lançar uma despesa pra testar:
/financeiro:lancarou só me diz "lança X reais em Y"- Importar um extrato:
/financeiro:extrato- Importar uma fatura:
/financeiro:fatura
A pessoa já tem um documento (porque fez o questionário antes, porque alguém montou pra ela, ou porque ela escreveu manualmente).
Se a pessoa passou o caminho como $ARGUMENTS, use. Se não, pergunte:
Qual o caminho do documento de setup?
Leia o arquivo. Faça parse de:
Cheque se tem dados suficientes pra criar tudo. Se faltar algo crítico:
Não pergunta o que já tem. Só o que falta.
Vou criar no FIN:
- N contas: [lista nominal das contas]
- M cartões: [lista nominal dos cartões]
- X categorias de despesa com Y subs
- Z categorias de receita com W subs
Confirma?
Mesma lógica do Modo A, Passo 2 do Bloco 6:
fin_listar_contas, fin_listar_categorias).md da pasta Financeiro/Mesmo do Modo A.
A pessoa já usa o FIN há tempo. Tem contas, cartões, categorias e histórico de transações. Esse é o caso mais comum de quem já é usuário do FIN antes de instalar o plugin.
Princípio: o Modo C é não-destrutivo. Você não cria, não edita, não deleta nada no FIN. Você só lê, analisa e popula os arquivos .md da pasta Financeiro/ da pessoa.
Rode em sequência:
fin_listar_contas → captura todas as contas (e cartões, que no FIN são contas tipo crédito)fin_listar_categorias → captura todas as categorias e subcategoriasIdentifica também as contas USD (campo currency ou similar — confira na description da tool). Conta a quantidade.
Mostra um resumo curto:
Encontrei: [N] contas bancárias BRL, [U] contas em USD (se houver), [M] cartões de crédito, [K] categorias com [W] subcategorias no total. Vou popular tua memória local com isso.
Se detectou contas USD, avisa o modelo de operação:
Detectei [U] conta(s) em dólar. Dá pra lançar despesa/receita categorizada em USD — o FIN grava em BRL como fonte da verdade e mantém o valor nativo em USD como metadata. Na hora de lançar eu pergunto se tu sabe o valor exato em BRL que saiu ou prefere informar a cotação. Câmbio (
fin_cambio) e ajuste de saldo (fin_ajustar_saldo_conta) também tão disponíveis. Pra ver patrimônio consolidado em reais, usofin_patrimonio.
Popule Financeiro/Contas e Cartões.md automaticamente:
Pergunte:
Pra eu aprender teus padrões, vou analisar teu histórico de transações. Quanto tempo de histórico tu quer que eu analise? (default: últimos 6 meses)
- Últimos 3 meses
- Últimos 6 meses (default)
- Últimos 12 meses
- Todo o histórico (pode demorar mais)
Default = 6 meses. Aceita qualquer escolha.
Puxa todas as transações do período via fin_buscar_transacoes ou fin_todas_transacoes (a tool certa depende da API — confira a description antes).
Para cada transação, capture:
Mostra progresso:
Analisando histórico... [243/512 transações processadas]
Agrupa as transações por descrição/estabelecimento (normaliza: lowercase, remove caracteres especiais, agrupa variantes próximas tipo "UBER *TRIP" + "UBER *VIAGEM" + "UBER").
Exclui transações da categoria "Câmbio" desse agrupamento — câmbio não tem "estabelecimento" no sentido tradicional. Apenas conta as ocorrências pra reportar no resumo final ("Detectei N operações de câmbio no período").
Pra cada estabelecimento, analisa:
Classifica em 3 grupos:
Grupo 1 — Padrão consistente (3x ou mais, sempre mesma categoria/subcategoria)
→ Vira regra automática. Vai direto pro Estabelecimentos.md.
Grupo 2 — Padrão provável (2x na mesma categoria, OU 3x+ com leve variação) → Vira candidato. Mostra pra pessoa decidir.
Grupo 3 — Inconsistente (categorias diferentes em ocorrências diferentes)
→ Marca como ambíguo. Não vira regra. Anota em Preferências.md > Estabelecimentos ambíguos pra eventual resolução manual.
Pra cada cartão de crédito que apareceu nas transações, busca as faturas via fin_fatura_cartao ou tool equivalente.
Pra cada fatura:
Se houver variação (1-2 dias de diferença em algumas faturas), atualiza Contas e Cartões.md:
Mostra uma tabela única com os estabelecimentos detectados, organizados por grupo:
=== Padrões automáticos (já vou gravar) ===
| Estabelecimento | Categoria | Sub | # ocorrências |
|---------------------|-----------------|------------|---------------|
| iFood | Alimentação | Delivery | 23 |
| Uber | Transporte | App | 18 |
| Drogaria São Paulo | Saúde | Higiene | 12 |
...
=== Candidatos (preciso tu confirmar) ===
| Estabelecimento | Padrão sugerido | Confirma? |
|---------------------|---------------------------|-----------|
| Mercado XYZ | Alimentação > Mercado | [s/n] |
| Posto Shell | Transporte > Combustível | [s/n] |
...
=== Ambíguos (não viraram regra) ===
| Estabelecimento | Categorias usadas |
|---------------------|------------------------------------------|
| Amazon | Casa (3x), Pessoal (2x), Tecnologia (1x) |
...
Pergunta:
Aceita os padrões automáticos? E pros candidatos, quais tu confirma?
A pessoa pode:
Atualiza Estabelecimentos.md com o que ela confirmou.
Esse é o passo mais delicado. Você não tem default pra comparar, então não pode dizer "Streaming foi pra Educação, isso é não-óbvio". O que você faz:
Olha essas 15 regras que tu aplica direto. Quais delas são decisões importantes que tu quer que eu lembre como regra de vida (e não só inferi do histórico)? Marca as que importam.
Exemplo: se tu sempre lança Spotify em "Casa > Contas fixas" e isso é uma escolha intencional tua, marca. Se foi só por acaso, deixa pra lá.
A pessoa marca quais são "regras de vida". Essas vão pra Preferências.md > Decisões não-óbvias com o motivo (pergunta o motivo de cada uma se ela quiser explicar — opcional).
Esse approach é agnóstico: você não decidiu o que é "não-óbvio" baseado em heurística sua. A pessoa que disse.
Pergunta:
Quais contas e cartões tu já considera conciliados (extrato/fatura conferida) até alguma data?
A pessoa lista. Você popula Status Conciliação.md:
## Conciliações
| Conta/Cartão | Período | Status | Data conciliação | FITIDs lançados |
|--------------|------------------------------|-------------|------------------|-----------------|
| Conta X | 2026-01-01 a 2026-03-31 | Conciliado | 2026-04-05 | (importado) |
Se a pessoa não lembrar exatamente, marca como "histórico assumido" e segue.
Modo C concluído. Aprendi:
- N contas e M cartões (em Contas e Cartões.md)
- X regras de estabelecimento automáticas (em Estabelecimentos.md)
- Y candidatos confirmados
- Z decisões importantes (em Preferências.md)
- Variação de fechamento detectada em [N] cartões
- Status de conciliação até [data] em [N] contas
A partir de agora, eu já sei como tu opera. Próximos lançamentos vão sair muito mais rápido.
Quer testar? Diz "lança X reais em Y" e vou aplicar o que aprendi.
Estabelecimentos.md com novos padrões aprendidos (incremental, não substitui).Mesmo sendo automático, em alguns pontos pede confirmação:
Tudo o resto é automático.
Rodar onboarding 2x não pode duplicar nada. Mecanismo:
fin_listar_contas → checa se já existe pelo nomefin_listar_categorias → checa se já existe pelo nomeSe você suspeitar que o MCP do FIN pode estar logado com credencial de outra pessoa (ex: você tá ajudando alguém num computador onde já tem outro setup), avise antes de criar:
Antes de eu criar tudo, confirma: o FIN tá logado com a tua credencial mesmo, né? Se for, manda bala. Se não, gera uma chave nova no FIN App e atualiza a config primeiro.
Esse aviso vai como pendência no documento de setup também (seção ## Pendências).
fin_listar_* antesPreferências.mdfin_criar_conta nascem sem cutoff por default (qualquer tx_date conta). Pra importar histórico com saldo preexistente, use initial_invoice_date e initial_invoice_amount_cents em fin_criar_conta. Pra corrigir cartão antigo criado com cutoff errado, fin_editar_conta aceita initial_invoice_date: null pra remover. Confira a description da tool atual.npx claudepluginhub pe-menezes/fin-claude-plugin --plugin financeiroProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.