configure-memory-profiling について
pytest-memray を中心に、Python プロジェクトのメモリプロファイリングを確認・設定するエージェントスキルです。テストのしきい値、リーク検出、CI 設定を扱い、状況確認のみの実行と設定変更の両方に対応します。
主な機能
- 01pytest-memray の設定状況を確認
- 02メモリ制限とリーク検出を設定
- 03メモリテストとベンチマークを作成
- 04CI のメモリ回帰チェックを設定
- 05C 拡張向けネイティブスタック追跡
活用シーン
- 01Python プロジェクトにメモリ分析を導入
- 02テストスイートでリークを検出
- 03CI でメモリ回帰を監視
- 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 を使用して、現在のバージョンを確認します:
ステップ 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 が指定された場合、またはユーザーが確認した場合)
- pytest-memray をインストールします:
uv add --group dev pytest-memray --nativeが指定されている場合は、ネイティブサポートをインストールします:uv add --group dev pytest-memray[native]- pytest の設定(マーカー、filterwarnings)を使って
pyproject.tomlを更新します memory-reports/ディレクトリを作成します- REFERENCE.md の設定テンプレートを使用します
ステップ 6:メモリプロファイリングのテストファイルを作成する
tests/conftest.pyにメモリ用フィクスチャを追加します(レポートディレクトリの設定、しきい値フィクスチャ、データジェネレーター)。- メモリ上限テストの例を含む
tests/test_memory_example.pyを作成します。 - 傾向追跡用に
tests/benchmarks/test_memory_benchmarks.pyを作成します。 - REFERENCE.md のテストテンプレートを使用します。
ステップ 7:パッケージスクリプトを追加する
メモリプロファイリング用コマンドを Makefile または pyproject.toml に追加します。
test-memory:uv run pytest --memraytest-memory-report:bin 出力を有効にして実行し、フレームグラフを生成しますtest-memory-leaks:uv run pytest --memray --memray-leak-detectiontest-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) |
--native | C 拡張機能のネイティブスタックトラッキングを有効にします |
使用例
# 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