Skip to main content

develop-data-analysis-dashboard

Data analysis dashboard (instrument panel) development skill. Use when users need to develop data dashboards, create/edit Dashboard projects, build large-screen data boards, or perform dashboard data cleaning. Includes dashboard project creation, card plan, data cleaning (data_cleaning.py), card management tools (create_dashboard_cards, update_dashboard_cards, delete_dashboard_cards, query_dashboard_cards), map download tool (download_dashboard_maps), dashboard development, and validation.

Source facts

Repository
dtyq/magic
Last source activity
May 21, 2026 at 19:15
Detected SKILL.md language
English
Stars
5,081
Forks
565

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
develop-data-analysis-dashboard
description
Data analysis dashboard (instrument panel) development skill. Use when users need to develop data dashboards, create/edit Dashboard projects, build large-screen data boards, or perform dashboard data cleaning. Includes dashboard project creation, card plan, data cleaning (data_cleaning.py), card management tools (create_dashboard_cards, update_dashboard_cards, delete_dashboard_cards, query_dashboard_cards), map download tool (download_dashboard_maps), dashboard development, and validation.
# Data Analysis Dashboard Development Skill Provides full data analysis dashboard (instrument panel) development capabilities—project creation, card plan, data cleaning, dashboard development, validation, and delivery—as one end-to-end workflow. Data cleaning is an important part of dashboard development. --- ## Code Execution Method All tool calls via `from sdk.tool import tool` in this skill must be executed by passing code to `run_sdk_snippet`'s `python_code` parameter. When a skill snippet calls tools through the SDK, always use `result.ok` to determine success and read failure details from `result.content`. Do not read or call `result.error`, because SDK `Result` stores failure text in `content`. --- ## Quick Start **Important**: Detailed rules are inlined later in this document; while executing steps, consult Workflow Summary, Project Setup, Dashboard Development, and Dashboard Data Cleaning Guide. **Runtime base files**: Do not modify, overwrite, or delete `index.html`, `dashboard.js`, or `index.css`; violations make the data dashboard unusable. **Default card counts for new dashboards — MANDATORY unless the user explicitly requests a reduced scope:** | Card type | Required count | Notes | | --------- | -------------- | ---------------------------------------------------------------------------- | | metric | **≥ 6** | Key KPI overview cards | | echarts | **26 – 30** | Core of the dashboard; pad with same-type charts across different dimensions | | table | **2 – 3** | At least 1 must be a detail-level table | | markdown | 0 | Omit unless the user asks for notes/commentary | | **Total** | **34 – 39** | Self-check before delivery | **Enforcement rules (non-negotiable):** - You **must** list every card in `cards_plan` before calling `create_dashboard_project`; do not defer cards to later. - `card_id` in `cards_plan` must exactly match the `id` used in subsequent `create_dashboard_cards` calls. - If echarts count falls short, add same-type charts covering different dimensions or time ranges — do **not** lower the floor. - Before delivery, call `query_dashboard_cards` and count by `type`; if any type is below the required count, create the missing cards before proceeding. - These counts are overridden **only** when the user explicitly states they want a smaller dashboard. --- ## Workflow Summary **Path overview** - **New dashboard**: Planning prep (brainstorm + read sources) → Create dashboard project → Data cleaning → Dashboard development → Validate → Complete delivery - **Edit dashboard**: Project identification → Data cleaning (as needed) → Dashboard editing and card-tool maintenance → Validate → Complete delivery **Step details** - **Project identification**: Understand user needs and identify the target project (edit scenarios) - **Planning prep (new dashboards)**: Before `create_dashboard_project`, brainstorm questions and angles; **read sources in depth** (fields, grain, definitions, time, distributions, missingness, comparable dimensions), then author `cards_plan` strictly following the **mandatory counts in Quick Start** (metric ≥6, echarts 26–30, table 2–3, total 34–39)—**every card must be listed before project creation**; a handful of representative charts is not acceptable - **Create project**: Must call `create_dashboard_project` with the required `cards_plan` in the same call; the tool writes `cards_plan.md` from it; plan card identifiers must match `id` in later `create_dashboard_cards` - **Data cleaning**: From `cards_plan.md` and data goals, create and run `data_cleaning.py` in the project to supply data for the dashboard - **Dashboard editing**: Change allowed files as needed (e.g. data_cleaning.py, cleaned_data/, config.js; never modify or delete index.html, dashboard.js, index.css) (edit scenarios) - **Dashboard development**: Per `cards_plan.md`, use card tools (create_dashboard_cards, update_dashboard_cards, delete_dashboard_cards, query_dashboard_cards) to create or maintain cards - **Validate dashboard**: Call `validate_dashboard(project_path="PROJECT_NAME")`; fix errors and re-run until passing (do not delete cards to pass validation) - **Complete delivery**: Summarize the project and analysis results, then close the task **Core principles** Follow the steps in order; validation must pass before delivery or the page will not work. Never modify, overwrite, or delete `index.html`, `dashboard.js`, or `index.css`, or the data dashboard becomes unusable (maintain allowed files such as `data.js` only via card tools and other permitted paths). **Preferences** - New dashboards: **planning prep** first, then `cards_plan`; **strictly follow the mandatory card counts table in Quick Start** — metric ≥6, echarts 26–30, table 2–3, total 34–39; self-check with `query_dashboard_cards` before delivery - Prefer setting `title` on cards (skip on metric cards when it would duplicate the metric `label`) - Prefer ECharts; many charts → same-type charts across dimensions - Card standard size examples (24-column grid): metric `{w:4,h:3}`, chart `{w:8,h:8}`, table `{w:12,h:8}`, Markdown `{w:12,h:(calculate height based on content)}` --- ## Decision Tree New or edit dashboard? ├─ New → Planning prep (brainstorm, read sources) → Author cards_plan [metric ≥6, echarts 26–30, table 2–3, total 34–39, ALL cards listed] → create_dashboard_project → Data cleaning → Dashboard development → Validate → Complete delivery └─ Edit → Identify existing dashboard project → Data cleaning (as needed) → Dashboard development/editing → Validate → Complete delivery Need data cleaning? ├─ New dashboard → Must execute data_cleaning.py ├─ Edit dashboard with data/requirement changes → Execute as needed └─ Edit dashboard without changes → Can skip Card count check before delivery? ├─ call query_dashboard_cards → count by type ├─ metric < 6 or echarts < 26 or table < 2 → create missing cards first └─ counts met → proceed to validate Validation failed? → Fix issues and re-run validate_dashboard until result.ok with no errors --- ## Core Tools ### create_dashboard_project — Create Dashboard Project | Param | Required | Type | Description | | ------------ | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | Yes | string | Project name; the dashboard is created under this directory in the workspace | | `cards_plan` | Yes | array | Card plan list (at least one item); the tool generates `cards_plan.md` from this; field definitions and how to author entries are in the tool usage example below | Finish **Planning prep**, then author `cards_plan`. For new dashboards, the mandatory per-type counts are defined in Quick Start under **Default card counts for new dashboards** (metric ≥6, echarts 26–30, table 2–3, total 34–39). **You must list every card in `cards_plan` before calling this tool — partial plans are not allowed.** Only if the user explicitly requests a reduced dashboard may you go below these counts; otherwise every card must be listed upfront. You may call `create_dashboard_cards` in batches after project creation. This tool does not validate counts — it is your responsibility to meet them. **Return (`result`)**: On success `result.ok` is true and `result.content` includes the created path and related information; on failure `result.ok` is false and `result.content` contains the error (e.g. "Directory already exists"). ### validate_dashboard — Validate Dashboard | Param | Required | Type | Description | | -------------- | -------- | ------ | ------------------------------------------------------------ | | `project_path` | Yes | string | Dashboard project directory path, relative to workspace root | **Return (`result`)**: On success `result.ok` is true with no errors; on failure `result.ok` is false and `result.content` contains validation failure reasons. **Validation must pass before delivery; otherwise the page will not be accessible.** ### Card Management Tools You must use the card management tools to work on `data.js`; direct editing is strictly prohibited. Card fields and CardData are defined under Card Data DSL below; layout workflow and validation are under Dashboard Development. | Tool | Description | | ---------------------- | -------------------------------------------------------------------------- | | create_dashboard_cards | Batch create; prefer ≤6 `cards`/call; `auto_layout` (may omit `layout`) | | update_dashboard_cards | Batch update; 1–10 `updates`/call, prefer ≤6; single-field edits supported | | delete_dashboard_cards | Batch delete; `card_ids` 1–20; auto-compacts layout after delete | | query_dashboard_cards | Query all or by id; optional `fields` to filter returned properties | **create_dashboard_cards** `auto_layout` (default false): When true, omit per-card `layout`; the tool generates gap-free layout by type order to reduce validate churn. Recommend `auto_layout=true` for new dashboards. Prefer about 6 or fewer `cards` per call when feasible (not a hard cap). | Param | Required | Type | Description | | -------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------ | | `project_path` | Yes | string | Dashboard project path | | `cards` | Yes | List | Card list; each item has id, type, source, getCardData; when auto_layout=true, `layout` may be omitted | | `auto_layout` | No | boolean | When true, omit `layout` and let the tool fill the grid | **update_dashboard_cards** Each update must include `id` and at least one other field to change (type, source, title, titleAlign, layout, getCardData, etc.). `layout` accepts partial objects (e.g. only `y`). | Param | Required | Type | Description | | -------------- | -------- | ------ | ---------------------------------------------- | | `project_path` | Yes | string | Dashboard project path | | `updates` | Yes | List | Update objects, 1–10 items; prefer ≤6 per call | **delete_dashboard_cards** | Param | Required | Type | Description | | -------------- | -------- | --------- | ---------------------------------------- | | `project_path` | Yes | string | Dashboard project path | | `card_ids` | Yes | List[str] | IDs to delete, 1–20 items, no duplicates | **query_dashboard_cards** | Param | Required | Type | Description | | -------------- | -------- | --------- | ---------------------------------------------------------------------------------------------- | | `project_path` | Yes | string | Dashboard project path | | `card_ids` | No | List[str] | Omit for all cards; if set, 1–20 IDs |
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub