tderoussel/vault-doctor

Audita e repara a saúde estrutural de um vault do Obsidian — [[wikilinks]] quebrados, nomes de arquivo duplicados ambíguos, frontmatter ausente ou malformado, marcadores de status desatualizados e notas hub cujas seções de estado ficaram frias.

O que é vault-doctor?

O Vault Doctor é uma habilidade especializada para assistentes de IA (como Claude Code, Cursor, Codex) que atuam dentro de vaults do Obsidian. Ele realiza uma auditoria estrutural completa, identificando links quebrados, nomes de arquivo duplicados, frontmatter inválido, tags inconsistentes e notas com estado desatualizado. A ferramenta classifica cada problema em categorias (referências cruzadas, documentação intencional, deriva de nome, notas genuinamente ausentes) para evitar reparos indevidos — por exemplo, não cria stubs vazios nem altera links que são intencionalmente quebrados. Por padrão, é somente leitura: todas as correções são propostas e exigem aprovação do usuário antes de serem executadas. É compatível com qualquer vault do Obsidian e prioriza a segurança dos dados, verificando a situação de backup antes de qualquer escrita e evitando substituições em massa que possam danificar o vault permanentemente.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tderoussel/agent-skills/tree/main/skills/vault-doctor

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Vault doctor

A maioria dos vaults do Obsidian não tem git e nem undo, e muitos são sincronizados ao vivo via iCloud, OneDrive ou Dropbox. Trate cada escrita como irreversível. Confirme a situação real de backup do vault antes de tocar em qualquer coisa, leia antes de sobrescrever, prefira edições direcionadas a reescritas de arquivo inteiro e nunca execute um loop rápido de escrita — em uma pasta sincronizada, ele produz cópias de conflito.

Varredura

Percorra arquivos .md, pulando node_modules, .git, .obsidian e quaisquer diretórios de build ou temporários que o vault tenha acumulado. Construa o conjunto de alvos de link a partir do nome base de cada arquivo (anexos incluídos, não apenas .md), depois extraia [[alvos]], removendo sufixos |alias, #heading e ^block.

Registre uma linha de base — contagem de notas, alvos quebrados distintos, referências quebradas totais, nomes base duplicados — para que execuções posteriores possam mostrar progresso em vez de repetir o mesmo censo.

Classifique antes de reparar

Uma contagem bruta de links quebrados não é uma lista de defeitos. Classifique cada ocorrência em uma das quatro categorias:

1. Referências entre sistemas — não "corrija". Alguns alvos não são notas do vault: IDs de memória de agente, chaves de ticket ou identificadores de outra ferramenta que por acaso estão escritos em sintaxe de wikilink. Eles nunca serão resolvidos. Convertê-los em texto simples é defensável; criar notas stub para satisfazê-los não é.

2. Documentação de um link quebrado — nunca toque. Algumas notas citam um link quebrado deliberadamente, como exemplo ou como verdade para um exercício ("se sua ferramenta não encontrar isso, sua ferramenta está errada"). Editar isso quebra a coisa que elas ensinam. A sintaxe de wikilink citada dentro da prosa é da mesma classe.

3. Deriva de nome — corrija no alvo, não na origem. Quando muitas referências apontam para um nome curto e a nota está arquivada com um nome mais longo, prefira adicionar aliases: [NomeCurto] ao frontmatter do alvo em vez de editar cada arquivo de referência. Uma edição, um mecanismo nativo do Obsidian, sem risco de danificar o contexto ao redor.

4. Notas genuinamente ausentes. O alvo nunca existiu. Relate-o; não crie automaticamente. Um stub vazio é pior do que um link quebrado porque parece respondido.

A proibição de localizar e substituir

Nunca repare links com um localizar e substituir sem escopo. Uma substituição cega em um vault danificará nomes de pastas, URLs, blocos de código e vocabulários de tags que por acaso contenham a string de pesquisa — e como não há undo, o dano é permanente. Corrija por arquivo, lendo a linha ao redor primeiro.

Outras verificações

  • Nomes base duplicados tornam os links ambíguos em todo o vault, porque o Obsidian resolve [[links]] pelo nome do arquivo em todo o vault. O culpado comum é um projeto de código ou árvore de dependências dentro do vault, contribuindo com milhares de arquivos .md fantasmas. Sinalize-o; a correção é mover o projeto para fora do vault ou adicionar uma exclusão. Não exclua nada sem perguntar.

  • O frontmatter deve realmente ser analisado. Execute cada bloco através de um analisador YAML real — não olhe apenas. A falha dominante é um escalar simples não citado contendo : (dois-pontos-espaço), que falha nesse caractere e arrasta todas as chaves abaixo dele, tornando todo o bloco invisível para o painel Propriedades do Obsidian e para o Dataview. Uma segunda falha comum: um valor não citado começando com | ou > abre um escalar de bloco YAML.

    Corrigir significa citar valores, o que em uma nota grande e importante pode tocar centenas de chaves — proponha, nunca faça sem ser solicitado, e faça backup do arquivo primeiro. Até que seja corrigido, corresponda à convenção existente (quebrada) em vez de introduzir um segundo estilo; uma chave válida solitária dentro de um bloco inválido não compra nada.

  • Tags pertencem ao YAML como uma lista, não como hashtags inline — verifique em relação ao vocabulário real do vault, não a um idealizado. Relate deriva; não remarcule unilateralmente.

  • Estado obsoleto — notas carregando marcadores PAUSADO/PARADO/TODO cujo projeto desde então avançou. Relate-as; não as resolva você mesmo.

  • Hubs frios — uma nota hub cuja seção de estado mais nova é anterior à atividade mais recente do seu projeto está desatualizada. Relate a lacuna.

Saída

Um relatório, ordenado por categoria, com contagens e referências exatas arquivo:linha. Proponha reparos; faça apenas aqueles que o usuário aprovar.

Declare claramente quais descobertas são verificadas e quais são inferidas a partir do nome — um alvo que parece deriva pode ser uma nota que eles pretendem escrever.

Individual skills in this repo

This repo contains 8 individual skills — each has its own dedicated page.

tderoussel/codebase-audit

Runs a ranked, evidence-backed audit of a product, codebase, or subsystem, ending in a verify list that separates proven findings from inferred ones. Use when the user asks for an audit, a gap analysis, a deep read, a bug hunt, a readiness check, a re-audit, a state reconciliation, or asks what they are not seeing. Trigger phrases include "audit", "gap analysis", "what am I missing", "deep audit", "readiness", "bug hunt", "review the whole thing". Produces findings and a verify list; does not fix.

tderoussel/competitive-teardown

Researches a competing product against your own and produces a ranked build-or-ignore verdict, plus optional comparison-page copy. Use when the user names a competitor or asks how their product stacks up against one. Trigger phrases include "vs us", "competitor", "what does X have", "should we copy", "competitive gap", "teardown", "are we behind". Produces a ranked verdict with effort estimates and an explicit not-worth-copying list.

tderoussel/decision-council

Run a structured multi-perspective review of a decision instead of getting one agreeable answer. Use when the user says run a council, get me perspectives on this, should I do X, stress-test this decision, or is this a good idea.

tderoussel/fleet-brief

Authors a workstream brief for dispatching multiple parallel build agents across one codebase, with per-lane file ownership, shared-ground warnings, and a derived DO-NOT list. Use whenever work is about to be split across concurrent agents, workers, lanes, or waves — even if the user does not say "write a brief". Trigger phrases include "fan out", "parallel agents", "orchestrate this", "split into lanes", "workstreams", "run these in parallel", "review-gated build". Produces the brief; does not dispatch.

tderoussel/inbox-triage

Triage an email inbox — sort what needs a reply, draft the replies, flag what needs a decision, and surface what can be ignored or unsubscribed. Use when the user says triage my inbox, do my email, what's in my inbox, or clean up my email.

tderoussel/overnight-build

Composes an autonomous unattended Claude Code build prompt that survives usage-limit resets via BUILD_LOG.md checkpointing, plus the launcher that restarts it. Use when the user asks for an overnight build, an autonomous build, a build to run while they sleep, an unattended or unsupervised session, or any long build they will not be monitoring. Trigger phrases include "overnight build", "run overnight", "build while I sleep", "autonomous build", "let it run", "unattended". Produces a single copyable prompt; does not run the build.

tderoussel/session-log

Write a durable record of a work session — what was built, root-caused, or shipped — into the project's notes. Use when the user says log this session, write a session log, record this, or when a substantial piece of work has just finished and needs to be handed off to a future session.

tderoussel/ship-gate

Verification gate for a Next.js-on-Vercel + Supabase + GitHub Actions stack, to run before claiming anything is shipped, deployed, live, merged, passing, or done. Use before saying a change is in production, before merging a PR, before reporting CI green, and before writing any status into a document — even if the user does not ask for verification. Trigger phrases include "is it live", "did it deploy", "ship it", "merge it", "is CI green", "confirm prod", "did that work". Encodes traps where the obvious check returns a false pass.

Habilidades Relacionadas