From obsidian-kb
Writes proportional session handoff notes to project's Obsidian vault for next-session continuity. Triggers on wrap-up phrases like 'done' or /kb-offboard; strictly resolves vault via path/name match.
npx claudepluginhub waelmas/codeplow --plugin obsidian-kbThis skill uses the workspace's default tool permissions.
Examine what happened this session and write a proportional handoff note so the next session can pick up seamlessly.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Executes ctx7 CLI to fetch up-to-date library documentation, manage AI coding skills (install/search/generate/remove/suggest), and configure Context7 MCP. Useful for current API refs, skill handling, or agent setup.
Generates production-ready Python code for Dataverse SDK with error handling, singleton clients, retry logic, OData optimizations, logging, and type hints.
Share bugs, ideas, or general feedback.
Examine what happened this session and write a proportional handoff note so the next session can pick up seamlessly.
Follow the Preflight Check in the obsidian-kb awareness skill (${CLAUDE_PLUGIN_ROOT}/skills/obsidian-kb/SKILL.md). In short:
command -v obsidian - if missing, check if the app is installed; if neither, show cross-platform install instructions (brew install --cask obsidian / flatpak install flathub md.obsidian.Obsidian / winget install Obsidian.Obsidian, or https://obsidian.md/download) and stop.timeout 3 obsidian vaults - if it fails, launch Obsidian (open -a Obsidian on macOS, equivalent for Linux/Windows), wait 2-3 seconds, retry.obsidian vaults succeeds.Follow the Vault Resolution Algorithm in ${CLAUDE_PLUGIN_ROOT}/skills/obsidian-kb/SKILL.md. It's a strict priority order:
$ARGUMENTS) → fuzzy-match once, confirm, done. If the argument also contains notes (e.g., "master vault focus on auth refactor"), split: vault name hint first, rest becomes user-provided notes for Step 2d.$PWD or vice versa.project_path - a root note's YAML matches $PWD exactly.Writing to the wrong vault would pollute it with handoff notes for an unrelated project. If you're less than confident, ASK.
After resolution, print a confirmation line on your first reply:
"Using vault
<Vault Name>at<path>(matched via<tier>). Say 'wrong vault' if I should pick a different one."
Critical: every obsidian command in this skill MUST include vault="<resolved>". Never omit it.
If the user tells you which vault to use, use it immediately - just confirm by name.
Before writing anything, make the resolved vault active and set CLI_MODE:
CURRENT=$(timeout 3 obsidian vault info=name 2>/dev/null)
if [[ "$CURRENT" != "$VAULT_NAME" ]]; then
ENCODED=$(printf '%s' "$VAULT_NAME" | sed 's/ /%20/g')
open "obsidian://open?vault=${ENCODED}" # macOS
sleep 3
CURRENT=$(timeout 3 obsidian vault info=name 2>/dev/null)
fi
if [[ "$CURRENT" == "$VAULT_NAME" ]]; then CLI_MODE=1; else CLI_MODE=0; fi
After resolution + switch, save the project_path mapping for future sessions (Tier 3 fast-path). Uses CLI when available, filesystem fallback otherwise - see "Save the mapping" in the awareness skill for the exact code.
Tell the user:
"No knowledge base vault found for this project. Run
/kb-initto create one first, then try again to save your handoff."
Stop here.
Examine what actually happened this session. Gather data from multiple sources:
# What changed in the working tree
git diff --stat 2>/dev/null
# Recent commits (last ~10, or since session start if detectable)
git log --oneline -10 2>/dev/null
# Staged changes
git diff --cached --stat 2>/dev/null
# Untracked files that might matter
git status --short 2>/dev/null
Think about what happened in this conversation:
If tests were run this session, note the results. If there's a standard test command visible in the project (package.json scripts, pytest, etc.), note the last known state.
If the user provided arguments (e.g., "focus on the auth refactor"), incorporate those notes prominently.
The handoff should be proportional to what happened. A session where you fixed one typo gets 5 lines. A session where you shipped 10 features gets the full treatment.
---
type: session-handoff
date: YYYY-MM-DD
project_path: <pwd>
---
# Session Handoff - YYYY-MM-DD
## TL;DR
<1-2 sentences>
## Next Steps
<what to do next, in priority order>
## Decisions & Rationale
<only if decisions were made - what was decided and why>
## Key Files Changed
<only if files changed - list with brief purpose>
## Test State
<only if tests were run - command + result summary>
## Watch Out
<only if there are gotchas - things that might surprise the next session>
## Quick Start
<only if non-obvious - commands to get back to working state>
## Links
- [[Index]]
<wiki-links to relevant vault notes>
Omit any section that has nothing meaningful to say. Don't include empty sections.
All writes in this step go through the filesystem using $VAULT_PATH (captured in Step 1). Do NOT use obsidian create / append - they ignore vault= and hit the active Obsidian vault. See "Filesystem-First Operations" in the awareness skill.
find "$VAULT_PATH" -type d -not -path "*/.obsidian/*" | sort
find "$VAULT_PATH" -type f -name "*.md" -not -path "*/.obsidian/*" \
\( -iname "*handoff*" -o -path "*/Sessions/*" \) | sort
Look for where previous handoffs live:
Sessions/ folder (standard for this plugin)NEXUS/ or Notes/Sessions/ folder exists → write there (standard path).Sessions/ → create Sessions/ and write there:
mkdir -p "$VAULT_PATH/Sessions"
TODAY="$(date +%Y-%m-%d)"
# Search handoffs with today's date in filename
ls "$VAULT_PATH"/Sessions/${TODAY}*.md 2>/dev/null
If a handoff already exists for today, pick the next sequence number: YYYY-MM-DD-handoff-2.md, etc.
HANDOFF_PATH="$VAULT_PATH/Sessions/${TODAY}-handoff.md"
mkdir -p "$(dirname "$HANDOFF_PATH")"
cat > "$HANDOFF_PATH" <<'HANDOFF_EOF'
---
type: session-handoff
date: 2026-04-13
project_path: <replace with $PWD before writing>
---
# Session Handoff - 2026-04-13
## TL;DR
<summary>
## Next Steps
<priorities>
HANDOFF_EOF
(Replace the YAML + heredoc content with the adaptive sections you built in Step 3.)
Check for an overview note at the vault root; if one exists, append a link to the new handoff:
for overview in "Index.md" "README.md" "Home.md" "00 - Home.md"; do
if [[ -f "$VAULT_PATH/$overview" ]]; then
printf '\n- [[Sessions/%s-handoff]] - %s\n' "$TODAY" "<TL;DR summary>" \
>> "$VAULT_PATH/$overview"
break
fi
done
If no overview note exists, skip this step - don't create one just for a link.
Every path in this step begins with $VAULT_PATH/. If any path would land outside the vault folder, STOP - that's a bug. Double-check by verifying $VAULT_PATH is set and the target path starts with it.
Look at the topics mentioned in the handoff:
[[wiki-links]] to reference them.Tell the user:
"Handoff saved to /YYYY-MM-DD-handoff.md in the [Vault Name] vault.
Next session, trigger kb-onboard (or run
/kb-onboardin Claude Code / Cursor) to pick up where you left off."
obsidian CLI onlytimeout to prevent hangs