# `Slither.Context`
[🔗](https://github.com/nshkrdotcom/slither/blob/v0.1.0/lib/slither/context.ex#L1)

Run context passed through every stage in a Slither pipeline.

Contains session affinity for Snakepit/SnakeBridge, store handles,
run metadata, and telemetry correlation.

# `t`

```elixir
@type t() :: %Slither.Context{
  metadata: map(),
  pipe: atom() | nil,
  runtime: map(),
  session_id: binary() | nil,
  stage: atom() | nil,
  stores: %{required(atom()) =&gt; pid() | atom()}
}
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

Create a new context with a fresh session ID.

# `put_metadata`

```elixir
@spec put_metadata(t(), map()) :: t()
```

Merge additional metadata into the context.

# `with_stage`

```elixir
@spec with_stage(t(), atom()) :: t()
```

Set the current stage name on the context.

---

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