一键导入
ui-review
Capture screenshots of the thurbox TUI across its screens and panels, then generate an HTML report with UI/UX feedback. Run from the thurbox repo.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Capture screenshots of the thurbox TUI across its screens and panels, then generate an HTML report with UI/UX feedback. Run from the thurbox repo.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Refactor the changes made in this session, ship them as a PR with auto-merge, then monitor CI and auto-fix failures until merged. Scopes itself to the repos this session actually worked in.
Refactor the changes made in this session, ship them as a PR with auto-merge, then monitor CI and auto-fix failures until merged. Scopes itself to the repos this session actually worked in.
| name | ui-review |
| description | Capture screenshots of the thurbox TUI across its screens and panels, then generate an HTML report with UI/UX feedback. Run from the thurbox repo. |
| user-invocable | true |
| allowed-tools | Read, Write, Bash, Glob, Skill |
This skill drives the real thurbox TUI inside an isolated, throwaway environment, takes a PNG screenshot of each major screen/panel, then has Claude look at every screenshot and write a self-contained HTML report with UI/UX feedback.
It reuses the proven isolation + seeding model from scripts/demo/record.sh, but
swaps VHS video output for VHS Screenshot directives. Nothing it does touches your
real thurbox sessions, tmux server, or agent accounts — everything runs against the
thurbox-dev dev build in a mktemp sandbox that is torn down on exit.
Run this from the thurbox repo root (or any subdir of it). The output lands in
target/ui-review/ (git-ignored).
vhs (+ ffmpeg + ttyd), sqlite3, cargo, git, tmux. The capture script
preflights these and fails fast with a clear message if any are missing. Real agent
CLIs (claude/codex/antigravity/opencode) are optional — if none are installed
the script registers a stub agent so every panel still renders.
Resolve the skill directory and run the capture script. It builds the dev binaries,
sets up the sandbox, seeds sessions/tasks/an automation, and runs VHS to emit one PNG
per UI state plus a manifest.json describing them.
SKILL_DIR="$(cd "$(dirname "$(readlink -f .claude/skills/ui-review/SKILL.md)")" && pwd)"
# Default output dir is <repo>/target/ui-review/screenshots. Override with arg 1.
# Optional flags: --theme <thurbox-theme> (default doom), --width N, --height N.
"$SKILL_DIR/scripts/capture.sh"
When the user names a specific theme to review (e.g. "review the Tokyo Night theme"),
pass --theme "Tokyo Night". Valid theme strings are the ones from Ctrl+Y in the
TUI (e.g. doom, Catppuccin Mocha, Tokyo Night, Gruvbox Dark, Catppuccin Latte, …).
On success the script prints the screenshots dir and writes
<dir>/manifest.json — a JSON array of {file, label, screen, keys} objects. Read
it to learn what each PNG depicts.
If VHS fails or a screenshot is missing, report which states were captured and continue the review with whatever PNGs exist — do not silently claim full coverage.
Read manifest.json.
Read each PNG in turn (the Read tool renders the image so you can see the
actual rendered terminal). Look carefully at layout, color, text, borders,
highlighting, and spacing.
For each screen, produce concrete findings. Tag every finding with:
blocker (broken/unusable), warning (notable friction), or
nit (polish);The four review lenses (apply all of them):
Each finding = a short title + 1–2 sentences of explanation + a concrete suggested fix. Be specific and grounded in what the screenshot actually shows; do not invent problems you cannot see.
Cross-screen synthesis: note inconsistencies between panels, navigation friction across the whole flow, and a short ordered list of top recommendations.
By default this skill produces a native page in the project website under
website/docs/ui-review.html, written as an Eleventy content page (front
matter + bare body) that inherits the shared nav, the full _includes/sidebar.njk
menu, and the CSS chrome from the docs.njk layout — so it never drifts from the
other docs pages. The screenshots are copied into website/assets/ui-review/, and
the review-specific widget styles live in website/css/ui-review.css (pulled in
via the page's extraCss). The page is already wired into the shared sidebar's
"Developer" section and a hub card on website/docs/index.html. This is what
publishes to GitHub Pages.
Write your Phase-2 findings to a JSON file (e.g. target/ui-review/findings.json)
matching the schema documented at the top of scripts/build_report.py:
{
"title": "thurbox TUI — UI/UX Review",
"version": "<thurbox --version>", "theme": "Doom",
"generated_at": "<date -u '+%Y-%m-%d %H:%M UTC'>",
"recommendations": ["...top cross-screen recs..."],
"screens": [
{"file": "01-session-list.png", "label": "...", "keys": "launch",
"findings": [{"severity": "warning", "lens": "visual",
"title": "...", "desc": "...", "fix": "..."}]}
]
}
severity ∈ {blocker, warning, nit}, lens ∈ {visual, usability, consistency, accessibility}. Severities/lenses map to the site's CSS color vars automatically.
Build the page:
python3 "$SKILL_DIR/scripts/build_report.py" \
--findings target/ui-review/findings.json \
--shots <screenshots-dir> \
--repo "$(git rev-parse --show-toplevel)"
It copies the PNGs into website/assets/ui-review/, writes the Eleventy content
page website/docs/ui-review.html, and prints the page path. The sidebar entry
(_includes/sidebar.njk "Developer" section) and the index.html hub card are
already in place — the generator never edits other pages, so no per-page wiring
is needed.
Preview locally by building the site (npm ci && npx @11ty/eleventy --serve,
then open the printed URL — a front-matter page won't render if opened directly),
then publish: commit the new/updated website/** files on a branch, push, and
open a PR. The .github/workflows/pages.yml workflow deploys website/ to GitHub
Pages on merge to main. Use the /ship skill (or gh pr create) to open the PR.
If the user explicitly wants a single portable file (e.g. to email) instead of a site
page, fall back to templates/report.html.tmpl: base64-encode each PNG
(base64 -w0 <png>) into <img src="data:image/png;base64,…">, fill {{TITLE}},
{{VERSION}}, {{THEME}}, {{GENERATED_AT}}, {{SUMMARY}}, {{CARDS}} (severity
badge classes .badge.blocker/.warning/.nit, lens tags .lens.<lens>), and write to
target/ui-review/report.html. This file embeds everything and is not part of the
site.
Keep the findings honest and actionable. The goal is a report a maintainer can skim in two minutes and act on.