From paivot-graph
This skill should be used when working on any project to understand how to effectively interact with the Obsidian knowledge vault. It teaches when to capture knowledge, what to capture, how to format vault notes, and how to search effectively. Use when you need to "save to vault", "update vault", "capture a decision", "record a pattern", "log a debug insight", or when starting/ending a significant work session.
npx claudepluginhub paivot-ai/paivot-graph --plugin paivot-graphThis skill uses the workspace's default tool permissions.
The Obsidian vault ("Claude") is your persistent knowledge layer. Interact with it using `vlt` (the fast vault CLI) via Bash. Prefer `vlt` for vault-aware operations (search, create, move with wikilink repair, backlinks, tags).
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
The Obsidian vault ("Claude") is your persistent knowledge layer. Interact with it using vlt (the fast vault CLI) via Bash. Prefer vlt for vault-aware operations (search, create, move with wikilink repair, backlinks, tags).
Vault path: Resolve dynamically with vlt vault="Claude" dir (never hardcode).
Shared across ALL projects. Cross-project knowledge only.
| Folder | Contains | Auto-Tag |
|---|---|---|
| methodology/ | Agent prompts, Paivot workflow | #dev-tools/workflow |
| conventions/ | Operating mode, checklists | #dev-tools/workflow |
| decisions/ | Cross-project decisions | Domain-based |
| patterns/ | Cross-project patterns | Domain-based |
| debug/ | Cross-project debug insights | Stack-based |
| concepts/ | Language/framework knowledge | Stack-based |
| projects/ | Project index notes (not logs!) | Project domain |
| people/ | Team preferences | #dev-tools/workflow |
| _inbox/ | Unsorted capture | (triage required) |
Governance: New captures can go through /vault-capture. Changes to protected system notes go through /vault-evolve (proposal) and /vault-triage (review/apply).
.vault/ in each repo)Scoped to a single project. Changes apply directly.
.vault/
knowledge/ # Project-local knowledge managed via vlt
conventions/ # Project-specific conventions
decisions/ # Project-specific decisions
patterns/ # Project-specific patterns
debug/ # Project-specific debug insights
skills/ # Project-specific synthesized skills
.settings.yaml # Project settings managed by pvg
Separation: knowledge/ is for durable project knowledge. Other .vault/ paths are runtime state managed by pvg/nd, not a manual session-log area.
Use these domain values in frontmatter. Prefer the granular dev-tools-* values for new captures; older seeded notes may still use the legacy values listed here.
| Domain | Description | Auto-Tag |
|---|---|---|
ai-training | ML model training, fine-tuning, optimization | #ai/training |
ai-inference | Model inference, reasoning, neuro-symbolic | #ai/inference |
ai-agents | Agent orchestration, multi-agent systems | #ai/agents |
ai-nlp | Natural language processing, NER, classification | #ai/nlp |
developer-tools | Legacy seeded Paivot system notes; prefer dev-tools-* for new notes | #dev-tools/workflow |
dev-tools-cli | CLI tools, build systems, package managers | #dev-tools/cli |
dev-tools-testing | Testing frameworks, test patterns | #dev-tools/testing |
dev-tools-workflow | Development workflow, methodology | #dev-tools/workflow |
dev-tools-knowledge | Knowledge management, vault patterns | #dev-tools/knowledge |
product-management | Product and backlog management practices | #product/management |
security-gateway | API gateways, middleware, auth | #security/gateway |
security-hardening | Security fixes, vulnerability remediation | #security/hardening |
security-compliance | Regulatory compliance, audit | #security/compliance |
finance-quant | Quantitative finance, backtesting | #finance/quant |
finance-fintech | Fintech applications, payments | #finance/fintech |
frontend-ui | UI components, design systems | #frontend/ui |
frontend-performance | Web performance, optimization | #frontend/performance |
calendar-sync | Calendar federation, scheduling | #calendar/sync |
Tags are derived from folder + domain. Never manually add tags to frontmatter.
| Folder | Base Tag | Plus Domain Tag |
|---|---|---|
| methodology/ | #dev-tools/workflow | - |
| conventions/ | #dev-tools/workflow | - |
| decisions/ | - | #<domain> (from domain field) |
| patterns/ | - | #<domain> (from domain field) |
| debug/ | #dev-tools/cli | #<stack> if relevant |
| concepts/ | - | #ai/<subtype> based on stack |
| projects/ | - | #<domain> (from domain field) |
Tags appear in the note body as a ## Tags section at the bottom, not in frontmatter.
Every note MUST follow this structure:
---
type: <pattern|debug|decision|concept|convention|methodology>
project: <project-name-or-general>
stack: [<list-of-technologies>]
domain: <from-controlled-vocabulary>
status: active
confidence: high|medium|low
created: YYYY-MM-DD
---
# Title
One-line summary of what this note captures.
## Context (optional)
Why this matters, when it applies.
## Content
Main body - the actual knowledge.
## Related
- [[Link to related note 1]]
- [[Link to related note 2]]
## Tags
#auto-derived-tag #another-tag
| Trigger | Type | Folder |
|---|---|---|
| Chose X over Y | decision | decisions/ |
| Found reusable solution | pattern | patterns/ |
| Solved non-obvious bug | debug | debug/ |
| Learned framework gotcha | concept | concepts/ |
| Established team rule | convention | conventions/ |
| Session starting | (read) | projects/ + linked notes |
| Session ending | (update) | projects/ |
Ask: "Would this help someone working on a DIFFERENT project?"
.vault/knowledge/vlt vault="Claude" create name="<Title>" path="_inbox/<Title>.md" content="---
type: <type>
project: <project>
stack: [<stack>]
domain: <from-vocabulary>
status: active
confidence: <level>
created: $(date +%Y-%m-%d)
---
# <Title>
<one-line summary>
## Content
<main content>
## Related
- [[<related note>]]
" silent
Don't leave notes in _inbox/. Move to correct folder:
vlt vault="Claude" move path="_inbox/<Title>.md" to="<folder>/<Title>.md"
Ensure at least one wikilink exists. If creating a new concept, link to related concepts or the project note.
# Single note
vlt vault="Claude" read file="<Note Title>"
# Note + all linked notes (graph traversal)
vlt vault="Claude" read file="<Note Title>" follow
# Note + all notes that link TO it
vlt vault="Claude" read file="<Note Title>" backlinks
# Text search
vlt vault="Claude" search query="<term>"
# By domain
vlt vault="Claude" search query="[domain:ai-agents]"
# By project
vlt vault="Claude" search query="[project:reader]"
# Append to note
vlt vault="Claude" append file="<Note Title>" content="<new content>"
# Replace a section
vlt vault="Claude" patch file="<Note Title>" heading="## Section" content="<new section>"
# Set property
vlt vault="Claude" property:set file="<Note Title>" name="status" value="superseded"
vlt vault="Claude" read file="<Project>" follow
.vault/knowledge//vault-capture to save new knowledge_inbox/ size - warn if > 5 notesWarn if vault needs attention:
inbox_count=$(vlt vault="Claude" files folder="_inbox" total)
orphans=$(vlt vault="Claude" orphans --json | jq length)
if [ "$inbox_count" -gt 5 ] || [ "$orphans" -gt 10 ]; then
echo "Vault needs attention: $inbox_count in inbox, $orphans orphans"
fi
The project note in projects/ should be:
## Session log (...) entries appended by pvg at session end)NOT:
Keep detailed execution history in nd story notes, git history, or Claude memory when needed. Paivot does not manage a .vault/sessions/ tree.
_inbox/ accumulate.