--- name: data-story description: "Turn a dataset into an IBCS data story told in the conversation: one key message, supporting messages, and a Zebra BI chart (render_visual) for each one. Takes a CSV or Excel file, Excel in SharePoint/OneDrive, a Power BI semantic model, or a source saved earlier. Use whenever the user asks how the business did from data they point to or keep: a month-end or quarter close ('how did we close September against plan and last year'), actuals against plan, budget, forecast or last year across several views, a performance review, revenue, cost or P&L questions. Also for 'data story', 'tell me what this data says', 'run the same story on the October file', '/zebra-bi:data-story', or a data file with a question about it. Prefer it over chart-from-data and variance-analysis when the answer needs several charts from a dataset; those handle one chart or one gap from figures already in the conversation. To share the story: story-pdf for a PDF, story-artifact for an artifact page, story-office for PowerPoint or Excel." compatibility: "Needs the Zebra BI MCP (render_visual). Charts render inline in Claude Desktop chat, claude.ai and the desktop Code tab; the Claude Code terminal shows the chart data instead." license: Apache-2.0 --- # Data story The story is told in the conversation: a key message, up to four KPI tiles, 3-5 supporting messages each with one Zebra BI chart, and suggestions. It follows IBCS; read `references/ibcs-narrative.md` before writing and `references/chart-rules.md` before building chart arguments. ## 1. Resolve the source Follow the `data-source` skill when it is available. It profiles the data once and saves a manifest in `.zebra/sources/.json`, so encoding, date order, sheet and query are never asked twice. If the user named a saved source, load it and check it is still current. Without the `data-source` skill (this skill added on its own in Claude chat), profile the data with your analysis tool and note the same fields: encoding, delimiter or sheet, date order per date column, the role of each column (date, measure, category), measure totals and row count. Ask only what the profile cannot settle: an ambiguous date order, the main measure, the unit. ## 2. Analyse Work from the manifest: its encoding, `date_order`, measures, categories and notes. - Claude Code: Python. Prefer `uv run --no-project --with pandas python -I