# `Vibe.Session.Command.Command`
[🔗](https://github.com/elixir-vibe/vibe/blob/v0.2.3/lib/vibe/session/command/command.ex#L1)

Slash command: /command — run a shell command.

# `result`

```elixir
@type result() ::
  {:events, [Vibe.Event.t()]}
  | {:command, atom() | {atom(), map()}}
  | :compact
  | :ignore
```

# `spec`

```elixir
@type spec() ::
  Vibe.Session.Command.Spec.t()
  | %{
      :name =&gt; String.t(),
      optional(:aliases) =&gt; [String.t()],
      optional(:description) =&gt; String.t(),
      optional(:selectors) =&gt; [atom()]
    }
```

# `run`

```elixir
@callback run(String.t(), map()) :: result()
```

# `selector_action`
*optional* 

```elixir
@callback selector_action(term(), map()) :: result() | {:command, String.t()}
```

# `spec`

```elixir
@callback spec() :: spec()
```

---

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