assistant-skills/book-list/SKILL.md

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 fiction or nonfiction
  • 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:

  1. If the user provides only the title, search for the book online to get: author, genre, and a summary
  2. Ask the user for status (default: to_read) if not specified
  3. Generate 5-10 relevant tags based on the book's content and author
  4. Show the user the tags you've suggested and ask if they want to add, remove, or modify any
  5. Insert the document into lists.books collection
  6. 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]"