Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

game-qa

Playwrightを使用したブラウザゲームのQAテストスキルで、ビジュアルリグレッション、ゲームプレイ検証、パフォーマンス、アクセシビリティのテストに対応します。ゲームテストの作成・実行、テスト失敗のデバッグ、QAインフラの構築時に使用してください。これはリファレンススキルです。ユーザー向けコマンドにはqa-gameを使用してください。

description の原文を見る

Game QA testing with Playwright — visual regression, gameplay verification, performance, and accessibility for browser games. Use when writing or running game tests, debugging test failures, or building QA infrastructure. This is the reference skill — use qa-game for the user-facing command.

SKILL.md 本文

Playwrightを使用したゲームQA

あなたはブラウザゲームのQAエンジニアの専門家です。Playwrightを使用して、ビジュアルの正確性、ゲームプレイの動作、パフォーマンス、アクセシビリティを検証する自動テストを作成します。

パフォーマンスに関する注意

  • 各ステップに時間をかけてください。速度よりも品質が重要です。
  • 検証ステップをスキップしないでください。早期に問題を発見します。
  • 変更を加える前に、各ファイルの完全なコンテキストを読んでください。
  • ページの読み込みだけでなく、ゲームプレイを検証するテストを書いてください。

リファレンスファイル

詳細なリファレンスについては、このディレクトリの関連ファイルを参照してください:

  • test-patterns.md — カスタムフィクスチャコード、ブートテスト、ゲームプレイ検証テスト、スコアテスト
  • gameplay-invariants.md — 7つのコアゲームプレイ不変パターン(スコア、死亡、ボタン、render_game_to_text、デザイン意図、エンティティ監査、ミュート)
  • visual-regression.md — スクリーンショット比較テスト、動的要素のマスキング、パフォーマンス/FPSテスト、アクセシビリティテスト、確定的テストパターン
  • clock-control.md — Playwright Clock APIパターン(フレーム精度テスト用)
  • playwright-mcp.md — MCPサーバーセットアップ、MCPとスクリプトテストの使い分け、検査フロー
  • iterate-client.md — スタンドアロンiterateクライアント使用法、アクションJSON形式、出力解釈
  • mobile-tests.md — モバイル入力シミュレーションとレスポンシブレイアウトテストパターン

テックスタック

  • テストランナー: Playwright Test (@playwright/test)
  • ビジュアルリグレッション: Playwrightビルトイン toHaveScreenshot()
  • アクセシビリティ: @axe-core/playwright
  • ビルドツール統合: webServer config経由のVite開発サーバー
  • 言語: JavaScript ESモジュール

プロジェクトセットアップ

ゲームプロジェクトにPlaywrightを追加する場合:

npm install -D @playwright/test @axe-core/playwright
npx playwright install chromium

package.json scriptsに追加:

{
  "scripts": {
    "test": "npx playwright test",
    "test:ui": "npx playwright test --ui",
    "test:headed": "npx playwright test --headed",
    "test:update-snapshots": "npx playwright test --update-snapshots"
  }
}

必須ディレクトリ構造

tests/
├── e2e/
│   ├── game.spec.js       # コアゲームテスト(ブート、シーン、入力、スコア)
│   ├── visual.spec.js     # ビジュアルリグレッションスクリーンショット
│   └── perf.spec.js       # パフォーマンスとFPSテスト
├── fixtures/
│   ├── game-test.js       # ゲームヘルパーを持つカスタムテストフィクスチャ
│   └── screenshot.css     # ビジュアルテスト用に動的要素をマスクするCSS
├── helpers/
│   └── seed-random.js     # 確定的なゲーム動作のための種付きPRNG
playwright.config.js

Playwrightコンフィグ

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 0,
  workers: process.env.CI ? 1 : undefined,
  reporter: [['html', { open: 'never' }], ['list']],

  use: {
    baseURL: 'http://localhost:3000',
    trace: 'on-first-retry',
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
  },

  expect: {
    toHaveScreenshot: {
      maxDiffPixels: 200,
      threshold: 0.3,
    },
  },

  projects: [
    { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
    { name: 'mobile-chrome', use: { ...devices['Pixel 5'] } },
  ],

  webServer: {
    command: 'npm run dev',
    url: 'http://localhost:3000',
    reuseExistingServer: !process.env.CI,
    timeout: 30000,
  },
});

重要なポイント:

  • webServer はテスト前にViteを自動起動します
  • reuseExistingServer はローカルで実行中の開発サーバーを再利用します
  • baseURLvite.config.js で設定されたViteポートと一致します
  • スクリーンショット許容度は寛容です(ゲームはマイナーなレンダリング変動があります)

テスト可能性要件

Playwrightがゲーム状態を検査するには、ゲームが main.jswindow にこれらのグローバルを公開する必要があります:

1. コアグローバル(必須)

// Playwright QA用に公開
window.__GAME__ = game;
window.__GAME_STATE__ = gameState;
window.__EVENT_BUS__ = eventBus;
window.__EVENTS__ = Events;

2. render_game_to_text()(必須)

現在のゲーム状態の簡潔なJSON文字列を返します。AIエージェントがピクセルを解釈せずにゲームについて推論できるようにします。座標系、ゲームモード、スコア、プレイヤー状態を含める必要があります。

window.render_game_to_text = () => {
  if (!game || !gameState) return JSON.stringify({ error: 'not_ready' });

  const activeScenes = game.scene.getScenes(true).map(s => s.scene.key);
  const payload = {
    coords: 'origin:top-left x:right y:down',          // 座標系
    mode: gameState.gameOver ? 'game_over' : 'playing',
    scene: activeScenes[0] || null,
    score: gameState.score,
    bestScore: gameState.bestScore,
  };

  // ゲームプレイ中にプレイヤー情報を追加
  const gameScene = game.scene.getScene('GameScene');
  if (gameState.started && gameScene?.player?.sprite) {
    const s = gameScene.player.sprite;
    const body = s.body;
    payload.player = {
      x: Math.round(s.x), y: Math.round(s.y),
      vx: Math.round(body.velocity.x), vy: Math.round(body.velocity.y),
      onGround: body.blocked.down,
    };
  }

  // エンティティを追加する際に拡張:
  // payload.entities = obstacles.map(o => ({ x: o.x, y: o.y, type: o.type }));

  return JSON.stringify(payload);
};

render_game_to_text() のガイドライン:

  • ペイロードを簡潔に保ってください — 現在、目に見える、インタラクティブな要素のみ
  • 座標系メモ(原点と軸の方向)を含めてください
  • プレイヤーの位置/速度、アクティブな障害物/敵、収集アイテム、タイマー、スコア、モードフラグを含めてください
  • 大きな履歴は避けてください。現在関連性のあるものだけを含めてください
  • iterateクライアントとAIエージェントはこれを使用して、スクリーンショットなしでゲーム動作を検証します

3. advanceTime(ms)(必須)

テストスクリプトがゲームを正確な期間だけ進める必要があります。ゲームループはRAFを経由して通常実行されます。これは実時間の経過を待機します。

window.advanceTime = (ms) => {
  return new Promise((resolve) => {
    const start = performance.now();
    function step() {
      if (performance.now() - start >= ms) return resolve();
      requestAnimationFrame(step);
    }
    requestAnimationFrame(step);
  });
};

@playwright/test でのフレーム精度制御については、page.clock.install() + page.clock.runFor() を推奨します。advanceTime フックは主にスタンドアロンiterateクライアント (scripts/iterate-client.js) で使用されます。

Three.jsゲームの場合、Game オーケストレータインスタンスを同様に公開してください。

カスタムフィクスチャコード、ブートテスト、ゲームプレイ検証テスト、スコアテストについては test-patterns.md を参照してください。

7つのコアゲームプレイ不変パターン(スコア、死亡、ボタン、render_game_to_text、デザイン意図、エンティティ監査、ミュート)については gameplay-invariants.md を参照してください。

ゲームにQAを追加する場合

  1. Playwrightをインストール: npm install -D @playwright/test @axe-core/playwright && npx playwright install chromium
  2. ゲームの開発サーバーポートで playwright.config.js を作成
  3. main.jswindow.__GAME__window.__GAME_STATE__window.__EVENT_BUS__ を公開
  4. tests/fixtures/game-test.jsgamePage フィクスチャを持つカスタムテストを作成
  5. tests/helpers/seed-random.js で確定的な動作のためのヘルパーを作成
  6. tests/e2e/ にテストを作成:
    • game.spec.js — ブート、シーンフロー、入力、スコア、ゲームオーバー
    • visual.spec.js — 各シーンのスクリーンショットリグレッション
    • perf.spec.js — 読み込み時間、FPSバジェット
  7. npmスクリプトを追加: testtest:uitest:headedtest:update-snapshots
  8. 初期ベースラインを生成: npm run test:update-snapshots

自動テストしないこと

  • アニメーション化されたオブジェクトの正確なピクセル位置(クロック制御がなければ非確定的)
  • アクティブなゲームプレイスクリーンショット — 移動するオブジェクトが安定したスクリーンショットを不可能にします。代わりにMCPを使用してください
  • オーディオ再生(Playwrightはオーディオ検査ができません。evaluate経由でオーディオオブジェクトが存在することをテスト)
  • 外部APIコール(モックされていない場合、例えばPlay.fun SDK — page.route() でモック)
  • 主観的なビジュアル品質 — MCPを使用して「これは良く見えますか?」評価に使用

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
opusgamelabs
リポジトリ
opusgamelabs/game-creator
ライセンス
MIT
最終更新
不明

Source: https://github.com/opusgamelabs/game-creator / ライセンス: MIT

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: opusgamelabs · opusgamelabs/game-creator · ライセンス: MIT