From shipwright-preview
Starts a local dev server and displays the browser preview URL. Useful when you want to see the app, preview UI changes, or check the running application.
How this skill is triggered — by the user, by Claude, or both
Slash command
/shipwright-preview:previewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Start the development server and show the preview URL so the user can open the app in their browser.
Start the development server and show the preview URL so the user can open the app in their browser.
╔══════════════════════════════════════════════╗
║ SHIPWRIGHT-PREVIEW ║
║ ║
║ Usage: ║
║ /shipwright-preview ║
║ "show me the app" ║
║ "preview" ║
╚══════════════════════════════════════════════╝
Execute these checks in order. Stop at the first failure and help the user fix it.
Check if shipwright_build_config.json exists in the project root and has at least one section with "status": "complete".
If no build config or no complete sections: Tell the user:
"Preview is not available yet. Complete at least one build split first (
/shipwright-build)."
Stop here.
Run the shared environment validator:
uv run "${SHIPWRIGHT_PLUGIN_ROOT}/../../shared/scripts/validate_env.py" \
--project-root ${SHIPWRIGHT_PROJECT_ROOT} \
--phase build
.env.local. Read the error output, identify which variables are missing, and guide them through setting the values.Check if the dev server is already running:
uv run "${SHIPWRIGHT_PLUGIN_ROOT}/../../shared/scripts/dev_server.py" \
status --cwd ${SHIPWRIGHT_PROJECT_ROOT}
Parse the JSON output. If "running": true, skip to Step 5.
Start the dev server using the stack profile:
uv run "${SHIPWRIGHT_PLUGIN_ROOT}/../../shared/scripts/dev_server.py" \
start --profile supabase-nextjs --cwd ${SHIPWRIGHT_PROJECT_ROOT}
Parse the JSON output:
"ready": true → proceed to Step 5"ready": false or error → investigate. Read the server logs, check for port conflicts, missing dependencies, or build errors. Fix the issue and retry. Do not just report the error — help resolve it.Display the preview URL prominently:
┌────────────────────────────────────────────┐
│ Preview running at: │
│ http://localhost:{port} │
│ │
│ Open this URL in your browser. │
│ The server stays running until you stop │
│ it or end the session. │
└────────────────────────────────────────────┘
The port comes from the dev server status output (default: 3000 for supabase-nextjs).
The user can ask to stop the preview at any time in chat (e.g., "stop preview", "kill the server"). When asked:
uv run "${SHIPWRIGHT_PLUGIN_ROOT}/../../shared/scripts/dev_server.py" \
stop --cwd ${SHIPWRIGHT_PROJECT_ROOT}
The dev server also stops automatically when the Claude Code session ends (state file cleanup).
Preview uses the dev_server configuration from the stack profile JSON (shared/profiles/{profile}.json). When adding a new stack profile (e.g., SQLite + Flask, or Postgres + Django), define the dev_server section:
{
"dev_server": {
"command": "npm run dev",
"port": 3000,
"ready_timeout_seconds": 60,
"ready_path": "/"
}
}
The dev_server.py shared script reads this configuration automatically. No changes to the preview plugin are needed for new stacks — only the profile JSON.
Guides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
npx claudepluginhub svenroth-ai/shipwright --plugin shipwright-preview