agentsclimarketplace

Dashboard reporting

Skill ahtishamshahzad/agent_dev_flow/.ai/skills/web/dashboard-reporting

Use to plan dashboard reports and charts — server-side aggregation, date-range/filter state in the URL, chart library evaluation, CSV/PDF export, scheduled reports, and handling slow queries (async generation, caching). Numbers must be verifiably correct before charts get pretty.From its SKILL.md

Install
npx -y skills add ahtishamshahzad/agent_dev_flow --skill dashboard-reporting

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.3 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

Dashboard Reporting

Purpose

Plan the dashboard's reporting surface: which metrics/reports exist, where aggregation happens (the server), how ranges and filters behave, how results render (tables/charts) and export, and how slow or heavy reports stay usable. Correctness of the numbers is the first requirement.

When to Use

  • When the dashboard needs metrics, charts, or downloadable reports.
  • When existing reports are slow, inconsistent between views, or aggregate in the browser.
  • Not for entity list views (dashboard-tables) — reports aggregate; tables enumerate.

Inputs

  • The metric/report inventory: definitions, dimensions, ranges, audiences.
  • Data source capabilities (aggregation endpoints, query cost) via web-api-integration.
  • Permissions: who sees which reports and exports (dashboard-permissions).

Discovery Questions

  • Which metrics matter, and what is each one's exact definition (timezone, inclusion rules, dedup)?
  • What ranges/granularity/filters do admins need — and which combinations are expensive?
  • Which reports need export (CSV/PDF) or scheduling/emailing?
  • How fresh must numbers be — live, hourly, daily?

Responsibilities

  • Pin metric definitions in writing — every ambiguity (timezone boundaries, cancelled orders, test accounts) resolved before implementation, so two views never disagree.
  • Put aggregation on the server (or warehouse): the browser renders aggregates; it does not compute them from raw rows.
  • Plan range/filter UX with state in the URL (shareable report views), sensible defaults, and comparison ranges where needed.
  • Evaluate the chart library against actual chart needs (types, theming via web-theme tokens, accessibility) — a decision, not a default.
  • Plan export: CSV from the same server aggregation as the view (not a client re-computation), PDF only if truly required; exports are permissioned (dashboard-permissions).
  • Plan scheduled reports (if needed) as a backend concern the dashboard configures.
  • Handle heavy queries: caching with declared freshness, async generation with notify-on-ready, or precomputed rollups — chosen per report cost.

Required Workflow

  1. Inventory reports/metrics; pin definitions with the user.
  2. Confirm server-side aggregation paths and their cost.
  3. Design range/filter/URL-state conventions and rendering (chart vs table) per report.
  4. Evaluate the chart library; plan export/scheduling where required.
  5. Record the plan, including the freshness/caching contract per report.

Decision Rules

  • If a metric's definition can't be stated in one sentence, it isn't ready to build.
  • Aggregation in the browser is acceptable only over small, already-loaded, bounded data.
  • Cache or precompute anything users wait >~2s for; declare staleness in the UI rather than hiding it.
  • Charts serve the question asked; if a table answers it better, use the table.

Rules

  • The same metric shows the same value everywhere it appears — one aggregation source per metric.
  • Exports carry the filters/permissions of the requesting view; no privilege escalation via export.
  • Chart colors/typography come from design tokens and work in both themes (web-theme).

Anti-Patterns

  • Fetching raw rows to sum them in JavaScript for a "total" tile.
  • Two dashboard pages computing "revenue" differently.
  • Unbounded ad-hoc range queries against production with no cache or cost control.
  • Decorative charts (3D pies, gratuitous animation) obscuring the numbers.

Validation Checklist

  • Reports/metrics inventoried; definitions pinned and user-confirmed.
  • Server-side aggregation confirmed per report; browser computes nothing material.
  • Range/filter/URL-state conventions defined.
  • Chart library evaluated with justification; theming/accessibility covered.
  • Export/scheduling planned and permissioned where required.
  • Freshness/caching contract recorded per report.

Definition of Done

A recorded reporting plan — pinned metric definitions, server-side aggregation paths, range/filter conventions, justified chart library, export/scheduling design, and a freshness contract — under which every displayed number has one authoritative source.

Related Skills

dashboard-tables, dashboard-permissions, web-server-state, web-api-integration, web-theme, web-performance, web-accessibility.

Related Knowledge

../../../knowledge/ (metric definitions, data model).

Related References

../../../references/web/dashboard/ (report specs, metric glossary — when populated).

Context Loading Guidance

  • Requires: report inventory, metric definitions, data-source capabilities.
  • Does not require: entity CRUD detail, customer-app features.
  • May load: web-server-state for caching mechanics; dashboard-permissions for export gating.
  • Stop when: the reporting plan and freshness contracts are recorded.

Token Efficiency Guidance

Keep a metric glossary table (name → definition → source → freshness) as the core artifact; per-report prose stays minimal.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,422. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.