claude_runner
CLI for executing Claude Code via builder pattern; YAML schema constants for command registration.
Responsibility Table
| Entity | Responsibility | Input→Output | Scope | Out of Scope |
|---|---|---|---|---|
| claude_runner (lib) | YAML schema constants; COMMANDS_YAML path for consumers |
— | YAML path constant, VerbosityLevel type |
❌ Process execution → claude_runner_core |
| clr (bin) | Standalone Claude Code CLI with session continuity by default | CLI args → process exit code | Arg parsing, session continuation, dry-run, help | ❌ Process execution → claude_runner_core❌ Session paths → claude_profile |
Scope
Library (src/lib.rs):
COMMANDS_YAMLconstant — absolute path toclaude.commands.yamlVerbosityLevel— newtypeu8(0–5) for runner output gating- Zero extra dependencies — always available regardless of features
Binary (src/main.rs, requires enabled feature):
- Mirrors Claude Code's native
--flag valueCLI syntax - Session continuation (
-c) applied by default;--new-sessionstarts fresh - Modes: interactive (default), print (
-p), dry-run (--dry-run) - Flags:
-p,--interactive,--new-session,--model,--verbose,--no-skip-permissions,--max-tokens,--session-dir,--dir,--dry-run,--trace,--system-prompt,--append-system-prompt,--verbosity,-h - Exit code propagation
Files
| File / Directory | Responsibility |
|---|---|
Cargo.toml |
Crate manifest: lib + binary, optional feature-gated deps |
claude.commands.yaml |
Command definitions for .claude and .claude.help |
src/ |
Library and binary source: COMMANDS_YAML, VerbosityLevel, clr CLI |
tests/ |
CLI flag parsing, dry-run, verbosity, execution mode tests |
docs/ |
CLI reference and design documentation |
changelog.md |
Notable changes by version |
Architecture
claude_runner lib (YAML schema + COMMANDS_YAML constant + VerbosityLevel)
└─ COMMANDS_YAML → path to claude.commands.yaml
clr binary (standalone CLI, mirrors claude's --flag syntax)
└─ parse_args() → build_claude_command() → execute_interactive() / execute()
└─ -c applied by default; --new-session to start fresh
YAML consumers (e.g. clt aggregator, build.rs)
└─ aggregate claude.commands.yaml → PHF map (.claude, .claude.help)
Separation of Concerns
claude_runner(THIS crate): YAML schema + standalone CLI with default session continuity. Zero extra deps.claude_runner_core:ClaudeCommandbuilder — used by CLI binary.claude_profile: Session storage paths.
Usage
COMMANDS_YAML constant (lib, no features required):
use COMMANDS_YAML;
aggregator.add;
CLI subprocess (binary, requires enabled feature):
# Interactive mode (default — continues previous session)
# Non-interactive print mode (continues previous session)
# New session (explicit fresh start)
# Dry-run (preview command without executing; shows -c in output)
# Help