Pointing with @: the attach menu
In the Agent chat, typing @ opens a menu of things you can attach to the prompt. The @-attaches / /-runs split - @ pulls material into the context window, / invokes an action - is the grammar you already drilled in the daily-edit-loop chapter; this chapter assumes it and owns the authoritative @-mention inventory. Skills are the clearest example of /-as-action: shipped in Cursor 2.4, they’re either auto-selected by the agent or manually invoked by typing / in Agent chat and searching the skill name. Here’s the inventory of @-mention targets - what you can pull into the window. Note that Cursor 2.0 removed several older menu items (@Web, @Definitions, @Link, @Linter Errors) on the logic that the agent self-gathers that material now; if a tutorial tells you to @Web something, it predates 2.0. The current menu centres on:
@Files & Folders- attach a specific file, or a directory. A file puts that file, in full (within read limits), into the window - the most precise tool you have, for the moment you know exactly which file matters. A folder pulls in the folder’s relevant contents via the index rather than dumping every byte, so it’s your “this feature lives somewhere inapps/worker/, figure out where” move onbudgetcli. (After selecting a folder you can type/to navigate deeper.) Files and folders share one menu entry - there is no separate top-level@Filevs.@Folder. (source)@Docs- search indexed documentation, including your own. Cursor lets you add doc sources (a library’s docs site) that it indexes, then@Docspulls the relevant pages into the window - so the agent reasons about, say, the Next.js App Router from the actual current docs instead of its training-cutoff memory of them. (source)@<rule-name>- attach a manual rule on demand. Cursor’s rule behaviors are commonly labelled Always, Agent Requested, Auto Attached, and Manual; exact labels can vary by release. A Manual rule sits dormant until you invoke it through the current rule affordance in chat. This is the one@-target that overlaps the rules system from the rules chapter. (source)
A worked example on budgetcli. You’ve decided the date-parsing bug lives in how the worker normalises an incoming transaction’s posting date, and you’ve found the docs you’ll need:
> the worker stores some transaction dates as the wrong year. fix the normaliser. @apps/worker/src/normalise.ts @Docs date-fns
• Reading apps/worker/src/normalise.ts • Pulling date-fns docs: parseISO, parse
normalise.ts calls parse() with the format string 'yyyy' but feeds it a full ISO timestamp, so anything past January reads back as the current year. Switching to parseISO() for ISO inputs and reserving parse() for the known non-ISO feeds fixes it. Here's the diff…Two hand-pinned attachments - the exact file, the exact library docs - and the agent never had to guess where the bug lived or how date-fns behaves. That’s pointing at its best: when you already know, telling the agent is faster and more reliable than making it search.
That whole inventory - the files, the folders, the docs, the manual rules - assumes you know what to attach. Cursor 2.0’s bigger change is that increasingly you don’t have to. Next: self-gathering and hand-pinning.