Skip to content

Add claude-vault-capture plugin#5

Open
alukach wants to merge 1 commit into
developmentseed:mainfrom
alukach:add-claude-vault-capture-plugin
Open

Add claude-vault-capture plugin#5
alukach wants to merge 1 commit into
developmentseed:mainfrom
alukach:add-claude-vault-capture-plugin

Conversation

@alukach

@alukach alukach commented Jun 7, 2026

Copy link
Copy Markdown
Member

What

Adds claude-vault-capture to the marketplace under skills/claude-vault-capture/ — a Claude Code plugin that automatically turns Claude Code sessions into curated Obsidian notes. On SessionEnd a backgrounded worker scrubs secrets, summarizes the session with Sonnet, and writes a single durable artifact (decision / runbook / gotcha / spec, or nothing if low-signal) to <vault>/Inbox/auto/. Also ships the /vault-save skill for on-demand exports to <vault>/claude-docs/.

Why a plugin (vs. the upstream install.sh)

Upstream installs via git clone + uv sync + ./install.sh --vault … (plus a multi-step ritual for subscription/keychain auth). Repackaged as a marketplace plugin, install becomes:

/plugin marketplace add developmentseed/skills
/plugin install claude-vault-capture@skills

The plugin system absorbs nearly all of install.sh:

install.sh did Now
Edit ~/.claude/settings.json to register the hook hooks/hooks.json via ${CLAUDE_PLUGIN_ROOT}
Copy the skill into ~/.claude/skills/ skills/vault-save/SKILL.md (auto-discovered)
Inject a vault-save trigger into ~/.claude/CLAUDE.md Removed — the skill auto-triggers off its description
Prompt for vault path → write capture.env userConfig (vault_dir), prompted at enable
Manual OAuth/Keychain dance userConfig sensitive fields → OS keychain
eval/state/ runtime files in-repo ${CLAUDE_PLUGIN_DATA} (survives updates)
uv sync to build .venv uv run + PEP 723 inline deps in curate.py

Net new prerequisite: only uv on PATH (plugins can't install system tools). The hook still prefers a pre-built .venv when present, so upstream/standalone use and the existing test suite are unchanged.

Attribution

Adapted from lhoupert/claude-vault-capture, MIT-licensed, © Loïc Houpert. The original LICENSE and a provenance note are kept in the plugin folder, and the import commit is authored by Loïc Houpert (committer: @alukach) to preserve credit in this repo's history.

Notes for reviewers

  • This entry is code-bearing, unlike the marketplace's current plain-language skills (it bundles a Python pipeline + a SessionEnd hook). Flagging in case that affects how you want to scope/label it.
  • The pytest suite travels with the plugin (skills/claude-vault-capture/tests/, no network/API key needed): cd skills/claude-vault-capture && uv sync && uv run pytest. There's no CI in this repo to run it automatically, and I was unable to execute it in my sandbox — please run it locally before merge. I validated structure, JSON, bash syntax, and the plugin manifest statically.
  • Secrets are scrubbed before any model call and again before any disk write.

🤖 Generated with Claude Code

Repackage claude-vault-capture as a Claude Code marketplace plugin under
skills/claude-vault-capture/. It auto-captures Claude Code sessions into an
Obsidian vault on SessionEnd (scrub secrets → summarize with Sonnet → write a
curated note to Inbox/auto/) and ships the /vault-save skill for on-demand
exports to claude-docs/.

Adapted from https://github.com/lhoupert/claude-vault-capture (MIT, © Loïc
Houpert). Changes made for marketplace distribution:

- plugin.json with userConfig (vault path + sensitive API/OAuth tokens) replaces
  install.sh's interactive prompt and capture.env.
- hooks/hooks.json registers the SessionEnd hook via ${CLAUDE_PLUGIN_ROOT},
  replacing the manual settings.json edit.
- vault-save becomes skills/vault-save/SKILL.md; its auto-trigger lives in the
  skill description, so the old global CLAUDE.md injection is gone.
- curate.py carries PEP 723 inline deps and the hook launches it with `uv run`
  (subscription mode adds claude-agent-sdk via `uv run --with`), so there is no
  separate `uv sync` step. A pre-built .venv is still preferred when present, so
  standalone/dev use and the existing test suite are unchanged.
- Runtime state (dedup index, logs) moves to ${CLAUDE_PLUGIN_DATA} via
  CAPTURE_STATE_DIR / SCRUB_FAILURES_PATH, surviving plugin updates.
- LICENSE and a provenance note are preserved; the pytest suite travels along.

Register the plugin in marketplace.json and list it in the README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@alukach alukach requested a review from lhoupert June 8, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants