# `Jido.Plugin.Manifest`
[🔗](https://github.com/agentjido/jido/blob/v2.3.0/lib/jido/plugin/manifest.ex#L1)

The manifest representation of a plugin's metadata and capabilities.

Contains all compile-time metadata about a plugin for discovery,
introspection, and ecosystem tooling. Unlike `Jido.Plugin.Spec`,
the manifest focuses on what the plugin provides rather than
per-agent runtime configuration.

## Fields

- `module` - The plugin module
- `name` - Plugin name string
- `description` - Optional description
- `category` - Optional category for organization
- `tags` - List of tag strings for categorization
- `vsn` - Optional version string
- `capabilities` - List of atoms describing what the plugin provides
- `requires` - List of requirements like `{:config, :token}`, `{:app, :req}`, `{:plugin, :http}`
- `state_key` - Atom key for plugin state in agent
- `schema` - Zoi schema for plugin state
- `config_schema` - Zoi schema for per-agent config
- `actions` - List of action modules
- `signal_routes` - List of signal route tuples like `{"post", ActionModule}`
- `schedules` - List of schedule tuples like `{"*/5 * * * *", ActionModule}`
- `signal_patterns` - Legacy signal patterns for routing
- `subscriptions` - Sensor subscriptions provided by this plugin

# `t`

```elixir
@type t() :: %Jido.Plugin.Manifest{
  actions: [atom()],
  capabilities: [atom()],
  category: nil | binary(),
  config_schema: nil | any(),
  description: nil | binary(),
  module: atom(),
  name: binary(),
  otp_app: nil | atom(),
  requires: [any()],
  schedules: [any()],
  schema: nil | any(),
  signal_patterns: [binary()],
  signal_routes: [any()],
  singleton: boolean(),
  state_key: atom(),
  subscriptions: [any()],
  tags: [binary()],
  vsn: nil | binary()
}
```

# `schema`

```elixir
@spec schema() :: Zoi.schema()
```

Returns the Zoi schema for Manifest.
