Token导航 LogoToken导航

Agent Skill · 研究检索

sdmx-explorer(sdmx 资源管理器)

sdmx-explorer 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

sdmx-explorer 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为执行命令;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 51,536。

总安装 582周安装 24GitHub Stars 2下载 190核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:sdmx-explorer(sdmx 资源管理器)
来源仓库:https://github.com/aborruso/opensdmx
仓库路径:skills/sdmx-explorer
安装命令:
npx skills add https://github.com/aborruso/opensdmx --skill sdmx-explorer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/aborruso/opensdmx --skill sdmx-explorer

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

sdmx-explorer 用于查找、检索和筛选相关信息。适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词、任务场景或来源线索快速定位候选结果。通过 npx skills add 命令从指定仓库安装并使用。使用前需确认权限范围、维护状态,以及是否涉及联网、命令执行或文件读写操作。

适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

来源仓库内路径:skills/sdmx-explorer

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/aborruso/opensdmx --skill sdmx-explorer;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要执行命令,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

sdmx-explorer 怎么安装?

在终端执行 npx skills add https://github.com/aborruso/opensdmx --skill sdmx-explorer。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

sdmx-explorer 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

sdmx-explorer 需要什么权限?

权限级别是执行命令。安装流程涉及命令执行,可能通过 npx skills add https://github.com/aborruso/opensdmx --skill sdmx-explorer 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

sdmx-explorer 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

sdmx-explorer 用的人多吗?

公开数据是累计安装 582 次,近一周安装 24 次,下载 190 次,GitHub 2 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

sdmx-explorer 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要执行命令,装到常用环境前要先评估影响面。
  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 不能接受 Skill 在你机器上执行命令的人。
  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
sdmx-explorer

sdmx 资源管理器 · 本页

5822执行命令未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

SDMX Explorer — Guided Dataset Discovery

This skill uses the opensdmx CLI to explore any SDMX 2.1 REST endpoint: Eurostat, OECD, ECB, World Bank, ISTAT, and others. The primary reference provider is Eurostat (default in the opensdmx CLI). All examples use Eurostat unless stated otherwise.

Every opensdmx command supports --help — run it first to discover options and see usage examples:

opensdmx --help                  # list all commands
opensdmx search --help           # options and examples for search
opensdmx constraints --help      # options and examples for constraints
opensdmx get --help              # options and examples for get
opensdmx run --help              # options and examples for run
# ... same for info, values, constraints, embed, blacklist, plot

All metadata commands (search, info, values, constraints, providers) support a global --output flag for structured output. Use it when you need to parse results programmatically instead of reading a Rich table:

opensdmx --output json search "unemployment" --n 10
opensdmx --output json info TIPSUN20
opensdmx --output json constraints TIPSUN20
opensdmx --output json values TIPSUN20 geo
opensdmx --output json providers
opensdmx --output csv values TIPSUN20 geo   # CSV for tabular use

In --output json mode: stdout is pure JSON, stderr carries errors/warnings, spinners are suppressed. Pipe directly into jq or parse in Python.

This skill runs a four-phase interactive loop. Always follow the phases in order. The goal is to help the user understand the data landscape and make informed choices, not to fetch data immediately.


Phase 1 — Discovery: find candidate dataflows

Identify which SDMX provider is relevant (ISTAT for Italian statistics, Eurostat for European statistics, OECD for international comparisons, etc.). If unclear, ask.

Default discovery path is top-down via opensdmx tree (Step 1b below), because statistical agencies curate a thematic hierarchy that is semantically richer and less noisy than any keyword match. Use keyword search (Step 1c) only as fallback.

Step 1a — Extract keywords AND expected dimensions

Before searching, parse the user's question on two levels:

  1. Topic keywords (2–4 terms) for the opensdmx search call. Example: "unemployment", "labour force"
  2. Expected dimensions — the analytical angles the user wants to slice by. These are often NOT in the dataset title or description, but must appear as dimensions in the dataflow structure. Extract them explicitly: User says Expected dimension "by age group" / "per fascia di età" age "by sex" / "per sesso" sex "by country" / "per paese" geo "by region" geo (NUTS level) "by education level" isced11 or similar "quarterly" / "monthly" freq Example: *"unemployment for EU countries, by age group and sex"* → topic keywords: unemployment; expected dimensions: age, sex, geo.

Step 1b — Top-down navigation (primary path)

Navigate the thematic tree. Statistical agencies organise their dataflows into a hierarchical catalog (SDMX categoryscheme + categorisation) — use it instead of guessing keywords. This is the default discovery flow; fall back to keyword search only under the conditions listed in Step 1c.

Supported providers (check with opensdmx providers — categories column):

  • ✓ eurostat, istat, ecb, oecd, insee, abs, bis
  • ✗ comext, bundesbank, worldbank, imf — skip to Step 1c.
How to tell cat_id from df_id

IDs are now prefixed in every human-readable output:

  • [cat:ID] — category ID. Safe to pass to --category or search --category.
  • [df:ID] — dataflow ID. Pass to opensdmx info, get, plot. Passing it to --category is rejected with a clear scheme-aware message.

Rules of thumb:

  • IDs appearing inside the ASCII tree output are always [cat:...] — the tree renders categories only.
  • Dataflow IDs come from search, info, siblings, or from the df_id column of CSV/JSON outputs; the CLI labels them [df:ID] in error messages so you never have to guess the kind.
  • CSV/JSON output keeps the raw columns (cat_id, df_id) unchanged — the prefix lives only in the ASCII rendering.
  • When in doubt, dump IDs with opensdmx --output csv tree --scheme <id> and look at the cat_id column.
Hierarchical drill-down — always --depth 1

Never read the whole tree at once. Large schemes can have dozens of nested categories and hundreds of dataflows — dumping them floods the conversation and buries the signal. Walk the tree one level at a time, with the user choosing the next branch to enter:

# Step 1 — list top-level schemes (cheap, always safe)
opensdmx tree --provider istat --depth 1

# Step 2 — enter the chosen scheme, ONLY the first level
opensdmx tree --scheme Z0400PRI --provider istat --depth 1

# Step 3 — drill into the interesting category, still ONE level at a time
opensdmx tree --scheme Z0400PRI --category PRI_CONWHONAT --provider istat --depth 1

# Step 4 — when the branch looks final, enumerate the dataflows in it
opensdmx search "" --category DCSP_NIC1B2015 --provider istat

--depth is relative to --category when --category is set: --depth 1 always means "the node plus its direct children", regardless of the category's absolute depth in the tree.

After each step, present the children to the user in plain language and ask which branch to explore next. Do not pre-emptively dive deeper than one level unless the user explicitly says "go deep" or the tree is known to be shallow.

tree --category and search --category are complementary: the first shows the category hierarchy (with dataflow counts), the second enumerates the dataflows themselves. Use search --category only at the leaves, after the user has picked a terminal branch.

Shortcut: --show-dataflows (-l). When the user has committed to a terminal branch, append --show-dataflows to tree to render dataflow leaves inline, labelled [df:DF_ID], without a separate search call:

opensdmx tree --scheme Z0400PRI --category DCSP_NIC1B2015 --show-dataflows --provider istat

Keep the flag off while exploring upper levels — it can flood the output on large branches (>200 df triggers a stderr warning).

The --category filter accepts either a leaf id (DCSP_LATTE) or a full dotted path (AGR_CRP.DCSP_LATTE). It reduces false positives compared to pure token matching (e.g. finds AGR_R_ACCTS under Agriculture even when the description does not contain the word "agriculture").

If you accidentally pass a category ID to --scheme, the CLI detects it and suggests the correct command — you can just run the suggested line:

opensdmx tree --scheme PRI_HARCONEU --provider istat
# → 'PRI_HARCONEU' is a category, not a scheme.
# → Use: opensdmx tree --scheme Z0400PRI --category PRI_HARCONEU

Note: the first tree invocation per provider triggers a one-time fetch (can take ~1 minute on Eurostat due to the 24 MB categorisation response), then the result is cached for 7 days under the provider's cache directory.

For the full top-down walkthrough (decision matrix, real ISTAT/Eurostat examples, cat_id extraction via --output csv, and provider-specific notes), see references/thematic-tree.md.

Step 1c — Keyword search (fallback)

Use this path only when:

  • The provider has no categories (see list in Step 1b).
  • The user already gave a precise dataflow ID or a narrow, unambiguous acronym (e.g. NAMA_10_GDP, LFSA_ERGAN, HICP).
  • Step 1b returned an empty or uninformative branch after 2 scheme attempts.

Search for dataflows:

  • Eurostat (default provider — no --provider flag needed): opensdmx search "<keyword>"
  • ISTAT: opensdmx search "<keyword>" --provider istat
  • Other providers: opensdmx search "<keyword>" --provider <name> (available: oecd, ecb, worldbank, insee, bundesbank, abs)

To see the full list of built-in providers — including which ones support constraints and last_n — run:

opensdmx providers

The constraints column tells you whether opensdmx constraints works for that provider (✓ = supported, ✗ = returns 400). The last_n column tells you whether --last-n N is supported in opensdmx get. Use this to decide which exploration flow to apply before you start (see Phase 2 and provider-specific quirks below).

From the search results, pick 5–8 plausible candidates by title relevance. Then run opensdmx info <id> on each one in parallel to check their dimension list. Keep only the candidates that contain all expected dimensions. Discard candidates missing a required dimension — even if the title looks right.

If page 1 (50 results) yields no strong candidates, paginate before giving up:

opensdmx search "unemployment" --page 2   # results 51-100
opensdmx search "unemployment" --page 3   # results 101-150

The title shows the total available (e.g. 51-100 of 114), so you know how many pages exist. Keep paginating until you find at least 3 plausible candidates or exhaust the results. Only after exhausting pagination should you try a different keyword or provider. Use --all only as a last resort (may produce very long output).

Results are ranked by relevance score (id match, start-of-description, occurrence count) — the most relevant candidates appear first.

If keyword search returns 0 or very few results (< 3), offer semantic search:

"I didn't find much with a keyword search. I can try a semantic search instead — it matches by meaning, not exact words, so it can find datasets even when the terminology differs. It requires Ollama to be running and is slower (10–30 s). Want me to try?"

If the user agrees:

opensdmx search --semantic "<query>"

Semantic search returns the top 20 results ranked by similarity score. Pick the most relevant candidates (score > 0.5) and continue with Step 1c as normal.

# Example: verify age and sex are present
opensdmx info UNE_RT_A       # ✓ has age, sex, geo → keep
opensdmx info TIPSUN20       # ✗ no age, no sex → discard

Step 1c — Present verified candidates

From the verified candidates, select 3–5 and present them. For each, confirm which expected dimensions are present and note any extras or limitations.

Present them like this (use the conversation language; adapt as needed):

I found these datasets that could answer your question:

1. **UNE_RT_A** — Unemployment by sex and age – annual data (Eurostat)  ⭐ recommended
   Has all three dimensions you need: age (7 ranges), sex (F/M/total), geo (38 countries).
   Annual data from 2003 to 2025. Clean structure, no extra mandatory filters.

2. **LFSA_URGAED** — Unemployment rates by educational attainment level (Eurostat)
   Also has age (29 ranges!) and sex, but adds a mandatory education-level dimension
   (ISCED11). More granular age breakdown, but requires choosing an education filter.
   Best if you also want to break down by education.

3. **MET_LFU3RT** — Unemployment rates by sex, age and metropolitan region (Eurostat)
   Has age and sex, but geo is at metropolitan region level — not country level.
   Not suitable for country comparisons.

Which one would you like to explore? You can also say "the first one" or
describe more precisely what you need.

Wait for the user's choice before proceeding.

Step 1d (optional) — Explore siblings of a candidate

Once you have a candidate dataflow, check its siblings — other dataflows in the same thematic category. This often reveals variants (regional vs national, annual vs quarterly, different units of measure) that pure text search misses because the candidate's siblings do not share its exact wording.

opensdmx siblings <dataflow_id> --provider <p>

Only works on providers with categories_supported: true. A dataflow may belong to multiple categories: the command returns one group per membership.

When to use:

  • The candidate's title sounds specific ("Fertilizers distributed for biological agriculture"); you want to know if a broader version exists.
  • You expect a series at a different granularity (prov/reg/nat) that may not share keywords.
  • The dataset list is fragmented across many small dataflow ids sharing a common prefix — the category view clusters them.

Example — starting from a single result, discover 6 complementary siblings:

$ opensdmx siblings 104_466_DF_DCSP_FERTILIZZANTI_2 --provider istat

Agricoltura > Fertilizzanti  (7 siblings)
  → 104_466_DF_DCSP_FERTILIZZANTI_2   uso in agricoltura biologica
    104_466_DF_DCSP_FERTILIZZANTI_1   stato liquido o solido
    104_466_DF_DCSP_FERTILIZZANTI_3   area di produzione
    104_466_DF_DCSP_FERTILIZZANTI_4   distribuiti - prov.
    104_466_DF_DCSP_FERTILIZZANTI_5   elementi nutritivi - prov.
    ...

Phase 2 — Schema: explore the chosen dataflow

Once the user has chosen, retrieve the structure and available codes for the dataflow.

Default flow (Eurostat, OECD, ECB, etc.)

Step 1 — get the codes actually present in the dataflow (real constraints):

opensdmx constraints PRC_HICP_MANR
# shows all dimensions with count and sample of codes

opensdmx constraints PRC_HICP_MANR coicop
# shows full list of codes present in that dimension, with labels

opensdmx constraints is the ground truth — it queries the availableconstraint SDMX endpoint and returns only codes that actually exist in this specific dataflow.

Step 2 — get dimension order and structure:

opensdmx info PRC_HICP_MANR
# (no --provider needed for Eurostat, it's the default)

opensdmx values returns the full codelist (all theoretically possible codes), not the codes actually present. Use it only when you need labels for codes you already know are valid and opensdmx constraints doesn't provide enough detail.

Never use opensdmx values to validate filter codes. A code present in the codelist may return no data if it doesn't exist in this specific dataflow.

ISTAT flow

ISTAT requires a different exploration pattern: the API has a strict ~13 s rate limit, codelists and constraints diverge often, and some codes carry version suffixes that need stripping. The flow consolidates info → values → constraints (mandatory before get) → get.

For the full step-by-step walkthrough, territory codes, and ISTAT-specific quirks, see references/istat-flow.md.

Extract from both flows

Parse the output and extract:

  • Dimension list in order (position matters for URL construction later)
  • Available codes for each dimension, with descriptions
  • Time range (StartPeriod / EndPeriod)
  • Dimensions with more than one available value (these are the meaningful filters)

Phase 3 — Presentation: explain the dataset to the user

Synthesize what you learned in Phase 2 into a clear, human-readable summary. The goal is for the user to understand the dataset without knowing SDMX.

Structure your summary like this:

What the dataset contains

Describe the subject matter in plain language.

Granularity

  • Geographic: national only? Regions? EU countries? Global?
  • Temporal: what years are available? Annual, monthly, quarterly?

Key dimensions to filter

List only the dimensions with more than one available value that are meaningful for the user's question. For each, show the options in plain language:

- **Country** (GEO): IT (Italy), DE (Germany), FR (France)… 35 countries
- **Indicator** (INDIC_DE): live births (GBIRTHS), deaths (DEATH),
  crude birth rate (CNBIRTHS), total fertility rate (TOTFERRT)…
- **Period**: 1960 to 2024, annual frequency

For dimensions with only one available value, mention them briefly: "Other dimensions have a single fixed value and are included automatically."

Estimated size

Give a rough sense of scale: "Downloading everything (all countries + all indicators + all years) would give you approximately X rows." This helps the user decide how to filter.

Invitation to choose

End with a clear prompt:

How would you like to proceed?
- Do you want data for a specific country or a European comparison?
- Which time period are you interested in?
- Are there any dimensions you want to filter?

Tell me what you want and I'll build the query.

Phase 4 — Data retrieval: after the user decides

Once the user has specified their choices, build the query and fetch the data.

Building the query — critical rules

  1. Dimension order must match the opensdmx info output exactly. Never guess the order.
  2. Use only codes confirmed by opensdmx constraints, never codes from opensdmx values or other sources. Providers often return 404 or empty results for invalid codes.
  3. For dimensions with a single available value, include that value — don't skip them.
  4. For unfiltered dimensions (user wants all values), use . as wildcard.

Note: Eurostat dimension flags are lowercase (--geo, --coicop, --freq). ISTAT dimension flags are uppercase (--REF_AREA, --DATA_TYPE, --FREQ).

Step 1 — Verify with a preview (last observation)

Before fetching everything, do a quick sanity check with --last-n 1 to confirm the query is valid and the data looks correct:

opensdmx get PRC_HICP_MANR --coicop CP00 --geo IT+DE+FR --start-period 2020 --end-period 2023 --last-n 1

--last-n 1 returns the most recent observation per series (one row per country/dimension combination), which is enough to verify the query structure without flooding the output. Prefer --last-n 1 over --first-n N for previews: it shows the most recent data and produces far fewer rows when there are many series.

For ISTAT: use a narrow time range (1–2 years) as preview.

Show the user those few rows and confirm the data makes sense (right columns, right units, no unexpected flags). A one-line comment is enough: "Query works — here is the latest observation per series."

Step 2 — Provide the download URL

Build and show the equivalent curl command so the user can download the full dataset independently, without relying on the CLI:

Eurostat URL pattern:

https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/{dataflow_id}/{dim1.dim2...}/ALL/?startPeriod={start}&endPeriod={end}&format=SDMX-CSV

Dimension values in the path must follow the exact order from opensdmx info, with . for unfiltered dimensions and + for multiple values.

Example:

curl "https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/APRO_CPNH1/A.I2200.AR./ALL/?startPeriod=2014&endPeriod=2023&format=SDMX-CSV"

ISTAT URL pattern:

https://esploradati.istat.it/SDMXWS/rest/data/{dataflow_id}/{dim1.dim2...}?startPeriod={start}&endPeriod={end}

Step 3 — Ask the user what to do next

End with a short, clear question:

Would you like me to download and save the full dataset locally for analysis?
If yes, tell me where to save it (e.g. /tmp/data.csv) or I'll use a default path.
I can then run a quick analysis: row count, top values, time range, flagged records.

If the user says yes, download with --out <path> and run a quick analysis (row count, top values, time range, any missing/flagged data worth noting).

Step 4 — Offer to save the query as a reusable template

After a successful download, always ask the user if they want to save the query:

This query worked well. Would you like to save it as a YAML template so you can
re-run it later without remembering all the parameters?

  opensdmx get <id> [filters] --out data.csv --query-file my_query.yaml

The YAML captures provider, dataset, filters with human-readable descriptions,
and time range. To re-run it later:

  opensdmx run my_query.yaml
  opensdmx run my_query.yaml --out fresh_data.csv

The file is also useful for version control and sharing with colleagues.

Always suggest a meaningful filename (e.g. unemployment_eu_2020_2024.yaml, gdp_annual_eurostat.yaml) based on the dataset and filters used.

Step 5 — Offer metadata and README

After downloading, always ask the user two optional extras:

Two optional extras:
1. **Full metadata**: do you want the complete list of codes and labels for each
   dimension (e.g. all country names, all flag meanings)? I can extract them from
   the opensdmx cache and save them as a companion file (e.g. `metadata.csv`).
2. **README**: do you want a `README.md` that documents the dataset schema —
   columns, dimension codes with labels, flag meanings, units, and source URL?
   Useful if you plan to share the data or revisit it later.

If the user says yes to metadata:

  • Run opensdmx constraints <dataflow_id> <dim> for each dimension with more than one value to get the full code → label mapping.
  • Combine all dimensions into a single metadata file with columns: dimension, code, label.
  • Save it alongside the data file (e.g. tomato_production_metadata.csv).

If the user says yes to README:

  • Generate a README.md in the same folder as the data file.
  • The goal is to make the output verifiable (check values against the source), evaluable (judge quality and scope), and repeatable (reproduce from scratch).
  • Follow the full template in references/readme-template.md. In summary, include:

- Files produced (table) - One section per source dataflow: ID, provider, filters with labels, unit, last update date, and the exact download URL - Derivations: join keys, filters applied after download, computed columns with explicit formulas (not prose) - Column schema: name, type, description, unit for every column in the output - Flag legend: only flags actually present in the data, with row counts - Coverage table when geographic or categorical gaps exist - Caveats: scope limitations, reporting lags, known biases

Step 6 — Visualization

After downloading data, offer to create charts using opensdmx plot. The plot command uses plotnine (Python's ggplot2) and accepts both dataflow IDs and local files (.csv,.tsv,.parquet).

For the complete visualization reference — Grammar of Graphics concepts, data preparation rules, DuckDB examples, iterative chart quality loop, and common fixes — see references/visualization.md.

Supported chart types (via --geom):

  • line (default): line chart with points — best for time series
  • bar: vertical bar chart — best for comparing values across categories over time; with --color produces stacked bars
  • barh: horizontal bar chart — best for rankings; bars are automatically sorted by value (lowest at bottom, highest at top)
  • point: scatter plot — best for correlations between two numeric variables

For other chart types not supported by opensdmx plot (heatmaps, grouped/dodge bars), write a short Python script using plotnine directly.

For DuckDB installation and common data-prep patterns, see references/duckdb-setup.md.

Key points:

  • Always prepare data with DuckDB before plotting (separate units, limit series, remove aggregates, use year strings for annual data)
  • After generating a chart, read the image and evaluate it — if it's not good, fix it yourself before showing the user
  • Multiple focused charts are better than one overloaded chart

Key principles

Always explain the indicator — never assume prior knowledge After presenting any results, always include a plain-language explanation of the key indicator(s) used. Do not assume the user knows what GNI, PPP, HICP, or any other acronym means. For every indicator shown:

  • State in one sentence what it measures
  • Explain how it differs from similar concepts the user might know (e.g. GNI vs GDP)
  • Clarify the unit and any methodological choice that affects interpretation (e.g. "Atlas method" vs PPP, constant vs current USD)

This applies even when the indicator name seems obvious. A user who asks "which are the poorest countries?" may not know what GNI is, even if they implicitly agree with using it as a proxy for poverty.

Place this explanation immediately after the data summary, before any offer to download or visualize.

Proposals, not lists When presenting dataflow candidates, reason about each one: explain why it might or might not answer the question, what its limitations are, and which one you'd recommend. The user should feel guided, not overwhelmed.

Make filter choices coherent with the user's intent Match the granularity of each dimension to what the user actually asked for. For any dimension, SDMX codelists typically contain both individual units and aggregate codes that group them. These two levels must never be mixed silently.

The rule: when the user asks for "all X", return individual-level codes only. If aggregates exist in the data, exclude them — or present them separately with an explicit label explaining that they are groupings, not individual units.

If an aggregate is useful as a reference (e.g. a total or average alongside individual values), propose it explicitly and let the user decide whether to include it.

Explain dimensions in plain language Translate SDMX dimension IDs into human concepts:

  • CITIZENSHIP_MOTHER → "mother's citizenship"
  • DATA_TYPE: LBIRTH → "live births (absolute count)"
  • GEO: IT → "Italy"
  • INDIC_DE: GBIRTHS → "live births"
  • INDIC_DE: CNBIRTHS → "crude birth rate (per 1,000 inhabitants)" Never show raw codes without an explanation.

Explore all columns, not just the value column When the preview arrives (Step 1 of Phase 4), look at all columns in the response, not just the observation value. SDMX datasets often include extra columns that affect interpretation: quality flags, confidentiality markers, unit multipliers, notes. For each non-obvious column, check what values are present and explain their meaning to the user. For example:

  • OBS_FLAG or OBS_STATUS: quality/availability flags — look up what each code means in the context of that provider (b = break in series, e = estimated, n = not significant, u = unreliable, p = provisional, etc.)
  • UNIT_MULT: multiplier applied to the value (e.g. 3 means values are in thousands)
  • CONF_STATUS: confidentiality status
  • NOTE_*: free-text annotations attached to specific dimensions

Don't hardcode these — inspect what columns are actually present in the data and explain the ones that are populated. Skip columns that are entirely empty.

Provider-specific quirks

Run opensdmx providers for a machine-readable overview — the constraints and last_n columns reflect verified test results and tell you which exploration flow fits the target provider.

The full capability matrix (Eurostat, ISTAT, ECB, OECD, INSEE, Bundesbank, World Bank, ABS, BIS, IMF), dimension flag casing, territory code conventions, and what to do when constraints or last_n are unsupported, are documented in references/providers.md.

Two providers have flows that diverge enough to deserve their own walkthroughs:

平台分布

Codex

32.48%
按下载量换算62

Claude

31.49%
按下载量换算60

Cursor

18.63%
按下载量换算35

Gemini CLI

10.2%
按下载量换算19

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/aborruso/opensdmx --skill sdmx-explorer 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills