com um clique
release-highlights
// Write the Highlights section for Lean 4 release notes. Use when asked to write, draft, or update release highlights for a Lean version.
// Write the Highlights section for Lean 4 release notes. Use when asked to write, draft, or update release highlights for a Lean version.
Profile Lean programs with demangled names using samply and Firefox Profiler. Use when the user asks to profile a Lean binary or investigate performance.
Extract Zulip thread HTML dumps into readable plain text. Use when the user provides a Zulip HTML file or asks to parse/read/convert/summarize a Zulip thread.
| name | release-highlights |
| description | Write the Highlights section for Lean 4 release notes. Use when asked to write, draft, or update release highlights for a Lean version. |
| allowed-tools | Bash, Read, Glob, Grep, Edit, Write, WebFetch, WebSearch |
You are writing the "Highlights" section for a Lean 4 release. This section goes at the top of the release notes (after the statistics paragraph) and summarizes the most important changes for users.
You will be given the release notes file for a Lean version (e.g. v4.30.0). This file is a .lean file in the leanprover/reference-manual repository under Manual/Releases/, containing embedded markdown.
Reference manual repo path: Before starting, check whether you know the local path to the leanprover/reference-manual repository clone. If you don't know it, ask the user for the path. Do not guess or assume a path — the user may have it checked out anywhere.
Version: Ask the user which version to write highlights for. Do not assume a version — the user must specify it explicitly (e.g. v4.30.0).
The release notes file already contains:
Your job is to write a # Highlights section to insert between the statistics paragraph and the detailed sections.
gh pr view NNNNN --repo leanprover/lean4 --json body for each one. This includes cross-referenced PRs. Only read the current release's notes file — do NOT also read or fetch PRs from previous releases' notes files. Do not skip PRs that look minor from their one-line entry; the PR description is often the only way to discover that a change is significant. Batch these calls in parallel where possible. This is essential because:
grind highlighted last time? Is the module system still experimental?).What to highlight:
What NOT to highlight:
Signals of highlight-worthiness (in rough priority order):
Calibrating depth for different feature types:
grind): Give these generous space. Use sub-headings (###) for each major new capability, include code examples from PR descriptions. The reader should understand what's new and be able to try it. When a feature like grind has multiple distinct new capabilities in one release, each deserves its own sub-section with examples. However, if a feature is being introduced for the first time, a brief announcement with a link to its documentation may be better than a deep dive — the reference manual is the right place for comprehensive docs, not the release notes.isDefEq, @[implicit_reducible], simp +instances, and inferInstanceAs), present them as one coherent story with a migration guide, NOT as separate highlights. The reader needs to understand the whole picture, not piece it together from fragments.set_option workarounds, lakefile.toml configuration examples, available porting scripts, and step-by-step guidance. Check PR descriptions thoroughly for migration instructions — they often contain lakefile.toml snippets, helper scripts, and diagnostic commands that are extremely valuable to include verbatim. This is often the most useful part of the highlights for affected users.## Experimental: Module System). This signals to users that the feature is available for experimentation but not yet stable. Do NOT give experimental features the same prominence as stable features.What NOT to highlight (continued):
How many highlights?
## Breaking Changes subsection at the end of the highlights section. This is more useful to users than scattering breaking changes across feature descriptions. When a breaking change is directly related to a highlighted feature (e.g., String.Slice overhaul), mention it briefly in the feature highlight AND include it with migration details in the Breaking Changes section.Structure:
# Highlights
[Optional 1-3 sentence overview of the release's themes]
## [Descriptive Feature Name]
[#NNNNN](https://github.com/leanprover/lean4/pull/NNNNN) [prose description
of the change, what it does, why it matters].
[Code example if available and illuminating]
## [Flagship Feature with Sub-items] (e.g., "New Features in Grind")
### [Sub-capability 1]
[#NNNNN](...) [description with code example]
### [Sub-capability 2]
[#NNNNN](...) [description with code example]
### Other New Features in [Feature]
- [brief bullet list of smaller items with PR links]
## [Themed Group] (e.g., "Error Messages", "Performance Gains")
[1-2 sentence thematic summary]
PRs: [#N1](...), [#N2](...), [#N3](...).
## Library Highlights
[Thematic summary of library changes, not an exhaustive list.]
## Breaking Changes
- [#NNNNN](...) [description + migration guidance]
- [#NNNNN](...) [description + migration guidance]
Writing style:
Formatting rules:
[#NNNNN](https://github.com/leanprover/lean4/pull/NNNNN)[#NNNN](https://github.com/leanprover/lean4/issues/NNNN)## for each major highlight topic heading### for sub-topics within a highlight (e.g., multiple grind features under ## New Features in Grind)lean language tag when appropriate for Verso-native files, plain triple backticks for markdown-block files.*Breaking change:* or *Breaking Changes:* in italicRegarding the detailed sections below the highlights:
Library changes deserve a ## Library Highlights subsection only when there are genuinely notable library changes (new types, API redesigns, new frameworks). The approach:
Before finalizing, check:
After writing the highlights, do a post-processing pass to add cross-references to the Lean reference manual where relevant. This requires using Verso-native format (not markdown blocks).
Use Verso cross-reference syntax:
{tactic}\grind`` — links to a tactic's documentation{name}\String.Slice`` — links to a declaration's documentation{option}\backward.do.legacy`` — links to an option's documentation{ref "section-slug"}[display text] — links to a named section{keywordOf Lean.Parser.Command.grind_pattern}\grind_pattern`` — links to a keywordExamples of where to add these:
{tactic}\tacticName``{name}\Fully.Qualified.Name``{option}\option.name``{ref "slug"}[text]To find valid section slugs, search the reference manual source for tag := or section headings. Do not guess slugs — only use ones you can verify exist.
This step does not affect highlight selection or phrasing — it just enriches the output with useful navigation links.
Always use Verso-native format: markdown is written directly in the #doc block. Use # Highlights as the heading level, ## for topics, ### for sub-topics.
Code blocks within Verso-native files use ```lean (with language tag) when the code should be checked by Lean, or plain ``` when it should not be checked (e.g., illustrative goal states, pseudo-code).