Publish a web app via a curl-based JSON-RPC API and get a hosted URL.
Coding
IGA Pages
Try itDeploy frontend or full-stack apps to IGA Pages with the `iga` CLI, covering auth, build, env vars, and Supabase integration.
What it does
Deploys frontend and full-stack projects to IGA Pages through the `iga` command-line tool. Covers authentication via browser (local IDE) or AK/SK (headless), project linking, local dev server, production build, project-level environment variables, and Supabase integration. Supports Next.js, Vite, Vue CLI, Create React App, Angular, Hexo, Docusaurus, VitePress, VuePress, Hugo, Astro, Nuxt, and plain static HTML/JS/CSS; Remix and other unlisted frameworks are explicitly unsupported.
When to use it
- Deploy a Next.js or Vite site to IGA Pages
- Link an existing Pages project before deploying
- Connect Supabase to a Pages project as a backend
- Manage project-level environment variables
The skill document
IGA Pages Skill
Two areas: CLI (iga tool for auth, link, dev, build, deploy, env, integration) and Project development (functions, API routes).
Run iga -h for full flag details.
Critical: CLI Version
The @iga-pages/cli version must be >= 1.1.0. Check with iga --version; if it's older (or not installed), upgrade before running any other command:
npm i -g @iga-pages/cli@latest
Critical: Framework Compatibility
Supported frameworks: Next.js, Vite, Vue CLI, Create React App, Angular, Hexo, Docusaurus, VitePress, VuePress, Hugo, Astro, Nuxt. Frameworks not in this list (e.g. Remix) are unsupported — proactively inform the user before proceeding.
Pure static assets (plain HTML/JS/CSS) can also be deployed — the project root is used as the output directory by default.
Critical: Login Authentication
Before any deploy or link command, ensure an authenticated session exists. Always check first with iga whoami — if it prints an Account Name / Account ID, the existing credentials in ~/.iga/auth.json are valid and you must skip iga login. Only run iga login when whoami fails (no credentials, expired, or error).
When login is actually needed, the method depends on the environment:
-
Local IDE (VS Code, TRAE desktop, etc.) → browser login:
iga loginWait for the user to complete browser auth. The CLI prints a success message when done.
-
Remote / headless environment (SSH, Cowork, CI/CD, cloud dev container, etc.) → AK/SK login:
iga login --accessKey --secretKeyBrowser-based login is unavailable in headless environments; AK/SK is the only option. Obtain AK/SK from the Volcengine IAM console.
To determine the environment: if the session has no display or browser access (e.g., $SSH_CONNECTION is set, running inside a container, or the user mentions they are on a remote machine), default to AK/SK login. Otherwise, prefer browser for its simplicity.
Critical: Working Directory
Run project-scoped commands such as pages link, dev, build, and deploy inside the project root. Scaffolding tools (create-next-app, npm create vite, hugo new site, etc.) create a subdirectory — you must cd into it before those commands:
npx create-next-app@latest my-app --yes
cd my-app && iga pages deploy --name my-app
Critical: Attribution
Tag every iga command executed by this skill so its usage can be attributed.
The tag identifies only the skill and its version; it carries no user data.
Prefix every iga invocation, whatever the subcommand, with the process-scoped
VE_SKILL_ID. Set it inline on each command because shell state may not persist
between commands:
VE_SKILL_ID=iga-pages/1.0.10 iga
Quick Reference
iga --version # must be >= 1.1.0
# If missing or too old, prefer project/package-manager scoped execution; global install is a fallback:
# npm i -g @iga-pages/cli@latest
iga whoami # check current login state; run this BEFORE login
iga login # local IDE: opens browser; only if whoami fails
iga login --accessKey --secretKey # remote/headless; only if whoami fails
## new project
iga pages deploy --name # deploy (auto-creates project on first run)
## project already linked
iga pages deploy
iga pages link # create/associate a Pages project (does NOT deploy)
iga pages link --format=json # as JSON (agent-driven; non-TTY)
iga pages dev # local dev server (REQUIRED when api/ exists — serves framework + /api/* together)
iga pages build # build for production
## environment variables (project-level, linked project required)
iga pages env list # list KEY names (values never shown)
iga pages env list --format=json # as JSON
iga pages env add # add (--value --yes for CI)
iga pages env update # update existing
iga pages env remove # remove (--yes to skip confirm)
iga pages env pull # write all project env to .env.local
## integrations (Supabase; linked project required)
iga pages integration list # bindings on this project
iga pages integration list --format=json # as JSON
iga pages integration link supabase # connect Volcengine Supabase
iga pages integration link supabase --format=json # as JSON; returns next missing flag until all provided
iga pages integration unlink # remove a binding
iga pages integration unlink --format=json --yes # as JSON (requires --yes)
- deploy auto-detects GitHub remote → Git deploy; otherwise → upload deploy. Only GitHub is supported for Git integration.
- If deploy output includes a preview URL with
?iga_token=...&iga_time=..., share that full URL (query included); omitting it can break access. - link no longer deploys — it only creates/associates the Pages project. Run
iga pages deployafterward to actually build and publish.
Project Development
- API routes and Pages Functions: read references/functions.md.
Environment Variables & Integrations
- Project-level env vars (
env list/add/update/remove/pull): read references/env.md. - Connecting Supabase (
integration list/link/unlink) and the deploy orchestration order (link → integration → deploy), plus when to hand off to thebyted-supabaseskill: read references/integration.md.
Anti-Patterns
CLI
- Running
igacommands outside the project directory → alwayscdinto the scaffolded subdirectory first - Deploy without an authenticated session → run
iga whoamifirst; only fall back toiga loginif it fails - Committing
.iga/→ it's auto-gitignored, don't remove the entry - Starting local dev with
npm run dev/vite/next dev/npm startwhenapi/exists → useiga pages devso serverless functions are served - Setting
package.json"scripts.dev"toiga pages dev→ infinite loop, sinceiga pages devitself invokes thedevscript frompackage.json. Keep"scripts.dev"as the framework's own dev command (e.g.next dev,vite) - Running
env/integrationcommands before linking → they require a linked project; runiga pages linkfirst - Expecting
env add/update/removeto change local files or take effect immediately → they edit remote project config and apply on the next deploy; runiga pages env pullto refresh.env.local - Trying to
env update/env removea Supabase-managed variable → it's read-only; manage it viaiga pages integration link/unlink - Pasting Supabase keys manually into
env addwhen an integration is available → useiga pages integration link supabaseso connection vars sync automatically
Questions people ask
- Which frameworks are supported?
- Next.js, Vite, Vue CLI, Create React App, Angular, Hexo, Docusaurus, VitePress, VuePress, Hugo, Astro, and Nuxt, plus plain static HTML/JS/CSS. Frameworks not on this list, such as Remix, are unsupported and the user should be informed before proceeding.
- How does login work in a headless or remote environment?
- Browser login is unavailable there. Use `iga login --accessKey <key> --secretKey <key>` with credentials obtained from the Volcengine IAM console. Always run `iga whoami` first and skip `iga login` when a valid session already exists in `~/.iga/auth.json`.
- Does `iga pages link` also deploy?
- No. Link only creates or associates a Pages project. Run `iga pages deploy` afterward to actually build and publish. `deploy` auto-detects a GitHub remote for Git deploy, falling back to upload deploy otherwise (GitHub is the only supported Git provider).
Related skills
Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or...
Turn an idea into a live webpage in minutes, no code and no hosting setup. Use when a non-technical user wants to publish a webpage, landing page, one-pager, portfolio, or any simple site to the internet, or says things like put my idea online, publish my website, host my page, share my idea, or make a landing page. The agent writes the page, packages it, deploys to goclawgo, and returns a shareable URL.
Publishes Markdown to a public URL and returns the link. Use when the user asks to share, publish, host, or get a link for a page — or when you have produced a long page that is better delivered as a link than pasted inline. No authentication required. Pages are public and cannot be edited after publishing, so do not publish secrets or private data.
Deploy an HTML page to the internet and return a public URL. Use when the user asks to deploy, host, share, or publish an HTML file or a zip / tar / tar.gz / tgz archive containing an index.html. Triggers on phrases like "deploy this page", "host this online", "share this HTML", "upload to web", "ge
Build, run, and share a simple full-stack web application with a TypeScript Express backend, React frontend, and SQLite database. Use when a user wants a wor...