# Charts Source: https://docs.visk.com/charts Native, editable PowerPoint charts from HTML `` maps to Chart.js syntax and converts to a native PowerPoint chart. Supported types are `line`, `bar`, `area`, `scatter`, `pie`, `radar`, `bubble` and `waterfall`. Combo charts, mixing line, bar and area in one chart, are also supported. ## Components ### `` The container. Type is set with `type`, and size and position with ordinary CSS, either in document flow or absolutely with `box`. ```html theme={null} ... ``` Background fills (gradients included), outlines and border radius all work through `style`. ### `` and `` Both optional. ```html theme={null} ``` ### `` and `` `XAxis` defaults to a category axis, `YAxis` to linear. Override with `type`. | Attribute | Type | Description | | ------------- | ----------- | --------------------------------------------------------------------------------------------------------- | | `labels` | JSON array | Category labels: `'["A","B","C"]'` | | `border` | JSON object | Axis line: `'{"display":true,"width":1,"color":"#333"}'` | | `grid` | JSON object | Gridlines: `'{"display":true,"borderDash":[4,4],"color":"#ccc"}'` | | `ticks` | JSON object | Tick label font and colour | | `displayUnit` | JSON object | Axis label scaling: `'{"unit":"millions","display":true}'`. Data values and `min`/`max` stay full numbers | | `title` | JSON object | Axis title: `'{"text":"Units","font":{"size":"11pt"}}'` | | `min` / `max` | number | Explicit range | | `stacked` | string | `"true"` to stack, `"single"` for 100% normalised | | `display` | string | `"false"` hides the axis entirely | | `tickFormat` | string | Excel format code, e.g. `'"£"#,##0,,"m"'` | | `type` | string | `linear`, `category` or `time` | JSON attributes use a single-quoted outer wrapper: `attr='{"key":"val"}'`. **Number formatting gotchas.** In `tickFormat`, wrap alphabetic literals in quotes, because bare `m`, `d`, `y`, `h`, `s`, `a` and `p` are date and time tokens. For percentages use decimals with `tickFormat=0%`, so `0.08` renders as 8%. ### `` | Attribute | Type | Description | | ------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `label` | string | Series and legend name | | `data` | JSON array | Values, `null` for gaps. Full numbers, so `530000` rather than `530` for £530k; scale axis labels with `displayUnit`. Scatter uses `[["x","y"],...]` | | `borderColor` | CSS colour | Line or bar border | | `backgroundColor` | CSS colour | Bar fill or area fill | | `borderWidth` | number | Thickness in pt | | `borderDash` | JSON array | Dash pattern, e.g. `[5,5]` | | `fill` | bool | Fill under a line | | `tension` | 0–1 | Curve smoothing | | `pointRadius` | number | Marker size, 0 hides | | `pointStyle` | string | `circle`, `rect`, `triangle`, `star`, `cross` | | `pointBackgroundColor` / `pointBorderColor` | CSS colour | Marker fill and border | | `stack` | string | Datasets sharing a stack ID are stacked together | | `dataLabels` | JSON object | e.g. `'{"color":"#fff","font":{"weight":"bold"}}'` | Any attribute Chart.js accepts per point can take an array of values, one per data point. For bar charts, `position: insideEnd` in `dataLabels` puts the label inside the bar rather than above it. ## Colours Theme variables `var(--accent1)` through `var(--accent6)` track the deck palette, so a theme change carries into the chart. Literal `rgb()` and hex values also work. ## Defaults Styling is optional throughout, and PowerPoint's defaults apply when omitted: 1pt dark grey lines, dark grey text in the theme font, no gridlines. | Element | Default size | | ---------------- | ------------ | | Title | 18.6pt | | Legend labels | 12pt | | Axis tick labels | 12pt | | Axis title | 13.3pt | ## Examples ### Line chart with a forecast series ```html theme={null} ``` Multiple series, `null` for gaps, a dashed forecast that continues from the last actual, and currency formatting in millions. ### Stacked bar with data labels ```html theme={null} ``` Stacking needs both a shared `stack` ID on the datasets and `stacked="true"` on the value axis. ### Pie ```html theme={null} ``` For pie charts `labels` goes on `` rather than on an axis. ### Scatter and bubble ```html theme={null} ``` Bubble charts use the same `scatter` type with a third value per point for the radius: `data="[[0.7, 2.7, 10], [1.8, 3.2, 4]]"`. ## Chart variations | Variation | How | | ----------------- | ------------------------------------------------------------------------------ | | Area | `type="area"`, or `type="line"` with `fill="true"` on the dataset | | Dashed line | `borderDash="[5,5]"` on the dataset | | Stacked bar | Shared `stack="id"` on datasets, `stacked="true"` on the value axis | | 100% stacked | As stacked, plus `stacked="single"` and `tickFormat=0%` | | Horizontal bar | Categories on `YAxis` (`type="category"`), values on `XAxis` (`type="linear"`) | | Line with markers | Add `pointRadius`, `pointStyle`, `pointBackgroundColor` | | Time axis | `type="time"` on `XAxis` with `tickFormat="m/d/yyyy"` | | Radar | `type="radar"`, using `XAxis` for spoke labels | | Hide an axis | `display="false"` | ## Waterfall A single series showing deltas from a starting value. Bars listed in `subtotals` are absolute and anchored to zero; everything else floats as a delta. ```html theme={null} ``` Increase, decrease and total default to accents 1, 2 and 3. Override them with `formatOverrides` on the chart, or style individual bars with `pointOverrides` on the dataset. ## Combo charts Combos mix `line`, `bar` and `area`. Instead of one type on ``, each type gets a `` with its datasets nested inside. For a secondary axis, mark the second `` with `secondary="true"` (it moves to the right) and set `axis="secondary"` on the datasets that belong to it. ```html theme={null} ``` # Connectors Source: https://docs.visk.com/connectors Lines and arrows between shapes, for diagrams and flowcharts `` draws a line between two shapes and converts to a native PowerPoint connector, so it stays attached when someone moves the shapes in PowerPoint afterwards. For a plain horizontal or vertical rule that isn't attached to anything, use a `
` with `border-top` or `border-left` instead. ## Endpoints Each end of a connector is either a shape anchor or a coordinate, and the two can be mixed on the same connector. Shapes referenced by `from` or `to` need a unique integer `data-id`. ```html theme={null}
Discovery
Delivery
``` | Attribute | Description | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `from` / `to` | `"#id"`, or `"#id anchor"` where anchor is `top`, `left`, `bottom`, `right` or `closest`. Usually just give the id and let it resolve the best edge automatically | | `x1` / `y1`, `x2` / `y2` | Endpoint coordinates in pt, when not anchoring to a shape. No units needed | | `variant` | PowerPoint connector preset. Omit for a straight line | | `waypoints` | Space-separated percentages shifting the bend along the connector's axis. `50%` is the midpoint, `20%` sits closer to the start. One value per waypoint the variant supports | | `head` / `tail` | Arrow type: `arrow` or `triangle` | | `style` | `stroke`, `stroke-width`, and `border-style` (`solid`, `dashed`, `dotted`, `dashDot`, `longDash`) | `closest` connects to the nearest edge point facing the other endpoint, which is what you want for circles and hub shapes. ## Variants Variant names are PowerPoint's own presets, and the number is the **segment count**. A connector with N segments has N−1 corners, so `bentConnector2` is the single-elbow one. | Variant | Shape | Corners | Adjustable points | | ---------------- | ------------------------- | ------- | ----------------- | | *(omit)* | Straight line | 0 | 0 | | `bentConnector2` | L, one right-angle corner | 1 | 0 | | `bentConnector3` | Z, two corners | 2 | 1 | | `bentConnector4` | Three corners | 3 | 2 | | `bentConnector5` | Four corners | 4 | 3 | `curvedConnector2`–`5` follow the same pattern with smooth curves instead of right angles. Adjustable points are what `waypoints` shifts. `bentConnector2` has none because its corner is fixed by where the two endpoints sit, so it takes no `waypoints` value. ## Common forms ```html theme={null} ``` ## Diagram patterns Lay the shapes out with grid or flex, then add connectors. Positions resolve from the rendered layout, so you don't need to compute coordinates. ### Issue tree ```html theme={null}
Revenue declining
Pricing pressure
Churn increase
Volume drop
``` The root spans all three rows, so the middle child connects straight across while the outer two elbow. ### Horizontal flow ```html theme={null}
Input data
Process
Output
``` ### Hub and spoke ```html theme={null}
Core
platform
Analytics
API
Storage
Auth
``` `closest` on the hub means each spoke meets the circle at the point facing it, rather than all four converging on one edge. # Example prompts Source: https://docs.visk.com/examples A flavour of what to ask for once Visk is connected Once Visk is [connected](/setup), you just talk to your AI as usual — it picks up Visk when the task involves PowerPoint. Here's a flavour of what to ask for; copy one and make it yours. Where a prompt mentions a file, attach it in your MCP client, or point at its path in agent CLIs like Claude Code. ## From scratch Describe the deck and let the AI structure it slide by slide. > Create a 10-slide pitch deck for a seed-stage climate-tech startup called Verdant that sells rooftop-solar analytics to commercial landlords. > Turn this memo into a presentation for the exec team — keep it to 8 slides, one key message per slide, with a summary slide up front. \[paste the memo] > Build a deck explaining how our onboarding flow works, with a flow diagram slide showing the four stages. ## On your brand Give it your master template and every slide comes out in your colours, fonts, and layouts. > Here's our corporate template — build a 6-slide Q3 business review on it, using the existing layouts. > Use this deck as the brand reference and create a new presentation about our 2026 hiring plan in exactly the same style. ## Editing a deck Hand it an existing .pptx and ask for changes — they're applied in place. > Make slide 4 less wordy — cut it down to three bullets and tighten the headline. > Swap the chart on slide 2 to horizontal bars and sort the categories by value. > Screenshot every slide, find anything that overflows or looks cramped, and fix it. > Update all the numbers in this deck with the figures from the attached spreadsheet. ## Assembling & exporting Combine decks, reorder, and export the result. > Take slides 3–7 from this deck and merge them into the end of my draft, then renumber the agenda. > Add an agenda slide after the title slide, move the summary to the end, and export the deck as a PDF. The AI can also combine Visk with everything else it's connected to — pull numbers from your data sources, summarise documents, or run a deck build on a schedule inside an automated workflow. # Format overview Source: https://docs.visk.com/format The slide format agents read and write
For AI agents: a documentation index is available at [https://docs.visk.com/llms.txt](https://docs.visk.com/llms.txt). The full text of all docs is at [https://docs.visk.com/llms-full.txt](https://docs.visk.com/llms-full.txt). You may also fetch any page as Markdown by appending `.md` to its URL.
Visk represents a presentation as HTML: a deck is a series of slides, each an ordinary HTML element styled with ordinary CSS. Plain HTML is valid Visk HTML, and everything below the basics is an addition on top of it. Agents connected over MCP fetch this format themselves, so there's no need to supply it. This page is for understanding what they're working with. ## A slide A slide is `` or `
`. The two are interchangeable. Slides are 960pt x 540pt (16:9), and **all units are in points**. ```html theme={null}

Q3 revenue

  • Up 24% year on year
  • Enterprise now 61% of bookings
``` ## Theme CSS The presentation stylesheet holds the deck's theme. Editing it restyles the whole deck. ```html theme={null} ``` These names are reserved and map to PowerPoint's own theme. Additional variables and classes can be defined alongside them for presentation-wide styling. Reference them from slides as `var(--accent1)`. ## A whole deck To hand over an entire presentation at once, wrap slides in a `` with a single `
... slide 1 ...
... slide 2 ...
``` Put shared styling in that one `