mcpField
C
configure-memory-profiling

configure-memory-profiling

github.com/laurigatesテスト・品質5956 回インストール1 日前に更新
リポジトリ

configure-memory-profiling について

pytest-memray を中心に、Python プロジェクトのメモリプロファイリングを確認・設定するエージェントスキルです。テストのしきい値、リーク検出、CI 設定を扱い、状況確認のみの実行と設定変更の両方に対応します。

主な機能

  1. 01pytest-memray の設定状況を確認
  2. 02メモリ制限とリーク検出を設定
  3. 03メモリテストとベンチマークを作成
  4. 04CI のメモリ回帰チェックを設定
  5. 05C 拡張向けネイティブスタック追跡

活用シーン

  1. 01Python プロジェクトにメモリ分析を導入
  2. 02テストスイートでリークを検出
  3. 03CI でメモリ回帰を監視
  4. 04C 拡張のネイティブスタックを追跡

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill configure-memory-profiling

インストール後、Claude Code で/configure-memory-profilingを入力して読み込まれたか確認します。

詳細

/configure:memory-profiling

pytest-memray を使用して、Python プロジェクトのメモリプロファイリング基盤を確認、設定します。

このスキルを使う場面

次の場合にこのスキルを使用します…次の場合は別の方法を使用します…
Python プロジェクトのメモリプロファイリングをゼロから設定するプロジェクトが Python ではない場合 — memray と pytest-memray は Python 専用です
CI でのメモリ回帰検出のために pytest-memray を統合するCPU パフォーマンスをプロファイリングする場合 — 代わりに cProfile または py-spy を使用します
テストスイートでメモリリーク検出を設定する負荷テスト/ストレステストを実行する場合 — /configure:load-tests を使用します
CI 用のメモリしきい値と割り当てベンチマークを設定する手早く一度だけメモリを確認する場合 — uv run pytest --memray を直接実行します
詳細なプロファイリングのためにネイティブ C 拡張のスタック追跡を有効にする本番システムを稼働中にプロファイリングする場合 — memray 単体または Grafana を使用します

コンテキスト

  • プロジェクトルート: !pwd
  • Python プロジェクト: !find . -maxdepth 1 \( -name 'pyproject.toml' -o -name 'setup.py' \)
  • pytest-memray のインストール状況: !grep -r 'pytest-memray' pyproject.toml requirements*.txt
  • memray のインストール状況: !grep -r 'memray' pyproject.toml requirements*.txt
  • Conftest フィクスチャ: !grep -l 'memray' tests/conftest.py
  • メモリテストファイル: !find tests -maxdepth 2 -name '*memory*' -o -name '*memray*'
  • ベンチマークテスト: !find tests -maxdepth 2 -type d -name 'benchmarks'
  • CI ワークフロー: !find .github/workflows -maxdepth 1 -name '*memory*'
  • メモリレポートディレクトリ: !find . -maxdepth 1 -type d -name 'memory-reports'

パラメーター

$ARGUMENTS から解析します:

  • --check-only:変更せずにメモリプロファイリングの準拠状況を報告します
  • --fix:確認を求めず、すべての修正を自動で適用します
  • --threshold <mb>:デフォルトのメモリしきい値を MB 単位で設定します(デフォルト:100)
  • --native:C 拡張のネイティブスタック追跡を有効にします

対応ツール:

ツール最適な用途
pytest-memray(推奨)テストに統合したプロファイリング、CI/CD のメモリ制限、リーク検出
memray 単体詳細な分析、フレームグラフ、本番環境でのプロファイリング
tracemalloc手早いデバッグ、依存関係なし、軽量

実行

このメモリプロファイリング設定チェックを実行します:

ステップ 1:Python プロジェクトであることを確認する

コンテキストの値を確認します。pyproject.toml も setup.py も見つからない場合は、「Not a Python project」と報告して停止します。

ステップ 2:ツールの最新バージョンを確認する

WebSearch または WebFetch を使用して、現在のバージョンを確認します:

  1. pytest-memray:PyPI を確認します
  2. memray:PyPI を確認します
ステップ 3:現在のメモリプロファイリング設定を分析する

設定が整っているか確認します:

  • pytest-memray が開発用依存関係としてインストールされている
  • memray バックエンドがインストールされている
  • pyproject.toml に pytest の設定がある(マーカー、addopts)
  • @pytest.mark.limit_memory を使用したメモリ制限テストがある
  • リーク検出が有効になっている(--memray-leak-detection)
  • ネイティブ追跡が設定されている(--native フラグが指定されている場合)
  • CI/CD 統合が設定されている
  • レポートディレクトリが存在する
ステップ 4:準拠レポートを生成する

以下を含む準拠レポートを出力します:

  • インストール状況(pytest-memray、memray、pytest の各バージョン)
  • 設定(pytest 統合、マーカー、リーク検出、ネイティブ追跡)
  • テストカバレッジ(メモリ制限テスト、割り当てベンチマーク)
  • CI/CD 統合(ワークフロー、しきい値、アーティファクトのアップロード、傾向の追跡)

最後に、問題の合計数と推奨事項を示します。

--check-only が指定されている場合は、ここで停止します。

ステップ 5:pytest-memray をインストールして設定する(--fix が指定された場合、またはユーザーが確認した場合)
  1. pytest-memray をインストールします:uv add --group dev pytest-memray
  2. --native が指定されている場合は、ネイティブサポートをインストールします:uv add --group dev pytest-memray[native]
  3. pytest の設定(マーカー、filterwarnings)を使って pyproject.toml を更新します
  4. memory-reports/ ディレクトリを作成します
  5. REFERENCE.md の設定テンプレートを使用します
ステップ 6:メモリプロファイリングのテストファイルを作成する
  1. tests/conftest.py にメモリ用フィクスチャを追加します(レポートディレクトリの設定、しきい値フィクスチャ、データジェネレーター)。
  2. メモリ上限テストの例を含む tests/test_memory_example.py を作成します。
  3. 傾向追跡用に tests/benchmarks/test_memory_benchmarks.py を作成します。
  4. REFERENCE.md のテストテンプレートを使用します。
ステップ 7:パッケージスクリプトを追加する

メモリプロファイリング用コマンドを Makefile または pyproject.toml に追加します。

  • test-memory:uv run pytest --memray
  • test-memory-report:bin 出力を有効にして実行し、フレームグラフを生成します
  • test-memory-leaks:uv run pytest --memray --memray-leak-detection
  • test-memory-native:uv run pytest --memray --native
ステップ 8:CI/CD 統合を設定する

次の内容を含む .github/workflows/memory-profiling.yml を作成します。

  • PR でのメモリプロファイリング(リグレッションを検出)
  • 傾向追跡のため、週次でベンチマークをスケジュール実行
  • フレームグラフの生成
  • 結果を PR にコメント
  • REFERENCE.md のワークフローテンプレートを使用
ステップ 9:標準のトラッキングを更新する

.project-standards.yaml を更新します。

components:
  memory_profiling: "2025.1"
  memory_profiling_tool: "pytest-memray"
  memory_profiling_threshold_mb: 100
  memory_profiling_leak_detection: true
  memory_profiling_ci: true
  memory_profiling_native: false
ステップ 10:最終的な準拠レポートを出力する

インストールしたパッケージ、適用した設定、作成したテストファイル、利用可能なコマンド、設定した CI/CD、ユーザー向けの次のステップをまとめて出力します。

テストテンプレート、CI ワークフロー、単独で実行する memray コマンドの詳細については、REFERENCE.md を参照してください。

エージェント向けの最適化

コンテキストコマンド
手早く準拠状況を確認/configure:memory-profiling --check-only
すべての問題を自動修正/configure:memory-profiling --fix
メモリテストを実行uv run pytest --memray
メモリリークを検出uv run pytest --memray --memray-leak-detection
ネイティブトラッキングを有効にして実行uv run pytest --memray --native
フレームグラフを生成uv run memray flamegraph output.bin -o flamegraph.html

フラグ

フラグ説明
--check-only修正を提案せずにステータスを報告します
--fix確認を求めず、すべての修正を自動的に適用します
--threshold <mb>デフォルトのメモリしきい値を MB 単位で設定します(デフォルト:100)
--nativeC 拡張機能のネイティブスタックトラッキングを有効にします

使用例

# Check compliance and offer fixes
/configure:memory-profiling

# Check only, no modifications
/configure:memory-profiling --check-only

# Auto-fix with custom threshold
/configure:memory-profiling --fix --threshold 200

# Enable native tracking for C extensions
/configure:memory-profiling --fix --native

エラー処理

  • Python プロジェクトではない場合:メッセージを表示してスキップし、手動でのセットアップを提案します
  • pytest がインストールされていない場合:先に pytest をインストールするか確認します
  • memray がサポートされていない場合:プラットフォームの制限(Linux/macOS のみ)を記載します
  • ネイティブトラッキングを利用できない場合:デバッグシンボルがないことを警告します
  • CI ワークフローが存在する場合:更新するか、スキップするか確認します

関連項目

  • /configure:tests - テストフレームワークの設定
  • /configure:coverage - コードカバレッジの設定
  • /configure:load-tests - 負荷テストとパフォーマンステスト
  • /configure:all - すべての準拠チェックを実行
  • pytest-memray のドキュメント:https://pytest-memray.readthedocs.io
  • memray のドキュメント:https://bloomberg.github.io/memray

コメント