4.8 KiB
4.8 KiB
| name | description | version |
|---|---|---|
| book-list | Manage a personal reading list stored in MongoDB. Use this skill whenever the user wants to add a book, query their reading list, update book status, or manage tags. | 1.0.0 |
Book List
Manage a personal reading list stored in MongoDB. Books are stored in the lists.books collection with standardized fields.
Database
- Database:
lists - Collection:
books
Book Schema
Each book document should have these fields:
{
"title": "Book Title",
"author": "Author Name",
"genre": "fiction|nonfiction",
"status": "to_read|reading|completed|dropped",
"summary": "Concise description of the book (from jacket/blurb/Goodreads)",
"tags": ["tag1", "tag2", "tag3"]
}
Field Details
- title (required): Full book title
- author (required): Author name
- genre (required): Either
fictionornonfiction - status (required): One of
to_read,reading,completed,dropped - summary (required): Concise description, typically from the book jacket, blurb, or Goodreads description. 1-3 sentences.
- tags (recommended): Array of relevant tags. See Tag Suggestions below.
Tag Suggestions
When adding a book, suggest 5-10 relevant tags based on the book's content. Categories to consider:
- Genre-specific: e.g.,
science-fiction,mystery,memoir,philosophy - Themes: e.g.,
suffering,transformation,mindfulness,redemption - Religious/Spiritual tradition: e.g.,
buddhism,christianity,vietnamese-zen,mysticism - Author (for frequently-read authors): e.g.,
thich-nhat-hanh,dostoevsky,tolkien - Movement/Period: e.g.,
existentialism,stoicism,modern-classic - Topics: e.g.,
meditation,ethics,psychology,history
Tag formatting: lowercase, hyphen-separated, no special characters. Examples: vietnamese-zen (not Vietnamese Zen), science-fiction (not sci-fi).
Dependencies
This skill depends on the mongodb skill for all database operations. Reference that skill for:
- Connection details and credentials
- How to run Python scripts with
uv run --with pymongo - Code patterns for inserting, updating, querying, and deleting documents
Always use the mongodb skill's patterns when interacting with the database.
Operations
Add a Book
When the user wants to add a book:
- If the user provides only the title, search for the book online to get: author, genre, and a summary
- Ask the user for status (default:
to_read) if not specified - Generate 5-10 relevant tags based on the book's content and author
- Show the user the tags you've suggested and ask if they want to add, remove, or modify any
- Insert the document into
lists.bookscollection - Confirm insertion and show the book's MongoDB document ID
Example insertion:
from pymongo import MongoClient
client = MongoClient("mongodb://root:3wwfoUjyk2E2zWELXFlLuHqfw1ALlOp4pb2H5Vq3TImbMIHL2h1u8Jej2mjzCPl@docdb.connorrhodes.com:35563")
db = client["lists"]
books = db["books"]
book = {
"title": "No Mud, No Lotus: The Art of Transforming Suffering",
"author": "Thich Nhat Hanh",
"genre": "nonfiction",
"status": "to_read",
"summary": "The secret to happiness is to acknowledge and transform suffering, not to run away from it.",
"tags": ["buddhism", "mindfulness", "suffering", "transformation", "spirituality", "meditation", "vietnamese-zen", "thich-nhat-hanh"]
}
result = books.insert_one(book)
print(f"Inserted: {result.inserted_id}")
client.close()
Query Books
Common queries:
# Get all books
for book in books.find():
print(f"{book['title']} - {book['status']}")
# Get books by status
for book in books.find({"status": "to_read"}):
print(book['title'])
# Search by tag
for book in books.find({"tags": "buddhism"}):
print(book['title'])
# Get books by author
for book in books.find({"author": "Thich Nhat Hanh"}):
print(book['title'])
Update Book Status
books.update_one(
{"title": "Book Title"},
{"$set": {"status": "reading"}}
)
Update Tags
books.update_one(
{"title": "Book Title"},
{"$set": {"tags": ["new", "tag", "list"]}}
)
Delete a Book
books.delete_one({"title": "Book Title"})
Guidelines
- Always show suggested tags before inserting — let the user confirm or modify
- Keep summaries concise (1-3 sentences) — copy from jacket/Goodreads rather than writing your own
- Use lowercase, hyphen-separated tags
- When querying, use
.limit()if results might be large - Always close the MongoDB client after operations
- Clean up temporary Python scripts after running
Triggers
- "add this to my book list"
- "add [book title] to my books"
- "what's on my reading list"
- "show me my to-read books"
- "mark [book] as reading/completed"
- "update my book list"
- "add tags to [book]"