Babysitter Type Theory

Expert skill in type theory foundations for implementing type systems including inference, checking, and subtyping

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

Type Theory Skill

Overview

Expert skill in type theory foundations for implementing type systems including inference, checking, and subtyping.

Capabilities

  • Implement Hindley-Milner type inference with Algorithm W
  • Implement constraint-based type inference with unification
  • Design and implement bidirectional type checking
  • Implement structural and nominal subtyping
  • Handle variance (covariant, contravariant, invariant)
  • Implement row polymorphism and record types
  • Design flow-sensitive type narrowing
  • Implement type error message generation

Target Processes

  • type-system-implementation.js
  • semantic-analysis.js
  • generics-polymorphism.js
  • effect-system-design.js

Dependencies

Academic type theory literature (TAPL, ATTAPL)

Usage Guidelines

  1. Algorithm Selection: Choose between HM inference and bidirectional checking based on language features
  2. Constraint Generation: Separate constraint generation from solving for cleaner implementation
  3. Error Localization: Track constraint origins for accurate error location
  4. Variance: Document variance rules explicitly for all generic positions
  5. Gradual Typing: Consider gradual typing for mixed typed/untyped codebases

Output Schema

{
  "type": "object",
  "properties": {
    "inferenceAlgorithm": {
      "type": "string",
      "enum": ["hindley-milner", "bidirectional", "constraint-based", "flow-sensitive"]
    },
    "subtypingKind": {
      "type": "string",
      "enum": ["structural", "nominal", "mixed"]
    },
    "features": {
      "type": "array",
      "items": { "type": "string" }
    },
    "generatedFiles": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}