Screenshot a running Phoenix feature and attach images to a GitHub PR. Builds the frontend, starts Phoenix with env vars, captures browser screenshots, and attaches them to the PR body with `gh pr edit --attach`.
65
82%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Capture screenshots of the Phoenix UI to visually document a feature in a pull request. This skill handles the end-to-end workflow: build, launch, screenshot, upload, and attach to PR.
gh CLI 2.102 or later (for --attach), authenticated with the Arize-ai/phoenix repopnpm and uv available for building and running PhoenixThe Phoenix backend serves the built frontend from src/phoenix/server/static/. Build it from the js/app/ directory:
cd <repo-root>/app
pnpm install # only if node_modules is missing
pnpm run buildThis compiles the React app and copies static assets into the Python server's static directory. Without this step, page routes like /playground return 404.
Start the Phoenix backend with any env vars the feature requires. Always use a fresh working directory to avoid DB migration conflicts in worktrees:
PHOENIX_PORT=6007 PHOENIX_WORKING_DIR=/tmp/phoenix-screenshot-demo <OTHER_ENV_VARS> uv run phoenix serve &Key points:
PHOENIX_PORT (not --port) to set the port — the CLI doesn't accept a port flagPHOENIX_WORKING_DIR so you don't collide with an existing DB that may have newer migrationssleep 10 && curl -s -o /dev/null -w "%{http_code}" http://localhost:6007/playground should return 200/tmp/phoenix-*.log if it fails — common issues are migration errors (use a fresh working dir) or port conflictsUse the available browser tooling to open http://localhost:6007/playground (or the relevant feature page), interact with the UI to show the feature, and save screenshots locally.
gh pr edit --attach uploads an image or video to GitHub and rewrites any ./file reference in the
body to the hosted URL. Name files <PR_NUMBER>-<descriptive-name>.png (e.g.
11986-playground-loaded.png). Read the current body first so nothing is lost:
gh pr view <PR_NUMBER> --json body -q .body > body.md
# Insert the media under the What sentence, with a bold caption stating what to notice:
# **<what to notice>**
#
# 
gh pr edit <PR_NUMBER> --body-file body.md --attach './<PR_NUMBER>-<name>.png#<alt text>'Run it from the directory holding the files, and pass -R Arize-ai/phoenix when that directory is
not a git checkout. phoenix-pr-description allows one media item, so for several states prefer a
single GIF or video over a series of stills.
# Kill the Phoenix server
kill <PID>Close the browser session created for the screenshots.
Read the body into a file as in Step 4, remove the caption and image reference, then apply it with gh pr edit <PR_NUMBER> --body-file body.md.
Arize-ai/phoenix
8ac3caf
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.