What “this” means when you talk to an agent
Select a card or a passage and BaseHalf records it for Claude Code and Codex. Git never sees that file. The status bar shows what “this” is right now.
We used to say “improve this” and then paste a path. Sometimes the wrong file. Sometimes a path that no longer existed after a rename. The agent answered a different “this” than the one we were looking at.
On the BaseHalf canvas, selection is the referent. Click a card, select a sentence in a note, or leave nothing selected. BaseHalf records that choice for Claude Code and Codex while the window is open. The status bar shows what agents currently see when you say “this”.

How selection is recorded
BaseHalf writes the current selection to .bh/cache/selection.yaml in the workspace folder. It does that only while BaseHalf is open and the BaseHalf skill is installed. When the window closes, the file goes away. Git never sees it. Agents only read it.
What lands in that record depends on what you selected:
| You selected | An agent sees |
|---|---|
| Nothing, on a canvas | the folder of that canvas |
| One card | that card |
| Two or more cards | every selected card |
| A card open in Card Detail, or a note you are editing with no text selected | that card |
| Text in a note | the text, its note, and the lines it is on |
| Text in a PDF or a book | the text, its document, and the pages or chapter |
Clicking into the Agent Area to type does not clear the selection. Only selecting again changes what agents see. Until you answer the skill install offer, the status bar says agents cannot see your selection.
A request that names something else still wins. “Improve the summary” means the summary, whatever is selected right now.
What the skill expects
The first time you open a folder, BaseHalf offers to install a skill into ~/.claude/skills/basehalf/ and ~/.agents/skills/basehalf/. That skill teaches agents how to read .bh/, descriptions, connections, selection, and drafts used for generate.
We never dump the whole workspace into a prompt. Agents open the files they need. Selection is a pointer, not a paste. The Agent Area sits on the right; Claude Code, Codex, and terminals sit beside the same canvas that holds the cards.
When the skill is installed, the right end of the status bar is the live check. Glance there before you say “this”, and you know what the agent will take as the referent.
Selection is session-scoped; upstream is committed
Selection answers “what am I pointing at right now?” Upstream answers “what should this file always depend on?” Mixing them up is how context gets lost between sessions.
| Selection | Upstream connection | |
|---|---|---|
| Where it lives | .bh/cache/selection.yaml | In the file (Markdown frontmatter) or .bh/mirror/.../upstream.yaml |
| Git | Never sees it | Sees the change |
| Lifetime | While this window is open | Until you edit or remove the list |
| Good for | “Improve this paragraph”, “explain this card” | Specs, notes, and inputs that should survive the next session |
| Cleared by | Closing the window, or selecting something else | Relink, Relink Everywhere, Remove, or editing the list |
Select when the referent is temporary and visual. Draw an upstream line when the relationship should still be there tomorrow, for you, for a teammate, and for the next Claude Code or Codex session.
We stopped pasting paths to explain “this”. The canvas holds the pointer. The status bar shows it. The skill teaches the agent where to look. For anything that should persist, we still draw the line into the file.