configure-memory-profiling

v2026.09.24

Memory profiling with pytest-memray for Python. Use when setting up memory profiling, adding CI memory regression detection, or setting memory thresholds.

GitHub
Install command
npx skhub add laurigates/configure-memory-profiling
Markdown
SKILL.md

/configure:memory-profiling

Check and configure memory profiling infrastructure for Python projects using pytest-memray.

When to Use This Skill

Use this skill when...Use another approach when...
Setting up memory profiling for a Python project from scratchProject is not Python — memray/pytest-memray are Python-only
Adding pytest-memray integration for CI memory regression detectionProfiling CPU performance — use cProfile or py-spy instead
Configuring memory leak detection in test suitesRunning load/stress tests — use /configure:load-tests
Setting memory thresholds and allocation benchmarks for CIQuick one-off memory check — run uv run pytest --memray directly
Enabling native C extension stack tracking for deep profilingProfiling production systems live — use memray standalone or Grafana

Context

  • Project root: !pwd
  • Python project: !find . -maxdepth 1 \( -name 'pyproject.toml' -o -name 'setup.py' \)
  • pytest-memray installed: !find . -maxdepth 1 \( -name 'pyproject.toml' -o -name 'requirements*.txt' \) -exec grep 'pytest-memray' {} +
  • memray installed: !find . -maxdepth 1 \( -name 'pyproject.toml' -o -name 'requirements*.txt' \) -exec grep 'memray' {} +
  • Conftest fixtures: !find . -path '*/tests/*' -maxdepth 2 -name 'conftest.py' -exec grep -l 'memray' {} +
  • Memory test files: !find . -path '*/tests/*' -maxdepth 3 -name '*memory*' -o -name '*memray*'
  • Benchmark tests: !find . -path '*/tests/*' -maxdepth 3 -type d -name 'benchmarks'
  • CI workflows: !find . -path '*/.github/workflows/*' -maxdepth 3 -name '*memory*'
  • Memory reports dir: !find . -maxdepth 1 -type d -name 'memory-reports'

Parameters

Parse from $ARGUMENTS:

  • --check-only: Report memory profiling compliance status without modifications
  • --fix: Apply all fixes automatically without prompting
  • --threshold <mb>: Set default memory threshold in MB (default: 100)
  • --native: Enable native stack tracking for C extensions

Supported tools:

ToolBest For
pytest-memray (recommended)Test-integrated profiling, CI/CD memory limits, leak detection
memray standaloneDeep analysis, flame graphs, production profiling
tracemallocQuick debugging, no dependencies, lightweight

Execution

Execute this memory profiling configuration check:

Step 1: Verify this is a Python project

Read the context values. If no pyproject.toml or setup.py is found, report "Not a Python project" and stop.

Step 2: Check latest tool versions

Use WebSearch or WebFetch to verify current versions:

  1. pytest-memray: Check PyPI
  2. memray: Check PyPI

Step 3: Analyze current memory profiling setup

Check for complete setup:

  • pytest-memray installed as dev dependency
  • memray backend installed
  • pytest configuration in pyproject.toml (markers, addopts)
  • Memory limit tests using @pytest.mark.limit_memory
  • Leak detection enabled (--memray-leak-detection)
  • Native tracking configured (if --native flag)
  • CI/CD integration configured
  • Reports directory exists

Step 4: Generate compliance report

Print a compliance report covering:

  • Installation status (pytest-memray, memray, pytest versions)
  • Configuration (pytest integration, markers, leak detection, native tracking)
  • Test coverage (memory limit tests, allocation benchmarks)
  • CI/CD integration (workflow, threshold, artifact upload, trend tracking)

End with overall issue count and recommendations.

If --check-only is set, stop here.

Step 5: Install and configure pytest-memray (if --fix or user confirms)

  1. Install pytest-memray: uv add --group dev pytest-memray
  2. Install native support if --native: uv add --group dev pytest-memray[native]
  3. Update pyproject.toml with pytest configuration (markers, filterwarnings)
  4. Create memory-reports/ directory
  5. Use configuration templates from REFERENCE.md

Step 6: Create memory profiling test files

  1. Add memory fixtures to tests/conftest.py (reports dir setup, threshold fixture, data generator)
  2. Create tests/test_memory_example.py with example memory limit tests
  3. Create tests/benchmarks/test_memory_benchmarks.py for trend tracking
  4. Use test templates from REFERENCE.md

Step 7: Add package scripts

Add memory profiling commands to Makefile or pyproject.toml:

  • test-memory: uv run pytest --memray
  • test-memory-report: Run with bin output + generate flame graph
  • test-memory-leaks: uv run pytest --memray --memray-leak-detection
  • test-memory-native: uv run pytest --memray --native

Step 8: Configure CI/CD integration

Create .github/workflows/memory-profiling.yml with:

  • Memory profiling on PRs (detect regressions)
  • Scheduled weekly benchmarks for trend tracking
  • Flame graph generation
  • PR comment with results
  • Use workflow template from REFERENCE.md

Step 9: Update standards tracking

Update .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

Step 10: Print final compliance report

Print a summary of packages installed, configuration applied, test files created, commands available, CI/CD configured, and next steps for the user.

For detailed test templates, CI workflows, and standalone memray commands, see REFERENCE.md.

Agentic Optimizations

ContextCommand
Quick compliance check/configure:memory-profiling --check-only
Auto-fix all issues/configure:memory-profiling --fix
Run memory testsuv run pytest --memray
Detect memory leaksuv run pytest --memray --memray-leak-detection
Run with native trackinguv run pytest --memray --native
Generate flamegraphuv run memray flamegraph output.bin -o flamegraph.html

Flags

FlagDescription
--check-onlyReport status without offering fixes
--fixApply all fixes automatically without prompting
--threshold <mb>Set default memory threshold in MB (default: 100)
--nativeEnable native stack tracking for C extensions

Examples

# 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

Error Handling

  • Not a Python project: Skip with message, suggest manual setup
  • pytest not installed: Offer to install pytest first
  • memray not supported: Note platform limitations (Linux/macOS only)
  • Native tracking unavailable: Warn about missing debug symbols
  • CI workflow exists: Offer to update or skip

See Also

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

configure-plugin/skills/configure-memory-profiling

Default branch

main

Latest commit

1668324

Tree SHA

b2d4cc3