Agent skill · assistant-ui
ink
Builds terminal chat UIs with @assistant-ui/react-ink and ANSI markdown with @assistant-ui/react-ink-markdown. Use when scaffolding `create --ink`, mounting `AssistantRuntimeProvider` around `useChatRuntime`, composing `ThreadPrimitive`, `ComposerPrimitive`, `MessagePrimitive`, `LoadingPrimitive`, `TextInput`, thread history, attachments, notifications, and terminal keyboard navigation, or when a chat needs grapheme safe editing, multiline display columns, an absolute backend URL, local file storage, or a custom `RemoteThreadListAdapter`. Route terminal markdown, tool output, message rendering, and Ink focus problems here. For browser application setup, web elements, and the standard web runtime, use [setup](../setup/SKILL.md).
What it needs
About 5k tokens when loaded.
What this skill does
assistant-ui Ink Always consult assistant-ui.com/llms.txt for the latest API. @assistant-ui/react-ink connects the assistant-ui runtime to Ink's terminal renderer. It shares runtime, tools, state, and AI SDK transport with web apps, but it has no DOM, CSS, or copied elements. Compose your screen from Ink's Box and Text plus the runtime aware primitives. @assistant-ui/react-ink-markdown renders assistant text as ANSI styled terminal markdown. References ./references/primitives.md -- every terminal primitive namespace, its parts, scoped contexts, and the controlled TextInput ./references/hooks.md -- runtime, state, tool, notification, voice, and checklist hooks ./references/adapters.md -- file storage, attachment, and title adapters ./references/custom-backend.md -- local inference, local disk persistence, and backend thread ownership ./references/migration.md -- what transfers from a web app and what must be rebuilt for Ink Start a terminal app Scaffold the terminal example when starting fresh: --ink resolves to the with-react-ink CLI example. The example inventory also contains with-react-ink-web, but it is not the --ink scaffold target. For an existing Node project, install the runtime, terminal renderer, and AI SDK transport together: The API route must run in a separate backend project. Unlike a browser app, a terminal process cannot use a relative /api/chat URL. Give AssistantChatTransport a complete URL that the process can reach. useChatRuntime and AssistantChatTransport come from @assistant-ui/ai-sdk. Its backend uses the AI SDK v7 UI message stream. See the runtime's AI SDK v7 guide for the route shape. Compose a terminal thread ThreadPrimitive.Messages creates the current message scope before each child runs. Read s.message inside the message component, then use Ink primitives rather than web elements. Use AuiIf for runtime state gates and LoadingPrimitive for the active run. The simple message example deliberately renders only text parts. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills assistant-ui/ink