Use when wrapping up a work session — creates devlog entry, captures undocumented decisions/research/debugging, audits link health of session work, and updates project index. Primarily used via the pkm-capture agent.
From obsidian-pkmnpx claudepluginhub adrianv101/obsidian-pkm-plugin --plugin obsidian-pkmThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Workflow for session wrap-up. When running as a subagent, the delegation prompt provides the project path and devlog boundary context. The agent's system prompt handles transcript discovery (Step 0) before this workflow begins.
Append a session summary to the project devlog, most recent entry first.
If the devlog file doesn't exist yet (new project, first session), create it first:
vault_write({
template: "devlog",
path: "01-Projects/<Project>/development/devlog.md",
frontmatter: { tags: ["devlog"], project: "<Project>" }
})
Then append the session entry:
vault_append({
path: "01-Projects/<Project>/development/devlog.md",
heading: "## Sessions",
position: "after_heading",
content: "### YYYY-MM-DD HH:mm\n\n#### Session Summary\n- <what was accomplished>\n\n#### Key Decisions\n- <decisions made, link to ADRs if created>\n\n#### Blockers / Issues\n- <problems encountered, or \"None\">\n\n#### Next Steps\n- <what remains>\n\n---\n"
})
Use the actual date and fill in real content from the session. Keep entries concise but specific. Using after_heading inserts each new entry at the top, keeping the log in reverse-chronological order.
Wikilinks in devlog entries: Include [[wikilinks]] to tasks, ADRs, research notes, and other vault notes that were completed, created, or significantly updated during the session. For example: - Completed [[task-api-refactor]] or - Decided on caching strategy ([[ADR-003-caching]]).
Existing devlogs: Older devlogs may use ## YYYY-MM-DD entries without a ## Sessions heading. If vault_append fails with "Heading not found", add the heading first: vault_append({ path: "...", content: "\n## Sessions\n" }).
Query the activity log to find all notes created or modified this session:
vault_activity({ limit: 1 })
The response header shows current session: <id> (an 8-character prefix). Use that prefix to filter:
vault_activity({ session: "<id-from-header>", limit: 50 })
Note which files were created, modified, and searched.
Review the session's conversation for significant work that only exists in chat history. Most exchanges produce nothing worth capturing beyond the devlog entry in Step 1. When in doubt, don't capture — a missed capture is better than vault noise.
Skip entirely if the session was purely mechanical (config changes, minor fixes).
For each PKM-worthy item independently, determine whether to update an existing note or create a new one:
For each item, search the vault:
vault_semantic_search({ query: "<topic/title>", limit: 5 })
If unavailable, use vault_search with key terms + vault_query with matching tags.
Route based on results:
When a note already covers this topic, enrich it rather than creating a duplicate:
vault_read the existing note to understand its current contentvault_append to add new findings, with a date-stamped section if the note uses chronological entriesvault_edit to update outdated information (e.g., refining a decision's rationale, adding a new root cause to a troubleshooting log)vault_update_frontmatter to update status or other metadata if changedvault_suggest_links to discover new connections worth addingFollow the pkm-write skill workflow for proper duplicate checking, template selection, and linking:
| Content Type | Template | Default Path |
|---|---|---|
| Architecture/design decisions | adr | <project>/development/decisions/ADR-NNN-{title}.md |
| Research findings or evaluations | research-note | <project>/research/{title}.md |
| Complex debugging sessions | troubleshooting-log | <project>/development/debug/{title}.md |
| Reusable insights or patterns | permanent-note | 03-Resources/Development/{title}.md |
| New tasks identified | task | <project>/tasks/{title}.md |
Where <project> is the vault project path from session context.
When a task's status, priority, or details changed during the session:
vault_query({ type: "task", custom_fields: { project: "<Project>" } }) to find the taskvault_update_frontmatter to update status/priorityvault_append to add context about what changedvault_add_links({
path: "<task-path>",
links: [{ target: "<project>/development/devlog.md#YYYY-MM-DD HH:mm", annotation: "session where status changed to <new-status>" }]
})
Use the same ### YYYY-MM-DD HH:mm heading from Step 1 as the link target. This creates bidirectional traceability: the devlog links to the task, and the task links back to the session.Read back each note created in Step 3 using vault_read. Verify:
Fix any issues with vault_edit. If a note is entirely placeholder text, delete it with vault_trash — an empty note is worse than no note.
Run a targeted link health check on files touched during this session:
vault_link_health({ folder: "<project-folder>", checks: ["orphans", "broken"] })
For any orphan notes found (no connections), add links using vault_add_links. Broken links (pointing to non-existent files) may self-resolve if the missing notes were created earlier in this session — otherwise note them for manual review. For deeper audit (weak connections, ambiguous links, full vault scan), delegate to the link-auditor agent separately.
Check and update if changed during the session:
_index.md: Add links to new ADRs, update project status, add key links