Babysitter SSA/IR Design

Expert skill for designing intermediate representations and implementing SSA construction

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/ssa-ir-design" ~/.claude/skills/a5c-ai-babysitter-ssa-ir-design && rm -rf "$T"
manifest: library/specializations/programming-languages/skills/ssa-ir-design/SKILL.md
source content

SSA/IR Design Skill

Overview

Expert skill for designing intermediate representations and implementing SSA (Static Single Assignment) construction.

Capabilities

  • Design control flow graph (CFG) structures
  • Implement dominance tree computation
  • Implement SSA construction algorithms (Cytron et al.)
  • Design phi function placement and pruning
  • Implement SSA destruction for register allocation
  • Design sea-of-nodes IR representations
  • Implement basic block reordering
  • Design IR verification passes

Target Processes

  • ir-design.js
  • code-generation-llvm.js
  • jit-compiler-development.js
  • semantic-analysis.js

Dependencies

Compiler optimization textbooks (Engineering a Compiler, Modern Compiler Implementation)

Usage Guidelines

  1. CFG Design: Start with a clear CFG representation with explicit entry/exit blocks
  2. Dominance: Implement dominance computation before SSA construction
  3. Phi Placement: Use dominance frontiers for minimal phi placement
  4. Verification: Build IR verification passes to catch malformed IR early
  5. Debugging: Include IR pretty-printing from the start for debugging

Output Schema

{
  "type": "object",
  "properties": {
    "irStyle": {
      "type": "string",
      "enum": ["basic-blocks", "sea-of-nodes", "continuation-passing"]
    },
    "ssaConstruction": {
      "type": "string",
      "enum": ["cytron", "braun", "sreedhar"]
    },
    "passes": {
      "type": "array",
      "items": { "type": "string" }
    },
    "generatedFiles": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}