From Claude-Data-Wrangler
Generate a polished PDF document from a dataset using Typst, with layout chosen to match the data shape (wide tables → landscape multi-page reference, narrow tables → portrait report, per-record → one-record-per-page card/profile layout, grouped → sectioned report). Supports user-selected field subsets, custom column labels, optional filtering/sorting, cover page, summary stats, and branded templates. Use when the user wants the dataset (or a slice of it) rendered as a shareable/printable document rather than a spreadsheet export.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin Claude-Data-WranglerThis skill uses the workspace's default tool permissions.
Render a dataset — or a user-defined slice of it — as a PDF via Typst, with layout driven by data shape.
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.
Render a dataset — or a user-defined slice of it — as a PDF via Typst, with layout driven by data shape.
The skill picks a layout based on data shape (and lets the user override):
| Shape | Layout | Description |
|---|---|---|
| Small narrow table (<10 cols, <50 rows) | Report (portrait) | Title, intro, table, footer |
| Wide table (>10 cols) | Landscape reference | Landscape orientation; column groups split across page blocks if needed |
| Many rows (>100) with logical groups | Sectioned report | Grouped by a user-chosen column; one section per group with a summary |
| Detailed per-record content | One-per-page profile | One record per page — label/value pairs, good for directory-style docs |
| Summary / dashboard | Exec summary | Page 1 key stats + top-N; appendix with full detail |
iso3166_alpha2 → "Country Code"). Provide an interactive mapping or a YAML config.WHERE and ORDER BY equivalent expressed in pandas terms.typst-document-generator plugin is installed), or user-supplied .typ.Locate and load the dataset. Profile columns (dtypes, cardinalities, null rates).
Suggest a layout based on shape; confirm with user.
Interactive field selection — list columns with defaults suggested. Let user drop columns and edit display labels. Save the selection as a side-car config data_to_document_config.yaml alongside the dataset so the same document can be regenerated later.
title: "Customers — Q1 2026"
subtitle: "Tier-1 accounts"
author: "Operations"
layout: sectioned
group_by: country_name
sort_by: [country_name, -revenue_numeric]
filter: "tier == 'T1' and active == True"
fields:
- column: name
label: "Customer"
width: 30%
- column: country_name
label: "Country"
width: 15%
- column: revenue_numeric
label: "Revenue (USD)"
width: 15%
format: "#,##0"
- column: signed_at
label: "Signed"
format: "%Y-%m-%d"
summary_stats: true
template: plain
Apply filter / sort / grouping via pandas.
Render a Typst document:
Number / date formatting — honour per-field format specifiers; default to dataset-locale-aware formatting via babel.
Compile:
typst compile document.typ document.pdf --input data=<path>.json
Pass the filtered dataset to Typst as a JSON input so the template stays data-agnostic.
Validate — check exit code, PDF page count sanity, and that the record count matches filtered rows.
Report output path; offer to open the PDF.
Update the data dictionary with a note that a document was generated from this slice (skill + date + config reference).
If the typst-document-generator plugin is installed, delegate template selection to its public-doc / personal-doc / dsr-client-confidential skills for visual consistency with other documents. Otherwise emit a self-contained standalone .typ file.
Related: data-dictionary-export produces a similar PDF but specifically for the dictionary file; this skill produces a PDF of the data itself.
typst CLI on PATH — install from https://typst.app/docs/.pandas, pyyaml, optionally babel for locale-aware number/date formatting.pip install pandas pyyaml babel
pii-flag first and exclude flagged columns by default; require explicit opt-in to include them.json-restructure or stringify with a length cap before rendering; long JSON in a cell will overflow.This skill is read-only on the source dataset and writes a new PDF alongside it. No backup policy step required unless the user asks it to overwrite an existing PDF — in which case follow CONVENTIONS.md and rename the prior output with a timestamp.