Deploy frontend and full-stack projects to EdgeOne Pages (Tencent EdgeOne). Use when the user wants to deploy, publish, ship, host, launch, or go live on Edg...
--- name: edgeone-pages-deploy description: Deploy frontend and full-stack projects to EdgeOne Pages (Tencent EdgeOne). Use when the user wants to deploy, publish, ship, host, launch, or go live on EdgeOne Pages — e.g. "deploy my app", "publish this site", "push this live", "deploy and give me the link", "create a preview deployment", "deploy to EdgeOne", or "ship to production". metadata: author: edgeone version: "1.1.0" --- # EdgeOne Pages Deployment Skill Deploy any project to **EdgeOne Pages**. ## ⛔ Critical Rules (MUST follow — never skip) 1. **CLI version MUST be `1.2.30` or higher**. If the installed version is lower, reinstall. Do NOT proceed with an outdated version. 2. **NEVER truncate the deploy URL**. The `EDGEONE_DEPLOY_URL` includes `eo_token=` and `eo_time=` query parameters — they are required for access. Always output the **complete** URL. 3. **MUST ask the user to choose China or Global site** before login. Never assume. 4. **MUST auto-detect the login method** — browser login in desktop environments, token login in headless/remote/CI environments. Follow the decision table below. 5. **After token login, MUST ask if the user wants to save the token locally** for future use. --- ## Deployment Flow Run these checks first, then follow the decision table: ```bash # Check 1: CLI installed and correct version? edgeone -v # Check 2: Already logged in? edgeone whoami # Check 3: Project already linked? cat edgeone.json 2>/dev/null # Check 4: Saved token exists? cat .edgeone/.token 2>/dev/null ``` ### Decision Table | CLI version | Login status | Action | |-------------|-------------|--------| | Not installed or version < 1.2.30 | — | → Go to **Install CLI** | | `≥ 1.2.30` ✓ | Logged in | → Go to **Deploy** | | `≥ 1.2.30` ✓ | Not logged in, has saved token | → Go to **Deploy with Token** (use saved token) | | `≥ 1.2.30` ✓ | Not logged in, no saved token | → Go to **Login** | --- ## Install CLI ```bash npm install -g edgeone@latest ``` Verify: `edgeone -v` must output `1.2.30` or higher. If not, retry installation. --- ## Login ### 1. Ask the user to choose a site **You MUST ask before running any login command.** Use the IDE's selection control (`ask_followup_question`): > Choose your EdgeOne Pages site: > - **China** — For users in mainland China (console.cloud.tencent.com) > - **Global** — For users outside China (console.intl.cloud.tencent.com) ### 2. Detect environment and choose login method | Condition | Method | |-----------|--------| | Local desktop IDE (e.g. VS Code, Cursor, etc.) | **Browser Login** | | Remote / SSH / container / CI / cloud IDE / headless | **Token Login** | | User explicitly requests token | **Token Login** | #### Browser Login ```bash # China site edgeone login --site china # Global site edgeone login --site global ``` Wait for the user to complete browser auth. The CLI prints a success message when done. #### Token Login Token login does **NOT** use `edgeone login`. The token is passed directly in the deploy command via `-t`. Guide the user to get a token: 1. Go to the console: - **China**: https://console.cloud.tencent.com/edgeone/pages?tab=settings - **Global**: https://console.intl.cloud.tencent.com/edgeone/pages?tab=settings 2. Find **API Token** → **Create Token** → Copy it ⚠️ Remind the user: the token has account-level permissions. Never commit it to a repository. ### 3. Offer to save the token locally **After the user provides a token, MUST ask:** > Would you like to save this token locally for future deployments? > - **Yes** — Save to `.edgeone/.token` (auto-used next time) > - **No** — Use for this deployment only **If Yes:** ```bash mkdir -p .edgeone echo "<token>" > .edgeone/.token grep -q '.edgeone/.token' .gitignore 2>/dev/null || echo '.edgeone/.token' >> .gitignore ``` Tell the user: "✅ Token saved to `.edgeone/.token` and added to `.gitignore`." --- ## Deploy ### Browser-authenticated deploy ```bash # Project already linked (edgeone.json exists) edgeone pages deploy # New project (no edgeone.json) edgeone pages deploy -n <project-name> ``` `<project-name>`: auto-generate from the project directory name. The first deploy creates `edgeone.json` automatically. ### Token-based deploy **First check for a saved token:** ```bash cat .edgeone/.token 2>/dev/null ``` - Saved token found → use it, tell the user: "Using saved token from `.edgeone/.token`" - No saved token → ask the user to provide one (see Token Login above) ```bash # Project already linked edgeone pages deploy -t <token> # New project edgeone pages deploy -n <project-name> -t <token> ``` The token already contains site info — no `--site` flag needed. **After a successful deploy with a manually-entered token**, ask if the user wants to save it (see "Offer to save the token locally" above). ### Deploy to preview environment ```bash edgeone pages deploy -e preview ``` ### Build behavior The CLI auto-detects the framework, runs the build, and uploads the output directory. No manual config needed. --- ## ⚠️ Parse Deploy Output (Critical — read carefully) After `edgeone pages deploy` succeeds, the CLI outputs: ``` [cli][✔] Deploy Success EDGEONE_DEPLOY_URL=https://my-project-abc123.edgeone.cool?eo_token=xxxx&eo_time=yyyy EDGEONE_DEPLOY_TYPE=preset EDGEONE_PROJECT_ID=pages-xxxxxxxx [cli][✔] You can view your deployment in the EdgeOne Pages Console at: https://console.cloud.tencent.com/edgeone/pages/project/pages-xxxxxxxx/deployment/xxxxxxx ``` **Extraction rules:** | Field | How to extract | ⛔ Warning | |-------|---------------|-----------| | **Access URL** | Full value after `EDGEONE_DEPLOY_URL=` | **MUST include `?eo_token=...&eo_time=...`** — without these params the page won't load | | **Project ID** | Value after `EDGEONE_PROJECT_ID=` | — | | **Console URL** | Line after "You can view your deployment..." | — | **Show the user:** > ✅ Deployment complete! > - **Access URL**: `https://my-project-abc123.edgeone.cool?eo_token=xxxx&eo_time=yyyy` > - **Console URL**: `https://console.cloud.tencent.com/edgeone/pages/project/...` --- ## Error Handling | Error | Solution | |-------|----------| | `command not found: edgeone` | `npm install -g edgeone@latest` | | Browser doesn't open during login | Use token login instead | | "not logged in" error | `edgeone whoami` to check, then re-login or use token | | Auth error with token | Token may be expired — regenerate at the console | | Project name conflict | Use a different name with `-n` | | Build failure | Check logs — usually missing deps or bad build script | --- ## Appendix ### Edge/Node Functions For projects needing server-side functions, run before first deploy: ```bash edgeone pages init ``` Pure static projects skip this. ### Local Development ```bash edgeone pages dev # http://localhost:8088/ ``` ### Environment Variables ```bash edgeone pages env ls # List all edgeone pages env pull # Pull to local .env edgeone pages env add KEY val # Add edgeone pages env rm KEY # Remove ``` ### Project Linking ```bash edgeone pages link ``` ### Token Management | Task | How | |------|-----| | Save token | Stored in `.edgeone/.token` (auto-added to `.gitignore`) | | Update token | Delete `.edgeone/.token`, then deploy again — you'll be prompted to enter and save a new one | | Use saved token | Automatic — the agent reads `.edgeone/.token` before each token deploy | ### Command Reference | Action | Command | |--------|---------| | Install CLI | `npm install -g edgeone@latest` | | Check version | `edgeone -v` | | Login (China) | `edgeone login --site china` | | Login (Global) | `edgeone login --site global` | | View login info | `edgeone whoami` | | Logout | `edgeone logout` | | Switch account | `edgeone switch` | | Init functions | `edgeone pages init` | | Local dev | `edgeone pages dev` | | Link project | `edgeone pages link` | | Deploy | `edgeone pages deploy` | | Deploy new project | `edgeone pages deploy -n <name>` | | Deploy preview | `edgeone pages deploy -e preview` | | Deploy with token | `edgeone pages deploy -t <token>` |
don't have the plugin yet? install it then click "run inline in claude" again.
restructured original content into implexa's 6 required components (intent, inputs, procedure, decision_points, output_contract, outcome_signal), added explicit edge cases (rate limits, auth expiry, timeout, permissions), clarified external connections (
deploy any frontend or full-stack project to EdgeOne Pages (Tencent's edge hosting platform). use this skill when a user wants to deploy, publish, ship, host, launch, go live, or create a preview on EdgeOne Pages. examples: "deploy my app", "publish this site", "push this live", "deploy and give me the link", "create a preview deployment", "deploy to EdgeOne", or "ship to production".
CLI tool:
npm install -g edgeone@latest.Project context:
edgeone.json file (created on first deploy).Authentication:
Site selection:
Optional saved token:
.edgeone/.token file (if user previously saved a token).check CLI version: run edgeone -v. if not installed or version is below 1.2.30, run npm install -g edgeone@latest and verify version again. do not proceed with outdated CLI.
check login status: run edgeone whoami. output shows logged-in user or "not logged in" message.
check saved token: run cat .edgeone/.token 2>/dev/null. if file exists, token is available for use. if not, proceed to login.
ask user for site choice (China or Global): if not already logged in, use a selection prompt. present two options: China (console.cloud.tencent.com) or Global (console.intl.cloud.tencent.com). record the choice.
detect environment and choose login method (see decision points section). if local desktop IDE, use browser login. if remote/SSH/container/CI/cloud IDE or user requests token, use token login.
execute browser login (if applicable): run edgeone login --site china (or --site global). wait for user to complete authentication in opened browser. CLI prints success message when done.
execute token login (if applicable): guide user to EdgeOne console settings tab to create or copy API token. token is passed directly to deploy command via -t flag, not via login command. after deployment, ask user if they want to save token locally.
save token locally (if user chooses yes): create .edgeone/ directory with mkdir -p .edgeone. write token to .edgeone/.token. append .edgeone/.token to .gitignore if not already present. confirm with user.
check for existing project link: run cat edgeone.json 2>/dev/null. if file exists, project is already linked. if not, user will provide a project name or allow auto-generation from directory name.
execute deploy command:
edgeone pages deployedgeone pages deploy -n <project-name>edgeone pages deploy -t <token>edgeone pages deploy -n <project-name> -t <token>parse deploy output: after successful deploy, CLI outputs multi-line response including EDGEONE_DEPLOY_URL=, EDGEONE_PROJECT_ID=, and console URL. extract complete URL from EDGEONE_DEPLOY_URL= field (must include eo_token= and eo_time= query parameters). extract project ID and console URL.
present results to user: show access URL (with full query params), console URL, and deployment confirmation. access URL is immediately usable and accessible.
if CLI not installed or version < 1.2.30:
npm install -g edgeone@latest immediately. do not skip this check. re-verify version with edgeone -v before proceeding.if user is already logged in (checked via edgeone whoami):
if user is not logged in:
if environment is local desktop IDE (VS Code, Cursor, etc.):
edgeone login --site <china|global>. wait for user to complete browser authentication.else if environment is remote, SSH, container, CI, cloud IDE, or headless:
-t <token> flag on deploy command, not via separate login command.else if user explicitly requests token login:
if saved token exists at .edgeone/.token:
.edgeone/.token".else if no saved token exists:
if user answers yes to "save token locally":
.edgeone/ directory, write token to .edgeone/.token, add to .gitignore. skip if already done.else if user answers no:
if edgeone.json exists:
-n flag is optional (existing project ID is used). run edgeone pages deploy (or with -t <token> if token auth).else if edgeone.json does not exist:
-n <project-name> flag.if deploy output contains error (auth failure, token expired, project name conflict, build failure):
if preview environment deployment requested:
-e preview flag to deploy command: edgeone pages deploy -e preview.on successful deployment, output must include:
access URL: complete string from EDGEONE_DEPLOY_URL= field, including ?eo_token= and eo_time= query parameters. format: https://<project-id>.edgeone.cool?eo_token=<token>&eo_time=<timestamp>. this URL must be fully functional and immediately accessible.
project ID: extracted from EDGEONE_PROJECT_ID= field. format: pages-<alphanumeric>.
console URL: extracted from deployment output or constructed. format: https://console.cloud.tencent.com/edgeone/pages/project/<project-id>/deployment/<deployment-id> (or .intl. subdomain for global).
token saved confirmation (if applicable): message "token saved to .edgeone/.token and added to .gitignore".
data format:
user knows the skill worked when:
eo_token= and eo_time= params are included).edgeone.json file now exists in project root (created automatically on first deploy)..edgeone/.token file exists in project root (if user saved token)..gitignore includes .edgeone/.token entry (if token was saved).CLI version must be 1.2.30 or higher. if version is lower or CLI is not installed, reinstall immediately. do not proceed with outdated version.
never truncate the deploy URL. EDGEONE_DEPLOY_URL includes eo_token= and eo_time= query parameters. both are required for access. always output the complete URL.
always ask user to choose China or Global site before login. never assume. use a selection control.
auto-detect login method: browser login for local desktop IDEs, token login for remote/headless/CI environments. follow the decision table.
after token login, always ask if user wants to save token locally. this improves UX for repeated deployments.
npm install -g edgeone@latest
verify with edgeone -v. output must show version 1.2.30 or higher. if lower, retry installation. if still fails, check npm permissions or proxy settings.
present user with clear choice:
choose your EdgeOne Pages site:
- China - for users in mainland China (console.cloud.tencent.com)
- Global - for users outside China (console.intl.cloud.tencent.com)
record selection. use it for login endpoint.
# china site
edgeone login --site china
# global site
edgeone login --site global
CLI opens default browser automatically. user completes auth flow (Tencent account, MFA if enabled). CLI prints success when done. wait for user to confirm they finished.
edge case: if browser doesn't open, ask user to manually visit Tencent console and use token login instead.
token login does not use edgeone login command. token is passed directly via -t flag on deploy command.
get token from console:
navigate to console URL (based on site choice):
find API Token section.
click Create Token or copy existing token.
copy token string (full alphanumeric value, no truncation).
remind user: token has account-level permissions. never commit to repository. tokens can expire or be revoked.
edge case: if token is invalid or expired, user must regenerate at console and provide new token.
after successful token-based deploy, ask user:
would you like to save this token locally for future deployments?
- Yes - save to
.edgeone/.token(auto-used next time)- No - use for this deployment only
if yes:
mkdir -p .edgeone
echo "<token>" > .edgeone/.token
grep -q '.edgeone/.token' .gitignore 2>/dev/null || echo '.edgeone/.token' >> .gitignore
confirm: "token saved to .edgeone/.token and added to .gitignore".
edge case: if .gitignore doesn't exist, create it or add line manually.
first deploy automatically creates edgeone.json with project ID. user does not need to run edgeone pages link separately unless relinking to a different project.
to relink:
edgeone pages link
CLI prompts for project selection from user's EdgeOne account.
edgeone pages deploy
CLI auto-detects framework (React, Vue, Next.js, static, etc.), runs build command, uploads output to EdgeOne. no manual build step needed.
edgeone pages deploy -n <project-name>
replace <project-name> with desired name or auto-generate from directory name. edgeone.json is created automatically.
edge case: if project name already exists under user's account, CLI returns conflict error. user must choose different name with -n <new-name>.
edgeone pages deploy -t $(cat .edgeone/.token)
or manually:
edgeone pages deploy -t <token>
CLI reads token from command line. no separate login command. token already contains site info, so no --site flag needed.
edgeone pages deploy -n <project-name> -t $(cat .edgeone/.token)
edgeone pages deploy -e preview
creates preview URL (temporary, for testing before prod). same output parsing rules apply.
after successful deploy, CLI outputs block like:
[cli][✔] Deploy Success
EDGEONE_DEPLOY_URL=https://my-project-abc123.edgeone.cool?eo_token=xxxx&eo_time=yyyy
EDGEONE_DEPLOY_TYPE=preset
EDGEONE_PROJECT_ID=pages-xxxxxxxx
[cli][✔] You can view your deployment in the EdgeOne Pages Console at:
https://console.cloud.tencent.com/edgeone/pages/project/pages-xxxxxxxx/deployment/xxxxxxx
extraction:
| field | extraction rule | warning |
|---|---|---|
| access URL | full value after EDGEONE_DEPLOY_URL= including ?eo_token=...&eo_time=... |
must not truncate query params or page won't load |
| project ID | value after EDGEONE_PROJECT_ID= |
, |
| console URL | line after "you can view your deployment..." | , |
present to user:
✅ deployment complete!
- access URL:
https://my-project-abc123.edgeone.cool?eo_token=xxxx&eo_time=yyyy- console URL:
https://console.cloud.tencent.com/edgeone/pages/project/...
| error | cause | solution |
|---|---|---|
| command not found: edgeone | CLI not installed | npm install -g edgeone@latest |
| version < 1.2.30 | outdated CLI | npm install -g edgeone@latest, verify with edgeone -v |
| browser doesn't open during login | environment headless or display unavailable | use token login instead with -t <token> |
| "not logged in" after login command | session expired or not persisted | run edgeone whoami to check, then re-login or use token |
| auth error with token (401, 403) | token invalid, expired, or has wrong permissions | regenerate token at EdgeOne console, copy fresh token, re-deploy |
| project name conflict | name already exists under user's account | use different name with -n <new-name> |
| build failure during deploy | framework not detected, missing deps, or bad build script | check project package.json, install deps with npm install, verify build command, check CLI logs |
| "rate limited" | too many requests to EdgeOne API | wait 60 seconds, retry deploy |
| network timeout | connection lost to EdgeOne servers | check internet connection, retry deploy |
| empty result set (no output) | deploy process hung or crashed | kill process (ctrl-c), check logs, retry |
.edgeone/.token file not readable |
permissions issue | check file permissions with ls -la .edgeone/.token, ensure readable by current user |
initialize edge functions (optional):
for projects using server-side functions or middleware, run before first deploy:
edgeone pages init
pure static projects skip this. CLI guides through function setup if functions detected in project.
local development:
edgeone pages dev
starts local dev server at http://localhost:8088/. mirrors EdgeOne Pages routing. useful for testing before deploy.
manage environment variables:
edgeone pages env ls # list all vars in project
edgeone pages env pull # download vars to local .env file
edgeone pages env add KEY val # add or update var
edgeone pages env rm KEY # remove var
environment variables are project-scoped. useful for API keys, endpoints, secrets.
token management:
| task | command / how |
|---|---|
| save token | mkdir -p .edgeone && echo "<token>" > .edgeone/.token and add to .gitignore |
| update token | delete .edgeone/.token, then deploy again. user prompted to enter and save new token |
| use saved token | automatic. CLI reads .edgeone/.token before each token-based deploy |
| revoke token | delete at EdgeOne console settings. CLI will fail with auth error until new token provided |
switch accounts:
edgeone switch
logs out current user and prompts to login as different account.
logout:
edgeone logout
removes browser-based session. saved token at .edgeone/.token is not deleted.
credits: original procedure by vincentism (clawhub). enriched and restructured to Implexa standards.