Release Notes - v0.6.0¶
Release Date: 2026-04-26
Overview¶
This release introduces OmniSkill - a unified skill infrastructure for AI agents in Go. The new skill/ package provides foundational types for defining skills, tools, and parameters that can be used across different agent frameworks.
This release also renames the project from MCPKit to OmniSkill to reflect its expanded scope beyond MCP.
Installation¶
Requires Go 1.26+ and MCP Go SDK v1.5.0+.
Highlights¶
- Project renamed from MCPKit to OmniSkill
- New
skill/package with unified skill infrastructure - Tool interface for defining callable tools with parameters
- Parameter type with JSON Schema-compatible definitions
- Registry for managing skills and discovering tools
- BaseSkill for easy skill implementation
What's New¶
Skill Interface¶
The skill.Skill interface defines the contract for agent skills:
type Skill interface {
Name() string
Description() string
Tools() []Tool
Init(ctx context.Context) error
Close() error
}
Tool Interface¶
Tools are callable units with parameters and handlers:
type Tool interface {
Name() string
Description() string
Parameters() map[string]Parameter
Call(ctx context.Context, params map[string]any) (any, error)
}
Creating Tools¶
Use skill.NewTool() to create tools:
import "github.com/plexusone/omniskill/skill"
greetTool := skill.NewTool(
"greet",
"Greet a user by name",
map[string]skill.Parameter{
"name": {
Type: "string",
Description: "The name to greet",
Required: true,
},
},
func(ctx context.Context, params map[string]any) (any, error) {
name := params["name"].(string)
return fmt.Sprintf("Hello, %s!", name), nil
},
)
Parameter Definition¶
Parameters use JSON Schema-compatible types:
type Parameter struct {
Type string // "string", "number", "integer", "boolean", "array", "object"
Description string // Human-readable description
Required bool // Whether the parameter is required
Default any // Default value if not provided
Enum []any // Allowed values
Items *Parameter // For array types
Properties map[string]Parameter // For object types
}
BaseSkill Helper¶
For simple skills, use the BaseSkill struct:
type MySkill struct {
skill.BaseSkill
}
func NewMySkill() *MySkill {
return &MySkill{
BaseSkill: skill.BaseSkill{
SkillName: "my-skill",
SkillDescription: "Does something useful",
SkillTools: []skill.Tool{...},
},
}
}
Registry¶
The registry/ package provides skill and tool management:
import "github.com/plexusone/omniskill/registry"
r := registry.New()
r.Register(mySkill)
// Find tools
tool, skill, ok := r.FindTool("greet")
// List all tools
tools := r.ListTools()
Package Structure¶
github.com/plexusone/omniskill
├── skill/ # Core skill types
│ ├── skill.go # Skill interface
│ ├── tool.go # Tool interface and FuncTool
│ └── parameter.go # Parameter type with JSON Schema conversion
├── registry/ # Skill registry
│ └── registry.go # Registration, lookup, lifecycle
├── mcp/ # MCP integration
│ ├── runtime/ # MCP server runtime
│ ├── client/ # MCP client
│ └── oauth2/ # OAuth 2.1 server
└── doc.go # Package documentation
Breaking Changes¶
Module Path Change¶
// Before (v0.5.x)
import "github.com/plexusone/mcpkit/runtime"
import "github.com/plexusone/mcpkit/client"
// After (v0.6.0)
import "github.com/plexusone/omniskill/mcp/runtime"
import "github.com/plexusone/omniskill/mcp/client"
Quick Migration Script¶
# In your project directory
find . -name "*.go" -exec sed -i '' \
-e 's|github.com/plexusone/mcpkit/runtime|github.com/plexusone/omniskill/mcp/runtime|g' \
-e 's|github.com/plexusone/mcpkit/client|github.com/plexusone/omniskill/mcp/client|g' \
-e 's|github.com/plexusone/mcpkit/oauth2|github.com/plexusone/omniskill/mcp/oauth2|g' \
-e 's|github.com/plexusone/mcpkit|github.com/plexusone/omniskill|g' {} \;
go mod tidy
Use Cases¶
Agent Framework Integration¶
OmniSkill skills integrate with agent frameworks like OmniAgent:
import (
"github.com/plexusone/omniagent/agent"
"github.com/plexusone/omniskill/skill"
)
// Create a skill
mySkill := &skill.BaseSkill{
SkillName: "calculator",
SkillDescription: "Math operations",
SkillTools: []skill.Tool{addTool, multiplyTool},
}
// Register with agent
agent, err := agent.New(config,
agent.WithCompiledSkill(mySkill),
)
MCP Server with Skills¶
Skills can be exposed as MCP tools:
import (
"github.com/plexusone/omniskill/mcp/runtime"
"github.com/plexusone/omniskill/skill"
)
rt := runtime.New(impl, nil)
// Add tools from a skill
for _, tool := range mySkill.Tools() {
rt.AddToolHandler(convertToMCPTool(tool), makeHandler(tool))
}
Contributors¶
- John Wang
- Claude Opus 4.5