Decision briefs
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.
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.
The brief loop
The loop#
| Step | Who | What happens |
|---|---|---|
| 1 | the agent | Writes one self-contained HTML file, reports/<date>-<topic>.html in the project, with the kit's stylesheet and notes script inlined. |
| 2 | the agent | Presents it as an artifact surface whose href is the file's absolute path and whose mime is text/html. |
| 3 | you | Open 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. |
| 4 | you | Note 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. |
| 5 | you | Press ↪ 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. |
| 6 | you | The 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 shows | The map goes | The bar says |
|---|---|---|
| its bench | into the bench's composer, as a draft | in the agent's composer on the bench, not sent · … · press Enter there |
| its terminal | into the agent's prompt, as one bracketed paste with no Enter | in the agent's prompt, not sent · … · press Enter there |
| a document | nowhere | says 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.
| File | What it is |
|---|---|
SKILL.md | The workbench edition of the skill: the loop, the budget and the checks. |
assets/base.css | The look: glass over an Omarchy wallpaper, and every component a brief uses. |
assets/notes.js, assets/notes.css | The notes: an anchor on every element, the concur stamp, the map, and save into file. |
reference/pictures.md | How to draw a brief: eleven kinds of figure and what each is for. |
reference/glass.md, layout.md, evidence.md, notes-markup.html | The look, the layout, confidence labels, and the markup the notes need. |
scripts/brief-wall | Picks 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#
| Keys | Where | What it does |
|---|---|---|
| Alt+2 | the bench | The artifacts shelf, where the brief's card is. |
| Enter | a card | Takes the card's first action; for a brief, opens it in the square. |
| Alt held | over the brief | Outlines every element that takes a note. |
| Ctrl+Enter | the note box | Adds the note. |
| Ctrl+Shift+Enter | the square | ↪ send to agent, while the bar shows the button. |
| Esc | the square | Closes the note box, then the brief's own dialog, then the square. With notes not yet saved it asks once. |
| Enter | the composer | Sends 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.