Shelf find
Search the user's saved tool library before recommending or choosing any tool, library, service, vendor, or technique. USE THIS AGGRESSIVELY — the user rarely asks for it by name. Trigger on "what should I use for", "do I have anything saved about", "I need a tool that", "how do I approach", "any recommendations for", "is there something that does", "what's good for", "which library", "how should I build" — AND on any moment where the user is evaluating, comparing, or picking a tool/service/approach for a task, even with zero mention of saved links, notes, or a library. If the user is about to pick something, check here first. Under-triggering is the main failure mode; when in doubt, run it.From its SKILL.md
npx -y skills add Ranveersingh1113/shelf-skills --skill shelf-findAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 22 days oldThe repository was created 22 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.2 KB, 849 tokens by cl100k_base, as published. Nobody here has run it
shelf-find
Read-only search of the user's saved tool library.
This skill must never write anything. No notes, no index, no inbox, no config file. Read only.
Step 0 — find the library
Read ~/.tool-library-path (in the user's home directory). It holds one line:
the library folder. Call it <LIB>. Notes live in <LIB>/notes/.
If the file is missing, the library was never set up. Say so, and tell the
user to run shelf-save to set it up. Do not create it here and do not guess a
path.
Run
- Restate the need in one line — including constraints you inferred from the surrounding conversation, not just the literal question. Stage, budget, existing stack, language, self-host vs SaaS. Say what you inferred so the user can correct a wrong assumption before it skews the ranking.
- Map to 2–3 likely categories from:
dev-toolai-agentmarketingdesigndatafundraisingopsresearchreadingother. This is a starting set the user is free to edit; if they change it, the same list inshelf-savemust match, or notes land under a category recall never looks for. The list guides the search — it doesn't limit what you may find. - Search the notes by content. Plain text search, not vectors — the corpus
is a few hundred small files. Use whatever search your harness gives you
(
Grepin Claude Code,grep -rin a shell, file search elsewhere).- by category: lines matching
^category: dev-tool - by tag: lines matching
tags:.*email - the high-signal move — dump every line matching
^problem_solved:across all notes and scan them. Those lines are written as problems, which is the shape of the question. Usually the fastest path, and cheaper than guessing keywords. - Search several phrasings. The note was written months ago in different
words than today's problem: literal term (
websocket), problem shape (realtime,push,subscription), adjacent tech.
- by category: lines matching
- Read the top ~10 candidates in full. Never report on search hits alone — a filename or tag match tells you nothing about whether the thing fits.
- Return 3–5 ranked picks. Each one:
- Tool name + URL
- One line: why this fits this specific situation. Not a description of the product — a connection to the constraints from step 1. If you can't write that line without being generic, the note doesn't belong in the list.
- Pricing + maturity
- One honest caveat
- Close with the single strongest pick and a one-sentence reason.
Guardrails — non-negotiable
- Nothing genuinely matches → say "Nothing in your library covers this." Then offer a fresh web search as a clearly-labelled separate step the user opts into. Do not stretch a weak match to fill out the list. A library the user stops trusting is worse than no library — one bad recommendation costs more than ten honest misses.
- Fewer real hits beat more maybes. Two is a fine answer.
- Flag
confidence: lownotes explicitly as unverified — that note was built from a search result, not the actual page. - Never recommend something not in the library while implying it was saved. If you add outside knowledge, label it clearly as not-from-the-library.
- Library is thin or empty → say that. "Nothing saved yet" and "nothing relevant" are different answers and the user needs to know which one they got.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.