Gemma 4 · On-device
Skim Recap

How Skim Recap works, from a flick to a local recap

Yui Morii · August 2026

The whole product is one gesture: you scroll past something faster than you can read it, and a card hands that passage back. This page is the long version of the shipping build — what triggers it, what the popup controls, and why the two layouts come from a single generation rather than two.

Catch what you scrolled past

Skim Recap is a Chrome extension that detects fast scroll gestures, estimates the passage you skipped, and displays a compact recap beside your cursor using Gemma 4 E4B through LiteRT-LM.

It is designed for long articles, documentation, essays, and research posts where you want to skim quickly without losing the thread of the page.

A recap card beside the cursor, over the passage that was scrolled past.
The card appears where the cursor already is, reporting how far the flick went — 1,480 px in this case — so the recap is anchored to something the reader can check.

Local-first runtime profile

Metric Parameter Default Skim Recap Result
Scroll Trigger Manual reread Fast scroll detection Automatic
Summary Range Whole page Skipped passage only Focused
Runtime Hosted API Gemma 4 E4B · LiteRT-LM On device
Model Setup Every request Download once, cache locally Reusable
The first-run card showing a progress bar, the model name, and megabytes downloaded so far.
The 2.97 GB download happens once, and it is not hidden behind a spinner — the card names the model and counts the megabytes while it works.

Cursor-native recap flow

The extension runs from a small popup with an enabled toggle, adjustable flick threshold, and a model preload action. Once active, the recap panel appears near the cursor so the reader stays in place.

Each card covers one flick and not everything above it: flick to 4,000 px and you get those 4,000 px, flick again to 8,000 and the second card is of the new 4,000, not of 8,000. The number on the card is that difference. How much of a flick actually reaches the model, and where that stops being all of it, is measured in What one flick actually covers.

The extension popup: an enabled toggle, a flick threshold slider, a recap language selector, and a preload button.
Three controls, and no keyboard default — every shortcut worth suggesting is already taken, and Chrome gives a binding to whichever extension asks first.

The panel carries the local model status, a copy action, and a layout toggle. Focus renders the recap as one paragraph, Smart as numbered points — the same generated text, reshaped, so switching costs nothing and never re-runs the model.

The same recap shown as a paragraph and as numbered points.
One toggle, two shapes. The model produces one point per line, so both readings come from a single generation.

A second action moves a finished recap into another language using Chrome’s on-device Translator, and back again. The recap can also be written directly in a chosen language, generated in one pass rather than summarised and then translated.

A recap shown in English and the same recap translated into Japanese.
Translation runs on-device too. Pressing again returns the original wording rather than translating back.
Overview About Privacy Stack
Blog Chrome Store