$npx -y skills add readwiseio/readwise-skills --skill book-reviewDraft a long-form book review from your Reader highlights — synthesizing the book with your broader reading history to generate original arguments
| 1 | Draft a long-form book review from a user's Reader highlights — not just the target book, |
| 2 | but pulling in related highlights from their entire library to build original arguments. |
| 3 | |
| 4 | The goal is a review that's more interesting than the book itself: summary + critique + original ideas, |
| 5 | where the original ideas come from connecting the book to everything else the user has read. |
| 6 | |
| 7 | ## Readwise Access |
| 8 | |
| 9 | Check if Readwise MCP tools are available (e.g. `mcp__readwise__reader_list_documents`). If they are, use them throughout. If not, use the equivalent `readwise` CLI commands instead (e.g. `readwise list`, `readwise read <id>`, `readwise highlights <id>`, `readwise search <query>`). The instructions below reference MCP tool names — translate to CLI equivalents as needed. |
| 10 | |
| 11 | ## Setup |
| 12 | |
| 13 | 1. **Check for persona file.** Read `reader_persona.md` in the current working directory if it exists. Use it to understand the user's interests, reading goals, and voice — this shapes the review's framing, what connections to prioritize, and what the user is likely to care about. If no persona file exists, proceed without it and ask the user about their purpose for reading the book if it's not obvious from their highlights. |
| 14 | |
| 15 | 2. **Parse the argument** as a book title or search term. |
| 16 | |
| 17 | ``` |
| 18 | /book-review Merchant Kings |
| 19 | /book-review 7 Powers |
| 20 | ``` |
| 21 | |
| 22 | --- |
| 23 | |
| 24 | ## Phase 1: Pull the Book's Highlights |
| 25 | |
| 26 | ### 1.1 Find the book |
| 27 | |
| 28 | Search Reader for the target book: |
| 29 | |
| 30 | ``` |
| 31 | mcp__readwise__reader_search_documents(query="[book title]", category_in=["epub", "pdf"]) |
| 32 | ``` |
| 33 | |
| 34 | If no results, broaden to all categories. If multiple matches, list them and ask the user to pick. |
| 35 | |
| 36 | ### 1.2 Get highlights |
| 37 | |
| 38 | ``` |
| 39 | mcp__readwise__reader_get_document_highlights(document_id="[book_id]") |
| 40 | ``` |
| 41 | |
| 42 | Read every highlight. Count them. If fewer than 10, warn the user — may not be enough material |
| 43 | for a substantive review. Ask whether to proceed or wait. |
| 44 | |
| 45 | ### 1.3 Get the full document details |
| 46 | |
| 47 | ``` |
| 48 | mcp__readwise__reader_get_document_details(document_id="[book_id]") |
| 49 | ``` |
| 50 | |
| 51 | Pull title, author, summary, cover image. You'll need these for the final output. |
| 52 | |
| 53 | --- |
| 54 | |
| 55 | ## Phase 2: Extract Claims |
| 56 | |
| 57 | Process every highlight into an atomic claim. This is the step that turns |
| 58 | "I highlighted this paragraph" into structured, searchable research material. |
| 59 | |
| 60 | For each highlight: |
| 61 | |
| 62 | 1. Read the highlighted text and any user note/annotation |
| 63 | 2. Write a single present-tense declarative claim (under 10 words when possible) |
| 64 | 3. If the user left a note, weight the claim toward what the note focused on |
| 65 | |
| 66 | **Claim quality standards:** |
| 67 | |
| 68 | Good claims are specific, searchable facts or assertions: |
| 69 | - "chimney sweeps died of scrotal cancer from coal soot" |
| 70 | - "Ottoman harem trained slave girls as elite bureaucrats" |
| 71 | - "monsoon winds enabled global maritime trade" |
| 72 | |
| 73 | Bad claims are vague or generic: |
| 74 | - "coal mining had health consequences" |
| 75 | - "the author discusses Ottoman succession" |
| 76 | - "interesting point about slavery" |
| 77 | |
| 78 | **After processing all highlights**, review the full list. Reject and rewrite any that are: |
| 79 | - Generic/boring ("author discusses X") |
| 80 | - Duplicative (two claims saying the same thing differently — consolidate) |
| 81 | - Vague (doesn't stand alone without reading the highlight) |
| 82 | |
| 83 | Store the claims as a working list grouped by theme. This becomes your outline. |
| 84 | |
| 85 | --- |
| 86 | |
| 87 | ## Phase 3: Search the Library for Related Material |
| 88 | |
| 89 | This is what makes the review more than a summary. For each major theme cluster |
| 90 | from Phase 2, search the user's full Reader library for related content. |
| 91 | |
| 92 | ### 3.1 Theme-based searches |
| 93 | |
| 94 | For each theme cluster (aim for 3-6 themes): |
| 95 | |
| 96 | ``` |
| 97 | mcp__readwise__reader_search_documents(query="[theme keywords]", limit=20) |
| 98 | ``` |
| 99 | |
| 100 | Pull highlights from the top hits: |
| 101 | |
| 102 | ``` |
| 103 | mcp__readwise__reader_get_document_highlights(document_id="[related_doc_id]") |
| 104 | ``` |
| 105 | |
| 106 | You're looking for: |
| 107 | - **Supporting evidence** from other sources that strengthens a claim |
| 108 | - **Contradictions** that complicate the book's argument |
| 109 | - **Parallel examples** from different domains (the user read about X in biology, the book says the same about economics) |
| 110 | - **The user's own prior thinking** visible in their notes/annotations on related docs |
| 111 | |
| 112 | ### 3.2 Author search |
| 113 | |
| 114 | ``` |
| 115 | mcp__readwise__reader_search_documents(query="[book author name]") |
| 116 | ``` |
| 117 | |
| 118 | Check if the user has read other work by the same author. Prior context enriches the review. |
| 119 | |
| 120 | ### 3.3 Extract related claims |
| 121 | |
| 122 | For each relevant highlight from a related document, extract a claim the same way |
| 123 | as Phase 2. Tag it with its source document so you can cite it properly. |
| 124 | |
| 125 | **Result:** You should now have: |
| 126 | - The book's claims (Phase 2), grouped by theme |
| 127 | - Related claims from the broader library (Phase 3), mapped to those same themes |
| 128 | - A sense of where the user's reading supports, complicates, or extends the book |
| 129 | |
| 130 | --- |
| 131 | |
| 132 | ## Phase 4: Supplement with Web Research |
| 133 | |
| 134 | Fill gaps that the |