tldr · v1.3 · 2026-10-24 · sha256 152cc14f286ac5f7

tldr v1.3A

Immutable. This exact content never changes and is served at /api/v1/blob/152cc14f286ac5f7.

---
name: tldr
category: communication
activation: command
disable-model-invocation: true
environments: coding, chat
argument-hint: "[file | PR | URL | topic — empty means the last message]"
description: Compressing something too long to read into the few facts needed to decide or act, read instead of the source — the last message and the work behind it, or a named file, PR, document, or thread.
metadata:
  version: "1.3"
  opencode/slash: "true"
  opencode/autoinvoke: "false"
---

# TL;DR

Something got too long to read. The user calls this instead of reading it, so
hand back the **cliffs**: the few facts that let them decide or act, and an
honest line about what those facts leave out.


## What to summarize

| Argument | Target |
|---|---|
| *(none)* | The last assistant message **and the work behind it** — the tool calls, files, and findings it was reporting on. |
| A path | That file or directory. |
| A PR, issue, branch, or diff | The change: what it does, what it breaks, what a reviewer must look at. |
| A URL or attached document | That document. |
| A topic in prose | The part of this session about that topic. |

Read the target in full first.

When the argument reads two ways — a word that is both a filename and a
topic — resolve it from what the user has been doing and name the reading you
picked in one clause. Answer rather than ask.

## The shape

```markdown
**Bottom line.** [One sentence. What survives if they read nothing else.]

- [Load-bearing fact]
- [Load-bearing fact]
- [3–5, ordered by what the decision turns on, not by source order]

**Your move.** [The decision waiting on them, the next step, or "nothing — FYI".]
```

Source:

```markdown
Mara: gateway migration ships Friday, I own the rollout.
Luis: rate limiting is untested, keep it out of this PR.
Mara: agreed, rate limiting waits; `GATEWAY_JWT_KEY` must exist first.
```

Cliffs:

```markdown
**Bottom line.** Mergeable once the secret exists; rate-limit timing is settled.

- Auth checks move to the gateway; Mara owns the Friday rollout.
- Deploy fails without `GATEWAY_JWT_KEY` in staging and prod.
- Rate limiting ships next week (inferred — agreed as follow-up, no date given).

**Your move.** Create `GATEWAY_JWT_KEY`, then confirm Friday with Mara.

```

## Load-bearing

A fact is **load-bearing** when removing it changes what the user does next.
Load-bearing detail survives verbatim: numbers, versions, paths, identifiers,
error strings, names, owners, deadlines, decisions taken. Adjectives,
transitions, restatements, and the order the source happened to use are what
compression eats.

Three things stay load-bearing however long the source is:

- **Claims, not topics.** "Covers auth, caching, and deploy" is a table of
  contents. Say what it *says*: "auth moves to the gateway, caching is
  unchanged, deploy needs a new secret."
- **The disagreement.** An unresolved thread or two conflicting sources stay two
  positions in the cliffs. Collapsing them into one confident answer is the most
  expensive error this skill can make.
- **The gaps.** "I could not read section 4" and "section 4 does not matter" are
  different sentences; write the true one. Mark inference as inference:
  "(inferred — the doc never says)".

## Plain on first read

The user did not read the source, so the cliffs get one pass and no premises
from it. Write them so that one pass is enough:

- Context first: the bottom line says where things stand and why it matters
  before it says what follows.
- Short sentences in the active voice, one thought each.
- One word, one meaning: name the same thing the same way every time.

Prose follows the conversation, terms follow the source. The cliffs are written
in the language the chat is in — an English PR summarised into a German thread
comes back German. What stays in the source's own words are the terms
themselves: identifiers, error strings, and a repo's `GLOSSARY.md` ubiquitous
language (with several glossaries, `GLOSSARY-MAP.md` names the right one).
Translating those, or inventing a cleaner label, makes the reader translate
back.

## When it is a different ask

- **Writing a status from activity or for an outside audience.** A standup
  drafted from recent activity is a `repo-status` task (suggest the user run
  the command); a status for readers outside the working group is
  `stakeholder-update`.
- **Short, read, and it still did not land.** Length decides, and it is
  visible before reading: long and unread comes here, short but unclear after
  reading does not, because the gap is missing premises and shortening adds
  none. Back up and re-explain with them, or suggest the user run `was`, which
  re-pitches the last message in plain German.
- **The reasoning is the point** — a trade-off, a review call. Give the shape of
  the argument: both positions and what each turns on.
- **Already short, no core, or a summary just written.** Say that in one line;
  a thinner copy helps nobody.

## Before sending

Point each bullet at its source line or passage. A bullet with no source
goes out or goes marked "(inferred)".

## Done when

The user could act on the cliffs without opening the source, every bullet
changes what they would do, and every number, path, and name in them was copied
rather than remembered.