build-parameterized-report
À propos
Cette compétence automatise la création de multiples variantes de rapports à partir d'un unique modèle Quarto ou R Markdown en utilisant un rendu paramétré et une génération par lots. Elle est conçue pour des scénarios tels que la génération de rapports spécifiques à un département, de tableaux de bord clients, ou d'analyses automatisées récurrentes avec différentes entrées. Les capacités clés incluent la définition de paramètres et le rendu programmatique de rapports pour différents jeux de données, périodes ou filtres.
Installation rapide
Claude Code
Recommandé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-reportCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
name: build-parameterized-report description: > Parametrisierte Quarto- oder R-Markdown-Berichte erstellen, die mit unterschiedlichen Eingaben gerendert werden koennen, um mehrere Varianten zu erzeugen. Umfasst Parameterdefinitionen, programmatisches Rendering und Batch-Generierung. Verwenden, wenn der gleiche Bericht fuer verschiedene Abteilungen, Regionen oder Zeitraeume erstellt, kundenspezifische Berichte aus einer einzelnen Vorlage erzeugt, Dashboards auf bestimmte Teilmengen gefiltert oder wiederkehrende Berichte mit wechselnden Eingaben automatisiert werden sollen. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: reporting complexity: intermediate language: R tags: quarto, parameterized, batch, automation, reporting locale: de source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16
Parametrisierten Bericht erstellen
Berichte erstellen, die Parameter akzeptieren, um mehrere angepasste Varianten aus einer einzelnen Vorlage zu generieren.
Wann verwenden
- Den gleichen Bericht fuer verschiedene Abteilungen, Regionen oder Zeitraeume generieren
- Kundenspezifische Berichte aus einer Vorlage erstellen
- Dashboards erstellen, die auf bestimmte Teilmengen filtern
- Wiederkehrende Berichte mit unterschiedlichen Eingaben automatisieren
Eingaben
- Erforderlich: Berichtsvorlage (Quarto oder R Markdown)
- Erforderlich: Parameterdefinitionen (Namen, Typen, Standardwerte)
- Optional: Liste von Parameterwerten fuer die Batch-Generierung
- Optional: Ausgabeverzeichnis fuer generierte Berichte
Vorgehensweise
Schritt 1: Parameter im YAML definieren
Fuer Quarto (report.qmd):
---
title: "Sales Report: `r params$region`"
params:
region: "North America"
year: 2025
include_forecast: true
format:
html:
toc: true
---
Fuer R Markdown (report.Rmd):
---
title: "Sales Report"
params:
region: "North America"
year: 2025
include_forecast: true
output: html_document
---
Erwartet: Der YAML-Header enthaelt einen params:-Block mit benannten Parametern, die jeweils einen Standardwert des korrekten Typs haben.
Bei Fehler: Wenn das Rendering mit "object 'params' not found" fehlschlaegt, sicherstellen, dass der params:-Block korrekt unter dem YAML-Frontmatter eingerueckt ist. Fuer Quarto muss params auf der obersten Ebene des YAML stehen, nicht unter format: verschachtelt.
Schritt 2: Parameter im Code verwenden
```{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)
```
Erwartet: Code-Chunks referenzieren Parameter ueber params$name und bedingte Chunks verwenden #| eval: !expr params$flag fuer Quarto. Inline-R-Ausdruecke wie `r params$region` rendern dynamischen Text.
Bei Fehler: Wenn params$name NULL zurueckgibt, sicherstellen, dass der Parametername exakt zwischen YAML-Definition und Code-Referenz uebereinstimmt (Gross-/Kleinschreibung beachten). Pruefen, ob Standardwerte den korrekten Typ haben.
Schritt 3: Mit benutzerdefinierten Parametern rendern
Einzelnes Rendering:
# 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"
)
Erwartet: Ein einzelner Bericht wird erfolgreich mit benutzerdefinierten Parameterwerten gerendert, die die YAML-Standardwerte ueberschreiben. Die Ausgabedatei wird am angegebenen Pfad erstellt.
Bei Fehler: Wenn Quarto-Rendering fehlschlaegt, pruefen, ob quarto-CLI installiert und im PATH ist. Wenn R-Markdown-Rendering fehlschlaegt, sicherstellen, dass rmarkdown installiert ist. Parameternamen in execute_params (Quarto) oder params (R Markdown) muessen exakt mit den YAML-Definitionen uebereinstimmen.
Schritt 4: Mehrere Berichte im Batch rendern
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
)
})
Erwartet: Eine HTML-Datei pro Region-Jahr-Kombination.
Bei Fehler: Pruefen, dass Parameternamen exakt zwischen YAML und Code uebereinstimmen. Sicherstellen, dass alle Parameterwerte gueltig sind.
Schritt 5: Parametervalidierung hinzufuegen
#| 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
)
Erwartet: Der Validierungs-Code-Chunk wird zu Beginn jedes Renderings ausgefuehrt und stoppt mit einer informativen Fehlermeldung, wenn ein Parameter ausserhalb des Bereichs liegt oder den falschen Typ hat.
Bei Fehler: Wenn stopifnot() wenig hilfreiche Fehlermeldungen erzeugt, auf explizite if (!cond) stop("message")-Aufrufe umstellen fuer klarere Diagnose.
Schritt 6: Ausgabe organisieren
# 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"))
)
Erwartet: Ausgabedateien werden in ein datumsbezogenes Unterverzeichnis mit beschreibenden Namen geschrieben (z.B. reports/2025-06/report-europe.html).
Bei Fehler: Wenn dir.create() fehlschlaegt, pruefen, ob das uebergeordnete Verzeichnis existiert und beschreibbar ist. Unter Windows sicherstellen, dass die Pfadlaenge 260 Zeichen nicht ueberschreitet.
Validierung
- Bericht rendert mit Standardparametern
- Bericht rendert mit jedem Satz benutzerdefinierter Parameter
- Parameter werden vor der Verarbeitung validiert
- Ausgabedateien sind beschreibend benannt
- Bedingte Abschnitte rendern korrekt basierend auf Parametern
- Batch-Generierung wird fuer alle Kombinationen abgeschlossen
Haeufige Fehler
- Parameternamen-Abweichung: YAML-Namen muessen exakt mit
params$name-Referenzen im Code uebereinstimmen - Typumwandlung: YAML kann
year: 2025als Integer parsen, aber Code erwartet Character. Explizit sein. - Bedingte Auswertung:
#| eval: !expr params$flagverwenden, nichteval = params$flagin Quarto - Datei-Ueberschreibung: Ohne eindeutige Ausgabenamen ueberschreibt jedes Rendering das vorherige
- Speicher im Batch-Modus: Lange Batch-Laeufe koennen Speicher ansammeln.
callr::r()fuer Isolation erwaegen.
Verwandte Skills
create-quarto-report- Basis-Quarto-Dokumenteinrichtunggenerate-statistical-tables- Tabellen, die sich an Parameter anpassenformat-apa-report- Parametrisierte akademische Berichte
Dépôt GitHub
Compétences associées
content-collections
MétaCette compétence propose une configuration éprouvée en production pour Content Collections, un outil axé sur TypeScript qui transforme des fichiers Markdown/MDX en collections de données typées de manière sûre avec une validation Zod. Utilisez-la lors de la création de blogs, de sites de documentation ou d'applications Vite + React riches en contenu pour garantir la sécurité de typage et la validation automatique du contenu. Elle couvre tout, de la configuration du plugin Vite et de la compilation MDX à l'optimisation des déploiements et la validation des schémas.
polymarket
MétaCette compétence permet aux développeurs de créer des applications avec la plateforme de marchés prédictifs Polymarket, incluant l'intégration d'API pour le trading et les données de marché. Elle fournit également une diffusion de données en temps réel via WebSocket pour surveiller les transactions en direct et l'activité du marché. Utilisez-la pour mettre en œuvre des stratégies de trading ou pour créer des outils traitant les mises à jour de marché en direct.
creating-opencode-plugins
MétaCette compétence aide les développeurs à créer des plugins OpenCode qui s'interconnectent avec plus de 25 types d'événements tels que les commandes, les fichiers et les opérations LSP. Elle fournit la structure du plugin, les spécifications de l'API événementielle et les modèles d'implémentation pour les modules JavaScript/TypeScript. Utilisez-la lorsque vous avez besoin d'intercepter, de surveiller ou d'étendre le cycle de vie de l'assistant IA OpenCode avec une logique personnalisée pilotée par les événements.
sglang
MétaSGLang est un framework de service LLM haute performance spécialisé dans la génération rapide et structurée pour les workflows JSON, regex et agentiques grâce à son cache de préfixe RadixAttention. Il offre une inférence nettement plus rapide, particulièrement pour les tâches avec des préfixes répétés, ce qui le rend idéal pour les sorties complexes et structurées ainsi que les conversations multi-tours. Choisissez SGLang plutôt que des alternatives comme vLLM lorsque vous avez besoin d'un décodage contraint ou que vous construisez des applications avec un partage étendu de préfixes.
