statdata-transfer
读入/转存 50+ 统计软件格式,对统计二进制格式完整保留变量标签/值标签/特殊缺失值等元数据。副作用声明(完整):运行环境检查(scripts/check_env.py);可应要求 pip 安装缺失包;写入主输出文件的同时可能生成 sidecar 元数据(CSV/TSV 旁 <名>_metadata.json、Parquet/Arrow 内嵌)及覆盖 .hyper 时的 .bak/.bak.1 备份;处理 .rda/.rds/.RData/.mtw/.mpj/.rec 时可调用本地 R 解释器,但该回退默认禁用,需 allow_r_exec=True 显式开启。 / Read/convert 50+ statistical software formats, preserving variable/value labels and missing-value metadata for binary stats formats. FULL side effects: runs environment checks (scripts/check_env.py); may optionally pip-install missing packages on request; writes the main output file AND may emit sidecar metadata (e.g. <name>_metadata.json beside CSV/TSV, embedded in Parquet/Arrow schema) and .bak/.bak.1 backups when overwriting .hyper; can invoke the local R interpreter for .rda/.rds/.RData/.mtw/.mpj/.rec files via a fallback DISABLED by default and opted in only with allow_r_exec=True.
Rank
62
Safety
84
Downloads
1.8k
Updated
Oct 10, 2026
Version
2.2.1
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.8K downloadsadoption · observed Oct 10, 2026
- Latest release
- 2.2.1release · observed Aug 2, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s176fv8983h1rte6dmxwp9wt4n89j8p5:statdata-transfer- Install using `clawhub skill install s176fv8983h1rte6dmxwp9wt4n89j8p5:statdata-transfer` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/medstatstar/statdata-transfer before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-medstatstar-statdata-transfer/snapshot"
Documentation
CLAWHUB
156,859 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
slug: statdata-transfer
name: statdata-transfer
displayName: 统计数据格式转换器 / Statistical Data Format Converter
cn_name: 统计数据格式转换器
version: 2.2.1
summary: 读入/转存 50+ 统计软件格式,对统计二进制格式完整保留变量标签/值标签/特殊缺失值等元数据。副作用声明(完整):运行环境检查(scripts/check_env.py);可应要求 pip 安装缺失包;写入主输出文件的同时,可能生成 sidecar 元数据文件(CSV/TSV 旁生成 <名>_metadata.json,Parquet/Arrow 内嵌元数据)及覆盖 .hyper 时的 .bak/.bak.1 备份;处理 .rda/.rds/.RData/.mtw/.mpj/.rec 文件时可调用本地 R 解释器,但该回退默认禁用,需 allow_r_exec=True 显式开启。
license: MIT
description: "读入/转存 50+ 统计软件格式,对统计二进制格式完整保留变量标签/值标签/特殊缺失值等元数据。副作用声明(完整):运行环境检查(scripts/check_env.py);可应要求 pip 安装缺失包;写入主输出文件的同时可能生成 sidecar 元数据(CSV/TSV 旁 <名>_metadata.json、Parquet/Arrow 内嵌)及覆盖 .hyper 时的 .bak/.bak.1 备份;处理 .rda/.rds/.RData/.mtw/.mpj/.rec 时可调用本地 R 解释器,但该回退默认禁用,需 allow_r_exec=True 显式开启。 / Read/convert 50+ statistical software formats, preserving variable/value labels and missing-value metadata for binary stats formats. FULL side effects: runs environment checks (scripts/check_env.py); may optionally pip-install missing packages on request; writes the main output file AND may emit sidecar metadata (e.g. <name>_metadata.json beside CSV/TSV, embedded in Parquet/Arrow schema) and .bak/.bak.1 backups when overwriting .hyper; can invoke the local R interpreter for .rda/.rds/.RData/.mtw/.mpj/.rec files via a fallback DISABLED by default and opted in only with allow_r_exec=True."
triggers:
- "statdata-transfer"
- "统计数据格式转换"
- "spss stata sas 格式"
- ".sav .dta .sas7bdat 读入"
- "sav转dta 格式转换"
- "variable labels 变量标签"
- "metadata-preserved conversion"
required_commands: [python]
invocable: true
metadata:
openclaw: { emoji: "🛠️", icon: "assets/logo.svg" }
authors: ["medstatstar", "phoe-zip"]
license: "MIT"
tags: ["data-conversion", "statistics", "spss", "stata", "sas", "clinical-trials", "metadata", "pandas", "bidirectional"]
homepage: "https://github.com/medstatstar/statdata-transfer"
permissions:
scope: "user-space-only"
network: "off"
network_note: "Offline by default; the only network touchpoint is the optional `python scripts/check_env.py --install`, which pip-installs missing packages and runs ONLY on explicit user request."
filesystem: "read-only to its own files; reads the input data file you specify; writes the converted output file to a path you specify, and may additionally create sidecar metadata files (e.g. <name>_metadata.json beside CSV/TSV, or metadata embedded in Parquet/Arrow schema) and .bak/.bak.1 backups when overwriting .hyper"
data: "no external data transmission"
---
# Statistical Data Format Converter
> **Safe by default — preview, not execute**: the skill shows what it will read/convert and only writes a file when you explicitly ask. Every R-invoking path is opt-in and disabled by default.
## Language
- **English guide** → [README.md](https://github.com/medstatstar/statdata-transfer/blob/main/README.md)
- **中文指南** → [README_zh-CN.md](https://github.com/medstatstar/statdata-transfer/blob/mainREADME.md
# statdata-transfer / Statistical Data Format Converter [🇨🇳 Chinese](./README_zh-CN.md) <div align="center"> <img src="assets/icon.svg" width="240" height="240" /> </div> --- > Read 50+ statistical-software and clinical-trial data formats, and **inter-convert between most of them** while keeping variable/value labels and missing-value metadata. No statistical software required — format conversion only. ## How to use it in a conversation Just talk to the agent in natural language. A few real examples (copy-paste ready): **① Most common — convert a file** - **You say**: `convert C:/Users/Name/Desktop/data.sav to .dta` - **Agent replies** (sketch): reads `data.sav` with pyreadstat, preserves all variable/value labels, and writes `data.dta` in the same folder. - **Trigger the real conversion**: by default the agent previews the plan; say `please write the file` to execute. **② Show what's inside** - **You say**: `read data.sav and show metadata` - **Agent replies**: prints the DataFrame shape, variable labels, value labels, and a list of which metadata will be preserved. **③ Check before you lose data** - **You say**: `will converting .sav to .xlsx lose any metadata?` - **Agent replies**: warns that Excel keeps labels only in a side sheet; suggests Parquet/Stata to keep them losslessly. **④ Ask for reproducible code** - **You say**: `show me the Python code to convert .sav to .parquet` - **Agent replies**: prints the `read_stat_file` / `write_stat_file` snippet (code is always English). **⑤ Switch language** - **You say**: `reply in Chinese` / `switch to English` — all user-facing messages follow your OS language or this prompt. ## What can it do? (scenario index) | Capability | Typical use | Try saying | |:---|:---|:---| | **Read 50+ formats** | Open SPSS/Stata/SAS/R/Excel/Parquet/HDF5/JSON… into pandas | `read data.sav and show metadata` | | **Convert between stats formats** | SPSS ↔ Stata ↔ R ↔ SAS XPT, keeping all labels | `convert data.sav to .dta keeping variable labels` | | **Export universal formats** | Parquet / Feather / HDF5 / JSON / CSV / Excel with labels embedded | `save to parquet but keep value labels` | | **Metadata-safe round-trip** | Labels survive a convert-and-convert-back | `convert to parquet then back to sav, keep labels` | | **Metadata-loss warning** | Know what will be dropped before exporting | `will .sav to .xlsx lose metadata?` | | **Batch / folder** | Convert a whole folder or a zip archive | `convert all .dta in this zip to .sav` | Full format list and per-format limits: see **Advanced reference** below. ## First-use FAQ - **Do I need SPSS/Stata/R installed?** No. The skill is pure Python; it only *optionally* calls a local R interpreter for a few formats (Minitab/EpiData/R write), and only when you pass `allow_r_exec=True`. - **How do I get the actual converted file, not just code?** Say `please write the file`. By default it previews; execution is e
_meta.json
{
"ownerId": "kn7amqq1jv28skb63wavr6shah89jsm5",
"slug": "statdata-transfer",
"version": "2.2.1",
"publishedAt": 1785668532225
}references/new_formats_architecture_analysis.json
{
"current_architecture": {
"data": "pandas DataFrame",
"metadata": "BaseMeta TypedDict (~28 fields)",
"column_report": "ColumnInfo TypedDict (12 fields)",
"return_type": "StatFileResult = dict[str, Any] with keys: dataframe, metadata, warnings, column_report",
"multi_object_pattern": "read_all_*() returns dict[str, StatFileResult]"
},
"formats_analysis": {
"sas7bcat": {
"description": "SAS Ŀ¼�ļ����洢��ʽ���壨ֵ��ǩ��",
"data_structure": "�����ݣ�ֻ��Ԫ���ݣ���ʽ���壩",
"metadata_fields": [
"value_labels",
"variable_value_labels",
"variable_to_label"
],
"current_architecture_sufficient": true,
"notes": "pyreadstat ��֧�ֶ�ȡ .sas7bcat������ value_labels dict",
"architecture_extension_needed": false
},
"jmp": {
"description": "SAS JMP �����ļ����ɰ���������ݱ����ű����������",
"data_structure": "�ɰ���������ݱ���Data Table����ÿ������һ�� DataFrame",
"metadata_fields": [
"variable_labels",
"value_labels",
"column_properties (formulas, ranges)"
],
"current_architecture_sufficient": false,
"notes": "JMP �ļ��ɰ���������ݱ�����Ҫ read_all_jmp_tables() ģʽ�������ԣ���ʽ����Χ����Ҫ��չ ColumnInfo",
"architecture_extension_needed": true,
"extension_details": [
"ColumnInfo ��Ҫ��չ��formula (str), range (dict), column_property (dict)",
"��Ҫ���� JmpMeta �࣬���� tables list��scripts list��analysis list",
"��Ҫ���� read_all_jmp_tables() ����"
]
},
"minitab": {
"description": "Minitab �������ļ����ɰ��������������Worksheet��",
"data_structure": "�ɰ��������������ÿ����������һ�� DataFrame",
"metadata_fields": [
"variable_labels",
"worksheet_names",
"formulas"
],
"current_architecture_sufficient": false,
"notes": "Minitab �������ɰ����������������Ҫ read_all_minitab_worksheets() ģʽ",
"architecture_extension_needed": true,
"extension_details": [
"��Ҫ���� MinitabMeta �࣬���� worksheets list��active_worksheet str",
"��Ҫ���� read_all_minitab_worksheets() ����",
"ColumnInfo ������Ҫ��չ��formula (str)"
]
},
"prism": {
"description": "GraphPad Prism ��Ŀ�ļ����������ݱ����������ͼ��",
"data_structure": "�������ݱ���DataFrame�����������DataFrame����ͼ�Σ���תΪ DataFrame��",
"metadata_fields": [
"data_tables",
"results_tables",
"graphs_info"
],
"current_architecture_sufficient": false,
"notes": "Prism �ļ��������ݱ��ͽ���������߶��� DataFrame��ͼ��������Ϊ DataFrame",
"architecture_extension_needed": true,
"extension_details": [
"��Ҫ���� PrismMeta �࣬���� data_tables list��results_tables list��graphs_info list",
"StatFileResult ��Ҫ��չ������� read_all_prism_tables() ģʽ",
"��ǰ�ܹ�ֻ�ܱ������ݱ����������ͼ����Ϣ�ᶪʧ"
]
},
"jamovi": {
references/v1.4_implementation_summary.json
{
"v1.4_new_formats": [
{
"format": "SAS Catalog",
"ext": ".sas7bcat",
"handler": "_read_sas_catalog",
"dependency": "pyreadstat (已支持)",
"architecture": "SasCatalogMeta, 返回格式定义 DataFrame",
"status": "done"
},
{
"format": "JMP",
"ext": ".jmp",
"handler": "_read_jmp",
"dependency": "jmpio-python (PyPI) 或 @skill:statsoft-cli",
"architecture": "JmpMeta, 多表需 read_all_jmp_tables()",
"status": "done (handler 已添加,jmpio 未安装)"
},
{
"format": "Minitab",
"ext": ".mtw/.mpj",
"handler": "_read_minitab",
"dependency": "mtbpy 或 R foreign::read.mtb() 中继",
"architecture": "MinitabMeta, 多工作表需 read_all_minitab_worksheets()",
"status": "done (R 中继已实现)"
},
{
"format": "GraphPad Prism",
"ext": ".pzfx/.pz",
"handler": "_read_prism",
"dependency": "pzfx (PyPI) 或 @skill:statsoft-cli",
"architecture": "PrismMeta, 含数据表+结果表",
"status": "done (handler 已添加,pzfx 未安装)"
},
{
"format": "jamovi",
"ext": ".omv",
"handler": "_read_jamovi",
"dependency": "无需额外包(ZIP+CSV 解析)",
"architecture": "JamoviMeta, 含 analysis JSON",
"status": "done"
},
{
"format": "EpiData",
"ext": ".rec",
"handler": "_read_epidata",
"dependency": "R foreign::read.epiinfo() 中继",
"architecture": "EpidataMeta",
"status": "done (R 中继已实现)"
},
{
"format": "EViews",
"ext": ".wf1/.wf2",
"handler": "_read_eviews",
"dependency": ".wf2 可直接解析 JSON;.wf1 需 @skill:statsoft-cli",
"architecture": "EviewsMeta",
"status": "done (.wf2 解析已实现)"
}
],
"architecture_extensions": [
"ColumnInfo 新增:formula (str), column_property (dict)",
"新增 Meta 类:SasCatalogMeta, JmpMeta, MinitabMeta, PrismMeta, JamoviMeta, EpidataMeta, EviewsMeta",
"__all__ 新增导出:7 个新 Meta 类名"
],
"files_modified": [
"scripts/stat_reader.py (+459 行,共 3131 行)",
"scripts/check_env.py (新增 jmpio, pzfx 检测)",
"SKILL.md (待更新)",
"references/new_formats_architecture_analysis.json (新增)"
],
"remaining_work": [
"更新 SKILL.md(添加 7 种新格式详情)",
"添加 read_all_jmp_tables() / read_all_minitab_worksheets()",
"测试新 handler(需要实际文件)",
"安装 jmpio/pzfx 包(或配置 @skill:statsoft-cli)"
]
}AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/medstatstar/skills/statdata-transfer",
"sourceUrl": "https://clawhub.ai/medstatstar/skills/statdata-transfer",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T01:52:55.506Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-medstatstar-statdata-transfer/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-medstatstar-statdata-transfer/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T01:52:55.506Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.8K downloads",
"href": "https://clawhub.ai/medstatstar/statdata-transfer",
"sourceUrl": "https://clawhub.ai/medstatstar/statdata-transfer",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T01:52:55.506Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.2.1",
"href": "https://clawhub.ai/medstatstar/statdata-transfer",
"sourceUrl": "https://clawhub.ai/medstatstar/statdata-transfer",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-02T11:02:12.225Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-medstatstar-statdata-transfer/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-medstatstar-statdata-transfer/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.2.1",
"description": "Security hardening (2.2.1): pin lxml>=6.1.0 to fix CVE-2026-41066 (XXE); add secure lxml parser with entity resolution disabled for .wdx/.opju; fully disclose sidecar metadata & backup file writes in manifest.",
"href": "https://clawhub.ai/medstatstar/statdata-transfer",
"sourceUrl": "https://clawhub.ai/medstatstar/statdata-transfer",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-02T11:02:12.225Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
