# `Vibe.Skill.Script`
[🔗](https://github.com/elixir-vibe/vibe/blob/v0.2.3/lib/vibe/skill/script.ex#L1)

Behaviour and tiny DSL for executable Vibe skills.

Executable skills are trusted local `.exs` files that combine Markdown guidance
with callable Elixir helpers. They can expose eval APIs through
`Vibe.Plugin.API` without becoming long-running plugins.

# `metadata`

```elixir
@type metadata() :: %{
  :name =&gt; String.t(),
  optional(:version) =&gt; String.t(),
  optional(:description) =&gt; String.t(),
  optional(:triggers) =&gt; [String.t()],
  optional(:alias) =&gt; atom(),
  optional(:examples) =&gt; [String.t()]
}
```

# `apis`
*optional* 

```elixir
@callback apis() :: [Vibe.Plugin.API.t() | keyword() | map()]
```

# `markdown`

```elixir
@callback markdown() :: String.t()
```

# `metadata`

```elixir
@callback metadata() :: metadata()
```

# `prompt_context`
*optional* 

```elixir
@callback prompt_context(map()) :: String.t()
```

# `validate`
*optional* 

```elixir
@callback validate(map()) :: :ok | {:error, term()}
```

# `skill`
*macro* 

---

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