# `DocShell.Presentation.Renderer.Capabilities`
[🔗](https://github.com/futhr/doc_shell/blob/v2.0.0/lib/doc_shell/presentation/renderer/capabilities.ex#L1)

Declares a renderer's portable identity and supported feature states.

The declaration uses a closed set of output modes, capability states, and
served-runtime requirements. It contains no module names or executable
callbacks, so DocShell can validate it before rendering and include the same
identity in a static manifest or hosted conformance report.

# `t`

```elixir
@type t() :: %DocShell.Presentation.Renderer.Capabilities{
  features: %{
    required(String.t()) =&gt; DocShell.Presentation.Renderer.Capability.t()
  },
  output_modes: [:hosted | :static],
  renderer_id: String.t(),
  renderer_version: String.t(),
  schema_version: String.t()
}
```

The complete declaration returned by a renderer.

# `schema_version`

```elixir
@spec schema_version() :: String.t()
```

Returns the capability schema identifier.

# `validate`

```elixir
@spec validate(t()) :: :ok | {:error, term()}
```

Validates renderer identity, version, modes and every feature.

---

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