# `ClaudeWrapper.Command`
[🔗](https://github.com/genagent/claude_wrapper_ex/blob/main/lib/claude_wrapper/command.ex#L1)

Behaviour for CLI commands.

Every command knows how to build its argument list and how to
parse its output. This is the Elixir equivalent of the Rust
`ClaudeCommand` trait.

# `args`

```elixir
@type args() :: [String.t()]
```

# `args`

```elixir
@callback args() :: args()
```

# `parse_output`

```elixir
@callback parse_output(stdout :: String.t(), exit_code :: non_neg_integer()) ::
  {:ok, term()} | {:error, term()}
```

# `run`

```elixir
@spec run(module(), struct(), ClaudeWrapper.Config.t()) ::
  {:ok, term()} | {:error, term()}
```

Run a command synchronously through the configured `ClaudeWrapper.Runner`.

Returns the parsed output on success. On timeout the default runner
abandons the OS process; `ClaudeWrapper.Runner.Forcola` kills it.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
