Skip to content

Skills Agent Core

Business abstraction layer for tool management.

Overview

Skills Agent sits between the chat service and MCP layer, providing:

  • Unified skill interface
  • Permission filtering
  • Parameter injection
  • Preset-level control

Core Functions

Unified Interface

Combines all tool sources into "skills":

javascript
class SkillsAgent {
  // Get available skills for context
  async getAvailableSkills(context) { }
  
  // Execute a skill
  async executeSkill(name, args, context) { }
}

Permission Filtering

Filters tools based on user permissions:

javascript
// Check if user can use tool
const canUse = await skillsAgent.checkPermission(
  toolName,
  userId,
  groupId
)

Permission levels:

LevelAccess
everyoneAll users
memberGroup members
adminGroup admins
masterBot owners

Parameter Injection

Auto-injects context parameters:

javascript
// Original tool call
{ name: 'send_message', args: { text: 'Hello' } }

// After injection
{ 
  name: 'send_message', 
  args: { 
    text: 'Hello',
    user_id: '123456789',    // Injected
    group_id: '987654321'    // Injected
  } 
}

Configuration

yaml
skills:
  # Tool filtering
  blacklist:
    - dangerous_tool
  whitelist: []           # Empty = allow all
  
  # Permission overrides
  permissions:
    shell_execute:
      level: master
    send_message:
      level: member

Preset Integration

Presets can control available tools:

yaml
# data/presets/safe.yaml
name: safe
tools:
  whitelist:
    - basic
    - search
  blacklist:
    - admin
    - shell

API Reference

SkillsAgent Class

javascript
import { skillsAgent } from './services/agent/SkillsAgent.js'

// Get skills for user
const skills = await skillsAgent.getAvailableSkills({
  userId: '123456789',
  groupId: '987654321',
  preset: 'default'
})

// Execute skill
const result = await skillsAgent.executeSkill(
  'get_time',
  { format: 'full' },
  context
)

Tool Filtering Flow

Next Steps

Released under the MIT License