cherryhq/cherry-pr-test
Test Cherry Studio PRs by resolving and checking out a PR, statically inspecting its changes, running interactive UI tests against a safely tracked Electron instance through CDP, producing a structured report, cleaning up only the owned test instance, and restoring the original branch.
npx skills add https://github.com/CherryHQ/cherry-studio --skill cherry-pr-test
Use this workflow for a bounded PR test. Use cherry-electron-dev for ongoing
implementation or debugging in the current checkout.
gh, pnpm, and installed project dependencies.agent-browser for UI control.Electron Instance Management
and select its ephemeral policy.
launch, replacement, shutdown, tracking, and troubleshooting.
$ARGUMENTS may contain a PR number, PR URL, latest/recent, or nothing.
If no PR is specified, list recent PRs and ask the user to choose unless they
requested the latest:
gh pr list --repo CherryHQ/cherry-studio --state open --limit 10 \
--json number,title,author,createdAt,headRefName,changedFiles
Record the current branch for restoration, inspect the PR, then check it out:
git status --short
git branch --show-current
gh pr view <NUMBER> --json title,body,author,headRefName,files
gh pr checkout <NUMBER>
Read the changed files and nearby instructions. Record the exact checked-out
HEAD.
Run static analysis while the app starts when both can proceed independently.
For static analysis:
pnpm typecheck
Also check:
console.log instead of loggerServiceFor Electron:
the checked-out PR HEAD.
ownership. Never reclassify a persistent instance as ephemeral.
ephemeral, agent-owned instance with an isolatedCS_DEV_USER_DATA_SUFFIX, such as PR-<NUMBER>.
pr-test:<NUMBER> launch purpose in
instance.json.
Do not use broad process or port cleanup.
Bind the controller to the exact target returned by the shared reference.
Never navigate to a guessed root URL or select a target by index.
Build test cases from the PR description and changed files:
Consider UI rendering, interactions, persistence, light/dark themes, relevant
window sizes, i18n, empty states, and rapid interaction only when in scope.
Store screenshots and the report under /tmp/pr-<NUMBER>/:
mkdir -p /tmp/pr-<NUMBER>
If an isolated profile shows the migration wizard or splash, follow the shared
troubleshooting guidance and startup logs. Do not reset or force-close data.
Use the shared ephemeral finish procedure. Stop only an instance launched by
this PR-test workflow whose verified record remains ephemeral, agent-owned,
and scoped to pr-test:<NUMBER>. Leave every borrowed instance running. Do not
stop unrelated workspaces or packaged apps.
Restore the branch recorded before checkout. If it no longer exists, resolve
the repository default branch and report the fallback before switching:
git checkout <ORIGINAL_BRANCH>
Save /tmp/pr-<NUMBER>/report.md and show it to the user. Match the report
language to the user's language; the template uses English labels:
# PR #<NUMBER> Test Report
**Title**: <title>
**Author**: @<author>
**Branch**: <branch>
**Changed files**: <count>
## Static Analysis
| Check | Result | Notes |
| --- | --- | --- |
| TypeScript typecheck | ✅/❌ | ... |
| Blocked-file check | ✅/⚠️ | ... |
| Logging, i18n, and types | ✅/❌ | ... |
## UI Tests
### <Test Case>
<scenario, evidence, and result>

## Findings
<findings or none>
## Conclusion
- Total findings: N
- Recommendation: APPROVE / REQUEST_CHANGES / COMMENT
Do not post the report or submit a GitHub review unless the user explicitly
asks.
Take cherryhq/cherry-pr-test from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.