Agent skill · software engineering · jeremylongshore

portaljs-add-resource

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.

Why this skill is useful

Adds specific commands and workflows for managing resources in PortalJS datasets that the AI wouldn't reliably generate on its own.

What it needs

Requires node installed locally. About 3k tokens when loaded. Last updated 2026-08-07. 2,604 stars on the source repository.

What this skill does

PortalJS — Add Resource Overview Add a resource — an additional file — to a dataset that already exists in a portaljs-catalog portal. Where /portaljs-add-dataset creates a new dataset (one file), this skill adds a file to an existing one: a data dictionary, a methodology document, or another data file (e.g. a second year's figures). Mirrors the Frictionless Data Package model: a dataset holds a resources[] array, and the showcase at /@<namespace>/<slug> renders one section per resource (preview, schema, download). A single-file dataset migrates to resources[] automatically the first time a second file is added — no data is lost. Prerequisites An existing PortalJS portal (portaljs-catalog template) with datasets.json, package.json, and pages/[owner]/[slug].tsx present. The target dataset already registered in datasets.json. The new resource's source: a local file path or a public URL, in CSV, TSV, JSON (array), or GeoJSON format. Node 18+ installed to run npx next build for verification. Instructions The canonical, full step-by-step workflow lives in .claude/commands/portaljs-add-resource.md in this repository — that file is the single source of truth. Read and follow it. Summary: 1. Gather input (interview if thin): DATASET (slug or namespace/slug), SOURCE (path or URL), PORTALDIR (default .), RESOURCENAME, RESOURCETITLE, DESCRIPTION. If DATASET or SOURCE is missing, list datasets from datasets.json and ask. 2. Validate the portal and locate the dataset entry by slug (and namespace, if given). If the dataset does not exist, offer /portaljs-add-dataset instead. 3. Detect the format from extension/Content-Type, fetch (check HTTP status) or confirm the local path exists, then copy into PORTALDIR/public/data/ under a non-colliding filename. 4. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills jeremylongshore/portaljs-add-resource

View the source on GitHub

Browse the @skills marketplace