ShinyAssistantUI — AI skill for Claude Code
A Shiny htmlwidget that wraps @assistant-ui/react — giving Shiny apps a full-featured AI chat UI with streaming output, slash command menu, file attac.
How to install ShinyAssistantUI
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open kaipingyang/shinyAssistantUI and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What ShinyAssistantUI does
A Shiny htmlwidget that wraps @assistant-ui/react — giving Shiny apps a full-featured AI chat UI with streaming output, slash command menu, file attac.
Alternatives in AI
- Botmux — Bridge Feishu/Lark to AI coding CLIs — Claude Code, Codex, Gemini, OpenCode… every DM, group or topic spawns i 1.2k ★
- Proxypal — A desktop app that lets you use your AI subscriptions (Claude, ChatGPT, Gemini, GitHub Copilot) with any codin 1.2k ★
- My Free Code — Open-source multi-provider AI gateway for Claude Code and other coding agents, with model routing, streaming 633 ★
README
shinyAssistantUI
A Shiny htmlwidget that wraps [`@assistant-ui/react`](https://github.com/assistant-ui/assistant-ui) — giving Shiny apps a full-featured AI chat UI with streaming output, slash command menu, file attachments, and tool call display.
Backend-agnostic: works with [ClaudeAgentSDK](https://github.com/kaipingyang/ClaudeAgentSDK), [ellmer](https://github.com/tidyverse/ellmer), or any R-based AI backend.
Installation
# GitHub (development)
remotes::install_github("kaipingyang/shinyAssistantUI")
Usage
library(shiny)
library(shinyAssistantUI)
ui <- assistantUIPage(
assistantUIOutput("chat", height = "100%"),
title = "AI Assistant"
)
server <- function(input, output, session) {
assistantUIServer("chat", handler = function(message, on_chunk, on_done, on_error) {
# Call any AI backend here
# Stream tokens back with on_chunk(), finish with on_done()
on_chunk("Hello! You said: ")
on_chunk(message)
on_done()
})
}
shinyApp(ui, server)
With ClaudeAgentSDK
library(shiny)
library(shinyAssistantUI)
library(ClaudeAgentSDK)
ui <- assistantUIPage(
assistantUIOutput("chat", height = "100%"),
title = "Claude Assistant"
)
server <- function(input, output, session) {
client <- ClaudeSDKClient$new(claude_agent_options())
assistantUIServer("chat", handler = function(message, on_chunk, on_done, on_error) {
client$connect()
client$send(message)
client$receive_response_async(
on_message = function(msg) {
if (inherits(msg, "AssistantMessage")) {
for (block in msg$content) {
if (inherits(block, "TextBlock")) on_chunk(block$text)
}
}
if (inherits(msg, "ResultMessage")) on_done()
}
)
})
}
shinyApp(ui, server)
With bslib
library(bslib)
page_sidebar(
title = "My AI App",
sidebar = sidebar(...),
bslib::card(
full_screen = TRUE,
assistantUIOutput("chat", height = "100%")
)
)
In RSt
Related Skills
Flare
A macOS menu bar app that flashes your whole screen the moment an AI coding agent is waiting on you — over ful
Agentskit
The complete toolkit for building AI agents in JavaScript. Lightweight core, React & Terminal UIs, autonomous
React Agno AI App
⚡ Full-stack AI chat app with Agno Agent Skills, Claude Sonnet 4.6 via OpenRouter, Tavily web search, and Neub
Lovcode CLI
We hacked Claude Code open-source, debugged it from scratch, and made it actually work. Full-featured AI codin
Svelte Markdown
📝 Markdown and HTML renderer for Svelte 5 — built for streaming AI agent output from Claude Code, ChatGPT, an
Vibe Cockpit
Real-time monitoring dashboard for AI coding agent fleets: session health, output streaming, and observability
Related Agents
Perf Deep Audit
Use this agent when you need a deep performance review of Electron, React, or Vite-related code — especially f
LLM Workflow Engineer
Use when building LangGraph workflows, agents, RAG systems, structured-output nodes, streaming chat surfaces,
SEO Aeo Geo
End-to-end SEO/AEO/GEO content agent. Runs the full pipeline — query fan-out, semantic outline, source collect