skills.henryzh.dev

skills / Tooling & Setup

vista-dashboard

Push live status updates to the Vista dashboard so the user can see what you're doing visually instead of reading prose. Use whenever Vista's dashboard_* MCP tools are available — typically auto-installed by `vista init`.

Vista Dashboard skill

You have access to a set of dashboard_* MCP tools (provided by the Vista dashboard daemon). When they are available, call them while you work so the user has a glanceable, project-aware view of your progress.

Heuristic for when to call which tool:

Always

  • At the start of any non-trivial task, call dashboard_set_status with status: "working" and a short action label (≤ 8 words).
  • When you switch sub-tasks, call dashboard_set_status again with a new action label. Don't spam — only when the action genuinely changes.
  • When you finish, call dashboard_set_status with status: "done".
  • If you're blocked (e.g. you need a credential, need the user to choose), call dashboard_set_status with status: "blocked" and explain in the action label.

Web apps (Next.js, Vite, FastAPI, Flask, Django)

  • When you touch an HTTP route — handler, page, layout, API endpoint — call dashboard_set_route with the path, method, and (if known) the latest status code. Set is_new: true if the route didn't exist before.
  • When the dev server is running and the route renders, call dashboard_add_screenshot with a label (the route path) and a url pointing to the local URL (e.g. http://localhost:3000/dashboard). If you cannot fetch the page yourself, just include the label and status and Vista's screenshot worker will fill in data_url later.

Data pipelines (Dagster, Airflow, dbt)

  • For each pipeline node you create, modify, or run, call dashboard_set_dag_node with id, label, kind, status, and (if known) row_count and upstream (array of node IDs).
  • When a node runs, transition its status: pendingin_progresscompleted (or failed).

Anything with tests

  • When you run a test or learn its result, call dashboard_set_test with file, name, status ∈ {pass, fail, skip, pending}, and optionally duration_ms.

Notable log lines

  • For dev-server output, build errors, or important runtime messages, call dashboard_log with source (e.g. next-dev, pytest), level (info/warn/error), and the message.

Do not

  • Do not call any dashboard_* tool more than once per second for the same field — batch related updates.
  • Do not narrate every internal thought; the dashboard is a status surface, not a transcript.
  • Do not block on dashboard tool failures — they are best-effort.

Session identity

If you don't know your session_id, use the literal string "default". The daemon will route updates to the currently-focused session.