qa-game
Playwrightを使ったゲーム向けQAテスト(ビジュアルリグレッション・ゲームプレイ検証・パフォーマンス計測)を追加します。「テストを追加して」「バグチェックして」「ビジュアルリグレッションテストを入れて」などと指示された際に使用します。手動プレイテストやゲームデザインの改善には使用しません。
description の原文を見る
Add Playwright QA tests to a game — visual regression, gameplay verification, and performance. Use when the user says "add tests", "test my game", "add QA", "check for bugs", or "add visual regression tests". Do NOT use for manual playtesting or gameplay design.
SKILL.md 本文
QA Game
Playwright を使用して既存のゲームプロジェクトに自動化された QA テストを追加します。テストはゲームの起動、シーンの動作、スコアリング機能、ビジュアルの破損を検証します。ゲームの安全ネットのような役割を果たします。
手順
$ARGUMENTS のゲーム (またはパスが指定されない場合は現在のディレクトリ) を分析します。
まず、game-qa スキルを読み込んで、完全なテストパターンと fixtures を入手します。
ステップ 1: テスト可能性の監査
package.jsonを読み込んでエンジンと dev サーバーポートを特定するvite.config.jsを読み込んでサーバーポートを確認するsrc/main.jsを読み込んでwindow.__GAME__、window.__GAME_STATE__、window.__EVENT_BUS__が公開されているか確認するsrc/core/GameState.jsを読み込んで利用可能な状態を理解するsrc/core/EventBus.jsを読み込んで存在するイベントを理解するsrc/core/Constants.jsを読み込んでゲームパラメータ (レート、スピード、期間、最大値) を理解する- すべてのシーンファイルを読み込んでゲームフローを理解する
design-brief.mdが存在する場合はそれを読み込む。期待されるメカニクス、大きさ、勝利/敗北の到達可能性をドキュメント化しています
ステップ 2: Playwright のセットアップ
- 依存関係をインストール:
npm install -D @playwright/test @axe-core/playwright && npx playwright install chromium - 正しい dev サーバーポートと webServer 設定で
playwright.config.jsを作成する src/main.jsでwindow.__GAME__、window.__GAME_STATE__、window.__EVENT_BUS__、window.__EVENTS__を公開する (まだの場合)- テストディレクトリ構造を作成する:
tests/ ├── e2e/ │ ├── game.spec.js │ ├── visual.spec.js │ └── perf.spec.js ├── fixtures/ │ └── game-test.js └── helpers/ └── seed-random.js - npm スクリプトを追加:
test、test:ui、test:headed、test:update-snapshots
ステップ 3: テストの生成
ゲームが実際に行うことに基づいてテストを記述します:
- game.spec.js: 起動テスト、シーン遷移、入力処理、スコアリング、ゲームオーバー、再スタート
- visual.spec.js: 安定したシーン (ゲームプレイの初期状態、ゲームオーバー) のスクリーンショット回帰テスト。アクティブなゲームプレイのスクリーンショットはスキップします。動くオブジェクトは不安定になります。
- perf.spec.js: ロード時間予算、ゲームプレイ中の FPS、キャンバスのサイズ
game-qa スキルパターンに従います。gamePage fixture を使用します。page.evaluate() でゲーム状態を読み込みます。入力には page.keyboard.press() を使用します。
ステップ 4: 設計意図テスト
test.describe('Design Intent') ブロックを game.spec.js に追加します。これらのテストは、技術的には存在するが強度が不足しているメカニクスを見つけます。
-
敗北条件: ゲームに敗北状態があるかどうかを確定的に検出します。
GameState.jsを読み込みます。won、resultまたは同様のブール値/列挙型フィールドがある場合、ゲームは勝利と敗北を区別します。またmain.jsのrender_game_to_text()を確認します。('win'対'game_over'など) 異なる結果モードを返す場合、ゲームには敗北状態があります。敗北状態が存在する場合: ゲームを開始し、入力を提供しないでください。完了まで実行させます (
page.waitForFunctionを Constants.js のラウンド期間で使用)。結果が敗北のものであることをアサートします (例:won === false、mode === 'game_over')。このアサーションは絶対です。 プレイヤーが入力しなくても勝つようなテストを書かないでください。現在のゲームの動作が「入力なしでプレイヤーが勝つ」である場合、それはバグです。テストを書いてそれをキャッチします。
-
相手/AI の圧力: AI 駆動のメカニクス (自動昇降バー、敵のスポーン、難易度上昇) が存在する場合、それが実質的な状態変化を生じることをテストします。プレイヤー入力なしでゲームをその期間の半分実行します。相手の状態が最大値の少なくとも 25% に達することをアサートします。
design-brief.mdが存在する場合は、その予想される大きさをしきい値に使用します。それ以外の場合、Constants.js から導出します:rate * durationを計算し、意味のあるレベルに達することをアサートします。 -
勝利条件: アクティブなプレイヤー入力が勝利につながることをテストします。ラウンド中ずっと急速な入力を提供し、結果が勝利であることをアサートします。
ステップ 5: エンティティ相互作用監査
初めてのプレイヤーを混乱させる非対称性について、衝突と相互作用ロジックを監査します。
design-brief.md に "Entity Interactions" セクションがある場合、それをチェックリストとして使用します。それ以外の場合、GameScene.js を直接監査します:
- すべての衝突ハンドラ、重なり確認、または距離ベースの相互作用を見つける
- どのエンティティがどの他のエンティティと相互作用するかをマッピングする
- 一方の側 (プレイヤーまたは相手のいずれか) と相互作用するが他方とは相互作用しない目に見える動くエンティティにフラグを立てる。テストファイルに
// QA FLAG: asymmetric interactionコメントを追加して、エンティティ名と非対称性を記載します
これはフラグであり、ハード失敗ではありません。いくつかの非対称性は意図的です (例: プレイヤーにのみ影響するハザード)。フラグにより、その非対称性が意識的な設計選択であり、見落としではないことが保証されます。
ステップ 6: 実行と確認
npx playwright testを実行してすべてのテストを実行する- ビジュアルテストが初回実行時に失敗する場合、それは想定通りです。
npx playwright test --update-snapshotsでベースラインを生成します - すべてのテストが成功することを確認するために再度実行します
- 結果を要約します
ステップ 7: レポート
ユーザーに平易な言語で伝えます:
- 作成されたテスト数とそれらが何をチェックするか
- 実行方法:
npm test(ヘッドレス)、npm run test:headed(ブラウザを表示)、npm run test:ui(インタラクティブダッシュボード) - 「これらのテストはあなたの安全ネットです。変更を加えた後にいつでも実行して、何も壊れていないことを確認してください。」
使用例
/qa-game examples/flappy-bird
結果: Playwright をインストール → 15 個のテストを作成 (起動、シーン遷移、入力、スコアリング、再スタート、ゲームオーバー、ビジュアル回帰、FPS、ロード時間) → fixtures とヘルパーを備えた tests/ ディレクトリを生成 → すべてのテストが成功します。変更後いつでも npm test を実行してください。
次のステップ
ユーザーに伝えます:
Your game now has automated tests! Finally, run
/game-creator:review-gamefor a full architecture review — it checks your code structure, performance patterns, and gives you a score with specific improvement suggestions.Pipeline progress:
/viral-game→/design-game→/add-audio→/qa-game→/review-game(This is the
/viral-gameone-shot pipeline — not the/make-gamemulti-session, milestone-driven workflow.)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- opusgamelabs
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/opusgamelabs/game-creator / ライセンス: MIT
関連スキル
nano-banana-2
inference.sh CLIを通じてGoogle Gemini 3.1 Flash Image Preview(Nano Banana 2)で画像を生成します。テキストから画像を生成する機能、画像編集、最大14枚の複数画像入力、Google Searchグラウンディング機能に対応しています。トリガーワード:「nano banana 2」「nanobanana 2」「gemini 3.1 flash image」「gemini 3 1 flash image preview」「google image generation」
octocode-slides
洗練されたマルチファイル形式のHTMLプレゼンテーションを生成します。6段階のフロー(概要 → リサーチ → アウトライン → デザイン → 実装 → レビュー)で構成されています。各スライドは独立したHTMLファイルとなり、iframeで読み込まれます。「スライドを作成してほしい」「プレゼンテーションを作ってほしい」「HTMLスライドを生成してほしい」「デックを構築してほしい」といった依頼や、ノート・ドキュメント・コードを洗練されたプレゼンテーションに変換する際に使用できます。
gpt-image2-ppt
OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。
nano-banana
Nano Banana PRO(Gemini 3 Pro Image)およびNano Banana(Gemini 2.5 Flash Image)を使用したAI画像生成機能です。以下の場合に活用できます:(1)テキストプロンプトからの画像生成、(2)既存画像の編集、(3)インフォグラフィックス、ロゴ、商品写真、ステッカーなどのプロフェッショナルなビジュアルアセット制作、(4)複数画像での人物キャラクターの一貫性保持、(5)正確なテキスト描画を含む画像生成、(6)AI生成ビジュアルが必要なあらゆるタスク。「画像を生成」「画像を作成」「写真を作る」「ロゴをデザイン」「インフォグラフィックスを作成」「AI画像」「nano banana」またはその他の画像生成リクエストをトリガーとして機能します。
oiloil-ui-ux-guide
モダンでクリーンなUI/UXガイダンス・レビュースキルです。新機能や既存システム(Webアプリ)に対して、実行可能なUI/UX改善提案、デザイン原則、デザインレビューチェックリストが必要な場合に活用できます。CRAP(コントラスト・反復・配置・近接)をベースに、タスクファーストなUX、情報設計、フィードバック・システムステータス、一貫性、affordances、エラー防止・復旧、認知負荷を重視します。モダンミニマルスタイル(クリーン・余白・タイポグラフィ主導)を強制し、不要なテキストを削減、アイコンとしての絵文字を禁止し、統一されたアイコンセットから直感的で洗練されたアイコンを推奨します。
axiom-hig-ref
Apple Human Interface Guidelines リファレンス — 色(セマンティックカラー、カスタムカラー、パターン)、背景(マテリアル階層、ダイナミック背景)、タイポグラフィ(標準スタイル、カスタムフォント、Dynamic Type)、SF Symbols(レンダリングモード、色、多言語対応)、ダークモード、アクセシビリティ、プラットフォーム固有の考慮事項を網羅したガイドラインです。