What problem does it solve? Building LLM-powered applications requires structured outputs, prompt management, and reliable client configuration, which is error-prone in general-purpose languages. This Skill teaches the BAML language and CLI so you can define statically-typed LLM functions where the return type is the schema, test orchestration logic offline, and generate typed SDKs for Python and TypeScript. ## Core Features & Use Cases - Typed LLM Functions: Declare functions with client: and prompt: blocks whose return type (class, enum, union) defines the structured output the model must produce. - Full Language Reference: Covers classes, enums, interfaces, pattern matching, error handling with catch/catch_all, green-thread concurrency via spawn/await, and resource safety with defer and cleanup. - CLI-Driven Workflow: Use baml describe for stdlib documentation, baml run -e for fast expression evaluation, baml check for compile-checking, and baml test for offline unit tests. - Use Case: Build an invoice extraction pipeline where an LLM function returns a typed Invoice class, then post-process line items with pure functions and unit-test the logic without making model calls. ## Quick Start Ask the AI to write a BAML function that extracts structured data from text, then compile-check it with baml check and test the pure logic with baml test.