Install any skill in seconds. Free to start, no credit card required.
Get Started Free →datopian/portaljs-deploy
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.
Passed 16 of 20 test cases with the skill, and 3 of 20 without it.
and 13 more in the full report
14 fixed4 passed either way5 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 14 test cases the skill fixed. Same model, same prompt, with and without the skill.
We are deploying our staging preview for the dataset portal. Please publish the portal in `./` to Arc under the slug `staging`.
| Checked | Without skill | With skill |
|---|---|---|
| Identifies staging as a reserved slug on Arc hosting. | Missed | Passed |
The instructions your model reads when the skill loads.
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.
package.json that lists next as a dependency.fetch).curl and tar available for packaging and upload.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.git lfs pull before
deploying — large datasets are served from Cloudflare R2 via absolute URLs in
datasets.json, not copied into the export.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:
.) and slug (default from package.json
name or directory name, slugified). Confirm the directory is a Next.js project; reject
reserved slugs (www, api, admin, staging, arc).PORTALJS_TOKEN, else ~/.portaljs/credentials; if
missing, run the device-authorization sign-in flow and save the returned token.next.config.js sets output: 'export' and images: { unoptimized: true },
then run npm run build; stop if the build fails.npm run check-export (or
scripts/check-export.mjs) to catch Git LFS pointer leaks and oversized data files.out/ directory and POST it to $PORTALJS_ARC_API/v1/deploy?slug=<slug>
with the bearer token; handle 200/401/409/400/413 responses distinctly.test cases passed, vs 3 / 20 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.