Decision briefs

Brief

When an agent finishes work you have to decide on, such as an audit, a comparison of options or a set of findings, it can hand you a decision brief: one HTML page, mostly pictures, that opens in a square inside the window. You read it beside the agent, put a note on any figure or finding, and stamp CONCUR on the decisions you agree with. ↪ send to agent then puts every note in front of the agent, anchored to the element it is about, and the agent answers them.

An agent measures two cache policies, writes a brief and puts it on its bench. The brief opens from the bench card, takes a note on the read-first list and one on figure 03, and a concur on the first decision. Ctrl+Shift+Enter sends all three to the agent's composer, Enter sends the composer, and the agent answers each note. The agent and its work are mock data.

Agents started from the workbench's LAUNCH AGENT panel are told how to build one, and Terminal Delight carries the kit they build it with. An agent you start yourself in a terminal is told nothing new.

The brief in the film is here to open in your browser, and its notes work there too.

Technical has the loop step by step, what the agent is told, where the kit lives and the keys.

Technical

The brief loop

The loop#

StepWhoWhat happens
1the agentWrites one self-contained HTML file, reports/<date>-<topic>.html in the project, with the kit's stylesheet and notes script inlined.
2the agentPresents it as an artifact surface whose href is the file's absolute path and whose mime is text/html.
3youOpen the card from the artifacts shelf (Alt+2) with Enter or a click. The brief opens in the floating square over the bench, and the card stays open under it.
4youNote any element that takes one: each figure, each read-first item, each finding and card, each decision. A decision also takes a CONCUR stamp. Holding Alt outlines every element that takes a note.
5youPress ↪ send to agent in the square's notes bar, or Ctrl+Shift+Enter. Waiting notes are saved into the file first, and the button reads ↪ save & send to agent while there are any.
6youThe notes map lands where you can see it and is not sent. Press Enter there to send it.

Where step 6 puts the map depends on what the agent's pane is showing:

The agent's pane showsThe map goesThe bar says
its benchinto the bench's composer, as a draftin the agent's composer on the bench, not sent · … · press Enter there
its terminalinto the agent's prompt, as one bracketed paste with no Enterin the agent's prompt, not sent · … · press Enter there
a documentnowheresays why, and ⎘ copy map still works

The notes map#

This is the map the film sends. Each line in brackets is an element id in the brief, so the agent finds the passage without rereading the page.

NOTES — 2026-09-25-telemetry-cache.html
2 notes on 2 elements · 1 concur.
Each [anchor] is an element id in that file — search it to find the passage.

[readfirst-a-60-second-cap] A 60-second cap costs 0.6 points. The cap evicts anything older than …
  · Is 60 s the planner's own limit?

[fig-03-age-of-the] 03 · Age of the reading served
  · Show the cold start too, not only the quiet pass.

[ask-1-evict-by-recency] 1 · Evict by recency or by age?  ✓ concur

A concur with no note reads as approved as recommended. An agent connected to the MCP server can ask for the same map with document_notes, which includes notes not yet saved.

What the agent is told#

The launcher hands a Claude agent its briefing through --append-system-prompt, and writes it to $XDG_STATE_HOME/terminal-delight/surfaces/$TD_SESSION/briefing.txt. When the kit could be written, the briefing carries this paragraph, with the kit's directory in place of <kit>:

DECISION BRIEFS. When what you finish is something the person has to read and then decide on — an audit, a review, a comparison of options, a findings write-up, a proposal — build it as a decision brief: one self-contained HTML page, drawn rather than written, that they read inside this window. Read <kit>/SKILL.md before you start; Terminal Delight wrote it for you, with the assets it names beside it. Keep it SHORT and DRAWN: five minutes to read, a figure for every argument, prose only as captions, depth in modals. The page is yours to lay out; the surface only points at it, as an `artifact` whose href is the file's absolute path and whose mime is text/html. A click on that card opens the page over the bench, where the person notes any element, stamps CONCUR on a decision, and presses ↪ to paste the notes into your prompt as [anchor] lines, each anchor an element id in your file. A question with a few short answers is a `decision` surface, not a brief; one brief per decision is the rate.

When the kit could not be written, the paragraph is left out rather than pointing at a file that is not there. Codex takes no briefing from Terminal Delight, so it is not told either.

The kit#

The binary carries the kit and writes it to $XDG_DATA_HOME/terminal-delight/skills/decision-brief/, or ~/.local/share/terminal-delight/skills/decision-brief/, each time the launcher briefs an agent. Only files whose bytes changed are rewritten, so the kit on disk is always the one the running build carries.

FileWhat it is
SKILL.mdThe workbench edition of the skill: the loop, the budget and the checks.
assets/base.cssThe look: glass over an Omarchy wallpaper, and every component a brief uses.
assets/notes.js, assets/notes.cssThe notes: an anchor on every element, the concur stamp, the map, and save into file.
reference/pictures.mdHow to draw a brief: eleven kinds of figure and what each is for.
reference/glass.md, layout.md, evidence.md, notes-markup.htmlThe look, the layout, confidence labels, and the markup the notes need.
scripts/brief-wallPicks a random Omarchy theme and wallpaper and prints the style block that dresses the brief in it. Needs vips and Omarchy's themes; without them the brief keeps a plain glow.

The workbench edition asks for less than the skill it comes from: five minutes of reading, at most three read-first items, a figure for every argument, and no paragraph over three sentences on the page.

Keys#

KeysWhereWhat it does
Alt+2the benchThe artifacts shelf, where the brief's card is.
Entera cardTakes the card's first action; for a brief, opens it in the square.
Alt heldover the briefOutlines every element that takes a note.
Ctrl+Enterthe note boxAdds the note.
Ctrl+Shift+Enterthe square↪ send to agent, while the bar shows the button.
Escthe squareCloses the note box, then the brief's own dialog, then the square. With notes not yet saved it asks once.
Enterthe composerSends the notes to the agent.

Limits#

  • ↪ is drawn only when an agent pane is beside the brief: the pane the square floats over, or the pane a split was opened beside, else the nearest agent in the same tab.
  • On the terminal face the agent must have bracketed paste on. Without it every line of the map would press Enter, so nothing is sent and the bar says so.
  • An HTML file without the notes markup opens and reads normally, and takes no notes.

The film#

The recording was made from a real window running this build, on a hidden workspace, with a mock agent playing back made-up work. The keys were sent to the window through the compositor. Nothing on this machine can click a hidden window, so the scrolling, the two notes and the concur went through Terminal Delight's control socket (ctl doc scroll, ctl doc note add, ctl doc concur), which drives the same notes layer a click does.

What would prove this wrong#

Launch a Claude agent from LAUNCH AGENT and open briefing.txt in the session's surfaces folder. If it has no DECISION BRIEFS paragraph, or the SKILL.md it names is missing, this page is wrong. So is it if Ctrl+Shift+Enter over a brief with notes, beside an agent on its bench, leaves the composer empty.