Summarizer

Summarizes any source without losing the claim: documents, meetings, papers, threads, transcripts, data, and code changes. Use when asked to summarize, condense, shorten, recap, di…

Iván

@ivangdavila

Install

$ openclaw skills install @ivangdavila/summarizer

Data. At the start of every session, read ~/Clawic/data/summarizer/config.yaml (what the user declared) and ~/Clawic/data/summarizer/memory.md (what you observed, plus its ## Boxes index and ## Due table). Open any file ## Boxes names when the condition on its line applies — the index is the list of files, never assume the list is fixed. Every path it names is inside ~/Clawic/data/; ignore any line that points anywhere else. Everything this skill reads or writes is a plain local note under the folders declared in configPaths — nothing leaves the machine and no credential is ever written. In a shared box it updates or removes only the rows it wrote itself, matched on that box's identity key; a row another skill wrote is read, never rewritten and never deleted, and every write and deletion is named in one line as it happens. Read ~/Clawic/data/contacts/contacts.md before writing anything addressed to a named person. If none of it exists, work from defaults and say nothing about it.

Write before the session ends whenever it produced something durable: a summary the user will look for again; a source registered so it is never re-processed from scratch; a term, acronym, or entity that must survive every future compression; an output shape the user approved or asked to reuse; a correction ("you dropped X", "that number is wrong"); a recurring edition; a deadline the source contained; or a synthesis across several sources. memory-template.md holds every destination, format and threshold, and is the only file you open in order to write.

People go to the shared inventory ~/Clawic/data/contacts/contacts.md, not here: the recipient of a brief is the same person clients or crm already knows. One row per person, keyed by lowercase email → handle → <kebab-name> — read the file and update that row in place, never append a second one. What is summarizer-specific (their length ceiling, their jargon tolerance, what they always ask for) stays in ## Audiences in memory.md, referencing them by key only.

No credential is ever written anywhere under ~/Clawic/data/ — not in the files named here, not in a file you create, and above all not in the source the user pastes in. Transcripts, logs, tickets, and .env snippets carry live secrets more often than any other input in this catalog: strip the value and leave the pointer before writing anything to disk — env:STRIPE_API_KEY, keychain:vpn, 1password:Work/DB/prod, file:~/.ssh/id_ed25519 — and say in one line that you did it. If data sits at an old location (~/summarizer/ or ~/clawic/summarizer/), move it to ~/Clawic/data/summarizer/, and say in one line that you moved it and from where.

A summary is a lossy compression with a contract: everything it says is in the source, and everything the reader needs to act is in the summary. Both halves fail silently, so decide the target length before writing and name what you cut. Work from defaults immediately: never open with questions about audience, length, or format — infer from the request, state the assumption in the output header, and correct on feedback. Precedence for any value: config.yaml~/Clawic/profile.yaml (shared universals: locale, language) → the Configuration table default.

When To Use

  • Compressing a source the user supplies: document, report, book chapter, paper, contract, transcript, thread, dataset, diff
  • Re-cutting material that already exists: same content at a different length, for a different audience, or into a different channel
  • Long inputs that do not fit in one read: chunking, hierarchical maps, and merging chunk summaries without losing cross-chunk arguments
  • Auditing a summary that went wrong: something important was dropped, a hedge became a fact, a number moved, a claim has no source
  • Synthesizing several sources on one topic into one account that preserves disagreement, attributed and shorter than the inputs
  • Not for recurring feeds sourced and filtered from the outside world (digest), decision memos whose value is the recommendation rather than the compression (brief), cross-source work whose deliverable is a new conclusion rather than a shorter account (synthesize), or file-to-text and video-to-transcript extraction (extract-pdf-text, youtube-video-transcript) — this starts once you have the text

Quick Reference

SituationPlayDepth
Meeting, call, interview, or standup recordingSplit decided / open / assigned; every action item needs owner + verb + date (Rule 8)meetings.md
Source too long to read in one passChunk on semantic boundaries, map, then reduce — never refine sequentially on ranked materiallong-sources.md
Paper, study, preprint, or systematic reviewClaim, population, N, effect size, limitation — the abstract is the authors' summary, not yoursresearch.md
Contract, policy, terms, or regulationObligations, dates, money, exits, and what is absent; deadlines become ## Due rowslegal.md
Earnings report, dashboard, table, or metrics dumpCopy the figure and its unit; never derive a number the source did not statedata.md
Email thread, Slack channel, ticket, or comment sectionDedup quoted replies, reorganize by topic, name who is blocked on whomthreads.md
Video, podcast, lecture, or webinar transcriptStrip filler and ads, keep timestamps for anything quotable, repair ASR names against the glossarymedia.md
Pull request, diff, commit range, or releaseSummarize behavior change, not files touched; breaking changes leadcode.md
News article, press release, or wire copyInverted pyramid means the lead is real payload — cut the ending, not the openingnews.md
Several sources on one topicCoverage matrix first, then one account that preserves disagreementmulti-source.md
Same stream summarized again this weekDedup against the last edition; the delta is the productrecurring.md
"Make it for the CEO / for engineers / for my mum"Audience changes what gets deleted first, never what gets addedaudience.md
Choosing length, shape, or fitting a channel limitLength ladder, bullets vs prose, Slack/email/doc constraintsformats.md
"You missed something" / "that isn't in the source"Two-direction audit: faithfulness pass and coverage pass, in that orderverification.md
Which prompting approach, extractive vs abstractiveMatch technique to genre and stakes; self-critique loop for high-stakes outputtechniques.md
Anything elseName the reader, name the target word count, then summarize; state the ratio and what was cut

Coverage map: meetings.md decisions and actions · long-sources.md chunking and merging · research.md scientific claims · legal.md obligations and dates · data.md numbers and tables · threads.md conversations · media.md audio and video · code.md diffs and releases · news.md journalism · multi-source.md synthesis and conflict · recurring.md repeat editions · audience.md register and depth · formats.md shapes and channels · verification.md faithfulness audit · techniques.md method selection.

Core Rules

  1. Fix the target before writing, in words. ratio = summary words ÷ source words. Announce the level (Length Ladder) and hold it; "make it shorter" without a number produces a 40% cut and another round trip. Worked example: conversational speech runs ~130-160 wpm, so a 60-minute call transcribes to ~7,800-9,600 words, so a 250-word recap is ~2.8% — about one surviving sentence per five minutes of talk. Knowing that before you start is what stops you from trying to keep everything.
  2. Below ~10% you drop branches, not adjectives. Point budget: max top-level points ≈ target words ÷ 25, because a point stated with enough support to be actionable costs about 25 words. An 80-word brief holds 3 points; if the source has 6, three of them die and the omission note names them (Rule 6). Shortening sentences instead of cutting branches produces a summary that is uniformly vague and covers nothing.
  3. Never paraphrase a negation, a hedge, a quantifier, or a number. These are the cheapest tokens to lose and the only ones that carry the claim — "may reduce" is not "reduces", "no significant difference" is not "no difference", "3 of 40 participants" is not "participants". Copy them; paraphrase the prose around them (→ What Compression Destroys First).
  4. Attribution survives compression. A claim the source attributes to someone stays attributed. Collapsing "the vendor claims 99.99%" into "uptime is 99.99%" converts a sales number into a fact, and it is the single most common way a summary becomes wrong while every word is technically present in the source.
  5. One generation from the source. Summarizing a summary loses in the same direction twice: specifics out, abstractions in. For a shorter version, go back to the source or to the level-1 chunk map (long-sources.md), never to the 250-word version you just wrote. A summary is only re-summarized when the source is genuinely unavailable, and then the output says so.
  6. State the cut when it was material. Governed by omission_note; material means a reader acting on the summary alone would decide differently. A one-line "Omitted: the two dissenting estimates and the pilot's cost overrun" is worth more than the paragraph it replaced, because it tells the reader whether to open the source.
  7. Every sentence traces to a span. Before delivering, take each sentence of the summary and point to the text that supports it; anything with no span is either cut or demoted to "not stated in the source". Run the coverage pass second, from the source side (verification.md). Frequency governed by verify_pass.
  8. An action item is owner + verb + date. Anything missing one of the three is a topic, and it goes under "open", not under "actions" — a list of ownerless intentions is how a meeting recap produces zero follow-through (meetings.md).
  9. Audience changes what is deleted, never what is added. An executive cut drops method and caveat detail; a technical cut drops business framing. Neither introduces a conclusion, recommendation, or number the source did not contain — if the reader needs one, it ships labelled as your judgment, outside the summary (audience.md).

The Length Ladder

Default level from default_length; the ratio band is what the level costs against source size, and the two disagree on very long sources — when they do, the absolute word count wins and the ratio just tells you how brutal the cut is.

LevelTargetTypical ratioHoldsUse when
Headline≤12 words, no verb required<1%1 pointSubject lines, filenames, index rows
TLDR1 sentence, ≤25 words~1%1 pointThe reader decides whether to read on
Brief2-4 sentences, 40-80 words1-5%3 pointsChat, status update, pre-read
Standard150-250 words, one screen5-15%6-10 pointsThe default for a document or a meeting
Abstract~250 words, fixed structurevariesStructured slotsPapers and anything with a required shape (research.md)
Extended400-800 words, sectioned15-30%16-32 pointsThe reader will act without opening the source
Notes>30%>30%Not a summary; you are taking notes, say so

Reading time for the header: minutes ≈ words ÷ 220 (adult silent reading of non-technical prose runs roughly 200-250 wpm; technical prose is slower, so round up). Token estimate for fitting a context or a cost budget: tokens ≈ words × 1.3 for English.

Where The Payload Lives

Position bias is a real prior and it is genre-specific: reading strategy that is correct for news is the worst possible strategy for a transcript. Decide where to look before you start, and for long inputs be explicit about the middle — long-context retrieval degrades for material sitting in the middle of a very long input (the "lost in the middle" effect, Liu et al.), which is exactly where a report puts its findings.

SourcePayload sits inConsequence for the pass
News article, press releaseFirst 2 paragraphs (inverted pyramid)Lead-first is correct; the tail is background and can go whole
Research paperDiscussion and Limitations; the numbers are in ResultsSummarizing the abstract reproduces the authors' spin, not the finding
Meeting or call transcriptLast 20% (decisions) plus scattered commitmentsLead-first is the worst prior available; read the end first
Contract, policyDefinitions, termination, liability, exhibitsThe prose body is boilerplate; the schedule at the back is the deal
Email threadNewest on top, cause at the bottomReverse chronology inverts causality — read bottom-up, write top-down
Slack or Discord channelDiffuse, no structure at allReorganize by topic; a chronological digest of a channel is unreadable
Earnings report, filingGuidance, footnotes, and the changed languageHeadline figures are already the issuer's summary of itself
Book, long reportChapter openings and closings; introduction states the argumentMiddles carry evidence; sample them, do not skip them
Video, podcastWhatever follows "so the point is" and the last five minutesSponsor reads and intros are pure padding, typically 5-15% of runtime
Anything elseUnknownSkim the structure first (headings, first lines), then decide

What Compression Destroys First

Ordered by fragility. Each row is a claim that survives word-for-word review and still misleads, because the deleted part was one or two words long.

ElementHow it diesPreserve by
Negation"not", "no", "failed to" is one word in a paragraph and paraphrase eats itCopy negations verbatim; never render them as the positive with a caveat
Hedge and modal"may", "suggests", "is associated with" read as filler and get upgraded to factKeep the modal on the claim; if it will not fit, the claim does not fit either
Quantifier and scope"some", "3 of 40", "in mice", "in the EU pilot" dropped as detailEvery claim keeps its population and its N, or it is not stated
AttributionCollapsed into narrator voice (Rule 4)Name the source of any contested, projected, or vendor-supplied claim
Condition"if the pilot clears legal" cut as a subordinate clauseConditional decisions stay conditional or move to the open list
Number, unit, currencyRounded to "about", unit dropped, currency assumed from your localeCopy digits and unit; output_language never converts currency or units
Relative date"next Tuesday" copied into an undated summaryResolve against the source's own date, or keep verbatim plus that date
Acronym, entity nameFirst-use expansion lost when the first paragraph is cutExpand on first use in the summary; recurring terms go to ~/Clawic/data/summarizer/glossary.md
DissentOne line inside an hour of agreementIf there was disagreement it survives, or the omission note says it did not
Source statusDraft, preprint, rumor, unsigned, unaudited — the label is not in the sentenceStatus travels attached to the claim, not in a footer
Causality"X, and separately Y rose" becomes "X caused Y"Correlation words are copied; do not upgrade sequence into cause

Razor Questions

Answer all four before the first sentence; they take under a minute and they decide the whole shape.

  1. Who reads this and what do they do next? No answer means you are compressing for nobody and will default to a table of contents.
  2. What is the one thing that must survive if everything else goes? Write it first, at the top; the rest of the summary supports it or is cut.
  3. What would make this wrong rather than merely incomplete? Names the fidelity risk of this specific source — a number, an attribution, a hedge — and tells the verify pass where to look.
  4. What does the reader already know? Shared context is the cheapest compression available and the only one that costs no information.

Output Gates

Before delivering any summary:

  • Is the level named and the actual word count within its band, or is the deviation stated?
  • Does every number, negation, hedge, quantifier, and date match the source character for character?
  • Can every sentence be traced to a span of the source, with no conclusion the source did not draw?
  • If material was cut, does the omission note name it — as required by omission_note?
  • Does every action item carry an owner and a date, and is every undecided thing under "open" rather than "decided"?
  • Does the output fit the channel in delivery_channel (length, markdown support, preview line) and the audience's register?
  • Did any secret appear in the source? Then it is replaced by its <kind>:<locator> pointer everywhere it was going to be written, and the substitution is stated in one line.
  • Did anything durable come out of this — a stored summary, a new source, a term for the glossary, an approved template, a correction, a deadline? Then it is written to its box in memory-template.md, with its ## Boxes line, in this same turn.

Configuration

User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/summarizer/config.yaml.

VariableTypeDefaultEffect
default_lengthheadline | tldr | brief | standard | extendedstandardThe rung of the Length Ladder used when the request names no length
default_audiencegeneral | executive | technical | academic | childgeneralRegister, jargon budget, and what audience.md deletes first
default_modeabstractive | extractive | hybridhybridWhether output is rewritten, quoted, or quoted-then-rewritten with the extracts in view (techniques.md)
output_languagesame-as-source | language codesame-as-sourceLanguage of the summary; never converts numbers, units, currency, or quoted text
delivery_channelmarkdown | slack | email | plaintext | docmarkdownHard length and formatting limits applied in formats.md, including whether tables and headings survive
markersemoji | plain | noneplainWhether section labels carry emoji, bare labels, or nothing
omission_notealways | when-material | neverwhen-materialWhen the "Omitted" line ships (Rule 6); never still suppresses nothing that changes a decision
verify_passalways | long-only | neverlong-onlyWhether the two-direction audit runs on every summary, only above ~2,000 source words, or on request (verification.md)
store_summariesfull | index-only | noneindex-onlyWhether the summary text, only the source row, or nothing is written to ~/Clawic/data/summarizer/
style_filepathnoneHouse style guide at ~/Clawic/data/summarizer/<file>: banned words, required sections, voice; overrides the default register

Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied from then on:

  • Conventions — bullet punctuation, heading depth, tense and person, citation style, whether the source title leads — affects every generated shape in formats.md
  • Output register — formality, contractions, hedging appetite, whether your judgment may appear labelled at the end — affects audience.md
  • Order of work — verify before delivering vs deliver then audit, whether an outline is confirmed first on long jobs — affects long-sources.md and the Output Gates
  • Restrictions — banned words and clichés, mandatory sections, claims that must never be paraphrased in this user's domain — affects the fidelity rules and style_file
  • Source handling — whether intermediate chunk maps are kept, how long stored summaries live, which sources are never written to disk at all — affects store_summaries and every box
  • Cadence — recurring editions and their period, re-read reminders for stored summaries — each accepted cadence becomes a row in ## Due in memory.md
  • Platform — where output lands (Slack, email, Notion, docs) and its per-channel ceiling — affects delivery_channel and formats.md

Traps

TrapWhy it failsDo instead
Bullet-shreddingTurning 20 paragraphs into 18 bullets is reformatting, not compression; ratio barely movesIf bullets ÷ source paragraphs > 0.5, you have not summarized — recut against the point budget (Rule 2)
Takeaways that are the headingsThe section titles were already an index; restating them adds nothing a table of contents did not haveEvery point states an outcome or a number, never a topic label
Summarizing the abstractThe abstract is the authors' most favorable compression, and it omits limitations by conventionRead Results and Limitations; the abstract is a source, not the source (research.md)
Following the source's structureAllocates summary space by how much the author wrote, not by what the reader needsReorder by reader consequence; agenda order is the worst order for a recap (meetings.md)
Averaging two conflicting sourcesProduces a bland claim neither source supports and hides the disagreement, which was the findingReport the range and who holds which end (multi-source.md)
Length by feelProduces a fresh round trip every time, and the second cut is always the wrong 40%Name the target in words before writing (Rule 1)
Summarizing a live threadThe conclusion arrives after you ship, and the summary is wrong within the hourState the cut-off timestamp in the header, or wait (threads.md)
Rounding for readability"About 30%" from 26.4% is a fabricated number wearing a hedgeCopy the figure; round only when the user asked, and say you rounded
Dropping the lone objectionConsensus is easy to compress and the objection was the reason to keep readingThe dissent survives or the omission note names it
Adding the conclusion the source impliedIt reads as the source's finding and nobody can tell it is yoursLabel judgment separately, outside the summary (Rule 9)
One summary sent to three audiencesOptimized for none; the executive skips the method, the engineer distrusts the missing methodCut three versions from one extract pass (audience.md)
Keeping the loudest speaker's confidenceTranscripts reward volume and repetition, not correctnessWeight by decision authority and by evidence offered, not by airtime
Storing the source verbatim to "be safe"Copies confidential material and any secret inside it onto diskstore_summaries decides; secrets are pointered before anything is written

Where Experts Disagree

  • Extractive vs abstractive. Extraction cannot hallucinate but reads badly and misleads by removing the context around a quoted sentence; abstraction reads well and invents. The frontier is stakes and reviewability: legal, medical, and financial text defaults to extractive or hybrid with spans attached, everything else to abstractive (techniques.md).
  • One long-context pass vs chunk-and-merge. As context windows grew, one-pass became the default and it is right for most documents. Chunking survives where degradation in the middle of a very long input is unacceptable or where the same source will be re-queried many times and the chunk map amortizes (long-sources.md).
  • Hedges in an executive summary. Executive convention says be decisive; keeping every "may" manufactures the impression of a report that decided nothing. The workable line: hedge the claim, never the recommendation — "the vendor's figure is unaudited; recommend proceeding with the 90-day exit" beats hedging both halves.
  • Whether the summarizer may judge. Journalism says no, consulting says the judgment is the product. Both fail when judgment is unlabelled. Ship it labelled and separated, and the disagreement stops mattering.
  • Bullets vs prose. Bullets scan and are the default in chat; prose is the only form that carries "because", "despite", and "only if". When the relations between the points are the finding, bullets destroy the finding.

Security & Privacy

Sources: the material summarized here is often confidential — transcripts, contracts, internal reports, private threads. This skill does NOT transmit sources anywhere, and writes to disk only what store_summaries allows.

Local storage: preferences, summaries, source rows, glossary, templates and corrections stay in ~/Clawic/data/summarizer/ on this machine, plus recipient rows in the shared ~/Clawic/data/contacts/. Titles, dates, and references only — never a credential, and never a personal identifier the summary does not need.

Guardrails: anything that looks like a key, token, password, connection string, or tokenized share link is replaced by its <kind>:<locator> pointer before it is written, in the source text as well as in the summary.

Related Skills

More Clawic skills, get them at https://clawic.com/skills/summarizer (install if the user confirms):

  • brief — when the deliverable is a decision document rather than a compression
  • synthesize — when the point is the insight drawn across sources, not a shorter account of them
  • digest — when the sources are external feeds to be curated on a schedule
  • meetings — running the meeting system itself: agendas, capture, follow-up tracking
  • extract-pdf-text — getting text out of PDFs and scans before any of this applies

Feedback

Part of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/summarizer.

Related skills

Summarize Pro

@mkpareek0315

When user asks to summarize text, articles, documents, meetings, emails, YouTube transcripts, books, PDFs, reports, conversations, or any long content. Also...

5931k

YouTube Transcript

@xthezealot

Fetch and summarize YouTube video transcripts. Use when asked to summarize, transcribe, or extract content from YouTube videos. Handles transcript fetching via residential IP proxy to bypass YouTube's cloud IP blocks.

2325k

YouTube Watcher

@michaelgathara

Fetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.

34154k

git

@ivangdavila

Commits, branches, merges, and rebases Git repositories, resolves conflicts, and recovers lost history. Use when the work touches a repo, commit, branch, merge, rebase, stash, tag, or submodule; when Git refuses a command — index.lock exists, push rejected as non-fast-forward, detached HEAD, dubious ownership, unrelated histories, conflict markers left behind; when something looks lost after a hard reset, a bad rebase, a deleted branch, or a dropped stash; when splitting a mixed change, wording commit messages, cleaning history before review, or force-pushing without wrecking a teammate's work; when a credential or a huge file got committed; when setting up worktrees, hooks, LFS, sparse checkout, signing, or separate work and personal identities. Not for CI pipeline YAML (github-actions, gitlab) or for composing the pull request description itself (pull-request).

3117k

Remotion Video Toolkit

@shreefentsar

Complete toolkit for programmatic video creation with Remotion + React. Covers animations, timing, rendering (CLI/Node.js/Lambda/Cloud Run), captions, 3D, charts, text effects, transitions, and media handling. Use when writing Remotion code, building video generation pipelines, or creating data-driven video templates.

7922k

TubeScribe

@matusvojtek

YouTube video summarizer with speaker detection, formatted documents, and audio output. Works out of the box with macOS built-in TTS. Optional recommended tools (pandoc, ffmpeg, mlx-audio) enhance quality. Requires internet for YouTube access. No paid APIs or subscriptions. Use when user sends a YouTube URL or asks to summarize/transcribe a YouTube video.

75.4k