cherry-pr-test について
cherry-pr-test は Cherry Studio の開発者向けに、対象を限定して PR をテストするスキルです。コード確認、静的解析、Electron の操作テストを行い、インスタンスを管理してレポートを作成します。
主な機能
- 01PR の変更内容と指示を確認
- 02pnpm typecheck による静的解析
- 03CDP を使った UI 操作テスト
- 04一時 Electron インスタンスの分離と記録
- 05ブランチ復元とテストレポート作成
活用シーン
- 01PR で変更された UI 動作の検証
- 02型とコーディング規約の確認
- 03操作と永続化状態のテスト
- 04レビュー用の結果整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cherryhq/ cherry-studio --skill cherry-pr-testインストール後、Claude Code で/cherry-pr-testを入力して読み込まれたか確認します。
詳細
Cherry Studio PR テスト
このワークフローは、範囲を限定した PR テストに使用します。現在のチェックアウトで継続的な実装やデバッグを行う場合は、cherry-electron-dev を使用してください。
前提条件と安全性
- 認証済みの
gh、pnpm、およびインストール済みのプロジェクト依存関係が必要です。 - UI 操作には Playwright/CDP またはオプションの
agent-browserを使用します。 - Electron に触れる前に、
Electron インスタンス管理
を読み、その
ephemeralポリシーを選択してください。 - 検出、ターゲットの選択、起動、置き換え、シャットダウン、追跡、トラブルシューティングについては、そのリファレンスのみを唯一の拠り所としてください。
- ローカルの変更を決して破棄しないでください。チェックアウトによってそれらが上書きされる場合は、停止して確認してください。
- レポートはどこかに投稿する前に表示してください。
$ARGUMENTS には、PR 番号、PR URL、latest/recent、または何も含まれない場合があります。
ワークフロー
1. PR を解決して調査する
PR が指定されていない場合は、直近の PR を一覧表示し、ユーザーが最新を要求していない限り、ユーザーに選択を求めてください:
gh pr list --repo CherryHQ/cherry-studio --state open --limit 10 \
--json number,title,author,createdAt,headRefName,changedFiles
復元用に現在のブランチを記録し、PR を調査してから、それをチェックアウトします:
git status --short
git branch --show-current
gh pr view <NUMBER> --json title,body,author,headRefName,files
gh pr checkout <NUMBER>
変更されたファイルと関連する手順を読みます。チェックアウトされた正確な HEAD を記録します。
2. 分析してアプリを起動する
両方を独立して進められる場合は、アプリの起動中に静的解析を実行します。
静的解析の場合:
pnpm typecheck
以下も確認してください:
- ブロックされている、または非推奨の v1/v2-refactor ファイル
- i18n ではなくハードコードされたユーザーに表示される文字列
loggerServiceではなくconsole.log- 新しいパブリックインターフェースにおける型の欠落
Electron の場合:
- 共有リファレンスを使用して、既存のインスタンスを確認します。
- このワークスペースのインスタンスのうち、記録された起動 HEAD がチェックアウトされた PR HEAD と等しいもののみを再利用します。
- 再利用する場合は、それを借用としてマークし、既存のポリシーと所有権を保持します。永続インスタンスを ephemeral として再分類しないでください。
- それ以外の場合は、検証済みの同一ワークスペースのインスタンスのみを穏当に置き換えます。
- 分離された
CS_DEV_USER_DATA_SUFFIX(たとえばPR-<NUMBER>)を指定して、ephemeralでエージェントが所有するインスタンスを起動します。 - その管理対象のターミナル/セッション、PID、ポート、ログ、正確なターゲット、および
pr-test:<NUMBER>の起動目的をinstance.jsonに保持します。
広範なプロセスやポートのクリーンアップは使用しないでください。
3. インタラクティブテストを実行する
コントローラーを、共有リファレンスから返された正確なターゲットにバインドします。 推測されたルート URL に移動したり、インデックスでターゲットを選択したりしないでください。
PR の説明と変更されたファイルからテストケースを構築します:
- 初期状態をキャプチャします。
- 利用可能な CDP コントローラーでインタラクティブな要素を調査します。
- 変更された動作を実行します。
- 結果をキャプチャし、関連する永続化された状態を検証します。
- 変更によって正当化されるエッジケースを繰り返します。
UI レンダリング、インタラクション、永続化、ライト/ダークテーマ、関連する ウィンドウサイズ、i18n、空の状態、および迅速なインタラクションは、対象範囲内である場合にのみ考慮してください。
スクリーンショットとレポートを /tmp/pr-<NUMBER>/ の下に保存します:
mkdir -p /tmp/pr-<NUMBER>
分離されたプロファイルで移行ウィザードやスプラッシュが表示される場合は、共有のトラブルシューティングガイダンスと起動ログに従ってください。データをリセットしたり、強制的に閉じたりしないでください。
4. クリーンアップと復元
共有の ephemeral 終了手順を使用します。この PR テストワークフローによって起動され、検証済みの記録が ephemeral、エージェント所有、かつ pr-test:<NUMBER> にスコープされたままであるインスタンスのみを停止します。借用したすべてのインスタンスは実行したままにします。無関係なワークスペースやパッケージ化されたアプリを停止しないでください。
チェックアウト前に記録したブランチを復元します。それがもはや存在しない場合は、リポジトリのデフォルトブランチを解決し、切り替える前にフォールバックを報告します:
git checkout <ORIGINAL_BRANCH>
5. レポート
/tmp/pr-<NUMBER>/report.md を保存し、ユーザーに表示します。レポートの言語をユーザーの言語に合わせてください。テンプレートは英語のラベルを使用しています:
# 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
ユーザーが明示的に要求しない限り、レポートを投稿したり、GitHub レビューを送信したりしないでください。