Release Notes - v0.10.0¶
Release Date: 2026-07-05
Overview¶
This release adds the role/ package for defining AI agent roles with declarative specifications, behaviors, policies, and metrics. The GitHub skill has been extracted to a separate omniskill-github repository to keep omniskill lightweight and reduce dependency footprint.
Installation¶
Requires Go 1.26+ and MCP Go SDK v1.6.1+.
Highlights¶
- New
role/package for AI agent role definitions with behaviors, policies, and metrics - GitHub skill extraction to separate
omniskill-githubrepository for lighter dependency footprint
What's New¶
Role Package¶
The role package provides a complete framework for defining AI agent roles with declarative specifications, behaviors, policies, and metrics:
import (
"github.com/plexusone/omniskill/role"
)
// Define a role
type MyRole struct {
role.BaseRole
}
func (r *MyRole) Name() string {
return "my-role"
}
func (r *MyRole) Description() string {
return "A custom AI agent role"
}
func (r *MyRole) SystemPrompt() string {
return "You are a helpful assistant specialized in..."
}
Core Types¶
Roleinterface - Core interface withName(),Description(),Spec(),SystemPrompt(),Init(),Close()RoleSpec- Schema for declarative role introspection and metadataBaseRole- Helper struct for simple role implementations
Behavior System¶
Define context-aware actions that trigger based on events:
type Behavior struct {
Name string
Description string
Context BehaviorContext // meeting, chat, autonomous, always
Trigger BehaviorTrigger // Event-based activation
Action BehaviorAction // What to execute
}
BehaviorContext enum:
meeting- Active during meetingschat- Active during chat conversationsautonomous- Active when agent runs autonomouslyalways- Active in all contexts
BehaviorTrigger - Event-based activation with conditions BehaviorAction - Defines what happens when behavior triggers
Policy System¶
Define governance rules and enforcement modes:
type Policy struct {
Name string
Description string
Type PolicyType
Enforcement PolicyEnforcement
Rules map[string]interface{}
}
PolicyType enum:
tool_access- Control which tools can be useddata_access- Control data access permissionsaction_limit- Limit action frequency or scoperate_limit- Rate limiting rulesconfirmation_required- Require human confirmation
PolicyEnforcement modes:
strict- Block policy violationswarn- Log warnings but allowadvisory- Informational only
Metrics System¶
Define KPIs and success tracking:
type MetricDefinition struct {
Name string
Description string
Type MetricType
Unit string
Target *MetricTarget
}
MetricType enum:
counter- Incrementing countergauge- Point-in-time valuehistogram- Distribution of values
MetricTarget - Thresholds for success criteria
Delegation System¶
Configure sub-agent orchestration:
type DelegationConfig struct {
Enabled bool
Rules []DelegationRule
Budget *DelegationBudget
}
type DelegationRule struct {
TaskPattern string // Pattern to match tasks
TargetRole string // Role to delegate to
Conditions []string // Conditions for delegation
}
type DelegationBudget struct {
MaxDelegations int
MaxDepth int
TimeLimit time.Duration
}
Optional Interfaces¶
Roles can implement optional interfaces for extended functionality:
SkillRequirer- Declare required and optional skillsBehaviorProvider- Expose role-specific behaviorsMetricsProvider- Expose metrics definitionsDelegationProvider- Expose delegation rulesPolicyProvider- Expose governance policies
// SkillRequirer interface
type SkillRequirer interface {
RequiredSkills() []string
OptionalSkills() []string
}
// BehaviorProvider interface
type BehaviorProvider interface {
Behaviors() []Behavior
}
// MetricsProvider interface
type MetricsProvider interface {
Metrics() []MetricDefinition
}
// DelegationProvider interface
type DelegationProvider interface {
DelegationConfig() *DelegationConfig
}
// PolicyProvider interface
type PolicyProvider interface {
Policies() []Policy
}
GitHub Skill Extraction¶
The GitHub skill has been moved to a separate repository to reduce omniskill's dependency footprint:
New repository: github.com/plexusone/omniskill-github
This removes the thick go-github SDK dependency from the core omniskill library, making it lighter and faster to install.
To use the GitHub skill:
import "github.com/plexusone/omniskill-github/skill"
// Create GitHub skill
githubSkill := skill.NewGitHubSkill(token)
Package Structure¶
github.com/plexusone/omniskill
├── skill/ # Core skill types
├── loader/ # Skill loaders
├── installer/ # Dependency management
├── clawhub/ # ClawHub integration
├── pack/ # Skill pack interface
├── registry/ # Skill registry
├── voicetools/ # Voice call tools
├── role/ # NEW: AI agent role definitions
│ ├── role.go # Role interface
│ ├── spec.go # RoleSpec schema
│ ├── base.go # BaseRole helper
│ ├── behavior.go # Behavior types and context
│ ├── policy.go # Policy types and enforcement
│ ├── metric.go # Metric definitions and targets
│ └── delegation.go # Delegation configuration
└── mcp/ # MCP integration
Use Cases¶
Simple Role with BaseRole¶
package main
import "github.com/plexusone/omniskill/role"
type CustomerServiceRole struct {
role.BaseRole
}
func (r *CustomerServiceRole) Name() string {
return "customer-service"
}
func (r *CustomerServiceRole) Description() string {
return "Customer service agent role"
}
func (r *CustomerServiceRole) SystemPrompt() string {
return `You are a helpful customer service agent.
Your goal is to assist customers with their questions
and resolve their issues efficiently and courteously.`
}
func NewCustomerServiceRole() *CustomerServiceRole {
return &CustomerServiceRole{}
}
Role with Behaviors for Meeting Context¶
package main
import (
"github.com/plexusone/omniskill/role"
)
type MeetingPMRole struct {
role.BaseRole
}
func (r *MeetingPMRole) Name() string {
return "meeting-pm"
}
func (r *MeetingPMRole) Description() string {
return "Project manager for meetings"
}
func (r *MeetingPMRole) SystemPrompt() string {
return "You are a project manager facilitating meetings."
}
func (r *MeetingPMRole) Behaviors() []role.Behavior {
return []role.Behavior{
{
Name: "take-notes",
Description: "Automatically take meeting notes",
Context: role.BehaviorContextMeeting,
Trigger: role.BehaviorTrigger{
Event: "meeting.started",
},
Action: role.BehaviorAction{
Type: "start_note_taking",
},
},
{
Name: "action-item-tracking",
Description: "Track action items mentioned in meeting",
Context: role.BehaviorContextMeeting,
Trigger: role.BehaviorTrigger{
Event: "action_item.mentioned",
},
Action: role.BehaviorAction{
Type: "create_task",
},
},
}
}
Role with Policies for Tool Access Control¶
package main
import (
"github.com/plexusone/omniskill/role"
)
type SecureAgentRole struct {
role.BaseRole
}
func (r *SecureAgentRole) Name() string {
return "secure-agent"
}
func (r *SecureAgentRole) Description() string {
return "Agent with strict security policies"
}
func (r *SecureAgentRole) SystemPrompt() string {
return "You are a secure agent with restricted permissions."
}
func (r *SecureAgentRole) Policies() []role.Policy {
return []role.Policy{
{
Name: "tool-allowlist",
Description: "Only allow specific tools",
Type: role.PolicyTypeToolAccess,
Enforcement: role.PolicyEnforcementStrict,
Rules: map[string]interface{}{
"allowed_tools": []string{
"read_file",
"search",
},
},
},
{
Name: "confirmation-required",
Description: "Require confirmation for sensitive operations",
Type: role.PolicyTypeConfirmationRequired,
Enforcement: role.PolicyEnforcementStrict,
Rules: map[string]interface{}{
"operations": []string{
"delete",
"update",
},
},
},
}
}
Dependencies¶
- Bump
github.com/google/go-githubto v88.0.0 (in omniskill-github repository)
Contributors¶
- John Wang
- Claude Opus 4.5