BaseHalf
All posts

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”.

A sentence selected in a note on the canvas, with Claude Code in the Agent Area and the status bar showing the selected text.

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 selectedAn agent sees
Nothing, on a canvasthe folder of that canvas
One cardthat card
Two or more cardsevery selected card
A card open in Card Detail, or a note you are editing with no text selectedthat card
Text in a notethe text, its note, and the lines it is on
Text in a PDF or a bookthe 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.

SelectionUpstream connection
Where it lives.bh/cache/selection.yamlIn the file (Markdown frontmatter) or .bh/mirror/.../upstream.yaml
GitNever sees itSees the change
LifetimeWhile this window is openUntil 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 byClosing the window, or selecting something elseRelink, 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.