Agent Skills: memory-leak-detector

Detect memory leaks in desktop applications through heap analysis and object tracking

UncategorizedID: a5c-ai/babysitter/memory-leak-detector

Install this agent skill to your local

pnpm dlx add-skill https://github.com/a5c-ai/babysitter/tree/HEAD/plugins/babysitter/skills/babysit/process/specializations/desktop-development/skills/memory-leak-detector

Skill Files

Browse the full folder contents for memory-leak-detector.

Download Skill

Loading file tree…

plugins/babysitter/skills/babysit/process/specializations/desktop-development/skills/memory-leak-detector/SKILL.md

Skill Metadata

Name
memory-leak-detector
Description
Detect memory leaks in desktop applications through heap analysis and object tracking

memory-leak-detector

Detect memory leaks in desktop applications through heap snapshot analysis, object tracking, and growth pattern detection.

Capabilities

  • Capture and compare heap snapshots
  • Track object allocation growth
  • Identify retained objects
  • Detect common leak patterns
  • Generate leak reports
  • Suggest fixes

Input Schema

{
  "type": "object",
  "properties": {
    "projectPath": { "type": "string" },
    "framework": { "enum": ["electron", "native", "qt"] },
    "duration": { "type": "number", "default": 60 }
  },
  "required": ["projectPath"]
}

Detection Approach

// Heap snapshot comparison
const v8 = require('v8');

function detectLeaks(iterations = 3, intervalMs = 10000) {
  const snapshots = [];

  const interval = setInterval(() => {
    global.gc(); // Requires --expose-gc
    const snapshot = v8.getHeapStatistics();
    snapshots.push(snapshot);

    if (snapshots.length >= iterations) {
      clearInterval(interval);
      analyzeGrowth(snapshots);
    }
  }, intervalMs);
}

function analyzeGrowth(snapshots) {
  const growth = snapshots[snapshots.length - 1].used_heap_size -
                 snapshots[0].used_heap_size;
  console.log(`Heap growth: ${growth / 1024 / 1024} MB`);
}

Common Leak Patterns

  1. Event listeners not removed
  2. Closures holding references
  3. Global variable accumulation
  4. Timer/interval not cleared
  5. DOM node detachment

Related Skills

  • electron-memory-profiler
  • startup-time-profiler