MCP HubMCP Hub
Volver a habilidades

scaffold-shiny-app

pjt222
Actualizado 6 days ago
18 vistas
17
2
17
Ver en GitHub
Metadesigndata

Acerca de

Esta habilidad estructura nuevas aplicaciones Shiny en R con tres opciones de framework: golem para paquetes R de producción, rhino para proyectos empresariales, o vanilla para prototipos rápidos. Maneja la inicialización del proyecto y crea el primer módulo, lo que la hace ideal para iniciar paneles de control, exploradores de datos o aplicaciones web de producción. Úsela al iniciar cualquier aplicación Shiny interactiva para establecer la estructura adecuada desde el principio.

Instalación rápida

Claude Code

Recomendado
Principal
npx skills add pjt222/agent-almanac -a claude-code
Comando PluginAlternativo
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativo
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/scaffold-shiny-app

Copia y pega este comando en Claude Code para instalar esta habilidad

Documentación

架 Shiny 應

建新 Shiny 應含產備結構用 golem、rhino、或素架。

  • 始新互動 R 網應→用
  • 建儀板或資探原型→用
  • 設產 Shiny 應為 R 包(golem)→用
  • 啟企 Shiny 項(rhino)→用

  • :應名
  • :框選(golem、rhino、素)
  • :含模架(默:是)
  • :用 renv 管依(默:是)
  • :釋標(shinyapps.io、Posit Connect、Docker)

一:擇框

按項需選宜框:

結構
golem產應運為 R 包R 包含 DESCRIPTION、測、誌
rhino企應含 JS/CSS 建管box 模、Sass、JS 包、rhino::init()
速原型與學單 app.R 或 ui.R/server.R 對

得:明框決於項範與組需。

敗:未定→默 golem—予最多結構可後簡。素僅宜棄原型。

二:架項

Golem 路

golem::create_golem("myapp", package_name = "myapp")

建:

myapp/
├── DESCRIPTION
├── NAMESPACE
├── R/
│   ├── app_config.R
│   ├── app_server.R
│   ├── app_ui.R
│   └── run_app.R
├── dev/
├── inst/
├── man/
├── tests/
└── vignettes/

Rhino 路

rhino::init("myapp")

建:

myapp/
├── app/
│   ├── js/
│   ├── logic/
│   ├── static/
│   ├── styles/
│   ├── view/
│   └── main.R
├── tests/
├── app.R
├── dependencies.R
├── rhino.yml
└── renv.lock

素路

app.R

library(shiny)
library(bslib)

ui <- page_sidebar(
  title = "My App",
  sidebar = sidebar(
    sliderInput("n", "Sample size", 10, 1000, 100)
  ),
  card(
    card_header("Output"),
    plotOutput("plot")
  )
)

server <- function(input, output, session) {
  output$plot <- renderPlot({
    hist(rnorm(input$n), main = "Random Normal")
  })
}

shinyApp(ui, server)

得:項目建含諸架檔。

敗:golem→確 golem 包裝(install.packages("golem"))。rhino→自 GitHub 裝(remotes::install_github("Appsilon/rhino"))。素→確 shiny、bslib 裝。

三:配依

Golem/素

renv::init()

usethis::use_package("shiny")
usethis::use_package("bslib")
usethis::use_package("DT")
usethis::use_package("plotly")

renv::snapshot()

Rhino

依管於 dependencies.R

library(shiny)
library(bslib)
library(DT)

得:諸依錄於 DESCRIPTION(golem)或 dependencies.R(rhino)、renv 鎖。

敗:renv::init() 敗→查寫權。包裝敗→查 R 本相容。

四:建首模

Golem

golem::add_module(name = "dashboard", with_test = TRUE)

R/mod_dashboard.Rtests/testthat/test-mod_dashboard.R

Rhino

app/view/dashboard.R

box::use(
  shiny[moduleServer, NS, tagList, h3, plotOutput, renderPlot],
)

#' @export
ui <- function(id) {
  ns <- NS(id)
  tagList(
    h3("Dashboard"),
    plotOutput(ns("plot"))
  )
}

#' @export
server <- function(id) {
  moduleServer(id, function(input, output, session) {
    output$plot <- renderPlot({
      plot(1:10)
    })
  })
}

加模函至 R/mod_dashboard.R

dashboardUI <- function(id) {
  ns <- NS(id)
  tagList(
    h3("Dashboard"),
    plotOutput(ns("plot"))
  )
}

dashboardServer <- function(id) {
  moduleServer(id, function(input, output, session) {
    output$plot <- renderPlot({
      plot(1:10)
    })
  })
}

得:模檔建含 UI 與服函用正命空。

敗:確模 UI 函諸入/出 ID 用 NS(id)。無命空→ID 多用時撞。

五:行應

golem::run_dev()
shiny::runApp()
shiny::runApp("app.R")

得:應於瀏無誤啟。

敗:察 R 控制台誤訊。常題:缺包(裝之)、口已用(port = 3839)、UI/服碼語誤。

  • 應目結構合所擇框
  • shiny::runApp() 啟無誤
  • ≥ 1 模架含 UI 與服函
  • 依錄(DESCRIPTION 或 dependencies.R)
  • renv.lock 捕諸包本
  • 模用 NS(id) 命空隔

  • 產用素:素無測施、文、釋工。原型外用 golem 或 rhino
  • 模缺命空:模 UI 諸 inputIdoutputId 必裹 ns()。忘致默 ID 撞
  • golem 無 devtools 流:golem 應為 R 包。用 devtools::load_all()devtools::test()devtools::document(),非 source()
  • rhino 無 box:rhino 用 box 為模入。勿退 library()—用 box::use() 顯入

  • build-shiny-module
  • test-shiny-app
  • deploy-shiny-app
  • design-shiny-ui
  • create-r-package
  • manage-renv-dependencies

Repositorio GitHub

pjt222/agent-almanac
Ruta: i18n/wenyan-ultra/skills/scaffold-shiny-app
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Habilidades relacionadas

content-collections

Meta

Esta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.

Ver habilidad

polymarket

Meta

Esta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.

Ver habilidad

creating-opencode-plugins

Meta

Esta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.

Ver habilidad

sglang

Meta

SGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.

Ver habilidad