con un clic
wb-dev
// Start / stop / status of the Typhon Workbench dev servers (Kestrel :5200 + Vite :5173) with file-based PID tracking so state survives across Claude Code sessions
// Start / stop / status of the Typhon Workbench dev servers (Kestrel :5200 + Vite :5173) with file-based PID tracking so state survives across Claude Code sessions
Implement a GitHub issue end-to-end — scope it (whole issue or specific phases), build an acceptance-criteria plan from its design doc, get the plan approved, then develop autonomously with tests and a mandatory code review.
Complete work on a GitHub issue - close issue, update artifacts, prompt for doc updates
Create a GitHub issue and add it to the Typhon dev project
Scaffold a new Workbench panel — full stack (server DTOs/service/controller/tests + client hooks/store/panel/context-menu/tests + wiring + Playwright canary) that compiles on first invocation
Start working on a GitHub issue - updates status, creates branch, verifies design
Run regression benchmarks, track results, and generate trend reports
| name | wb-dev |
| description | Start / stop / status of the Typhon Workbench dev servers (Kestrel :5200 + Vite :5173) with file-based PID tracking so state survives across Claude Code sessions |
| argument-hint | start | stop | status | restart |
Thin wrapper over wb-dev.ps1 at the repo root. The PowerShell script does all the
work in one shot — pre-flight, launch, port-bind wait, state-file write, report.
The previous skill needed 7-9 Bash round-trips per action; this one does 1.
$ARGUMENTS first token determines the action; default is start. Pass --help,
-h, or help to display the script's help block.
Recognized actions: start, stop, reset, status, restart, help.
reset is the state-independent recovery: it kills every lingering Workbench Kestrel/Vite found
by command-line signature (the Typhon.Workbench path) + whoever owns :5200/:5173, then clears the
state file — for when the state went stale or an orphan dotnet watch is holding a port and start
refuses ("port already bound by an untracked process"). Unlike stop, it doesn't rely on tracked PIDs.
Run the PowerShell script with the resolved action via Bash, then display its stdout verbatim:
pwsh -NoProfile -Command './wb-dev.ps1 <action>'
(Fall back to powershell -NoProfile -Command if pwsh isn't on PATH.) Use
-Command (not -File) so the relative ./wb-dev.ps1 resolves against Bash's
working directory — -File on Windows pwsh requires an absolute path. The script
handles state-file reads/writes, port checks, PID tracking, log tailing on
failure, and stale-state warnings on its own. Do not run extra netstat,
taskkill, or state-file manipulation from Bash — the script covers everything
in a single PowerShell session, which is the whole point of consolidating the
workflow into one file.
.claude/state/wb-dev.json (gitignored).claude/state/wb-dev.kestrel{,err}.log, .claude/state/wb-dev.vite{,err}.logShape of the state file (kept simple — no listener-PID tracking; taskkill /T
inside the script cascades from the recorded root PID to its descendants):
{
"kestrelPid": 1234,
"vitePid": 5678,
"startedAt": "2026-05-05T...",
"kestrelLog": "...",
"viteLog": "..."
}
/api/* by hand / testing the dev UI — run /wb-dev status first; if nothing is running, /wb-dev start. Don't launch dotnet watch or npm run dev directly; it leaves untracked processes that clash with future /wb-dev invocations./wb-dev stop. Leaving the servers running between sessions is fine (they hot-reload), but a stale Kestrel will lock Typhon.Workbench.dll and break any subsequent dotnet build tools/Typhon.Workbench.