Como fazer o Claude Code responder sobre o seu vault citando a nota de origem

No combo Claude Code Obsidian, resposta boa é a que aponta o arquivo. Como o vault do Obsidian é uma pasta local de notas, o Claude Code consegue ler tudo dali com Read, Grep e Glob, desde que a sessão comece na raiz do vault. O truque é pedir o caminho da nota em cada afirmação e separar o que está escrito das notas do que o modelo completou sozinho. Depois você audita: abre o arquivo citado, procura o trecho com Grep no modo que mostra a linha e fixa a regra no CLAUDE.md pra não repetir o pedido toda sessão
Fala aí, beleza? Consultar o vault com o Claude Code é viciante: você pergunta, e volta um resumo redondo, bonitinho, com toda a cara de verdade
O problema é justamente esse
Sem o caminho da nota, você não tem como saber se aquilo estava escrito lá dentro ou se o modelo completou o buraco por conta própria, do jeito que pareceu fazer sentido pra ele
Aí a nota que você registrou pra confiar depois vira aposta 😅
Neste post a gente faz o contrário: pedir resposta ancorada no arquivo, com o caminho que sustenta cada afirmação, e depois CONFERIR se aquele caminho existe mesmo e se ele diz o que disseram que ele diz
Bora ver na prática?
O que você precisa antes de começar
Primeiro, o que faz essa brincadeira toda ser possível: um vault do Obsidian é uma pasta local com os arquivos das suas notas, guardada no seu dispositivo
A documentação oficial do Obsidian descreve esse armazenamento em disco
Ou seja: vault não é banco de dados fechado, é pasta de arquivo mesmo
E se é pasta de arquivo, qualquer ferramenta que leia arquivo trabalha em cima dele, inclusive o Claude Code
O que precisa estar de pé:
- Vault do Obsidian no dispositivo (você já sabe onde ele fica, é a pasta que o Obsidian abre)
- Claude Code instalado e funcionando no terminal
- A sessão iniciada a partir da raiz do vault, e esse ponto é o mais importante de todos
Porque o Claude Code opera sobre o diretório de trabalho em que ele foi iniciado
As ferramentas de leitura (Read, Grep e Glob) pedem permissão pra caminhos que ficam fora do diretório de trabalho e dos diretórios adicionais, como está na referência de ferramentas do Claude Code
Domine o Claude Code do básico ao avançado
Você vai aprender a criar sistemas completos com Claude Code, sem precisar ser programador. Inscreva-se para ter acesso a um desconto de lançamento e bônus especiais!
Traduzindo: se você rodar de qualquer lugar do disco e mandar ele ler o vault, vai tomar pedido de permissão a cada passo
E se o seu vault estiver espalhado, tipo notas numa pasta e anexos/arquivos de apoio em outra, dá pra somar pastas na sessão de três jeitos: a flag --add-dir na hora de abrir, o comando /add-dir já dentro da sessão, ou a chave additionalDirectories no settings.json
Essa lógica de apontar a IA pra uma pasta que já existe na sua máquina não é exclusividade do vault, ela aparece também quando você quer importar um design system de uma codebase local, é o mesmo princípio de dar contexto real em vez de contexto imaginado
Passo a passo: resposta ancorada no arquivo, com o caminho da nota
A sequência abaixo é o fluxo inteiro, do terminal até deixar a regra fixa pra não repetir nunca mais
- Inicie o Claude Code na raiz do vault
Nada de abrir em qualquer pasta e depois apontar caminho absoluto na mão
cd /caminho/do/seu/vault
claude
Se o vault tem uma segunda pasta que também importa, some ela já na abertura:
claude --add-dir ../arquivos-antigos
O erro comum deste passo: abrir o Claude Code na pasta de projeto de sempre e esperar que ele leia o vault de boa. Ele vai pedir permissão pra tudo que estiver fora do diretório de trabalho, e você vai passar a sessão inteira apertando confirmar
- Escreva o pedido de um jeito que force a âncora
Aqui está o coração do post
Pergunta solta gera resposta solta. Você tem que exigir, no próprio pedido, o caminho do arquivo por afirmação e a separação entre o que está escrito e o que é complemento do modelo
Responda com base SÓ nos arquivos deste vault.
Para cada afirmação, escreva o caminho relativo da nota que a sustenta.
Separe a resposta em duas partes:
1) O que está escrito nas notas (com caminho)
2) Complemento seu, que NÃO está em nenhuma nota
Se não achar nada sobre o assunto, diga que não achou, não preencha.
Repare que a parte 2 não é enfeite: é ela que dá o "escape" pro modelo
Sem esse espaço, ele tende a empurrar o palpite pra dentro da parte 1, e é exatamente o que a gente quer evitar
O erro comum deste passo: pedir "cite a fonte". Fonte é palavra vaga demais, ele pode citar o título da nota, o nome de uma seção, ou nada. Peça o CAMINHO do arquivo
- Direcione a busca em vez de deixar ele adivinhar
O Claude Code tem Glob pra casamento rápido de padrões de arquivo e Grep pra buscar dentro do conteúdo, construído em cima do ripgrep, com regex e escopo por glob ou por tipo de arquivo
Então, em vez de "procura aí", você guia:
Use Glob em **/*.md para mapear as notas da pasta Projetos.
Depois use Grep para achar as ocorrências de "decisão" nesses arquivos,
com output_mode content, para eu ver o arquivo e o número da linha.
E por que insistir no modo de saída? 🙂
Porque o modo padrão do Grep é files_with_matches, que devolve só os caminhos dos arquivos que casaram
O modo content devolve as linhas, com arquivo e número da linha. Existe ainda o count, que devolve a contagem por arquivo
Caminho é bom, linha é melhor: linha é o que você bate o olho e confere na hora
O erro comum deste passo: aceitar a lista de caminhos e achar que aquilo é prova. Lista de arquivo que casou não te diz O QUE casou
- Peça o Read antes da afirmação
O Grep te mostra a linha, e linha isolada mente por falta de contexto
A ferramenta Read lê arquivos locais (texto, imagem, PDF e notebooks Jupyter), então mande abrir a nota inteira antes de concluir qualquer coisa:
Antes de afirmar, use Read no arquivo inteiro que você vai citar.
Se a frase da nota contradiz o resto do texto dela, me avise.
O erro comum deste passo: conclusão tirada de um trecho que estava dentro de uma seção tipo "ideias descartadas". O trecho existe, o caminho existe, e a conclusão está errada mesmo assim
- Consulte em modo de plano ou somente leitura
Isso aqui é higiene básica quando o alvo são as SUAS notas
O modo de plano faz o modelo explorar os arquivos e produzir um plano sem editar os arquivos de origem, com as ferramentas de leitura funcionando normalmente. Você entra com Shift+Tab ou prefixando o prompt com /plan
Tem também o modo de permissão somente leitura, que impede a execução de ferramentas de alteração: o modelo analisa e propõe, mas não aplica
O erro comum deste passo: rodar consulta em modo normal e, no meio da conversa, pedir "organiza isso pra mim". Aí ele organiza mesmo, e a sua nota de 2023 vira outra coisa 😬
- Fixe a regra no CLAUDE.md pra não repetir toda sessão
Escrever aquele parágrafo de instrução em toda pergunta cansa e gasta contexto à toa
O CLAUDE.md é um arquivo markdown de instruções persistentes, carregado no começo de toda sessão
Na primeira vez, o fluxo que a documentação recomenda é rodar /init, que analisa os arquivos e a estrutura do diretório e gera um CLAUDE.md inicial, e depois /memory pra refinar (o /memory também liga e desliga a memória automática e mostra as entradas dela)
Aí você deixa a regra escrita lá:
## Regras de consulta ao vault
- Responda só com base nos arquivos deste vault
- Toda afirmação vem com o caminho relativo da nota que a sustenta
- Separe sempre: "nas notas" x "complemento meu"
- Ao buscar, use Grep com output_mode content, para mostrar arquivo e linha
- Não preencha lacuna: se não achou, diga que não achou
Dá pra ter isso em escopo de projeto (CLAUDE.md na raiz, ou seja, na raiz do vault) e em escopo global (em ~/.claude/), valendo pra todos os projetos
E se você quiser quebrar as regras em vários arquivos, existe a sintaxe @caminho dentro do CLAUDE.md: ela importa outros arquivos, que são expandidos e carregados junto
@regras/citacao.md
@regras/estrutura-do-vault.md
Só toma cuidado com uma coisa: nesse @caminho, o caminho relativo resolve em relação ao arquivo que faz a importação, não ao diretório de trabalho
Ou seja, se o @regras/citacao.md está escrito num CLAUDE.md que mora numa subpasta, ele procura a partir dali, não a partir da raiz do vault
E isso é outra história, não confunda com o caminho relativo da nota que você pede na resposta: aquele é conteúdo da resposta, esse aqui é o endereço do arquivo que o CLAUDE.md vai importar, beleza?
Já que a gente está falando de instrução carregada em TODA sessão, vale pensar no tamanho dela também, tem umas manhas boas de gastar menos com o Claude Code que se aplicam direto aqui
O erro comum deste passo: despejar o vault inteiro de regra dentro do CLAUDE.md. Ele entra em toda sessão, então regra gorda é peso permanente
- Empacote a consulta como skill invocável
Quando o fluxo virar rotina, transforma ele em comando
A documentação hoje indica a skill como formato recomendado pra comandos invocáveis por barra, em .claude/skills/<nome>/SKILL.md, e trata .claude/commands/ como formato legado
A skill aceita a mesma invocação por /nome e ainda pode ser acionada sozinha pelo Claude
.claude/skills/consulta-vault/SKILL.md
Dentro do markdown você coloca aquela mesma instrução de citação do passo 2, e a consulta ancorada vira uma barra só
Opcionalmente, dá pra mexer no formato da resposta pelos estilos de saída, em /config > Output style, que alteram diretamente o system prompt e valem pra toda resposta (os embutidos são Default, Proactive, Explanatory e Learning)
O erro comum deste passo: criar em .claude/commands/ porque é o que aparece em tutorial antigo. Funciona, mas é o formato legado
Como checar a citação (e o que fazer quando ela não bate)
Agora a parte que quase ninguém faz: auditar
Pedir citação é metade do trabalho, a outra metade é desconfiar dela
| Sintoma | Causa provável | O que fazer |
|---|---|---|
| Resposta veio sem nenhum caminho | A instrução de citação não está valendo nessa sessão | Repita o pedido explícito e depois fixe a regra no CLAUDE.md |
| Caminho citado não existe no vault | Caminho montado por dedução, não lido do disco | Peça Glob pra listar os arquivos reais daquela pasta antes de responder |
| O arquivo existe, mas a frase não está lá | Conclusão do modelo colada num arquivo plausível | Exija trecho literal, não paráfrase, e confirme com Grep no modo content |
| Ele diz que não encontrou algo que você sabe que existe | A nota está fora do diretório de trabalho | Some a pasta com --add-dir, /add-dir ou additionalDirectories |
Na prática, a checagem é curta
Você abre o arquivo citado no Obsidian, procura o trecho, e pronto
Se quiser conferir sem sair do terminal, peça a busca do trecho literal com Grep no modo que mostra arquivo e número da linha, e compare com o que veio na resposta
E quando não bater, não discuta com o modelo: refaça o pedido exigindo trecho literal
Para cada item, cole o trecho LITERAL da nota entre aspas,
com o caminho do arquivo e o número da linha.
Se você não conseguir colar o trecho literal, remova o item da resposta.
Esse "remova o item" é o pulo do gato: você tira o incentivo de preencher
Prevenção é o que a gente já montou lá em cima: regra fixa no CLAUDE.md e sessão em modo de plano ou somente leitura, pra consulta não virar edição
Quando esse fluxo vale a pena no seu vault
Nem toda pergunta precisa desse rigor todo, beleza?
Mas tem quatro situações em que a citação muda o resultado de verdade:
- Revisar decisão antiga. Você registrou o porquê de ter escolhido X, e seis meses depois quer entender aquilo de novo. Aqui a paráfrase não serve, você quer a linha que você mesmo escreveu, com o caminho da nota e a data que estiver nela
- Resumir um tema espalhado. Aquele assunto que você foi pingando em cinco notas diferentes ao longo do ano. É o cenário perfeito pro Glob mapear e o Grep achar os trechos, e o resumo só vale se cada bloco dele apontar de onde veio
- Checar se você já escreveu isso antes. Antes de abrir a nota nova, pergunte se o assunto já existe no vault. Sem caminho, a resposta "acho que sim" não te ajuda em nada. Com caminho, você abre e decide se complementa ou duplica
- Consultar sem risco de mexer. Vault é acervo pessoal, não é branch. Modo de plano ou somente leitura resolve: exploração e proposta sim, alteração não
Repare que nenhum desses casos depende de recurso mágico
É tudo leitura de arquivo, busca e uma instrução bem escrita 😀
Conclusão
O princípio é simples e cabe numa frase: resposta útil sobre o vault é a que aponta o arquivo
O resto é consequência disso
Você inicia o Claude Code na raiz do vault, exige o caminho por afirmação, separa o que está escrito do que é complemento, guia a busca com Glob e Grep no modo que mostra a linha, manda ler o arquivo inteiro antes de concluir e roda em modo de plano ou somente leitura
Depois deixa a regra morando no CLAUDE.md e, se virar rotina, empacota como skill
Seu próximo passo prático é hoje mesmo: escreva a regra de citação no CLAUDE.md do vault e teste com uma pergunta cuja resposta você JÁ conhece
Se o caminho bater, o fluxo está de pé
Se não bater, você acabou de descobrir isso de graça, em vez de descobrir daqui a três meses confiando num resumo inventado…
Até o próximo post!
Perguntas frequentes
Como faço o Claude Code enxergar as notas do meu vault do Obsidian?
Inicie a sessão a partir da raiz do vault, porque o Claude Code opera sobre o diretório de trabalho em que foi aberto. A partir daí, as ferramentas Read, Grep e Glob conseguem ler os arquivos das notas normalmente, sem pedir permissão a cada passo.
Por que o Claude Code fica pedindo permissão toda hora quando eu peço pra ele ler o vault?
Isso acontece quando a sessão foi aberta fora da raiz do vault: as ferramentas de leitura pedem permissão pra qualquer caminho fora do diretório de trabalho e dos diretórios adicionais. Se o vault tem mais de uma pasta relevante, some elas com a flag –add-dir, o comando /add-dir dentro da sessão ou a chave additionalDirectories no settings.json.
Como pedir pro Claude Code citar o caminho exato da nota em cada resposta sobre o vault?
O pedido precisa exigir isso explicitamente: peça o caminho relativo do arquivo por afirmação, separando o que está escrito na nota do que é complemento do modelo. Pedir só ‘cite a fonte’ não funciona bem, porque fonte é vago e pode virar título ou seção em vez do caminho do arquivo.
Qual a diferença entre os modos do Grep na hora de consultar as notas do vault?
O Grep do Claude Code tem três modos: files_with_matches, que é o padrão e devolve só os caminhos dos arquivos que casaram, content, que devolve as linhas com arquivo e número da linha, e count, que devolve a contagem por arquivo. Pra conferir se a citação bate com o texto, o modo content é o mais útil, porque a linha é o que você bate o olho e confere direto.
É seguro deixar o Claude Code consultar o vault sem risco de ele alterar as notas?
Sim, dá pra usar o modo de plano, que faz o modelo explorar os arquivos e montar um plano sem editar os arquivos de origem, com as ferramentas de leitura funcionando normalmente. Também existe o modo somente leitura, que impede a execução de ferramentas de alteração e é indicado justamente pra revisão e consulta sem aplicar mudanças.
Dá pra fixar a regra de sempre citar o caminho da nota sem reescrever o pedido toda vez?
Dá, colocando a instrução no CLAUDE.md, que é lido no início de cada sessão do Claude Code. Ele pode ficar no escopo do projeto (na raiz, junto com o vault) ou no escopo global em ~/.claude/, valendo pra todos os projetos; o fluxo recomendado é rodar /init pra gerar um CLAUDE.md inicial e depois /memory pra refinar.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
