Agent Skill
Portaljs Migrate skill
portaljs-migratedatopian/portaljsskills/portaljs-migrate/SKILL.md
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.
always on
122 tokname + description
once used
1,552 tokSKILL.md body
bundled files
14 KB
repo stars
2.4kGitHub
Install the Portaljs Migrate skill
Skills CLI (Claude Code, Codex, Cursor and others)
npx skills add https://github.com/datopian/portaljs --skill portaljs-migrate
Claude Code, by hand (all projects)
git clone --depth 1 https://github.com/datopian/portaljs.git /tmp/portaljs mkdir -p ~/.claude/skills cp -R /tmp/portaljs/skills/portaljs-migrate ~/.claude/skills/portaljs-migrate
For one project only, copy the folder into .claude/skills/ in that project instead. The agent picks it up when a task matches its description.
What it costs your context
Agent Skills load in three steps. Tokens counted with the o200k tokenizer; your model's count will differ a little.
| When | What loads | Cost |
|---|---|---|
| Every session | Name and description | 122 tok |
| When the agent uses it | The SKILL.md instructions | 1,552 tok |
| Only if opened | 1 bundled files (4 KB) | varies |
Until it is used, portaljs-migrate costs about 11× less than the median MCP server we measured (1,363 tokens on every turn). Installing all 14 skills from datopian/portaljs would load 1,174 tokens of descriptions. Skills vs MCP study
Checks
Our checks found nothing to flag: it follows the Agent Skills specification's naming and size guidelines and doesn't pipe downloads into a shell.
Pre-approved tools (allowed-tools): Read, Write, Edit, Bash(npm:*), Bash(npx:*), Bash(node:*), Bash(curl:*), Bash(git:*), WebFetch. The agent can use these without asking while the skill is active.
Checked 2026-10-22 · method
What's inside
The headings of its SKILL.md. Read the full file on GitHub.
- PortalJS — Migrate
- Overview
- Prerequisites
- Instructions
- Output
- Error Handling
- Examples
- Example 1 — CKAN to static catalog, link mode
- Example 2 — data.gov DCAT-US catalog, downloaded into R2
- Example 3 — DCAT-AP RDF feed from a national portal
- Example 4 — CKAN to CKAN (platform-to-platform)
- Resources
More skills from datopian/portaljs
- arcgis-to-portaljsdatopian/portaljs
Migrate a whole ArcGIS Hub site into a PortalJS Arc portal end-to-end. Harvests the Hub /data.json (DCAT-US) inventory, exports every FeatureService layer through the ArcGIS REST query API with resultOffset paging, converts each to the serverless dual tier (PMTiles render + GeoParquet query) with tabular items to Parquet, pushes everything to Cloudflare R2 via Git LFS, appends dual-tier datasets.json entries, and writes a source-vs-derived parity report. Use to move a City or sector ArcGIS Hub open-data portal onto PortalJS with no server-side compute.
2.4k134 tok idle · 1,765 in use - portaljs-add-chartdatopian/portaljs
Add a chart (line, bar, area, pie, or scatter) to a dataset's showcase in a PortalJS portal. Installs recharts, writes a reusable Chart component, and renders it in the showcase Views section. Use when visualizing a dataset already registered in datasets.json.
2.4k63 tok idle · 971 in use - portaljs-add-datasetdatopian/portaljs
Add a dataset (CSV, TSV, JSON, or GeoJSON) to an existing PortalJS portal. Appends an entry to datasets.json so the catalog and showcase render it automatically; routes the data by source (local file vs remote URL) — R2 via Git LFS by default, remote URLs by passthrough. Use when registering a new dataset in a scaffolded portal.
2.4k84 tok idle · 1,409 in use - portaljs-add-dcatdatopian/portaljs
Make a PortalJS portal harvestable by national/EU/US open-data portals — emit standards-compliant DCAT catalog feeds (DCAT 2/3, DCAT-AP, DCAT-US, national profiles) in JSON-LD, Turtle, and RDF/XML at build, with autodiscovery and per-profile conformance checking. Use when a portal needs to be harvested by data.europa.eu, data.gov, or a national open-data catalog.
2.4k99 tok idle · 1,738 in use - portaljs-add-geodatopian/portaljs
Auto-ingest a geospatial file (GeoJSON, Shapefile, GeoPackage, KML/KMZ, FlatGeobuf, CSV-with-geometry) into a PortalJS portal on the user's own machine, with no server. Normalizes CRS to EPSG:4326, derives a PMTiles render tier and a GeoParquet query tier, pushes all three artifacts to Cloudflare R2 via Git LFS, and appends one dual-tier datasets.json entry the showcase auto-renders. Use when the source is a vector geo format that needs a map or spatial-query view.
2.4k125 tok idle · 1,623 in use - portaljs-add-mapdatopian/portaljs
Render a GeoJSON dataset on an interactive Leaflet map in the Views section of a dataset's showcase. Installs react-leaflet and a Map component, then renders the map for the chosen dataset. Use when a dataset's data is geographic and a map view is needed alongside the showcase's default metadata and download.
2.4k69 tok idle · 1,275 in use - portaljs-add-resourcedatopian/portaljs
Add another file (resource) to an EXISTING dataset in a PortalJS portal — a data dictionary, methodology, or an additional data file. Turns a single-file dataset into a multi-resource one; the showcase renders a section per resource. Use when a dataset needs a second file, such as a data dictionary, methodology doc, or an additional period's data.
2.4k78 tok idle · 1,318 in use - portaljs-architectdatopian/portaljs
Recommend a data-portal architecture (storage, compute, catalog, access, hosting, metadata) from stated needs, then hand off to the build skills. The advisory entry point. Use when starting a new data-portal project and the underlying architecture has not yet been decided.
2.4k60 tok idle · 1,358 in use