What task are you trying to do?
Trigger a slash command like /brainstorming without the underlying skill or template markdown (often thousands of words) flooding the chat bubble.
Which area would this change affect?
UI or design system.
What do you do today?
Today, submitting /brainstorming (or any skill / MCP prompt / custom command) injects the entire template markdown as the visible user message text part. The chat bubble fills with skill methodology the user neither wrote nor wants to re-read. Competitors already moved past this: Claude Code CLI folds slash invocations into <command-name> tags; Cursor (May 2026) shipped pinned skills as quick-action pills; VS Code Copilot keeps /explain /fix compact in the bubble. Cline and Continue still inject raw text — PawWork is on that side of the line.
What would a good result look like?
After submitting /brainstorming, the bubble shows a compact chip card (icon + command name + source tag + truncated argument preview), not the expanded template. The model still receives the full template behind the scenes. Time / model / revert / copy controls remain on the chip-only bubble. Undo and Fork restore /<name> <args> back into the input, not the expanded template.
What would count as done?
/brainstorming xxx submit → bubble shows only a chip; no template markdown bleeds through.
- Chip shows command name, source tag (
skill / mcp / command), and a truncated argument preview when args exist.
- Bubble keeps time, model, revert, and copy controls.
- Copy on a chip-only message yields
/<name> <displayArgs>.
- Undo and Fork restore the full
/<name> <args> literal (not the 80-char truncated displayArgs).
- Fork dialog list preview shows chip form, not the expanded template.
- All three command sources (skill, MCP prompt, custom
.opencode/command/*.md) render identically; only the source tag distinguishes them.
- Subtask commands (e.g.
/review) are out of scope and keep their existing rendering.
- Old sessions with already-expanded template text in user messages are not migrated.
What should stay out of scope?
- Hyperlinks or click-to-expand interactions on the chip.
- Input box chip transformation (keep current
/<cmd> literal text + text.startsWith('/') submit trigger).
- Title generation tweaks.
- Persistence / API echo / unsanitized export not leaking template — those layers stay as-is.
- Subtask command card unification with the new chip card.
Which audience does this matter to most?
Both.
Extra context
Detailed design spec is posted as a comment below. The spec covers the metadata path (zero schema change, no new part type, no synthetic flag), the shared deriveCommandInvocation helper, the four call sites (user-message / utils-prompt / dialog-fork / chip copy), args vs displayArgs separation, explicit file/agent suppress decision, and risks deferred to the implementation plan. The spec passed 5 rounds of single-codex review plus 4 rounds of /crosscheck (Claude reviewer + Codex parallel); round 4 returned zero findings from both reviewers.
What task are you trying to do?
Trigger a slash command like
/brainstormingwithout the underlying skill or template markdown (often thousands of words) flooding the chat bubble.Which area would this change affect?
UI or design system.
What do you do today?
Today, submitting
/brainstorming(or any skill / MCP prompt / custom command) injects the entire template markdown as the visible user message text part. The chat bubble fills with skill methodology the user neither wrote nor wants to re-read. Competitors already moved past this: Claude Code CLI folds slash invocations into<command-name>tags; Cursor (May 2026) shipped pinned skills as quick-action pills; VS Code Copilot keeps/explain/fixcompact in the bubble. Cline and Continue still inject raw text — PawWork is on that side of the line.What would a good result look like?
After submitting
/brainstorming, the bubble shows a compact chip card (icon + command name + source tag + truncated argument preview), not the expanded template. The model still receives the full template behind the scenes. Time / model / revert / copy controls remain on the chip-only bubble. Undo and Fork restore/<name> <args>back into the input, not the expanded template.What would count as done?
/brainstorming xxxsubmit → bubble shows only a chip; no template markdown bleeds through.skill/mcp/command), and a truncated argument preview when args exist./<name> <displayArgs>./<name> <args>literal (not the 80-char truncated displayArgs)..opencode/command/*.md) render identically; only the source tag distinguishes them./review) are out of scope and keep their existing rendering.What should stay out of scope?
/<cmd>literal text +text.startsWith('/')submit trigger).Which audience does this matter to most?
Both.
Extra context
Detailed design spec is posted as a comment below. The spec covers the metadata path (zero schema change, no new part type, no
syntheticflag), the sharedderiveCommandInvocationhelper, the four call sites (user-message / utils-prompt / dialog-fork / chip copy),argsvsdisplayArgsseparation, explicit file/agent suppress decision, and risks deferred to the implementation plan. The spec passed 5 rounds of single-codex review plus 4 rounds of/crosscheck(Claude reviewer + Codex parallel); round 4 returned zero findings from both reviewers.