Repository navigation
Closed
Description
Motivation
A TLDR answers where is this agent right now — and in practice reads like "#933 passed CI; renderer gap-up passes 58 tests; #920 recovery review remains. Nothing merged." That is accurate status with no statement of what the agent is for. Scanning many agents, you cannot tell what a pane is trying to achieve without reading its transcript. The first-prompt TLDR nudge currently asks agents to put their goal into the TLDR, where the next status update immediately overwrites it.
Intended behavior
A Goal is one stable, plain-language sentence: what the agent is trying to achieve and why. It changes only when the user changes direction, never on progress.
- Own capability: a Goal MCP domain with its own setting (off by default) and per-agent session command, independent of TLDR. Either, both, or neither may be enabled.
- Agent-written: a
goal_setMCP tool lets the agent record its own goal once it understands the request, and update it only when scope changes. Users do not edit goals in this version. - Managed skill: enabling Goal deploys an Agent Code managed skill through the existing single-writer skills authority, with the same collision and launch guarantees as TLDR.
- Enforcement reuses the TLDR turn hooks (Claude and Codex): with Goal enabled, the first-prompt nudge asks for the goal via
goal_set(instead of writing it into the TLDR), and a turn blocks at most once when no goal was ever set. TLDR rules are unchanged; when both are missing the agent is asked once for both. Subagent hooks and Codex steers stay isolated as today. - Cmd+G: hold to see each visible agent's goal centered over its dark pane, release to dismiss; a Goal palette command latches it, Escape dismisses. Cmd+L remains TLDR-only. Inside the code editor, Cmd+G stays Monaco's Find Next.
- History: goal changes appear as their own rows in View TLDR History, so scope shifts are visible.
- Goal identity follows the conversation exactly like TLDR: kept across reload and provider switch, fresh for duplicate and rewind, restored by Undo Rewind.
Acceptance criteria
-
goalis a configurable built-in MCP domain for Claude, Codex, and OpenCode, off by default, with a Settings row and session toggle command. -
goal_setwrites only the calling session's goal, is revoked with its registration, and is absent without the domain. - A Goal-only session gets a conversation identity, hooks, and enforcement without TLDR.
- Enforcement asks for the goal at the first prompt and blocks at most once per turn when no goal exists; TLDR behavior is unchanged when Goal is off.
- The managed Goal skill deploys through the conventions authority and failure blocks a Goal-enabled launch.
- Cmd+G hold-to-peek and the Goal palette command show goals per pane; the editor keeps Find Next; keybinding governance passes.
- View TLDR History shows goal changes as labeled rows.
- Regression tests at real boundaries (MCP host, store, hooks, keyboard router, skill authority) plus full check and CI.
Metadata
Metadata
Assignees
Labels
No labels
Activity
fix(tldr): resolve Goal review findings