Create book-list skill for managing reading list in MongoDB

This commit is contained in:
Connor Rhodes 2026-04-19 01:35:43 +00:00
parent e487b28c44
commit 463a04510e
2 changed files with 167 additions and 0 deletions

View file

@ -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** | | "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** | | "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** | | "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` **File:** `skills/mongodb/SKILL.md`
**Dependencies:** Python with `pymongo`, `uv` CLI for dependency management **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 ## Adding New Skills

160
book-list/SKILL.md Normal file
View file

@ -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]"