Babysitter Tree-sitter

Expert skill for creating tree-sitter grammars for incremental parsing and syntax highlighting

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

Tree-sitter Skill

Overview

Expert skill for creating tree-sitter grammars for incremental parsing and syntax highlighting.

Capabilities

  • Write tree-sitter grammar.js files
  • Handle tree-sitter external scanners
  • Design queries for syntax highlighting
  • Implement incremental parsing support
  • Handle tree-sitter error recovery
  • Generate bindings for various languages
  • Integrate with editors (VS Code, Neovim, Helix)
  • Test grammars with corpus files

Target Processes

  • language-grammar-design.js
  • lexer-implementation.js
  • parser-development.js
  • lsp-server-implementation.js

Dependencies

  • tree-sitter CLI
  • tree-sitter crates/npm packages

Usage Guidelines

  1. Grammar.js: Follow tree-sitter grammar.js conventions
  2. External Scanners: Use external scanners for context-sensitive lexing
  3. Queries: Write highlight.scm and other query files for editor integration
  4. Testing: Build comprehensive corpus test files
  5. Error Recovery: Design grammar with error recovery in mind

Output Schema

{
  "type": "object",
  "properties": {
    "grammarName": { "type": "string" },
    "nodeTypes": {
      "type": "array",
      "items": { "type": "string" }
    },
    "queries": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": ["highlights", "injections", "locals", "tags", "folds"]
      }
    },
    "bindings": {
      "type": "array",
      "items": { "type": "string" }
    },
    "generatedFiles": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}