Agent skill

Portaljs New Portal

by datopian in datopian/portaljs

Scaffold a new PortalJS data portal from a brief. An agent skill from datopian/portaljs.

MITAuto-check passed

Install Portaljs New Portal

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

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

GitHub CLI
$ gh skill install datopian/portaljs portaljs-new-portal --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-new-portal .claude/skills/portaljs-new-portal && 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-new-portal
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

Scaffold a new PortalJS data portal from a brief. An agent skill from datopian/portaljs.

  • Works in 10 steps: Interview the user in up to three rounds… → Confirm a short brief (name, slug,… → Resolve the template source: prefer a… → …
  • Starting a brand-new data portal project from scratch
  • SKILL.md covers Overview, Prerequisites, Instructions and Output, plus 3 more sections
  • Calls npm, npx and tsc

What it does

Portaljs New Portal is an agent skill from datopian/portaljs. Scaffold a new PortalJS data portal from a brief. Copies the canonical template from examples/portaljs-catalog and substitutes project tokens. Use when starting a brand-new data portal project from scratch.

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…

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

  • Starting a brand-new data portal project from scratch

Example prompts

  • “/portaljs-new-portal”

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(cp:*), Bash(mkdir:*), Bash(git:*)

Workflow steps

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

  1. Interview the user in up to three rounds — Home/basics, Catalog & discovery
  2. Confirm a short brief (name, slug, description, namespace, datasets, views) before
  3. Resolve the template source: prefer a remote tiged fetch of
  4. Materialize the template into ./PROJECT_SLUG, asking first if the destination
  5. Substitute PROJECT_NAME, PROJECT_SLUG, DESCRIPTION tokens
  6. Set NAMESPACE_TYPE ('theme' or 'owner') in lib/datasets.ts per the
  7. Seed datasets captured in Round 2 (via /portaljs-add-dataset or by hand), or
  8. Run npm install inside the scaffolded portal.
  9. Verify with npx tsc --noEmit (never next build here — it would corrupt a
  10. Report the scaffolded routes, namespace mode, 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(cp:*)
    • Bash(mkdir:*)
    • Bash(git:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm
    • npx
    • tsc

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

    • portaljs.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 New Portal loads about 1.5k tokens when it runs, and up to ~2.2k if it reads all its reference files. Until then it costs about 57 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
~57
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.2k

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,475 tokens.

Download SKILL.mdSave it as .claude/skills/portaljs-new-portal/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
portaljs-new-portal
description
Scaffold a new PortalJS data portal from a brief. Copies the canonical template from examples/portaljs-catalog and substitutes project tokens. Use when starting a brand-new data portal project from scratch.
allowed-tools
Read, Write, Edit, Bash(npm:*), Bash(npx:*), Bash(cp:*), Bash(mkdir:*), Bash(git:*)
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, scaffold, nextjs, template, catalog

PortalJS — New Portal

Overview

Scaffold a production-ready PortalJS data portal from a brief. The skill is interactive: if the brief is thin it interviews the user in three short rounds (mapped to the template's three surfaces — Home, Catalog, Showcase), echoes a brief back for confirmation, then copies examples/portaljs-catalog (locally or via a remote tiged fetch), substitutes placeholder tokens, sets the namespace mode, seeds any datasets named in the interview, installs dependencies, and verifies the scaffold with a type check.

Prerequisites

  • Node.js >=22 and npm available on PATH.
  • Network access, unless a current local checkout of the portaljs repo is available (the resolver defaults to a remote fetch of the template).
  • A destination directory name that does not already contain files (or user consent to overwrite one that does).

Instructions

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

  1. Interview the user in up to three rounds — Home/basics, Catalog & discovery (datasets, namespace mode theme vs owner), Showcase/views — skipping any round already answered by the input brief. Accept "use defaults" at any point.
  2. Confirm a short brief (name, slug, description, namespace, datasets, views) before building.
  3. Resolve the template source: prefer a remote tiged fetch of examples/portaljs-catalog at main (or PORTALJS_TEMPLATE_REF); use a local checkout only when it is current (has pages/[owner]/[slug].tsx) and the destination is outside that repo.
  4. Materialize the template into ./PROJECT_SLUG, asking first if the destination already exists and is non-empty.
  5. Substitute __PROJECT_NAME__, __PROJECT_SLUG__, __DESCRIPTION__ tokens across all files with perl -pi, escaping /, \, and & in the values.
  6. Set NAMESPACE_TYPE ('theme' or 'owner') in lib/datasets.ts per the interview.
  7. Seed datasets captured in Round 2 (via /portaljs-add-dataset or by hand), or clear datasets.json to [] if none were named.
  8. Run npm install inside the scaffolded portal.
  9. Verify with npx tsc --noEmit (never next build here — it would corrupt a running dev server's .next/ directory).
  10. Report the scaffolded routes, namespace mode, and next steps.

Output

  • Created: a new directory ./PROJECT_SLUG/ containing the full examples/portaljs-catalog template with tokens substituted.
  • Modified: lib/datasets.ts (NAMESPACE_TYPE); datasets.json (seeded datasets or cleared to []).
  • Verified: npx tsc --noEmit passes inside the scaffolded portal.
  • Result: a runnable portal at ./PROJECT_SLUG with Home (/), Catalog (/search), and Showcase (/@<namespace>/<slug>) surfaces wired up.
Show full SKILL.md (220 more words)Show less

Error Handling

SymptomCauseFix
DIR_EXISTS./PROJECT_SLUG already exists and is non-emptyAsk the user for a different name or consent to remove it; then proceed.
Remote fetch failsBad PORTALJS_TEMPLATE_REF, network outage, or tiged unavailableTell the user plainly and ask to retry, use a different ref, or check network.
Stale local scaffold (pages/datasets/[slug].tsx)Old local clone missing pages/[owner]/[slug].tsxResolver already falls back to remote in this case — do not force local mode.
npm install failsNode <22 or no networkReport the error and ask the user to check Node version and connectivity.
tsc --noEmit failsToken substitution or manifest errorPrint the log and fix before reporting success — never report success with a failing type check.

Examples

Example 1 — Full brief up front
/portaljs-new-portal Auckland Open Data Portal — datasets published by several council
departments (multiple publishers). Start with ./data/parks.csv and ./data/budget.csv.

Infers name + description, picks NAMESPACE_TYPE = 'owner', asks for namespace values (e.g. parks-dept, finance), confirms the brief, scaffolds the template, and seeds both datasets at /@parks-dept/parks and /@finance/budget.

Example 2 — No arguments, full interview
/portaljs-new-portal

Runs all three interview rounds from scratch, accepting "use defaults" for any round, then confirms the brief before scaffolding.

Example 3 — Single-publisher portal with no datasets yet
/portaljs-new-portal Reference Data Hub — a single-team reference catalog, no data yet.

Picks NAMESPACE_TYPE = 'theme' with namespace reference, clears datasets.json to [], and reports /portaljs-add-dataset as the next step.

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-new-portal 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 New Portal 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 New Portal compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Portaljs New Portal this skilldatopian/portaljs2.4k1 repos~1.5kAutomated safety check: PassMIT
Briefalirezarezvani/claude-skills28k—~967Automated safety check: PassMIT
Scaffoldingdotnet/efcore15k—~321Automated safety check: PassMIT
Scaffold Elementremotion-dev/remotion63k—~202Automated safety check: PassCustom licence
Copy Editingcoreyhaines31/marketingskills54k1 repos~4.5kAutomated safety check: PassMIT
Briefdavepoon/buildwithclaude3.6k—~1.3kAutomated safety check: NotesMIT

Similar skills

  • Brief

    alirezarezvani/claude-skills

    /cs:brief <topic — Generate a one-page strategy brief from an office-hours intake.

    28k GitHub stars~967 tokensUpdated 1 mo ago
    Marketing & SEOAuto-check passed
  • Scaffolding

    dotnet/efcore

    Official

    Implementation details for EF Core scaffolding (reverse engineering).

    15k GitHub stars~321 tokensUpdated yesterday
    DatabasesAuto-check passed
  • Scaffold Element

    remotion-dev/remotion

    Official

    Scaffold a new Remotion Element for development in the docs Remotion Studio.

    63k GitHub stars~202 tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Copy Editing

    coreyhaines31/marketingskills

    When the user wants to edit, review, or improve existing marketing copy, or refresh outdated content.

    54k GitHub starsUsed in 1 repo~4.5k tokens
    Writing & ContentAuto-check passed
  • Brief

    davepoon/buildwithclaude

    Session-start briefing from Origin. An agent skill from davepoon/buildwithclaude.

    3.6k GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check: notes
  • Portal

    BuilderIO/agent-native

    Continue a coding session on a paired always-on computer. An agent skill from BuilderIO/agent-native.

    7.1k GitHub stars~1.1k tokensUpdated yesterday
    Productivity & AutomationAuto-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 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

Questions about Portaljs New Portal

What does Portaljs New Portal do?

Scaffold a new PortalJS data portal from a brief. An agent skill from datopian/portaljs. Portaljs New Portal is an agent skill from datopian/portaljs. Scaffold a new PortalJS data portal from a brief.

When should I use Portaljs New Portal?

Portaljs New Portal fits situations like: starting a brand-new data portal project from scratch.

How do I install Portaljs New Portal in Claude Code?

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

How do I install Portaljs New Portal in Codex?

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

Can I use Portaljs New Portal 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-new-portal -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-new-portal, .gemini/skills/portaljs-new-portal, .github/skills/portaljs-new-portal and .opencode/skills/portaljs-new-portal in your project.

What does Portaljs New Portal need to run?

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

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

Is Portaljs New Portal 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 New Portal use?

Portaljs New Portal 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 New Portal use?

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

What are the alternatives to Portaljs New Portal?

Skills that share tags, products or a category with Portaljs New Portal: Brief (alirezarezvani/claude-skills, 28k stars), Scaffolding (dotnet/efcore, 15k stars), Scaffold Element (remotion-dev/remotion, 63k stars) and Copy Editing (coreyhaines31/marketingskills, 54k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Portaljs New Portal?

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.