Use when the user wants to find a past vibing.nvim conversation by topic — phrases like "前に〜について聞いたことあったっけ", "did we talk about X before", "find that chat where I asked about Y". Searches every chat file under .vibing/chat/ (both User and Assistant content) for a natural-language query, narrows candidates with grep, then reads and semantically judges the survivors before presenting matches. Not for recovering this conversation's own lost context — use vibing-chat-recall for that.
Scanned 8/31/2026
Install to Claude Code
npx -y skills add shabaraba/vibing.nvim --skill vibing-chat-search --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Vibing Chat Search?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/shabaraba-vibing-chat-search)More formats (shields.io, HTML) on the badges page.
---
name: vibing-chat-search
description: Use when the user wants to find a past vibing.nvim conversation by topic — phrases like "前に〜について聞いたことあったっけ", "did we talk about X before", "find that chat where I asked about Y". Searches every chat file under .vibing/chat/ (both User and Assistant content) for a natural-language query, narrows candidates with grep, then reads and semantically judges the survivors before presenting matches. Not for recovering this conversation's own lost context — use vibing-chat-recall for that.
---
# vibing-chat-search
Finds past vibing.nvim chat files relevant to a natural-language query, by grepping
`.vibing/chat/` for keyword candidates and then reading the survivors to judge actual relevance.
## When this applies
- The user asks something like "前に〜について聞いたことあったっけ" / "did we discuss X before" /
"find the chat where I asked about Y".
- Claude suspects a similar topic was covered in an earlier, different conversation.
- Invoked directly via `/vibing-chat-search`.
Not for re-reading _this_ conversation's own history after context loss — that's
`vibing-chat-recall`.
## Step 1: Locate the chat directory
Resolve `.vibing/chat/` relative to the git repository root:
```bash
git rev-parse --show-toplevel
```
Then check `<root>/.vibing/chat/` exists. If the repo has no `.vibing/chat/` directory (not a
git repo, or the directory is missing), fall back to `.vibing/chat/` relative to the current
working directory. If neither exists, tell the user no chat history was found and stop.
## Step 2: Build search keywords
From the user's natural-language query, extract 2-4 candidate keywords or short phrases,
including obvious synonyms/rephrasings — chat content is free-form Japanese or English prose,
not structured data, so a single literal substring rarely covers how the topic was actually
phrased.
Example: query "前にwebfetchのURL表示について話した?" → candidates: `webfetch`, `WebFetch`,
`URL表示`, `閲覧したurl`.
## Step 3: Narrow candidates with Grep
Search both User and Assistant content — don't restrict to `## User` sections only, since the
user's original phrasing may be vague while the topic keyword shows up clearly in Claude's own
reply.
Use the `Grep` tool with `path: ".vibing/chat"`, one call per keyword (or a regex alternation),
`output_mode: "files_with_matches"`. Union the results across all keywords into one candidate
list.
If the candidate list is larger than ~15 files, don't read them all — narrow further:
- Re-run with `output_mode: "count"` and keep only the files with the highest match counts, or
- Tighten the keyword list to more specific terms before re-searching.
## Step 4: Read candidates and judge relevance
Read each remaining candidate file (or just the matched region with `-C` context via `Grep`'s
content mode, for longer files) and judge whether it's actually about what the user is asking —
a keyword hit alone isn't enough; discard files where the match is incidental or off-topic.
## Step 5: Present results
For each file that survives judging, list:
- File path (relative to repo root)
- Date/time — prefer the `created_at` field from the file's YAML frontmatter; fall back to
parsing the timestamp out of the filename (e.g. `chat-20260208-211227-...`) if frontmatter is
missing
- A 1-2 line summary of the relevant part
Present this as a plain list. Don't pick a single "best" match, don't suggest a command to open
one, and don't summarize beyond the 1-2 lines per file — opening the file is left to the user.
If nothing survives Step 4, say plainly that nothing was found rather than forcing a weak match.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!