ワンクリックで
worktree-bootstrap
// Create and fully bootstrap a WWV git worktree for isolated feature/debug work. Copies env vars, installs deps, generates Prisma client, and verifies the dev server boots before reporting ready.
// Create and fully bootstrap a WWV git worktree for isolated feature/debug work. Copies env vars, installs deps, generates Prisma client, and verifies the dev server boots before reporting ready.
Use when creating a new plugin, adding a new data source, or debugging missing plugin data in the WorldWideView project. Triggers on seeder creation, WebSocket streaming issues, plugin registration failures, manifest validation errors, GeoEntity rendering problems, or data engine integration
End-to-end pipeline that takes a WorldWideView plugin from idea to npm-published and cleaned up. Conducts an isolated worktree + scaffold, GSD research/plan/build/UAT, dual-repo PRs (plugin + seeder), npm publish, and teardown, with user gates only at plan approval, UAT sign-off, npm publish, and teardown. Use when the user says "/plugin-new", "new plugin", "build a plugin end to end", "ship a plugin", or "run the plugin pipeline".
Post-merge lifecycle cleanup. Investigates the full state first, presents one decision summary, then executes after user approval. Commits leftover artifacts, deletes the session plan file, archives the worktree's isolated .planning, and delegates worktree removal to the worktree-manager agent. Pairs with branch-finisher as the closing bookend of a feature branch.
User-triggered only. Invoke when the user explicitly runs /full-manual-e2e, or when /gsd:progress routes to manual verification. Do NOT auto-activate. Full WWV ecosystem E2E test script covering 3-server startup on https://wwv.local, chrome-devtools MCP browser driving, and 7-step auth+install validation flow.
Invoke when the user asks to "check history", "recall context", "what did we work on", "load prior context", "what's the background on X", "remind me where we left off", or any similar request to surface prior session work. Also invoke proactively at the start of a session continuation when the user references past work that isn't fully described in the current conversation. Uses observation history, context-mode index, and memory files to reconstruct relevant prior state.
Use when moving a WorldWideView plugin from packages/ to local-plugins/ (the wwv-plugins community repo clone), converting legacy plugins to the new Engine & Payload architecture, or when a plugin hardcodes engine URLs, bundles Node.js built-ins, or uses import.meta.url for file paths inside Docker containers
| name | worktree-bootstrap |
| description | Create and fully bootstrap a WWV git worktree for isolated feature/debug work. Copies env vars, installs deps, generates Prisma client, and verifies the dev server boots before reporting ready. |
Use this skill when creating a new worktree for isolated debugging or feature work. Eliminates the repeated "missing .env.local" / "Prisma client not generated" failures.
From C:\dev\wwv\worldwideview\:
git-wt switch --create <branch-name> --yes
This places the worktree at C:\dev\wwv\worldwideview.<branch-name>\.
.env contains shared secrets (AUTH_SECRET, DATABASE_URL, etc.) that are gitignored and not present in new worktrees. Copy it:
Copy-Item C:\dev\wwv\worldwideview\.env C:\dev\wwv\worldwideview.<branch-name>\.env
Verify required vars are present:
Select-String -Path C:\dev\wwv\worldwideview.<branch-name>\.env -Pattern "^AUTH_SECRET=|^DATABASE_URL="
If you need worktree-specific overrides (different port, DB name, feature flags), create a .env.local alongside it - Next.js loads .env.local on top of .env.
Both must match. If either is missing, copy from a teammate or the main .env.local.
Set-Location C:\dev\wwv\worldwideview.<branch-name>
pnpm install
npx prisma generate
.planningEach worktree gets its OWN real .planning directory, never a junction to the shared root. This keeps phases and STATE private per worktree so simultaneous sessions never bleed into each other.
$wt = "C:\dev\wwv\worldwideview.<branch-name>"
New-Item -ItemType Directory -Force -Path "$wt\.planning\phases", "$wt\.planning\debug", "$wt\.planning\surveys" | Out-Null
Copy-Item C:\dev\wwv\.planning\config.json "$wt\.planning\config.json" -Force
Then add three files in $wt\.planning\:
WORKSPACE.md (manifest: branch, repo, "real isolated dir" note)STATE.md (fresh GSD state: milestone: none, status: idle)SHARED-DOCS.md (pointer to the shared cross-feature docs)Quickest way is to copy these three from an existing isolated worktree and edit the branch/feature name:
Copy-Item C:\dev\wwv\worldwideview.test-sandbox\.planning\WORKSPACE.md, C:\dev\wwv\worldwideview.test-sandbox\.planning\STATE.md, C:\dev\wwv\worldwideview.test-sandbox\.planning\SHARED-DOCS.md "$wt\.planning\"
NEVER create .planning as a junction. The shared root C:\dev\wwv\.planning holds ONLY cross-feature docs (ROADMAP, MILESTONES, research, PROJECT, REQUIREMENTS).
So GSD skills can find cross-feature docs without duplicating them, add to the worktree's .env.local:
WWV_SHARED_PLANNING=C:/dev/wwv/.planning
If the branch is behind main:
git merge main
# or
git rebase main
pnpm dev
Watch for the "Ready" line. If it fails, check:
docker compose up -dnetstat -ano | Select-String ":3000"Once the dev server returns HTTP 200 on http://localhost:3000, the worktree is ready for use.
Each worktree owns a real, isolated .planning directory (created in Step 5). It is NOT a junction and NOT shared. Phases and STATE.md are private to the worktree, so two simultaneous sessions on different features never see each other's phases.
This replaces the older "one .planning branch per worktree" model (which relied on .planning being a git repo with a SessionStart/post-checkout hook switching its branch). That model could not isolate simultaneous sessions: all worktrees shared one physical .planning HEAD, so whichever session ran its hook last won and the others silently read the wrong feature's phases. The per-worktree real-directory model fixes that.
ROADMAP, MILESTONES, research/, PROJECT, REQUIREMENTS stay authoritative at the shared root C:\dev\wwv\.planning. Each worktree references them via the WWV_SHARED_PLANNING env var (Step 6) instead of duplicating them. See SHARED-DOCS.md in any worktree's .planning.
If you find a worktree whose .planning is still a junction (created before the migration), the planning-sync.sh SessionStart hook converts it into a real isolated directory automatically on the next session open.
When done, use /branch-cleanup. It archives this worktree's real .planning to the shared archive first, then removes the worktree via the worktree-manager agent. Never rm -rf a worktree (it orphans the Docker volume). For a manual teardown:
Set-Location C:\dev\wwv\worldwideview
git-wt remove