static-deploy

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.

2,280 stars

Best use case

static-deploy is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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.

Teams using static-deploy should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/static-deploy/SKILL.md --create-dirs "https://raw.githubusercontent.com/nexu-io/nexu/main/skills/nexubot/static-deploy/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/static-deploy/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How static-deploy Compares

Feature / Agentstatic-deployStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 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

> Deployed! 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.

## Rules

- Never read, echo, or log `SKILL_API_TOKEN`, `CLOUDFLARE_API_TOKEN`, or `CLOUDFLARE_ACCOUNT_ID`
- Never pass credentials as command arguments
- Always use the bundled `deploy.sh` — do not call Cloudflare API directly
- Do not set `DEPLOY_BACKEND` or any other env overrides — the script handles everything
- Always pass the caller `<agent-id>` as arg #3 to `deploy.sh`
- Always pass raw inbound `<chat-id>` as arg #4
- Never pass `<agent-id>` as `<chat-id>`; they are different values
- If deploying from a thread, pass `<thread-id>` as arg #5
- Always pass `<channel>` and `<chat-type>` when available so Nexu can resolve the correct session deterministically
- Do not try to look up or persist a canonical session key in this skill; Nexu resolves it server-side
- Do not hand-edit source files just to add cache-busting query params; the deploy script handles cache revalidation via a staged `_headers` file
- If the script fails, show the `message` field from the JSON error to the user
- Cloudflare credentials are fetched at runtime via the scoped secrets API using `SKILL_API_TOKEN` from env — do not attempt to read or inject them manually

## Output Format

Success:
```json
{
  "status": "success",
  "url": "https://<slug>.nexu.space",
  "deployment_url": "https://<id>.<slug>.pages.dev",
  "files_total": 10,
  "files_uploaded": 2,
  "files_cached": 8
}
```

Error:
```json
{
  "status": "error",
  "message": "Description of what went wrong"
}
```

Related Skills

nano-banana

2280
from nexu-io/nexu

Generate or edit images via Nano Banana image models. Triggers on "generate image", "image generation", "nano banana", "edit image", "nano banana pro", "nano banana 2"

feedback

2280
from nexu-io/nexu

Send feedback to the Nexu team. Use when the user says /feedback followed by their message.

sync-specs

2280
from nexu-io/nexu

Use when code changes may have made documentation outdated, when reviewing docs for consistency, or when the user asks to sync or audit documentation.

nexu-e2e-test

2280
from nexu-io/nexu

Use when verifying OpenClaw gateway fixes end-to-end, testing skill loading after restart, or running integration tests against the local Nexu+OpenClaw stack. Triggers on "e2e test", "verify fix", "test gateway", "test skills loading".

datadog

2280
from nexu-io/nexu

Use when the user says "check Datadog", "查 Datadog", "查日志", "check logs", "crash logs", "查 crash", "gateway crash", "查告警", "check alerts", "check metrics", or needs to investigate production issues via Datadog Logs API.

feishu-update-doc

2280
from nexu-io/nexu

更新飞书云文档。支持 7 种更新模式:追加、覆盖、定位替换、全文替换、前/后插入、删除。

feishu-troubleshoot

2280
from nexu-io/nexu

飞书插件问题排查工具。包含常见问题 FAQ 和深度诊断命令(/feishu_doctor)。 常见问题可随时查阅。诊断命令用于排查复杂问题(多次授权仍失败、自动授权无法解决等), 会检查账户配置、API 连通性、应用权限、用户授权状态,并生成详细的诊断报告和解决方案。

feishu-task

2280
from nexu-io/nexu

飞书任务管理工具,用于创建、查询、更新任务和清单。 **当以下情况时使用此 Skill**: (1) 需要创建、查询、更新、删除任务 (2) 需要创建、管理任务清单 (3) 需要查看任务列表或清单内的任务 (4) 用户提到"任务"、"待办"、"to-do"、"清单"、"task" (5) 需要设置任务负责人、关注人、截止时间

feishu-im-read

2280
from nexu-io/nexu

飞书 IM 消息读取工具使用指南,覆盖会话消息获取、话题回复读取、跨会话消息搜索、图片/文件资源下载。 **当以下情况时使用此 Skill**: (1) 需要获取群聊或单聊的历史消息 (2) 需要读取话题(thread)内的回复消息 (3) 需要跨会话搜索消息(按关键词、发送者、时间等条件) (4) 消息中包含图片、文件、音频、视频,需要下载 (5) 用户提到"聊天记录"、"消息"、"群里说了什么"、"话题回复"、"搜索消息"、"图片"、"文件下载" (6) 需要按时间范围过滤消息、分页获取更多消息

feishu-fetch-doc

2280
from nexu-io/nexu

获取飞书云文档内容。返回文档的 Markdown 内容,支持处理文档中的图片、文件和画板(需配合 feishu_doc_media 工具)。

feishu-create-doc

2280
from nexu-io/nexu

创建飞书云文档。从 Lark-flavored Markdown 内容创建新的飞书云文档,支持指定创建位置(文件夹/知识库/知识空间)。

feishu-calendar

2280
from nexu-io/nexu

飞书日历与日程管理工具集。包含日历管理、日程管理、参会人管理、忙闲查询。