vault-stubs
LakuVault FVH/z redirect-stub classification. Use when cleaning stubs, converting duplicates to redirects, or merging content into Zettelkasten.
What this skill does
# FVH/z Stub Management
## When to Use This Skill
| 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.
## Canonical Redirect Stub Format
```yaml
---
tags: [redirect]
context: fvh
---
See [[Zettelkasten/Docker|Docker]] in the main knowledge base.
```
Properties:
- Size ≤ 200 bytes (whitespace excluded)
- Tags is exactly `[redirect]`
- Body is a single wikilink with alias to the canonical note
- `context: fvh`
## Classifications (from vault-agent's stubs analyzer)
| 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 |
## Consolidation: stale_duplicate → clean_redirect
When a `FVH/z/Foo.md` has substantive content AND `Zettelkasten/Foo.md` exists, you must decide:
1. **Is the FVH/z content a subset of Zettelkasten?** → Replace stub with canonical redirect. No content merge needed.
2. **Does FVH/z have unique content?** → Merge the unique sections into `Zettelkasten/Foo.md` first, then replace stub.
3. **Is FVH/z *better* than Zettelkasten?** → Rare, but flag for user review. The user decides which becomes canonical.
### Merge Heuristic
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.
## Conversion Recipe
Replace the whole FVH/z file body:
```yaml
---
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)
```
## Promoting fvh_original → Zettelkasten
Occasionally a file classified `fvh_original` is actually general-interest content that belongs in `Zettelkasten/`. Signs:
- No FVH-specific references (ICT check-in, silverbucket, internal URLs)
- Could be useful in personal contexts
If promoting:
1. Move file to `Zettelkasten/Foo.md`
2. Create a `FVH/z/Foo.md` redirect stub in its place
3. Strip `context: fvh` from the promoted note's frontmatter
4. Commit as `refactor(stubs): promote Foo from FVH/z to Zettelkasten`
Don't promote aggressively — the FVH namespace exists for a reason.
## Detection
```bash
# 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.
## Safety
- Never delete content without verifying it exists elsewhere. When merging, grep the destination note for a canonical phrase from the source.
- Preserve `context: fvh` on stubs (required for FVH namespace queries).
- Don't create stubs for Zettelkasten notes that aren't actually used in FVH context — that creates noise, not redirection.
## Related Skills
- **vault-frontmatter** — YAML mechanics for adding the `redirect` tag
- **vault-wikilinks** — pipe-alias syntax for the redirect link
- **vault-tags** — `redirect` tag is an exception to the emoji-prefix rule
Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.