Log Session to Obsidian

VerifiedCaution

Summarize the current agent session, create a detailed Obsidian note, and link it from today's daily note.

Sby Skills Guide Bot
ProductivityBeginner
7/23/2026
Claude CodeCodex
#obsidian#session-logging#notes#markdown#daily-notes

Recommended for

Automated summary

Summarizes the current agent session, writes a structured Obsidian note about it, and links that note from today's daily note.

Strengths

  • Enforces a note template with YAML frontmatter (date, project, harness, agent-session tag) so every entry stays consistent
  • Captures reasoning, not just output: decisions, trade-offs, and rejected alternatives
  • Requires a complete file-change list of everything created, modified, or deleted, plus a section for deferred work
  • Uses the obsidian CLI to locate the vault and append the link to the daily note without manual file handling

Limitations

  • Requires the obsidian CLI to be installed and a vault to be configured; otherwise no writing step works
  • The documented multi-byte CLI bug forbids emoji and non-ASCII characters in titles and content
  • Manual invocation only (disable-model-invocation), so the agent will never trigger it on its own
  • Summary fidelity is bounded by what actually appears in the conversation history
When to use it

At the end of a work session, when you want a durable archived record of what was accomplished inside your Obsidian vault.

When not to use it

If you don't use Obsidian, or you need a shared team log or a journal updated continuously during the session.

Security analysis

Caution
Quality score84/100

The skill is benign in intent: it reads the session, writes a markdown note, and appends a link to today's daily note. Risk comes from the mechanics rather than malice — it shells out via Bash, writes outside the project tree into a synced vault, and passes model-generated text into a shell command with only double-quote escaping guidance. Worth a caution label and a note about avoiding secrets in summaries, but nothing here is destructive or exfiltrating.

Findings
  • •Uses Bash to run the `obsidian` CLI and writes/creates files inside the user's Obsidian vault — filesystem writes outside the current project directory, which is a side effect the user may not expect from a 'summarize' skill.
  • •Persists an entire session's conversation content (summaries, decisions, code snippets, file lists) into a vault that is often iCloud/Dropbox/git-synced — real risk of writing secrets, tokens, or internal paths mentioned earlier in the session into a synced location.
  • •Constructs shell commands by interpolating generated note titles/content (`obsidian daily:append content="- [[...]]"`). Only escaping of double quotes is specified; `$`, backticks, `!`, and other shell metacharacters in a model-generated title could break or inject into the command.
  • •No destructive, exfiltration, or obfuscated operations; no network calls beyond the local Obsidian CLI; scope is limited to note creation and daily-note append.
How this analysis is made

Examples

Simple wrap-up
/done
With extra context
/done We refactored the auth middleware and fixed the token refresh bug — note that the staging deploy is still pending.
Logging a long debugging session
/done Capture the whole RabbitMQ retry investigation, including the two approaches we rejected.

name: done description: Summarize the current agent session, create an Obsidian note for it, and link it from today's daily note. Use when the user is finished with a session and wants to log what was accomplished. disable-model-invocation: true allowed-tools: Bash argument-hint: [optional extra context]

Summarize this Claude Code session, create a dedicated session note in Obsidian, and link it from today's daily note.

Instructions

  1. Review the full conversation history for this session.
  2. Come up with a short summary title (2-6 words, no date) describing the overall theme.
  3. Write a detailed session note in markdown. The note MUST begin with YAML frontmatter and then use the sections described below. Skip any sections that don't make sense. The only non-negotiable is the frontmatter, which must always be present. Use this template:
---
created: YYYY-MM-DD
project: <working directory name or repo name>
harness: <who you are ('claude-code', or 'codex', or 'pi', etc)>
tags:
  - note/agent-session
---

# <summary title>

## Summary

<1-3 sentence overview of the session>

## What was done

- <bullet list of key actions, changes, and outcomes>

## Decisions made

- <bullet list of decisions and the reasoning behind them>
- <include trade-offs considered, alternatives rejected, and why>

## Relevant code snippets

<relevant new commands that were created, code snippets that were mentioned, etc>

## File changes

- `path/to/file` -- <what changed and why>
- <list every file that was created, modified, or deleted>

## Deferred / Postponed

- <anything discussed but intentionally left for later>
- <known issues discovered but not addressed>
- <if nothing was deferred, write "None">

## Notes

- <any additional context, gotchas, or follow-up items>
- <if $ARGUMENTS was provided, incorporate that context here or in the relevant section above>

Be thorough -- err on the side of detail. The goal is a complete record of the session. 4. Get today's date in YYYY-MM-DD format and construct the note path: Reference/Agent Sessions/YYYY-MM-DD <summary title> 5. Find the full path to the Obsidian vault by running obsidian vault - the path will be listed. 5. Create the session note file at <path>/Reference/Agent Sessions/YYYY-MM-DD <summary title>.md 6. Append a link to the session note in today's daily note by running:

obsidian daily:append content="- [[YYYY-MM-DD <summary title>]]" silent

Formatting rules

  • Frontmatter is required -- every note must start with the YAML frontmatter block
  • Always include the agent-session tag
  • Be detailed and verbose in the body -- capture the full picture of the session
  • Use plain markdown (no HTML)
  • Escape any double quotes in the content so the shell command works
  • Focus on outcomes but include reasoning and context behind decisions
  • List every file changed, not just the "key" ones
  • The daily note entry should be just a link: - [[YYYY-MM-DD <summary title>]]
  • For the harness frontmatter property, choose one of 'claude-code', 'codex', 'pi', etc.

Known issues

  • Obsidian CLI multi-byte character bug: The obsidian CLI fails to create notes when the content or path contains multi-byte characters (e.g., emoji, non-ASCII Unicode). Avoid using emoji or non-ASCII characters in note titles and content. Stick to plain ASCII text.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/log-session-to-obsidian-mrx3xy0j' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/log-session-to-obsidian-mrx3xy0j/download' --output '.skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md.part' && mv '.skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md.part' '.skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Bash

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md' && test -s '.skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/done' && cp -R '.skill-downloads/log-session-to-obsidian-mrx3xy0j' '.claude/skills/done'

Codex
test -f '.skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md' && test -s '.skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/done' && cp -R '.skill-downloads/log-session-to-obsidian-mrx3xy0j' '.agents/skills/done'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/log-session-to-obsidian-mrx3xy0j'

openskills read 'log-session-to-obsidian-mrx3xy0j'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/log-session-to-obsidian-mrx3xy0j/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills