cherry-regression-test skill
Run 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.
Is the cherry-regression-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-regression-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-regression-test ~/.claude/skills/cherry-regression-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 Regression Test
Run deterministic Playwright E2E tests against one driver-owned Cherry Studio process per platform. The tested product includes Chat, Agents, MCP, Skills, knowledge bases, translation, image generation, and code tools; an LLM test agent does not control the test run.
CI contract
Use .github/workflows/e2e-regression-test.yml as the entry point. It:
- Resolves a trusted branch or release tag.
- Initializes an isolated directory under the GitHub runner temporary folder.
- Installs the application and the code tools under test.
- Launches one owned Electron process with CDP enabled.
- Runs the ten files in tests/e2e/regression/ from simple to complex.
- Continues after a failed phase so later results are still collected.
- Produces English platform and aggregate reports, then enforces the verdict.
- Stops only the Electron process recorded in the isolated run directory.
Do not add an LLM tool loop, MCP control server, turn limit, or a second Electron launch for each test. A restart is allowed only where the case contract explicitly verifies persistence or switches from the clean startup profile to the authenticated shared profile.
Configuration
The workflow reads these repository variables and secrets:
- CHERRYTESTCUSTOMPROVIDERBASE_URL
- CHERRYTESTCUSTOMPROVIDERANTHROPICBASEURL
- CHERRYTESTCUSTOMPROVIDERAPI_KEY
- CHERRYTESTCUSTOMPROVIDERCHAT_MODEL
- CHERRYTESTCUSTOMPROVIDEREMBEDDINGBASEURL
- CHERRYTESTCUSTOMPROVIDEREMBEDDINGAPIKEY
- CHERRYTESTCUSTOMPROVIDEREMBEDDING_MODEL
- CHERRYTESTCHERRYINCHATMODEL
- CHERRYTESTCHERRYINIMAGEMODEL
- CHERRYTESTCHERRYIN_ACCOUNT
- CHERRYTESTCHERRYIN_PASSWORD
The custom chat provider requires both URLs: CHERRYTESTCUSTOMPROVIDERBASEURL fills OpenAI, and CHERRYTESTCUSTOMPROVIDERANTHROPICBASEURL fills Anthropic. Both endpoints share CHERRYTESTCUSTOMPROVIDERAPIKEY.
Chat and embedding providers are independent. Never print literal credentials, write them to fixtures, attach them to Playwright artifacts, or pass them to an unrelated action.
Test organization
Read scenario organization and the controller contract before making changes.
Register each case from the manifest:
test(...caseDefinition('S-01'), async ({ mainWindow }) => {
// Assert the user-visible outcome.
})cases.ts owns case IDs, titles, task tags, phases, and capability requirements. The workflow accepts a task ID and delegates selection to the controller. Prefer accessible roles, labels, placeholders, test IDs, and visible text. Native dialogs and cross-application interactions must use the repository-owned helpers in systemAutomation.ts.
Record assertions in Playwright, not prose. The custom reporter writes case and phase status into run.json and feeds the English Markdown/JUnit reports. The fixture saves failure screenshots. Executor errors and interrupted phases block a passing verdict. Do not enable Playwright Trace for credential-bearing tests because action parameters can expose secrets. A passing result does not depend on a model's judgment.
Focused execution
With an initialized run directory and its owned Electron process running:
pnpm exec tsx scripts/e2e/regression/cli.ts run-phase \
--run-dir /absolute/run-directory --phase 02-basic-featuresThe task selected when initializing the run determines which cases execute. For a Notes-only run, initialize with --task notes. Enumeration is read-only: set CHERRYTESTRUN_DIR to an absolute path, but no initialized run directory or running Electron process is required because --list does not execute fixtures.
CHERRY_TEST_RUN_DIR=/tmp/cherry-regression-list pnpm test:e2e:regression --listDo not call the regression cleanup command for an Electron instance owned by cherry-electron-dev; cleanup is only for an app record created by this driver.
Verification when changing the framework
Run the focused script suite and enumerate Playwright cases:
pnpm exec vitest run --project scripts scripts/e2e/regression
CHERRY_TEST_RUN_DIR=/tmp/cherry-regression-list \
pnpm test:e2e:regression --list
pnpm typecheck:e2e
pnpm test:lintDo not use pnpm test or pnpm build:check for this focused workflow change.
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-pr-testTest 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.
- 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.