dataHub

A central catalogue and query layer for source data, cleaned data, cross-company data, and analysis products. It lets other programs discover and request these assets through a shared contract.

In plain words
What is it for?
Use it to browse available data products, run stable asset queries, create factor or record views, and access the same data through a remote API.
Why use it?
It provides one consistent way to find, validate, query, project, and trace data across many analysis tools and machines.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/eddmpython/dartlab/datahub
Any agent
npx skills add eddmpython/dartlab --skill datahub
Clone the repo
git clone --depth 1 https://github.com/eddmpython/dartlab

Made for: Claude Code, Codex.

Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 8,433 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.08433
Opus 5 $0.00000 $0.04216
Sonnet 5 $0.00000 $0.01687
Haiku 4.5 $0.00000 $0.00843

Measured yesterday against content hash 1fa04ffa9525, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

dataHub scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

src/dartlab/skills/specs/engines/dataHub/SKILL.md · 576 lines

How it starts

The opening of the file, as written. The whole thing — 576 lines — stays where its author put it; the contents beside it link to each section on GitHub.

역할과 위치

dataHub는 특정 엔진의 별칭이 아니다. L1의 provider와 gather, L1.5의 scan, frame, synth, reference, L2의 analysis, credit, industry, macro, quant가 소유한 데이터 제품을 위에서 연합하는 독립 데이터 플랫폼이다.

simulate, story, Universe, AI
              ↓
       DartLab DataHub
              ↓
      L2 분석 데이터 제품
              ↓
     L1.5 횡단, 정규화 제품
              ↓
       L1 원천, provider 제품

하위 owner가 dataProduct.py에 metadata provider를 선언하면 중앙 엔진 목록을 수정하지 않아도 다음 catalog snapshot에 자동 반영된다. source와 계산식의 소유권은 하위 엔진에 남고, dataHub는 발견, 검증, 실행 예산, projection, lineage 결박을 담당한다.

공개 호출 방식

public axis는 둘뿐이다.

import dartlab

dartlab.dataHub()             # catalog, query 가이드
dartlab.dataHub("catalog")   # metadata-only 발견
dartlab.dataHub("query", ...) # stable asset query

factor, records, graph, narrative, resource는 새 axis가 아니라 query의 typed projection이다. 따라서 같은 asset을 native schema 그대로 쓸 수도 있고 factor store 형태로 투영할 수도 있다. DataRequest를 사용하면 한 query에서 asset마다 서로 다른 projection을 지정할 수 있다.

다른 프로세스와 머신은 같은 의미 계약을 versioned remote API로 사용한다.

from dartlab.dataHub import AsyncDataHubClient, DataHubClient

with DataHubClient("https://host", clientToken) as hub:
    job = hub.query(query, wait=False, idempotencyKey="daily-close")
    result = hub.wait(job.jobId)

async with AsyncDataHubClient("https://host", clientToken) as hub:
    result = await hub.query(query)

분산 worker는 python -m dartlab.dataHub.workerPlane --base-url https://host --worker-id node-a로 실행한다. 여러 worker가 같은 durable queue를 pull하되 원자 lease와 epoch가 한 job의 중복 확정을 차단한다.

카탈로그

from dartlab.dataHub import CatalogQuery

allAssets = dartlab.dataHub("catalog")
l2Assets = dartlab.dataHub(
    "catalog",
    query=CatalogQuery(layers=("L2",), search="valuation"),
)

DataAssetDescriptor는 최소 assetId, assetVersionId, owner, layer, kind, sourceRef, queryable, temporalSupport, selectorKind, selectorRequired, concurrencyGroup, executor metadata를 가진다. catalog는 값을 물질화하지 않는다. private, out-of-scope, 폐기, catalog-only 자산도 분류를 위해 보이지만 queryable=False로 차단된다.

Read the full file on GitHub · 576 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 576 lines · 0 tokens per session scan A 1fa04ffa9525

Subscribe to this mod's changes

dataHub is a skill published in the GitHub repository eddmpython/dartlab (209 stars, last pushed 10d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 8,433 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

build_workspace_app

This guide covers the full lifecycle of building, running, and serving a custom OpenBB Workspace application from an extension project scaffolded by openbb-cookiecutter. It assumes the project shell already exists (see the developextension skill for scaffolding instructions).

OpenBB-finance/OpenBB · 57 tokens

configure_mcp_server

This guide covers installation, configuration, authentication, tool discovery, prompt management, and client integration for openbb-mcp-server.

OpenBB-finance/OpenBB · 31 tokens

develop_extension

This is a complete guide for creating a new OpenBB Platform extension from scratch. Follow every phase in order. When the user says "build me an application that does X", use this guide to scaffold, implement, install, and verify the extension.

OpenBB-finance/OpenBB · 53 tokens

work_with_server

This guide explains how to call tools, interpret responses, discover capabilities, use prompts, and handle errors when interacting with an OpenBB MCP server.

OpenBB-finance/OpenBB · 33 tokens

fin-data-acquisition

根据REFINEDDESIGN.md中的变量定义,自动获取所需数据并生成可执行的回归分析脚本(Python/Stata)。.

csmar432/finai-research · 36 tokens

alphasift

自动选股 Skill。Use when: 用户要按策略筛选 A 股、列出可用策略、运行双低/放量突破/均衡多因子/资金热度等选股,或保存运行并做 T+N 后验评估。通过 alphasift CLI 或 Python 接口输出候选股票列表。.

ZhuLinsen/alphasift · 76 tokens