Install
$ agentstack add skill-ryanlyn-readwise-skill-readwise-reader ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Readwise Reader Skill
Use this skill to script workflows against the Readwise Reader product (saved articles, feeds, PDFs, newsletters).
Quick start
- Generate a token from https://readwise.io/access_token and store it in
READWISE_TOKEN. - Call
uv run --project ${CLAUDE_PLUGIN_ROOT} python ${CLAUDE_PLUGIN_ROOT}/skills/readwise-reader/scripts/reader_client.py ...whenever possible; it handles retries,.generatedtagging, and--dry-runagainst the/api/v3endpoints. - Respect Reader's tighter rate limits (20 req/min). The CLI surfaces remaining budget whenever headers are present; throttle accordingly.
Example workflows
- "Save this article to Reader for later" — uses
docs createwith a URL - "Show me what's new in my Reader inbox" — uses
docs list --category new - "Archive everything I've finished reading this week" — uses
docs pull+docs update --state archive
CLI commands
uv run --project ${CLAUDE_PLUGIN_ROOT} python ${CLAUDE_PLUGIN_ROOT}/skills/readwise-reader/scripts/reader_client.py docs create --url [--title ... --summary ... --location later --tags ... --labels ... --generated --dry-run]– creates a document via URL or raw HTML (--content). Use--locationto set where it lands (defaults tolater). Reader API v3 does not support uploading local files directly.... docs list [--location later] [--category article] [--tag deep-work] [--limit 25] [--id ] [--with-content]– paginated document listing. Defaults to--location later. Use--idto fetch a single document. Use--with-contentto includehtml_content(article text, video transcripts).... docs update [--state archive --tags "deep,focus" --title ...]– patch metadata/state (new,later,archive). Supports--dry-run.... docs pull --since 2026-02-01– fetches documents updated since a timestamp for recap/triage workflows.... auth validate– confirms your token works by hitting the/api/v2/auth/endpoint.
Locations vs categories
Locations describe where a document sits in your reading workflow:
new— inbox, freshly added items awaiting triagelater— saved for later reading (the default fordocs list)shortlist— prioritized for near-term readingarchive— finished or dismissedfeed— RSS/feed items not yet triaged
Categories describe the content type:
article,email,rss,highlight,note,pdf,epub,tweet,video
When a user asks for their "inbox" or "reading list", query --location later (the default). Use --location new only when specifically checking for untriaged items.
Default output is human-readable markdown with only key fields. Use --raw to get full JSON with all fields.
Fetching content & transcripts
Use --with-content to retrieve the full html_content field, which contains:
- Articles: full article text as HTML
- Videos: auto-generated transcript (for YouTube videos with captions)
- PDFs/EPUBs: extracted text content
This is disabled by default to keep responses fast. When you need to analyze, summarize, or extract quotes from a document, fetch it by ID with content:
... docs list --id --with-content --raw
Data guidance
- Generated entries: set
--generatedwhen saving synthetic journal entries or agent summaries. The CLI appends.generatedto tags (and labels, when provided) so they are searchable in Reader. - Source inputs: prefer
--urlwhen the content exists online. Use--contentfor local snippets; Reader API v3 does not expose the legacy upload flow, so convert PDFs to shareable URLs before saving. - Metadata: Reader tolerates arbitrary tags/labels, so lean on them for downstream automations (e.g.,
.journal,.deepread). Avoid overloadingsummarywith custom formats—store structured metadata in labels/tags instead. - Dry runs:
--dry-runprints the payload without hitting the API. Dry-run output always shows the full payload (no field filtering).
Scripts
${CLAUDE_PLUGIN_ROOT}/skills/readwise-reader/scripts/reader_client.py: CLI covering document create/list/update/pull plus token validation against Reader API v3. Integrates with shared utilities from${CLAUDE_PLUGIN_ROOT}/readwise_common/.- Shared helpers live in
${CLAUDE_PLUGIN_ROOT}/readwise_common/(auth, HTTP retries, tag/location utilities); import from there when extending functionality to keep behavior consistent.
Testing & validation
- Use
uv run --project ${CLAUDE_PLUGIN_ROOT} python -m compileall ${CLAUDE_PLUGIN_ROOT}/skills/readwise-reader ${CLAUDE_PLUGIN_ROOT}/readwise_commonbefore shipping changes. - Smoke-test live calls (token required) with
docs create --dry-run,docs list --limit 5, anddocs pull --sinceto confirm pagination + tagging rules.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ryanlyn
- Source: ryanlyn/readwise-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.