Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Detect and resolve orphaned notes in the vault. Use during heartbeat maintenance or when vault status shows orphans. Finds notes with no inbound wikilinks and either connects them to the graph or flags them for cleanup.
.claude/skills/mikeyobrien-vault-clean/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -39% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 58% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -25% | 0% |
Resolve orphaned notes in ~/.rho/vault/ -- notes that exist but have no inbound [[wikilinks]] from any other note.
Run the detection script to get the current orphan list:
bashTMPDIR="$PREFIX/tmp" # All note slugs find ~/.rho/vault -name "*.md" -not -name "_inbox.md" | while read f; do basename "$f" .md done | sort -u > "$TMPDIR/vault-slugs.txt" # All wikilink targets rg -oN '\[\[([^\]]+)\]\]' ~/.rho/vault --no-filename -r '$1' | sort -u > "$TMPDIR/vault-links.txt" # Orphans: notes with zero inbound links comm -23 "$TMPDIR/vault-slugs.txt" "$TMPDIR/vault-links.txt" | grep -v "^_index$"
For each orphaned note, read it with vault read and classify it:
The note has value but nobody links to it. Fix by:
_index, project notes, topic MOCs)[[slug]] wikilink from the parent to the orphan## Connections section is missing links, add those tooThe note duplicates content already in another note. Fix by:
rm ~/.rho/vault/<type>/<slug>.mdThe note is important enough to be a new section in _index.md. Fix by:
_index.md (Projects, References, Concepts, Patterns, Logs)## Connections section linking backThe note is stale, empty, or no longer relevant. Fix by:
rm ~/.rho/vault/<type>/<slug>.mdAfter processing, rerun the detection script. Orphan count should decrease. Report: how many connected, merged, promoted, deleted.
When running during heartbeat, process max 5 orphans per cycle to stay lightweight. Prioritize by:
_index.md that don't exist yet (broken links) -- create stubs2026-02-05-email-rollback): Usually operational runbooks. Connect to the relevant project note.reddit-localllama-draft, x-drafts): Connect to a drafts MOC or the project they support.BACKLOG, TODO, ENGINEERING): Often subdirectory artifacts from project imports. Usually merge into the project note or delete if redundant._index.md or the relevant MOC._index.md when promotingvault read| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 10,316 | 10,391 | +1% | 1 | 1 | 0% | 1,902 | 1,263 | -34% | 0 | 0 | — |
case-02 | fail→fail | 8,090 | 8,003 | -1% | 1 | 1 | 0% | 1,397 | 1,309 | -6% | 0 | 0 | — |
case-03 | fail→fail | 13,979 | 10,226 | -27% | 1 | 1 | 0% | 2,297 | 1,254 | -45% | 0 | 0 | — |
case-04 | fail→pass | 13,041 | 28,932 | +122% | 1 | 1 | 0% | 2,438 | 1,708 | -30% | 0 | 0 | — |
case-05 | fail→pass | 15,432 | 3,256 | -79% | 1 | 1 | 0% | 2,424 | 1,477 | -39% | 0 | 0 | — |
case-06 | fail→pass | 8,082 | 7,006 | -13% | 1 | 1 | 0% | 1,283 | 2,033 | +58% | 0 | 0 | — |
case-07 | pass→fail | 10,869 | 6,248 | -43% | 1 | 1 | 0% | 1,727 | 1,197 | -31% | 0 | 0 | — |
case-08 | fail→pass | 9,724 | 4,801 | -51% | 1 | 1 | 0% | 1,587 | 1,778 | +12% | 0 | 0 | — |
case-09 | pass→fail | 7,916 | 2,383 | -70% | 1 | 1 | 0% | 1,260 | 1,321 | +5% | 0 | 0 | — |
case-10 | fail→pass | 10,013 | 2,115 | -79% | 1 | 1 | 0% | 1,567 | 1,176 | -25% | 0 | 0 | — |
case-11 | fail→pass | 10,467 | 2,133 | -80% | 1 | 1 | 0% | 1,766 | 1,170 | -34% | 0 | 0 | — |
case-12 | fail→fail | 4,698 | 2,612 | -44% | 1 | 1 | 0% | 740 | 1,347 | +82% | 0 | 0 | — |
case-13 | fail→fail | 11,502 | 1,736 | -85% | 1 | 1 | 0% | 1,998 | 1,172 | -41% | 0 | 0 | — |
case-14 | fail→pass | 10,843 | 4,212 | -61% | 1 | 1 | 0% | 1,995 | 1,657 | -17% | 0 | 0 | — |
case-15 | fail→fail | 11,000 | 4,923 | -55% | 1 | 1 | 0% | 1,960 | 1,804 | -8% | 0 | 0 | — |
case-16 | fail→pass | 4,488 | 3,083 | -31% | 1 | 1 | 0% | 688 | 1,177 | +71% | 0 | 0 | — |
case-17 | fail→fail | 3,759 | 1,955 | -48% | 1 | 1 | 0% | 635 | 1,162 | +83% | 0 | 0 | — |
case-18 | fail→pass | 11,190 | 3,285 | -71% | 1 | 1 | 0% | 1,708 | 1,459 | -15% | 0 | 0 | — |
case-19 | fail→pass | 8,988 | 1,911 | -79% | 1 | 1 | 0% | 1,552 | 1,215 | -22% | 0 | 0 | — |
case-20 | pass→pass | 9,250 | 7,565 | -18% | 1 | 1 | 0% | 1,652 | 2,283 | +38% | 0 | 0 | — |
case-21 | fail→fail | 10,171 | 7,983 | -22% | 1 | 1 | 0% | 1,901 | 2,292 | +21% | 0 | 0 | — |
case-22 | pass→pass | 6,918 | 5,553 | -20% | 1 | 1 | 0% | 1,365 | 1,805 | +32% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 18 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.