Pin a skill as a composer mode, so every message in a thread carries it #11342
matheustimbo
started this conversation in
Ideas
Replies: 1 comment
|
Built it out, in case seeing the diff is easier than judging the idea in the abstract: #11343 Web and desktop, no contract or server change, 12 commits, mobile deliberately untouched. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Opening this in Ideas rather than as an issue, per CONTRIBUTING.
The gap
A skill mention is a one-shot insert.
$reviewgoes into one message and is gone on the next. When you want a skill to shape a whole stretch of a conversation, which is exactly what the longer style and process skills are for, you retype the mention on every turn, and the turn where you forget silently behaves differently.What Cursor does
Cursor's composer picker offers
⌥⏎on a skill row to "Use as Mode". The skill becomes a chip in the composer and prefixes every following message until the chip is dismissed.The part worth copying is that it is not a hidden setting. The chip is right there in the composer, the prefix lands in the message text, and removing it is one click.
Proposal
Pressing Option+Enter on macOS, Alt+Enter elsewhere, on a highlighted skill row in either the
$or the/picker pins that skill for the thread. The pinned skill appears as a chip in the composer control row, and every message goes out with$<name>in front of it.Everything already exists to make this small:
$nametext inmessage.text, so nothing new has to cross the wire and no contract, command, event, or projector changes.applyClaudePromptEffortPrefixalready prependsUltrathink:at send time, so prompt-prefix-at-send is an established mechanism with an established slash-command carve-out.runtimeModeandinteractionModealready persist per environment and thread on the composer draft, so the pinned mode has an obvious home.That leaves a pure prefix function, a draft field, a key branch, a chip, and a hint on the picker row.
Open questions for you
Whether a pinned mode should be client-side draft state, as proposed, or durable thread state that syncs across devices. I went with the draft layer because the mode is fully expressed in the text it produces, so the server and every other client already see the truth in the message. Making it an event-sourced thread field would sync a pinned mode from desktop to mobile, at the cost of a contract, a command, and a projector for a preference.
Whether mobile should get it at all, and by what gesture, given it has no modifier keys.
I have this built and verified if it is something you want. Happy to leave it here if it is not.
All reactions