obsidian-plugin/skills/vault-stubs/SKILL.md
LakuVault FVH/z redirect-stub classification. Use when cleaning stubs, converting duplicates to redirects, or merging content into Zettelkasten.
npx skillsauth add laurigates/claude-plugins vault-stubsInstall 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.
| Use this skill when... | Use the alternative instead when... |
|---|---|
| Classifying and consolidating FVH/z redirect stubs in LakuVault | Triaging generic orphan notes outside the FVH namespace — use vault-orphans |
| Promoting an FVH-only note into the canonical Zettelkasten location | Repairing the wikilinks that point at the moved note afterwards — use vault-wikilinks |
| Merging unique FVH content back into a Zettelkasten note | Adding the merged note into a Map of Content hub — use vault-mocs |
In LakuVault, the FVH/z/ directory is a work-namespace knowledge base that mirrors select Zettelkasten notes as tiny redirect stubs. Content lives in Zettelkasten/; FVH/z/ points to it so work-context queries still find the topic.
---
tags: [redirect]
context: fvh
---
See [[Zettelkasten/Docker|Docker]] in the main knowledge base.
Properties:
[redirect]context: fvh| Class | Meaning | Action |
|-------|---------|--------|
| clean_redirect | ≤ 200 B, redirect tag, Zettelkasten match | ✓ keep as-is |
| broken_redirect | redirect tag but >200 B or missing target | Rewrite body to the canonical one-liner |
| stale_duplicate | Full article, basename exists in Zettelkasten | Merge content into Zettelkasten, convert stub to clean_redirect |
| fvh_original | Full article, no Zettelkasten match | Legitimate — leave alone |
When a FVH/z/Foo.md has substantive content AND Zettelkasten/Foo.md exists, you must decide:
Zettelkasten/Foo.md first, then replace stub.Compare by section. If a heading in FVH/z/Foo.md has text that doesn't appear in Zettelkasten/Foo.md, that text needs migration. Use word-level comparison, not exact match — minor wording differences don't count as "unique content."
When in doubt, flag for user review rather than auto-merging. A bad merge is worse than leaving a duplicate.
Replace the whole FVH/z file body:
---
tags: [redirect]
context: fvh
---
See [[Zettelkasten/Foo|Foo]] in the main knowledge base.
Commit message:
refactor(stubs): convert FVH/z/Foo.md to redirect (content merged into Zettelkasten)
Occasionally a file classified fvh_original is actually general-interest content that belongs in Zettelkasten/. Signs:
If promoting:
Zettelkasten/Foo.mdFVH/z/Foo.md redirect stub in its placecontext: fvh from the promoted note's frontmatterrefactor(stubs): promote Foo from FVH/z to ZettelkastenDon't promote aggressively — the FVH namespace exists for a reason.
# All FVH/z files ordered by size
fd -e md . FVH/z -x wc -c {} | sort -n
# Ones with `redirect` tag
rg -l '^tags:.*\bredirect\b' FVH/z/ --glob '*.md'
# Large ones without `redirect` tag (candidates for conversion)
rg -L -l '^tags:.*\bredirect\b' FVH/z/ --glob '*.md'
Vault-agent's analyze_stubs gives the full classification.
context: fvh on stubs (required for FVH namespace queries).redirect tagredirect tag is an exception to the emoji-prefix ruletools
Scaffold a new ComfyUI custom-node repo (pyproject, CI, release-please, vitest+pytest, JS extension skeleton) in the picker/gesture vein. Use when bootstrapping or init-ing a comfyui node pack.
tools
Orchestrate a ComfyUI node pack from idea to registry: scaffold, create + seed the repo, open the gitops adoption PR. Use when releasing or spinning up a new comfyui node pack.
testing
macOS EndpointSecurity/EDR high CPU & battery drain. Use when Kandji ESF / XProtect pegs a core; trace the exec storm via powermetrics + eslogger.
development
odiff pixel-by-pixel image diffing. Use when comparing screenshots, detecting visual regressions, diffing before/after PNGs, asserting golden images.