cherry-pr-test skill
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.
Is the cherry-pr-test skill safe?
Clean: nothing in its files matched our rules. We read 1 file in the folder on 2026-09-28.
No findings.
Install the cherry-pr-test skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.
git clone --depth 1 https://github.com/CherryHQ/cherry-studio.git /tmp/cherry-studio mkdir -p ~/.claude/skills cp -r /tmp/cherry-studio/.agents/skills/cherry-pr-test ~/.claude/skills/cherry-pr-test
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
Cherry Studio PR Test
Use this workflow for a bounded PR test. Use cherry-electron-dev for ongoing implementation or debugging in the current checkout.
Prerequisites and safety
Electron Instance Management and select its ephemeral policy.
- Require authenticated gh, pnpm, and installed project dependencies.
- Use Playwright/CDP or optional agent-browser for UI control.
- Before touching Electron, read
launch, replacement, shutdown, tracking, and troubleshooting.
- Treat that reference as the only authority for discovery, target selection,
- Never discard local changes. Stop and ask if checkout would overwrite them.
- Show the report before posting it anywhere.
$ARGUMENTS may contain a PR number, PR URL, latest/recent, or nothing.
Workflow
1. Resolve and inspect the PR
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,changedFilesRecord 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.
2. Analyze and start the app
Run static analysis while the app starts when both can proceed independently.
For static analysis:
pnpm typecheckAlso check:
- blocked or deprecated v1/v2-refactor files
- hardcoded user-visible strings instead of i18n
- console.log instead of loggerService
- missing types on new public interfaces
For Electron:
the checked-out PR HEAD.
- Use the shared reference to verify existing instances.
- Reuse only an instance from this workspace whose recorded launch HEAD equals
ownership. Never reclassify a persistent instance as ephemeral.
- When reusing one, mark it borrowed and preserve its existing policy and
CSDEVUSERDATASUFFIX, such as PR-.
- Otherwise gracefully replace only the verified same-workspace instance.
- Launch an ephemeral, agent-owned instance with an isolated
pr-test: launch purpose in instance.json.
- Keep its managed terminal/session, PIDs, ports, log, exact target, and
Do not use broad process or port cleanup.
3. Run interactive tests
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:
- Capture the initial state.
- Inspect interactive elements with the available CDP controller.
- Exercise the changed behavior.
- Capture the result and verify relevant persisted state.
- Repeat edge cases justified by the change.
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-/:
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.
4. Clean up and restore
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:. 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>5. Report
Save /tmp/pr-/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 / COMMENTDo not post the report or submit a GitHub review unless the user explicitly asks.
More skills from CherryHQ/cherry-studio
- Acherry-assistant-guide从当前安装包查询 Cherry Studio 产品信息并排查运行问题。当用户询问功能、路由、快捷键、Provider、语言、Agent、频道、定时任务、Code CLI、当前版本,或报告运行错误、连接失败、配置异常并需要诊断时触发。
- Acherry-browserInteract with the user's visible Agent browser in Cherry Studio. Use for page navigation, authenticated websites, screenshots, forms, clicks, and browser debugging. Check live browser tools first; browser control requires the Browser setting and an available Agent pane.
- Acherry-electron-devDevelop, fix, and profile Cherry Studio in a tracked Electron instance. Use for everyday implementation, UI and interaction work, bug fixing, runtime debugging, DevTools inspection, lag or jank investigation, CPU and memory monitoring, leak checks, and startup-performance analysis; reuse a verified workspace instance across instructions and launch or replace one only when required.
- Acherry-regression-testRun Cherry Studio critical-path system regression tasks through the repository-owned Playwright E2E workflow. Use for full regression, release acceptance, development-branch system validation, or a named cherry-regression-test task on GitHub-hosted macOS and Windows runners.
- Acherry-skill-marketplace当用户明确要求搜索、安装、查看、卸载或创建 Skill,或内置 Skill / 工具出现能力缺口、无法完成当前任务时触发。通过 `mcp__skills__search_skills` 搜索并用 `mcp__skills__install_skill` 安装;已安装 Skill 的查看和删除通过产品清单导航到 Skills UI;没有合适结果时调用内置 `skill-creator` 创建并验证自定义 Skill,再继续原任务。普通任务仍先尝试内置能力。
- Acherry-studio-feedbackUse when Cherry Studio 用户希望报告、提交或整理 BUG、UI/UX 问题或功能建议,但未明确要求创建 GitHub Issue。
- Acherry-tool-guideCherry Studio first-party tool and bundled-shell routing for general agents. For straightforward local work in shell-capable sessions, run JS/TS with `bun <file>` and one-off JS tools with `bun x`; run Python with `uv run [--with <pkg>] python` and one-off Python CLIs with `uvx`; search with `rg`. Load this guide before changing project dependencies, deciding whether a tool should be ephemeral or reusable, reading or converting local Office/PDF files, coordinating or delegating across Agent Sessions, or using Cherry-owned web/browser, knowledge, persistent memory, schedules/notifications, IM channels, image generation, artifact reporting, managed CLI, skill, or MCP-server-registration capabilities—even if the user names no tool. Consult it before shell/file workarounds; live tool schemas are authoritative.
- Aclaude-automation-recommenderAnalyze a codebase and recommend Claude Code automations (hooks, subagents, skills, plugins, MCP servers). Use when user asks for automation recommendations, wants to optimize their Claude Code setup, mentions improving Claude Code workflows, asks how to first set up Claude Code for a project, or wants to know what Claude Code features they should use.
- Acode-mate-antigravityRuns Antigravity CLI headlessly for repository analysis and coding tasks. Use when the user asks to delegate work to Antigravity CLI or compare its result with another coding agent.
- Acode-mate-claude-codeRuns Claude Code non-interactively for code analysis and implementation tasks. Use when the user asks to delegate repository work to Claude Code or compare its result with another coding agent.
- Acode-mate-codexRuns Codex CLI non-interactively for code analysis and implementation tasks. Use when the user asks to delegate repository work to Codex or obtain a second coding-agent result.
- Acode-mate-deepseek-harnessRuns DeepSeek Harness headlessly for bounded repository tasks. Use when the user asks to delegate analysis or implementation to DeepSeek Harness.