Babysitter AST Manipulation
Expert skill for abstract syntax tree design, traversal, transformation, and manipulation patterns
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/ast-manipulation" ~/.claude/skills/a5c-ai-babysitter-ast-manipulation && rm -rf "$T"
manifest:
library/specializations/programming-languages/skills/ast-manipulation/SKILL.mdsource content
AST Manipulation Skill
Overview
Expert skill for abstract syntax tree design, traversal, transformation, and manipulation patterns.
Capabilities
- Design typed AST node hierarchies
- Implement visitor and transformer patterns
- Build AST rewriting systems
- Implement AST diffing and patching
- Generate AST pretty-printers and formatters
- Support AST serialization (JSON, binary)
- Implement pattern matching on AST structures
- Design span/location tracking systems
Target Processes
- ast-design.js
- semantic-analysis.js
- ir-design.js
- code-generation-llvm.js
- lsp-server-implementation.js
- macro-system-implementation.js
Dependencies
None (core skill)
Usage Guidelines
- Node Design: Design immutable AST nodes with clear ownership semantics
- Location Tracking: Include source spans on all nodes from the beginning
- Visitor Pattern: Implement visitor pattern for extensible traversal
- Transformation: Use transformer pattern for AST-to-AST transformations
- Serialization: Support both human-readable (JSON) and efficient (binary) serialization
Output Schema
{ "type": "object", "properties": { "nodeTypes": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "fields": { "type": "array" }, "parent": { "type": "string" } } } }, "visitors": { "type": "array", "items": { "type": "string" } }, "transformers": { "type": "array", "items": { "type": "string" } }, "generatedFiles": { "type": "array", "items": { "type": "string" } } } }