Skip to content

[Feature] Collapse slash command template into a chip card in the chat bubble #762

@Astro-Han

Description

@Astro-Han

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appApplication behavior and product flowsenhancementNew feature or requestuiDesign system and user interface

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions