Skip to content

OmniSkill

Unified skill infrastructure for AI agents in Go.

OmniSkill provides a common interface for defining, registering, and invoking AI agent capabilities ("skills") across multiple execution environments:

  • MCP Servers - Expose skills via Model Context Protocol
  • MCP Clients - Consume remote MCP servers as skills
  • Library Mode - Direct in-process invocation without protocol overhead
  • Registry - Central skill discovery and lifecycle management

Key Features

  • Unified Skill Interface - Define tools once, use everywhere
  • MCP Integration - Full MCP protocol support for both server and client
  • Zero-Overhead Library Mode - Call tools directly without JSON-RPC
  • OAuth 2.1 Support - Built-in authentication for public MCP servers
  • Type-Safe Handlers - Generic handlers with automatic schema inference
  • ClawHub Marketplace - Discover, install, and share skills
  • GitHub Integration - Install skills from GitHub repositories and releases

Quick Example

package main

import (
    "context"
    "fmt"

    "github.com/plexusone/omniskill/mcp/server"
    "github.com/plexusone/omniskill/skill"
    "github.com/modelcontextprotocol/go-sdk/mcp"
)

func main() {
    // Create a skill with tools
    mathSkill := &skill.BaseSkill{
        SkillName:        "math",
        SkillDescription: "Mathematical operations",
        SkillTools: []skill.Tool{
            skill.NewTool("add", "Add two numbers",
                map[string]skill.Parameter{
                    "a": {Type: "number", Required: true},
                    "b": {Type: "number", Required: true},
                },
                func(ctx context.Context, params map[string]any) (any, error) {
                    a := params["a"].(float64)
                    b := params["b"].(float64)
                    return map[string]any{"sum": a + b}, nil
                },
            ),
        },
    }

    // Create runtime and register skill
    rt := server.New(&mcp.Implementation{
        Name:    "calculator",
        Version: "1.0.0",
    }, nil)

    rt.RegisterSkill(mathSkill)

    // Library mode - call directly
    result, _ := rt.CallTool(context.Background(), "add", map[string]any{"a": 1.0, "b": 2.0})
    fmt.Println(result) // {"sum": 3}

    // Or serve via MCP
    // rt.ServeStdio(context.Background())
}

Package Structure

github.com/plexusone/omniskill
├── skill/       # Core Skill and Tool interfaces
├── loader/      # Skill loaders (SKILL.md, Go, etc.)
├── installer/   # Dependency installation management
├── clawhub/     # ClawHub marketplace integration
│   ├── hub.go       # API client
│   ├── manifest.go  # CLAWHUB.json parsing
│   ├── resolver.go  # Dependency resolution
│   └── security.go  # Security scanning
├── registry/    # Skill registration and discovery
├── pack/        # Skill pack interface
├── voicetools/  # Voice call control tools
├── mcp/
│   ├── server/  # MCP server runtime
│   ├── client/  # MCP client for remote servers
│   └── oauth2/  # OAuth 2.1 authorization server
└── doc.go

Getting Started

Learn More