
Worktree Ux Pr
- 2 installs
- 29 repo stars
- Updated March 27, 2026
- different-ai/openwork-hub
Automates the worktree UX PR flow: rebase against origin/dev, verify via Chrome MCP, upload screenshots, and comment evidence on the PR.
About
Rebases per-task worktrees on origin/dev, verifies the changed UI surface via Chrome MCP, and attaches screenshot evidence to the PR via upload and comment scripts. A developer uses it for one-PR-per-worktree UX changes with screenshot proof.
- rebase-worktrees.sh plus force-push on history change
- Catbox upload and PR comment scripts for evidence
Worktree Ux Pr by the numbers
- 2 all-time installs (skills.sh)
- Ranked #498 of 733 Git & Pull Requests skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/different-ai/openwork-hub --skill worktree-ux-prAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 29 |
| Last updated | March 27, 2026 |
| Repository | different-ai/openwork-hub ↗ |
What it does
Automates the worktree UX PR flow: rebase against origin/dev, verify via Chrome MCP, upload screenshots, and comment evidence on the PR.
Files
Quick Usage (Already Configured)
1) Sync repo and rebase worktrees
scripts/rebase-worktrees.sh ux-improvement-01 ux-improvement-02Worktrees are expected under ./_worktrees at the enterprise root (override with WORKTREE_BASE).
2) Start UI + headless (optional)
scripts/start-ui.sh
scripts/start-headless.sh3) Capture evidence
- Use Chrome MCP to open the UI and navigate to the changed surface.
- Take a screenshot and save to
/tmp.
4) Upload screenshot and comment on PR
scripts/upload-catbox.sh /tmp/your-screenshot.jpg
scripts/comment-pr.sh 414 "Screenshot: https://files.catbox.moe/xyz.jpg"What This Skill Does
- Ensures worktrees are rebased on
origin/devand force-pushed when history changes. - Guides Chrome MCP verification and screenshot capture.
- Provides a simple upload + PR comment workflow for evidence.
- Infers behavior based on available config in
.envand falls back to safe defaults.
Related skills
- For creating worktrees and regular commits, use
skills/worktree-workflow/SKILL.md. - For UI setup and verification, use
skills/openwork-testability/SKILL.mdandskills/openwork-chrome-mcp-testing/SKILL.md.
Scripts
scripts/rebase-worktrees.sh: Rebase each worktree onorigin/devand force-push.scripts/start-ui.sh: Start the OpenWork UI dev server.scripts/start-headless.sh: Start headless OpenWork server (optional for remote behavior).scripts/upload-catbox.sh: Upload a screenshot and return a public URL.scripts/comment-pr.sh: Comment on a PR with a screenshot URL.
Common Gotchas
- If headless fails with a version mismatch, rebuild the server binary via:
pnpm --filter openwork-server build:bin
- If Chrome MCP cannot create a session, ensure no conflicting dev servers are running.
- If GitHub comment fails, verify
gh auth statusand that the repo is correct.
First-Time Setup (If Not Configured)
1. Ensure dependencies are installed (pnpm install). 2. Confirm gh auth status is logged in for GitHub comments. 3. Optional: set overrides in .env.example and copy to .env.
Reference
Follow the official OpenCode skills docs: https://opencode.ai/docs/skills/
# Optional overrides for the workflow
REPO_ROOT=/Users/benjaminshafii/openwork-enterprise/_repos/openwork
BASE_BRANCH=dev
WORKTREE_BASE=/Users/benjaminshafii/openwork-enterprise/_repos/openwork/_worktrees
DEV_SERVER_PORT=5173
OPENWORK_HEADLESS_WORKSPACE=/tmp/openwork-headless-test
.env
#!/usr/bin/env bash
set -euo pipefail
if [[ $# -lt 2 ]]; then
echo "Usage: $0 <pr-number> <comment-body>" >&2
exit 1
fi
PR_NUMBER="$1"
shift
COMMENT_BODY="$*"
gh pr comment "$PR_NUMBER" -R different-ai/openwork --body "$COMMENT_BODY"
#!/usr/bin/env bash
set -euo pipefail
if [[ $# -lt 1 ]]; then
echo "Usage: $0 <worktree-name> [worktree-name ...]" >&2
exit 1
fi
REPO_ROOT="${REPO_ROOT:-/Users/benjaminshafii/openwork-enterprise/_repos/openwork}"
BASE_BRANCH="${BASE_BRANCH:-dev}"
WORKTREE_BASE="${WORKTREE_BASE:-$REPO_ROOT/_worktrees}"
cd "$REPO_ROOT"
git fetch origin
for WT in "$@"; do
WT_PATH="$WORKTREE_BASE/$WT"
if [[ ! -d "$WT_PATH" ]]; then
echo "Missing worktree: $WT_PATH" >&2
exit 1
fi
echo "== Rebase $WT =="
git -C "$WT_PATH" rebase "origin/$BASE_BRANCH"
git -C "$WT_PATH" push --force-with-lease
echo
done
#!/usr/bin/env bash
set -euo pipefail
REPO_ROOT="${REPO_ROOT:-/Users/benjaminshafii/openwork-enterprise/_repos/openwork}"
WORKSPACE_PATH="${OPENWORK_HEADLESS_WORKSPACE:-/tmp/openwork-headless-test}"
cd "$REPO_ROOT"
pnpm --filter openwork-server build:bin
pnpm --filter openwrk dev -- start \
--workspace "$WORKSPACE_PATH" \
--allow-external \
--openwork-server-bin "$REPO_ROOT/packages/server/dist/bin/openwork-server" \
--no-owpenbot \
> /tmp/openwrk-headless.log 2>&1 &
echo "Headless OpenWork started. Logs: /tmp/openwrk-headless.log"
#!/usr/bin/env bash
set -euo pipefail
REPO_ROOT="${REPO_ROOT:-/Users/benjaminshafii/openwork-enterprise/_repos/openwork}"
DEV_SERVER_PORT="${DEV_SERVER_PORT:-5173}"
cd "$REPO_ROOT"
if [[ ! -d "node_modules" ]]; then
pnpm install
fi
pnpm --filter @different-ai/openwork-ui dev --host 127.0.0.1 --port "$DEV_SERVER_PORT" \
> /tmp/openwork-dev-web.log 2>&1 &
echo "Vite dev server started on http://127.0.0.1:$DEV_SERVER_PORT"
#!/usr/bin/env bash
set -euo pipefail
if [[ $# -ne 1 ]]; then
echo "Usage: $0 <image-path>" >&2
exit 1
fi
IMAGE="$1"
if [[ ! -f "$IMAGE" ]]; then
echo "File not found: $IMAGE" >&2
exit 1
fi
curl -s -F "reqtype=fileupload" -F "fileToUpload=@$IMAGE" https://catbox.moe/user/api.php