From paivot-graph
Capture knowledge from the current session to the vault with auto-tagging and link suggestions.
How this command is triggered — by the user, by Claude, or both
Slash command
/paivot-graph:vault-captureThis 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 Capture Capture knowledge from the current session to the appropriate vault. Auto-derives tags, validates domains, suggests related links, and triages to the correct folder. > **Backend note.** Creation/append/search uses `pvg notes` (provider-abstracted). > `vlt vault="Claude" move` calls below are intentionally vlt-specific because the > global Claude vault is always vlt-backed and folder-move semantics do not > generalize to other backends (Linear/Confluence have no folder concept). ## Step 1: Load Context Load the vault-knowledge skill to understand the controlled domain voc...
Capture knowledge from the current session to the appropriate vault. Auto-derives tags, validates domains, suggests related links, and triages to the correct folder.
Backend note. Creation/append/search uses
pvg notes(provider-abstracted).vlt vault="Claude" movecalls below are intentionally vlt-specific because the global Claude vault is always vlt-backed and folder-move semantics do not generalize to other backends (Linear/Confluence have no folder concept).
Load the vault-knowledge skill to understand the controlled domain vocabulary and note template:
cat ~/workspace/paivot/paivot-graph/skills/vault-knowledge/SKILL.md | head -100
Detect the current project:
project=$(git remote get-url origin 2>/dev/null | xargs basename -s .git || basename "$(pwd)")
Scan the conversation for:
For each finding, extract:
Check domain against controlled vocabulary:
ai-training, ai-inference, ai-agents, ai-nlp
developer-tools (legacy), dev-tools-cli, dev-tools-testing, dev-tools-workflow, dev-tools-knowledge
product-management
security-gateway, security-hardening, security-compliance
finance-quant, finance-fintech
frontend-ui, frontend-performance
calendar-sync
If domain doesn't match, suggest closest match or ask user to pick.
Ask: "Would this knowledge help someone on a DIFFERENT project with a DIFFERENT codebase?"
.vault/knowledge/<type>/Before creating, search for related notes:
pvg notes search "<keywords from title>" --json
Present top 5 matches:
Related notes you may want to link:
1. [[Existing Note A]] - similar pattern
2. [[Existing Note B]] - same stack
3. [[Project X]] - used this approach
ALWAYS include at least the project note as a related link.
Auto-derive tags based on type + domain:
| Domain | Tag |
|---|---|
| ai-training | #ai/training |
| ai-inference | #ai/inference |
| ai-agents | #ai/agents |
| ai-nlp | #ai/nlp |
| developer-tools | #dev-tools/workflow |
| dev-tools-cli | #dev-tools/cli |
| dev-tools-testing | #dev-tools/testing |
| dev-tools-workflow | #dev-tools/workflow |
| dev-tools-knowledge | #dev-tools/knowledge |
| product-management | #product/management |
| security-gateway | #security/gateway |
| security-hardening | #security/hardening |
| security-compliance | #security/compliance |
| finance-quant | #finance/quant |
| finance-fintech | #finance/fintech |
| frontend-ui | #frontend/ui |
| frontend-performance | #frontend/performance |
| calendar-sync | #calendar/sync |
Build the note using the template:
---
type: <type>
project: <project>
stack: [<stack>]
domain: <domain>
status: active
confidence: <high|medium|low>
created: YYYY-MM-DD
---
# <Title>
<Summary - 1-2 sentences>
## Content
<Main body>
## Related
- [[<Project>]]
- [[<Related Note 1>]]
## Tags
<#derived-tag-1> <#derived-tag-2>
Create in _inbox/ first:
pvg notes create "_inbox/<Title>.md" --title "<Title>" --body "<full-content>"
# (vlt-only flags `silent` and `timestamps` dropped: no provider-abstracted equivalent yet)
Move to the correct folder based on type:
vlt vault="Claude" move path="_inbox/<Title>.md" to="<type>s/<Title>.md"
Folder mapping:
Append a session update to the project note:
pvg notes append "<Project>" --body "
## Session $(date +%Y-%m-%d)
- <brief summary of what was done>
- Captured: [[<Note 1>]], [[<Note 2>]]"
If project note doesn't exist, create it:
pvg notes create "projects/<Project>.md" --title "<Project>" --body "---
type: project
project: <project>
stack: [<detected-stack>]
domain: <project-domain>
status: active
confidence: high
created: $(date +%Y-%m-%d)
---
# <Project>
<Brief description>
## Related
- [[<Note 1>]]
## Tags
#<project-domain-tag>"
# (vlt-only flags `silent` and `timestamps` dropped: no provider-abstracted equivalent yet)
## Vault Capture Summary
Project: <name>
Date: <today>
### Captured
- [decision] [[Note Title]] -> decisions/ (#domain-tag)
- [pattern] [[Note Title]] -> patterns/ (#domain-tag)
### Linked To
- [[Project]]
- [[Related Note A]]
- [[Related Note B]]
### Skipped
- <insight> (already exists as [[Existing Note]])
Total: N new notes, M links added
Before completing, verify:
## Vault Capture Summary
Project: <name>
No new cross-project knowledge to capture.
Session-specific details logged to project execution (not vault-worthy).
If vlt vault="Claude" fails:
vlt vaults to discover vault pathsnpx claudepluginhub paivot-ai/paivot-graph --plugin paivot-graph