Agent skill

Portaljs Connect Ckan

by datopian in datopian/portaljs

Wire a scaffolded PortalJS portal to a CKAN backend over its API.

MITAuto-check passedDevelopment

Install Portaljs Connect Ckan

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

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

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

At a glance

Wire a scaffolded PortalJS portal to a CKAN backend over its API.

  • Works in 8 steps: Gather input from $ARGUMENTS — CKAN base… → Validate the target directory is a… → Verify the CKAN backend is reachable via… → …
  • Connecting an existing portal to a live CKAN instance instead of a static manifest
  • SKILL.md covers Overview, Prerequisites, Instructions and Output, plus 3 more sections
  • Calls npx; reaches demo.dev.datopian.com

What it does

Portaljs Connect Ckan is an agent skill from datopian/portaljs. Wire a scaffolded PortalJS portal to a CKAN backend over its API. Generates a tiny server-side fetch client (no runtime dependency) and feeds the /search catalog and /@namespace/slug showcases from CKAN instead of datasets.json. Use when connecting an existing portal to a live CKAN instance instead of a static manifest.

Its SKILL.md is about 1.5k 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 Development, covering Project scaffolding and Backend development. It works with React and Next.js. 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

  • Connecting an existing portal to a live CKAN instance instead of a static manifest
  • Tasks that involve Project scaffolding
  • Tasks that involve Backend development

Example prompts

  • “/portaljs-connect-ckan”

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

Workflow steps

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

  1. Gather input from $ARGUMENTS — CKAN base URL (required), org filter (optional), group
  2. Validate the target directory is a portaljs-catalog portal; if not, suggest
  3. Verify the CKAN backend is reachable via package_search?rows=1, and validate each org
  4. Generate lib/ckan.ts — a self-contained server-side fetch client wrapping
  5. Rewire pages/search.tsx to list datasets from package_search, linking each to
  6. Overwrite pages/[owner]/[slug].tsx to pre-render one page per dataset via
  7. Verify the build with npx next build; fix any error before reporting success.
  8. Report what changed: client, catalog, showcase, filters, and static page count.

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

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • 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:

    • demo.dev.datopian.com

    Also links to:

    • docs.ckan.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 Connect Ckan loads about 1.5k tokens when it runs, and up to ~2.3k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 598 words of instructions outside code blocks.

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

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). 598 words, ~1,506 tokens.

Download SKILL.mdSave it as .claude/skills/portaljs-connect-ckan/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
portaljs-connect-ckan
description
Wire a scaffolded PortalJS portal to a CKAN backend over its API. Generates a tiny server-side fetch client (no runtime dependency) and feeds the /search catalog and /@namespace/slug showcases from CKAN instead of datasets.json. Use when connecting an existing portal to a live CKAN instance instead of a static manifest.
allowed-tools
Read, Write, Edit, Bash(npm:*), Bash(npx:*), 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, ckan, backend, api, catalog

PortalJS — Connect CKAN

Overview

Connect an existing portaljs-catalog portal to a live CKAN backend for the "decoupled / any backend" path. The portal stops reading the static datasets.json manifest (and files in /public/data/) and instead feeds its two data surfaces — the /search catalog and the /@namespace/slug showcases — straight from a CKAN instance's REST API (package_search / package_show) through a generated fetch client. Output is plain, editable Next.js code with no runtime dependency — never @portaljs/ckan, whose bundle wires React UI components to React 18 internals and crashes at import under the template's React 19. Pages fetch CKAN server-side in getStaticProps/getStaticPaths, so the catalog is pre-rendered at build time and the site can still be statically deployed. Run this right after portaljs-new-portal to swap a freshly scaffolded portal's sample data over to CKAN.

Prerequisites

  • A scaffolded PortalJS portal (see portaljs-new-portal) with package.json, pages/, datasets.json, pages/search.tsx, and pages/[owner]/[slug].tsx present.
  • A CKAN base URL that is publicly reachable, e.g. https://demo.dev.datopian.com.
  • Node 18+ and npm available in the portal directory (no new packages are installed).

Instructions

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

  1. Gather input from $ARGUMENTS — CKAN base URL (required), org filter (optional), group filter (optional), portal directory (default .). If the URL is missing, interview the user; never dead-end with a missing-input error.
  2. Validate the target directory is a portaljs-catalog portal; if not, suggest portaljs-new-portal instead of failing silently.
  3. Verify the CKAN backend is reachable via package_search?rows=1, and validate each org filter via organization_show; on failure, explain and re-prompt rather than dead-ending.
  4. Generate lib/ckan.ts — a self-contained server-side fetch client wrapping package_search and package_show, with DMS, ORG_FILTER, GROUP_FILTER, and MAX_DATASETS as editable constants.
  5. Rewire pages/search.tsx to list datasets from package_search, linking each to /@namespace/slug via datasetHref; leave pages/index.tsx untouched.
  6. Overwrite pages/[owner]/[slug].tsx to pre-render one page per dataset via getStaticPaths and fetch details with package_show, previewing tabular resources through the existing Table component.
  7. Verify the build with npx next build; fix any error before reporting success.
  8. Report what changed: client, catalog, showcase, filters, and static page count.
Show full SKILL.md (249 more words)Show less

Output

  • Created: lib/ckan.ts (fetch wrapper client — no dependency added to package.json).
  • Modified: pages/search.tsx (catalog reads package_search); pages/[owner]/[slug].tsx (showcase reads package_show, overwritten to drop the datasets.json source).
  • Unchanged: pages/index.tsx (still the static search-first landing page).
  • Verified: npx next build succeeds and prints the static page count.
  • Result: /search and /@namespace/slug are served from the CKAN backend; the DMS env var can override the base URL at deploy time without editing code.

Error Handling

SymptomCauseFix
Missing CKAN URLUser invoked the skill with no $ARGUMENTSAsk for the base URL (and optional org/group filter); never error out.
package_search request fails or times outURL isn't a reachable CKAN rootTell the user, ask them to confirm the URL, and retry.
Org filter not foundorganization_show returns success: falseList valid orgs from organization_list and ask which one was meant.
Catalog renders empty after connectingWrong org/group filter name in lib/ckan.tsClear or correct the filter constants and rebuild.
next build failsTypo in substituted CKAN_URL or bad TypeScript editPrint the log, fix the first error, and re-run before reporting success.
<Table> fails to load a resourceCKAN resource host blocks CORSNote that the Download link still works; prefer datastore-backed resources.

Examples

Example 1 — Public CKAN demo, no filters
/portaljs-connect-ckan url=https://demo.dev.datopian.com
Example 2 — Restrict the catalog to one organization
/portaljs-connect-ckan url=https://demo.dev.datopian.com org=my-org
Example 3 — Filter by group and target a specific portal directory
/portaljs-connect-ckan url=https://data.example.gov group=education dir=./my-portal

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-connect-ckan 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 Connect Ckan 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 Connect Ckan compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Portaljs Connect Ckan this skilldatopian/portaljs2.4k1 repos~1.5kAutomated safety check: PassMIT
Senior Fullstackalirezarezvani/claude-skills28k1 repos~3.7kAutomated safety check: NotesMIT
Senior Fullstackborghei/Claude-Skills891—~1.7kAutomated safety check: PassMIT
Fullstack DevHHU3637kr/skills1453 repos~8.6kAutomated safety check: NotesMIT
Fullstack Devinfometa/workbuddyskills348—~1kAutomated safety check: PassMIT
Project Scaffoldingaiskillstore/marketplace433—~2kAutomated safety check: PassNone

Similar skills

  • Senior Fullstack

    alirezarezvani/claude-skills

    Fullstack development toolkit with project scaffolding for Next.js, FastAPI, MERN, and Django stacks, code quality analysis with security and complexity scoring, and stack selection guidance.

    28k GitHub starsUsed in 1 repo~3.7k tokens
    DevelopmentAuto-check: notes
  • Senior Fullstack

    borghei/Claude-Skills

    Fullstack development toolkit with project scaffolding for Next.js/FastAPI/MERN/Django stacks and code quality analysis.

    891 GitHub stars~1.7k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Fullstack Dev

    HHU3637kr/skills

    Full-stack backend architecture and frontend-backend integration guide.

    145 GitHub starsUsed in 3 repos~8.6k tokens
    Backend & APIsAuto-check: notes
  • Fullstack Dev

    infometa/workbuddyskills

    Full-stack backend architecture and frontend-backend integration guide.

    348 GitHub stars~1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Project Scaffolding

    aiskillstore/marketplace

    IDE-grade project scaffolding wizard for creating new projects with comprehensive configuration.

    433 GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Nextjs App Architecture

    jakubwarkusz/themes

    Build or audit Next.js 16 App Router apps using a next-beats-style React Server Components architecture.

    123 GitHub starsUsed in 1 repo~2.5k tokens
    DevelopmentAuto-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 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 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

Works with

Questions about Portaljs Connect Ckan

What does Portaljs Connect Ckan do?

Wire a scaffolded PortalJS portal to a CKAN backend over its API. Portaljs Connect Ckan is an agent skill from datopian/portaljs. Wire a scaffolded PortalJS portal to a CKAN backend over its API.

When should I use Portaljs Connect Ckan?

Portaljs Connect Ckan fits situations like: connecting an existing portal to a live CKAN instance instead of a static manifest; tasks that involve Project scaffolding; tasks that involve Backend development.

How do I install Portaljs Connect Ckan in Claude Code?

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

How do I install Portaljs Connect Ckan in Codex?

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

Can I use Portaljs Connect Ckan 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-connect-ckan -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-connect-ckan, .gemini/skills/portaljs-connect-ckan, .github/skills/portaljs-connect-ckan and .opencode/skills/portaljs-connect-ckan in your project.

What does Portaljs Connect Ckan need to run?

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

SKILL.md names 2 domains. In commands or code: demo.dev.datopian.com; the agent is likely to contact it when it follows the instructions. As links in the text: docs.ckan.org. This is read from the text; nothing was executed.

Is Portaljs Connect Ckan 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 Connect Ckan use?

Portaljs Connect Ckan 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 Connect Ckan use?

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

What are the alternatives to Portaljs Connect Ckan?

Skills that share tags, products or a category with Portaljs Connect Ckan: Senior Fullstack (alirezarezvani/claude-skills, 28k stars), Senior Fullstack (borghei/Claude-Skills, 891 stars), Fullstack Dev (HHU3637kr/skills, 145 stars) and Fullstack Dev (infometa/workbuddyskills, 348 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Portaljs Connect Ckan?

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.