configure-memory-profiling
/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 scratch | Project is not Python — memray/pytest-memray are Python-only |
| Adding pytest-memray integration for CI memory regression detection | Profiling CPU performance — use cProfile or py-spy instead |
| Configuring memory leak detection in test suites | Running load/stress tests — use /configure:load-tests |
| Setting memory thresholds and allocation benchmarks for CI | Quick one-off memory check — run uv run pytest --memray directly |
| Enabling native C extension stack tracking for deep profiling | Profiling 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: !
grep -r 'pytest-memray' pyproject.toml requirements*.txt - memray installed: !
grep -r 'memray' pyproject.toml requirements*.txt - Conftest fixtures: !
grep -l 'memray' tests/conftest.py - Memory test files: !
find tests -maxdepth 2 -name '*memory*' -o -name '*memray*' - Benchmark tests: !
find tests -maxdepth 2 -type d -name 'benchmarks' - CI workflows: !
find .github/workflows -maxdepth 1 -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:
| Tool | Best For |
|---|---|
| pytest-memray (recommended) | Test-integrated profiling, CI/CD memory limits, leak detection |
| memray standalone | Deep analysis, flame graphs, production profiling |
| tracemalloc | Quick 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:
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
--nativeflag) - 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)
- Install pytest-memray:
uv add --group dev pytest-memray - Install native support if
--native:uv add --group dev pytest-memray[native] - Update
pyproject.tomlwith pytest configuration (markers, filterwarnings) - Create
memory-reports/directory - Use configuration templates from REFERENCE.md
Step 6: Create memory profiling test files
- Add memory fixtures to
tests/conftest.py(reports dir setup, threshold fixture, data generator) - Create
tests/test_memory_example.pywith example memory limit tests - Create
tests/benchmarks/test_memory_benchmarks.pyfor trend tracking - 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 --memraytest-memory-report: Run with bin output + generate flame graphtest-memory-leaks:uv run pytest --memray --memray-leak-detectiontest-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
| Context | Command |
|---|---|
| Quick compliance check | /configure:memory-profiling --check-only |
| Auto-fix all issues | /configure:memory-profiling --fix |
| Run memory tests | uv run pytest --memray |
| Detect memory leaks | uv run pytest --memray --memray-leak-detection |
| Run with native tracking | uv run pytest --memray --native |
| Generate flamegraph | uv run memray flamegraph output.bin -o flamegraph.html |
Flags
| Flag | Description |
|---|---|
--check-only |
Report status without offering fixes |
--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 |
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
/configure:tests- Configure testing frameworks/configure:coverage- Code coverage configuration/configure:load-tests- Load and performance testing/configure:all- Run all compliance checks- pytest-memray docs: https://pytest-memray.readthedocs.io
- memray docs: https://bloomberg.github.io/memray