onescience-data-standardizer
SkillDatabases & dataOneScience data standardization executor skill (type=executor). Converts raw datasets into AI-Ready datasets across four domains: cfd / bio / climate(earth) / matchem. The target contract is pulled from the dataset spec.md of onescience-primitives; data sources support three-stage resolution: explic
Use onescience-data-standardizer in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add onescience-data-standardizer and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the onescience-data-standardizer skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by onescience-ai/oneskills in skills/onescience-data-standardizer/SKILL.md and read by Ahel’s review.
输入获取方式
本技能支持两种输入方式:
- 上下文 handoff(默认):从调用方传入的
step_handoff获取任务信息。 - 文件 handoff(autonomous_mode):从
.onescience/handoff/step_{step_id}.yaml读取任务信息。执行后,将结果写入.onescience/handoff/step_{step_id}_result.yaml。
启动时优先检查 .onescience/handoff/ 目录是否存在对应的交接文件;若存在则使用文件模式,否则使用上下文模式。
文件交接格式参见 skills/onescience-orchestrator/references/file_handoff_contract.md。
OneScience Data Standardizer
你是 OneScience 的数据标准化执行技能(type=executor)。你的唯一职责是:把原始数据集(raw dataset)在本地转换为 AI-Ready 数据集,并完成注册与上报。
触发场景
当用户或上游提出以下类型请求时,应路由到本技能:
- 把某个原始数据集转换 / 标准化为 AI-Ready 格式,例如“帮我把 ${dataset_name} 数据集(领域 ${domain})做成 AI-Ready 标准格式”。
- 给定原始数据路径与输出路径,要求产出统一 AI-Ready 目录结构(
data/+dataset_card.json+README.md,可选static//stats//splits/)。 - 要求把处理结果注册到数据管理清单(
~/.onescience/data_management.json),并 / 或上报给宿主 Agent(dataset_report)。 - cfd / bio / climate(earth) / matchem 四域的数据集格式转换;本地无数据时先从 ModelScope 下载再转换。
- 为 primitives 未收录的自定义数据集现场合成转换脚本(Tier2 LLM converter)。
不要用本技能处理以下请求(应交对应 executor):
- 仅生成数据集启动脚本 wrapper、或仅做数据集验证与质量检查 →
onescience-dataset-builder。 - 训练模型、规划训练流程、生成训练脚本 →
onescience-trainer。 - 数据分析、数据画像、可视化 →
onescience-data-analyzer/onescience-data-profile。 - 把数据集发布到 ModelScope →
onescience-modelscope-publish。 - 远程 / 分布式执行、依赖安装、环境配置 →
onescience-runtime。
核心边界
- 只负责"raw → AI-Ready"这一段流程;不做数据清洗以外的业务逻辑、不训练模型、不做评测。
- 所有转换在本地文件系统执行,不提交远程作业(如需分布式执行由
onescience-runtime承接)。 - 目标格式(AI-Ready schema)不由本技能自定义,而是从
onescience-primitives的spec.md拉取。 - 严格遵守 primitives 强制协议:只通过
resource_retrieval_request → resource_retrieval_result拿内容,不得直接 Read/Glob primitives 的assets/。 - 覆盖 domain:
cfd/bio/climate(别名earth) /matchem。
职责边界
负责:
- 解析用户/上游传入的数据集名称、可选源路径、可选目标路径。
- 三段式解析源数据:显式路径 → 本地探测 → ModelScope 下载(受
allow_download/autonomous_mode门控)。 - 通过
resource_retrieval_request从onescience-primitives拉取目标数据集的spec.md+usage.md。 - 选择转换器:Tier1(预置 adapter)或 Tier2(LLM 现场合成 convert_*.py)。
- 在本地执行转换,输出统一 AI-Ready 目录结构(
data/+static/+stats/+splits/+dataset_card.json+README.md)。 - 验证产物(优先委托
onescience-dataset-builder任务2,不可达时走内置轻量校验)。 - 合并写入
~/.onescience/data_management.json。 - 探测宿主 Agent 是否提供
dataset_report工具;命中则以{name, target_dir, source_dir}调用。
不负责:
- 不做数据清洗/去噪/重网格的算法本身实现(由 Tier1 adapter 或 Tier2 合成脚本承载)。
- 不修改
onescience-orchestrator的领域规则。 - 不写入或修改
onescience-primitives的assets/。 - 不复制
onescience-coder/onescience-runtime/onescience-dataset-builder的职责,能委托就委托。 - 不做数据集发布(发布走
onescience-modelscope-publish)。
输入契约(来自 orchestrator)
step_handoff:
step_id: standardize_dataset
execution_skill: onescience-data-standardizer
step_goal: 将原始数据集转换为 AI-Ready 数据集
task_context:
user_goal: <用户最终目标>
dataset_name: <必填,如 ERA5 / DeepCFD / targetdiff / oc20>
domain: <可选,cfd|bio|climate|earth|matchem;缺失时由 primitives 命名直查回填>
source_dir: <可选,raw 数据本地路径>
target_dir: <可选,AI-Ready 输出路径;缺省 ${ONESCIENCE_DATASETS_DIR}/<name>-ai-ready 或 ~/.onescience/datasets/<name>-ai-ready>
allow_download: <可选 bool,默认 false;autonomous_mode=true 时视为 true>
modelscope_repo_id: <可选,覆盖自动推断的 ModelScope 仓库>
resource_bindings: []
inputs: {}
required_outputs:
- AI-Ready 数据集目录
- ~/.onescience/data_management.json 注册项
- dataset_report 调用回执(若工具可用)
输出契约(返回给 orchestrator)
execution_result:
skill: onescience-data-standardizer
status: success | partial | failed | blocked
artifacts:
name: <dataset_name>
domain: <cfd|bio|climate|matchem>
source_dir: <resolved raw path>
target_dir: <AI-Ready path>
handler: <adapter:climate/era5 | adapter:cfd/deepcfd | adapter:bio/targetdiff | adapter:matchem/oc20 | llm_synth:v1>
dataset_card: <target_dir/dataset_card.json>
registry_path: ~/.onescience/data_management.json
dataset_report_called: <bool>
dataset_report_payload: <若已调用,回显 {name, target_dir, source_dir}>
observation:
summary: <一句话摘要>
tier: <1|2>
completed:
- resolve_source
- fetch_target_spec
- select_converter
- convert
- validate
- register
- report
validation:
format_valid: <bool>
required_files_present: [<data/, dataset_card.json, ...>]
warnings: [<...>]
source_resolution:
method: <explicit|local_probe|modelscope_download>
probed_paths: [<...>]
risks: [<...>]
next_recommendation: <可交给下游训练/datapipe 消费;或建议将 Tier2 生成脚本提升为 Tier1 adapter>
失败或阻断时补充:
status: blocked
blocked_reason: <raw_dataset_not_found | target_spec_missing | download_failed | converter_failed | validation_failed>
blocked_details: <细节>
主流程(六阶段)
阶段 1:输入解析与 domain 归一化
- 从
step_handoff.task_context或.onescience/handoff/step_*.yaml读入。 - 校验
dataset_name存在且非空;缺失 →status=failed, blocked_reason=missing_dataset_name。 domain归一化:earth→climate;其他值直接透传。domain缺失时,通过resource_retrieval_request向onescience-primitives命名直查:
从返回的resource_retrieval_request: user_request: "定位数据集 <dataset_name> 所属 domain" content_request: "摘要" filters: keyword: <dataset_name>matched_resources[*].path或detected_domain提取 domain。仍未命中 →status=blocked, blocked_reason=target_spec_missing。
阶段 2:源数据解析(三段式)
详见 references/source_resolution.md。
- 显式路径优先:
source_dir已提供 → 校验存在与非空目录。校验失败 →status=failed, blocked_reason=source_dir_invalid。 - 本地探测:按顺序查找,命中即用:
${ONESCIENCE_DATASETS_DIR}/<dataset_name>${ONESCIENCE_DATASETS_DIR}/<domain>/<dataset_name>~/.onescience/datasets/<dataset_name>/raw~/.onescience/datasets/<dataset_name>/public/share/onestore/onedatasets/<dataset_name>/public/share/onestore/onedatasets/<domain>/<dataset_name>./<dataset_name>(当前工作目录)
- ModelScope 下载:都未命中时:
- 若
allow_download=true或autonomous_mode=true:进入下载分支(详见references/download_workflow.md),落盘到~/.onescience/datasets/<dataset_name>/raw/。 - 否则:
status=blocked, blocked_reason=raw_dataset_not_found,附建议的 ModelScope repo id 与本地探测过的路径清单。
- 若
阶段 3:目标契约拉取
通过 resource_retrieval_request 命名直查获取目标数据集完整规格:
resource_retrieval_request:
user_request: "获取 <dataset_name> 数据集的 AI-Ready 目标 schema、存储格式、维度约束与划分策略"
content_request: "完整内容"
include_execution_assets: false
filters:
domain: <domain>
keyword: <dataset_name>
从 matched_resources[*].content 提取 spec.md 与 usage.md 的正文。若返回空 → status=blocked, blocked_reason=target_spec_missing。
阶段 4:转换器选择与执行
Tier 判定:
adapter_path = scripts/adapters/<domain>/<dataset_name_lowercase>.py
if exists(adapter_path):
tier = 1
handler = "adapter:<domain>/<dataset_name_lowercase>"
else:
tier = 2
handler = "llm_synth:v1"
Tier1 执行:直接调用 adapter,传入 --source-dir 与 --target-dir。
Tier2 执行(详见 references/converter_authoring.md):
- 探测 raw(
scripts/llm_converter/synthesize.py::probe_raw):列目录、抽样读文件头、检测格式(NetCDF/HDF5/pickle/PDB/mmCIF/SDF/CSV/npz/lmdb/zarr/extxyz/aselmdb)。 - 组装 prompt:注入
spec.md全文 +usage.md全文 + raw 探测报告 + AI-Ready 通用契约 + few-shot(同 domain 的 Tier1 adapter 源码)。 - 优先委托
onescience-coder生成convert_<dataset>.py;不可达时回退到宿主 LLM 直连。 scripts/llm_converter/validate_generated.py做 AST 静态校验:禁止硬编码绝对路径、必须包含argparse、必须调用write_dataset_card。校验失败 → 最多重试 2 次;仍失败 →status=failed, blocked_reason=converter_failed。- 生成脚本落盘到
<target_dir>/_converter/convert_<dataset>.py(保留审计痕迹)。 - 优先委托
onescience-runtime执行;不可达时降级为subprocess.run(["python", script, "--source-dir", src, "--target-dir", tgt])。
阶段 5:验证 + 注册 + 上报
验证:
- 优先向 orchestrator 建议下一步调用
onescience-dataset-builder任务2(step_goal=验证数据集,task_context.dataset_path=<target_dir>)。 - 本技能内置轻量校验作为兜底(
scripts/standardize.py::validate_output):<target_dir>/dataset_card.json存在且 JSON 可解析;<target_dir>/data/存在且非空;<target_dir>/README.md存在;- 从
dataset_card.json抽样 1 个数据文件,可读且 shape/dtype 与spec.md描述一致(best-effort)。
注册(详见 references/data_management_registry.md):
- 调用
scripts/registry.py::upsert,把{name, domain, source_dir, target_dir, handler, created_at, updated_at, checksum}合并写入~/.onescience/data_management.json。 - 合并规则:按
name唯一定位;已存在则更新可变字段,不存在则 append;写入前read → modify → atomic replace,加~/.onescience/.data_management.lock文件锁。
上报(详见 references/dataset_report_probe.md):
scripts/report_probe.py::probe检测当前 Agent 工具清单是否含dataset_report。- 命中 → 调用
dataset_report({name, target_dir, source_dir});失败不阻断主流程,记录dataset_report_error。 - 未命中 →
dataset_report_called: false,在observation.next_recommendation提示可手动上报。
阶段 6:返回 execution_result
组装标准 execution_result 返回。若处于文件 handoff 模式,同时写入 .onescience/handoff/step_{step_id}_result.yaml。
AI-Ready 通用输出契约
详见 references/ai_ready_contract.md。最小结构:
<target_dir>/
data/ # 主数据(HDF5/NetCDF/npz/lmdb/aselmdb 视 domain 而定)
static/ # 可选:静态场/参考序列/结构模板
stats/ # 可选:global_means/stds、逐变量统计
splits/ # 可选:train/val/test 索引(.json 或 .npy)
_converter/ # 仅 Tier2 生成:保留 convert_<dataset>.py 审计痕迹
dataset_card.json # 必需
README.md # 必需
按需读取
执行时必须严格遵循以下文档定义的流程:
references/source_resolution.md:三段式源解析规则与探测顺序。references/download_workflow.md:ModelScope 下载、缓存目录与失败降级。references/ai_ready_contract.md:AI-Ready 输出目录通用契约与dataset_card.jsonschema。references/converter_authoring.md:Tier1 adapter 编写规范 + Tier2 LLM 合成流程与 prompt 约束。references/data_management_registry.md:~/.onescience/data_management.jsonschema 与合并写入规则。references/dataset_report_probe.md:dataset_report工具探测与调用协议。references/handoff_examples.md:四个 domain 的 step_handoff 示例。
禁止事项
- 不得直接 Read/Glob/Grep
onescience-primitives的assets/目录(强制协议)。 - 不得在 Tier2 生成脚本中硬编码绝对路径;必须从
argparse读入。 - 不得跳过注册阶段;即使
dataset_report未命中,data_management.json也必须写入。 - 不得覆盖
data_management.json中其他数据集条目;必须合并写入。 - 不得对 domain 做特殊分支处理(例如"只支持 cfd");主流程对四个 domain 完全一致,只在 adapter 文件路径与 spec 内容上按数据集分叉。
- 不得声称"已完成 dataset_report 上报"当且仅当工具未命中;必须如实返回
dataset_report_called: false。
Signals
- GitHub stars
- 22
- Forks
- 2
- Last commit
- Sep 2026
Ahel review
K1binfo
installs-packages (in scripts/adapters/_base.py)K1binfo
installs-packages (in scripts/adapters/climate/era5.py)K1binfo
installs-packages (in scripts/adapters/matchem/oc20.py)K1binfo
installs-packages (in scripts/download_modelscope.py)K1binfo
installs-packages (in references/converter_authoring.md)K1binfo
installs-packages (in references/download_workflow.md)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
onescience-data-standardizer- Source
- github.com/onescience-ai/oneskills
github.com/onescience-ai/oneskills
More in Databases & data
Skill · coreyhaines31
More in Databases & datasupabase
Skill · supabase
More in Databases & dataconnect
Skill · composiohq
More in Databases & dataazure-kusto
Skill · microsoft
More in Databases & datarevops
Skill · coreyhaines31
More in Databases & dataagentic-os
Skill · affaan-m
More in Databases & data