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:
---name: refundsdescription: How to evaluate and process refund requests.---
Refunds under $50 are automatic. Above that, check the order'sfulfillment 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)endagent = 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.