Feature request: expose `/plugin`-style modal TUI API for user plugins
Problem
Built-in slash commands like /plugin, /mcp, and /config render Ink-based modal overlays that:
- open over the current session,
- let the user edit settings without consuming chat turns,
- dismiss with
escand return to exactly where the conversation left off.
User-defined plugins and skills cannot replicate this experience. Their only output surface is "write markdown into the conversation", which:
- consumes chat turns (and therefore tokens),
- disrupts whatever long-running task the user was in the middle of,
- cannot restore the prior UI state when closed.
Use case
I maintain sc4sap, a Claude Code plugin for SAP ABAP development. It has a /sc4sap:sap-option skill that lets users inspect the currently-connected SAP system, edit their .sc4sap/sap.env credentials, and flip the row-extraction blocklist profile. Users naturally expect it to behave like /plugin: open a modal, change a setting, close it. Today I can offer either:
- In-conversation flow — interrupts work, burns context, can't be dismissed cleanly.
- Separate-terminal TUI — I ship a zero-dep CLI (
node scripts/sap-option-tui.mjs) that users run in another terminal. Works, but ergonomically worse than/plugin.
Several other plugin authors have surfaced variants of this request in discussions.
Ask
Please consider exposing a stable extension point for plugins to:
- register a slash-command (or annotate an existing skill) that opens a modal overlay instead of writing to the conversation,
- receive keyboard events (
esc, arrow keys,enter) while the modal is active, - return control to the conversation state without leaving residue in the transcript.
A minimal shape might be a plugin-declared component (similar to how statusLine is declared today in plugin.json) plus a small React/Ink bridge, or a lower-level "raw terminal region" API that plugin authors render into themselves.
Workarounds today
- Multi-line
statusLinehandles read-only status, but can't accept input. - Separate-terminal TUI works for editing but requires users to open another window.
- Hooks can respond to tool calls but can't draw UI.
Environment
- Claude Code (desktop + CLI)
- Plugin author hitting this regularly
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗