Skip to content

Release Notes: v0.7.0

Release Date: 2026-04-27

Overview

OmniAgent v0.7.0 introduces skill pack support for loading embedded markdown skills from fs.FS sources, enabling distributable skill bundles with configurable filtering.

Highlights

  • Skill Packs - Load markdown skills from embedded fs.FS sources (e.g., via go:embed)
  • Skill Filtering - Include/exclude specific skills via configuration or code
  • Directory Override - Skills from directories override embedded pack skills with the same name

New Features

Skill Pack Support

Register embedded skill packs that bundle multiple markdown skills:

import (
    "github.com/plexusone/omniagent/agent"
    skills "github.com/plexusone/omniagent-skills"
)

// Load all skills from a skill pack
agent, err := agent.New(config,
    agent.WithSkillPack(skills.Default().FS()),
)

Skill Filtering

Filter which skills are loaded using includes or excludes:

// Only load specific skills
agent, err := agent.New(config,
    agent.WithSkillPack(skills.Default().FS()),
    agent.WithSkillIncludes("github", "weather", "tmux"),
)

// Load all except specific skills
agent, err := agent.New(config,
    agent.WithSkillPack(skills.Default().FS()),
    agent.WithSkillExcludes("notion", "slack"),
)

Configuration Options

Control skill loading via config file:

skills:
  enabled: true
  paths:
    - ~/.omniagent/skills
  includes:
    - github
    - weather
  excludes:
    - deprecated-skill

Directory Override

Skills from directories take precedence over embedded pack skills with the same name. This allows customizing or replacing bundled skills:

~/.omniagent/skills/
└── github/
    └── SKILL.md  # Overrides the github skill from the pack

New Agent Options

Option Description
WithSkillPack(fs.FS) Register an embedded skill pack
WithSkillDirs(...string) Set skill directories
WithSkillIncludes(...string) Only load named skills
WithSkillExcludes(...string) Skip named skills
WithSkillManager(*Manager) Use a custom skill manager

New Packages

skills.Manager

Unified skill loading from multiple sources:

import "github.com/plexusone/omniagent/skills"

mgr := skills.NewManager(skills.ManagerConfig{
    Packs:    []fs.FS{skillPack.FS()},
    Dirs:     []string{"~/.omniagent/skills"},
    Includes: []string{"github", "weather"},
})

if err := mgr.Load(); err != nil {
    log.Fatal(err)
}

available := mgr.Available()

skills.DiscoverFromFS

Load skills from an embedded filesystem:

fsys := skillPack.FS()
skills, err := skills.DiscoverFromFS(fsys, nil)

Dependency Upgrades

Package From To
omniskill v0.6.0 v0.7.0
omnillm v0.15.2 v0.15.3

Upgrade Guide

From v0.6.0

  1. Update your dependency:
go get github.com/plexusone/omniagent@v0.7.0
go mod tidy
  1. (Optional) Use skill packs instead of directory-only loading:
import skills "github.com/plexusone/omniagent-skills"

agent, err := agent.New(config,
    agent.WithSkillPack(skills.Default().FS()),
)
  1. (Optional) Add skill filtering:
agent, err := agent.New(config,
    agent.WithSkillPack(skills.Default().FS()),
    agent.WithSkillIncludes("github", "weather"),
)

Full Changelog

See CHANGELOG.md for the complete list of changes.