원클릭으로
commit-capture
Captures conversation context around git commits to Obsidian vault. Fires automatically via PostToolUse hook.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Captures conversation context around git commits to Obsidian vault. Fires automatically via PostToolUse hook.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Multi-source context recall. Searches Obsidian vault, git history, GitHub PRs, and claude-mem, then synthesizes a timeline report.
Creates a new note, project folder, or page in the Obsidian vault. Triggers on phrases like "create a note about X", "start a new project for Y", "add a page for Z", "new obsidian note", "create project folder", "set up a new project in obsidian".
Exports the current Claude conversation to the Obsidian vault. Triggers on phrases like "save this to Obsidian", "export to obsidian", "document this session", "save our conversation", "write this up", "put this in obsidian". Formats the conversation as structured markdown, determines the correct project folder from context, and saves with a timestamped filename. Optionally opens the note in the Obsidian GUI.
Agent-facing entry point for filing or appending a structured note through the vault keeper. Triggers when another agent or skill needs to persist a note — findings, decisions, observations, research results, daily-log entries — into the vault without back-and-forth. Humans use /obsidian:ask instead. Validates the structured payload then dispatches the vault-librarian INSERT or APPEND; routing and templates are owned by the librarian.
Reads, creates, or appends to the Obsidian daily note. Triggers on phrases like "add to my daily note", "update today's note", "what's in my daily note", "open today's note", "daily note", "log this to today".
First-time setup wizard for the Obsidian plugin. Guides the user through configuring vault path, domain taxonomy, and routing rules, then writes obsidian.local.md. Triggers on "/obsidian:setup", "set up obsidian", "configure obsidian plugin", "obsidian first run".
| name | commit-capture |
| description | Captures conversation context around git commits to Obsidian vault. Fires automatically via PostToolUse hook. |
| version | 2.2.0 |
The value here is not commit metadata — git already has that. The value is the conversation context: what you were investigating, what you tried, what you decided, and why.
Detection and metadata extraction are handled by scripts/commit-capture.sh (shell script, zero AI cost). This skill is invoked when the hook outputs a line starting with obsidian-commit-capture: — all metadata is inline, no file read needed.
The actual write goes through the keeper CLI (scripts/keeper append) — the
keeper's deterministic write primitive. The CLI creates the file on absence,
makes parent dirs, and appends the section; this skill does not Read/Write/
mkdir directly. The CLI is a plain command (zero AI cost, no subagent), so
commit-capture stays as cheap as before — the keeper is used, via command. This
skill's only job is to synthesize the context bullets (which require the
conversation, so they must be built here in the agent turn) and hand the write
to the CLI.
Vault path is passed inline by the hook (parsed once from the resolved config — $OBSIDIAN_LOCAL_MD, else ${XDG_CONFIG_HOME:-$HOME/.config}/claude-obsidian/obsidian.local.md, else the plugin dir). Do not Read the config file from this skill — every read costs ~1-2K tokens per commit. If vault_path is empty in the hook output, skip silently (the config is missing or malformed).
Parse inline metadata from the hook output line:
obsidian-commit-capture: hash=<h> | msg=<m> | branch=<b> | files=<f> | org_repo=<o> | repo_name=<r> | ticket=<t> | date=<d> | time=<ti> | vault_path=<v>
Extract: hash, msg, branch, files, org_repo, repo_name, ticket, date, time, vault_path.
Target (relative to vault_path): Projects/Development/<org_repo>/<date>.md.
Build the session context — this is the primary output and the only part that needs the conversation (so it must be done here, in the agent turn).
Review the full conversation since the last commit (or session start if first commit). Capture:
3-8 bullet points. Dense and specific. Written so you can reconstruct the reasoning months later.
Write the body to a temp file — the section content the keeper will append:
**Branch:** <branch>
**Message:** <msg>
**Files:** <files>
### Context
- <bullet points from step 3>
---
Write the new-file header to a second temp file — used by the keeper only if the dated note doesn't exist yet:
---
date: <date>
repo: <org_repo>
tags: [<repo_name>, auto-captured]
source: claude-code
---
# <repo_name> — <date>
If ticket is non-empty, add ticket-<ticket> to the tags array.
Hand the write to the keeper CLI:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/keeper" append \
--vault "<vault_path>" \
--target "Projects/Development/<org_repo>/<date>.md" \
--section "## <time> — <hash>" \
--body-file "<body-temp>" \
--init-file "<header-temp>"
The CLI creates parent dirs, writes the header on first commit of the day,
and appends the section. No Read/Write/mkdir, no subagent.
Confirm silently — output only: Captured <hash> → <org_repo>/<date>.md