Use My PKM
Work with the user's personal knowledge management vault.
Vault Location
Path: $MY_PKM_PATH (environment variable)
Set this variable to your vault location:
export MY_PKM_PATH=~/Vaults/my-pkm/my-pkm
IMPORTANT: Always use $MY_PKM_PATH in all commands, never hardcode the path.
Vault Structure
$MY_PKM_PATH/ ├── 0-inbox/ # Temporary notes (organize later) ├── 1-notes/ # Organized notes (may have subdirs) └── my-kanban.md # Kanban board for task management
Note: We do NOT use PARA method. Simple structure: inbox + notes.
Kanban Board Format
The Kanban board is just a markdown file with special formatting for the obsidian-kanban plugin.
File: $MY_PKM_PATH/my-kanban.md
Structure
--- kanban-plugin: board --- ## Column Name - [ ] Task item - [ ] Task with link [[Note Name]] %% kanban:settings
{"kanban-plugin":"board","list-collapse":[false,false,false,false,false]}
%%
Key Points
- •YAML frontmatter:
kanban-plugin: board - •Headers (
##) = Columns - •Checkboxes (
- [ ]) = Cards/Tasks - •Wiki-links (
[[Note Name]]) = Link to notes in vault - •Settings block at bottom (auto-generated by plugin)
Current Columns
- •Backlog
- •This-week
- •WIP
- •W8-for-feedback
- •Done
Critical PKM Rules
1. Concise Kanban Task Titles
ALWAYS extract concise, actionable titles from verbose input.
Examples:
| User Says (Verbose) | Kanban Title (Concise) | Linked Note |
|---|---|---|
| "Transfer money to wife tomorrow at 3pm, she said she needs it for groceries and utility bill" | Transfer money to wife | [[Transfer-2026-01-24]] |
| "Remind me to call John about the project, he wanted to discuss the timeline and requirements" | Call John about project | [[Call-John-2026-01-24]] |
| "Add task: review the feature spec that Tom sent yesterday, need to provide feedback by Friday" | Review feature spec | [[Feature-Spec-Review]] |
| "I need to prepare slides for Monday's presentation about Q4 results" | Prepare Q4 presentation slides | [[Q4-Presentation]] |
Pattern:
- •Extract: Action + Object (e.g., "Transfer money", "Call John", "Review spec")
- •Omit: When, why, who said what, contextual details
- •These details go into the linked note
2. Always Link Tasks to Detailed Notes
Every task with context MUST link to a note with full details.
Format:
## WIP - [ ] Concise task title [[Note-Name]]
Note Template:
# Note-Name **Due:** [When] **Context:** - [Detail 1] - [Detail 2] - [Detail 3] **Status:** [Pending/In Progress/Blocked/Done]
Example:
Boss says: "Transfer money to wife tomorrow at 3pm, she needs it for groceries and also to pay the utility bill"
Kanban:
## WIP - [ ] Transfer money to wife [[Transfer-2026-01-24]]
Note: $MY_PKM_PATH/1-notes/Transfer-2026-01-24.md
# Transfer-2026-01-24 **Due:** Tomorrow 3pm (2026-01-25 15:00) **Context:** - Wife needs money for groceries - Also to pay utility bill **Amount:** [To be confirmed] **Status:** Pending
3. Auto-Organize Notes into Subdirectories
When 5+ notes on the same topic exist, create a subdirectory and move them.
Detection:
- •Monitor
1-notes/directory - •Group notes by topic (finance, work, personal, health, etc.)
- •When count >= 5, auto-organize
Steps:
- •Detect topic from note titles/content
- •Create subdirectory:
$MY_PKM_PATH/1-notes/[topic]/ - •Move related notes into subdirectory
- •Verify wiki-links still work (Obsidian finds notes by name regardless of path)
- •Report organization to user
Example:
Before:
1-notes/ ├── Transfer-2026-01-20.md ├── Budget-Review.md ├── Invoice-Payment.md ├── Expense-Report.md ├── Tax-Prep-2026.md └── Meeting-Notes.md
After (5+ finance notes detected):
1-notes/ ├── finance/ │ ├── Transfer-2026-01-20.md │ ├── Budget-Review.md │ ├── Invoice-Payment.md │ ├── Expense-Report.md │ └── Tax-Prep-2026.md └── Meeting-Notes.md
Report: "I organized five finance notes into a finance subdirectory"
4. Preserve Kanban Format
NEVER modify:
- •YAML frontmatter:
kanban-plugin: board - •Settings block:
%% kanban:settings ... %%
ALWAYS preserve:
- •Exact column names
- •Checkbox format:
- [ ](space between brackets for incomplete) - •Wiki-link format:
[[Note Name]](no.mdextension)
Common Operations
Read Kanban Board
cat "$MY_PKM_PATH/my-kanban.md"
Use cases:
- •User asks "What's on my plate?"
- •User says "Show me my tasks"
- •Before moving a task (need to find it first)
Add Task to Kanban
Step 1: Extract concise title from user input
Step 2: Determine column (Backlog, This-week, WIP, W8-for-feedback, Done)
Step 3: Add task with wiki-link:
## [Column Name] - [ ] Concise task title [[Note-Name]]
Step 4: Create detailed note in 1-notes/ with full context
Step 5: Report completion to user
Move Task Between Columns
Step 1: Read Kanban to find task
Step 2: Remove from source column
Step 3: Add to destination column (preserve wiki-link)
Step 4: Report completion
Example:
# User says: "Move transfer money task to Done" # 1. Read Kanban, find in WIP: - [ ] Transfer money to wife [[Transfer-2026-01-24]] # 2. Remove from WIP # 3. Add to Done (change to checked): - [x] Transfer money to wife [[Transfer-2026-01-24]] # 4. Respond: "Moved transfer money to Done"
Create New Note
In inbox (temporary/quick capture):
echo "Content" > "$MY_PKM_PATH/0-inbox/Note Title.md"
In notes (organized):
echo "Content" > "$MY_PKM_PATH/1-notes/Note Title.md"
Best practice:
- •Quick captures → inbox
- •Linked from Kanban → 1-notes/ (organized)
Move Note from Inbox to Notes
mv "$MY_PKM_PATH/0-inbox/Note.md" "$MY_PKM_PATH/1-notes/Note.md"
List All Notes
find "$MY_PKM_PATH" -name "*.md" -not -path "*/.obsidian/*" -not -name "my-kanban.md"
Search Notes Content
grep -r "search term" "$MY_PKM_PATH" --include="*.md" --exclude-dir=".obsidian"
Check for Auto-Organization Opportunities
# List all notes in 1-notes/ (excluding subdirs) find "$MY_PKM_PATH/1-notes" -maxdepth 1 -name "*.md" -type f # Count notes by topic (manual detection) # Look for patterns in filenames: Transfer-*, Budget-*, Invoice-*, etc.
Working with Wiki-Links
Wiki-links ([[Note Name]]) in Obsidian reference the note by name, not path.
- •Link works regardless of folder:
[[My Note]]finds1-notes/My Note.mdor1-notes/finance/My Note.md - •Use exact note name without
.mdextension - •Links are case-sensitive
- •Advantage: Notes can be moved into subdirectories without breaking links
Best Practices
- •Use environment variable - Always use
$MY_PKM_PATH, never hardcode paths - •Preserve frontmatter - Keep
kanban-plugin: boardin my-kanban.md - •Preserve settings block - Don't modify the
%% kanban:settingssection - •Wiki-links for connections - Use
[[Note Name]]to link related notes - •Inbox for quick capture - Put temporary/unorganized notes in
0-inbox/ - •Notes for organized content - Move curated notes to
1-notes/ - •Concise Kanban titles - Extract key action, put details in linked note
- •Auto-organize proactively - Create subdirectories when notes accumulate
Example Workflows
Workflow 1: Add Task with Context (DETAILED)
User says: "Add to WIP: transfer money to wife tomorrow at 3pm, she needs it for groceries and utility bill"
Your steps:
- •
Extract concise title: "Transfer money to wife"
- •
Create note:
$MY_PKM_PATH/1-notes/Transfer-2026-01-24.mdmarkdown# Transfer-2026-01-24 **Due:** Tomorrow 3pm (2026-01-25 15:00) **Context:** - Wife needs money for groceries - Also to pay utility bill **Status:** Pending
- •
Read Kanban:
bashcat "$MY_PKM_PATH/my-kanban.md"
- •
Add to WIP column: Find
## WIPsection, add:markdown- [ ] Transfer money to wife [[Transfer-2026-01-24]]
- •
Save Kanban (preserve YAML and settings block)
- •
Respond: "Added to WIP: Transfer money to wife. Created note with details."
Workflow 2: Move Task
User says: "Move the transfer money task to Done"
Your steps:
- •
Read Kanban:
bashcat "$MY_PKM_PATH/my-kanban.md"
- •
Find task in WIP:
markdown## WIP - [ ] Transfer money to wife [[Transfer-2026-01-24]]
- •
Remove from WIP
- •
Add to Done (mark as completed):
markdown## Done - [x] Transfer money to wife [[Transfer-2026-01-24]]
- •
Save Kanban
- •
Respond: "Moved transfer money to Done"
Workflow 3: Quick Inbox Capture
User says: "Quick note: John mentioned the Q4 review is next Thursday"
Your steps:
- •
Create in inbox:
bashecho "John mentioned the Q4 review is next Thursday" > "$MY_PKM_PATH/0-inbox/Q4-Review-$(date +%Y%m%d).md"
- •
Respond: "Saved note to inbox"
Workflow 4: Auto-Organize Notes
You notice: 6 finance-related notes in 1-notes/:
- •Transfer-2026-01-20.md
- •Budget-Review.md
- •Invoice-Payment.md
- •Expense-Report.md
- •Tax-Prep-2026.md
- •Credit-Card-Statement.md
Your steps:
- •
Create subdirectory:
bashmkdir -p "$MY_PKM_PATH/1-notes/finance"
- •
Move notes:
bashmv "$MY_PKM_PATH/1-notes/Transfer-2026-01-20.md" "$MY_PKM_PATH/1-notes/finance/" mv "$MY_PKM_PATH/1-notes/Budget-Review.md" "$MY_PKM_PATH/1-notes/finance/" # ... move all 6 notes
- •
Verify wiki-links still work (Obsidian finds by name, not path)
- •
Respond: "I organized six finance notes into a finance subdirectory"
Workflow 5: What's on my plate?
User says: "What do I need to do today?"
Your steps:
- •
Read Kanban:
bashcat "$MY_PKM_PATH/my-kanban.md"
- •
Extract tasks from This-week and WIP columns
- •
Count tasks: 3 found
- •
Respond naturally: "You have three tasks today: Transfer money to wife, Call John about project, and Review feature spec"
Disambiguation: PKM Backlog vs Project Backlog
Problem: Multiple "backlogs" exist:
- •PKM Kanban Backlog column
- •Project backlogs (e.g., Jarvis project backlog, trading-bot backlog)
Solution: Default to PKM + Context Clues
Default Rule:
- •"Add to backlog" → PKM Kanban Backlog column (most common)
Context Clues for Project Backlog:
- •Explicitly mentions project name: "Add to jarvis backlog", "Add to trading-bot backlog"
- •Clearly technical: "Add to backlog: implement voice feedback", "Add to backlog: fix database migration"
- •Keywords: "feature", "bug", "refactor", "implement", "deploy"
When Ambiguous:
- •Ask for clarification: "Do you want this in your personal backlog or the [project] backlog?"
Examples:
| User Says | Interpretation |
|---|---|
| "Add to backlog: transfer money to wife" | PKM Kanban Backlog (personal task) |
| "Add to backlog: call John" | PKM Kanban Backlog (personal task) |
| "Add to backlog: implement voice feedback for jarvis" | Jarvis project backlog (technical + project name) |
| "Add to jarvis backlog: fix TTS voice quality" | Jarvis project backlog (explicit project name) |
| "Add to backlog: review code" | AMBIGUOUS → Ask: "Personal or project backlog?" |
Notes
- •This vault uses Obsidian with the obsidian-kanban plugin
- •The vault is synced across computers (Obsidian Sync or similar)
- •Changes made via CLI will reflect in Obsidian UI immediately
- •Always use
$MY_PKM_PATHenvironment variable for paths - •Set
MY_PKM_PATHin your shell profile (~/.bashrc, ~/.zshrc, etc.) - •Concise task titles + detailed notes = clean Kanban board
- •Auto-organize when notes accumulate (5+ threshold)