[Feature Request] Expose slash-command echo rows as a ui.render component
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
A hooks-module mod using ui.render on UserMessage (terminal surface) can redraw the person's prompts, for example as a right-aligned chat bubble. A prompt that is a slash command (/compact, /my-skill some args) is not drawn through that site: the engine draws its ❯ /name args echo row (or Skill(name) for a skill) with its own component on the userMessageBackground fill, and raises no render site for it. In a mod that restyles prompts, every typed slash command stays in the engine's left-aligned style and looks out of place next to the other prompts.
In 2.1.300, RenderComponent has no member for that row. CommandOutput covers the output row under the echo, not the echo itself; UserMessage is not raised for it; and prompt.submit / command.run can change the command, not how its echo is drawn.
Proposed Solution
Raise the echo row through ui.render, either:
- as
UserMessage, with a read-onlycommandprop ({ name, args, isSkill }) so a hook can tell it apart, or - as its own component (e.g.
CommandInput) with props{ command, args, isSkill, isExpanded, onScreen }.
A mod could then align and style it like any other prompt, or hide it.
Alternative Solutions
Rewriting the stored row so the engine draws it as a plain prompt would change what the model reads, so it is not a real option. Today the echo row cannot be changed by a mod at all.
Priority
Low - Nice to have
Feature Category
Interactive mode (TUI)
Use Case Example
- Load a mod whose
UserMessagehook draws prompts as right-aligned bubbles. - Type a plain prompt: it is drawn on the right.
- Type
/compactor/some-skill args: the echo stays on the left in the engine's own style.
Additional Context
Related: #100847 (the same gap for the attachment rows drawn under a prompt, such as └ [Image #1]). Claude Code 2.1.300, Windows Terminal.