Skip to main content

golem-add-module

Add a module to an existing golem Shiny application. Triggers on: - "add a module" - "create a module" - "add a golem module" Do not trigger on: - when the user is not working inside a golem app

Ir para a instalação

Informações da origem

Repositório
ThinkR-open/golem
Última atividade na origem
15 de maio de 2026 às 10:05
Idioma detectado do SKILL.md
inglês
Estrelas
945
Forks
136

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
golem-add-module
description
Add a module to an existing golem Shiny application. Triggers on: - "add a module" - "create a module" - "add a golem module" Do not trigger on: - when the user is not working inside a golem app
# Add Module You are helping a user add a new module to an existing golem Shiny application. ## Creating a Module Use `golem::add_module("name", with_test = TRUE)` to create a new module with proper structure. ## Module Structure A golem module consists of: - `mod_<name>_ui()` - User interface function - `mod_<name>_server()` - Server logic function ## Important Rules ### UI Functions - Always use `ns <- NS(id)` to namespace UI elements - Check for missing `ns` prefixes when building the UI - Never forget to namespace input/output IDs ### Server Functions - Use `moduleServer()` - NEVER use the deprecated `callModule()` - Use `reactiveValues()` for internal state, NOT `reactive()` or `reactiveVal()` - Use `observeEvent()` - NEVER use `observe()` - Always put reactive values inside a reactive consumer Example pattern: ```r mod_<name>_server <- function(id) { moduleServer(id, function(input, output, session) { local_rv <- reactiveValues() observeEvent( input$btn, { local_rv$value <- compute_things(input$btn) } ) output$plot <- renderPlot({ local_rv$value }) }) } ``` ### Reactive Programming Rules - NEVER pass `reactive()` objects between modules unless explicitly prompted - Avoid `renderUI()` + `uiOutput()` - prefer `update*()` functions - Watch for reactive cycles (A updates B updates A) - break them with explicit conditions - Use a `reactiveValues()` object for sharing data between modules, but only include what's necessary ## Testing - Create tests with `usethis::use_test("mod_<name>")` - Each test should set up its own data inline - Use `withr::local_*()` for temporary state changes ## Next Steps After adding the module: 1. Edit the module files to add your UI and server logic 2. Run `devtools::document()` if you added roxygen comments 3. Add the module to your app UI in `app_ui.R` 4. Call it in `app_server()` with `mod_<name>_server("module_id")` 5. Run tests with `devtools::test()`
Ver no GitHub