# `Squidie.Step`
[🔗](https://github.com/dark-trench/squidie/blob/main/lib/squidie/step.ex#L2)

Public contract for authoring native Squidie workflow steps.

Native steps return Squidie values and receive a `Squidie.Step.Context`.
The runtime adapts them into the internal Jido execution path, so authors do
not need to depend on Jido for the common workflow-step path.

# `result`

```elixir
@type result() ::
  {:ok, map()}
  | {:ok, map(), keyword()}
  | {:defer, term(), keyword()}
  | {:error, term()}
  | {:retry, term()}
  | {:retry, term(), keyword()}
```

# `schema`

```elixir
@type schema() :: keyword(keyword())
```

# `run`

```elixir
@callback run(input :: map(), context :: Squidie.Step.Context.t()) :: result()
```

---

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