# Command menu > Power users need to name a tool, a file or a person without describing it in a sentence. - Canonical: https://patterns.konigi.com/ai-assistants/command-menu - Group: Input and invocation - Level: implementation - Status: published - Updated: September 12, 2026 - Also called: slash commands, at-mentions, prompt shortcuts --- ## 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. ## Related patterns - [Composer](https://patterns.konigi.com/ai-assistants/composer) — One box has to take a word, a page, a file and a keyboard shortcut without growing into the whole screen. - [Scoped context](https://patterns.konigi.com/ai-assistants/scoped-context) — The assistant sits inside a product full of data and the viewer cannot tell how much of it is in scope. - [Prompt starters](https://patterns.konigi.com/ai-assistants/prompt-starters) — An empty box tells a first-time viewer nothing about what the thing can do. - [Attachment tray](https://patterns.konigi.com/ai-assistants/attachment-tray) — The viewer adds a file to the question and needs to see what the model will actually read. - [AI entry point](https://patterns.konigi.com/ai-assistants/ai-entry-point) — The feature has to be findable inside a product people already know, without retraining them on it. ## Sources - [W3C, ARIA Authoring Practices Guide, Combobox pattern](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/) - [Microsoft HAX Toolkit, Guideline 7, Support efficient invocation](https://www.microsoft.com/en-us/haxtoolkit/guideline/support-efficient-invocation/) - [Notion, Everything you can do with Notion AI](https://www.notion.com/help/guides/everything-you-can-do-with-notion-ai) --- Screenshots on patterns.konigi.com are reproduced for commentary and criticism. Product names and marks belong to their owners.