# `Catalyst.Plugin`
[🔗](https://github.com/catalyst-ex/catalyst/blob/main/lib/catalyst/plugin.ex#L1)

# `init`

```elixir
@callback init(opts :: keyword(), config :: map()) :: {:ok, keyword()} | {:error, term()}
```

# `opts_schema`

```elixir
@callback opts_schema() :: keyword()
```

# `post_validate`

```elixir
@callback post_validate(
  execution :: %Catalyst.Execution{
    action_executions: term(),
    config: term(),
    plugin_runs: term()
  },
  opts :: keyword()
) :: [Catalyst.ValidationAction.t()]
```

# `run`

```elixir
@callback run(
  execution :: %Catalyst.Execution{
    action_executions: term(),
    config: term(),
    plugin_runs: term()
  },
  opts :: keyword()
) :: [Catalyst.Actions.t()]
```

---

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