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:
| Level | Access |
|---|---|
everyone | All users |
member | Group members |
admin | Group admins |
master | Bot 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: memberPreset Integration
Presets can control available tools:
yaml
# data/presets/safe.yaml
name: safe
tools:
whitelist:
- basic
- search
blacklist:
- admin
- shellAPI 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
- MCP System - Tool protocol
- Data Flow - Request processing