Communityコーディング&開発github.com

clayprod/pc-perf-audit

あらゆるWindows PCの性能を計測・調整し、競技ゲーム向けに最適化します(スタッター、1% Low、ヒッチ、レイテンシ、フリーズ、音声途切れ)。ハードウェア/ソフトウェア/BIOSのインベントリ、PresentMonによるフレームタイムキャプチャ、CPU vs GPU診断、Intel/AMD/NVIDIA/AMD GPU向けてこレバーカタログ、リバーシブルなA/Bテスト、承認状態のフリーズ機能を備えています。ユーザーがPCゲームの最適化、診断、チューニングを依頼したとき、別のマシンやゲームで同様の分析を複製したいとき、マイクロスタッター、不安定なFPS、クラッシュ、レイテンシを調査したいときに使用します。

pc-perf-audit とは?

pc-perf-audit(パフォーマンス監査)は、WindowsゲーミングPCのパフォーマンスを計測・調整するためのAIエージェントスキルです。Claude Code、Cursor、CodexなどのAIエージェントで動作し、CPU(Intel/AMD)、GPU(NVIDIA/AMD/Intel)、ゲームの種類を問わず使用できるように設計されています。主な機能は、ハードウェア/ソフトウェア/BIOSのインベントリ収集、PresentMonによるフレームタイムキャプチャ、CPU vs GPUのボトルネック診断、Intel/AMD/NVIDIA/AMD GPU向けの調整レバーカタログ、リバーシブルなA/Bテスト、承認状態のフリーズなどです。このスキルは、スタッター、1% Low値の低下、ヒッチ、入力遅延、フリーズ、音声途切れなどの問題を診断・解決するための体系的な方法論を提供します。独自のルールとして、測定と主観的評価の分離、1変数ずつのテスト、ベースライン測定の徹底、リバーシブルな変更、証拠に基づく判断などが挙げられます。これにより、ユーザーはゲームパフォーマンスを科学的に最適化し、問題を再現可能な形で解決できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clayprod/pc-perf-audit/tree/HEAD

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

pc-perf-audit - あらゆるPC向けの計測ベースパフォーマンス監査

実際のマシン(Ryzen 7 5700X + RTX 2060、Valorant競技)での数ヶ月の作業から抽出されました。あらゆるゲーム、あらゆるCPU(Intel/AMD)、あらゆるGPU(NVIDIA/AMD/Intel)で動作します: 手法は非依存的です。ゲームごとに異なるもの(exe、設定、ログ、アンチチート、申告シナリオ)は references/jogos.md にあります。ここで重要なのは手法と測定済みのカタログです。そのマシンの数値は例であり、別のマシンへのレシピではありません。例としてValorantが挙げられている場合、「ゲームの一例」として読んでください。

どんな調整よりも価値のあるルール

  1. あなたは「何が最適か」を決めません。テストを組み立てます。 仮説、可逆的な変更、ユーザーがプレイし、あなたが判定を収集します。
  2. 2種類の判定を決して混同しないでください:
    • 計測可能(フレームタイム、1% Low、ヒッチ、レイテンシ、安定性):数値で判断します。
    • 判断可能(鮮明さ、コントラスト、音、「感触」、視認性):ユーザーのみが判断します。一度に1つの変更だけ。両方を別々に報告します。
  3. 一度に1つの変数。1回の試行だけでは何も決まりません。 最低2回の試行。ウォームアップは破棄し、分単位の偏差を見ます。平均だけではありません。
  4. ベースラインを下回った?元に戻します。 視覚的な向上がフレームタイムの低下を正当化することはありません(ユーザーがそう主張する場合を除き、その場合でもコストを測定して報告します)。
  5. コストのかからない方法を常に優先します。 CPU/GPU/レイテンシ/リスクがかかるものを提案する前に、映像出力に近いレイヤー、またはコストがかからない同じ効果を探します(例:フレーム単位のフィルターではなく、パネル設定のデジタルバイブランス;モニターではなくGPUでのスケーリング;ドライバーのFPSリミッターではなくゲームネイティブのFPSリミッター;優先順位設定ではなくアプリを閉じる)。
  6. 「マシンは出せるものを出している」と決して結論づけないでください。 「コストはどこにあるか」と「より速く実行できるか」は別の質問です。シリアルコードは、実効クロックが高く、メモリレイテンシが低く、キャッシュ競合が少ないほど高速に実行されます。
  7. 主張の前に証拠。 もっともらしい理論が何度も否定されてきました。仮説を結果として提示しないでください。測定なしに改善を宣言しないでください。
  8. 測定器も負荷です。 測定器、コレクター、モニター、オーバーレイ、そしてエージェント自身(Claude、ターミナル、PowerShell)がCPUを消費します。キャプチャ中はマシンを使用しないでください。
  9. 測定値が数日間ユーザーの体感と矛盾する場合、測定値を疑い、ユーザーの知覚は疑わないでください。 これは4回繰り返されました(references/armadilhas.md 参照)。
  10. 危険または不可逆的なものだけを確認します(ファームウェア、BIOS、セキュリティ、データ消去)。それ以外:選択し、理由を一行で説明し、実行します。
  11. 可逆性: 変更の前に、元の値と元に戻すコマンドを記録します。痕跡を残すドライランは禁止。シミュレーションはディスクに触れません。

手順(順に従ってください。各手順に終了条件があります)

手順0 - プロファイルと目標(短いインタビュー)

質問する(長い会話ではなく、AskUserQuestionで一度に尋ねます):

  • 主なゲーム、モード(競技/カジュアル)、目標(目標FPS、モニターリフレッシュレート)。ゲームごとに references/jogos.md のシートを記入します(exe、API、エンジン、設定、ログ、アンチチート、テストモード)。
  • 症状:マイクロスタッター、射撃時のドロップ、完全フリーズ、BSOD、音声途切れ、入力ラグ、ちらつき/ギザギザ、ブラックスクリーン。どの分/マップ/瞬間?(キャプチャのアンカー)
  • ユーザーの譲れない条件(変更や議論不可):感度、DPI、解像度、引き伸ばしモード、クロスヘア、バイブランス、開けておく必要のあるアプリ(例:Discord)。
  • 彼がすでに試したこと、良かった/悪かったこと。「完璧だった」日はあるか?いつ?
  • ゲームのアンチチート(Vanguard、EAC、BattlEye、FACEIT):アフィニティ、優先度、オーバーレイ注入、サードパーティドライバーを制限します。references/catalogo-alavancas.md セクション11を参照してください。 終了条件: 日誌にプロファイルを書き込む(テンプレートは references/template-diario.md)。

手順1 - インベントリ(読み取り専用)

scripts/inventario.ps1 -Saida <フォルダ> を実行します(PowerShell 5.1、できれば管理者として。管理者でない場合、一部のフィールドが空になり、スクリプトが警告します)。CPU、GPU、RAM(設定速度と公称速度、電圧)、BIOS/マザーボード、OS、電源プランとEPP、MPO、HAGS、VBS/HVCI、ゲームモード、GameDVR、セキュアブート、Defender、アップデートサービス、NIC、ディスク、モニター、解像度/リフレッシュレート、スタートアップ、サードパーティのサービスとプロセス、既知のオーバーレイ、およびイベント6008/1001/WHEAのカウントを収集します。inventario.txt を読み、プラットフォームを分類します: CPU: AMD Zen2/3/4/5 (X3D?) | Intel Core ハイブリッド (P+E) | Intel Core 非ハイブリッド、 GPU: NVIDIA | AMD | Intel Arc | iGPU。これにより、カタログのセクションが選択されます。 終了条件: 日誌に「項目 -> 値 -> 正常? -> 仮説」の表。まだ何も変更しないでください。

手順2 - 環境の衛生(ゲームプレイ中に動作するもの)

目標:既知かつクリーンなゲーム環境。インベントリ + Get-Process を使用します。

  • バックグラウンドでCPUを消費するものをリストアップします(ブラウザ、ランチャー、クラウド同期、アップデーター、オーバーレイ、RGB、キャプチャソフト、エージェント自身)。分類:閉じる、起動を防ぐ、残す(ユーザーの決定)。
  • N分ごとに強制終了するよりも、起動を防ぐ(StartupApproved、ポリシー、Storeアプリのバックグラウンド実行許可)を優先します。リストの項目が実際にプロセス名と一致するか確認します('WhatsApp'という文字列が WhatsApp.Root に一致せず、17日間生き残った例があります)。
  • 自動的に再起動するアップデーター/サービス(Windows Update、ベンダーアップデーター):封じ込め方法を決定し、それが持続することを確認します(落とし穴:インストーラーがタスク/サービスを再作成する場合があります)。
  • Present にDLLを注入するオーバーレイ(RTSS/Afterburner OSD、Discord overlay、Steam、GeForce、Medal、OBS hook):コストは小さいがレンダリングスレッド上。リストアップし、ユーザーに知らせずに強制終了しないでください。効果の測定はオプションです(このマシンでは改善は実証されませんでした)。 終了条件: 「ゲームプレイ中のアプリ」のリスト + 封じ込めメカニズム + 確認方法。

手順3 - 測定されたベースライン

完全なプロトコルは references/metodo.md。要約:

  1. ゲームを閉じ、マシンを落ち着かせる(起動後5分以上)、新たに何も開かない。
  2. 実際のゲームプレイ中に scripts/capturar.ps1 -Processo <exe> -Segundos 420 -Rotulo <ラベル> を実行します(申告のモード/マップで。PresentMonがリスクの場合はDMを破棄可能)。キャプチャは分析しません(分析はゲームプレイ中のCPU/RAM負荷中に行います)。
  3. ゲーム終了後:python scripts/analisar-frametime.py <csv>。
  4. 最低2回の試行、同じマップ。最初の試行は起動/パッチ/ドライバー後のコールドラン。
  5. ユーザーの判定(スコア/フレーズ)を尋ね、数値の横に記録します。8回以上のキャプチャと判定が揃ったら、どのメトリクスが彼の体感と相関するか(順位)を検証し、それを使用します。 終了条件: シナリオごとのベースライン(DMと5v5は異なります!)ヒッチ/分、最悪フレーム、1%/0.1% Low、p99、分単位の偏差、およびユーザーの判定。

手順4 - 診断

references/diagnostico.md のツリー。順に質問:

  1. CPUバウンドかGPUバウンドか?(MsCPUBusy vs MsGPUBusy、中央値と悪いフレーム)
  2. 問題は平均か裾か?(ヒッチ/分、最悪フレーム、>20msの深刻なフレーム)
  3. ヒッチにトリガーはあるか?(ラウンド切り替え、ローディング、リスポーン、マップ、アビリティ、ゲーム終了、最近のパッチ/ドライバー = シェーダー再コンパイル)- ゲームログと照合します。
  4. 外部からの競合はあるか?(カーネル/ETWトレース;ISR/DPC;ディスクI/O;空きメモリ;温度とクロック)- 正しい計測器でのみ結論付けます。
  5. フリーズ/BSOD/音声途切れの場合、別のツリー(ハードウェア/安定性/無線)。 終了条件: (確率 x テストコスト x 可逆性) で順位付けされた仮説。

手順5 - レバー(最も安価なものから最も高価なものへ)

references/catalogo-alavancas.md を参照し、検出されたプラットフォームのセクションのみを参照し、何かを提案する前に否定されたリストを確認します。攻撃の順序:

  1. コストがかからないレイヤー:スキャンアウト/ディスプレイ(GPUでのスケーリング、デジタルバイブランス、モニター応答時間)、Windows(MPO、電源プラン/EPP、更新を抑制、バックグラウンドアプリ)。
  2. ゲームスレッドを実行するコアの速度:EPP/ブースト、電力制限、SMT/Eコア、メモリレイテンシと電圧、FCLK/リング、Curve Optimizer/アンダーボルト、冷却。
  3. 安定性:メモリ電圧、XMP/DOCP、BIOS、Cステート、電源、温度。
  4. ゲーム設定:キャラクターあたりのCPUを削減するもののみ(影、死体、カウンター)。譲れない条件と競技情報(音、敵の影)を尊重します。
  5. ネットワーク/オーディオ/周辺機器:測定してから。ネットワーク調整はすでに5倍悪化したことがあります。 各レバーについて:元の値、適用コマンド、元に戻すコマンド、計測可能な仮説、およびユーザーが判断する必要があるもの。

手順6 - A/Bテストと判定

各レバーについて(一度に1つ):適用 -> 同じシナリオで2回キャプチャ -> 同じマップ/モードのベースラインと比較 -> ユーザーの体感を尋ねる -> 判断: 採用 | 元に戻す | 判定なし(さらにデータが必要)。否定されたものも数値とともに記録します。否定されたリストはプロジェクトの最も価値のある資産です。 比較ルール:ベースラインを日付ではなくマシンの状態でフィルタリングします。 2回の試行の間に何かを変更した場合、その系列は逸話になります - やり直し。

手順7 - 承認状態を凍結する

ユーザーが「これでいい、元に戻したくない」と言ったとき:状態(BIOS、ドライバー、サービス、タスク、レジストリ、電源、ゲーム設定、スタートアップ)を、期待値を持つプローブのリストとして写真に撮り、定期的に、およびパッチ/ドライバー/BIOS後に実行します。ルール:

  • 凍結する前に、凍結せずに比較を実行し、各偏差を解決します(意図的 -> 凍結;後退 -> 修正)。偏差があるまま凍結すると、後退を黄金として記録します。
  • ゲームを閉じた状態で、管理者セッションで凍結します。
  • 誤警報を生成するプローブは、プローブを無視することを教えます:値の履歴を調査します。
  • キー名/値が間違っているプローブは、プローブがないよりも悪いです:実際のファイルと照合します。
  • BIOS/CMOSクリアが静かに元に戻すものを文書化します(SMT、Cステート、DOCP、DRAM電圧、セキュアブート、Resizable BAR、PBO)および元に戻すためのロードマップ。

手順8 - 生きたドキュメント

日誌を維持します(references/template-diario.md):現在の状態、ベースライン、否定されたリスト、支払われた落とし穴、優先順位付きの未解決事項。誤ったエントリはトップに明示的な撤回を付けて修正し、削除しないでください - エラーの履歴は再発を防ぎます。

結果をユーザーに提供する方法

  • ユーザーの言語で、直接的に。決定ごとに理由を一行。
  • キャプチャごとの表:シナリオ、ヒッチ/分、最悪フレーム、>20msの深刻なフレーム、1%/0.1% Low、偏差、ユーザーの判定。「数値が示すもの」と「あなただけが言えるもの」を分離します。
  • 固定FPSを「彼が見ているもの」として決して報告しないでください:ゲームのカウンターは短いウィンドウを使用します。
  • 各主張をマークします:計測済み、仮説、文献(出典)、ユーザーの決定。

このスキルのファイル

  • references/metodo.md - キャプチャプロトコル、メトリクス、切り抜き、メトリクス検証。
  • references/jogos.md - ゲームごとのシート、ログマーカー、ジャンル/エンジンごとのプロファイル、普遍的なものと固有のもの。
  • references/diagnostico.md - 症状 -> 計測器 -> 推定原因のツリー。
  • references/catalogo-alavancas.md - 試行/測定されたすべてのもの、レイヤーとベンダー別。
  • references/armadilhas.md - すでに反復を犠牲にした計測と思考の誤り。
  • references/template-diario.md - 監査対象マシンの日誌/AGENTS.mdのテンプレート。
  • scripts/inventario.ps1 - 読み取り専用インベントリ(PowerShell 5.1、ASCII)。
  • scripts/capturar.ps1 - 分析なしのPresentMonキャプチャ + プロセススナップショット。
  • scripts/analisar-frametime.py - 堅牢なオフライン分析(Python 3標準ライブラリ)。

関連スキル