woltspace-new-app
Set up a new app from scratch. Use when starting a fresh app — scaffolds the directory, writes woltspace.json, starts the dev server.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Set up a new app from scratch. Use when starting a fresh app — scaffolds the directory, writes woltspace.json, starts the dev server.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
IWCL — Inter-Wolt Communication. Message another wolt and reply to messages from wolts. Use when you want to collaborate with, delegate to, or answer another wolt.
Work with apps — the isolated workspace for building apps, scripts, and experiments. Use when creating, running, or managing an app.
Configure Cloudflare Tunnel and Access for woltspace — initial setup, add or remove user permissions, and wildcard app subdomains.
First session for a brand new wolt. Say hi, show the site, ask what to build.
Push content to the split view's right pane. Use when you want to show HTML, pages, or artifacts to the user.
Help a user who has accidentally edited platform code in /workspace/woltspace/. Detects drift, extracts their work into wolt/apps/, and resets the platform to clean state.
| name | woltspace-new-app |
| description | Set up a new app from scratch. Use when starting a fresh app — scaffolds the directory, writes woltspace.json, starts the dev server. |
An app is something you ship — an app, a tool, a service. It has its own server, dependencies, and manifest. It can be public. Apps live at wolts/apps/{name}/ and are served at /app/{name}/.
Apps are an escalation, not a default. Wolts should start with their site (wolt/site/) for lightweight work. Only create an app when the work needs its own server, dependencies, or is meant to be shared. Always confirm with the user before creating an app.
Before creating an app, make sure they want one:
"This sounds like it needs its own server/deps — want me to set it up as an app? Or keep it simple in your site for now?"
Apps live in the global apps directory (shared across all wolts):
mkdir -p /workspace/wolts/apps/{name}
cd /workspace/wolts/apps/{name}
Based on the user's request, figure out stack and scaffold:
Simple HTML page:
# Just write the files — no deps needed
Vite + React/Vue/Svelte:
npm create vite@latest . -- --template react # or vue, svelte
npm install
Python + FastAPI:
uv init . && uv add fastapi uvicorn
Astro blog/site:
npm create astro@latest . -- --template blog
Clone a repo:
git clone <url> .
# Read the README, figure out deps, install them
This is required — the platform only discovers apps that have woltspace.json. Without it, the app is invisible.
{
"name": "{name}",
"description": "What this app does",
"stack": "node",
"port": 4010,
"install": "npm install",
"start": "node server.js --port $PORT --host 0.0.0.0",
"keeper": "{your-wolt-name}",
"emoji": "🦊",
"public": false
}
| Field | Required | Description |
|---|---|---|
name | yes | App name (matches directory name, globally unique) |
keeper | yes | Your wolt name — who owns this app |
description | no | What the app does |
stack | no | Tech stack: python, vite, node, html |
install | no | Install command (e.g. npm install, uv sync) |
port | yes | Fixed port for this app (use 4000-5999 range). Pick one, it's yours permanently. Avoid 7777 (platform) and 3001 (TUI). Sites use 6000+ so no collisions. |
start | no | Start command. Use $PORT — the platform expands it. Add --host 0.0.0.0 for network access. Null = app can't be started from the lodge. |
source | no | Origin URL if cloned/forked |
emoji | no | Display emoji (auto-assigned if omitted) |
public | no | If true, the app is shared publicly when started. With a named tunnel: served at {name}.{domain} (e.g. corework.woltspace.com). Without: a random quick tunnel URL. Default: false. |
Important: project.json and app.json are NOT recognized. Only woltspace.json works.
Your port is declared in woltspace.json and is permanent — it never changes. Check existing apps to avoid conflicts (ls /workspace/wolts/apps/*/woltspace.json and look at their ports). Avoid 7777 and 3001.
$PORT in your start command — the platform expands it to your manifest port. Add --host 0.0.0.0 so the server accepts connections from the proxy and tunnels.blog.localhost:7777). Internal links, WebSockets, and HMR all work naturally.Run the dev server or build step. Verify it works:
curl -s http://localhost:{port}/ | head -20
push-view /app/{name}/
Tell them what you built, where to see it, and how to run it next time.
If you land in an app directory that already has files:
woltspace.json — it tells you the stack, start command, and keeperSite (wolt/site/) | App (wolts/apps/) | |
|---|---|---|
| Purpose | Your private workspace | Something you ship |
| Visibility | Private to the wolt owner | Can be public |
| Complexity | Static HTML/CSS/JS, lightweight | Own server, deps, manifest |
| Created by | Wolts, freely | User opts in |
| Manifest | None needed | woltspace.json required |
| Example | Personal digest, scratch mockups | Workout tracker, shared tool |