| name | visualize-screenshot-checker |
| description | maou visualize の可視化機能をスクリーンショットで網羅的にチェックする.Gradio サーバーを起動し,各画面状態のスクリーンショットを撮影・目視確認する. |
| user-invocable | true |
| disable-model-invocation | true |
| argument-hint | ["--array-type <hcpe|stage1|stage2|preprocessing>"] |
Visualize Screenshot Checker
maou visualize の可視化機能をスクリーンショットベースで網羅的にチェックするスキル.
Playwright で各画面状態を撮影し,Claude の画像認識でビジュアル検証を行う.
前提条件
uv sync --extra cpu --extra visualize
uv run playwright install --with-deps chromium
uv run maturin develop
チェック手順
以下のフェーズを順番に実行する.各フェーズでサーバー起動→撮影→停止のサイクルを繰り返す.
$ARGUMENTS に --array-type の指定がある場合,該当する array-type のみチェックする.
指定がなければ全 array-type をチェックする.
Phase 0: サーバー起動・撮影・停止のヘルパー
各フェーズで以下のパターンを繰り返す:
uv run maou visualize --use-mock-data --array-type $ARRAY_TYPE --port 7860 &
SERVER_PID=$!
sleep 8
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-XXXX.png \
--settle-time 3000
kill $SERVER_PID 2>/dev/null; wait $SERVER_PID 2>/dev/null
lsof -ti :7860 | xargs kill -9 2>/dev/null || true
sleep 2
重要: 実行フローと報告の原則
- 全フェーズの撮影を先に一括実行する(各撮影でエラーが発生した場合のみ即時対処)
- 全撮影完了後に
Read ツールで各画像をまとめて読み取り,チェック項目に沿って確認する
- 最後に「結果報告のフォーマット」に従い,スクリーンショットパス一覧表と結果サマリーをユーザーに報告する
途中経過の報告は行わない.ユーザーへの報告は最終レポート1回のみとする.
Phase 1: 初期状態チェック(全 array-type 共通)
対象: --array-type hcpe(代表として)
サーバー起動後,操作なしの初期画面を撮影する.
Check 1.1: フルページ初期状態
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-0101-initial-full.png \
--settle-time 5000
確認項目:
Check 1.2: モードバッジ
uv run maou utility screenshot \
--url http://localhost:7860 \
--selector "#mode-badge" \
--output /tmp/check-0102-mode-badge.png
確認項目:
Phase 2: 盤面レンダリングチェック(array-type 別)
各 array-type でサーバーを起動し,盤面の描画を確認する.
Check 2.1: HCPE 盤面表示
--array-type hcpe で起動.ID 検索で任意のレコードを表示する.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "fill:#id-search-input input:mock_id_0" \
--action "click:#id-search-btn" \
--action "wait:#board-display svg" \
--selector "#board-display" \
--output /tmp/check-0201-hcpe-board.png
確認項目:
Check 2.2: Stage1 盤面表示
--array-type stage1 で起動.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "wait:#board-display svg" \
--selector "#board-display" \
--output /tmp/check-0202-stage1-board.png
確認項目:
Check 2.3: Stage2 盤面表示
--array-type stage2 で起動.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "wait:#board-display svg" \
--selector "#board-display" \
--output /tmp/check-0203-stage2-board.png
確認項目:
Check 2.4: Preprocessing 盤面表示
--array-type preprocessing で起動.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "wait:#board-display svg" \
--selector "#board-display" \
--output /tmp/check-0204-preprocessing-board.png
確認項目:
Phase 3: 将棋規則の正確性チェック
HCPE の盤面で将棋のルール・表示規則を重点的に確認する.
--array-type hcpe で起動.
Check 3.1: 座標系の正確性
フルページスクリーンショットで座標を確認.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "wait:#board-display svg" \
--selector "#board-display" \
--output /tmp/check-0301-coordinates.png \
--width 1920 --height 1080
確認項目:
Check 3.2: 駒の表示
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-0302-pieces.png
確認項目:
Check 3.3: 持ち駒の表示
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-0303-pieces-in-hand.png
確認項目:
Phase 4: 概要タブチェック
--array-type hcpe で起動.レコード表示時の概要タブ内容を確認する.
Check 4.1: 概要タブの詳細表示
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-0401-overview-tab.png
確認項目:
Phase 5: 検索結果タブチェック
--array-type hcpe で起動.
Check 5.1: 検索結果テーブル
検索結果タブをクリックしてテーブルを表示し,撮影する.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "click:button[role='tab']:nth-of-type(2)" \
--output /tmp/check-0501-search-results.png
確認項目:
Check 5.2: ページナビゲーション
uv run maou utility screenshot \
--url http://localhost:7860 \
--selector "#page-info" \
--output /tmp/check-0502-page-info.png
確認項目:
Phase 6: データ分析タブチェック
各 array-type で分析チャートを確認する.
Check 6.1: HCPE データ分析
--array-type hcpe で起動.データ分析タブに切り替えて確認.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "click:button[role='tab']:nth-of-type(3)" \
--output /tmp/check-0601-analytics-hcpe.png
確認項目:
Check 6.2: Stage1 データ分析
--array-type stage1 で起動.データ分析タブに切り替えて確認.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "click:button[role='tab']:nth-of-type(3)" \
--output /tmp/check-0602-analytics-stage1.png
確認項目:
Check 6.3: Stage2 データ分析
--array-type stage2 で起動.データ分析タブに切り替えて確認.
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "click:button[role='tab']:nth-of-type(3)" \
--output /tmp/check-0603-analytics-stage2.png
確認項目:
Phase 7: レコードナビゲーションチェック
--array-type hcpe で起動.レコード間の移動を確認する.
Check 7.1: レコードインジケータ
uv run maou utility screenshot \
--url http://localhost:7860 \
--selector "#record-indicator" \
--output /tmp/check-0701-record-indicator.png
確認項目:
Phase 8: エラー状態チェック
Check 8.1: ID 検索の空状態
サーバー起動直後,検索未実行の状態を確認.
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-0801-no-search.png
確認項目:
Phase 9: レスポンシブ・レイアウトチェック
Check 9.1: ワイド画面(1920x1080)
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-0901-wide.png \
--width 1920 --height 1080 \
--no-full-page
確認項目:
Check 9.2: 標準画面(1280x720)
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-0902-standard.png \
--width 1280 --height 720 \
--no-full-page
確認項目:
Check 9.3: ナロー画面(768x1024)
uv run maou utility screenshot \
--url http://localhost:7860 \
--output /tmp/check-0903-narrow.png \
--width 768 --height 1024 \
--no-full-page
確認項目:
Phase 10: テーブル行クリックによる盤面更新チェック
--array-type hcpe で起動.検索結果テーブルの行をクリックして盤面が変わることを確認する.
Check 10.1: テーブル行クリックで盤面が更新される
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "click:button[role='tab']:nth-of-type(2)" \
--action "click:#search-results-table [data-testid='cell-1-0']" \
--action "wait:#board-display svg" \
--output /tmp/check-1001-table-row-click.png
確認項目:
Phase 11: データソース変更の状態遷移チェック
--array-type hcpe で起動.データソースを変更した際のインデクシング状態遷移を確認する.
Check 11.1: データソース変更後のインデクシング表示
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "click:#array-type-dropdown" \
--settle-time 1000 \
--output /tmp/check-1101-indexing-start.png
確認項目:
Check 11.2: インデクシング完了後の状態
uv run maou utility screenshot \
--url http://localhost:7860 \
--action "click:#array-type-dropdown" \
--action "wait-hidden:.loading-spinner" \
--settle-time 5000 \
--output /tmp/check-1102-indexing-complete.png
確認項目:
結果報告のフォーマット
全フェーズの撮影・確認を完了した後,以下の形式で 1回だけ ユーザーに報告する.
途中経過の報告は行わない.
## Visualize Screenshot Check Report
### 実行環境
- array-type: (チェックした array-type)
- date: (実行日)
### スクリーンショット一覧
撮影した全スクリーンショットのパスを以下に示す.
`Read` ツールで各ファイルを直接確認できる.
| Check | 内容 | ファイルパス | 撮影結果 |
|-------|------|------------|---------|
| 1.1 | フルページ初期状態 | `/tmp/check-0101-initial-full.png` | OK / ERROR |
| 1.2 | モードバッジ | `/tmp/check-0102-mode-badge.png` | OK / ERROR |
| 2.1 | HCPE 盤面 | `/tmp/check-0201-hcpe-board.png` | OK / ERROR / SKIP |
| 2.2 | Stage1 盤面 | `/tmp/check-0202-stage1-board.png` | OK / ERROR / SKIP |
| 2.3 | Stage2 盤面 | `/tmp/check-0203-stage2-board.png` | OK / ERROR / SKIP |
| 2.4 | Preprocessing 盤面 | `/tmp/check-0204-preprocessing-board.png` | OK / ERROR / SKIP |
| 3.1 | 座標系の正確性 | `/tmp/check-0301-coordinates.png` | OK / ERROR |
| 3.2 | 駒の表示 | `/tmp/check-0302-pieces.png` | OK / ERROR |
| 3.3 | 持ち駒の表示 | `/tmp/check-0303-pieces-in-hand.png` | OK / ERROR |
| 4.1 | 概要タブ | `/tmp/check-0401-overview-tab.png` | OK / ERROR |
| 5.1 | 検索結果テーブル | `/tmp/check-0501-search-results.png` | OK / ERROR |
| 5.2 | ページナビゲーション | `/tmp/check-0502-page-info.png` | OK / ERROR |
| 6.1 | HCPE データ分析 | `/tmp/check-0601-analytics-hcpe.png` | OK / ERROR / SKIP |
| 6.2 | Stage1 データ分析 | `/tmp/check-0602-analytics-stage1.png` | OK / ERROR / SKIP |
| 6.3 | Stage2 データ分析 | `/tmp/check-0603-analytics-stage2.png` | OK / ERROR / SKIP |
| 7.1 | レコードインジケータ | `/tmp/check-0701-record-indicator.png` | OK / ERROR |
| 8.1 | ID 検索の空状態 | `/tmp/check-0801-no-search.png` | OK / ERROR |
| 9.1 | ワイド画面 | `/tmp/check-0901-wide.png` | OK / ERROR |
| 9.2 | 標準画面 | `/tmp/check-0902-standard.png` | OK / ERROR |
| 9.3 | ナロー画面 | `/tmp/check-0903-narrow.png` | OK / ERROR |
| 10.1 | テーブル行クリック | `/tmp/check-1001-table-row-click.png` | OK / ERROR |
| 11.1 | インデクシング開始 | `/tmp/check-1101-indexing-start.png` | OK / ERROR |
| 11.2 | インデクシング完了 | `/tmp/check-1102-indexing-complete.png` | OK / ERROR |
- **OK**: スクリーンショット撮影成功
- **ERROR**: 撮影時にエラー発生(セレクタ未検出,タイムアウト等)
- **SKIP**: `--array-type` 指定により対象外
### 結果サマリー
| Phase | チェック項目数 | Pass | Fail | 備考 |
|-------|------------|------|------|------|
| 1. 初期状態 | X | X | X | |
| 2. 盤面レンダリング | X | X | X | |
| 3. 将棋規則 | X | X | X | |
| 4. 概要タブ | X | X | X | |
| 5. 検索結果タブ | X | X | X | |
| 6. データ分析タブ | X | X | X | |
| 7. ナビゲーション | X | X | X | |
| 8. エラー状態 | X | X | X | |
| 9. レスポンシブ | X | X | X | |
| 10. テーブル行クリック | X | X | X | |
| 11. データソース変更 | X | X | X | |
### Fail 項目の詳細
(Fail があった場合,スクリーンショットのパスと問題点を記述)
| Check | ファイルパス | 問題点 |
|-------|------------|--------|
| X.X | `/tmp/check-XXXX.png` | 問題の説明 |
注意事項
- サーバーの起動には 8-10 秒程度かかる.
sleep 8 を確保すること
- Gradio は SPA のため
--settle-time 3000 以上を推奨
--selector "#board-display" を使用する場合,必ず --action "wait:#board-display svg" を併用すること.盤面 SVG は非同期レンダリングされるため,wait なしではデータ読み込み前の空盤面がキャプチャされる
- mock データはランダム生成のため,盤面の駒配置は毎回異なる
--action オプションでUI操作(ID検索,タブ切り替え,行クリック等)を撮影前に実行可能
- アクションフォーマット:
TYPE:SELECTOR[:VALUE](click, fill, wait, wait-text, wait-hidden)
- 複数アクションは
--action を繰り返し指定し,指定順に実行される
- パッケージ管理には
uv を使用すること(poetry は使用しない)
関連ドキュメント