From 463a04510eda743eea8079af9ea410076286d388 Mon Sep 17 00:00:00 2001 From: Connor Rhodes Date: Sun, 19 Apr 2026 01:35:43 +0000 Subject: [PATCH] Create book-list skill for managing reading list in MongoDB --- _skill-index.md | 7 ++ book-list/SKILL.md | 160 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 book-list/SKILL.md diff --git a/_skill-index.md b/_skill-index.md index 1275708..ee97331 100644 --- a/_skill-index.md +++ b/_skill-index.md @@ -30,6 +30,7 @@ description: Master index of all skills in your robot assistant system. Your ass | "proofread this," "proofread my email," "clean up this dictation," "polish this email" | **proofread-business-writing** | | "polish my LinkedIn post," "clean up my LinkedIn draft," "turn this into a LinkedIn post," "edit my LinkedIn post" | **linkedin-post** | | "use mongodb," "query my database," "add to mongo," "mongo," "database," "docdb" | **mongodb** | +| "add this to my book list," "add to my books," "what's on my reading list," "show me my to-read books" | **book-list** | --- @@ -143,6 +144,12 @@ description: Master index of all skills in your robot assistant system. Your ass **File:** `skills/mongodb/SKILL.md` **Dependencies:** Python with `pymongo`, `uv` CLI for dependency management +### Book List +**Purpose:** Manage a personal reading list stored in MongoDB. Add books, update status, query by tag/author/status, manage reading progress. +**Triggers:** "add this to my book list," "add to my books," "what's on my reading list," "show me my to-read books," "mark [book] as reading/completed" +**File:** `skills/book-list/SKILL.md` +**Dependencies:** mongodb skill (for database operations) + --- ## Adding New Skills diff --git a/book-list/SKILL.md b/book-list/SKILL.md new file mode 100644 index 0000000..20d1217 --- /dev/null +++ b/book-list/SKILL.md @@ -0,0 +1,160 @@ +--- +name: book-list +description: 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. +version: 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: + +```json +{ + "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: +```python +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: + +```python +# 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 + +```python +books.update_one( + {"title": "Book Title"}, + {"$set": {"status": "reading"}} +) +``` + +### Update Tags + +```python +books.update_one( + {"title": "Book Title"}, + {"$set": {"tags": ["new", "tag", "list"]}} +) +``` + +### Delete a Book + +```python +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]"