Agent skill · software engineering · jeremylongshore

portaljs-add-dcat

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.

Why this skill is useful

Adds executable scripts for generating DCAT feeds in multiple formats and ensures compliance with open data standards.

What it needs

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

What this skill does

PortalJS — Add DCAT Overview Turn an existing PortalJS (portaljs-catalog) portal into a harvestable data catalog. PortalJS is Frictionless-native — a dataset is a Data Package (see portaljs-define-schema) — and DCAT is the serialization + harvest layer on top (lib/metadata/dcat.ts + lib/metadata/dcat-profiles.ts). This skill selects one or more DCAT application profiles, maps every dataset's metadata to them, and writes static feed files at build time — JSON-LD, Turtle, and RDF/XML — so external catalogs (data.europa.eu, data.gov, national portals) can harvest the datasets automatically, on any static host, with no runtime. Prerequisites A scaffolded PortalJS portal with datasets.json, package.json, and lib/metadata/ (the metadata-profile contract) present. lib/metadata/dcat.ts (the DCAT-3 core) already in place — profiles augment it. Node 18+ and npm available in the portal directory. For DCAT-AP / DCAT-US: a publishing organization (name + homepage) and a contact (name + email) — both profiles require dct:publisher and dcat:contactPoint. Optional but recommended: network access to run SHACL conformance checks against the official EU ITB validator or pyshacl. Instructions The canonical, full step-by-step workflow is .claude/commands/portaljs-add-dcat.md — the single source of truth. Read and follow it when executing. Summary: 1. Gather input from $ARGUMENTS (interview if thin): portal directory (default .), profiles (default ["dcat-3"]), site URL, publisher, contact, license, themes, languages, access level. 2. Validate the portal directory: confirm datasets.json, package.json, and lib/metadata/ exist; stop with an ERROR: if the metadata contract is missing. 3. Ensure the DCAT profile layer is present — dcat-profiles.ts, dcat-rdf.ts, dcat-validate.ts — copying canonical versions from examples/portaljs-catalog if the portal predates this skill. 4. …

How to use it

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

@skills jeremylongshore/portaljs-add-dcat

View the source on GitHub

Browse the @skills marketplace