Communitygithub.com

diliev1996/delyan-iliev-skills

UIを変更するPRを開いたり更新したりする際、またはBefore/Afterのスクリーンショットや動画証拠が求められた場合に使用します。

delyan-iliev-skills とは?

このスキルは、フロントエンドのプルリクエスト(PR)に対して、変更前後の視覚的な証拠(スクリーンショットと動画)を自動的に生成し、PRコメントとして投稿するためのツールです。開発者は、手動でスクリーンショットを撮ったり、差分を説明する手間から解放されます。主にGitHub CLI(gh)と連携し、任意のWebアプリケーションに対して動作します。スキルは、PRのマージベースとヘッドの2つのリビジョンをそれぞれビルドし、定義された操作フローに従ってブラウザ操作を実行します。その結果、Before/Afterの比較画像、動画、操作の証跡を含むコメントが自動的にPRに投稿されます。Playwrightベースのブラウザ自動化を利用しており、認証が必要なアプリケーションにも対応可能です。

対応~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/diliev1996/delyan-iliev-skills/tree/HEAD/skills/frontend-pr-evidence

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Frontend PR 証拠

PRのマージベースとヘッドを、同一のフィクスチャ、ビューポート、インタラクションで記録し、両方の記録を gh を通じて1つのPRコメントとして投稿します。リポジトリのPRスキルがPR本文を管理します。$SCRATCH はセッションのスクラッチディレクトリを意味します。バンドルされたスクリプトは絶対パスで実行してください。

手順

  1. リビジョンを解決する。 gh pr view PR_URL --json baseRefName,headRefOid から baseRefName と headRefOid を読み取ります。git fetch origin BASE_BRANCH pull/PR_NUMBER/head を実行し、次に git merge-base origin/BASE_BRANCH HEAD_SHA を実行します。両方のSHAがローカルで解決されたら完了です。
  2. 両方のリビジョンをビルドする。 各リビジョンがビルド済みの出力フォルダまたは実行中の開発サーバーを持ち、そのソースがSHAと一致したら完了です。
  3. フローを書く $SCRATCH 配下に、サンプル から始めて、以下のフローインターフェースに従って記述します。
  4. キャプチャする node scripts/capture.cjs FLOW "$SCRATCH/evidence" を実行します。失敗した場合、そのエラー名が修正方法を示します。インストールコマンド、アプリからのナビゲーションアウェイ、またはハイライトの問題などです。セレクタの失敗は、出力フォルダに failure.png と failure-aria.yml も残します。フローを修正して再実行します。以下の場合に完了です。
    • コマンドが終了コード0で終了する。
    • すべての manifest.network エントリが説明されている(モック実行の場合、各エントリはモックされていない呼び出しです)。
    • comparison.png が両方のフェーズで変更部分をフレームに収めている。
    • video-contact-sheet.png がカーソルが各ターゲットに到達し、最終状態が保持されていることを示している。
  5. 公開する node scripts/publish.cjs "$SCRATCH/evidence" PR_URL を実行します。証拠がPRの現在のヘッドおよびマージベースと一致することを確認し、比較画像と動画を添付した comment.md を投稿し、GitHubが両方をホストしていることを確認します。同じキャプチャに対して再実行すると、そのコメントを再利用します。gh auth status でログインがないことが示された場合、そのステップについてのみユーザーに依頼します。公開がブロックされたままの場合は、アーティファクトを保持し、正確なエラーを報告します。コメントURLが出力されたら完了です。
  6. リンクする PR本文の証拠セクションからコメントURLにリンクします。PR本文が、publish.cjs が現在のヘッドに対して出力したURLをリンクし、以前の証拠リンクを置き換えたら完了です。
  7. クリーンアップする 起動したサーバーとワークツリーをクリーンアップします。アーティファクト、Cookie、およびストレージステートファイルをソース管理の対象外にしておきます。

フローインターフェース

フローモジュールは以下をエクスポートします。

  • description: テスト対象のインタラクションと、データがモックかライブかを示します。コメントのテキストになります。
  • phases: 2つの { label, revision, url | dir, run } エントリ。Before、After の順です。dir はビルド済みの出力フォルダで、ヘルパーによってクライアントルートが index.html にフォールバックして提供されます。url は実行中の開発サーバーを指します。
  • viewport (オプション、デフォルト 1440×900)。
  • setup(page, phase) (オプション): 各フェーズの最初のナビゲーションの前に実行されます。ルート、初期化スクリプト、Cookie、ストレージがリセットされたページ上で実行されます。ここでモック、シード、認証フィクスチャを登録します。ルートは新しいものから順にマッチするため、特定のモックの前にキャッチオールのアボートを登録してください。
  • warmup(page, phase) (オプション): ページ読み込み後に記録されずに実行されます。例えば、開発サーバーがコンパイルしている間などに使用します。
  • run(page, tools): インタラクションを実行し、各フェーズの期待される状態をアサートします。tools.click(locator)、tools.point(locator)、tools.highlight(locator, label?) を使用します。各フェーズには少なくとも1つのハイライトが必要で、run が戻るときにまだ表示されている必要があります。

出力: before.png、after.png、comparison.png、comparison.webm、video-contact-sheet.png(タイムスタンプ付きフレームの動画)、manifest.json、comment.md。

認証が必要なアプリケーション。 ヘルパーのChromiumはログインなしで起動します。他の場所でのブラウザセッションや gh 認証は到達しません。setup でサインイン状態を再現してください。サンプルでは2つの方法を示しています。ライブ認証証拠が必要で、キャプチャコンテキストがそれに到達できない場合は、その制限と実際に実行されたチェックを報告してください。

スクリプトを変更したりPlaywrightをアップグレードしたりした後は、node scripts/capture.test.cjs を実行してください。CAPTURE_TEST_OUTPUT=DIR を設定してそのアーティファクトを保持し、PLAYWRIGHT_MODULE=PATH を設定して別のPlaywrightインストールをテストできます。

関連スキル