Back to Skills

build-parameterized-report

pjt222
Updated 5 days ago
17 views
17
2
17
View on GitHub
Metaautomationdesign

About

This skill enables developers to create parameterized Quarto or R Markdown reports that can be rendered with different inputs to generate multiple variations. It covers parameter definitions, programmatic rendering, and batch generation for automating repetitive reporting tasks. Use it when you need to generate the same report structure for different departments, clients, time periods, or data subsets from a single template.

Quick Install

Claude Code

Recommended
Primary
npx skills add pjt222/agent-almanac -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternative
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/build-parameterized-report

Copy and paste this command in Claude Code to install this skill

Documentation

建參之報

建受參之報,以諸入自一範生諸變。

用時

  • 為異部、區、時段生同報
  • 自範建客特之報
  • 建篩至特子集之盤
  • 以異入自動化週期報

  • 必要:報範(Quarto 或 R Markdown)
  • 必要:參定(名、類、默)
  • 可選:批生之參值列
  • 可選:輸出報之目

第一步:於 YAML 定參

Quarto(report.qmd):

---
title: "Sales Report: `r params$region`"
params:
  region: "North America"
  year: 2025
  include_forecast: true
format:
  html:
    toc: true
---

R Markdown(report.Rmd):

---
title: "Sales Report"
params:
  region: "North America"
  year: 2025
  include_forecast: true
output: html_document
---

得: YAML 頭含 params: 塊,諸名參各有正類之默值。

敗則: 若渲失以「object 'params' not found」,確 params: 塊正縮於 YAML 頭。Quarto 中 params 必居 YAML 頂級,非嵌 format: 下。

第二步:於碼用參

```{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)
```

得: 碼塊以 params$name 引參,條件塊用 #| eval: !expr params$flag(Quarto)。內聯 R 表如 `r params$region` 生動文。

敗則:params$name 返 NULL,驗參名於 YAML 與碼引全合(別大小)。察默值之類正。

第三步:以自訂參渲

單渲:

# 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"
)

得: 單報以自訂參值覆 YAML 默而成渲。輸出檔建於所指之路。

敗則: Quarto 敗者,察 quarto CLI 已裝且於 PATH。R Markdown 敗者,驗 rmarkdown 已裝。確 execute_params(Quarto)或 params(R Markdown)中參名全合 YAML 定。

第四步:批渲諸報

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
  )
})

得: 每區年之合生一 HTML 檔。

敗則: 察 YAML 與碼間參名全合。確諸參值有效。

第五步:加參之驗

#| 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
)

得: 驗碼塊於各渲之始行,若參逾範或類誤則以明錯止。

敗則:stopifnot() 之錯言不明,改為明 if (!cond) stop("message") 以清診。

第六步:組輸出

# 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"))
)

得: 輸出檔書於日戳之子目,含述名(如 reports/2025-06/report-europe.html)。

敗則:dir.create() 敗,察父目存而可書。Windows 上驗路不過 260 字。

  • 報以默參成渲
  • 報以諸自訂參集成渲
  • 參於處前已驗
  • 輸出檔以述名名之
  • 條件段依參正渲
  • 批生於諸合皆畢

  • 參名不合:YAML 名必全合碼中 params$name 之引
  • 型強轉:YAML 或解 year: 2025 為整而碼望字。宜明
  • 條件估:Quarto 用 #| eval: !expr params$flag,非 eval = params$flag
  • 檔覆寫:無獨輸名,每渲覆前
  • 批模之記:久批或累記。考用 callr::r() 以隔

  • create-quarto-report - 基 Quarto 檔立
  • generate-statistical-tables - 適參之表
  • format-apa-report - 參之學報

GitHub Repository

pjt222/agent-almanac
Path: i18n/wenyan/skills/build-parameterized-report
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Related Skills

content-collections

Meta

This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.

View skill

polymarket

Meta

This skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.

View skill

creating-opencode-plugins

Meta

This skill helps developers create OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It provides the plugin structure, event API specifications, and implementation patterns for JavaScript/TypeScript modules. Use it when you need to intercept, monitor, or extend the OpenCode AI assistant's lifecycle with custom event-driven logic.

View skill

sglang

Meta

SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.

View skill