Figshare Skill Interact with the Figshare v2 REST API to search, download, create, and upload research outputs. Prerequisites - and available on PATH. - For authenticated endpoints (anything under or uploads), a personal token from https://figshare.com/account/applications exported as: - Public endpoints (search, public articles, downloads) need no token. Always confirm with the user before creating, modifying, publishing, or deleting anything on their account — these are hard to reverse. Update check Throttle to one check per 24 hours per installation; never mutate the skill directory withou…

\\t' read -r url name; do curl -L -o \"$name\" \"$url\"; done\n```\n\n### List your own articles\n\n```bash\ncurl -s -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n \"https://api.figshare.com/v2/account/articles?page=1&page_size=50\" | jq\n```\n\n### Create an article (draft)\n\n```bash\ncurl -s -X POST https://api.figshare.com/v2/account/articles \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"title\": \"My dataset\",\n \"description\": \"Full description here.\",\n \"defined_type\": \"dataset\",\n \"tags\": [\"demo\"],\n \"categories\": [2]\n }' | jq\n```\n\nResponse is `{ \"location\": \".../account/articles/{id}\", \"entity_id\": 123 }`.\n\n### Update / publish an article\n\n```bash\n# update metadata\ncurl -s -X PUT https://api.figshare.com/v2/account/articles/$ART \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"title\": \"New title\"}'\n\n# publish (becomes public, assigns DOI, version is frozen)\ncurl -s -X POST https://api.figshare.com/v2/account/articles/$ART/publish \\\n -H \"Authorization: token $FIGSHARE_TOKEN\"\n```\n\nAlways ask before publishing — it's permanent for that version.\n\n### Collections & projects\n\n```bash\n# create collection that groups existing articles\ncurl -s -X POST https://api.figshare.com/v2/account/collections \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"title\": \"My Collection\", \"articles\": [123, 456]}'\n\n# create project\ncurl -s -X POST https://api.figshare.com/v2/account/projects \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"title\": \"Research Project\"}'\n```\n\n## Uploading Files (Multi-part Flow)\n\nFigshare uploads are **3-step**: initiate → PUT each part → complete. Use the bundled helpers for anything non-trivial:\n\n```bash\n# upload a file to an existing draft article\n./scripts/upload.sh \u003carticle_id> \u003cpath/to/file>\n\n# batch-download every file from a public article (accepts id or figshare.com URL)\n./scripts/download.sh \u003carticle_id_or_url> [output_dir]\n\n# reserve + upload + publish a new version of an already-published article\n./scripts/new-version.sh \u003carticle_id> \u003cpath/to/file>\n```\n\nThe raw flow, in case you need to adapt it:\n\n1. **Initiate** — compute md5 + size, POST to article:\n\n ```bash\n SIZE=$(stat -f%z \"$FILE\" 2>/dev/null || stat -c%s \"$FILE\")\n MD5=$(md5sum \"$FILE\" | awk '{print $1}') # or: md5 -q on macOS\n curl -s -X POST https://api.figshare.com/v2/account/articles/$ART/files \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d \"{\\\"md5\\\":\\\"$MD5\\\",\\\"name\\\":\\\"$(basename $FILE)\\\",\\\"size\\\":$SIZE}\"\n ```\n\n Response has `location` pointing at `/account/articles/$ART/files/$FILE_ID`.\n\n2. **Fetch upload info** from that file record — it contains an `upload_url`. GET the upload_url to learn the part layout (`parts: [{partNo, startOffset, endOffset}]`).\n\n3. **Upload parts** — for each part, PUT the byte range to `${upload_url}/${partNo}`:\n\n ```bash\n dd if=\"$FILE\" bs=1 skip=$START count=$((END-START+1)) 2>/dev/null \\\n | curl -s -X PUT --data-binary @- \"${upload_url}/${partNo}\" \\\n -H \"Authorization: token $FIGSHARE_TOKEN\"\n ```\n\n4. **Complete** — POST to the file record to finalize:\n\n ```bash\n curl -s -X POST https://api.figshare.com/v2/account/articles/$ART/files/$FILE_ID \\\n -H \"Authorization: token $FIGSHARE_TOKEN\"\n ```\n\nWhy three steps: Figshare streams large files through a separate upload service. Skipping the complete call leaves the file in a pending state and it won't appear on the article.\n\n## Pagination\n\nMost list endpoints accept either `page`+`page_size` or `limit`+`offset`. Max `page_size` is typically 1000. For large harvests, loop until an empty page:\n\n```bash\npage=1\nwhile :; do\n out=$(curl -s \"https://api.figshare.com/v2/articles?page=$page&page_size=100\")\n [ \"$(echo \"$out\" | jq 'length')\" = \"0\" ] && break\n echo \"$out\" | jq -c '.[]'\n page=$((page+1))\n sleep 1\ndone\n```\n\n## Troubleshooting\n\n- **401** — token missing/expired; re-check `$FIGSHARE_TOKEN`.\n- **403** on `/account/...` — token lacks the needed scope; regenerate with full permissions.\n- **422** on article create — missing required field (usually `title`) or bad `categories`/`defined_type`.\n- **Upload parts mismatch** — md5 or size in step 1 didn't match the bytes actually uploaded; recompute and restart.\n- **Published article won't update** — publishing freezes a version; create a new version instead.\n\n## References\n\n- API reference: https://docs.figshare.com/\n- Token management: https://figshare.com/account/applications\n- Category IDs: `GET https://api.figshare.com/v2/categories`\n- License IDs: `GET https://api.figshare.com/v2/licenses`\n---","attachment_filenames":["agents/openai.yaml","README_CN.md","README.md","scripts/download.sh","scripts/new-version.sh","scripts/upload.sh"],"attachments":[{"filename":"agents/openai.yaml","content":"interface:\n display_name: \"Figshare\"\n short_description: \"Search, download, and publish via Figshare\"\n default_prompt: \"Use $figshare-skill to search Figshare, inspect an article, or upload a file to my account.\"\n\npolicy:\n allow_implicit_invocation: true\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":259,"content_sha256":"78e3126486efe320987234f860e6ff371de76a8d09eb1e9d8e6fdc40c9eba9a1"},{"filename":"README_CN.md","content":"# figshare-skill — 命令行下的 Figshare v2 API\n\n[English](README.md) | [Figshare API 文档](https://docs.figshare.com/)\n\n## 功能特性\n\n- **搜索** Figshare 公开文章,支持字段操作符(`:title:`、`:author:`、`:tag:`、`:category:`、`:doi:`)\n- **批量下载** 一篇公开文章的全部文件,支持 ID / DOI / `figshare.com` URL\n- **列表 / 创建 / 更新 / 发布** 自己的文章,覆盖草稿与版本发布流程\n- **多分片上传**,封装 `initiate → PUT parts → complete` 三步流程,自动处理 md5 与分片大小\n- **新版本发布** —— 已发布版本不可修改,新版本通过脚本一步完成\n- **Collections / Projects** 管理\n- 当用户提到 Figshare、`figshare.com` 链接或 `10.6084/m9.figshare.*` DOI 时自动触发\n\n## 多平台支持\n\n适配所有支持 [Agent Skills](https://agentskills.io) 格式的 AI 编程助手:\n\n| 平台 | 状态 | 说明 |\n|------|------|------|\n| **Codex** | ✅ 完全支持 | 原生 `SKILL.md` + `agents/openai.yaml` 界面元数据 |\n| **Claude Code** | ✅ 完全支持 | 原生 SKILL.md 格式 |\n| **OpenClaw** | ✅ 完全支持 | `metadata.openclaw` 命名空间 |\n| **SkillsMP** | ✅ 已收录 | GitHub topics 已配置 |\n\n## 对比\n\n### vs 原生 Agent(无技能)\n\n| 能力 | 原生 Agent | 本技能 |\n|------|-----------|--------|\n| 知道 Figshare 基础 URL 与认证头 | 或许 | ✅ |\n| 搜索字段操作符(`:title:`、`:author:` 等) | ❌ | ✅ |\n| 从 ID / DOI / URL 批量下载公开文章 | ❌ | ✅ 脚本 |\n| 多分片上传(`initiate → parts → complete`) | ⚠️ 每次重写 | ✅ `upload.sh` |\n| 自动处理 md5 / 大小 / 分片布局 | ❌ | ✅ |\n| 新版本发布 | ❌ | ✅ `new-version.sh` |\n| 发布 / 删除前确认 | ❌ | ✅ |\n| 可复制即用的 `curl` + `jq` 示例 | ❌ | ✅ |\n\n## 前置条件\n\n- `curl`\n- `jq`\n- 所有涉及 `/account/...` 或上传的操作需要 [Figshare Personal Token](https://figshare.com/account/applications):\n\n ```bash\n export FIGSHARE_TOKEN=xxxxxxxxxxxxxxxx\n ```\n\n公开搜索 / 获取文章 / 下载不需要 token。\n\n## 安装\n\n### Codex\n\n```bash\n# 全局安装(Codex 自动发现)\ngit clone https://github.com/Agents365-ai/figshare-skill.git ~/.codex/skills/figshare-skill\n```\n\n### Claude Code\n\n```bash\n# 全局安装(所有项目可用)\ngit clone https://github.com/Agents365-ai/figshare-skill.git ~/.claude/skills/figshare-skill\n\n# 项目级安装\ngit clone https://github.com/Agents365-ai/figshare-skill.git .claude/skills/figshare-skill\n```\n\n### OpenClaw\n\n```bash\ngit clone https://github.com/Agents365-ai/figshare-skill.git ~/.openclaw/skills/figshare-skill\n\n# 项目级\ngit clone https://github.com/Agents365-ai/figshare-skill.git skills/figshare-skill\n```\n\n### SkillsMP\n\n在 [SkillsMP](https://skillsmp.com) 搜索或使用 CLI:\n\n```bash\nskills install figshare-skill\n```\n\n### 安装路径汇总\n\n| 平台 | 全局路径 | 项目路径 |\n|------|----------|----------|\n| Codex | `~/.codex/skills/figshare-skill/` | N/A |\n| Claude Code | `~/.claude/skills/figshare-skill/` | `.claude/skills/figshare-skill/` |\n| OpenClaw | `~/.openclaw/skills/figshare-skill/` | `skills/figshare-skill/` |\n| SkillsMP | N/A(CLI 安装) | N/A |\n\n## 使用示例\n\n直接描述你想做什么:\n\n```\n> 使用 $figshare-skill 搜索 figshare 上的 \"single cell\" 数据集,并返回前 10 条\n\n> 在 figshare 上搜索 \"single cell\" 数据集,返回前 10 条\n\n> 把 https://figshare.com/articles/dataset/xxx/31957606 的全部文件下载到 ./data\n\n> 把 ./results.zip 上传到我的草稿文章 31957803\n\n> 为已发布文章 12345678 创建并发布一个新版本,新文件是 ./v2.csv\n```\n\n技能会自动选对端点、补齐认证,并调用内置脚本完成多分片上传。\n\n## 辅助脚本\n\n| 脚本 | 用途 |\n|------|------|\n| `scripts/upload.sh \u003carticle_id> \u003cfile>` | 三步式多分片上传到草稿文章 |\n| `scripts/download.sh \u003cid_or_url> [dir]` | 公开文章批量下载 |\n| `scripts/new-version.sh \u003carticle_id> \u003cfile>` | 预留、上传并发布新版本 |\n\n全部脚本从环境变量读取 `FIGSHARE_TOKEN`,只依赖 `curl` 与 `jq`。\n\n## 文件说明\n\n- `SKILL.md` —— **唯一必需的文件**,所有平台都会加载它作为技能指令\n- `agents/openai.yaml` —— Codex 的技能 UI 元数据,用于发现与快捷提示\n- `scripts/upload.sh` —— 多分片上传\n- `scripts/download.sh` —— 批量下载\n- `scripts/new-version.sh` —— 新版本工作流\n- `README.md` —— 英文文档(GitHub 首页展示)\n- `README_CN.md` —— 本文件\n\n## 已知限制\n\n- **`dd bs=1` 在极大分片上偏慢**:数 GB 以内的分片没问题,单文件超大场景建议改为 `bs=1M` + `skip=`/`count=`\n- **速率限制**:Figshare 未公布硬限,但建议 ≤1 req/sec,脚本未内置节流\n- **已发布版本不可修改**:修改内容必须走 `new-version.sh`,不能 `update`\n- **Categories / licenses 是数字 ID**:创建文章前用 `GET /v2/categories` 和 `GET /v2/licenses` 查表\n\n## License\n\nMIT\n\n## 赞赏\n\n如果这个技能对你有帮助,欢迎赞赏作者:\n\n\u003ctable>\n \u003ctr>\n \u003ctd align=\"center\">\n \u003cimg src=\"https://raw.githubusercontent.com/Agents365-ai/images_payment/main/qrcode/wechat-pay.png\" width=\"180\" alt=\"微信支付\">\n \u003cbr>\n \u003cb>微信支付\u003c/b>\n \u003c/td>\n \u003ctd align=\"center\">\n \u003cimg src=\"https://raw.githubusercontent.com/Agents365-ai/images_payment/main/qrcode/alipay.png\" width=\"180\" alt=\"支付宝\">\n \u003cbr>\n \u003cb>支付宝\u003c/b>\n \u003c/td>\n \u003ctd align=\"center\">\n \u003cimg src=\"https://raw.githubusercontent.com/Agents365-ai/images_payment/main/qrcode/buymeacoffee.png\" width=\"180\" alt=\"Buy Me a Coffee\">\n \u003cbr>\n \u003cb>Buy Me a Coffee\u003c/b>\n \u003c/td>\n \u003c/tr>\n\u003c/table>\n\n## 作者\n\n**Agents365-ai**\n\n- Bilibili: https://space.bilibili.com/441831884\n- GitHub: https://github.com/Agents365-ai\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":5947,"content_sha256":"79e9fa577de2dd955f326b5ea51dae62abbc1e4e3361b1fe023330537988022c"},{"filename":"README.md","content":"# figshare-skill — Figshare v2 API from the Command Line\n\n[中文文档](README_CN.md) | [Figshare API Docs](https://docs.figshare.com/)\n\n## What it does\n\n- **Search** public Figshare articles with field operators (`:title:`, `:author:`, `:tag:`, `:category:`, `:doi:`)\n- **Batch-download** every file of a public article from an ID, DOI, or `figshare.com` URL\n- **List / create / update / publish** your own articles, including draft and version workflows\n- **Multi-part upload** for large files — wraps the 3-step `initiate → PUT parts → complete` flow with md5 + part sizing handled automatically\n- **New-version publishing** for already-published articles (published versions are frozen)\n- **Collections and Projects** management\n- Triggers automatically whenever the user mentions Figshare, a `figshare.com` URL, or a `10.6084/m9.figshare.*` DOI\n\n## Multi-Platform Support\n\nWorks with all major AI coding agents that support the [Agent Skills](https://agentskills.io) format:\n\n| Platform | Status | Details |\n|----------|--------|---------|\n| **Codex** | ✅ Full support | Native `SKILL.md` plus `agents/openai.yaml` UI metadata |\n| **Claude Code** | ✅ Full support | Native SKILL.md format |\n| **OpenClaw** | ✅ Full support | `metadata.openclaw` namespace |\n| **SkillsMP** | ✅ Indexed | GitHub topics configured |\n\n## Comparison\n\n### vs No Skill (native agent)\n\n| Feature | Native agent | This skill |\n|---------|-------------|------------|\n| Knows the Figshare base URL & auth header | Maybe | ✅ |\n| Search field operators (`:title:`, `:author:`...) | ❌ | ✅ |\n| Public batch download from ID / DOI / URL | ❌ | ✅ helper script |\n| Multi-part upload (`initiate → parts → complete`) | ⚠️ reinvents per run | ✅ `upload.sh` |\n| md5 / size / part layout handled | ❌ | ✅ automatic |\n| New-version publishing | ❌ | ✅ `new-version.sh` |\n| Safe-by-default publish / delete | ❌ | ✅ asks first |\n| Concrete `curl` + `jq` recipes | ❌ | ✅ inlined |\n\n## Prerequisites\n\n- `curl`\n- `jq`\n- A [Figshare Personal Token](https://figshare.com/account/applications) for anything that touches `/account/...` or uploads:\n\n ```bash\n export FIGSHARE_TOKEN=xxxxxxxxxxxxxxxx\n ```\n\nPublic search / article / download endpoints work with no token at all.\n\n## Skill Installation\n\n### Codex\n\n```bash\n# Global install (auto-discovered by Codex)\ngit clone https://github.com/Agents365-ai/figshare-skill.git ~/.codex/skills/figshare-skill\n```\n\n### Claude Code\n\n```bash\n# Global install (available in all projects)\ngit clone https://github.com/Agents365-ai/figshare-skill.git ~/.claude/skills/figshare-skill\n\n# Project-level install\ngit clone https://github.com/Agents365-ai/figshare-skill.git .claude/skills/figshare-skill\n```\n\n### OpenClaw\n\n```bash\ngit clone https://github.com/Agents365-ai/figshare-skill.git ~/.openclaw/skills/figshare-skill\n\n# Project-level\ngit clone https://github.com/Agents365-ai/figshare-skill.git skills/figshare-skill\n```\n\n### SkillsMP\n\nBrowse on [SkillsMP](https://skillsmp.com) or:\n\n```bash\nskills install figshare-skill\n```\n\n### Installation paths summary\n\n| Platform | Global path | Project path |\n|----------|-------------|--------------|\n| Codex | `~/.codex/skills/figshare-skill/` | N/A |\n| Claude Code | `~/.claude/skills/figshare-skill/` | `.claude/skills/figshare-skill/` |\n| OpenClaw | `~/.openclaw/skills/figshare-skill/` | `skills/figshare-skill/` |\n| SkillsMP | N/A (installed via CLI) | N/A |\n\n## Usage\n\nJust describe what you want:\n\n```\n> Use $figshare-skill to search Figshare for \"single cell\" datasets and show me the top 10\n\n> Search figshare for \"single cell\" datasets and show me the top 10\n\n> Download every file of https://figshare.com/articles/dataset/xxx/31957606 into ./data\n\n> Upload ./results.zip to my draft figshare article 31957803\n\n> Publish a new version of figshare article 12345678 with ./v2.csv\n```\n\nThe skill picks the right endpoint, fills in authentication, and uses the bundled helper scripts for multi-part uploads.\n\n## Helper Scripts\n\n| Script | Purpose |\n|--------|---------|\n| `scripts/upload.sh \u003carticle_id> \u003cfile>` | 3-step multi-part upload to a draft article |\n| `scripts/download.sh \u003cid_or_url> [dir]` | Batch-download every file from a public article |\n| `scripts/new-version.sh \u003carticle_id> \u003cfile>` | Reserve, upload, and publish a new version |\n\nAll scripts read `FIGSHARE_TOKEN` from the environment and depend only on `curl` + `jq`.\n\n## Files\n\n- `SKILL.md` — **the only required file**. Loaded by all platforms as the skill instructions.\n- `agents/openai.yaml` — Codex UI metadata for skill discovery and prompt chips\n- `scripts/upload.sh` — multi-part upload helper\n- `scripts/download.sh` — batch downloader\n- `scripts/new-version.sh` — new-version workflow\n- `README.md` — this file (English, displayed on GitHub homepage)\n- `README_CN.md` — Chinese documentation\n\n## Known Limitations\n\n- **`dd bs=1` is slow for huge parts**: good enough for datasets up to a few GB per part. Very large single files would benefit from a `bs=1M` + `skip=`/`count=` rewrite\n- **Rate limiting**: Figshare does not publish a hard limit but recommends ≤1 req/sec. The helpers do not throttle\n- **Published versions are immutable**: edits require `new-version.sh`, not `update`\n- **Categories / licenses are numeric IDs**: use `GET /v2/categories` and `GET /v2/licenses` to look up the ID you need before creating an article\n\n## License\n\nMIT\n\n## Support\n\nIf this skill helps you, consider supporting the author:\n\n\u003ctable>\n \u003ctr>\n \u003ctd align=\"center\">\n \u003cimg src=\"https://raw.githubusercontent.com/Agents365-ai/images_payment/main/qrcode/wechat-pay.png\" width=\"180\" alt=\"WeChat Pay\">\n \u003cbr>\n \u003cb>WeChat Pay\u003c/b>\n \u003c/td>\n \u003ctd align=\"center\">\n \u003cimg src=\"https://raw.githubusercontent.com/Agents365-ai/images_payment/main/qrcode/alipay.png\" width=\"180\" alt=\"Alipay\">\n \u003cbr>\n \u003cb>Alipay\u003c/b>\n \u003c/td>\n \u003ctd align=\"center\">\n \u003cimg src=\"https://raw.githubusercontent.com/Agents365-ai/images_payment/main/qrcode/buymeacoffee.png\" width=\"180\" alt=\"Buy Me a Coffee\">\n \u003cbr>\n \u003cb>Buy Me a Coffee\u003c/b>\n \u003c/td>\n \u003c/tr>\n\u003c/table>\n\n## Author\n\n**Agents365-ai**\n\n- Bilibili: https://space.bilibili.com/441831884\n- GitHub: https://github.com/Agents365-ai\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":6286,"content_sha256":"1525fc577023584ca20657f95827ec744b3e081a2d67c3bf8840d423ef2e029d"},{"filename":"scripts/download.sh","content":"#!/usr/bin/env bash\n# Download all files from a public Figshare article.\n# Usage: ./download.sh \u003carticle_id|figshare_url> [output_dir]\nset -euo pipefail\n\nARG=\"${1:?article_id or figshare URL required}\"\nOUT=\"${2:-.}\"\nmkdir -p \"$OUT\"\n\n# Accept a figshare.com URL and extract the numeric id from the tail.\nART=$(echo \"$ARG\" | grep -oE '[0-9]+' | tail -1)\n[ -n \"$ART\" ] || { echo \"could not parse article id from: $ARG\" >&2; exit 1; }\n\necho \">> article $ART\"\ncurl -sS \"https://api.figshare.com/v2/articles/$ART/files\" \\\n | jq -r '.[] | \"\\(.download_url)\\t\\(.name)\"' \\\n | while IFS=

Figshare Skill Interact with the Figshare v2 REST API to search, download, create, and upload research outputs. Prerequisites - and available on PATH. - For authenticated endpoints (anything under or uploads), a personal token from https://figshare.com/account/applications exported as: - Public endpoints (search, public articles, downloads) need no token. Always confirm with the user before creating, modifying, publishing, or deleting anything on their account — these are hard to reverse. Update check Throttle to one check per 24 hours per installation; never mutate the skill directory withou…

\\t' read -r url name; do\n echo \" downloading $name\"\n curl -L -sS -o \"$OUT/$name\" \"$url\"\n done\necho \">> done -> $OUT\"\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":713,"content_sha256":"a7e839501115fd1fc0c5a33d0baab663defc3348ac2f7baa9e825ea0a25b580e"},{"filename":"scripts/new-version.sh","content":"#!/usr/bin/env bash\n# Create a new version of a published Figshare article by reserving a version\n# and uploading a new file. Published versions are frozen, so edits require\n# a new version.\n#\n# Usage: ./new-version.sh \u003carticle_id> \u003cfile_path>\n# Requires: FIGSHARE_TOKEN, curl, jq, and scripts/upload.sh next to this file.\nset -euo pipefail\n\nART=\"${1:?article_id required}\"\nFILE=\"${2:?file path required}\"\n: \"${FIGSHARE_TOKEN:?FIGSHARE_TOKEN not set}\"\n\nAPI=\"https://api.figshare.com/v2\"\nAUTH=(-H \"Authorization: token $FIGSHARE_TOKEN\")\nHERE=\"$(cd \"$(dirname \"$0\")\" && pwd)\"\n\necho \">> reserving new version for article $ART\"\n# Reserving a DOI on the next version creates a pending draft you can edit.\ncurl -sS -X POST \"${AUTH[@]}\" \"$API/account/articles/$ART/reserve_doi\" >/dev/null || true\n\necho \">> uploading $FILE to article $ART (draft version)\"\nbash \"$HERE/upload.sh\" \"$ART\" \"$FILE\"\n\necho \">> publishing new version\"\ncurl -sS -o /dev/null -w \"publish status: %{http_code}\\n\" \\\n -X POST \"${AUTH[@]}\" \"$API/account/articles/$ART/publish\"\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":1041,"content_sha256":"840110905149185e9172677b7694a89c68498aa351cf645b90a0120ddd7d767d"},{"filename":"scripts/upload.sh","content":"#!/usr/bin/env bash\n# Upload a file to a Figshare article using the 3-step multi-part flow.\n# Usage: ./upload.sh \u003carticle_id> \u003cfile_path>\n# Requires: FIGSHARE_TOKEN env var, curl, jq, md5sum (or md5 on macOS).\nset -euo pipefail\n\nART=\"${1:?article_id required}\"\nFILE=\"${2:?file path required}\"\n: \"${FIGSHARE_TOKEN:?FIGSHARE_TOKEN not set}\"\n\nAPI=\"https://api.figshare.com/v2\"\nAUTH=(-H \"Authorization: token $FIGSHARE_TOKEN\")\n\n[ -f \"$FILE\" ] || { echo \"file not found: $FILE\" >&2; exit 1; }\n\nNAME=$(basename \"$FILE\")\nif stat -f%z \"$FILE\" >/dev/null 2>&1; then SIZE=$(stat -f%z \"$FILE\"); else SIZE=$(stat -c%s \"$FILE\"); fi\nif command -v md5sum >/dev/null 2>&1; then MD5=$(md5sum \"$FILE\" | awk '{print $1}'); else MD5=$(md5 -q \"$FILE\"); fi\n\necho \">> initiating upload: name=$NAME size=$SIZE md5=$MD5\"\nINIT=$(curl -sS -X POST \"$API/account/articles/$ART/files\" \"${AUTH[@]}\" \\\n -H \"Content-Type: application/json\" \\\n -d \"{\\\"md5\\\":\\\"$MD5\\\",\\\"name\\\":\\\"$NAME\\\",\\\"size\\\":$SIZE}\")\nLOC=$(echo \"$INIT\" | jq -r '.location')\n[ \"$LOC\" != \"null\" ] || { echo \"init failed: $INIT\" >&2; exit 1; }\n\nFILE_INFO=$(curl -sS \"${AUTH[@]}\" \"$LOC\")\nUPLOAD_URL=$(echo \"$FILE_INFO\" | jq -r '.upload_url')\nFILE_ID=$(echo \"$FILE_INFO\" | jq -r '.id')\necho \">> file_id=$FILE_ID upload_url=$UPLOAD_URL\"\n\nPARTS=$(curl -sS \"${AUTH[@]}\" \"$UPLOAD_URL\")\nNPARTS=$(echo \"$PARTS\" | jq '.parts | length')\necho \">> uploading $NPARTS part(s)\"\n\necho \"$PARTS\" | jq -c '.parts[]' | while read -r part; do\n NO=$(echo \"$part\" | jq -r '.partNo')\n START=$(echo \"$part\" | jq -r '.startOffset')\n END=$(echo \"$part\" | jq -r '.endOffset')\n LEN=$((END - START + 1))\n echo \" part $NO: bytes $START-$END ($LEN)\"\n dd if=\"$FILE\" bs=1 skip=\"$START\" count=\"$LEN\" status=none \\\n | curl -sS -X PUT --data-binary @- \"${AUTH[@]}\" \"$UPLOAD_URL/$NO\" >/dev/null\ndone\n\necho \">> completing upload\"\n# Figshare returns 202 with an HTML body; we only care about the status code.\nCODE=$(curl -sS -o /dev/null -w \"%{http_code}\" -X POST \"${AUTH[@]}\" \"$API/account/articles/$ART/files/$FILE_ID\")\nif [ \"$CODE\" != \"200\" ] && [ \"$CODE\" != \"202\" ]; then\n echo \"complete failed: HTTP $CODE\" >&2; exit 1\nfi\necho \">> done: file_id=$FILE_ID (HTTP $CODE)\"\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2179,"content_sha256":"5b7a744d7983cee20e27f25febf1d3ae070739baf664475920e85227e317c61a"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Figshare Skill","type":"text"}]},{"type":"paragraph","content":[{"text":"Interact with the ","type":"text"},{"text":"Figshare v2 REST API","type":"text","marks":[{"type":"link","attrs":{"href":"https://docs.figshare.com/","title":null}}]},{"text":" to search, download, create, and upload research outputs.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Prerequisites","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"curl","type":"text","marks":[{"type":"code_inline"}]},{"text":" and ","type":"text"},{"text":"jq","type":"text","marks":[{"type":"code_inline"}]},{"text":" available on PATH.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"For authenticated endpoints (anything under ","type":"text"},{"text":"/account/...","type":"text","marks":[{"type":"code_inline"}]},{"text":" or uploads), a ","type":"text"},{"text":"personal token","type":"text","marks":[{"type":"strong"}]},{"text":" from https://figshare.com/account/applications exported as:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"export FIGSHARE_TOKEN=xxxxxxxxxxxxxxxx","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Public endpoints (search, public articles, downloads) need no token.","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Always confirm with the user before creating, modifying, publishing, or deleting anything on their account — these are hard to reverse.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Update check","type":"text"}]},{"type":"paragraph","content":[{"text":"Throttle to one check per 24 hours per installation; never mutate the skill directory without explicit user consent.","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If ","type":"text"},{"text":"\u003cthis-skill-dir>/.last_update","type":"text","marks":[{"type":"code_inline"}]},{"text":" exists and is less than 24 hours old, skip this step entirely.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Otherwise, fetch the latest tag from upstream:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"git -C \u003cthis-skill-dir> ls-remote --tags origin 'v*' 2>/dev/null \\\n | awk '{print $2}' | sed 's|refs/tags/||' \\\n | sort -V | tail -1","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Compare with this skill's ","type":"text"},{"text":"metadata.version","type":"text","marks":[{"type":"code_inline"}]},{"text":" from the frontmatter. If the upstream tag is strictly newer (semver), tell the user one line and ask:","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"\"A newer version of this skill is available: vX.Y.Z → vA.B.C. Want me to ","type":"text"},{"text":"git pull","type":"text","marks":[{"type":"code_inline"}]},{"text":"?\"","type":"text"}]}]},{"type":"paragraph","content":[{"text":"If they say yes, run ","type":"text"},{"text":"git -C \u003cthis-skill-dir> pull --ff-only","type":"text","marks":[{"type":"code_inline"}]},{"text":". Refresh ","type":"text"},{"text":".last_update","type":"text","marks":[{"type":"code_inline"}]},{"text":" either way so the prompt doesn't repeat for 24 hours.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If upstream is the same or older, refresh ","type":"text"},{"text":".last_update","type":"text","marks":[{"type":"code_inline"}]},{"text":" silently and continue.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"On any failure (offline, not a git checkout — e.g. ClawHub-installed copy, read-only path, no permission), swallow the error silently and continue with the user's task. Do not mention the failure.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"API Basics","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Base URL:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"https://api.figshare.com/v2","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Auth header:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"Authorization: token $FIGSHARE_TOKEN","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Content-Type:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"application/json","type":"text","marks":[{"type":"code_inline"}]},{"text":" for POST/PUT bodies","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Rate limit:","type":"text","marks":[{"type":"strong"}]},{"text":" keep it under ~1 request/second to avoid abuse throttling","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Errors:","type":"text","marks":[{"type":"strong"}]},{"text":" JSON body with ","type":"text"},{"text":"message","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"code","type":"text","marks":[{"type":"code_inline"}]},{"text":"; common codes 400/401/403/404/422","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Common Recipes","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Search public articles","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -X POST https://api.figshare.com/v2/articles/search \\\n -H \"Content-Type: application/json\" \\\n -d '{\"search_for\": \":title: single cell\", \"page_size\": 20}' | jq","type":"text"}]},{"type":"paragraph","content":[{"text":"Field operators: ","type":"text"},{"text":":title:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":":author:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":":tag:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":":category:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":":doi:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":":resource_doi:","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Get a public article (by ID or DOI)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s https://api.figshare.com/v2/articles/{article_id} | jq\n# or resolve from a figshare.com URL: the numeric tail is the article_id","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Download all files from a public article","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ART=12345678\ncurl -s https://api.figshare.com/v2/articles/$ART/files \\\n | jq -r '.[] | \"\\(.download_url)\\t\\(.name)\"' \\\n | while IFS=

Figshare Skill Interact with the Figshare v2 REST API to search, download, create, and upload research outputs. Prerequisites - and available on PATH. - For authenticated endpoints (anything under or uploads), a personal token from https://figshare.com/account/applications exported as: - Public endpoints (search, public articles, downloads) need no token. Always confirm with the user before creating, modifying, publishing, or deleting anything on their account — these are hard to reverse. Update check Throttle to one check per 24 hours per installation; never mutate the skill directory withou…

\\t' read -r url name; do curl -L -o \"$name\" \"$url\"; done","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List your own articles","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n \"https://api.figshare.com/v2/account/articles?page=1&page_size=50\" | jq","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Create an article (draft)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -X POST https://api.figshare.com/v2/account/articles \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"title\": \"My dataset\",\n \"description\": \"Full description here.\",\n \"defined_type\": \"dataset\",\n \"tags\": [\"demo\"],\n \"categories\": [2]\n }' | jq","type":"text"}]},{"type":"paragraph","content":[{"text":"Response is ","type":"text"},{"text":"{ \"location\": \".../account/articles/{id}\", \"entity_id\": 123 }","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Update / publish an article","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# update metadata\ncurl -s -X PUT https://api.figshare.com/v2/account/articles/$ART \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"title\": \"New title\"}'\n\n# publish (becomes public, assigns DOI, version is frozen)\ncurl -s -X POST https://api.figshare.com/v2/account/articles/$ART/publish \\\n -H \"Authorization: token $FIGSHARE_TOKEN\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Always ask before publishing — it's permanent for that version.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Collections & projects","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# create collection that groups existing articles\ncurl -s -X POST https://api.figshare.com/v2/account/collections \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"title\": \"My Collection\", \"articles\": [123, 456]}'\n\n# create project\ncurl -s -X POST https://api.figshare.com/v2/account/projects \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"title\": \"Research Project\"}'","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Uploading Files (Multi-part Flow)","type":"text"}]},{"type":"paragraph","content":[{"text":"Figshare uploads are ","type":"text"},{"text":"3-step","type":"text","marks":[{"type":"strong"}]},{"text":": initiate → PUT each part → complete. Use the bundled helpers for anything non-trivial:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# upload a file to an existing draft article\n./scripts/upload.sh \u003carticle_id> \u003cpath/to/file>\n\n# batch-download every file from a public article (accepts id or figshare.com URL)\n./scripts/download.sh \u003carticle_id_or_url> [output_dir]\n\n# reserve + upload + publish a new version of an already-published article\n./scripts/new-version.sh \u003carticle_id> \u003cpath/to/file>","type":"text"}]},{"type":"paragraph","content":[{"text":"The raw flow, in case you need to adapt it:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Initiate","type":"text","marks":[{"type":"strong"}]},{"text":" — compute md5 + size, POST to article:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"SIZE=$(stat -f%z \"$FILE\" 2>/dev/null || stat -c%s \"$FILE\")\nMD5=$(md5sum \"$FILE\" | awk '{print $1}') # or: md5 -q on macOS\ncurl -s -X POST https://api.figshare.com/v2/account/articles/$ART/files \\\n -H \"Authorization: token $FIGSHARE_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d \"{\\\"md5\\\":\\\"$MD5\\\",\\\"name\\\":\\\"$(basename $FILE)\\\",\\\"size\\\":$SIZE}\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Response has ","type":"text"},{"text":"location","type":"text","marks":[{"type":"code_inline"}]},{"text":" pointing at ","type":"text"},{"text":"/account/articles/$ART/files/$FILE_ID","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Fetch upload info","type":"text","marks":[{"type":"strong"}]},{"text":" from that file record — it contains an ","type":"text"},{"text":"upload_url","type":"text","marks":[{"type":"code_inline"}]},{"text":". GET the upload_url to learn the part layout (","type":"text"},{"text":"parts: [{partNo, startOffset, endOffset}]","type":"text","marks":[{"type":"code_inline"}]},{"text":").","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Upload parts","type":"text","marks":[{"type":"strong"}]},{"text":" — for each part, PUT the byte range to ","type":"text"},{"text":"${upload_url}/${partNo}","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"dd if=\"$FILE\" bs=1 skip=$START count=$((END-START+1)) 2>/dev/null \\\n | curl -s -X PUT --data-binary @- \"${upload_url}/${partNo}\" \\\n -H \"Authorization: token $FIGSHARE_TOKEN\"","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Complete","type":"text","marks":[{"type":"strong"}]},{"text":" — POST to the file record to finalize:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -X POST https://api.figshare.com/v2/account/articles/$ART/files/$FILE_ID \\\n -H \"Authorization: token $FIGSHARE_TOKEN\"","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Why three steps: Figshare streams large files through a separate upload service. Skipping the complete call leaves the file in a pending state and it won't appear on the article.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Pagination","type":"text"}]},{"type":"paragraph","content":[{"text":"Most list endpoints accept either ","type":"text"},{"text":"page","type":"text","marks":[{"type":"code_inline"}]},{"text":"+","type":"text"},{"text":"page_size","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"limit","type":"text","marks":[{"type":"code_inline"}]},{"text":"+","type":"text"},{"text":"offset","type":"text","marks":[{"type":"code_inline"}]},{"text":". Max ","type":"text"},{"text":"page_size","type":"text","marks":[{"type":"code_inline"}]},{"text":" is typically 1000. For large harvests, loop until an empty page:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"page=1\nwhile :; do\n out=$(curl -s \"https://api.figshare.com/v2/articles?page=$page&page_size=100\")\n [ \"$(echo \"$out\" | jq 'length')\" = \"0\" ] && break\n echo \"$out\" | jq -c '.[]'\n page=$((page+1))\n sleep 1\ndone","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Troubleshooting","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"401","type":"text","marks":[{"type":"strong"}]},{"text":" — token missing/expired; re-check ","type":"text"},{"text":"$FIGSHARE_TOKEN","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"403","type":"text","marks":[{"type":"strong"}]},{"text":" on ","type":"text"},{"text":"/account/...","type":"text","marks":[{"type":"code_inline"}]},{"text":" — token lacks the needed scope; regenerate with full permissions.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"422","type":"text","marks":[{"type":"strong"}]},{"text":" on article create — missing required field (usually ","type":"text"},{"text":"title","type":"text","marks":[{"type":"code_inline"}]},{"text":") or bad ","type":"text"},{"text":"categories","type":"text","marks":[{"type":"code_inline"}]},{"text":"/","type":"text"},{"text":"defined_type","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Upload parts mismatch","type":"text","marks":[{"type":"strong"}]},{"text":" — md5 or size in step 1 didn't match the bytes actually uploaded; recompute and restart.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Published article won't update","type":"text","marks":[{"type":"strong"}]},{"text":" — publishing freezes a version; create a new version instead.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"References","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"API reference: https://docs.figshare.com/","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Token management: https://figshare.com/account/applications","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Category IDs: ","type":"text"},{"text":"GET https://api.figshare.com/v2/categories","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"License IDs: ","type":"text"},{"text":"GET https://api.figshare.com/v2/licenses","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"figshare-skill","author":"@skillopedia","source":{"stars":2,"repo_name":"figshare-skill","origin_url":"https://github.com/agents365-ai/figshare-skill/blob/HEAD/SKILL.md","repo_owner":"agents365-ai","body_sha256":"0cd52edc6c227c6f72d07f1b59c3877a95bf4d3788fab57781a628e8b6c89109","cluster_key":"d440a991a3991412484b35906e30510bdecee6d521e1b21f3adad1e392731031","clean_bundle":{"format":"clean-skill-bundle-v1","source":"agents365-ai/figshare-skill/SKILL.md","attachments":[{"id":"eee430fc-9fac-50c9-8470-a04c8958d739","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/eee430fc-9fac-50c9-8470-a04c8958d739/attachment","path":".gitignore","size":22,"sha256":"4affbd8df39c858757239ec9d0220ca1b25623ddb7be6d888996adb1c6b4020f","contentType":"text/plain; charset=utf-8"},{"id":"3c78bd55-9228-5615-82d4-ca4c09af0e2a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3c78bd55-9228-5615-82d4-ca4c09af0e2a/attachment.md","path":"README.md","size":6286,"sha256":"1525fc577023584ca20657f95827ec744b3e081a2d67c3bf8840d423ef2e029d","contentType":"text/markdown; charset=utf-8"},{"id":"0605d78c-c30b-501d-a9c4-31101ce17a65","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0605d78c-c30b-501d-a9c4-31101ce17a65/attachment.md","path":"README_CN.md","size":5947,"sha256":"79e9fa577de2dd955f326b5ea51dae62abbc1e4e3361b1fe023330537988022c","contentType":"text/markdown; charset=utf-8"},{"id":"5d3b5605-236e-53da-afe2-6c633473bb06","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/5d3b5605-236e-53da-afe2-6c633473bb06/attachment.yaml","path":"agents/openai.yaml","size":259,"sha256":"78e3126486efe320987234f860e6ff371de76a8d09eb1e9d8e6fdc40c9eba9a1","contentType":"application/yaml; charset=utf-8"},{"id":"ddae266a-a8d8-58a6-8764-9fbd751a9a95","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ddae266a-a8d8-58a6-8764-9fbd751a9a95/attachment.sh","path":"scripts/download.sh","size":713,"sha256":"a7e839501115fd1fc0c5a33d0baab663defc3348ac2f7baa9e825ea0a25b580e","contentType":"application/x-sh; charset=utf-8"},{"id":"9b1cad61-f827-5784-85c0-4f7a0d340606","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9b1cad61-f827-5784-85c0-4f7a0d340606/attachment.sh","path":"scripts/new-version.sh","size":1041,"sha256":"840110905149185e9172677b7694a89c68498aa351cf645b90a0120ddd7d767d","contentType":"application/x-sh; charset=utf-8"},{"id":"40218243-8b2b-52df-bf46-89b07f1cc170","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/40218243-8b2b-52df-bf46-89b07f1cc170/attachment.sh","path":"scripts/upload.sh","size":2179,"sha256":"5b7a744d7983cee20e27f25febf1d3ae070739baf664475920e85227e317c61a","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"c2ed50baeef7c91af65e4a7c734fa2bf062811d439027af87df02cc4d38328ed","attachment_count":7,"text_attachments":4,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":3,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"data-analytics","category_label":"Data"},"exact_dupes_collapsed_into_this":0},"license":"MIT","version":"v1","category":"data-analytics","homepage":"https://github.com/Agents365-ai/figshare-skill","import_tag":"clean-skills-v1","description":"Use whenever the user wants to interact with Figshare - searching public datasets/articles, downloading Figshare files, listing their own articles/collections/projects, creating or updating articles, or uploading files (including large multi-part uploads) via the Figshare v2 REST API. Trigger on mentions of \"figshare\", figshare DOIs (10.6084/m9.figshare.*), figshare.com URLs, or phrases like \"upload my dataset to figshare\", \"publish to figshare\", \"get figshare article\"."}},"renderedAt":1782980313538}

Figshare Skill Interact with the Figshare v2 REST API to search, download, create, and upload research outputs. Prerequisites - and available on PATH. - For authenticated endpoints (anything under or uploads), a personal token from https://figshare.com/account/applications exported as: - Public endpoints (search, public articles, downloads) need no token. Always confirm with the user before creating, modifying, publishing, or deleting anything on their account — these are hard to reverse. Update check Throttle to one check per 24 hours per installation; never mutate the skill directory withou…