$npx -y skills add readwiseio/readwise-skills --skill build-personaBuild a personalized reading profile from your Readwise Reader data, used by triage, quiz, and other skills
| 1 | You are building a reader persona for the user based on their Readwise Reader library. This persona file is used by other skills (triage, quiz, etc.) to personalize their experience. |
| 2 | |
| 3 | ## Readwise Access |
| 4 | |
| 5 | Check if Readwise MCP tools are available (e.g. `mcp__readwise__reader_list_documents`). If they are, use them throughout (and pass this context to the subagent). If not, use the equivalent `readwise` CLI commands instead (e.g. `readwise list`, `readwise read <id>`, `readwise search <query>`, `readwise highlights <query>`). The instructions below reference MCP tool names — translate to CLI equivalents as needed. |
| 6 | |
| 7 | ## Welcome |
| 8 | |
| 9 | Open with a brief introduction: |
| 10 | |
| 11 | > **Build Persona** · Readwise Reader |
| 12 | > |
| 13 | > I'll analyze your reading history — saves, highlights, and tags — and build a `reader_persona.md` profile in the current directory. Other skills (triage, quiz) will use this to personalize their output to you. |
| 14 | > |
| 15 | > I'll start with a quick pass (~1-2 min) and then you can decide if you want a deeper analysis. |
| 16 | |
| 17 | ## Process |
| 18 | |
| 19 | **IMPORTANT:** This skill involves fetching a lot of data. To keep the main conversation context clean, launch a **Task subagent** to do all the heavy lifting. |
| 20 | |
| 21 | ### Phase 1: Quick Pass |
| 22 | |
| 23 | The subagent should do a focused scan to build a solid initial persona fast: |
| 24 | |
| 25 | 1. **Gather data.** Run ALL of these in parallel (one batch of tool calls): |
| 26 | |
| 27 | - **4 highlight searches:** `mcp__readwise__readwise_search_highlights` with 4 broad queries (e.g. "ideas strategy product", "learning technology culture", "writing craft creativity", "business leadership growth") with `limit=50` each. These are semantic/vector searches so broad multi-word queries work well. Highlights are cheap and high-signal — cast a wide net. |
| 28 | - **4 document lists:** `mcp__readwise__reader_list_documents` from each non-feed location: `location="new"`, `location="later"`, `location="shortlist"`, and `location="archive"` with `limit=100` each. If the combined results are very sparse (< 20 docs total), also try without a location filter or with `location="feed"` as a fallback. Only fetch metadata: `response_fields=["title", "author", "category", "tags", "site_name", "summary", "saved_at", "published_date"]`. Do NOT fetch full content. |
| 29 | - **Tags:** `mcp__readwise__reader_list_tags` to understand their organizational system. |
| 30 | |
| 31 | 2. **Parse results efficiently.** The JSON responses from document lists can be large (25k+ tokens). Do NOT try to read them with the Read tool — it will hit token limits and waste retries. Instead, use a single Bash call with a python3 script to extract and summarize all the data at once. The script should parse all result files together and output: |
| 32 | - Document counts by category |
| 33 | - Top 20 sites, authors, and tags |
| 34 | - Save velocity by month |
| 35 | - All docs saved in the last 3 weeks (title, category, author, date) |
| 36 | - A representative sample of highlight texts with their source titles/authors |
| 37 | |
| 38 | 3. **Write the persona.** Write `reader_persona.md` to the current working directory with these sections: |
| 39 | |
| 40 | - **Identity & Role** — Who they appear to be (profession, role, industry) |
| 41 | - **Core Interests** — Top themes and topics, ranked by frequency and recency |
| 42 | - **Reading Personality** — How they read (saves a lot but reads selectively? highlights heavily? prefers short or long-form?) |
| 43 | - **Current Obsessions** — What they've been saving/reading most in the last 2-3 weeks |
| 44 | - **Goals & Aspirations** — What they seem to be working toward, inferred from patterns |
| 45 | - **Taste & Sensibility** — Thinkers and styles they gravitate toward (contrarian? practical? philosophical? technical?) |
| 46 | - **Anti-interests** — Topics notably absent or avoided |
| 47 | - **Triage Guidance** — Specific instructions for how to pitch documents to this person (e.g. "lead with practical applicability", "connect to their interest in X", "bar is high for AI content — flag when it's genuinely novel") |
| 48 | |
| 49 | 4. **Return** a brief summary (3-5 sentences) of the persona AND the absolute path to the file. |
| 50 | |
| 51 | **Subagent speed rules:** |
| 52 | - Do NOT call `readwise_list_highlights` — it often errors and is redundant with search. |
| 53 | - Do NOT try to Read large JSON tool-result files — parse them with python3 via Bash. |
| 54 | - Combine all analysis into ONE python script, not multiple sequential scripts. |
| 55 | - Maximize parallel tool calls. Every API fetch in step 1 should be a single parallel batch. |
| 56 | |
| 57 | ### Phase 2: Deep Pass (optional) |
| 58 | |
| 59 | After the quick-pass subagent returns, show the user the results and ask if they want a deeper analysis. If yes, launch a second subagent that: |
| 60 | |
| 61 | - Fetches 4-6 more highlight searches with *different, more specific* queries informed by what phase 1 found (e.g. if the persona shows interest in AI tooling, search "AI agents workflows automation"; if they read fiction, search "fiction narrative storytelling") wit |