From paivot-graph
Triage notes from _inbox/ to their proper folders by type, then check vault health for orphans and broken wikilinks.
How this command is triggered — by the user, by Claude, or both
Slash command
/paivot-graph:vault-triageThis command is limited to the following tools:
The summary Claude sees in its command listing — used to decide when to auto-load this command
# Vault Triage Review notes in `_inbox/` and move them to the correct folders. Also check for orphan notes and broken wikilinks. **Vault:** `vlt vault="Claude"` (resolves path dynamically). > **Backend note.** Read operations use `pvg notes` (provider-abstracted). Operations > below that invoke `vlt vault="Claude"` directly (`move`, `delete`, `orphans`, > `unresolved`) are intentionally vlt-specific: the global Claude vault is always > vlt-backed, and these verbs have no clean cross-backend abstraction (e.g., > renaming files between folders or computing wikilink orphans does not general...
Review notes in _inbox/ and move them to the correct folders. Also check for orphan notes and broken wikilinks.
Vault: vlt vault="Claude" (resolves path dynamically).
Backend note. Read operations use
pvg notes(provider-abstracted). Operations below that invokevlt vault="Claude"directly (move,delete,orphans,unresolved) are intentionally vlt-specific: the global Claude vault is always vlt-backed, and these verbs have no clean cross-backend abstraction (e.g., renaming files between folders or computing wikilink orphans does not generalize to Linear/Confluence). Direct vlt is the supported mechanism here.
List all notes in _inbox/:
pvg notes list --folder "_inbox" --json
If empty, report:
## Vault Triage
_inbox/ is empty. Nothing to triage.
Read each note and determine:
### Inbox Note: [[Note Title]]
Type: <type>
Domain: <domain> (valid/invalid)
Target: <folder>/
Links: <has Related section?> <count> links
Summary: <first paragraph>
Issues:
- <domain not in vocabulary>
- <no Related section>
- <no Tags section>
vlt vault="Claude" move path="_inbox/<Note>.md" to="<folder>/<Note>.md"
If note lacks Related section, search for related notes:
pvg notes search "<keywords>" --json
Suggest top 3 matches, then add:
pvg notes append "<Note>" --body "
## Related
- [[<Suggested Link 1>]]
- [[<Suggested Link 2>]]"
Derive tags from domain and add to body:
pvg notes append "<Note>" --body "
## Tags
#<derived-tag>"
vlt vault="Claude" delete file="<Note>" permanent
After triaging inbox, check overall vault health:
# Orphans (notes with no incoming links)
orphans=$(vlt vault="Claude" orphans --json)
# Broken wikilinks
broken=$(vlt vault="Claude" unresolved --json)
Report:
## Vault Health
| Metric | Count | Status |
|--------|-------|--------|
| _inbox | N | (should be 0) |
| Orphans | N | (warn if > 10) |
| Broken links | N | (should be 0) |
For each orphan, suggest links:
pvg notes search "<keywords from note>" --json
Add suggested link to the related note (creating an incoming link):
pvg notes append "<Related Note>" --body "
- [[<Orphan Note>]]"
For each broken wikilink:
## Vault Triage Summary
Date: <today>
### Moved
- [[Note A]] -> decisions/
- [[Note B]] -> patterns/
### Fixed
- Added Related section to [[Note C]]
- Added tags to [[Note D]]
- Linked orphan [[Note E]] to [[Project X]]
### Deleted
- [[Note F]] (not vault-worthy)
### Remaining Issues
- N orphans still need linking
- N broken wikilinks need resolution
### Vault Health
- Total notes: N
- _inbox: 0
- Orphans: N
- Broken links: 0
Valid domains:
npx claudepluginhub paivot-ai/paivot-graph --plugin paivot-graph