中
◀ Back to feed
Simon Willison

Hide your slop PR descriptions behind <details><summary>

Published 2026-11-09 Collected 2026-11-09 16:00 AI news #ai#overseas
Full text

Most of the changes I make to my projects these days come in the form of PRs opened for me by Claude Code or Codex. The PR is my unit of work—I use them to bundle commits together, iterating on them until a feature is complete, document decisions and then merge the finished result. Today’s coding agents are great at writing PR descriptions.

They’re too good at describing the work

The problem is that they are too good. An agent-written PR description is accurate and comprehensive. It describes the problem, the detailed solution, and the steps taken to verify it. That’s a lot of information to absorb.

It’s not necessarily slop, but it reads like slop!

It’s very easy to spot an AI-written PR, and as with other forms of AI writing my instant reaction is best summarized as “I’m not reading all of that”. It doesn’t matter how accurate or useful the information is, I’m instantly put off by the thought that it will take me longer to read than it took the driving author to write... even when that driving author is me!

I want human editorial judgement. I want someone to have thought just long enough about the PR to give me a human-approved introduction that helps me understand, at a high level, what the PR is for and whether it deserves more of my attention.

I think I’ve found a low-effort way to do this that feels right.

Hide most of it in a details/summary

The HTML <details><summary> elements render as a collapsed heading (the summary) that can be expanded to view the larger piece of text. The code looks like this:

<details>
  <summary>Claude Opus 5.5</summary>
  <h2>The hook</h2>
  Plugins implement <code>register_agent_reference_types(datasette)</code>...
</details>

Crucially, <details><summary> is supported in GitHub Markdown. You can drop those tags directly into an issue comment or PR description and GitHub will hide the details and display just the summary plus an expansion arrow.

I’ve started using this for my AI-generated pull requests.

The opening paragraph of my PRs will be carefully selected to act as a high-level explanation of what’s going on—the shortest text a human can read that will help get them up to speed.

I’ll sometimes throw in a screenshot as well, since images are often the best way to quickly illustrate a new feature.

The full agent-written essay then follows in a <details>. I use the model name and often the effort level as that summary, to make it abundantly clear what is going on—“Claude Opus 5.5 Medium” for example.

My PRs don’t feel nearly as sloppy now! The information is all still there, but a reader can glance at it and get the top, human-curated information without their eyes glazing over at multiple paragraphs of agent-written details.

I don’t always write the introduction myself—sometimes the agent has given me what I need already, hidden away in the avalanche of other text. My promise to the reader is that the short opener will represent my human judgement as to what is definitely worth their time.

Here are some recent examples where I’ve used this pattern, including the opener I used:

  • datasette PR #3052: Redesign row page as a vertical list of fields—"The row page showed its single row as a one-row table. For wide tables, like a 46-column GitHub repos table, that scrolled far off to the right and left most of the page blank." (then a screenshot)
  • datasette PR #3043: Pagination bar showing which rows are on the current page—“Table pages that span more than one page now make it obvious where you are, and offer navigation at the top of the page as well as the bottom.” (plus screenshot)
  • datasette PR #3042: Load edit-tools.js on demand via a small loader—"edit-tools.js (~220KB) was loaded on every table, row and database page, even for users who couldn’t edit anything. Now only load it for users who can edit when they first interact with an edit feature (including mouse over an edit link)."
  • datasette-agent PR #51: register_agent_reference_types plugin hook—"Lets plugins add their own kinds of item to the # tagging in the chat composer using a new register_agent_reference_types(datasette) plugin hook."—pictured above.
  • llm PR #1838: Add llm openai endpoint add/list/remove/path commands—"Adds commands for managing the records in extra-openai-models.yaml, so OpenAI-compatible endpoints can be saved from the command line instead of by hand-editing YAML."—then copied --help output.

The mnemonic

I used to have trouble remembering the order of the tags—is it <details><summary> or <summary><details>?

Here are two tricks that helped me.

First, and most obviously, the <summary> is clearly the bit where you summarize the details. That’s the tag for your line of text that can be clicked to expand—the <details> element must then wrap everything else.

An even better trick is to always refer to these two tags as “details-summary”.

“details-summary” is two syllables followed by three syllables. That rolls off the tongue more smoothly than the three-two punch of “summary-details”.

Say “details-summary” out loud just a few times and you’ll never forget the order of the tags again.

(I still wish GitHub would add a button to their Markdown editor for this—partly to save me painstakingly typing it on my mobile keyboard, and partly to help spread the word to more GitHub users that this feature exists.)

Source
Title
Hide your slop PR descriptions behind <details><summary>
Author
Simon Willison
Site
Simon Willison
Published
2026-11-09
Collected
2026-11-09 16:00 · 2026-11-09-16-ai.json
Link
https://simonwillison.net/2026/Nov/9/details-summary/
Open original ↗

Reposted. Will be removed on request. All rights belong to the original author.

More from this batch

16:00batch · 2026-11-0912 items
>

Anthropic secures $3.4 billion generator deal for AI data centers, FT reports

Anthropic bought commitments for 1.7 gigawatts of heavy-duty gas-fired generators from OnePWR Solutions in a deal worth about $3.4 billion, …

CNBC(转述《金融时报》)
>

Is Jensen Huang’s job on the line? Yale’s Jeffrey Sonnenfeld estimates it’s “about a 50-50”

After Nvidia’s board opened an independent investigation into Jensen Huang, Yale’s Jeffrey Sonnenfeld puts his odds of surviving at about 50…

TechCrunch
>

SplatAnything(浙大 3DV):给前馈式 3D 高斯重建加「高斯间距归一化」,同一个模型能处理任意尺度的场景

改进了什么:前馈式 3DGS 模型一步就能从几张图重建 3D 场景,但场景大小和视角一变,预测出的高斯点分布就失准,泛化差。靠什么:作者提出 Gaussian Spacing Normalization,把场景级的高斯间距统计量规范到统一尺度再预测,相当于先消掉「这个场景有多大」…

arXiv / Hugging Face Papers
>

网易有道 Confucius4-R2T2:不改模型结构,只用「最长稳定前缀」标签做后训练,让流式语音识别接近整句识别的准确率

改进了什么:流式语音识别为了低延迟要边听边出字,但已经吐出的字常常被后面的音频推翻重写,字幕一闪一闪,准确率也不如等整句说完再识别。靠什么:作者构造「最长稳定前缀」标签,只让模型学习输出那部分之后不会再变的文字,在现有模型上做后训练,不需要改架构。效果:论文称在低延迟下接近整句(…

arXiv / Hugging Face Papers
>

Video-Coder:让智能体写代码搭 3D 场景再渲染成视频,用执行结果和视频质量做强化学习奖励

改进了什么:直接用扩散模型生成视频很难精确控制物体位置、运动和镜头。靠什么:Video-Coder 换了一条路,让模型写并执行代码来构建动态 3D 场景,再渲染出视频;训练分两步,先监督微调,再用「代码能否执行」和「视频是否符合要求」两类奖励做强化学习。效果:论文称可控性明显优于…

arXiv / Hugging Face Papers
>

AgentBaton:智能体任务做到合适阶段就从强模型「交棒」给便宜模型,准确率不掉、API 成本大降

改进了什么:智能体全程用最强模型很贵,全程用小模型又容易失败。靠什么:作者发现任务前期规划交给强模型、后期执行交给高效模型,在合适的阶段交接就能保住准确率;他们训练了一个轻量检测器 AgentBaton,判断什么时候可以交棒。效果:论文称大幅节省 API 费用,并把准确率和成本的…

arXiv / Hugging Face Papers
>

P²-MOPD:多教师在线蒸馏时,把各个专家模型的参数当先验,学生恢复更快、各项能力更均衡

改进了什么:把多个领域专家模型蒸馏成一个学生模型时,常见的多教师在线策略蒸馏(MOPD)收敛慢,而且容易偏向某几个教师。靠什么:P²-MOPD 在在线蒸馏目标下同时优化教师的混合系数和学生权重,让专家模型作为参数先验参与初始化和约束。效果:论文称比 MOPD 恢复更快、能力更均衡…

arXiv / Hugging Face Papers
>

可灵团队 LongBanana:首个专家设计和校验的「长上下文多参考图合成」基准,考验智能体生图时能不能找对证据、拒绝干扰

这是个新基准,不是新模型:任务要求从大量分散的参考图里找到真正相关的视觉证据,排除干扰图,把人物、物体和关系对上,最后合成一张连贯的图。作者称这是首个由专家设计并逐题校验的此类基准,共 90 道精心构造的题目。它测的正是「智能体驱动的图像生成」里最容易出错的环节:多张参考图一多,…

arXiv / Hugging Face Papers
>

韩国 ETRI 开源无代码 AI 开发工具 TANGO 2:网页里点选就能用行业数据训练 LLM,并部署到云、内网服务器或端侧

韩国电子通信研究院(ETRI)11 月 9 日宣布开源 TANGO,这是一个把模型训练、优化、部署串成一条流水线的无代码工具,目标用户是工厂、医院、造船、农业等现场的非 AI 专家。TANGO 1 做视觉 MLOps,TANGO 2 扩展到生成式 AI 和 LLMOps,能用行业…

韩国 ETRI / 韩联社
>

花叔开源全球鸟类贴纸库:用 AI 为 AviList 2026 全部 11011 种鸟各画一张贴纸,带 43 种语言名称和结构化数据

作者「花叔」用 Claude Code、Codex 等工具批量生成并整理了全部 11011 种鸟的贴纸,附 43 种语言的鸟名和分类数据,配套网站 birdalbum.com 可以浏览。仓库说明写的是 CC BY 4.0(GitHub 未自动识别许可证),10 月 30 日创建,…

GitHub
>

kubai-icons:给 Claude Code、Codex 等编码智能体用的动画图标技能,附 2600 多个风格统一的开源图标

这是一个 agent skill:装进编码智能体后,它能按同一套风格画出带悬停动效的图标,并提供 2600 多个现成图标,支持 React、Vue 和 SVG,配有浏览网站 icons.kubai.design。11 月 3 日创建,约 420 星;GitHub 识别许可证为「其…

GitHub
>

集智俱乐部解读 Nature Communications:清华团队让数千个 LLM 智能体自由交友讨论政治,没有预设规则也会自发抱团、观点极化

清华电子系李勇团队 10 月发表在《自然·通讯》的论文,模拟数千个大模型智能体自己建立社交关系、讨论政治议题,结果在不预设任何极化规则的情况下,智能体自发形成同质化小圈子并出现观点极化,和人类社会的现象很像。作者认为这样的智能体网络可以当作研究舆论动态和干预手段的「合成试验场」。…

公众号 · 集智俱乐部