preview

$npx mdskill add tobihagemann/turbo/preview

Bring up and launch the project's live app for user preview

  • Determine what to preview based on user input, PR details, conversation context, or app-level discovery.
  • Use a specific project skill or MCP tool if available; otherwise, start the dev server for web apps.
  • Launch the app and present it to the user so they can test the change firsthand.
  • Deliver the running app directly to the user via their preferred method (e.g., local development server, containerized environment).

SKILL.md

.github/skills/previewView on GitHub ↗
---
name: preview
description: "Stand up the project's live app and hand it to the user to try a change firsthand, then gate on their verdict before continuing. Use when the user asks to \"preview the change\", \"let me try it\", \"spin up the app so I can test it\", \"set it up so I can poke at it\", or before finalizing a UI/UX change that needs human eyes."
---

# Preview

Bring up the running app and let the user drive it themselves to judge the change, then act on their verdict.

## Step 1: Determine Scope

Resolve what to preview using the first match:

1. **User-specified** — the user says what to look at. Use that.
2. **PR** — a PR URL or number is provided. Fetch its details and read the changed code.
3. **Conversation context** — prior conversation contains recent work. Extract what changed, where it lives, and the expected behavior.
4. **App-level discovery** — fresh context with no prior work. Examine entry points, routes, and the README to identify the app's core user-facing flows.

If the resolved scope has no user-visible surface to try (a CLI-only change, a library with no entry point, backend work with no UI to look at), present this message: "Nothing to preview — <one-line reason>." Then use the TaskList tool and proceed to any remaining task.

## Step 2: Determine Launch Approach

Check for a project-specific skill or MCP tool that launches the app, and use it if present. Otherwise use the fallback for the surface type:

- **Web app** → start the dev server; the access point is the local URL and port
- **Desktop/native app** → build and launch the app so its window is open

## Step 3: Bring Up the Stack

Start backend services and frontend together — a frontend-only change still needs the backend running to be exercised. Build first if the project requires a build step.

Start long-running processes with the Bash tool (`run_in_background: true`) and wait until each reports ready. Tail their logs with the Monitor tool so backend errors and warnings surface while the user is trying the app.

If a required service cannot be stood up in this session (missing auth provider, external dependency, seed data), or a process fails to start or never reports ready, use `AskUserQuestion` to surface the blocker and let the user choose how to proceed.

## Step 4: Point the User at the Running App

Output as text:

- The access point — the local URL and port for a web app, or confirmation that the window is open for a native app
- What changed and where to look
- Any specific interaction worth checking

## Step 5: Verdict Gate

Use `AskUserQuestion` to ask the user for their verdict after they have tried the app. Three options, with keeping the app running as the default:

- **Looks good, keep it running** — leave every process this skill started running so the user can keep using the app.
- **Looks good, shut it down** — stop every process this skill started.
- **Needs changes** — note what the user wants different, make the change, rebuild or refresh the running app so it is live, then repeat this step's gate. When the user's response or session context surfaces further open issues, resolve every known issue — fixing and re-verifying each — before re-asking the verdict; the gate re-fires only once no known issue remains.

Then use the TaskList tool and proceed to any remaining task.

More from tobihagemann/turbo

SkillDescription
answer-reviewer-questionsFor each reviewer question on a PR, recall implementation reasoning and compose a raw answer. Use when the user asks to \"answer reviewer questions\", \"draft answers to PR questions\", or \"explain reviewer questions\".
apply-findingsApply findings by making the suggested code changes. Applies accepted verdicts, escalates ambiguous findings to the user, and offers to note genuine improvements for later. Use when the user asks to \"apply findings\", \"apply fixes\", \"apply suggestions\", \"apply accepted findings\", \"fix the findings\", or \"apply the review results\".
assess-technical-debtAssess project-wide structural technical debt: complexity hotspots, deprecated API usage, duplication clusters, and architecture rot. Ranks findings by impact and refactor effort into a report at .turbo/technical-debt.md. Use when the user asks to \"assess technical debt\", \"find technical debt\", \"review technical debt\", \"what should we refactor\", \"find refactoring candidates\", \"where is the code rot\", or \"what's our worst code\". Analysis-only — does not modify code.
changelog-rulesShared changelog conventions and formatting rules referenced by /create-changelog and /update-changelog. Not typically invoked directly.
claude-printRun a non-interactive Claude Code print-mode call from Codex. Use when the user asks to \"claude print\", \"ask claude\", \"run claude\", \"consult claude\", or when a Codex Turbo skill needs Claude as an independent peer reviewer.
code-styleEnforce mirror, reuse, and symmetry principles to keep new code consistent with surrounding code. Use when writing new code in an existing codebase, adding new features, refactoring, or making any code changes.
codex-execRun autonomous task execution using the codex CLI. Use when the user asks to \"codex exec\", \"run codex exec\", \"execute a task with codex\", or \"delegate to codex\".
commit-rulesShared commit message rules and technical constraints referenced by /stage-commit and /commit-staged. Not typically invoked directly.
commit-staged-pushCommit already-staged changes and push in one step. Use when the user asks to \"commit and push staged changes\", \"commit and push what's staged\", or \"commit staged and push\".
consult-claudeConsult Claude Code for second opinions, brainstorming, or difficult debugging from Codex. Use when the user asks to \"consult claude\", \"ask claude\", \"get claude's opinion\", \"brainstorm with claude\", or \"discuss with claude\".