Babysitter REPL Development

Expert skill for building interactive REPLs with rich editing and evaluation features

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

REPL Development Skill

Overview

Expert skill for building interactive REPLs with rich editing and evaluation features.

Capabilities

  • Implement readline integration with history
  • Handle multi-line input detection
  • Implement tab completion for identifiers
  • Design incremental compilation for REPL
  • Handle top-level expression evaluation
  • Implement persistent REPL state
  • Design pretty-printing for values
  • Support special REPL commands (:help, :type, etc.)

Target Processes

  • repl-development.js
  • interpreter-implementation.js
  • lsp-server-implementation.js

Dependencies

  • rustyline
  • readline libraries
  • linenoise

Usage Guidelines

  1. Line Editing: Use established readline libraries for robust line editing
  2. Multi-line: Detect incomplete expressions for multi-line input
  3. Completion: Implement context-aware tab completion
  4. History: Persist history across sessions
  5. Commands: Provide useful meta-commands (:help, :type, :quit, etc.)

Output Schema

{
  "type": "object",
  "properties": {
    "lineLibrary": {
      "type": "string",
      "enum": ["readline", "rustyline", "linenoise", "custom"]
    },
    "features": {
      "type": "array",
      "items": { "type": "string" }
    },
    "commands": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "description": { "type": "string" }
        }
      }
    },
    "generatedFiles": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}