Problem
Natural language is a bad way to identify a specific thing. Describing which of four documents named “Q3 plan” you meant, in prose, to a system that will guess, is slower and less reliable than pointing at it.
Solution
Two triggers doing two different jobs, and keeping them separate is most of the pattern.
Slash is for verbs. Typing / opens a list of actions the product can take: summarise, translate, generate an image, run a search. These are deterministic instructions rather than requests, and that determinism is the point. A power user reaching for /summarize wants the summarising code path—not a model’s interpretation of a polite request to summarise.
At-mention is for nouns. Typing @ opens a picker of objects: pages, files, people, issues, databases. The result is an unambiguous reference embedded in the prompt, which removes both the description cost and the resolution error. Notion’s assistant works this way, letting pages, people and dates be mentioned directly in a prompt to supply context.
Both are comboboxes, and the ARIA combobox pattern is the specification to build against rather than reinvent. The requirements it sets out are the ones that get missed: the popup’s state has to be exposed, the active option has to be tracked as focus stays in the text field, and arrow keys, Enter and Escape all have defined behaviours. An @-menu that works only with a mouse defeats the purpose, since the entire audience for this pattern is people whose hands are on the keyboard.
Discoverability is the tension. The trigger characters are invisible until typed, which is what keeps the composer clean and what keeps most people from ever finding them. A one-line hint in the empty composer, and a visible control that opens the same menu, cost little and convert a hidden feature into an optional one. What they shouldn’t do is take space in the composer permanently.
The menu also needs an escape route back to plain text. Someone typing a path, a fraction or an email address will trigger a menu they didn’t want, and Escape has to dismiss it and leave the typed character in place rather than eating it.
Use when
The product has a bounded set of actions or a corpus of addressable objects, and people use it often enough to learn a shortcut.
Don’t use when
There are three commands and twelve documents. A menu over a small, stable set is slower than typing, and the trigger characters then only get in the way of people writing ordinary sentences.
Trade-offs
Invisible triggers keep the interface clean and hide the feature from the people who would benefit most. A slash menu also creates two ways to ask for the same thing, and the two can diverge in behaviour, which produces a confusing product where /summarize and asking for a summary give different results. Object mentions introduce a permission surface directly into the composer, since the picker’s results reveal what exists. The menus are a maintenance burden that grows with the product. Every new feature turns up wanting an entry.
Checklist
- Do slash and at-mention carry distinct meanings, and are they used consistently?
- Is the menu operable entirely from the keyboard?
- Does it follow the combobox pattern for state and focus?
- Does Escape dismiss the menu and keep the typed character?
- What happens when someone types a file path or an email address?
- Is the object picker filtered by what the viewer is allowed to see?
- How does a mentioned object appear once inserted, and can it be removed?
- Is there a discoverable way in besides the trigger character?
- Does a command behave identically to the equivalent sentence?
- What does the menu look like with two hundred matching objects?
Compare
Notion uses @-mentions of pages, people and dates as the main way of giving its assistant context, so scope is composed in the prompt rather than configured elsewhere. Slack inherits its existing mention grammar, which means the AI is addressed with the same conventions as a colleague and the permission model comes along unchanged. Linear leans on a command palette that already governs the whole product, so the assistant is one more verb in a vocabulary users know. ChatGPT keeps the composer mostly free of trigger grammar and puts capability behind explicit controls instead. More discoverable, and slower for anyone using it all day.
Related
Composer is the field these menus open from. Scoped context is what an object mention adds to. Prompt starters solve the same discovery problem for people who haven’t learned the shortcuts. Attachment tray is the alternative when the object is a file from outside the product. AI entry point is the adjacent question of how any of this gets found.