ios-memgraph-leaks — Codex skill: what it does, how to install
Captures and inspects iOS leaks from a simulator process or .memgraph. Useful for tracing retained objects and checking a fix with before-and-after evidence.
npx skills add openai/plugins --skill ios-memgraph-leaks -a codexWhat ios-memgraph-leaks does
This skill helps prove a leak in a live simulator process or an existing .memgraph. Its workflow repeats the release scenario, captures memory with scripts/capture_sim_memgraph.sh, summarizes leaks through scripts/summarize_memgraph_leaks.py, then inspects ownership with leaks --traceTree and grouped leak output.
After a patch, it reruns the same flow on the same simulator when possible and compares leaked types, ownership paths, and counts. A smaller .memgraph alone is not proof of a fix; the retaining path should disappear as well. Check the simulator UDID, bundle identifier, and capture paths before starting. Pair it with ../ios-debugger-agent/SKILL.md when the task also includes building, installing, launching, UI driving, logs, or screenshots.
What it helps with
- capture a
.memgraphfrom a running simulator app - summarize leaked objects in a report
- trace the ownership path keeping an object alive
- compare leak evidence before and after a patch
Example prompts for the agent
- “Capture a `.memgraph` from the running simulator app and summarize the leaks.”
- “Inspect `/path/to/app.memgraph` with `--trace-limit 5` and write the result to `/path/to/leak-summary.md`.”
- “Repeat the same flow after the fix and report disappeared types, remaining leaks, and ownership paths.”
How to install ios-memgraph-leaks
1Skills CLI (Vercel)
npx skills add openai/plugins --skill ios-memgraph-leaks -a codex2Manually: put the files in place
.agents/skills/ios-memgraph-leaks/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add openai/plugins --skill ios-memgraph-leaks -a claude-code2Manually: put the files in place
~/.claude/skills/ios-memgraph-leaks/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/ios-memgraph-leaks/
Manually: put the files in place
.cursor/skills/ios-memgraph-leaks/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install openai/plugins ios-memgraph-leaks2Manually: put the files in place
.github/skills/ios-memgraph-leaks/SKILL.mdPlatform CLI
gemini skills install https://github.com/openai/plugins --path plugins/build-ios-apps/skills/ios-memgraph-leaksManually: put the files in place
.devin/skills/ios-memgraph-leaks/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set199
The whole set →Similar
Questions about ios-memgraph-leaks
How do I install ios-memgraph-leaks in Codex?
Run npx skills add openai/plugins --skill ios-memgraph-leaks -a codex, then use .agents/skills/ios-memgraph-leaks/SKILL.md.
What does ios-memgraph-leaks do?
It captures a memgraph from an iOS simulator process, summarizes leaks, and traces the ownership path that keeps an object alive. After a patch, it compares the same flow before and after the change.
Do I need ios-debugger-agent to use this skill?
Use it with ../ios-debugger-agent/SKILL.md when the task also requires building, installing, launching, UI control, logs, or screenshots.
Source text
SKILL.md · MIT
---
name: ios-memgraph-leaks
description: Capture and inspect iOS leaks and memgraphs. Use when debugging leaked objects, retain cycles, memory growth, or before/after leak evidence.
---
# iOS Memgraph Leaks
Use this skill to prove iOS leaks from a live simulator process or an existing `.memgraph`. Pair it with `../ios-debugger-agent/SKILL.md` when the task also needs simulator build, install, launch, UI driving, logs, or screenshots.
## Core Workflow
1. Build, launch, and drive the exact flow that should release objects.
2. Capture a memgraph from the running simulator process with `scripts/capture_sim_memgraph.sh`.
3. Summarize leaks with `scripts/summarize_memgraph_leaks.py`.
4. For each app-owned leaked type, inspect ownership with `leaks --traceTree=<address> <file.memgraph>` and grouped leak evidence.
5. Make the smallest root-cause patch, then recapture the same flow on the same simulator when possible.
6. Report proof: before/after leak counts, disappeared root types, remaining leaks, memgraph paths, and test/build results.
Do not claim a leak fix from a smaller memgraph alone. A credible fix explains the ownership path that kept the object alive and shows that the same path or type disappears after the patch.
## Capture
Prefer capturing from the simulator already used for the reproduction. Resolve the simulator UDID and app bundle identifier, then capture the running app:
```bash
SKILL_DIR="<absolute path to this loaded skill folder>"
SIM="<simulator-udid>"
BUNDLE_ID="<app.bundle.identifier>"
MEMGRAPH_DIR="$(mktemp -d "${TMPDIR:-/tmp}/codex-ios-memgraph.XXXXXX")"
"$SKILL_DIR/scripts/capture_sim_memgraph.sh" \
--udid "$SIM" \
--bundle-id "$BUNDLE_ID" \
--out-dir "$MEMGRAPH_DIR"
```
Do not derive `SKILL_DIR` from the target app repo's `pwd`; installed plugins usually live outside the app being debugged. Store captures in a run-specific temp or user-chosen folder, not under `SKILL_DIR`.
If the process cannot be found, confirm the bundle identifier and use `xcrun simctl spawn "$SIM" launchctl list` to inspect running labels.
## Summarize
Summarize an existing memgraph:
```bash
"$SKILL_DIR/scripts/summarize_memgraph_leaks.py" \
/path/to/app.memgraph \
--trace-limit 5 \
--out /path/to/leak-summary.md
```
Use `--trace-limit` sparingly. Trace trees are useful root-cause evidence, but large memgraphs can produce noisy output. If a trace tree says `Found 0 roots referencing`, treat it as an unreachable/self-retained leak candidate and use the summary's grouped leak tree or `leaks --groupByType <file.memgraph>` to identify the retained fields and payload chain.
## Root Cause Rules
- Identify the first app-owned leaked type in the leak output or trace.
- Determine the intended lifetime: process, session, account, view, request, or task.
- Treat lazy or deferred allocation as a scope reduction, not a leak fix, unless the original eager allocation itself violated the intended lifetime.
- Prove retain-cycle claims with either a `traceTree` ownership path or an isolated reproduction.
- For unreachable/self-cycle leaks, `traceTree` may have no root path; use `leaks --groupByType` plus source verification to find the self-retaining edge.
- Do not claim success just because total leak count went down; prove the specific type or path disappeared.
- Separate real root-cause branches from candidate/noise branches.
- Prefer deleting the retaining edge over adding broad cleanup code.
## Report
A useful leak report includes:
- the exact flow and simulator/app build
- the memgraph and summary paths
- app-owned leaked types and counts
- at least one ownership path, or grouped leak tree evidence when the object is unreachable from roots
- the smallest proposed or applied retaining-edge fix
- before/after evidence when a fix was made
If the memgraph shows only framework/runtime noise, say that and recommend the next narrower capture rather than inventing an app leak.
© OpenAI · MIT · openai/plugins