Behaviour for custom intent types
@callback capabilities() :: list()
@callback intent_type() :: atom()
@callback transform(any()) :: {:ok, any()} | {:error, any()}
@callback validate(any()) :: {:ok, any()} | {:error, any()}