Book Librarian
/install book-librarian
Book Librarian
Use when the user asks about books, reading recommendations, what to read next, or wants to update their reading tracker.
Initialization
Only runs if files are missing. Existing users skip this entirely.
When ANY book-related trigger fires:
- Check if
books/books_library.csvexists - Check if
books/books_wishlist.csvexists - Check if
memory/library.mdexists - If any are missing:
- Ask: "Your reading tracker isn't set up yet. Want me to create it?"
- If no: say "No problem. Just ask again when you're ready." and stop.
- If yes:
- Create
books/directory if missing - Create missing CSVs with headers:
Read,Title,Author - Copy
templates/library.mdtomemory/library.mdif missing - Ask: "Want to fill in your taste profile and mood map now, or come back to it later?"
- If now: ask one question at a time (genres, mood map) and write answers to
memory/library.md - If later: say "Got it. I'll use what I learn from your recommendations to fill it in over time."
- Create
- Proceed with the triggered workflow.
Files
books/books_library.csv— owned books. Columns:Read(Y/blank),Title,Authorbooks/books_wishlist.csv— wanted books. Columns:Title,Authormemory/library.md— taste profile, mood map, reading notes, patternstemplates/library.md— starter template for new users (copied tomemory/library.mdon init)
Triggers
- "What should I read?"
- "Recommend a book"
- "I finished..." / "I started..."
- "Add to wishlist" / "Move to library"
- "What's on my wishlist?"
- "I bought..."
- "Mark as read"
Workflows
Recommendation Priority Rules
Default order for all recommendations: library → wishlist → new
- Library first — Check
books/books_library.csvfor unread books (Read != Y) - Wishlist second — Check
books/books_wishlist.csvfor wanted books - New last — Only search for and recommend books not in either file
Recommend what to read next
- Check
library.mdfor current book and estimated finish - Ask or read stated mood if not provided
- Check
books/books_library.csvfor unread books (Read != Y) — suggest from library first - If no good match in library, check
books/books_wishlist.csv - If still no match, search for new books not in either CSV
- Match mood to
library.mdmood map
Recommend new books (not in CSVs)
- Read
library.mdtaste profile and reading patterns - Read
books/books_library.csvandbooks/books_wishlist.csvto avoid duplicates - Search web for books matching taste + not already in either file
- Return 2-3 recommendations with why they fit
Recommend for a specific mood or genre
- Match mood/genre to
library.mdmood map - Check
books/books_library.csvfor unread books matching the mood — suggest from library first - If no good match, check
books/books_wishlist.csv - If still no match, search for new books
- Reference the mood explicitly ("Since you wanted something gothic...")
Mark as read
- Read
books/books_library.csv— setRead= Y for matching Title/Author - Append one-line note to
library.mdunder## Reading Logwith date + brief thought/rating - If part of a series, update series progress in
library.md
Move wishlist → library
- Read
books/books_wishlist.csvandbooks/books_library.csv - Append book to
books/books_library.csvwith Read = blank - Remove from
books/books_wishlist.csv - Update
library.mdacquisition queue if present
Response Style
- NO SPOILERS. Never reveal plot points, twists, endings, or character fates. Hooks and premise only.
- Keep recommendations brief: title, author, one-line hook, why it fits the user
- Never recommend books already in either CSV
- For mood-based picks, reference the mood explicitly ("Since you wanted something gothic...")
- When updating CSVs, confirm the change with exact title/author
- Check library first: before recommending, verify the book is not in
books_library.csvorbooks_wishlist.csv
Taste Drift
If the user mentions loving/hating a book outside the normal pattern, append a note to library.md taste profile. This is how the system learns.
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install book-librarian - After installation, invoke the skill by name or use
/book-librarian - Provide required inputs per the skill's parameter spec and get structured output
What is Book Librarian?
Manage reading life: recommend books, track reads, move wishlist to library, and suggest what to read next based on mood. It is an AI Agent Skill for Claude Code / OpenClaw, with 20 downloads so far.
How do I install Book Librarian?
Run "/install book-librarian" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Book Librarian free?
Yes, Book Librarian is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Book Librarian support?
Book Librarian is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Book Librarian?
It is built and maintained by Bobby McMillen (@perplexingperfectionist); the current version is v1.0.1.