Blog
Stop parsing an LLM's prose with regular expressions. Derive a JSON schema from your Go or Rust type so the schema and the type cannot drift.
Opt-in telemetry for a command-line tool: off until someone says yes, no personal data, a pluggable backend, and a consent flow that meets GDPR.
Tool calling and the reason-act-observe loop explained, and how to define a tool in Go so the schema comes from the type rather than by hand.
Documentation loses to --help on location, so embed the docs in the binary: a terminal browser and an assistant grounded only in your own pages.
BDD earns its place on narratives such as a lifecycle state machine, and nowhere else. Keep table-driven Go tests as the baseline everywhere.
You do not need LangChain in a command-line tool. A four-method chat interface can hide five providers, tool calling and structured output.
Config loaders ignore keys they do not recognise, so a typo runs on the old value. Deriving a validation schema from struct tags to catch it.
Go allows only one trailing variadic parameter, so adding another argument to a function that already has one is impossible. What to do instead.
The other audience for a CLI is the script that greps its output and breaks. Giving every command a JSON output mode with one response envelope.
When a Go CLI grows into a service: ordered graceful shutdown on SIGTERM, separate liveness and readiness probes, and an opt-in restart supervisor.