Agent skill · software engineering · jeremylongshore
portaljs-new-portal
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.
Why this skill is useful
Adds an executable script that scaffolds a new PortalJS data portal with user-specific configurations and dependencies, which the AI cannot generate on its own.
What it needs
Requires node, npm installed locally. About 3k tokens when loaded. Last updated 2026-08-07. 2,604 stars on the source repository.
What this skill does
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 PORTALJSTEMPLATEREF); 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 ./PROJECTSLUG, asking first if the destination already exists and is non-empty. 5. Substitute PROJECTNAME, PROJECTSLUG, DESCRIPTION tokens across all files with perl -pi, escaping /, \, and & in the values. 6. Set NAMESPACETYPE ('theme' or 'owner') in lib/datasets.ts per the interview. 7. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills jeremylongshore/portaljs-new-portal