fetch-campaign
Fetch a campaign from the Supabase DB and save as local JSON. Use when the user asks to load, download, or fetch a campaign from the database.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Fetch a campaign from the Supabase DB and save as local JSON. Use when the user asks to load, download, or fetch a campaign from the database.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Take a set of local feature branches/worktrees all the way to merged PRs — discover unmerged work, fix commit-time hygiene, push, raise PRs, watch CI, auto-fix mechanical failures, merge on green, and cascade-rebase the rest. Use when the user says "shepherd PRs" or wants several branches driven to merge autonomously.
Read BEFORE invoking `playwright test` in any form, for any reason — running e2e, visual regression, room snapshots, or verifying a change 'via e2e'. Covers required project scoping (chromium-desktop, matching CI), the sandbox browser-build bridge, and the pnpm webServer failure. Also load on these failure signatures: every test failing at browserType.launch, 'Executable doesn't exist at /opt/pw-browsers/...', or 'Process from config.webServer was not able to start'.
Run the true-site-size GitHub Action locally via `act` inside the Claude Code web sandbox, to measure the game/editor cold-load journey byte cost without a CI round-trip. Use when asked to measure or verify build/wire size, or to check a byte-saving change, in the sandbox.
Drive the Head over Heels remake's UI via the chrome-devtools MCP. Use this skill when the user asks for browser automation, capturing localStorage, dispatching game actions, or anything that involves driving the running game on localhost.
Run Docker — and tools that need it, like `act` (local GitHub Actions) — inside the Claude Code web sandbox, where image pulls and in-container networking collide with the egress proxy. Use when `docker pull` returns 403 on image layers, when a container can't reach the network, or when running `act`/CI-in-docker locally (e.g. the `act-true-site-size.sh` script).
Edit the BlockStack spritesheet — its IFF source of truth, image layout and cell grid, palette and two-tone colour rules, the iff→webp conversion pipeline, and how to hand-edit in DPaint/pyDPainter or bake webp-only art back into the IFF. Use when adding or changing sprites, fixing sprite art, or reconciling the IFF and webp.
| name | fetch-campaign |
| description | Fetch a campaign from the Supabase DB and save as local JSON. Use when the user asks to load, download, or fetch a campaign from the database. |
eval "$(fnm env)" && fnm use && pnpm --silent exec tsx scripts/fetchCampaign.ts <campaignName> [userId]
The default user ID is 2924c962-99f1-4dd2-9b9c-fef832dc991b (Jim's account). Pass a different user ID as the second argument if needed.
Output is pure JSON on stdout — redirect to a file or pipe to jq. The --silent is required: without it, pnpm's cold-start reporter prints a banner to stdout that corrupts the JSON. It must come before exec (pnpm exec --silent is parsed as a command and fails).
Sequel campaigns are named sequel_XX where XX is the release number. To know the number, read src/gameInfo.ts or see where it is loaded from in the
select which game menu to start a new game on the sequel campaign.
# fetch Jim's campaign to a file (replace XX with the next release)
pnpm --silent exec tsx scripts/fetchCampaign.ts sequel_XX > /tmp/sequel_XX.json
# fetch another user's campaign
pnpm --silent exec tsx scripts/fetchCampaign.ts my_campaign abc123-def456 > /tmp/my_campaign.json
# pipe to jq to inspect a specific room (replace XX with the next release)
pnpm --silent exec tsx scripts/fetchCampaign.ts sequel_XX | jq '.rooms["head_homers_jump"].meta.subRooms'
The script calls the get_latest_campaign Supabase RPC, which returns a gzip+base64 encoded blob. It decodes with js-base64 and node:zlib gunzip, then prints the parsed JSON to stdout.