Use when the user asks about books, reading recommendations, what to read next, or wants to update their reading tracker.
Only runs if files are missing. Existing users skip this entirely.
When ANY book-related trigger fires:
Check if books/books_library.csv exists
Check if books/books_wishlist.csv exists
Check if memory/library.md exists
If any are missing:
Ask: "Your reading tracker isn't set up yet. Want me to create it?"
If no: say "No problem. Just ask again when you're ready." and stop.
If yes:
books/ directory if missingRead,Title,Authortemplates/library.md to memory/library.md if missingmemory/library.mdProceed with the triggered workflow.
books/books_library.csv — owned books. Columns: Read (Y/blank), Title, Authorbooks/books_wishlist.csv — wanted books. Columns: Title, Authormemory/library.md — taste profile, mood map, reading notes, patternstemplates/library.md — starter template for new users (copied to memory/library.md on init)Default order for all recommendations: library → wishlist → new
books/books_library.csv for unread books (Read != Y)books/books_wishlist.csv for wanted bookslibrary.md for current book and estimated finishbooks/books_library.csv for unread books (Read != Y) — suggest from library firstbooks/books_wishlist.csvlibrary.md mood maplibrary.md taste profile and reading patternsbooks/books_library.csv and books/books_wishlist.csv to avoid duplicateslibrary.md mood mapbooks/books_library.csv for unread books matching the mood — suggest from library firstbooks/books_wishlist.csvbooks/books_library.csv — set Read = Y for matching Title/Authorlibrary.md under ## Reading Log with date + brief thought/ratinglibrary.mdbooks/books_wishlist.csv and books/books_library.csvbooks/books_library.csv with Read = blankbooks/books_wishlist.csvlibrary.md acquisition queue if presentbooks_library.csv or books_wishlist.csvIf the user mentions loving/hating a book outside the normal pattern, append a note to library.md taste profile. This is how the system learns.