Converts markdown to native reMarkable notebook files for direct cloud sync to your tablet.
Install
mkdir -p .claude/skills/rr-hiteshjoshi && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16408" && unzip -o skill.zip -d .claude/skills/rr-hiteshjoshi && rm skill.zipInstalls to .claude/skills/rr-hiteshjoshi
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Push markdown to a reMarkable tablet as a native handwriting-editable notebook. Use when the user wants to send notes, summaries, meeting recaps, research, or any reference doc to their reMarkable — including phrases like "save this for remarkable", "push to my tablet", "send these notes to remarkable", or any mention of `rr push`.Key capabilities
- →Convert markdown files into reMarkable v6 notebooks.
- →Upload generated notebooks via the device's cloud sync API.
- →Render markdown headings, paragraphs, and bullet lists as native typed text.
- →Embed tables as raster PNGs within notebook pages.
- →Split markdown content into multiple notebook pages using horizontal rules.
- →Report the UUID of the newly created document.
How it works
The skill converts a markdown file into a native reMarkable v6 notebook format and uploads it using the device's cloud sync API.
Inputs & outputs
When to use rr
- →Sending meeting recaps to tablet
- →Pushing research docs to reMarkable
- →Syncing summaries for portable reading
- →Uploading markdown notes as handwriting
About this skill
rr — Publish markdown as a native reMarkable notebook
rr is a Rust CLI that turns a markdown file into a native v6 reMarkable
notebook (the yellow-icon, handwriting-editable kind) and uploads it via
the device's cloud sync API. Works on any reMarkable account — Connect
not required. Headings, paragraphs, bullets, and prose render as native
typed text; tables render as raster PNGs embedded directly into the
notebook page.
The agent's job:
- Build a well-structured markdown file from the conversation.
- Run
rr push <file>. - Report the new document's UUID back.
When to use
Trigger on user phrases like: "send this to remarkable", "push to my
tablet", "save for reMarkable", "make a remarkable doc", "upload these
notes". Also trigger any mention of the rr command in an upload context.
Do not activate for: reading existing tablet content (this is a write path only), editing handwritten notes, or output that should remain in chat.
Commands
rr auth # one-time device pairing
rr status # check auth state
rr push <file.md> # push a markdown file as a native notebook
rr push <file.md> --title "Custom Name" # override the doc title
rr push <file.md> --device paper-pro # default; also: paper-pro-move, rm2
rr push - --title "From stdin" # read markdown from stdin
rr ls # list cloud documents
rr mkdir "Folder" # create a folder
rr rm <doc-uuid> # delete by id
There's also a hidden legacy command — rr connect-push — kept only as
a fallback to the older EPUB→cloud-convert pipeline. Don't use it unless
the user explicitly asks; push produces the same native notebook with
no cloud-side conversion.
What lands on the device
A push delivers a multi-page native notebook:
- Title comes from
--title, else the first# H1in the file, else the filename stem. - Pages are split on
---horizontal-rule lines. Each chunk becomes one page in the notebook. No---⇒ a single-page notebook. - Headings (
#,##,###) all render as the device's Heading style. - Paragraphs, bullet lists, nested bullets render as native typed text in the appropriate style (Plain / Bullet / Bullet2).
- Tables are rendered to PNG locally and embedded as image blocks below the prose on the page.
- Inline bold / italic / code survive as plain text (the v6 typed-text engine doesn't have inline emphasis on Paper Pro yet; the content arrives, just without the styling).
- Code blocks, images, footnotes are silently skipped today.
Authoring markdown for rr push
A clean structure produces the best on-device result:
# Document title
A short intro paragraph or two.
## First section
Body text. Lists work:
- bullet one
- bullet two
- nested bullet
- bullet three
A small data table:
| Item | Count |
|------|-------|
| pens | 12 |
| pads | 3 |
---
## Second page
More content. Pages split on `---` rules above.
A bigger table on a fresh page lets it claim more space:
| Quarter | Revenue | Notes |
|---------|---------|--------------------|
| Q1 | $1.2M | seed round closed |
| Q2 | $1.6M | first hires |
| Q3 | $2.1M | pricing change |
Style rules to follow
- English-only content. The device has no fallback fonts for CJK, Devanagari, etc. — non-Latin scripts render as tofu boxes.
- No emojis. They render as tofu too.
- Plain markdown tables. No HTML tables, no
<table>tags, no SVG. Tables are detected from|-separated rows + a|---|delimiter row. - Don't write tables in
<pre>blocks — they'll be skipped. - One H1 at the top. Use H2/H3 for sections.
- Use
---for page breaks when you want explicit page boundaries. A document with no---becomes a single (scrollable) page.
Device targeting
The default is paper-pro (Paper Pro, 1620×2160 drawable). Two other
options when the user has a different device:
--device paper-pro-move— Paper Pro Move (8″ color, ~954×1696)--device rm2— reMarkable 2 (10.3″, 1404×1872)
These set the page dimensions, text frame width, and image width caps to match the device's screen. Defaulting to paper-pro is fine when the user doesn't specify; ask only if they bring up a different device.
Output expectations
Successful rr push prints:
Building bundle 'Title' for PaperPro...
doc: <uuid> | pages: N | bytes to upload: M
Uploading via cloud sync v3...
✓ doc <uuid> (root gen <generation>)
Report the UUID back to the user. They can find the notebook in their device's Files view (top-level by default).
Error handling
not authenticated; run rr auth first— pair first viarr auth.token refresh failed— re-pair viarr auth.cloud returned 429— back off and retry; rr already retries internally.cloud returned 5xx— transient; same as above.- Anything else — print the error verbatim, suggest
rr -v push ...for full debug trace.
What's deliberately not supported (yet)
| Feature | Status | Why |
|---|---|---|
| Inline bold / italic | Renders as plain text | v6 typed-text inline formatting requires a multi-item CRDT layout that the device renders inconsistently |
Images via  | Skipped | Image embedding works for tables; arbitrary inline images need additional plumbing |
| Footnotes | Skipped | No native equivalent in v6 typed-text |
| Numbered lists | Collapse to bullets | v6 has no numbered-list style |
| Code blocks | Skipped | No monospace face on device typed-text |
| Non-Latin scripts | Renders as tofu | Device has no fallback fonts |
For unsupported content the agent should either omit it cleanly or rewrite it as prose / tables / bullets.
Mental model in three lines
- Build markdown that uses headings, paragraphs, bullets, and pipe tables.
- Run
rr push <file.md>. - The user opens the notebook on their device and can annotate it with the stylus on top of the native text.
When not to use it
- →Reading existing content from a reMarkable tablet.
- →Editing handwritten notes on the device.
- →Output that should remain within the chat interface.
Limitations
- →Inline bold/italic/code render as plain text.
- →Code blocks, images, and footnotes are skipped.
- →Non-Latin scripts and emojis render as tofu boxes.
How it compares
This workflow directly creates handwriting-editable notebooks on a reMarkable device, unlike manual methods that might involve cloud-side conversion or less native formats.
Compared to similar skills
rr side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| rr (this skill) | 0 | 2mo | Review | Beginner |
| obsidian-bases | 11 | 4mo | Review | Intermediate |
| video-transcript-downloader | 4 | 2mo | Review | Intermediate |
| obsidian-clipper-template-creator | 3 | 6mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
obsidian-bases
kepano
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
video-transcript-downloader
steipete
Download videos, audio, subtitles, and clean paragraph-style transcripts from YouTube and any other yt-dlp supported site. Use when asked to “download this video”, “save this clip”, “rip audio”, “get subtitles”, “get transcript”, or to troubleshoot yt-dlp/ffmpeg and formats/playlists.
obsidian-clipper-template-creator
davila7
Guide for creating templates for the Obsidian Web Clipper. Use when you want to create a new clipping template, understand available variables, or format clipped content.
obsidian-vault-ops
ballred
Read and write Obsidian vault files, manage wiki-links, process markdown with YAML frontmatter. Use when working with vault file operations, creating notes, or managing links.
baoyu-danger-x-to-markdown
JimLiu
Converts X (Twitter) tweets and articles to markdown with YAML front matter. Uses reverse-engineered API requiring user consent. Use when user mentions "X to markdown", "tweet to markdown", "save tweet", or provides x.com/twitter.com URLs for conversion.
rust-deps-visualizer
actionbook
Visualize Rust project dependencies as ASCII art. Triggers on: /deps-viz, dependency graph, show dependencies, visualize deps, 依赖图, 依赖可视化, 显示依赖