# `Obscura.Capabilities`
[🔗](https://github.com/hfiguera/obscura/blob/v0.2.0/lib/obscura/capabilities.ex#L1)

Machine-readable optional dependency and model asset contracts.

The manifests are shipped in `priv/obscura` and contain no credentials,
machine-specific absolute paths, or bundled model weights.

# `assets_for_profile`

```elixir
@spec assets_for_profile(atom() | String.t()) :: {:ok, [map()]} | {:error, term()}
```

Returns model asset rows associated with a product or implementation profile.

# `fetch`

```elixir
@spec fetch(String.t() | atom()) :: {:ok, map()} | {:error, term()}
```

Fetches one capability by its string or atom ID.

# `for_profile`

```elixir
@spec for_profile(atom() | String.t()) :: {:ok, [map()]} | {:error, term()}
```

Returns capability rows associated with a product or implementation profile.

# `load`

```elixir
@spec load() :: {:ok, map()} | {:error, term()}
```

Loads and validates the capability manifest.

# `load_assets`

```elixir
@spec load_assets() :: {:ok, map()} | {:error, term()}
```

Loads and validates the model asset manifest.

# `path`

```elixir
@spec path(:capabilities | :assets) :: Path.t()
```

Returns the package path to a manifest.

---

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