# CLI Internals `internal/cli` parses terminal arguments, loads configuration, constructs app requests, and translates app results to bounded JSON summaries. The user contract belongs in the [CLI reference](../cli.md). The root `--version` flag reports the build version supplied by `internal/buildinfo`. Tagged release builds replace its development default at link time. For each `generate` or `run` action, `Runner` constructs one project-owned Promptkit executor after configuration loads. It passes the executor and any `--llm-debug-dir` request into the app. `run` accepts the debug flag as well as `generate`; the app, not the CLI, secures and initializes the debug root. Summaries include identity, status, safe artifact paths, and notification provenance. They intentionally exclude module values, YAML package bodies, raw generated text, rendered prompts, schemas, endpoints, credentials, and full Distributor payloads. A failed action with a partial result still emits its safe summary before its error is returned. CLI code owns no report policy, weather collection, persistence, provider execution, or notification policy. Focused checks: ```sh go test ./internal/cli ```