woltspace-update
Update woltspace platform — review incoming changes, warn about breaking changes, and pull with user consent. Use when asked to update woltspace.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Update woltspace platform — review incoming changes, warn about breaking changes, and pull with user consent. Use when asked to update woltspace.
用 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.
Set up a new app from scratch. Use when starting a fresh app — scaffolds the directory, writes woltspace.json, starts the dev server.
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.
| name | woltspace-update |
| description | Update woltspace platform — review incoming changes, warn about breaking changes, and pull with user consent. Use when asked to update woltspace. |
| user_invocable | true |
You are the lodge's gatekeeper for platform updates. Your job: check what's arriving from upstream, translate it into plain language (no git jargon), flag anything that could disrupt the lodge, and only open the gates when the human says go.
Never pull without explicit user confirmation. This is the safety gate — updates can crash the running app.
Before anything else, check if the platform code has been modified inside the container. Wolts or Claude sessions sometimes accidentally edit files in /workspace/woltspace. If there's drift, a pull will fail with merge conflicts.
cd /workspace/woltspace
DRIFT=$(git status --short)
If drift is found:
git status --short
git diff --stat
Categorize the risk:
container/entrypoint.sh, server.js, server/, woltspace → HIGH — platform infrastructurecontainer/bot/, container/creatures/ → MEDIUM — bot/creature codecontainer/skills/, CLAUDE.md, *.md → LOW — skills/docs, likely auto-updatedNotify the user about the drift and ask how to proceed:
If the user wants to save:
cd /workspace/woltspace
git checkout -b backup/pre-update-$(date +%Y%m%d-%H%M%S)
git add -A
git commit -m "pre-update snapshot — local modifications"
git checkout - # return to previous branch
cd /workspace/woltspace
git checkout -- .
git clean -fd
If clean (no drift): proceed to Step 1.
WOLTS_DIR="${WOLTS_DIR:-/workspace/wolts}"
BRANCH=$(cat "$WOLTS_DIR/.space/platform/woltspace-branch" 2>/dev/null || echo "main")
cd /workspace/woltspace
git fetch origin "$BRANCH" --tags
Check if there's actually anything new:
LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse "origin/$BRANCH")
If they match, tell the user they're already up to date and stop.
CURRENT=$(cat /workspace/woltspace/.version 2>/dev/null || echo "v0.0.0")
LATEST_TAG=$(git describe --tags --abbrev=0 origin/$BRANCH 2>/dev/null || echo "untagged")
Parse the version components to determine the bump type:
# Parse current version (strip leading 'v')
CUR="${CURRENT#v}"
CUR_MAJOR=$(echo "$CUR" | cut -d. -f1)
CUR_MINOR=$(echo "$CUR" | cut -d. -f2)
CUR_PATCH=$(echo "$CUR" | cut -d. -f3)
# Parse latest tag
LAT="${LATEST_TAG#v}"
LAT_MAJOR=$(echo "$LAT" | cut -d. -f1)
LAT_MINOR=$(echo "$LAT" | cut -d. -f2)
LAT_PATCH=$(echo "$LAT" | cut -d. -f3)
# Determine bump type
if [ "$LAT_MAJOR" != "$CUR_MAJOR" ]; then
BUMP="major"
elif [ "$LAT_MINOR" != "$CUR_MINOR" ]; then
BUMP="minor"
else
BUMP="patch"
fi
echo "Bump type: $BUMP ($CURRENT → $LATEST_TAG)"
Also check if a migration script exists for the target version:
MIGRATION="/workspace/woltspace/migrations/${LATEST_TAG}.sh"
# We'll check after pulling — the migration ships with the new code
Look at what's incoming:
git log --oneline HEAD..origin/$BRANCH
git diff --stat HEAD..origin/$BRANCH
Read the actual diff for anything that looks like it could break existing behavior. Also read the CHANGELOG.md from the incoming code if it exists:
git show origin/$BRANCH:CHANGELOG.md 2>/dev/null || echo "no changelog"
Focus on:
Tone: lore-flavored, brief by default. Lead with what's cool and new. Only go technical if the user asks or if something could break.
🟢 Patch update available ($CURRENT → $LATEST_TAG) [1-2 sentence lore-flavored summary]. Safe to pull — no migration needed. Want me to bring it in?
🟡 Minor update available ($CURRENT → $LATEST_TAG) — migration required [summary of what's new]. This one needs a migration step: [plain-English description of what changes and what the user needs to do]. Want details, or proceed?
🔴 Major update available ($CURRENT → $LATEST_TAG) — significant changes [summary]. This is a big one: [description of what's changing]. I'd recommend reading the full changelog before pulling. Want me to walk through it?
Rules:
Use AskUserQuestion to wait for the user's explicit yes/no. Do not skip this. Do not assume consent.
Accept any of: "yes", "pull it", "go ahead", "do it", "yes pull", "/woltspace-update confirm".
Once confirmed:
cd /workspace/woltspace && git pull origin "$BRANCH"
# Stamp version (prefer tag if HEAD is tagged)
NEW_VERSION=$(git describe --tags --exact-match 2>/dev/null || git rev-parse --short HEAD)
mkdir -p "$WOLTS_DIR/.space/platform"
echo "$NEW_VERSION" > "$WOLTS_DIR/.space/platform/woltspace-version"
echo "$BRANCH" > "$WOLTS_DIR/.space/platform/woltspace-branch"
# Also update the .version file used at image build time
echo "$NEW_VERSION" > /workspace/woltspace/.version
After pulling, always sync Python dependencies. New code may import packages that aren't installed yet — skipping this will crash the server or bot on next reload.
cd /workspace/woltspace
uv sync --project server 2>&1
uv sync --project container/bot 2>&1
This is fast (no-ops if deps haven't changed) and safe to run every time.
After pulling, re-sync platform skills and the CLAUDE.md platform section to all wolts:
python3 -c "
import sys; sys.path.insert(0, '/workspace/woltspace/container/lib')
from pathlib import Path
from entrypoint_setup import sync_all_wolt_skills, sync_claude_md_platform_section
woltspace = Path('/workspace/woltspace')
wolts = Path('${WOLTS_DIR:-/workspace/wolts}')
sync_all_wolt_skills(woltspace, wolts)
sync_claude_md_platform_section(wolts, woltspace)
print('skills and CLAUDE.md synced to all wolts')
"
This ensures all wolts get the latest woltspace-* skills and platform instructions immediately — no container restart needed.
After pulling, check for a migration script:
MIGRATION="/workspace/woltspace/migrations/${NEW_VERSION}.sh"
if [ -f "$MIGRATION" ]; then
echo "Migration script found: $MIGRATION"
cat "$MIGRATION"
fi
For patch bumps: skip migration entirely — just do a quick sanity check:
curl -s http://localhost:7777/health or similar)For minor/major bumps: if a migration script exists, show it to the user and run it with their confirmation. The script handles the mechanical parts (moving files, updating configs). Flag anything that needs manual action (new env vars, etc.).
git log --oneline ORIG_HEAD..HEAD
Notify the user: what landed, the version, and any action items.
Action items to flag:
VAR_NAME to your .env before restarting"/workspace/woltspace is a git clone inside the container — git pull workswoltspace rebuild from the host will re-bake the image for future cold starts, but isn't required for the current session--reload so Python server changes auto-apply/woltspace-update confirm or already said "yes, pull it", skip straight to Step 5