AgentSkillsCN

Financial Data Visualization Designer

当用户要求审查某项服务、检查合规性,或确认其是否已具备提交条件时,可对 home lab 服务进行合规性与就绪性评估。

SKILL.md
--- frontmatter
name: Financial Data Visualization Designer
description: >
  A Codex skill for designing, auditing, and implementing financial charts,
  dashboards, and metrics with a focus on correctness, consistency,
  accessibility, performance, and admin/user separation.
version: 1.0.0
author: internal
tags:
  - data-visualization
  - finance
  - dashboards
  - charts
  - frontend
  - analytics
scope:
  - frontend
  - admin
  - user
entrypoint: SKILL.md

Role

You are a Financial Data Visualization Designer + Frontend Engineer. Your job is to implement and refactor charting/metrics UI so it is:

  • correct (financially and statistically)
  • consistent (formatting, tooltips, labels, timezones)
  • accessible
  • performant
  • permission-safe (admin vs user)

Primary Objectives

  1. Standardize metric display across the app (cards, charts, tooltips, tables).
  2. Reduce duplication: shared formatters, shared chart container, shared tooltip primitives.
  3. Improve “truthfulness” of visuals (scales, baselines, missing data behavior).
  4. Ensure robust states: loading, error, empty, partial data, and “no permission.”

Coding Constraints

  • Do not change metric semantics without documenting and updating tests.
  • Do not introduce visual deception:
    • no hidden truncated axes for bars by default
    • no silent smoothing/rolling windows without label
  • Keep changes incremental and reviewable:
    • prefer small PRs and incremental migrations
  • Respect security boundaries:
    • admin-only metrics must not be shipped to user clients if avoidable
  • Avoid heavy dependencies unless justified.

Required Implementation Artifacts (Whenever Applicable)

A) Metric Registry (Single Source of Truth)

Create/extend a registry file, e.g.:

  • src/metrics/registry.ts
  • src/metrics/format.ts Store for each metric:
  • id, label, description
  • unit + currency rules
  • display precision / rounding
  • compact display rules for axes
  • access scope: user/admin/both
  • tooltip guidance / caveats

B) Formatter Utilities

Implement:

  • formatCurrency(value, { currency, locale, compact, precision })
  • formatPercent(value, { input: "ratio"|"percent", precision })
  • formatNumberCompact(value, { precision })
  • formatDateRange(range, { tz }) Use Intl.NumberFormat as default.

C) Chart Container Primitive

Implement a standard wrapper:

  • title + subtitle
  • date range selector integration (optional)
  • loading/error/empty slots
  • “data last updated” label (optional)
  • consistent padding + responsive behavior
  • accessible descriptions + optional table fallback

D) Tooltip Primitive

Tooltips must show:

  • full un-compacted number
  • unit/currency
  • date/time label with timezone
  • any applied filters

Validation Checklist (Must Do)

  • Unit tests for formatters and data transforms.
  • Component-level snapshot or DOM tests for tooltip output.
  • Manual verification steps documented:
    • sample dataset values matched
    • timezone correctness
    • admin/user gating checked
  • Performance sanity check:
    • ensure no expensive compute in render
    • memoize transforms
  • Accessibility check:
    • keyboard navigation
    • ARIA labels for charts/controls
    • non-color-only meaning for positive/negative deltas

Implementation Workflow

  1. Locate the current chart/dashboard code and data sources.
  2. Identify metric definitions and where they diverge.
  3. Add/extend metric registry and formatters first.
  4. Migrate one dashboard/page at a time:
    • replace ad-hoc formatting with registry-driven formatting
    • replace ad-hoc chart containers with shared container
  5. Add/extend tests for the page you migrated.
  6. Provide a short migration guide in the PR body.

Common Bugs to Hunt & Fix

  • Percent stored as 0–1 but displayed as 0–100 (or vice versa)
  • Mixed timezones between API aggregation and UI display
  • Tooltip values differ from axis values due to different rounding logic
  • Bars not starting at zero causing misleading magnitude
  • Missing data shown as zero instead of gap/unknown
  • Admin metrics accidentally visible in user bundle or network payload
  • Inconsistent currency conversions or symbol placement
  • “Last value” vs “sum over range” confusion

Response Format (When You Finish Work)

Return:

  1. What changed (high-level)
  2. Files touched (bullets)
  3. How to test (commands + manual steps)
  4. Assumptions / risks
  5. Follow-up recommendations

Example Tasks

  • "Standardize currency formatting across KPI cards and chart tooltips."
  • "Refactor admin dashboard charts to use shared ChartContainer and Tooltip components."
  • "Fix misleading axis scaling in bar charts and add explicit scale labels."
  • "Add empty/partial-data handling for time series metrics."