Deploy static pages to nexu.space. Use when user says deploy, publish, ship, or go live with a static site/page. Uploads files from workspace to <project-slug>.nexu.space via Wrangler + Cloudflare Pages. Supports first deploy and redeploy.
Deploy static files to <project-slug>.nexu.space via Wrangler + Cloudflare Pages.
The deploy script stages a temporary copy of the site and injects a _headers
file (if needed) with cache revalidation rules for HTML/CSS/JS to reduce stale
asset issues after redeploys. Source files are not modified.
Any static files: HTML, CSS, JS, images, fonts, etc. Common use cases:
dist/ or build/ folder)index.htmlindex.html)family-budget)
"$SKILL_DIR/scripts/deploy.sh" <project-slug> <directory> <agent-id> <chat-id> [thread-id] [message-ref] [account-id] [channel] [chat-type] [sender-ref]
agent-id is required. The script uses it to resolve the corresponding botId
from nexu-context.json when recording deployment artifacts.
chat-id is the raw inbound chat identifier from the message context.
U0AHLMC6C8GC0AJKG60H6Dchat-type tells the script whether to send that id to Nexu as user:<chat-id>
or channel:<chat-id>. The script does that translation; do not concatenate
those prefixes yourself.
thread-id is optional — pass it when deploying from within a thread context.
4. Parse the JSON output and report to user:
url fieldDeployed! Your site is live at https://family-budget.nexu.space
Note: First-time deploys take ~3 minutes to propagate on Cloudflare. If you see a "not found" page, wait a few minutes and refresh.
SKILL_API_TOKEN, CLOUDFLARE_API_TOKEN, or CLOUDFLARE_ACCOUNT_IDdeploy.sh — do not call Cloudflare API directlyDEPLOY_BACKEND or any other env overrides — the script handles everything<agent-id> as arg #3 to deploy.sh<chat-id> as arg #4<agent-id> as <chat-id>; they are different values<thread-id> as arg #5<channel> and <chat-type> when available so Nexu can resolve the correct session deterministically_headers filemessage field from the JSON error to the userSKILL_API_TOKEN from env — do not attempt to read or inject them manuallySuccess:
{
"status": "success",
"url": "https://<slug>.nexu.space",
"deployment_url": "https://<id>.<slug>.pages.dev",
"files_total": 10,
"files_uploaded": 2,
"files_cached": 8
}
Error:
{
"status": "error",
"message": "Description of what went wrong"
}