Babysitter Garbage Collection

Expert skill for garbage collector design and implementation including various collection algorithms

install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/programming-languages/skills/garbage-collection" ~/.claude/skills/a5c-ai-babysitter-garbage-collection && rm -rf "$T"
manifest: library/specializations/programming-languages/skills/garbage-collection/SKILL.md
source content

Garbage Collection Skill

Overview

Expert skill for garbage collector design and implementation including various collection algorithms.

Capabilities

  • Implement mark-sweep collection
  • Implement copying/semi-space collectors
  • Implement generational collection with write barriers
  • Implement concurrent/incremental marking (tri-color)
  • Design object header layouts and type info
  • Implement precise vs conservative root scanning
  • Design card table and remembered set implementations
  • Implement finalizers and weak references

Target Processes

  • garbage-collector-implementation.js
  • memory-allocator-design.js
  • interpreter-implementation.js
  • bytecode-vm-implementation.js

Dependencies

GC Handbook literature (Jones, Hosking, Moss)

Usage Guidelines

  1. Algorithm Selection: Start with simple mark-sweep, evolve to generational as needed
  2. Write Barriers: Design write barriers early if considering generational/concurrent GC
  3. Root Scanning: Implement precise root scanning for safety
  4. Pause Times: Measure pause times and optimize for application requirements
  5. Testing: Build GC stress tests and allocation-heavy benchmarks

Output Schema

{
  "type": "object",
  "properties": {
    "algorithm": {
      "type": "string",
      "enum": ["mark-sweep", "copying", "mark-compact", "generational", "concurrent"]
    },
    "writeBarrier": {
      "type": "string",
      "enum": ["none", "card-table", "remembered-set", "snapshot-at-beginning", "incremental-update"]
    },
    "rootScanning": {
      "type": "string",
      "enum": ["conservative", "precise"]
    },
    "generatedFiles": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}