Help us improve
Share bugs, ideas, or general feedback.
From typst-notes
This skill should be used when deciding whether to add charts, diagrams, flowcharts, or other data visualizations to a Typst document. Provides guidance on when and how to use CeTZ-Plot, Fletcher, Pintorita, and custom CeTZ drawings for infographic generation.
npx claudepluginhub jskswamy/claude-plugins --plugin typst-notesHow this skill is triggered — by the user, by Claude, or both
Slash command
/typst-notes:infographicsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Add a visualization when content contains:
Generates branded infographics using @antv/infographic with 114 templates across 7 categories for data visualizations, process diagrams, timelines, and comparisons.
Generates AntV Infographic DSL code from text content to create data visualizations. Activates when users request infographic creation.
Technical diagram creation with visual design principles: format selection, layout, readability, and aesthetics. Invoke whenever task involves any interaction with diagrams — creating, reviewing, or improving visual representations of systems, processes, data flows, or relationships using Excalidraw or Mermaid.
Share bugs, ideas, or general feedback.
Add a visualization when content contains:
| Content Pattern | Visualization Type | Package |
|---|---|---|
| 3+ numeric values being compared | Bar chart | CeTZ-Plot |
| Values changing over time/sequence | Line chart | CeTZ-Plot |
| Percentage breakdown | Pie/donut chart | CeTZ-Plot |
| Step-by-step process (3+ steps) | Flowchart | Fletcher |
| System with 3+ connected components | Architecture diagram | Fletcher |
| Request/response between services | Sequence diagram | Pintorita |
| Hierarchical concepts | Mind map | CeTZ (custom) |
| Before/after comparison | Side-by-side boxes | Layout (no package) |
| Pro/con analysis | Two-column layout | Layout (no package) |
Best for: Comparing quantities across categories.
#import "@preview/cetz:0.3.4"
#import "@preview/cetz-plot:0.1.1": chart
#cetz.canvas({
chart.barchart(
size: (9, 5),
label-key: 0,
value-key: 1,
(
("Q1 Revenue", 2.4),
("Q2 Revenue", 3.1),
("Q3 Revenue", 2.8),
("Q4 Revenue", 3.5),
),
bar-style: (fill: theme.chart-1.lighten(40%), stroke: theme.chart-1),
)
})
Tips:
Best for: Showing trends over time or continuous data.
#import "@preview/cetz:0.3.4"
#import "@preview/cetz-plot:0.1.1": plot
#cetz.canvas({
plot.plot(
size: (10, 5),
x-label: "Month",
y-label: "Users (K)",
x-tick-step: 1,
{
plot.add(
((1, 12), (2, 15), (3, 18), (4, 22), (5, 28), (6, 35)),
style: (stroke: 2pt + theme.chart-1),
label: "Active Users",
)
plot.add(
((1, 8), (2, 10), (3, 11), (4, 14), (5, 16), (6, 20)),
style: (stroke: 2pt + theme.chart-2, dash: "dashed"),
label: "Paying Users",
)
},
)
})
Tips:
Best for: Processes, decision trees, workflows.
#import "@preview/fletcher:0.5.8" as fletcher: diagram, node, edge
#diagram(
node-stroke: 0.5pt + theme.border,
spacing: (2em, 1.5em),
// Process nodes
node((0, 0), [Start], fill: theme.success.lighten(85%), shape: fletcher.shapes.pill),
node((1, 0), [Step 1], fill: theme.surface),
node((2, 0), [Decision?], fill: theme.warning.lighten(85%), shape: fletcher.shapes.diamond),
node((3, 0), [Step 2A], fill: theme.surface),
node((2, 1), [Step 2B], fill: theme.surface),
node((4, 0), [End], fill: theme.error.lighten(85%), shape: fletcher.shapes.pill),
// Flow edges
edge((0, 0), (1, 0), "->"),
edge((1, 0), (2, 0), "->"),
edge((2, 0), (3, 0), "->", [Yes]),
edge((2, 0), (2, 1), "->", [No]),
edge((3, 0), (4, 0), "->"),
edge((2, 1), (4, 0), "->", bend: 20deg),
)
Tips:
Best for: System components, microservices, layers.
#import "@preview/fletcher:0.5.8" as fletcher: diagram, node, edge
#diagram(
node-stroke: 0.5pt + theme.border,
spacing: (3em, 2em),
// Layers
node((0, 0), [Web App], fill: theme.chart-1.lighten(85%)),
node((2, 0), [Mobile App], fill: theme.chart-1.lighten(85%)),
node((1, 1), [API Gateway], fill: theme.chart-2.lighten(85%)),
node((0, 2), [Auth Service], fill: theme.chart-3.lighten(85%)),
node((1, 2), [Core Service], fill: theme.chart-3.lighten(85%)),
node((2, 2), [Notification], fill: theme.chart-3.lighten(85%)),
node((1, 3), [PostgreSQL], fill: theme.chart-4.lighten(85%)),
// Connections
edge((0, 0), (1, 1), "->"),
edge((2, 0), (1, 1), "->"),
edge((1, 1), (0, 2), "->"),
edge((1, 1), (1, 2), "->"),
edge((1, 1), (2, 2), "->"),
edge((0, 2), (1, 3), "->"),
edge((1, 2), (1, 3), "->"),
)
Tips:
Best for: API calls, authentication flows, message passing.
#import "@preview/pintorita:0.2.0"
#render(```
sequenceDiagram
participant U as User
participant C as Client
participant A as Auth
participant S as Server
U->>C: Login
C->>A: POST /auth/token
A-->>C: JWT Token
C->>S: GET /api/data (Bearer token)
S->>A: Validate token
A-->>S: Valid
S-->>C: 200 OK + Data
C-->>U: Display data
```)
Tips:
Best for: Concept relationships, brainstorming, topic overview.
Use the sketchnote-canvas function from visual-sketchnote.typ or build a custom CeTZ canvas:
#import "@preview/cetz:0.3.4"
#cetz.canvas(length: 1cm, {
import cetz.draw: *
// Central concept
circle((5, 5), radius: 1.2, fill: theme.primary.lighten(85%), stroke: 2pt + theme.primary)
content((5, 5), text(weight: "bold", size: 11pt)[Core Idea])
// Branches (positioned around center)
let branches = (
(angle: 0deg, label: "Topic A", color: theme.chart-1),
(angle: 72deg, label: "Topic B", color: theme.chart-2),
(angle: 144deg, label: "Topic C", color: theme.chart-3),
(angle: 216deg, label: "Topic D", color: theme.chart-4),
(angle: 288deg, label: "Topic E", color: theme.chart-5),
)
for b in branches {
let x = 5 + 3.5 * calc.cos(b.angle)
let y = 5 + 3.5 * calc.sin(b.angle)
line(
(5 + 1.2 * calc.cos(b.angle), 5 + 1.2 * calc.sin(b.angle)),
(x, y),
stroke: 1.5pt + b.color,
)
circle((x, y), radius: 0.8, fill: b.color.lighten(85%), stroke: 1pt + b.color)
content((x, y), text(size: 8pt, weight: "semibold", fill: b.color)[#b.label])
}
})
| Template | Max Chart Width | Recommended Height |
|---|---|---|
| Executive Summary | 100% (full width) | 5-6cm |
| Cheat Sheet | Per-column width | 3-4cm |
| Study Guide | 80-100% | 5-7cm |
| Technical Brief | 100% | 6-8cm |
| Visual Sketchnote | 100% | 8-12cm |
| Creative Portfolio | 100% | 5-6cm |
| Meeting Minutes | Avoid large charts | 4-5cm max |
Always use theme colors for consistency:
theme.chart-1 through theme.chart-5 for data seriestheme.primary for emphasistheme.surface for node backgroundstheme.border for strokestheme.text-secondary for labels