# Portaljs Add Dcat

Make a PortalJS portal harvestable by national/EU/US open-data portals, emit...

- Repository: https://github.com/datopian/portaljs (2370 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-28
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add datopian/portaljs --skill portaljs-add-dcat -g -a claude-code -y`
Codex: `npx skills add datopian/portaljs --skill portaljs-add-dcat -g -a codex -y`
Cursor: `npx skills add datopian/portaljs --skill portaljs-add-dcat -g -a cursor -y`
Gemini CLI: `npx skills add datopian/portaljs --skill portaljs-add-dcat -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add datopian/portaljs`

## Description

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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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`](https://github.com/datopian/portaljs/blob/main/.claude/commands/portaljs-add-dcat.md), the single source of truth. Read and follow it when executing. Summary:

The rest: https://github.com/datopian/portaljs/blob/HEAD/skills/portaljs-add-dcat/SKILL.md
