# Static Deploy

Deploy static pages to nexu.space.

- Repository: https://github.com/nexu-io/nexu (3280 stars)
- Category: DevOps
- License: MIT
- Last updated: 2026-04-26
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add nexu-io/nexu --skill static-deploy -g -a claude-code -y`
Codex: `npx skills add nexu-io/nexu --skill static-deploy -g -a codex -y`
Cursor: `npx skills add nexu-io/nexu --skill static-deploy -g -a cursor -y`
Gemini CLI: `npx skills add nexu-io/nexu --skill static-deploy -g -a gemini-cli -y`

## Description

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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Static Deploy

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.

## What it deploys

Any static files: HTML, CSS, JS, images, fonts, etc. Common use cases:
- Single-page apps (React, Vue, etc., deploy the `dist/` or `build/` folder)
- Landing pages, portfolios, documentation sites
- Quick prototypes or demos
- Any folder with an `index.html`

## Usage

1. Identify the directory containing files to deploy (must have an `index.html`)
2. Derive a project-slug from context (e.g., "family budget" → `family-budget`)
   - Lowercase alphanumeric + hyphens only, max 63 characters
   - Reuse the same slug for redeployments
   - Ask user to confirm if ambiguous
3. Run deploy with the inbound structured context:

```bash
"$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.

- DM example: `U0AHLMC6C8G`
- Channel example: `C0AJKG60H6D`

`chat-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:
   - Brief summary of what was deployed
   - Live URL from the `url` field
   - **Important:** Tell the user that Cloudflare Pages propagation takes ~3 minutes. The URL may not work immediately after the first deploy. For redeployments, it's usually faster.

## Example reply

The rest: https://github.com/nexu-io/nexu/blob/HEAD/skills/nexubot/static-deploy/SKILL.md
