scaffold-shiny-app
정보
이 스킬은 golem(R 패키지 구조), 기업 중심의 rhino, 또는 신속한 프로토타이핑을 위한 기본 구조와 같은 프로덕션 준비 프레임워크를 사용하여 R에서 새로운 Shiny 애플리케이션의 기반을 구축합니다. 프로젝트 초기화, 프레임워크 선택, 그리고 첫 번째 모듈 생성을 처리합니다. 대화형 웹 앱, 데이터 대시보드, 또는 프로덕션 등급의 Shiny 애플리케이션을 시작할 때 사용하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/scaffold-shiny-appClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
name: scaffold-shiny-app description: > Crear una nueva aplicación Shiny usando golem (paquete R de producción), rhino (empresarial) o estructura vanilla (prototipo rápido). Cubre la selección del framework, inicialización del proyecto y creación del primer módulo. Úsalo al iniciar una nueva aplicación web interactiva en R, al crear un prototipo de panel o explorador de datos, al configurar una aplicación Shiny de producción como paquete R con golem, o al arrancar un proyecto Shiny empresarial con rhino. locale: es source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: shiny complexity: basic language: R tags: shiny, golem, rhino, scaffold, web-app, reactive
Scaffold Shiny App
Crear una nueva aplicación Shiny con estructura lista para producción usando scaffolding de golem, rhino o vanilla.
Cuándo Usar
- Al iniciar una nueva aplicación web interactiva en R
- Al crear un prototipo de panel o explorador de datos
- Al configurar una aplicación Shiny de producción como paquete R (golem)
- Al arrancar un proyecto Shiny empresarial (rhino)
Entradas
- Requerido: Nombre de la aplicación
- Requerido: Elección del framework (golem, rhino o vanilla)
- Opcional: Si incluir scaffolding de módulos (predeterminado: sí)
- Opcional: Si usar renv para gestión de dependencias (predeterminado: sí)
- Opcional: Destino de despliegue (shinyapps.io, Posit Connect, Docker)
Procedimiento
Paso 1: Elegir el Framework
Evalúa los requisitos del proyecto para seleccionar el framework apropiado:
| Framework | Mejor Para | Estructura |
|---|---|---|
| golem | Apps de producción distribuidas como paquetes R | Paquete R con DESCRIPTION, tests, viñetas |
| rhino | Apps empresariales con pipeline de compilación JS/CSS | Módulos box, Sass, bundling JS, rhino::init() |
| vanilla | Prototipos rápidos y aprendizaje | Un solo app.R o par ui.R/server.R |
Esperado: Decisión clara de framework basada en el alcance del proyecto y las necesidades del equipo.
En caso de fallo: Si no estás seguro, usa golem por defecto — proporciona la mayor estructura y se puede simplificar más adelante. Vanilla solo es apropiado para prototipos desechables.
Paso 2: Crear el Scaffolding del Proyecto
Camino Golem
golem::create_golem("myapp", package_name = "myapp")
Esto crea:
myapp/
├── DESCRIPTION
├── NAMESPACE
├── R/
│ ├── app_config.R
│ ├── app_server.R
│ ├── app_ui.R
│ └── run_app.R
├── dev/
│ ├── 01_start.R
│ ├── 02_dev.R
│ ├── 03_deploy.R
│ └── run_dev.R
├── inst/
│ ├── app/www/
│ └── golem-config.yml
├── man/
├── tests/
│ ├── testthat.R
│ └── testthat/
└── vignettes/
Camino Rhino
rhino::init("myapp")
Esto crea:
myapp/
├── app/
│ ├── js/
│ ├── logic/
│ ├── static/
│ ├── styles/
│ ├── view/
│ └── main.R
├── tests/
│ ├── cypress/
│ └── testthat/
├── .github/
├── app.R
├── dependencies.R
├── rhino.yml
└── renv.lock
Camino Vanilla
Crea 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)
Esperado: Directorio del proyecto creado con todos los archivos de scaffolding.
En caso de fallo: Para golem, asegúrate de que el paquete golem esté instalado: install.packages("golem"). Para rhino, instala desde GitHub: remotes::install_github("Appsilon/rhino"). Para vanilla, asegúrate de que shiny y bslib estén instalados.
Paso 3: Configurar las Dependencias
Golem/Vanilla
# Inicializar renv
renv::init()
# Añadir dependencias principales
usethis::use_package("shiny")
usethis::use_package("bslib")
usethis::use_package("DT") # si se usan tablas de datos
usethis::use_package("plotly") # si se usan gráficos interactivos
# Capturar estado
renv::snapshot()
Rhino
Las dependencias se gestionan en dependencies.R:
# dependencies.R
library(shiny)
library(bslib)
library(DT)
Esperado: Todas las dependencias registradas en DESCRIPTION (golem) o dependencies.R (rhino) y bloqueadas con renv.
En caso de fallo: Si renv::init() falla, verifica los permisos de escritura. Si los paquetes no se instalan, verifica la compatibilidad de la versión de R.
Paso 4: Crear el Primer Módulo
Golem
golem::add_module(name = "dashboard", with_test = TRUE)
Esto crea R/mod_dashboard.R y tests/testthat/test-mod_dashboard.R.
Rhino
Crea 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)
})
})
}
Vanilla
Añade las funciones del módulo a un archivo separado 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)
})
})
}
Esperado: Archivo de módulo creado con funciones UI y server usando el espacio de nombres correcto.
En caso de fallo: Asegúrate de que el módulo use NS(id) para todos los IDs de input/output en la función UI. Sin el espacio de nombres, los IDs colisionarán cuando el módulo se use varias veces.
Paso 5: Ejecutar la Aplicación
# Golem
golem::run_dev()
# Rhino
shiny::runApp()
# Vanilla
shiny::runApp("app.R")
Esperado: La aplicación se lanza en el navegador sin errores.
En caso de fallo: Revisa la consola de R para ver mensajes de error. Problemas comunes: paquetes faltantes (instálalos), puerto ya en uso (especifica un puerto diferente con port = 3839), o errores de sintaxis en el código UI/server.
Validación
- El directorio de la aplicación tiene la estructura correcta para el framework elegido
-
shiny::runApp()se lanza sin errores - Al menos un módulo está creado con funciones UI y server
- Las dependencias están registradas (DESCRIPTION o dependencies.R)
- renv.lock captura todas las versiones de paquetes
- El módulo usa
NS(id)para aislamiento correcto del espacio de nombres
Errores Comunes
- Elegir vanilla para producción: La estructura vanilla carece de infraestructura de tests, documentación y herramientas de despliegue. Usa golem o rhino para cualquier cosa más allá de prototipos.
- Espacio de nombres faltante en módulos: Cada
inputIdyoutputIden la UI de un módulo debe estar envuelto conns(). Olvidarlo provoca colisiones silenciosas de IDs. - golem sin flujo de trabajo devtools: Las apps golem son paquetes R. Usa
devtools::load_all(),devtools::test()ydevtools::document()— nosource(). - rhino sin box: rhino usa box para importaciones de módulos. No uses llamadas
library()— usabox::use()para importaciones explícitas.
Habilidades Relacionadas
build-shiny-module— crear módulos Shiny reutilizables con aislamiento correcto del espacio de nombrestest-shiny-app— configurar tests de shinytest2 y testServer()deploy-shiny-app— desplegar en shinyapps.io, Posit Connect o Dockerdesign-shiny-ui— temas bslib y diseño de layout responsivocreate-r-package— scaffolding de paquetes R (las apps golem son paquetes R)manage-renv-dependencies— gestión detallada de dependencias renv
GitHub 저장소
연관 스킬
llamaguard
기타LlamaGuard는 폭력 및 혐오 발언 등 6가지 안전 범주에서 LLM 입력과 출력을 조정하기 위한 Meta의 70-80억 파라미터 모델입니다. 94-95% 정확도를 제공하며 vLLM, Hugging Face 또는 Amazon SageMaker를 사용해 배포할 수 있습니다. 이 기술을 사용하여 AI 애플리케이션에 콘텐츠 필터링 및 안전 가드레일을 손쉽게 통합하세요.
cost-optimization
기타이 Claude Skill은 리소스 적정화, 태깅 전략, 지출 분석을 통해 개발자들이 클라우드 비용을 최적화할 수 있도록 지원합니다. AWS, Azure, GCP에서 클라우드 비용을 절감하고 비용 거버넌스를 구현하기 위한 프레임워크를 제공합니다. 인프라 비용을 분석하거나, 리소스를 적정화하거나, 예산 제약을 충족해야 할 때 사용하세요.
quantizing-models-bitsandbytes
기타이 스킬은 bitsandbytes를 사용하여 LLM을 8비트 또는 4비트 정밀도로 양자화하며, 최소한의 정확도 손실로 50-75%의 메모리 감소를 달성합니다. 제한된 GPU 메모리에서 더 큰 모델을 실행하거나 추론을 가속화하는 데 이상적이며, INT8, NF4, FP4와 같은 형식을 지원합니다. 이 스킬은 HuggingFace Transformers와 통합되어 QLoRA 학습 및 8비트 옵티마이저를 가능하게 합니다.
dispatching-parallel-agents
기타이 Claude Skill은 3개 이상의 독립적인 문제를 동시에 조사하고 해결하기 위해 다중 에이전트를 배치합니다. 공유 상태나 의존성 없이 해결 가능한 무관련 장애 시나리오에 맞게 설계되었습니다. 핵심 기능은 병렬 문제 해결로, 각 독립 문제 영역마다 하나의 에이전트를 할당하여 효율성을 극대화합니다.
