claude/skills/vault-health/SKILL.md
Audit the Obsidian thoughts vault for orphans, unresolved links, isolated hubs, and structural issues, fixing what can be safely fixed
npx skillsauth add kainakamura/dotfiles vault-healthInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit the Obsidian thoughts vault, fix anything that can be safely fixed, and report the rest. Safe fixes are mechanical ones: broken link formats, missing tags, unresolved links with an obvious intended target, missing structural stubs. Anything requiring judgment gets reported back so the user can provide guidance for how to fix properly.
Vault path: ~/repos/thoughts/ (hardcoded, single vault).
Use both methods to discover project hubs, then cross-check them against each other.
Path-based: run find ~/repos/thoughts/projects/ -name "problem.md". For each result, derive the project dir (strip /problem.md) and expected hub path (<dir>/<slug>.md, where slug is the basename of the dir).
Tag-based: run obsidian tag name=project verbose. This gives all files tagged [project].
Look for mismatches between the two lists and try and find structural issues, such as:
<slug>.md hub file doesn't exist on diskobsidian property:read name=tags path=<hub> doesn't include project<parent>/problem.md doesn't exist (tagged as a project but no real project structure behind it)For each hub in the reconciled list, run obsidian links path=<hub> and check whether any of its outgoing links point into repos/. A hub with no repos/ link is potentially isolated from the rest of the graph.
For each potentially isolated hub, read the file and use judgment: does the project clearly have no external code repo? Look for signals like notes about vault-internal changes, brainstorming-only projects with no codebase, or anything else that makes the absence of a repo link obviously intentional. If it looks intentional, note it as such. If it's ambiguous or looks like a forgotten link, flag it.
Run obsidian orphans to identify orphaned notes. Some files like the README are fine, but see what else is unexpected.
Run obsidian unresolved total, expect 0
obsidian unresolved verbose format=json to find the sources and targets.[[x1, x2], [y1, y2]]) wrap in inline code so they get ignoredFix the safely fixable issues found across checks, then share what was done and what remains. For each area, note whether things look clean, what was fixed, or what seems off. For things that look intentional, briefly mention them so it's clear they were checked. For anything that needs judgment, describe it clearly enough that the user can decide what to do.
testing
Quickly weigh options inline with pros and cons. A lightweight version of /concepts for simple decisions, returns results fast without writing vault artifacts.
tools
Back-and-forth conversation mode. Answer very quickly in a few words to help the user talk through ideas. Use when the user invokes /convo or wants to think out loud.
content-media
Run the engineering design process autonomously across multiple iterations
tools
Create a new project in the Obsidian thoughts vault