Obsidian librarian
Skill melgarafael/obsidian-master-kit/skills/obsidian-librarian
Esta skill deve ser usada quando o usuario diz "sincroniza o vault", "roda o bibliotecario", "atualiza o indice do Obsidian", "valida as notas que acabei de escrever", ou invoca /obsidian-master-kit:sync. Tambem e acionada automaticamente apos qualquer Write/Edit dentro de um vault obsidian-master-kit (via hook PostToolUse). Le o CLAUDE.md do vault como memoria, valida frontmatter, normaliza tags, garante wiki-link para o MOC da area, reescreve _INDEX.md vivo e reporta desvios que exigem decisao humana. NAO deleta conteudo humano. NAO edita o CLAUDE.md do vault.From its SKILL.md
npx -y skills add melgarafael/obsidian-master-kit --skill obsidian-librarianAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
5.3 KB, as published. Nobody here has run it
obsidian-librarian
Curador automatico do vault. Roda apos qualquer escrita, le a doutrina (CLAUDE.md
do vault), valida o que foi escrito, corrige o que e deterministico, e mantem o
_INDEX.md vivo.
Quando usar
- Apos qualquer
WriteouEditem path dentro de um vault-master (disparo automatico via hookpost-vault-write.py). - Quando o usuario invoca
/obsidian-master-kit:sync. - Quando o usuario diz "atualiza o indice", "roda o bibliotecario", "sincroniza o vault".
Quando nao usar
- Em paths fora de um vault-master (o hook protege, mas valide antes por seguranca).
- Se a ultima invocacao foi ha menos de 5 segundos — dedupe para evitar loops.
Fluxo canonico
Passo 1: Detecte o vault
Caminhe para cima a partir do arquivo modificado procurando .obsidian-master/marker.json.
Esse arquivo marca a raiz do vault. Se nao achar, aborta silenciosamente — nao e
vault-master.
Passo 2: Leia a doutrina
Leia <vault-root>/CLAUDE.md inteiro. Dali voce extrai:
- Schema de frontmatter (campos obrigatorios, valores validos)
- Schema de tags (hierarquia canonica)
- Mapa de pastas (qual area cada pasta representa)
- Regras de linking (todo arquivo linka pelo menos para o MOC da area)
Essas sao regras locais do vault — podem divergir do default do kit se o humano tiver editado.
Passo 3: Invoque o script de indexacao
python3 ${CLAUDE_PLUGIN_ROOT}/skills/obsidian-librarian/scripts/update_index.py \
--vault "<vault-root>" \
[--since <ISO-timestamp>]
O script faz a parte deterministica:
- Walka o vault, le todo
.md - Parseia frontmatter (YAML)
- Valida campos obrigatorios (
created,updated,area,type,status,tags) - Normaliza tags (lowercase, sem
#prefix no frontmatter) - Atualiza campo
updatedcom mtime do arquivo se estiver desatualizado - Calcula estatisticas: contagem por area, MOCs ativos, notas orfas (sem wiki-link pra MOC), ultimas 10 adicoes
- Reescreve
<vault-root>/_INDEX.md - Atualiza
<vault-root>/.obsidian-master/last-sync.json - Reporta em stdout (JSON) as issues que precisam intervencao humana ou LLM
Passo 4: Trate as issues reportadas
O script retorna JSON como:
{
"updated_index": true,
"notes_scanned": 42,
"orphans": ["02 - Pesquisas e Estudos/Ativas/Nota Solta.md"],
"missing_frontmatter_fields": [
{"file": "01 - Profissional/Projetos/X.md", "missing": ["status"]}
],
"unknown_tags": [
{"file": "02 - Pesquisas e Estudos/Ativas/Y.md", "tags": ["random/custom"]}
],
"area_folder_mismatch": [],
"last_sync": "2026-04-15T14:20:00"
}
Para cada categoria:
- orphans: consulte as referencias (em
references/linking-rules.md) sobre como sugerir um MOC. Adicione linha em## Relacionadoda nota apontando para o MOC da area. Se a nota nao cabe em nenhuma area existente, escale para o usuario. - missing_frontmatter_fields: adicione os campos faltando seguindo os defaults
de
references/frontmatter-schema.md:statusausente →drafttagsausente →[]updatedausente → data de hoje (mas o script ja faz isso)- Nunca chute
areaoutype— escale pro usuario.
- unknown_tags: compare com o schema em
CLAUDE.mddo vault. Se a tag nao bate, sugira a tag canonica mais proxima em 1 comentario para o usuario; nao altere sem permissao (tags podem ter significado semantico que o humano escolheu). - area_folder_mismatch: a nota tem
area: pesquisamas esta em01 - Profissional/. Nunca mova sem perguntar — reporte ao usuario.
Passo 5: Reporte curto ao usuario
Depois que o script rodou e voce tratou as issues, imprima 1 bloco conciso:
Librarian synced:
- 42 notas escaneadas, _INDEX.md atualizado
- 2 orfas linkadas ao MOC apropriado
- 1 frontmatter preenchido (status: draft)
- 1 tag desconhecida reportada (esperando sua decisao)
Mais que isso e ruido — a pessoa quer saber que o vault esta ok, nao um relatorio de auditoria.
Guardrails — regras inviolaveis
- Nunca deleta conteudo humano. Nem 1 linha, nem 1 palavra.
- Nunca edita o
CLAUDE.mddo vault. Territorio humano. - Nunca move arquivos entre areas sem confirmacao. Mismatch de area e um sinalizador, nao uma licenca pra mover.
- Nunca chuta campos semanticos (
area,type,aliases, conteudo do corpo). - Se o script falha, reporte o erro e pare. Nao tente "consertar" o vault na marra — prefere halt a corromper.
Referencias bundled
references/obsidian-conventions.md— convencoes oficiais do Obsidian destiladasreferences/frontmatter-schema.md— schema canonico do kit (fonte de verdade quando o vault nao tem override)references/linking-rules.md— regras de wiki-link, backlinks, aliases, MOCs