Create book-list skill for managing reading list in MongoDB
This commit is contained in:
parent
e487b28c44
commit
463a04510e
2 changed files with 167 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
160
book-list/SKILL.md
Normal file
160
book-list/SKILL.md
Normal 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]"
|
||||
Loading…
Add table
Add a link
Reference in a new issue