OpenClaw · Skill

BAML

Generate type-safe LLM extraction code. Use when creating structured outputs, classification, RAG, or agent workflows.

Web & Frontend Development
v2.0.0
VirusTotal: Suspicious

Install

Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.

Primary command

clawhub install killerapp/baml-codegen

ClawHub installer

npx clawhub@latest install killerapp/baml-codegen

OpenClaw CLI

openclaw skills install killerapp/baml-codegen

Direct OpenClaw install

openclaw install killerapp/baml-codegen

What this skill does

Generate type-safe LLM extraction code. Use when creating structured outputs, classification, RAG, or agent workflows.

Why it matters

BAML acts as a transpiler rather than a runtime dependency, so generated code has no BAML overhead in production and works natively with existing frameworks.

Typical use cases

  • Extracting structured invoice data from unstructured text
  • Building a classification pipeline for support ticket routing
  • Creating a RAG function that returns answers with source citations
  • Wiring a multi-step LangGraph agent to typed LLM outputs
  • Generating a vision extraction function from image inputs

Source instructions

BAML Code Generation

Generate type-safe LLM extraction code. Use when creating structured outputs, classification, RAG, or agent workflows.

Golden Rules

  • NEVER edit baml_client/ - 100% generated, overwritten on every baml-cli generate; check baml_src/generators.baml for output_type (python, typescript, ruby, go)
  • ALWAYS edit baml_src/ - Source of truth for all BAML code
  • Run baml-cli generate after changes - Regenerates typed client code for target language

Philosophy (TL;DR)

  • Schema Is The Prompt - Define data models first, compiler injects types
  • Types Over Strings - Use enums/classes/unions, not string parsing
  • Fuzzy Parsing Is BAML's Job - BAML extracts valid JSON from messy LLM output
  • Transpiler Not Library - Write .baml → generate native code (Python/TypeScript/Ruby/Go), no runtime dependency
  • Test-Driven Prompting - Use VS Code playground or baml-cli test to iterate

Workflow

Analyze → Pattern Match (MCP) → Validate → Generate → Test → Deliver
         ↓ [IF ERRORS] Error Recovery (MCP) → Retry

BAML Syntax

ElementExample
Classclass Invoice { total float @description("Amount") @assert(this > 0) @alias("amt") }
Enumenum Category { Tech @alias("technology") @description("Tech sector"), Finance, Other }
Functionfunction Extract(text: string, img: image?) -> Invoice { client GPT5 prompt #"{{ text }} {{ img }} {{ ctx.output_format }}"# }
Clientclient<llm> GPT5 { provider openai options { model gpt-5 } retry_policy Exponential }
Fallbackclient<llm> Resilient { provider fallback options { strategy [FastModel, SlowModel] } }

Types

  • Primitives: string, int, float, bool | Multimodal: image, audio
  • Containers: Type[] (array), Type? (optional), map<string, Type> (key-value)
  • Composite: Type1 | Type2 (union), nested classes
  • Annotations: @description("..."), @assert(condition), @alias("json_name"), @check(name, condition)

Providers

openai, anthropic, gemini, vertex, bedrock, ollama + any OpenAI-compatible via openai-generic

Pattern Categories

PatternUse CaseModelFramework Markers
ExtractionUnstructured → structuredGPT-5fastapi, next.js
ClassificationCategorizationGPT-5-miniany
RAGAnswers with citationsGPT-5langgraph
AgentsMulti-step reasoningGPT-5langgraph
VisionImage/audio data extractionGPT-5-Visionmultimodal

Resilience

  • retry_policy: retry_policy Exp { max_retries 3 strategy { type exponential_backoff } }
  • fallback client: Chain models [FastCheap, SlowReliable] for cost/reliability tradeoff

MCP Indicators

  • Found patterns from baml-examples | Validated against BoundaryML/baml | Fixed errors using docs | MCP unavailable, using fallback

Output Artifacts

  1. BAML Code - Complete .baml files (types, functions, clients, retry_policy)
  2. Tests - pytest/Jest with 100% function coverage
  3. Integration - Framework-specific client code (LangGraph nodes, FastAPI endpoints, Next.js API routes)
  4. Metadata - Pattern used, token count, cost estimate

References

Related OpenClaw skills

Browse all →
Featured slot

Your product here

Reserve this slot to reach operators and coding-agent buyers.

Shown where builders are actively comparing tools and deployment options.

Advertise