Skip to content

v0.5.0 — Agent Skills

Choose a tag to compare

@Ferdea Ferdea released this 10 Sep 16:36
· 3 commits to main since this release

ember v0.5.0 — Agent Skills

ember 0.5.0 adds support for Agent Skills — a portable, open format for packaging instructions an agent can discover and load on demand. Skills follow the progressive disclosure principle: the model always sees only a tier-1 catalogue (name + description), and pulls in the full instruction body with a tool call when it becomes relevant. Because the format is a standard, skills are portable across compatible clients.

Highlights

  • 📚 Agent Skills — load skills from one or more directories, no extra glue code.
  • 🔍 Progressive disclosure — compact catalogue in the prompt, full body only when needed.
  • ✍️ read_skill / save_skill tools — the model can load and persist skills during a run.
  • 🔒 Strict on write, lenient on read — authored skills are validated against the
    standard; third-party skills that don't parse perfectly are skipped with a warning.
  • 🧩 Composes with everything else — skills coexist with FunctionTools and MCP tools.

New public API

Name Description
Agent(skills_dirs=[...]) One or more skill directories; order defines priority
ember.Skill Skill data model (name, description, optional standard fields)
ember.skills.parse_skill Lenient parser for a single SKILL.md
ember.skills.scan_skills Scan directories for <name>/SKILL.md
ember.skills.SkillStore Catalogue for the prompt + the read_skill / save_skill tools

Usage

pip install -U emberio-labs-ember                                              
from ember import Agent, MockProvider                                          
                                                                               
agent = Agent(                                                                 
    provider=MockProvider(),                                                   
    skills_dirs=[".ember/skills", "~/.config/ember/skills"],  # order = priority                                                               
    system_prompt="You are a developer assistant.",                            
)                                                                              

A skill is a directory <name>/SKILL.md with YAML frontmatter (name, description) and a Markdown body:

---                                                                            
name: release-checklist                                                        
description: Steps to follow before publishing an ember release.               
---                                                                            
                                                                               
1. Bump the version in three places...                                         

Behaviour notes

  • Directories are scanned at <dir>/<name>/SKILL.md (one level deep only); on a name collision the skill from the earlier directory wins.
  • The catalogue is re-read from disk on every request, so a skill saved during the current conversation is visible to the very next model call. The agent's message history is not modified by the catalogue.
  • save_skill writes only on an explicit user request and only into the first directory in the list. The tool validates the standard strictly — name (lowercase Latin letters, digits and single hyphens, ≤64 chars), description (≤1024 chars), non-empty body — and refuses to write outside its target directory.
  • skills_dirs=None (the default) disables skills entirely: no tools, no prompt section. The library ships no default paths by design.
  • Optional standard fields (license, compatibility, metadata, allowed-tools) are parsed and preserved, but are not executed in v1.

Limitations

  • stream_run() does not support skills or tools; use run().
  • pyyaml is now a core dependency (no extra required).
  • ⚠️ Skills from untrusted sources can inject instructions into the model's context. Only enable directories you trust. A trust gate is planned.

What's Changed

  • feat: скиллы агента по стандарту Agent Skills by @Ferdea in #43

Tests

146 tests passing on Python 3.10–3.12; ruff and mypy (strict) clean.

Full Changelog:
v0.4.0...v0.5.0