tderoussel/vault-doctor

Audita y repara la salud estructural de una bóveda de Obsidian: enlaces [[wiki]] rotos, nombres de archivo duplicados ambiguos, frontmatter faltante o mal formado, marcadores de estado obsoletos y notas hub cuyas secciones de estado se han quedado frías.

¿Qué es vault-doctor?

Vault Doctor es una habilidad para el agente de IA diseñada para auditar y reparar la salud estructural de una bóveda de Obsidian. Es útil para desarrolladores y usuarios avanzados que gestionan bóvedas grandes y desean mantener la integridad de los enlaces, el frontmatter y la organización general. Soporta la exploración de archivos `.md`, la clasificación de enlaces rotos en cuatro categorías (referencias cross-sistema, documentación de enlaces rotos, deriva de nombres y notas genuinamente faltantes), y la verificación de duplicados, frontmatter YAML, etiquetas y estado de notas. Por defecto, es de solo lectura: todas las reparaciones se proponen antes de ejecutarse, evitando cambios irreversibles. Utiliza el análisis línea por línea y prohíbe búsquedas y reemplazos globales para prevenir daños colaterales. La habilidad se activa con frases como "salud de la bóveda", "enlaces rotos" o "auditar la bóveda", y genera informes detallados con referencias `archivo:línea`.

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

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Vault doctor

La mayoría de las bóvedas de Obsidian no tienen git ni deshacer, y muchas se sincronizan en vivo a través de iCloud, OneDrive o Dropbox. Trata cada escritura como irreversible. Confirma la situación real de copia de seguridad de la bóveda antes de tocar nada, lee antes de sobrescribir, prefiere ediciones dirigidas en lugar de reescrituras completas de archivos, y nunca ejecutes un bucle de escritura rápida, ya que en una carpeta sincronizada produce copias de conflicto.

Escaneo

Recorre los archivos .md, omitiendo node_modules, .git, .obsidian y cualquier directorio de compilación o basura que la bóveda haya acumulado. Construye el conjunto de destinos de enlaces a partir de cada nombre base de archivo (incluyendo archivos adjuntos, no solo .md), luego extrae [[destinos]], eliminando los sufijos |alias, #encabezado y ^bloque.

Registra una línea base: recuento de notas, destinos rotos distintos, referencias rotas totales, nombres base duplicados, para que ejecuciones posteriores puedan mostrar cambios en lugar de repetir el mismo censo.

Clasificar antes de reparar

Un recuento bruto de enlaces rotos no es una lista de defectos. Clasifica cada acierto en uno de cuatro cubos:

1. Referencias entre sistemas — no "arreglar". Algunos destinos no son notas de la bóveda en absoluto: IDs de memoria del agente, claves de tickets o identificadores de otra herramienta que por casualidad están escritos con sintaxis de wikilink. Nunca se resolverán. Convertirlos a texto plano es defendible; crear notas stub para satisfacerlos no lo es.

2. Documentación de un enlace roto — nunca tocar. Algunas notas citan deliberadamente un enlace roto, como ejemplo o como verdad fundamental para un ejercicio ("si tu herramienta no encuentra esto, tu herramienta está mal"). Editar esto rompe lo que enseñan. La sintaxis de wikilink citada dentro de la prosa pertenece a la misma clase.

3. Deriva de nombre — arreglar en el destino, no en el origen. Cuando muchas referencias apuntan a un nombre corto y la nota está archivada bajo uno más largo, prefiere agregar aliases: [NombreCorto] al frontmatter del destino en lugar de editar cada archivo de referencia. Una edición, un mecanismo nativo de Obsidian, sin riesgo de estropear el contexto circundante.

4. Notas genuinamente faltantes. El destino nunca existió. Reportarlo; no lo crees automáticamente. Un stub vacío es peor que un enlace roto porque parece que ya está respondido.

La prohibición de buscar y reemplazar

Nunca repares enlaces con una búsqueda y reemplazo sin alcance. Un reemplazo ciego en toda la bóveda estropeará nombres de carpeta, URLs, bloques de código y vocabularios de etiquetas que por casualidad contengan la cadena de búsqueda, y como no hay deshacer, el daño es permanente. Corrige por archivo, leyendo primero la línea circundante.

Otras comprobaciones

  • Nombres base duplicados hacen que los enlaces sean ambiguos en toda la bóveda, porque Obsidian resuelve [[enlaces]] por nombre de archivo en toda la bóveda. El culpable habitual es un proyecto de código o árbol de dependencias dentro de la bóveda, que aporta miles de archivos .md fantasma. Señálalo; la solución es mover el proyecto fuera de la bóveda o agregar una exclusión. No elimines nada sin preguntar.

  • El frontmatter debe analizarse realmente. Ejecuta cada bloque a través de un analizador YAML real; no lo evalúes a ojo. El fallo dominante es un escalar simple sin comillas que contiene : (dos puntos y espacio), que falla en ese carácter y arrastra a todas las claves debajo de él, haciendo que todo el bloque sea invisible para el panel de Propiedades de Obsidian y para Dataview. Un segundo fallo común: un valor sin comillas que comienza con | o > abre un escalar de bloque YAML.

    Arreglarlo significa poner valores entre comillas, lo que en una nota grande y crítica puede afectar a cientos de claves — propónlo, nunca lo hagas sin previo aviso, y haz una copia de seguridad del archivo primero. Hasta que se arregle, mantén la convención existente (rota) en lugar de introducir un segundo estilo; una clave válida solitaria dentro de un bloque inválido no compra nada.

  • Las etiquetas pertenecen al YAML como una lista, no como hashtags en línea; compáralas con el vocabulario real de la bóveda, no con uno idealizado. Reporta la deriva; no reetiquetes unilateralmente.

  • Estado obsoleto — notas que llevan marcadores PAUSADO/DETENIDO/POR HACER cuyo proyecto ya ha avanzado. Repórtalas; no las resuelvas tú mismo.

  • Hubs fríos — una nota hub cuya sección de estado más reciente es anterior a la última actividad de su proyecto está desactualizada. Reporta la brecha.

Salida

Un informe, ordenado por cubo, con recuentos y referencias exactas archivo:línea. Propón reparaciones; realiza solo aquellas que el usuario apruebe.

Indica claramente qué hallazgos están verificados y cuáles son inferidos a partir del nombre — un destino que parece deriva puede ser una nota que el usuario planea escribir.

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.

Skills relacionados