plugins/epub-plugin/skills/SKILL.md
Summarize every chapter of an epub or ibooks book into a markdown file. Use when the user wants to summarize an epub, ibooks, or ebook.
npx skillsauth add memfrag/apparata-plugins summarize-epubInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are summarizing an epub/ibooks book. The book lives in a directory with the extension .epub or .ibooks.
The target epub directory is: $ARGUMENTS
If a path argument was provided, use it directly and skip to Step 1.
If no argument was provided, first check the current working directory and its immediate parent for .epub or .ibooks directories. If you find one or more, ask the user which one to summarize (or proceed directly if there's only one).
If no epub/ibooks directories are found nearby, ask the user whether they'd like you to search in the Apple Books library. If they say yes:
The Apple Books data directory is located at:
~/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books
In that directory there is a file called Books.plist. It is a binary plist. To read it, run:
plutil -p ~/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books/Books.plist
This outputs the contents in a JSON-like human-readable format.
The output contains an array of book entries. Each book entry has:
"itemName" — the display name / title of the book"path" — the filesystem path to the actual epub fileAsk the user for the name (or partial name) of the book they want summarized. Then search the plutil output for entries whose "itemName" contains a case-insensitive match of what the user typed. If there are multiple matches, present them and let the user choose. If there is exactly one match, confirm it with the user.
Use the "path" value from the matched entry as the epub directory path. Note: the path may point to a .epub file or directory. If it's a zip file, you'll need to find the extracted directory or work with the path as-is if it's already a directory.
If the Apple Books directory doesn't exist or the plist can't be read, let the user know and ask them to provide a path manually.
Inside the epub directory, find the content directory. It is typically named OEBPS or OPS. Use Glob to find it:
<epub-dir>/OEBPS/
<epub-dir>/OPS/
If neither exists, look for any directory containing .xhtml or .opf files.
Try these approaches in order to determine chapter order and titles:
content.opfLook for a content.opf or *.opf file in the content directory. Read it. It contains:
<metadata> — book title (<dc:title>) and author (<dc:creator>)<manifest> — list of all files with IDs and hrefs<spine> — the reading order of content items (references manifest IDs via idref)Use the spine to determine which xhtml files to read and in what order. Cross-reference spine idref values with manifest id values to get file paths.
toc.xhtml or toc.ncxIf the OPF file is missing or unhelpful:
toc.xhtml (EPUB3): Look for <nav epub:type="toc"> containing an <ol> with <li><a href="...">Chapter Title</a></li> entries.toc.ncx (EPUB2): Look for <navMap> containing <navPoint> entries with <text> (title) and <content src="..."/> (file path).If no structural metadata is available, use Glob to find all .xhtml files in the content directory. Sort them by name (they're typically named sequentially like chapter-001.xhtml, chapter-002.xhtml, etc. or ch01.xhtml, ch02.xhtml, etc.). Read each file's <title> tag and <h1>/<h2> headings to determine chapter titles.
Extract from the OPF metadata, the title page xhtml file, or the first xhtml file that contains a book title.
Read every content xhtml file identified in Step 2, in reading order. Skip files that are purely structural (stylesheets, images, fonts) or contain no substantive text (e.g., a bare title page with only a title and author name, or a table of contents page).
For each chapter or section that contains substantive content:
IMPORTANT: Write the complete summary to a markdown file named book-summary.md in a directory of the user's choosing. Prompt for the path, but default to the current working directory.
Format the file as follows:
# <Book Title> — by <Author>
**Subtitle:** *<subtitle if available>*
---
## <Section/Chapter Title>
<Verbose summary paragraphs>
---
## <Next Section/Chapter Title>
<Verbose summary paragraphs>
...
Use --- horizontal rules between chapters for visual separation. Use ## for chapter headings. Use ### for sub-sections within a chapter summary only if the chapter is very long and covers clearly distinct topics.
development
Extract timestamped transcripts from WWDC session videos. Use this skill whenever the user wants to read, search, or get the transcript of a WWDC session or Apple developer video — even if they just say something like "what did they say about concurrency in that talk" or "get me the transcript for session 230". Also use this when the user provides a developer.apple.com/videos URL and wants to know what the video covers.
testing
Download WWDC session videos in HD or SD quality. Use this skill whenever the user wants to download a WWDC video, save a session video to disk, or get the video file for a specific WWDC talk. Supports lookup by URL, session ID (e.g. "wwdc2025/230"), session number, or title. Also use when the user says things like "download the AlarmKit session" or "grab the HD video for session 287".
development
Fetch the WWDC session catalog from Apple's CDN by extracting the catalog URL from the Developer.app's WWDCCore binary. Use this skill whenever the user asks about WWDC sessions, WWDC videos, WWDC catalog, Apple developer conference content, or wants to browse, search, list, or look up any WWDC session or talk — even if they just say something like "what sessions are there about SwiftUI" or "find me that WWDC video about concurrency". Also use this when the user wants to download or work with WWDC session metadata.
tools
Generate a blog-post-style HTML page from a WWDC session, interleaving transcript text with slide screenshots. Use when the user wants to create a blog post, readable page, or visual summary from a WWDC talk — e.g. "create blog post from WWDC session 230", "generate HTML for that WWDC talk", "make a readable version of the AlarmKit session".