Skip to main content

golem-fix-missing-ns-colin

Validate that all module input/output IDs are properly namespaced. Triggers on: - "check my modules for missing ns" - "find missing ns in modules" - "validate module namespaces" 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-agent-skills
Última atividade na origem
20 de abril de 2026 às 06:32
Idioma detectado do SKILL.md
inglês
Estrelas
5
Forks
1

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-fix-missing-ns-colin
description
Validate that all module input/output IDs are properly namespaced. Triggers on: - "check my modules for missing ns" - "find missing ns in modules" - "validate module namespaces" Do not trigger on: - when the user is not working inside a golem app
# Check for Missing `ns()` in Modules Validate that all module input/output IDs are properly namespaced. ## Why Namespacing Matters In Shiny modules, all input and output IDs must be namespaced using the `ns()` function. This prevents ID conflicts when the same module is used multiple times in an app. ## Correct vs Incorrect ### ✅ Correct ```r mod_analytics_ui <- function(id) { ns <- NS(id) tagList( selectInput( ns("type_filter"), label = NULL, choices = c("All", "None") ) ) } ``` ### ❌ Incorrect ```r mod_analytics_ui <- function(id) { ns <- NS(id) tagList( selectInput( "type_filter", # Missing ns()! label = NULL, choices = c("All", "None") ) ) } ``` ## What to Check ### In Module UI Functions - All input IDs: `textInput()`, `selectInput()`, `actionButton()`, etc. - All output IDs: `plotOutput()`, `tableOutput()`, `uiOutput()`, etc. - All input control IDs used in `ns()` calls ### In Module Server Functions - JavaScript handler IDs that reference the module namespace - `observeEvent(input$...)` references - `output$...` definitions - `renderUI()` generated element IDs ### Places to Look - Any file starting with `mod_` in the `R/` directory - Both UI and server functions within modules ## How Claude Checks 1. **Locate all IDs** in module files (files starting with `mod_`) - Search for common patterns: `Input()`, `Output()`, input/output IDs 2. **Verify namespacing** by checking each ID is wrapped in `ns()` - Exception: Only the first `NS(id)` definition doesn't need wrapping 3. **Report findings** - If all IDs are properly namespaced: ✅ All good - If missing IDs found: ❌ List them and ask for permission to fix 4. **Fix if approved** - Wrap missing IDs in `ns()` - Preserve code structure and formatting ## Common Mistakes | Mistake | Fix | |---------|-----| | `selectInput("myid", ...)` | `selectInput(ns("myid"), ...)` | | `plotOutput("plot")` | `plotOutput(ns("plot"))` | | `observeEvent(input$button)` | `observeEvent(input$submit, ...)` with ID properly namespaced | | `uiOutput("dynamic")` | `uiOutput(ns("dynamic"))` | ## When to Run - After creating or modifying module UI functions - Before running `devtools::check()` - When adding new inputs/outputs to modules - Before deploying to production ## Example Workflow ``` User: Check my modules for missing ns() Claude: 1. Scans all mod_*.R files 2. Identifies 3 missing ns() wrappings 3. Shows the issues with line numbers 4. Asks: "Should I fix these?" User: Yes, fix them Claude: - Updates the files - Runs the check again to verify - Confirms: "All fixed! ✅" ``` ## Notes - This check is for UI and reactive server code, not data processing functions - Only module files (`mod_*.R`) need this check - Regular functions (`fct_*.R`, `utils_*.R`) don't need namespace wrapping - Module server functions are called with the module ID, which handles the namespacing
Ver no GitHub