Skill management
Reusable operating methods—triggers, procedures, and quality bars—that turn team know-how into agent-ready skills.
Marketing: exemplar.dev/marshal/skill-management .
When to use it
Encode how your team works (when to escalate, what to verify, what “done” means) once, then share across IDE agents, console, and frameworks—without editing IDE-local files for every change.
Where in Console
Author and version skills in Marshal console surfaces; promote with evals when risk is high. Align tone with prompt management.
Use from SDK and CLI
A skill is a folder rooted at SKILL.md (plus optional references/, scripts/, assets/). Prefer skills.install(dest) for runtimes; record.instructions is the markdown body only.
from exemplar_harness import Harness
skills = Harness.from_env().skills()
skills.create(
name="refund-policy",
instructions="# Refund policy\n\nReturns within 30 days.",
description="Refund workflow",
files={"references/policy.md": "# Policy\n\n30-day returns.\n"},
)
skills.install(".agents/skills", names=["refund-policy"])exemplar skills list
exemplar skills pull refund-policy
exemplar skills install --all --dest .agents/skills
exemplar skills push ./skills/refund-policyFull patterns: SDK client usage · CLI.
Framework / SDK examples
Install folders for agent runtimes
from exemplar_harness import Harness
skills = Harness.from_env().skills()
# Materialize all active skills (or pass names=[...])
skills.install(".agents/skills")
# IDE / product-specific roots
skills.install(".cursor/skills", names=["refund-policy"])
skills.install(".claude/skills", names=["refund-policy"])import { Harness } from "@exemplar-dev/exemplar-harness-typescript-sdk";
const skills = Harness.fromEnv().skills();
await skills.install(".agents/skills", { names: ["refund-policy"] });
await skills.install(".cursor/skills", { names: ["refund-policy"] });Agno — pass skill instructions
pip install "exemplar-harness-sdk[agno]"from agno.agent import Agent
from agno.models.openai import OpenAIChat
from exemplar_harness import Harness
harness = Harness.from_env()
skills = harness.skills()
skills.install(".agents/skills", names=["refund-policy"])
skill = skills.get("refund-policy")
agent = Agent(
name="support-bot",
model=OpenAIChat(id="gpt-4o-mini"),
instructions=[skill.instructions], # markdown body; folder install for Agent Skills–aware runtimes
)
agent.run("Can a customer return an item after 20 days?")OpenAI Agents / chat — inject skill text
from openai import OpenAI
from exemplar_harness import Harness
harness = Harness.from_env()
skill = harness.skills().get("refund-policy")
client = OpenAI()
client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": skill.instructions},
{"role": "user", "content": "Can a customer return an item after 20 days?"},
],
)import OpenAI from "openai";
import { Harness } from "@exemplar-dev/exemplar-harness-typescript-sdk";
const harness = Harness.fromEnv();
const skill = await harness.skills().get("refund-policy");
const client = new OpenAI();
await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [
{ role: "system", content: skill.instructions },
{ role: "user", content: "Can a customer return an item after 20 days?" },
],
});Claude Agent SDK / CrewAI / Deep Agents
Folder-first install, then point the runtime at the dest (or pass instructions where the framework has no folder loader):
| Runtime | Pattern |
|---|---|
| Claude Agent SDK | skills.install(".claude/skills", names=[...]) then run Claude with project skills |
| CrewAI | Agent(..., skills=[...]) after install — see crewai_skills_demo |
| Deep Agents | create_deep_agent(..., skills=[...]) — see deepagents_skills_demo |
| Google ADK | install folder + ADK skill loader — see google_adk_skills_demo |
Runnable sample: platform/skills.py · catalog Live SDK examples.
Bootstrap IDE skills from GitHub
npx github:Exemplar-Dev/exemplar-skillsGuide: Install IDE agent skills.
Related: Prompt management · Evals · Client usage.