← Back to Internal system builders

Skill · Version 1.0.0

Reliable time-series charts

Makes trends and period comparisons understandable by handling time zones, missing measurements and incomplete periods explicitly.

time-series-temporal-aggregation

Team members using this skill

See how it helps

When is it useful?

Use when a daily or monthly chart could suggest a change caused by calendar boundaries or incomplete data.

What does it help you do?

  • Aligns reporting periods to the chosen time zone, including daylight-saving changes.
  • Shows missing measurements as gaps and distinguishes them from genuine zero activity.
  • Labels unfinished periods and moving averages so comparisons retain their meaning.

Try asking this

Build a daily sales chart for Budapest time. Mark today as incomplete, show missing imports as gaps and compare equivalent weekdays from the previous period. Include an import outage and a daylight-saving change in the sample. A missing day must remain a gap, while a verified zero-sales day appears as zero.

Detailed documentation

Read the skill’s original instructions, examples and checks in their authored language.

Details…Show less

Time Series & Temporal Aggregation

Use this skill when building time-series charts, date-range comparisons, rolling windows, or multi-granularity temporal views.

Explicit Timezone & Bucket Alignment

  1. Bucket in the Target Display Timezone, Not Accidental Browser Local Time:
    • Store and transmit timestamps in UTC ISO-8601 or epoch milliseconds, and bucket daily/weekly/monthly aggregations explicitly in the agreed reporting timezone (e.g., workspace timezone or UTC) using timezone-aware calendar arithmetic (Intl.DateTimeFormat, Temporal, or server-side AT TIME ZONE).
    • Display the active reporting timezone (UTC, Europe/Budapest, etc.) next to the date range picker.
  2. Handle Irregular Calendar Lengths & DST Transitions:
    • Account for 23-hour and 25-hour Daylight Saving Time days when plotting hourly series.
    • When comparing months (28–31 days) or leap years, clarify whether comparisons align by day-of-month index, elapsed days, or day-of-week (e.g., aligning Monday to Monday so weekend dips do not create false weekday anomalies).

Missing Buckets, Partial Periods & Rolling Windows

  • Never Fill Missing Time Buckets with 0 Unconditionally:
    • Distinguish sparse event streams (where zero rows in a bucket genuinely mean 0 orders/clicks in that hour, provided ingestion was healthy) from missing telemetry/measurements (where no sample was recorded, which must remain null and render as a gap).
  • Mark Incomplete Current Periods ("Partial Bucket"):
    • When viewing daily/weekly/monthly series that include the current in-progress bucket (today, this week, this month), style the trailing segment distinctly (dashed line, hatched bar, or "In progress" badge) so a partial day/month is never mistaken for a sudden cliff drop.
  • Labeled Smoothing & Moving Averages:
    • Never replace raw volatility with a smoothed curve (basis spline or moving average) without telling the viewer. Plot raw points/bars as muted context and overlay the explicitly labeled rolling window (7-day moving average) on top.

Checklist

  • Are time buckets aligned to the explicit reporting timezone rather than implicit browser local time?
  • Are missing measurements (null gaps) distinguished from observed 0 counts?
  • Is the current in-progress time bucket visually marked as partial so it does not look like a sudden drop?
  • Are period-over-period overlays (YoY, MoM, prior period) aligned sensibly for weekday/calendar shifts?

Included files 1

  • SKILL.md