Portaljs Deploy
Deploy a PortalJS portal to PortalJS Arc, Datopian-managed static hosting on Cloudflare.
Install
npx skills add datopian/portaljs --skill portaljs-deploy -g -a claude-code -y- Repository
- datopian/portaljs2.4k
- Category
- DevOps
- Updated
- 7d ago
- License
- MIT
- Context cost
- Lightabout 1,176 tokens
- Runs scripts
- No, instructions only
What it does
Deploy a PortalJS portal to PortalJS Arc, Datopian-managed static hosting on Cloudflare. Builds a static export, uploads it, and returns a live SLUG.arc.portaljs.com URL. One command, one target. Use when a portal is ready to publish or redeploy to a live URL.
PortalJS, Deploy
Overview
Publish an existing PortalJS portal to PortalJS Arc, Datopian's managed static
hosting on Cloudflare. Build a static export, upload it to the Arc API, and print a live
https://SLUG.arc.portaljs.com URL. Re-running redeploys the same portal (idempotent on
the slug). This is a single-target skill, it deploys to Arc only. For self-hosting, run
npm run build and upload out/ to any static host; no skill required for that path.
Arc serves static exports only, SSR is not hosted on Arc yet.
Prerequisites
- A PortalJS portal directory with a
package.jsonthat listsnextas a dependency. - Node 18+ and npm on PATH (the Arc device-login flow uses Node's global
fetch). curlandtaravailable for packaging and upload.- A PortalJS Arc token, read from
PORTALJS_TOKEN, or~/.portaljs/credentials({"token":"…"}). If neither exists, the skill signs in on demand via a device-code flow; no manual token copying required. - If the portal stores large data in Git LFS/R2, do not run
git lfs pullbefore deploying, large datasets are served from Cloudflare R2 via absolute URLs indatasets.json, not copied into the export.
Instructions
The canonical, full step-by-step workflow is
.claude/commands/portaljs-deploy.md, the
single source of truth. Read and follow it when executing. Summary:

