dashboard-builder
Skill20k starsChanged 3 years agoMITView on GitHub
Plan, generate, repair, and safely revise reusable dashboards from a selected database or registered multi-file tabular dataset through the DB-GPT Dashboard tools.
We split this skill into the rules it gives an agent
31 rules. 0 are common, 14 are distinctive, and 17 are very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
14
Distinctive
This author's own choices. Worth a look.
17
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 11
Use this skill when the user asks to create, revise, or repair a reusable data dashboard from the database selected in the data assistant.
- Distinctive: line 24
Use only the selected database.
- Distinctive: line 25
If no database is selected, ask the user to select one and stop.
- Very specific: line 41
Use sql_query only for the minimum read-only discovery needed to learn: table relationships, field types, data grain, date range, and …
- Distinctive: line 46
Use the server's temporal discovery evidence for every candidate time column: storage type, actual sample values, inferred format and …
- Distinctive: line 60
When the selected source came from multiple uploaded files, inventory every source table before planning:
- Very specific: line 65
treat __dbgpt_relationship_candidates only as hints, never as confirmed joins.
- Very specific: line 67
verify candidate keys with distinct-key overlap, unmatched rows, and one-to-one/one-to-many/many-to-many cardinality checks.
- Distinctive: line 69
never concatenate tables merely because columns match, and never join two fact tables at raw grain when that would multiply measures.
- Distinctive: line 72
Keep the user's requested scope: one component per listed analytical item.
- Very specific: line 75
If the requested period has no rows and an empty table is intended, set that table's expected_data_points to 0, preserving the exact …
- Very specific: line 77
Call plan_dashboard with exactly one plan argument containing a SQL-free plan object (a JSON-encoded string is also accepted).
- Distinctive: line 86
If a visual reference is selected, use its slot ids exactly once.
- Very specific: line 91
Do not add layout_template to the plan.
- Very specific: line 93
Stop the turn with terminate.
- Very specific: line 96
Never call create_dashboard_draft in the planning turn.
- Very specific: line 101
When the message contains an authoritative [[confirm-dashboard:ID]] marker:
- Distinctive: line 103
Use the persisted plan contract and its widget ids exactly.
- Very specific: line 104
Call create_dashboard_draft with the supplied dashboard id and expected revision.
- Distinctive: line 126
If a tool argument is reported as truncated or malformed JSON, do not resend the complete payload.
- Very specific: line 128
If a widget fails server validation, call repair_dashboard_draft only for failed widgets.
- Very specific: line 140
Do not add IS NULL guards for multi-select lists.
- Very specific: line 142
Never concatenate user values into SQL or emulate list membership using INSTR/LIKE and comma-delimited strings.
- Very specific: line 152
Use repair_dashboard_draft for query or encoding failures in an existing generated draft.
- Very specific: line 154
Use modify_dashboard_draft only for bounded changes explicitly requested by the user.
- Distinctive: line 158
Never silently apply an AI change that requires user review.
- Very specific: line 164
Do not reload this skill or call load_tools.
- Distinctive: line 173
Stop after the explanation or validated proposal.
- Distinctive: line 179
Before reporting success, rely on tool observations to verify:
- Distinctive: line 181
all requested widgets exist.
- Distinctive: line 182
every widget query passed read-only and field-mapping validation.
“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Dashboard Builder
Use this skill when the user asks to create, revise, or repair a reusable data dashboard from the database selected in the data assistant. A bounded CSV/Excel upload group that DB-GPT registered as one SQLite data source counts as the selected database; use SQL tools against that durable source.
This skill orchestrates the workflow. Deterministic tools own persistence, SQL validation, query execution, revision checks, and publication safety. Do not reimplement those responsibilities in free-form reasoning or scripts.
Preconditions
- A database must be selected in the data assistant. A registered multi-file upload dataset satisfies this condition.
- Use only the selected database. Never invent another data source.
- If no database is selected, ask the user to select one and stop.
- Respond in the same language as the user.
New dashboard: plan first
Visual styles are owned by the internal
dashboard-design skill. Gallery selections
load only that skill and the chosen reference automatically. Keep its layout and
palette while adapting the analytical content to actual data. When a user asks
for a style without choosing a gallery item, pass its exact name to
load_dashboard_style before planning; list styles only when you need to find
an appropriate reference. No style selection is needed
for a small dashboard with no requested visual preference. Internal chart, filter,
collaboration and design guidance lives under internal/; these are not separate
homepage skills.
- Use
sql_queryonly for the minimum read-only discovery needed to learn: table relationships, field types, data grain, date range, and useful category values. Use at most eight discovery queries in a planning turn. If validation feedback already names the incorrect plan fields, fix the plan directly instead of starting another round of discovery. Use the server's temporal discovery evidence for every candidate time column: storage type, actual sample values, inferred format and source distinct count. Raw distinct dates and distinct calendar months are different grains. Use the observed format to choose dialect-appropriate parsing, keeping the full year; do not assume a text date is accepted by a native date function. Ambiguous, mixed, unavailable or sampled evidence is not an exact source-wide fact. Reuse already observed facts instead of querying the same counts or date coverage again. Combine independent aggregates at the same table/grain in one discovery SELECT where possible. Stop discovery once the metric fields, grain, relationships and required filter values are understood. Do not run each future widget's ranking or trend query merely to preview its numbers; those queries will be generated and validated after confirmation. Still investigate unknown semantics, join cardinality, missing data and chart point counts when they affect the plan; this is not permission to guess. - When the selected source came from multiple uploaded files, inventory every
source table before planning:
- record its source file/sheet, row count, columns, likely grain, nulls, and duplicate-key counts;
- inspect
__dbgpt_dataset_manifestfor provenance; - treat
__dbgpt_relationship_candidatesonly as hints, never as confirmed joins; - verify candidate keys with distinct-key overlap, unmatched rows, and one-to-one/one-to-many/many-to-many cardinality checks;
- never concatenate tables merely because columns match, and never join two fact tables at raw grain when that would multiply measures. Aggregate the child side to the intended dashboard grain first.
- Keep the user's requested scope: one component per listed analytical item;
do not add extra KPI cards or filters. For broad requests start with 3–4 core
widgets. Add filters only when requested or necessary for the stated decision.
If the requested period has no rows and an empty table is intended, set that
table's
expected_data_pointsto 0, preserving the exact requested period. Callplan_dashboardwith exactly oneplanargument containing a SQL-free plan object (a JSON-encoded string is also accepted). Follow the generated DashboardPlan validation shape in the registered tool inventory, including:- business theme and intended decision;
- metric names as a string array; describe their meaning in the business text;
- dimensions as a string array and an appropriate grain;
- filters with real default values and options discovered from the data;
- widgets with stable ids, type, title, business question, metric, and
dimensions.
If a visual reference is selected, use its slot ids exactly once; the tools
preserve its layout and palette. Omit repeated layout hints, visual rationale
and unused default fields. Keep metric definitions concise while retaining
the requested population, time period, grain and data limitations. Otherwise
use individual widget width/height hints and business layout rationale.
Do not add
layout_templateto the plan; visual references are loaded separately from the SQL-free plan contract.
- Stop the turn with
terminate. The user must see and confirm the plan before component SQL is generated.
Never call create_dashboard_draft in the planning turn. Never replace this
workflow with a one-off HTML report.
Confirmed plan: generate queries
When the message contains an authoritative [[confirm-dashboard:ID]] marker:
- Use the persisted plan contract and its widget ids exactly.
- Call
create_dashboard_draftwith the supplied dashboard id and expected revision. Without global filters, submit up to four widgets per call, using fewer for long queries. With filters, submit at most two because each widget also needs a frozen publication query and bindings. Follow the batch limit reported by the tool after a retry. The server stages these bounded batches and creates the draft atomically after every planned widget is present; when it reports missing widget ids, send only those missing widgets next. - Generate one parameterized, read-only query per widget. Reuse the temporal evidence injected into this turn, not an assumed format from a column name or a missing earlier discovery result. It is contextual evidence, not a server guarantee of SQL business semantics.
- Declare typed output fields and a compatible chart encoding for every query.
- Map every global filter to named SQL parameters.
filter_parameterskeys are saved filter ids; values are parameter-name strings or{start_parameter, end_parameter}for date and number ranges. Output fields are{name, type}objects, not strings or a field-name map. When the plan has filters, every widget needs a publication binding. The frozen query must return its filter fields and grouping/measure fields within the declaredmax_rows(default 1000, maximum 5000). If needed, aggregate at the full filter/grouping grain while preserving the measure; never truncate source rows or average averages. The publication output columns must match the widget output fields. See the generated DashboardQueryDraftRequest shapes. - If a tool argument is reported as truncated or malformed JSON, do not resend the complete payload. Retry with at most two widgets so the server can stage it.
- If a widget fails server validation, call
repair_dashboard_draftonly for failed widgets. Preserve successful widgets. - Finish with
terminateand state which widgets succeeded or still need work.
Filter rules
- Date and number ranges use separate start and end parameters; never bind the two-value array to scalar equality.
- A scalar select may use a null guard, for example
(:category IS NULL OR category = :category). - A multi-select parameter may appear only inside
INorNOT IN, for examplestore_id IN (:store_ids). - Do not add
IS NULLguards for multi-select lists. The backend normalizes an empty list to mean no restriction. - Never concatenate user values into SQL or emulate list membership using
INSTR/LIKEand comma-delimited strings. - An approved table with
expected_data_points: 0permits a genuine empty result. Never remove its predicate, change its year, or insert dummy rows to make it nonempty. Other unexpected empty queries remain repairable failures.
Revise or repair
- A
[[revise-dashboard-plan:ID]]marker means replace the pending SQL-free plan withrevise_dashboard_plan, then stop for confirmation again. - Use
repair_dashboard_draftfor query or encoding failures in an existing generated draft. - Use
modify_dashboard_draftonly for bounded changes explicitly requested by the user. First callload_dashboard_draftin the same turn to obtain the current schema and revision. Keep the dashboard id, data source, ownership, and revision contract. - Never silently apply an AI change that requires user review.
Selection-aware annotation
When the message contains an authoritative [[dashboard-annotation:ID]] marker:
- Do not reload this skill or call
load_tools; the server has already selected this workflow and registered its bounded tools. - For a
[修改组件]annotation, usepropose_dashboard_changewith the exact Dashboard and annotation ids in the message. Address widgets and filters by stable ids, never by array indexes, and propose only the smallest change. - For
[指标解释]or[异常分析], load only the persisted Dashboard context and explain it. Deterministic anomaly evidence is authoritative: never run SQL, recalculate a result, call a proposal/mutation tool, or changeanomaly,normal, orindeterminateconclusions. - Stop after the explanation or validated proposal. A modification proposal must still be applied or rejected by the user in the Dashboard UI; never save it silently.
Completion checks
Before reporting success, rely on tool observations to verify:
- all requested widgets exist;
- every widget query passed read-only and field-mapping validation;
- filters have real options and parameter mappings;
- multi-table metrics reconcile to source totals at the declared grain, and join diagnostics show no unexplained fan-out;
- failed widgets are reported without discarding successful widgets;
- the result is a recoverable Dashboard draft, not only prose or an image.
For the detailed phase contract and examples, read
references/workflow-contract.md when needed.
Trending
Less talk lately.about the whole repository
Who's talking about eosphoros-ai/DB-GPT
- QwenLM/Qwen“💡 [Qwen+DB-GPT] - DB-GPT已经支持了千问72B,赶紧用起来吧”GitHub · Dec 1, 2023 · 2 reactions
- @githubfeed.bsky.social“🚀 GitHub Intelligence Drop DB-GPT (Python • 🟢) ⭐ 20K → https://github.com/eosphoros-ai/DB-GPT gun …”Bluesky · Sep 20, 2026 · 1 likes
- pacoxu/AI-Infra“GPU/System Memory, Context, KVCache, DB”GitHub · Sep 11, 2025 · 1 reactions
- langchain-ai/langgraph“【Question】Why not implement DAG in LCEL?”GitHub · Jan 8, 2024 · 1 reactions
- @github-trending.bsky.social“🔥 Hot Repo! 🔥 (100+ new stars) 📦 eosphoros-ai / DB-GPT ⭐ 8,798 (+102) 🗒 Python Revolutionizing Database …”Bluesky · Dec 22, 2023 · 1 likes
The biggest 5 of 38 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 38
Talked about on GitHub, Bluesky and the web (38 times).
On GitHub · 34
- Dec 1, 2023💡 [Qwen+DB-GPT] - DB-GPT已经支持了千问72B,赶紧用起来吧 — QwenLM/Qwen2 reactions
- Sep 11, 2025GPU/System Memory, Context, KVCache, DB — pacoxu/AI-Infra1 reaction
- Jan 8, 2024【Question】Why not implement DAG in LCEL? — langchain-ai/langgraph1 reaction · 5 comments
- Sep 7, 2023Add DB-GPT: The All-In-One Model, Chat Privately With Files Locally, Plugins, Auto Ai Agents, & More! — e2b-dev/awesome-ai-agents1 reaction · 1 comment
- Aug 31, 2023【开源自荐】ChatExcel-通过自然语言对话实现数据分析 — ruanyf/weekly1 reaction
29 more on GitHub
- Oct 28, 2026[GHSA-7gj6-22m4-qfhx] DB-GPT Arbitrary File Write vulnerability — github/advisory-database0 reactions
- Oct 15, 2026Add DB-GPT HTTP fingerprint rule — hexbay/finger-rules0 reactions
- Sep 27, 2026agent-skills.github.eosphoros-ai.db-gpt: init at 0.8.2 — sudosubin/agents.nix0 reactions
- Sep 13, 2026GEN-01 (EPIC-GEN-01 #178): ontology-grounded generative ask + execute-validate (abstain if unsure) — Netie-AI/dms0 reactions · 6 comments
- Aug 25, 2026[Argus] CVE-2026-80104: DB-GPT 0.8.0 스킬 업로드 파일명을 통한 Path Traversal 및 임의 파일 쓰기 — LEEKIYOON-SEC/Argus-DEV0 reactions
- Aug 18, 2026Add CVE-2026-73034 - DB-GPT Path Traversal Arbitrary File Write — projectdiscovery/nuclei-templates0 reactions · 1 comment
- Aug 14, 2026feat: add CVE-2026-73034 DB-GPT <= 0.8.1 path traversal arbitrary file write — projectdiscovery/nuclei-templates0 reactions
- Aug 11, 2026[Argus] CVE-2026-73034: DB-GPT v0.8.1 user_id 헤더를 통한 경로 탐색 및 임의 파일 쓰기 취약점 — LEEKIYOON-SEC/Argus-DEV0 reactions
- Jul 17, 2026Update PURL mappings for conda-forge packages related to `dbgpt` — prefix-dev/purl-associator0 reactions · 1 comment
- Jun 28, 2026DB-GPT: 차세대 AI + 데이터 제품을 위한 오픈소스 에이전트형 데이터 어시스턴트 — roomedia/ax-trend0 reactions
- Jun 5, 2026[Add] DB-GPT (eosphoros-ai/DB-GPT) — PyTorchKR/landscape0 reactions
- May 28, 2026Add DeerFlow 2.0 `data-analysis-agent-skill` package with read-only ChatBI, file analytics, and packaging workflow — yssAI/agent-skills0 reactions
- Mar 26, 2026Update repo table — arran4/arran40 reactions
- Feb 27, 2026优化「提效技巧」卡片:增加真实教程链接与推荐教程列表 — jinjin-cxy/jinjin-cxy.github.io0 reactions
- Oct 29, 2025Add agent memory and context management documentation — pacoxu/AI-Infra0 reactions · 1 comment
- May 30, 2025Updated single-repositories/github/eosphoros-ai/DB-GPT.yml — oss-compass/compass-projects-information0 reactions · 2 comments
- Apr 4, 2025chore(deps): bump the pip group across 2 directories with 1 update — ai-in-pm/dbgpts0 reactions
- Mar 3, 2025Add DB-GPT — deepseek-ai/awesome-deepseek-integration0 reactions
- Oct 15, 2024docker.io/eosphorosai/dbgpt:latest — DaoCloud/public-image-mirror0 reactions · 1 comment
- May 16, 2024feat: Upgrade search workflow — eosphoros-ai/dbgpts0 reactions
- May 6, 2024chore: Update with latest agent — eosphoros-ai/dbgpts0 reactions
- Apr 25, 2024[Feature request] make cubejs as datasouce of DB-GPT — cube-js/cube0 reactions · 2 comments
- Apr 18, 2024【CS-part4】New submissions for Wed, 17 Apr 24 — Yukeaaa/arxiv-daily0 reactions
- Apr 17, 2024New submissions for Wed, 17 Apr 24 — qiaoyuet/arxiv_daily0 reactions
- Mar 27, 2024feat: Add rag url knowledge examples — eosphoros-ai/dbgpts0 reactions · 1 comment
- Nov 16, 2023Add typos for knownledge->knowledge, analyzis->analysis and compialtion->compilation — codespell-project/codespell0 reactions · 1 comment
- Sep 27, 2023【开源自荐】DB-GPT用私有化大模型定义数据库下一代交互方式 — Wechat-ggGitHub/Awesome-GitHub-Repo0 reactions
- Sep 18, 2023【开源自荐】DB-GPT用私有化大模型定义数据库下一代交互方式 — GitHubDaily/GitHubDaily0 reactions
- Sep 3, 2023【开源自荐】DB-GPT用私有化大模型定义数据库下一代交互方式 — 521xueweihan/HelloGitHub0 reactions
On Bluesky · 2
- Sep 20, 2026🚀 GitHub Intelligence Drop DB-GPT (Python • 🟢) ⭐ 20K → https://github.com/eosphoros-ai/DB-GPT gun (JavaScript • 🟢) ⭐ 19.1K →… — @githubfeed.bsky.social1 likes and repost
- Dec 22, 2023🔥 Hot Repo! 🔥 (100+ new stars) 📦 eosphoros-ai / DB-GPT ⭐ 8,798 (+102) 🗒 Python Revolutionizing Database Interactions with Private LLM… — @github-trending.bsky.social1 likes and repost · 1 reply
On the web · 2
- Sep 7, 2026[First-time contributor] Looking for beginner-friendly issues ... — google.com
- Apr 26, 2024[Feature]DB-GPT integrate xinference · Issue #1471 — google.com
Other versions12 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 12
- QwenLM/qwen-code-examples★ 143same name
- Fmarzochi/EGC★ 61same name
- reatlat/fullstory-claude-plugin★ 36same name
- cogover/cogover-skills★ 13same name
- gongyijie85/dsh-ecc★ 8same name
- hacker943410-debug/ai-harness★ 2same name
- SamuelNDCE/claude-super-skill-library★ 1same name
- ckt520728/claude-skills★ 0same name
- davidanthonyn/claude-skills★ 0same name
- hassanzouhar/market_analytics★ 0same name
2 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- agent-browserSkill
- business-reportSkill
- csv-data-analysisSkill
- financial-report-analyzerSkill
- skill-creatorSkill
- walmart-sales-analyzerSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

