Agent skill · Databases

portaljs-migrate

Migrate (harvest) datasets between open-data platforms. Reads CKAN, a DCAT-US /data.json catalog (DKAN, ArcGIS Hub, data.gov), a DCAT / DCAT-AP RDF feed (JSON-LD, Turtle, or RDF/XML), Socrata, OpenDataSoft, or an ArcGIS FeatureServer, and writes them to a static PortalJS catalog or pushes them into a CKAN instance over its API. Use when moving datasets from an external open-data platform into a PortalJS portal, or bridging one CKAN instance to another.

datopiangithub.com/datopianGitHub ↗
claude-codecan modify filesMIT
Install
npx skills add datopian/portaljs --skill portaljs-migrate --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 2
SKILL.md size: 7 KB
Bundled scripts: none
Version: 1.0.0
Declared author: Datopian <hello@datopian.com>
Allowed tools: ReadWriteEditBash(npm:*)Bash(npx:*)Bash(node:*)Bash(curl:*)Bash(git:*)WebFetch
Requires: Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal…
Path: skills/portaljs-migrate/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 2,337
Language: TypeScript
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# PortalJS — Migrate ## Overview Harvest datasets from an external open-data platform into a PortalJS portal, or push them into a CKAN instance. Every source reads into one canonical shape — `{ slug, namespace, name, description, resources[] }` — then writes to the target from that shape, so adding a source covers every target automatically. Supported sources: CKAN, a DCAT-US `/data.json` catalog (DKAN, ArcGIS Hub, data.gov), a DCAT / DCAT-AP RDF feed, Socrata, OpenDataSoft, or an ArcGIS FeatureServer/MapServer. Supported targets: a static PortalJS catalog (`datasets.json`, resources linked by URL or downloaded into Cloudflare R2) or a CKAN instance over its write API. This is the copy-into-the-portal path, the inverse of `/portaljs-connect-ckan` (which reads the source live at build time): a one-time, re-runnable snapshot so the portal stands alone and needs no backend. ## Prerequisites - An existing PortalJS portal for the static target: `datasets.json`, `package.json`, and `pages/[owner]/[slug].tsx` must exist (the `portaljs-catalog` template). - Node 18+ and npm, with portal dependencies installed (`npm install`). - Network access to the source platform's API or feed URL. - For

What's inside
Steps it walks through
  1. Overview
  2. Prerequisites
  3. Instructions
  4. Output
  5. Error Handling
  6. Examples
  7. Example 1 — CKAN to static catalog, link mode
  8. Example 2 — data.gov DCAT-US catalog, downloaded into R2
  9. Example 3 — DCAT-AP RDF feed from a national portal
  10. Example 4 — CKAN to CKAN (platform-to-platform)
  11. Resources
Ships with 1 file
  • references/reference.md
More from portaljs
All skills →
About this skill
What does the portaljs-migrate skill do?

Migrate (harvest) datasets between open-data platforms. Reads CKAN, a DCAT-US /data.json catalog (DKAN, ArcGIS Hub, data.gov), a DCAT / DCAT-AP RDF feed (JSON-LD, Turtle, or RDF/XML), Socrata, OpenDataSoft, or an ArcGIS FeatureServer, and writes them to a static PortalJS catalog or pushes them into a CKAN instance over its API. Use when moving datasets from an external open-data platform into a PortalJS portal, or bridging one CKAN instance to another.

How do I install it?

Run `npx skills add datopian/portaljs --skill portaljs-migrate --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From datopian/portaljs, a repository with 2,337 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going