build-parameterized-report
О программе
Этот навык позволяет разработчикам создавать параметризованные отчеты Quarto или R Markdown, которые могут быть программно отрендерены с различными входными данными для пакетной генерации. Он предназначен для автоматизации настраиваемых отчетов для различных отделов, клиентов или подмножеств данных на основе единого шаблона. Ключевые возможности включают определение параметров, программный рендеринг и автоматизацию регулярных отчетов с изменяющимися входными данными.
Быстрая установка
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/build-parameterized-reportСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
Build Parameterized Report
Create reports that accept parameters to generate multiple customized variations from a single template.
When to Use
- Generating the same report for different departments, regions, or time periods
- Creating client-specific reports from a template
- Building dashboards that filter to specific subsets
- Automating recurring reports with different inputs
Inputs
- Required: Report template (Quarto or R Markdown)
- Required: Parameter definitions (names, types, defaults)
- Optional: List of parameter values for batch generation
- Optional: Output directory for generated reports
Procedure
Step 1: Define Parameters in YAML
For Quarto (report.qmd):
---
title: "Sales Report: `r params$region`"
params:
region: "North America"
year: 2025
include_forecast: true
format:
html:
toc: true
---
For R Markdown (report.Rmd):
---
title: "Sales Report"
params:
region: "North America"
year: 2025
include_forecast: true
output: html_document
---
Got: The YAML header contains a params: block with named parameters, each having a default value of the correct type.
If fail: If rendering fails with "object 'params' not found", ensure the params: block is correctly indented under the YAML frontmatter. For Quarto, params must be at the top level of the YAML, not nested under format:.
Step 2: Use Parameters in Code
```{r}
#| label: filter-data
data <- full_dataset |>
filter(region == params$region, year == params$year)
nrow(data)
```
## Overview for `r params$region`
This report covers the `r params$region` region for `r params$year`.
```{r}
#| label: forecast
#| eval: !expr params$include_forecast
# This chunk only runs when include_forecast is TRUE
forecast_model <- forecast::auto.arima(data$sales)
forecast::autoplot(forecast_model)
```
Got: Code chunks reference parameters via params$name and conditional chunks use #| eval: !expr params$flag for Quarto. Inline R expressions like `r params$region` render dynamic text.
If fail: If params$name returns NULL, verify the parameter name matches exactly between the YAML definition and the code reference (case-sensitive). Check that default values are the correct type.
Step 3: Render with Custom Parameters
Single render:
# Quarto
quarto::quarto_render(
"report.qmd",
execute_params = list(region = "Europe", year = 2025)
)
# R Markdown
rmarkdown::render(
"report.Rmd",
params = list(region = "Europe", year = 2025),
output_file = "report-europe-2025.html"
)
Got: A single report renders successfully with custom parameter values overriding the YAML defaults. The output file is created at the specified path.
If fail: If Quarto render fails, check that quarto CLI is installed and on PATH. If R Markdown render fails, verify rmarkdown is installed. Ensure parameter names in execute_params (Quarto) or params (R Markdown) match the YAML definitions exactly.
Step 4: Batch Render Multiple Reports
regions <- c("North America", "Europe", "Asia Pacific", "Latin America")
years <- c(2024, 2025)
# Generate all combinations
combinations <- expand.grid(region = regions, year = years, stringsAsFactors = FALSE)
# Render each
purrr::pwalk(combinations, function(region, year) {
output_name <- sprintf("report-%s-%d.html",
tolower(gsub(" ", "-", region)), year)
quarto::quarto_render(
"report.qmd",
execute_params = list(region = region, year = year),
output_file = output_name
)
})
Got: One HTML file per region-year combination.
If fail: Check that parameter names match exactly between YAML and code. Ensure all parameter values are valid.
Step 5: Add Parameter Validation
#| label: validate-params
stopifnot(
"Region must be a valid region" = params$region %in% valid_regions,
"Year must be numeric" = is.numeric(params$year),
"Year must be reasonable" = params$year >= 2020 && params$year <= 2030
)
Got: The validation code chunk runs at the start of each render and stops with an informative error if any parameter is out of range or the wrong type.
If fail: If stopifnot() produces unhelpful error messages, switch to explicit if (!cond) stop("message") calls for clearer diagnostics.
Step 6: Organize Output
# Create output directory
output_dir <- file.path("reports", format(Sys.Date(), "%Y-%m"))
dir.create(output_dir, recursive = TRUE, showWarnings = FALSE)
# Render with output path
quarto::quarto_render(
"report.qmd",
execute_params = list(region = region),
output_file = file.path(output_dir, paste0("report-", region, ".html"))
)
Got: Output files are written to a date-stamped subdirectory with descriptive names (e.g., reports/2025-06/report-europe.html).
If fail: If dir.create() fails, check that the parent directory exists and is writable. On Windows, verify the path length does not exceed 260 characters.
Validation
- Report renders with default parameters
- Report renders with each set of custom parameters
- Parameters are validated before processing
- Output files are named descriptively
- Conditional sections render correctly based on parameters
- Batch generation completes for all combinations
Pitfalls
- Parameter name mismatch: YAML names must exactly match
params$namereferences in code - Type coercion: YAML may parse
year: 2025as integer but code expects character. Be explicit. - Conditional evaluation: Use
#| eval: !expr params$flagnoteval = params$flagin Quarto - File overwriting: Without unique output names, each render overwrites the previous
- Memory in batch mode: Long batch runs may accumulate memory. Consider using
callr::r()for isolation.
Related Skills
create-quarto-report- base Quarto document setupgenerate-statistical-tables- tables that adapt to parametersformat-apa-report- parameterized academic reports
GitHub репозиторий
Frequently asked questions
What is the build-parameterized-report skill?
build-parameterized-report is a Claude Skill by pjt222. Skills package instructions and resources that Claude loads on demand, so Claude can perform build-parameterized-report-related tasks without extra prompting.
How do I install build-parameterized-report?
Use the install commands on this page: add build-parameterized-report to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.
What category does build-parameterized-report belong to?
build-parameterized-report is in the Meta category, tagged automation and design.
Is build-parameterized-report free to use?
Yes. build-parameterized-report is listed on AIMCP and free to install. It runs inside Claude, so no separate service account is required to use the skill itself.
Похожие навыки
Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
