# Send Static App to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "static-app",
    "name": "Static App",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/Akellacom/static-app",
    "canonicalUrl": "https://clawhub.ai/Akellacom/static-app",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/static-app",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=static-app",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "scripts/delete.js",
      "scripts/deploy.js",
      "scripts/download.js",
      "scripts/files.js",
      "scripts/list.js"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "static-app",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T09:54:36.825Z",
      "expiresAt": "2026-05-08T09:54:36.825Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=static-app",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=static-app",
        "contentDisposition": "attachment; filename=\"static-app-1.0.4.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "static-app"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/static-app"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/static-app",
    "downloadUrl": "https://openagent3.xyz/downloads/static-app",
    "agentUrl": "https://openagent3.xyz/skills/static-app/agent",
    "manifestUrl": "https://openagent3.xyz/skills/static-app/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/static-app/agent.md"
  }
}
```
## Documentation

### Static.app Deployment Skill

Deploy static websites and applications to Static.app hosting directly from OpenClaw.

### Workspace Structure

All Static.app operations in your workspace use a dedicated folder structure:

workspace/
└── staticapp/              # Main folder for all Static.app operations
    ├── new-site/           # New sites created locally
    └── {pid}/              # Downloaded existing sites (by PID)

New sites: Created in staticapp/ subfolders before deployment
Downloaded sites: Extracted to staticapp/{pid}/ for editing

### How Static.app Handles Files

Static.app automatically creates clean URLs from your filenames:

FileURLindex.html/ (homepage)about.html/aboutportfolio.html/portfoliocontact.html/contact

No subdirectories needed! Just create .html files in the root folder.

### Simple Multi-Page Site

my-site/
├── index.html          # Homepage → /
├── about.html          # About page → /about
├── portfolio.html      # Portfolio → /portfolio
├── contact.html        # Contact → /contact
├── style.css           # Stylesheet
├── js/                 # JavaScript files
│   ├── main.js
│   └── utils.js
└── images/             # Images folder
    ├── logo.png
    └── photo.jpg

### JavaScript App (React, Vue, etc.)

For JS apps, build first, then deploy the dist (or build) folder:

# Build your app
npm run build

# Deploy the dist folder
node scripts/deploy.js ./dist

### Prerequisites

Get API Key: Go to https://static.app/account/api and create an API key (starts with sk_)
Set Environment Variable: Store the API key in STATIC_APP_API_KEY env var

### Deploy Multi-Page Site

# Create your pages
echo '<h1>Home</h1>' > index.html
echo '<h1>About</h1>' > about.html
echo '<h1>Portfolio</h1>' > portfolio.html

# Deploy
node scripts/deploy.js

### Deploy Specific Directory

node scripts/deploy.js ./my-site

### Update Existing Site

node scripts/deploy.js . --pid olhdscieyr

### List All Sites

node scripts/list.js

### List Site Files

node scripts/files.js YOUR_PID

Options:

--raw — Output raw JSON
-k <key> — Specify API key

### Delete Site

node scripts/delete.js YOUR_PID

Options:

-f, --force — Skip confirmation prompt
-k <key> — Specify API key

### Download Site

Download an existing site to your workspace for editing:

node scripts/download.js YOUR_PID

This will:

Fetch the download URL from Static.app API
Download the site archive
Extract it to staticapp/{pid}/

Options:

-p, --pid — Site PID to download
-o, --output — Custom output directory (default: ./staticapp/{pid})
-k <key> — Specify API key
--raw — Output raw JSON response

Example:

# Download site to default location
node scripts/download.js abc123

# Download to custom folder
node scripts/download.js abc123 -o ./my-site

### Script Options

node scripts/deploy.js [SOURCE_DIR] [OPTIONS]

Arguments:
  SOURCE_DIR          Directory to deploy (default: current directory)

Options:
  -k, --api-key       API key (or set STATIC_APP_API_KEY env var)
  -p, --pid           Project PID to update existing site
  -e, --exclude       Comma-separated exclude patterns
  --keep-zip          Keep zip archive after deployment

### Default Exclusions

The following are automatically excluded from deployment:

node_modules
.git, .github
*.md
package*.json
.env
.openclaw

### ✅ What Works

Static HTML sites — Any number of .html pages
CSS & JavaScript — Frontend frameworks, vanilla JS
Images & Assets — Place in images/ folder or root
JavaScript files — Place in js/ folder or root
Built JS Apps — Deploy dist/ or build/ folder after npm run build

### ❌ What Doesn't Work

Node.js Server Apps — No server-side rendering, no Express.js, no API routes
PHP, Python, Ruby — Static.app only serves static files
Databases — Use client-side storage or external APIs

### JavaScript Apps Workflow

# 1. Build your React/Vue/Angular app
npm run build

# 2. Deploy the build output
node scripts/deploy.js ./dist --pid YOUR_PID

### Deploy Site

Endpoint: POST https://api.static.app/v1/sites/zip
Auth: Bearer token (API key)
Body: Multipart form with archive (zip file) and optional pid

### List Sites

Endpoint: GET https://api.static.app/v1/sites
Auth: Bearer token (API key)
Headers: Accept: application/json

### List Site Files

Endpoint: GET https://api.static.app/v1/sites/files/{pid}
Auth: Bearer token (API key)
Headers: Accept: application/json

### Delete Site

Endpoint: DELETE https://api.static.app/v1/sites/{pid}
Auth: Bearer token (API key)
Headers: Accept: application/json

### Download Site

Endpoint: GET https://api.static.app/v1/sites/download/{pid}
Auth: Bearer token (API key)
Headers: Accept: application/json
Response: Returns download URL for the site archive

### Dependencies

archiver — Zip archive creation
form-data — Multipart form encoding
node-fetch — HTTP requests
adm-zip — Zip extraction

Install with: cd scripts && npm install

### Response

On success, the script outputs:

✅ Deployment successful!
🌐 Site URL: https://xyz.static.app
📋 PID: abc123

STATIC_APP_URL=https://xyz.static.app
STATIC_APP_PID=abc123

### Workflow

Check for STATIC_APP_API_KEY env var or --api-key
Create zip archive from source directory (with exclusions)
Upload to Static.app API
Parse response and output URLs
Clean up temporary zip file

### Error Handling

Missing API key → Clear error with instructions
Network issues → HTTP error details
Invalid PID → API error message
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: Akellacom
- Version: 1.0.4
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-01T09:54:36.825Z
- Expires at: 2026-05-08T09:54:36.825Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/static-app)
- [Send to Agent page](https://openagent3.xyz/skills/static-app/agent)
- [JSON manifest](https://openagent3.xyz/skills/static-app/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/static-app/agent.md)
- [Download page](https://openagent3.xyz/downloads/static-app)