From claude-data-analyst
Produce a parametric PDF report describing a dataset — size, schema, distributions, key statistics, and findings from other skills — compiled via Typst. Use when the user wants a shareable, print-ready document about their data, not a one-off markdown summary.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin claude-data-analystThis skill uses the workspace's default tool permissions.
Generate a parametric dataset report as a Typst-compiled PDF. "Parametric" here means the report structure is fixed and reusable — you fill in the parameters (dataset path, title, sections to include, cut-offs) and the document regenerates from scratch.
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Share bugs, ideas, or general feedback.
Generate a parametric dataset report as a Typst-compiled PDF. "Parametric" here means the report structure is fixed and reusable — you fill in the parameters (dataset path, title, sections to include, cut-offs) and the document regenerates from scratch.
Use this skill when the user wants:
data-dictionary-creator, trend-analysis, correlation-analysis, standard-deviation, sample-size, forensic-sweep, etc.) into one artefact.For quick markdown summaries, use the reporting step inside the relevant analysis skill instead — this skill is for when PDF is the deliverable.
title — report title. Default: dataset filename.subtitle — e.g. snapshot date.author — defaults to system user.sections — which sections to include. Default: overview, schema, size, distributions, quality, findings.max_columns_profiled — cap detailed profiling for very wide tables. Default: 50.include_charts — boolean. Default: true.theme — plain / dsr-business / personal. Default: plain.duckdb — all stat computation.uv run --with pandas --with matplotlib python -c '...' — distribution plots rendered to PNG for Typst to embed. Matplotlib only (no seaborn) to keep dependencies minimal.typst — compile the document.typst-document-generator skills (public-doc, personal-doc, dsr-business-doc) — for themed output. When theme != plain, delegate final compilation to the matching skill.Create an output folder: outputs/data-reporting/<dataset-stem>-<YYYYMMDD>/:
outputs/data-reporting/sales-2026-04-23/
report.typ -- the Typst source
report.pdf -- compiled output
assets/
hist_price.png
hist_quantity.png
bar_category.png
missingness.png
data/
summary_stats.csv
schema.csv
params.json -- exact parameters used, for reproducibility
Resolve defaults. Validate that the dataset exists and is readable. Read row count and column count to calibrate the rest.
For each requested section, produce the underlying tables / values. Don't render yet — keep everything as CSV / JSON under data/ so the final compile is pure templating.
overview — dataset name, source path, row count, column count, file size, last modified, snapshot timestamp.
schema — per-column: name, inferred type, non-null count, null %, unique count, sample values. Cap to max_columns_profiled; note the cap in the report if hit.
size — delegate to sample-size skill (or inline the same computations): total n, unit of analysis (prompt the user if ambiguous), group cell sizes for any low-cardinality categorical.
distributions — for each numeric column: mean, median, SD, min, max, q25, q75, skew, kurtosis. For each categorical with ≤ 30 levels: top values with counts and %. Pull SD values from standard-deviation if already computed.
quality — null rates, duplicate row count, constant columns, suspected sentinel values. If forensic-sweep has been run, embed its headline verdict.
findings — include outputs from any prior skills the user has run (trend-analysis, correlation-analysis, multivariate-analysis, hypothesis-testing, data-enrichment). The user passes these in explicitly; don't rerun analyses.
include_charts)For each numeric column (up to max_columns_profiled): histogram PNG at assets/hist_<col>.png. 600×400 px, dpi=120, no title (Typst adds the caption).
For each included categorical: horizontal bar chart of top 15 levels at assets/bar_<col>.png.
One overall missingness chart: bar chart of null % per column at assets/missingness.png.
Keep the matplotlib script minimal — no styling flourishes. Typst handles presentation.
report.typEmit a single Typst file. Structure:
#set document(title: "<title>", author: "<author>")
#set page(paper: "a4", margin: 2cm, numbering: "1 / 1")
#set text(font: "New Computer Modern", size: 10pt)
#set heading(numbering: "1.1")
#align(center)[
#text(size: 20pt, weight: "bold")[<title>]
#v(0.3em)
#text(size: 12pt)[<subtitle>]
#v(0.3em)
#text(size: 10pt)[<author> · <snapshot-date>]
]
#outline()
= Overview
<overview prose + small table>
= Schema
#table(
columns: (auto, auto, auto, auto, auto),
[*Column*], [*Type*], [*Non-null*], [*Unique*], [*Sample*],
...rows...
)
= Sample Size
<size section>
= Distributions
== Numeric columns
<for each: summary row + histogram figure>
== Categorical columns
<for each: top-values table + bar figure>
= Data Quality
<null rates table, duplicate count, sentinel flags, forensic-sweep verdict if present>
= Findings
<embedded prior-skill outputs, one subsection each>
= Reproducibility
Generated <date> from `<dataset-path>`.
Parameters: see `params.json`.
Use #figure(image("assets/hist_price.png"), caption: [Distribution of price]) for charts. Use #table(...) for tabular data. Keep column widths readable — no tables wider than the page.
If theme == plain:
typst compile report.typ report.pdf
If theme is dsr-business, personal, or public: delegate to the matching typst-document-generator skill, passing the generated body. Those skills have the themed templates already wired; don't reinvent styling.
Verify the PDF exists and is non-trivially sized (> 10 KB).
Write params.json with the exact inputs (dataset path, absolute; all parameters resolved; skill version). This is what makes the report reproducible.
Tell the user:
typst compile outputs/.../report.typ).max_columns_profiled to include them").cargo install typst-cli or the release binary from typst.app).#page(flipped: true)[ ... ]).data-dictionary-creator for the schema section (use its output as-is) and sample-size / standard-deviation for the stat blocks — avoid re-implementing those computations here.