Skill: Time-Series Plotting
Usage trends in the right shape for the reader, without fake drops from half-loaded months.
Overview
Show adoption trends in a shape a CRO can read at a glance. Claude only plots data that is really a series (monthly install detection), drops the incomplete current month and partly loaded months that would fake a collapse, and picks a labelled sparkline, a compact table, a line chart or one line of prose depending on the points and the question. Intent and spend stay snapshots, never invented history.
Use cases
Adoption trends that don't show a collapse that never happened
Before plotting monthly detection days, Claude removes the current month and any partly loaded month after the last verification, so a CSM doesn't escalate a churn risk caused by missing data.
A sparkline when the trend matters, a table when the values do
Six months of detection days render as a labelled sparkline scaled 0 to 31 with the momentum figure beside it, or as a month-by-month table when an audit needs exact numbers.
No invented intent history
Asked for intent over time, Claude shows the current snapshot with its trend value and last-seen date and says no history is available, instead of drawing a line the data doesn't contain.
View full skill
Time-Series Plotting
When to use
- Authoring a workflow output that includes a trend over time, such as monthly product detection from
company_install_time_series. - Reviewing a generated chart that's the wrong shape for its audience.
Which data is a series
Only company_install_time_series returns a series: one point per month per product, where data_points[].intensity is the number of days the product was detected that month (1 to 31). Intent (company_intent), headcount and spend are snapshots. Never draw them as a line over time, and never fill in past values. If the user asks for intent over time, show the current snapshot with its trend value and last_seen_at, and say no history is available.
Prepare the series before plotting
- Drop the current month. The last point is a null tail because the month is incomplete.
- Drop partial months. The last complete month is often only partly loaded: detection stops at
product_last_verified_date. Drop the month containing that date (unless it is at month end) and any later month. Plotted as-is, it looks like a collapse. - Mid-series null = no detection that month. Plot it as 0 and say so; don't interpolate.
- Never mix scales.
current_intensityis an all-time aggregate, not on the 1 to 31 scale. Keep it off the chart. - One country scope per chart. With
granularity:"country"the same product repeats percountry_code; plot one country per line or use the global rows.
Shape decision rule
| Data Shape | Best Representation |
|---|---|
| 3 to 12 points, single series, trend matters | Sparkline (▁▂▃▅▇) |
| 3 to 12 points, single series, exact values matter | Compact table (month / value) |
| 12+ points, single series | Line chart (image or rendered) |
| Multiple series | Multi-line chart (rendered) |
| Comparing 2 or 3 specific months | Inline prose ("detection fell from 29 to 8 days a month between May and Aug") |
Sparkline conventions
When the shape of the trend matters more than the exact values:
Product X detection days, Mar to Aug 2026: █▇▇▅▃▂
Use the Unicode block characters ▁▂▃▄▅▆▇█, scaled to 0 to 31 days so sparklines for different products are comparable. Always prefix with the metric name and the time window. Don't use sparklines without labels.
Table conventions
When the exact values matter (an audit or a follow-up question):
| Month | Detection Days |
|---|---|
| Mar 2026 | 30 |
| Apr 2026 | 28 |
| May 2026 | 29 |
| Jun 2026 | 21 |
| Jul 2026 | 12 |
| Aug 2026 | 8 |
- Prefer "Jan 2026" month format; avoid "1/26", which is ambiguous between day and month.
- Title Case for table headers.
- Add
intensity_momentumbeside the table or in its caption: it is the direction signal (-20 or below = declining, +20 or above = growing).
Axis labeling for non-technical readers
A non-technical reader includes most CROs and AEs.
- Time axis: months or quarters, never timestamps.
- Value axis: include units: "Days detected per month (0 to 31)". Core products saturate at 28 to 31, so a flat line at the top means steady use, not a lack of growth.
- Annotations: when a sourced event explains a change (an acquisition, a migration announcement), annotate inline and cite it: "Jun 2026: migration announced [web_search]". Don't annotate with guesses.
Common pitfalls
- Plotting the null current month or a partly loaded month as 0. It creates a fake collapse.
- Charting intent or headcount over time. No tool returns those as a series.
- Rendering a 30-row table when a sparkline would do. The table buries the trend.
- Rendering a sparkline when the reader needs a specific value. "Did detection drop below 10 days?" can't be answered from
▁▂▄▅▇█. - Unitless axes. "Went from 30 to 8": thirty what?
Reference
- V2 tool docs: https://phoenix.hginsights.com/docs/mcp-tools/v2/company-install-time-series
- Full docs for LLMs: https://phoenix.hginsights.com/docs/llms-full.txt
- Related skills:
tabular-summary-discipline,executive-prose-conventions,hg-momentum-signals