Skills
A skill is a packaged playbook: written instructions (and optionally its own tools) for one kind of task, which the agent reads only when the task comes up. Tools tell the agent what it can do; skills tell it how to do a particular job well. Use skills to give an agent many domain recipes without paying for all of them in every prompt.
The format is the same as
Anthropic Agent Skills :
a directory with a SKILL.md file (frontmatter + markdown body) and
optional bundled files. Existing Anthropic-format skills work as-is
when you pass them to skills=[...].
from loomflow import Agent
agent = Agent(
"...",
model="claude-opus-4-7",
skills=[
"~/.loomflow/skills/system/", # base layer
"~/.loomflow/skills/user/", # user override
("./.loomflow-skills/", "Project"), # project-local with label
],
)Progressive disclosure
Only name + description (~50 tokens per skill) load into the
system prompt at startup. The model calls a load_skill(name) tool
when a skill is relevant, and only then does the full body enter
context.
A 50-skill agent costs ~2,500 tokens at rest; nothing more until the model actually loads one. Compare to “drop every recipe into the system prompt” approaches, which scale O(n) in tokens at every turn.
Read more
tools.py with @tool) · Mode C (frontmatter-declared scripts).Layered sourcesSystem / user / project layering with last-wins override. Auto-namespacing prevents tool collisions.Inline skills: one-offs in code
For tiny skills that don’t justify a folder:
from loomflow import Agent
from loomflow.skills import Skill
skill = Skill.from_text("""
---
name: standup
description: Format a daily standup from rough notes.
---
# Standup
Always 3 sections: Yesterday, Today, Blockers.
""")
agent = Agent("...", model="claude-opus-4-7", skills=[skill])Skills vs. Tools. A tool is a callable. A skill is a playbook the model reads on demand, usually instructions plus, optionally, its own tools. Most skills are pure markdown (Mode A); they teach the model how to use the tools it already has.