Skills

A skill is an expert playbook the model can pull in when it matters: refund policy, brand voice, a runbook. Each skill costs one line in the system prompt until the model decides it is relevant and reads the full body through an auto-provided read_skill tool.

agent = Mistri.agent("claude-opus-4-8", skills: "app/skills")

Writing one

A skill is a SKILL.md (or a flat .md) with frontmatter:

app/skills/refunds/SKILL.md
---
name: refunds
description: How to evaluate and process refund requests.
---
Refunds under $50 are automatic. Above that, check the order's
fulfillment status first...

From your database

Skills do not have to be files. Build them from rows and pass the array:

skills = Playbook.enabled.map do |row|
Mistri::Skill.new(name: row.key, description: row.summary,
body: row.body)
end
agent = Mistri.agent("claude-opus-4-8", skills: skills)

The point is cost: ten skills add ten lines to every request, not ten documents, and the model reads at most the ones it needs.