Agent skill

Portaljs Add Dataset

by datopian in datopian/portaljs

Add a dataset (CSV, TSV, JSON, or GeoJSON) to an existing PortalJS portal.

MITAuto-check passedDocuments & Office

Install Portaljs Add Dataset

skills CLI
$ npx skills add datopian/portaljs --skill portaljs-add-dataset -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install datopian/portaljs portaljs-add-dataset --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/datopian/portaljs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/portaljs-add-dataset .claude/skills/portaljs-add-dataset && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
portaljs-add-dataset
GitHub stars
2.4k
Used in
1 other repo
Token cost
~1.6k tokens
SKILL.md length
675 words
Files
2 (incl. references)
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Add a dataset (CSV, TSV, JSON, or GeoJSON) to an existing PortalJS portal.

  • Works in 7 steps: Gather input from $ARGUMENTS — source… → Validate the portal directory: confirm… → Detect the format from the file… → …
  • Registering a new dataset in a scaffolded portal
  • SKILL.md covers Overview, Prerequisites, Instructions and Output, plus 3 more sections
  • Calls git and npx; reaches data.portaljs.com

What it does

Portaljs Add Dataset is an agent skill from datopian/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.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/reference.md`). Compatibility notes: Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal ~/.claude/commands install, or a portaljs…

It sits in Documents & Office, covering CSV and tabular files and Project scaffolding. It works with Git and npm. The repository describes itself as: 🌀 AI-native framework for building data portals. Scaffold a full portal from a brief and load datasets in minutes with agentic skills — any backend (CKAN, GitHub, Frictionless). The licence is MIT.

When your agent uses it

  • Registering a new dataset in a scaffolded portal
  • Tasks that involve CSV and tabular files
  • Tasks that involve Project scaffolding

Example prompts

  • “/portaljs-add-dataset”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal ~/.claude/commands install, or a portaljs clone.
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash(npm:*), Bash(npx:*), Bash(git:*), Bash(curl:*), Bash(mkdir:*), Bash(cp:*), WebFetch

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Gather input from $ARGUMENTS — source (file path or URL), portal directory (default
  2. Validate the portal directory: confirm datasets.json, package.json, and
  3. Detect the format from the file extension, URL extension, or Content-Type header
  4. Route the data by source: remote URL → passthrough (default) or adopt into R2 (opt-in);
  5. Append one entry to datasets.json — slug, namespace, name, description, file
  6. Verify the build with npx next build; fix errors (commonly malformed JSON) before
  7. Report the route taken, the manifest change, and the showcase URL.

What it can do on your machine

Read from SKILL.md and the folder at commit d5c096a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash(npm:*)
    • Bash(npx:*)
    • Bash(git:*)
    • Bash(curl:*)
    • Bash(mkdir:*)
    • Bash(cp:*)
    • WebFetch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • data.portaljs.com

    Also links to:

    • git-lfs.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal ~/.claude/commands install, or a portaljs clone.

    From compatibility in the SKILL.md frontmatter.

Context cost

Portaljs Add Dataset loads about 1.6k tokens when it runs, and up to ~2.5k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 675 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from datopian/portaljs at commit d5c096a, republished under its MIT licence (© datopian). 675 words, ~1,589 tokens.

Download SKILL.mdSave it as .claude/skills/portaljs-add-dataset/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
portaljs-add-dataset
description
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.
allowed-tools
Read, Write, Edit, Bash(npm:*), Bash(npx:*), Bash(git:*), Bash(curl:*), Bash(mkdir:*), Bash(cp:*), WebFetch
compatibility
Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal ~/.claude/commands install, or a portaljs clone.
version
1.0.0
author
Datopian <hello@datopian.com>
license
MIT
tags
portaljs, data-portal, dataset, csv, geojson, catalog

PortalJS — Add Dataset

Overview

Register a dataset in a PortalJS (portaljs-catalog) portal. The skill appends one entry to datasets.json — the single source of truth for the catalog — and routes the underlying bytes by source first, then size: a local file defaults to R2 via Git LFS, a remote URL defaults to passthrough (no copy). No per-dataset page is created; the catalog at /search lists the new entry and the dynamic showcase route pages/[owner]/[slug].tsx renders it automatically at /@<namespace>/<slug>. Supported formats for the showcase preview: CSV, TSV, JSON (array), and GeoJSON.

Prerequisites

  • A scaffolded PortalJS portal (see portaljs-new-portal) with datasets.json, package.json, and pages/[owner]/[slug].tsx present.
  • The source data: a local file path or a publicly reachable URL.
  • For the R2/Git LFS default route: git and git-lfs installed, and an Arc account token (or an OSS Giftless key) to mint a push-scoped LFS credential.
  • Node 18+ and npm available in the portal directory.

Instructions

The canonical, full step-by-step workflow is .claude/commands/portaljs-add-dataset.md — the single source of truth. Read and follow it when executing. Summary:

  1. Gather input from $ARGUMENTS — source (file path or URL), portal directory (default .), dataset name/slug, description, namespace. If the source is missing, interview the user; never dead-end.
  2. Validate the portal directory: confirm datasets.json, package.json, and pages/[owner]/[slug].tsx exist.
  3. Detect the format from the file extension, URL extension, or Content-Type header (CSV, TSV, JSON array, or GeoJSON); reject anything else and ask for a conversion.
  4. Route the data by source: remote URL → passthrough (default) or adopt into R2 (opt-in); local file → R2 via Git LFS (default) or inline into public/data/ (fenced exception for bundled samples or an OSS-no-R2 fallback).
  5. Append one entry to datasets.json — slug, namespace, name, description, file (the routed path/URL), format — keeping (namespace, slug) unique.
  6. Verify the build with npx next build; fix errors (commonly malformed JSON) before reporting success.
  7. Report the route taken, the manifest change, and the showcase URL.

Output

  • Modified: datasets.json (one entry appended).
  • Created (route-dependent): data/<slug>.<ext> tracked via Git LFS (R2 default), or public/data/<slug>.<ext> (inline exception). Nothing is created for remote passthrough.
  • Verified: npx next build passes.
  • Result: the dataset appears in /search and renders at /@<namespace>/<slug>.
Show full SKILL.md (318 more words)Show less

Error Handling

SymptomCauseFix
Fetch fails for a URL sourceNon-200 status or unreachable hostReport the HTTP status and ask the user to confirm the URL is publicly accessible.
"Not a portaljs-catalog portal"datasets.json missingThis is an older single-page template; ask the user how to proceed rather than failing silently.
Unsupported formatExtension/content-type isn't csv/tsv/json/geojsonAsk the user to convert the source before continuing.
git lfs push has nothing to streamgit lfs install --local never ran, so raw bytes were committed instead of a pointerRun git lfs install --local before git lfs track, re-add and re-commit the file.
R2 PUT returns 400A broad http.extraHeader was set and replayed onto the presigned URLUse the _jwt Basic-auth piggyback in lfs.url only — never a global http.extraHeader.
(namespace, slug) clashAnother entry already uses that pairAsk the user for a different slug or namespace.
next build failsMalformed JSON in datasets.jsonPrint the build log, fix the JSON, rebuild before reporting success.

Examples

Example 1 — Local CSV, default R2 route
/portaljs-add-dataset ./data/co2-emissions.csv namespace=climate

Moves the file into data/, tracks it with Git LFS, pushes it to R2, and appends a manifest entry whose file is the resulting https://data.portaljs.com/... URL.

Example 2 — Remote URL, passthrough (no download)
/portaljs-add-dataset https://example.org/open-data/trade.csv namespace=trade

Detects the format from the response headers and records the URL as-is in datasets.json — no bytes are copied.

Example 3 — GeoJSON adopted into R2
/portaljs-add-dataset https://example.org/boundaries.geojson namespace=reference adopt=true

Downloads the file, then routes it as a local file through the Git LFS → R2 path so it is hosted and versioned under the portal (useful when in-browser range queries are needed).

Example 4 — Bundled sample data, inline exception
/portaljs-add-dataset ./samples/demo.csv namespace=reference

When the portal has no R2 credentials (OSS self-host) or the file is bundled sample data, the skill copies it into public/data/ instead, per the .gitattributes inline fence.

Resources

© datopian, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/portaljs-add-dataset of datopian/portaljs.

  • SKILL.md
  • references/reference.md

Open the folder on GitHubat commit d5c096a

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in datopian/portaljs, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Portaljs Add Dataset next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Portaljs Add Dataset compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Portaljs Add Dataset this skilldatopian/portaljs2.4k1 repos~1.6kAutomated safety check: PassMIT
Openai Security Ownership Maptrailofbits/skills-curated5135 repos~2.2kAutomated safety check: NotesCC-BY-SA-4.0
Slidev CLI Skilldskilld-dev/vue-ecosystem-skills181—~1.1kAutomated safety check: PassMIT
Download Statsnubjs/nub4.4k—~2.5kAutomated safety check: PassMIT
Deadline Prepdavila7/claude-code-templates32k—~739Automated safety check: PassMIT
Init Projectflonat/flonat-research146—~929Automated safety check: PassMIT

Similar skills

  • Openai Security Ownership Map

    trailofbits/skills-curated

    Official

    Analyze git repositories to build a security ownership topology (people-to-file), compute bus factor and sensitive-code ownership, and export CSV/JSON for graph databases and visualization.

    513 GitHub starsUsed in 5 repos~2.2k tokens
    DevelopmentAuto-check: notes
  • Slidev CLI Skilld

    skilld-dev/vue-ecosystem-skills

    Build, present, and ship Slidev decks with @slidev/cli. An agent skill from skilld-dev/vue-ecosystem-skills.

    181 GitHub stars~1.1k tokensUpdated 17 days ago
    Documents & OfficeAuto-check passed
  • Generate download-stats CSVs and a chart for nub across its distribution channels (npm + GitHub release assets, which subsume Homebrew).

    4.4k GitHub stars~2.5k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Deadline Prep

    davila7/claude-code-templates

    Generate a structured demo outline from your session's change log and git history.

    32k GitHub stars~739 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Init Project

    flonat/flonat-research

    Bootstrap a new research project. An agent skill from flonat/flonat-research.

    146 GitHub stars~929 tokensUpdated 10 days ago
    DevelopmentAuto-check passed
  • Knap Markdown Templates

    kepano/obsidian-skills

    Renders Markdown notes from Knap templates and JSON data on the command line, including notes built from Defuddle web page output.

    49k GitHub starsUsed in 2 repos~986 tokens
    Documents & OfficeAuto-check passed

More from datopian/portaljs

All 14 skills in this repo
  • Arcgis To Portaljs

    datopian/portaljs

    Migrate a whole ArcGIS Hub site into a PortalJS Arc portal end-to-end.

    2.4k GitHub starsUsed in 1 repo~2k tokens
    Auto-check passed
  • Portaljs Add Chart

    datopian/portaljs

    Add a chart (line, bar, area, pie, or scatter) to a dataset's showcase in a PortalJS portal.

    2.4k GitHub starsUsed in 1 repo~1.1k tokens
    Auto-check passed
  • Portaljs Add Dcat

    datopian/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…

    2.4k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed
  • Portaljs Add Geo

    datopian/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.

    2.4k GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • Portaljs Add Map

    datopian/portaljs

    Render a GeoJSON dataset on an interactive Leaflet map in the Views section of a dataset's showcase.

    2.4k GitHub starsUsed in 1 repo~1.3k tokens
    Auto-check passed
  • Portaljs Add Resource

    datopian/portaljs

    Add another file (resource) to an EXISTING dataset in a PortalJS portal — a data dictionary, methodology, or an additional data file.

    2.4k GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed

Works with

Questions about Portaljs Add Dataset

What does Portaljs Add Dataset do?

Add a dataset (CSV, TSV, JSON, or GeoJSON) to an existing PortalJS portal. Portaljs Add Dataset is an agent skill from datopian/portaljs. Add a dataset (CSV, TSV, JSON, or GeoJSON) to an existing PortalJS portal.

When should I use Portaljs Add Dataset?

Portaljs Add Dataset fits situations like: registering a new dataset in a scaffolded portal; tasks that involve CSV and tabular files; tasks that involve Project scaffolding.

How do I install Portaljs Add Dataset in Claude Code?

Run `npx skills add datopian/portaljs --skill portaljs-add-dataset -a claude-code`. Or copy the skill folder (skills/portaljs-add-dataset in datopian/portaljs) into .claude/skills/portaljs-add-dataset in your project. Claude Code loads it when a task matches its description.

How do I install Portaljs Add Dataset in Codex?

Run `npx skills add datopian/portaljs --skill portaljs-add-dataset -a codex`. Or copy the skill folder (skills/portaljs-add-dataset in datopian/portaljs) into .agents/skills/portaljs-add-dataset in your project. Codex loads it when a task matches its description.

Can I use Portaljs Add Dataset in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add datopian/portaljs --skill portaljs-add-dataset -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/portaljs-add-dataset, .gemini/skills/portaljs-add-dataset, .github/skills/portaljs-add-dataset and .opencode/skills/portaljs-add-dataset in your project.

What does Portaljs Add Dataset need to run?

Going by SKILL.md and its folder, Portaljs Add Dataset needs the command-line tools its instructions call (git and npx). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(npm:*), Bash(npx:*), Bash(git:*), Bash(curl:*), Bash(mkdir:*), Bash(cp:*), WebFetch. Compatibility (from SKILL.md): Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal ~/.claude/commands install, or a portaljs clone..

Does Portaljs Add Dataset access the network?

SKILL.md names 2 domains. In commands or code: data.portaljs.com; the agent is likely to contact it when it follows the instructions. As links in the text: git-lfs.com. This is read from the text; nothing was executed.

Is Portaljs Add Dataset safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Portaljs Add Dataset use?

Portaljs Add Dataset is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Portaljs Add Dataset use?

About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 914 tokens, read only when the agent opens those files.

What are the alternatives to Portaljs Add Dataset?

Skills that share tags, products or a category with Portaljs Add Dataset: Openai Security Ownership Map (trailofbits/skills-curated, 513 stars), Slidev CLI Skilld (skilld-dev/vue-ecosystem-skills, 181 stars), Download Stats (nubjs/nub, 4.4k stars) and Deadline Prep (davila7/claude-code-templates, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Portaljs Add Dataset?

datopian (a GitHub organization) maintains it in datopian/portaljs, which has 2,358 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 2026.

Source: datopian/portaljs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.