Agent skill

Portaljs Add Dcat

by datopian in 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…

MITAuto-check passedMarketing & SEO

Install Portaljs Add Dcat

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

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

GitHub CLI
$ gh skill install datopian/portaljs portaljs-add-dcat --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-dcat .claude/skills/portaljs-add-dcat && 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-dcat
GitHub stars
2.4k
Used in
1 other repo
Token cost
~1.8k tokens
SKILL.md length
677 words
Files
2 (incl. references)
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 10 steps: Gather input from $ARGUMENTS (interview… → Validate the portal directory: confirm… → Ensure the DCAT profile layer is present… → …
  • A portal needs to be harvested by data.europa.eu
  • SKILL.md covers Overview, Prerequisites, Instructions and Output, plus 3 more sections
  • Calls npm and npx

What it does

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

Its SKILL.md is about 1.8k 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 Marketing & SEO, covering Data governance and Schema markup. It works with 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

  • A portal needs to be harvested by data.europa.eu
  • A national open-data catalog

Example prompts

  • “/portaljs-add-dcat”

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(node:*), WebFetch

Workflow steps

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

  1. Gather input from $ARGUMENTS (interview if thin): portal directory (default .),
  2. Validate the portal directory: confirm datasets.json, package.json, and
  3. Ensure the DCAT profile layer is present — dcat-profiles.ts, dcat-rdf.ts,
  4. Ensure scripts/generate-dcat.ts is wired to predev/prebuild and emits
  5. Write dcat.config.json with the gathered profiles, publisher, contact, license,
  6. Add feed autodiscovery: a to
  7. Generate the feeds and check conformance: run npm run generate:dcat and surface
  8. Verify the RDF: confirm the JSON-LD parses, and cross-check that JSON-LD, Turtle,
  9. Verify the build with npx next build; fix errors before reporting success.
  10. Report the profiles emitted, feed paths, conformance status, and next steps

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(node:*)
    • WebFetch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm
    • npx

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

  • Network

    Links to these hosts (documentation or services it may open):

    • w3.org

    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 Dcat loads about 1.8k tokens when it runs, and up to ~2.9k if it reads all its reference files. Until then it costs about 96 tokens; SKILL.md has 677 words of instructions outside code blocks.

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

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). 677 words, ~1,829 tokens.

Download SKILL.mdSave it as .claude/skills/portaljs-add-dcat/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
portaljs-add-dcat
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.
allowed-tools
Read, Write, Edit, Bash(npm:*), Bash(npx:*), Bash(node:*), 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, dcat, interoperability, rdf, jsonld

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. Ensure scripts/generate-dcat.ts is wired to predev/prebuild and emits per-profile x serialization feeds from dcat.config.json.
  5. Write dcat.config.json with the gathered profiles, publisher, contact, license, themes, and access level.
  6. Add feed autodiscovery: a <link rel="alternate" type="application/ld+json"> to pages/_document.tsx pointing at /catalog.jsonld.
  7. Generate the feeds and check conformance: run npm run generate:dcat and surface any missing mandatory fields.
  8. Verify the RDF: confirm the JSON-LD parses, and cross-check that JSON-LD, Turtle, and RDF/XML agree; run SHACL validation (ITB for DCAT-AP, pyshacl for DCAT-US) when network/tooling allow.
  9. Verify the build with npx next build; fix errors before reporting success.
  10. Report the profiles emitted, feed paths, conformance status, and next steps (register with the harvester, run portaljs-deploy).

Output

  • Created/modified: dcat.config.json (committed config).
  • Generated (build artifacts, gitignored): public/catalog.jsonld /.ttl/.rdf (canonical feed), public/catalog.<profile>.{jsonld,ttl,rdf} per configured profile, public/catalog-feeds.json (feed index).
  • Modified: pages/_document.tsx (autodiscovery <link>), package.json (generate:dcat script wired to predev/prebuild).
  • Verified: feeds are valid JSON-LD/Turtle/RDF-XML, conformance status reported, npx next build passes.
Show full SKILL.md (278 more words)Show less

Error Handling

SymptomCauseFix
NO_METADATA_CONTRACTlib/metadata/ not foundPortal predates the metadata-profile contract; scaffold with portaljs-new-portal or add lib/metadata first.
NO_DCAT_CORElib/metadata/dcat.ts not foundThe DCAT-3 core is missing; update the portal template before adding profiles.
BAD_CONFIGdcat.config.json is not valid JSONFix the syntax and re-run npm run generate:dcat.
UNKNOWN_PROFILEProfile id not in the registryUse one of dcat-2, dcat-3, dcat-ap, dcat-us, geodcat-ap, croissant, dcat-ap-se, dcat-ap-ch, dcat-ap-de, or register a national profile first.
Feed flagged non-conformantpublisher/contactPoint missing for DCAT-AP or DCAT-USAsk the user for the publishing organization and contact, add to dcat.config.json, regenerate.
DCAT-US SHACL rejects the publisherPublisher has no IRI (blank node)Set publisher.uri (or homepage) in dcat.config.json.
next build fails after config changeMalformed JSON in dcat.config.json or datasets.jsonPrint the build log, fix the JSON, rebuild before reporting success.

Examples

Example 1 — Default DCAT-3 feed, no national harvesting
/portaljs-add-dcat

Emits the canonical public/catalog.jsonld/.ttl/.rdf under the default dcat-3 profile, adds autodiscovery to _document.tsx, and wires generate:dcat into predev/prebuild. No publisher/contact required.

Example 2 — EU harvesting via DCAT-AP
/portaljs-add-dcat profiles=dcat-ap site=https://data.example.org

Prompts for publisher (name + homepage) and contact (name + email) since DCAT-AP requires both, writes them into dcat.config.json, and emits public/catalog.dcat-ap.{jsonld,ttl,rdf} plus the canonical feed with absolute links.

Example 3 — US federal harvesting via DCAT-US
/portaljs-add-dcat profiles=dcat-us site=https://data.example.gov

Requires an IRI-identified publisher (publisher.uri) for SHACL conformance; emits catalog.dcat-us.{jsonld,ttl,rdf} and validates against the DCAT-US 3.0 SHACL shapes with pyshacl when available.

Example 4 — Multiple profiles plus a national extension
/portaljs-add-dcat profiles=dcat-ap,dcat-ap-de site=https://daten.example.de

Emits both catalog.dcat-ap.* and catalog.dcat-ap-de.* feeds from one config; the first profile listed also becomes the canonical, un-suffixed catalog.jsonld/.ttl/.rdf.

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-dcat 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 Dcat 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 Dcat compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Portaljs Add Dcat this skilldatopian/portaljs2.4k1 repos~1.8kAutomated safety check: PassMIT
Create Geo Chartsonvoyage-ai/gtm-engineer-skills1.3k—~4.3kAutomated safety check: PassMIT
Sports Newsmachina-sports/sports-skills242—~1.3kAutomated safety check: PassMIT
Browsing Linkedinbrowsing-skills/browsing-skills117—~575Automated safety check: PassMIT
SEO GeoReScienceLab/opc-skills1.8k4 repos~2.1kAutomated safety check: PassApache-2.0
GEO-First SEO Audit Toolzubair-trabzada/geo-seo-claude11k—~2.8kAutomated safety check: NotesMIT

Similar skills

  • Create Geo Charts

    onvoyage-ai/gtm-engineer-skills

    Creates data visualizations (charts, graphs, tables) optimized for AI engine parsing and citation.

    1.3k GitHub stars~4.3k tokensUpdated 4 mo ago
    Marketing & SEOAuto-check passed
  • Sports News

    machina-sports/sports-skills

    Sports news via RSS/Atom feeds and Google News. An agent skill from machina-sports/sports-skills.

    242 GitHub stars~1.3k tokensUpdated 4 days ago
    Marketing & SEOAuto-check passed
  • Browsing Linkedin

    browsing-skills/browsing-skills

    A skill your agent uses when the user wants to interact with LinkedIn — extract post data (content, author, reactions, comments), scrape a member profile (name, headline, experience, education…

    117 GitHub stars~575 tokensUpdated 4 mo ago
    Marketing & SEOAuto-check passed
  • SEO Geo

    ReScienceLab/opc-skills

    SEO & GEO (Generative Engine Optimization) for websites. An agent skill from ReScienceLab/opc-skills.

    1.8k GitHub starsUsed in 4 repos~2.1k tokens
    Marketing & SEOAuto-check passed
  • GEO-First SEO Audit Tool

    zubair-trabzada/geo-seo-claude

    Audits a website for AI search visibility across ChatGPT, Claude, Perplexity and Google AI Overviews while checking traditional SEO, schema and E-E-A-T content quality.

    11k GitHub stars~2.8k tokensUpdated today
    Marketing & SEOAuto-check: notes
  • SEO Ops Structural Checklist

    tigerless-labs/seo-ops

    Checks a site against a deterministic set of structural SEO and GEO checks, either running a crawler-eye report against a URL or reviewing code against the same checklist.

    700 GitHub stars~3.3k tokensUpdated 1 mo ago
    Marketing & SEOAuto-check: notes

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 Dataset

    datopian/portaljs

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

    2.4k GitHub starsUsed in 1 repo~1.6k 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 Dcat

What does Portaljs Add Dcat do?

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…. Portaljs Add Dcat is an agent skill from 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 at build, with autodiscovery and per-profile conformance checking.

When should I use Portaljs Add Dcat?

Portaljs Add Dcat fits situations like: A portal needs to be harvested by data.europa.eu; A national open-data catalog.

How do I install Portaljs Add Dcat in Claude Code?

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

How do I install Portaljs Add Dcat in Codex?

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

Can I use Portaljs Add Dcat 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-dcat -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-dcat, .gemini/skills/portaljs-add-dcat, .github/skills/portaljs-add-dcat and .opencode/skills/portaljs-add-dcat in your project.

What does Portaljs Add Dcat need to run?

Going by SKILL.md and its folder, Portaljs Add Dcat needs the command-line tools its instructions call (npm and npx). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(npm:*), Bash(npx:*), Bash(node:*), 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 Dcat access the network?

SKILL.md names 1 domain. As links in the text: w3.org. This is read from the text; nothing was executed.

Is Portaljs Add Dcat 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 Dcat use?

Portaljs Add Dcat 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 Dcat use?

About 1.8k tokens (SKILL.md is roughly 7.3k 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 1.1k tokens, read only when the agent opens those files.

What are the alternatives to Portaljs Add Dcat?

Skills that share tags, products or a category with Portaljs Add Dcat: Create Geo Charts (onvoyage-ai/gtm-engineer-skills, 1.3k stars), Sports News (machina-sports/sports-skills, 242 stars), Browsing Linkedin (browsing-skills/browsing-skills, 117 stars) and SEO Geo (ReScienceLab/opc-skills, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Portaljs Add Dcat?

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.