Skip to content
Back to skills

Obsidian Search

ASecurity

Search past Claude session logs and captures in the Obsidian vault. Use when someone says "find my notes about X", "search obsidian", "what did I log about X", "find that capture", "look up session from last week", "search my Claude notes". Returns matching entries with excerpts and wikilink references. Read-only.

  • 7 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 13, 2026
ai-agentsgoshellbashapi

Works with

  • claude code
  • cli
  • api

Security analysis

A100/100

Scanned October 13, 2026

npx -y skills add chuckplayer/claude-agent-pack --skill obsidian-search --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Obsidian Search?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Obsidian Search
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chuckplayer-obsidian-search/badge)](https://www.skillsdirectory.com/skills/chuckplayer-obsidian-search)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: obsidian-search
description: >
  Search past Claude session logs and captures in the Obsidian vault. Use when
  someone says "find my notes about X", "search obsidian", "what did I log
  about X", "find that capture", "look up session from last week", "search my
  Claude notes". Returns matching entries with excerpts and wikilink references.
  Read-only.
---

# Obsidian Search

Search everything Claude has logged in your vault. Results are scoped to the
current project by default — pass `--global` (or ask "search all projects") to
search the entire vault.

## Step 1 — Check configuration

Read `OBSIDIAN_VAULT_PATH` from the environment:
- Bash: `bash -c 'echo $OBSIDIAN_VAULT_PATH'`
- PowerShell: `$env:OBSIDIAN_VAULT_PATH`

If empty, stop and tell the user:

> "OBSIDIAN_VAULT_PATH is not set. Re-run `install.sh` and provide your vault
> path when prompted, or add it manually to `~/.claude/settings.json` under
> the `env` key."

Also read:
- `OBSIDIAN_PROJECTS_FOLDER` (empty string if unset)
- `CLAUDE_PROJECT_DIR` (or fall back to current working directory)

## Step 2 — Determine search scope

**If the user passed `--global` or asked to search "all projects" / "everywhere":**
- Search scope: `<OBSIDIAN_VAULT_PATH>/Claude/**/*.md`
- If `OBSIDIAN_PROJECTS_FOLDER` is set, also include:
  `<OBSIDIAN_VAULT_PATH>/<OBSIDIAN_PROJECTS_FOLDER>/**/*.md`

**Default (project-first):**
- Compute `project_slug`: basename of `CLAUDE_PROJECT_DIR` (or cwd), lowercase,
  non-alphanumeric chars replaced with hyphens, max 30 characters.
- Use `OBSIDIAN_PROJECTS_FOLDER` if set, otherwise default to `Claude/Projects`.
- Search `<OBSIDIAN_VAULT_PATH>/<effective_folder>/<project_slug>/**/*.md`

If the project folder does not exist or returns no results, automatically fall
through to the global scope and note that you expanded the search.

## Step 3 — Get search term

If the user has not already provided a search term, ask:

> "What are you looking for?"

## Step 4 — Search

Use the Grep tool on the determined scope for the search term (case-insensitive).
For each matching file, read 3–5 lines of context around the match.

If there are more than 10 matching files, sort by most recently modified and
show only the top 10.

## Step 5 — Present results

For each match, show:

- **Wikilink** — relative to the vault root, no `.md` extension, forward slashes:
  `[[Projects/agent-pack/sessions/2026-05-14-1430-agent-pack]]`
- **Excerpt** — one line of match context
- **Type** — `session`, `capture`, `daily`, or `memory-snapshot`

If no matches are found in the project scope, try the global scope automatically.

If no matches found globally, say:

> "No results found for '<term>' in your Claude notes. Try a broader term, or
> note that session logs are written automatically when Claude Code stops (also
> `/obsidian-recap` and `/obsidian-capture` write notes you can search)."

## Step 6 — Open best match (optional)

If `OBSIDIAN_CLI_MODE` is `"rest-api"` and there are results, offer to open
the best match in Obsidian:

> "Would you like me to open the top result in Obsidian?"

If yes, compute the vault-relative path (forward slashes, URL-encoded), then call:

```bash
curl -sk "https://127.0.0.1:${OBSIDIAN_REST_API_PORT:-27124}/open/<url-encoded-vault-relative-path>"
```

## Gotchas

- Read-only. Never modify any vault files.
- Wikilinks must be relative to the vault root — strip the `OBSIDIAN_VAULT_PATH`
  prefix, convert backslashes to forward slashes, and remove the `.md` extension.
- If there are many matches (more than 10), show the 10 most recently modified
  files first.
- Memory snapshot files (`memory-snapshot.md`) can also contain useful context —
  include them in search results.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.