Skills Reference

🧩 Skills Reference

VexAI ships with 23 built-in skills providing 170+ tools. Each skill is a self-contained module that encapsulates related functionality and exposes one or more tools the LLM can invoke during conversations.

How skills work: Skills follow a registry pattern. Each skill has a name, description, an array of tools[], and an execute(toolName, args, context) method. Built-in skills are registered on startup; user-defined skills are hot-loaded from the skills/ directory.

Skills Summary

Skill Tools Description
discord29Core messaging, embeds, reactions, polls, threads, forums, crossposting
moderation11Kick, ban, timeout, warn, purge, slowmode
server-management21Channels, roles, emojis, invites, events, webhooks, permissions
user-management6User info, nicknames, role assignment, DMs, member listing
components6Buttons, select menus, reaction roles
memory1Search structured bot logs
semantic-memory5FTS5-powered remember, recall, forget, list, update
discord-search9Message search, history, context, stats, semantic search, edit history
integrations17Custom APIs, RSS feeds, webhooks, GitHub tools
email3OpenMail inbox listing, reading, reply sending
voice13TTS, STT, voice channels, meeting transcription, voice assistant
agent-system7Create, invoke, handover, list, info, delete, toggle agents
sub-agents7Spawn background agents, check/cancel status, task board
workflows9Create, list, get, update, delete, toggle, trigger workflows, run history
event-system13Event listeners, WebSocket, REST polling, event emission, event log
graph-renderer1Chart rendering (20 chart types including bar, line, pie, sankey, heatmap)
cron4Scheduled recurring tasks
utility5Embeds, polls, reminders, web search, URL fetching
system5Exec commands, download files, restart, credits, cache stats
table-renderer1Canvas-based table rendering with emoji support
skill-manager5Create, read, edit, delete, list user skills
skill-agent1AI-powered skill generation from descriptions
image-generation1AI image generation with reference image support

Discord (29 tools)

Core Discord messaging and channel interactions: send messages, manage embeds, reactions, threads, forum posts, polls, and crosspost to announcement channels.

ToolDescription
send_messageSend a message to a different channel
fetch_messagesFetch recent messages from a channel
get_messageGet full details of a specific message including attachments, embeds, buttons, reactions, and reply context
pin_messagePin a message in a channel
unpin_messageUnpin a message in a channel
list_pinned_messagesList all pinned messages in a channel
react_to_messageAdd a reaction to a message
delete_reactionRemove a reaction from a message
send_statusSend a brief progress update while working on a long task
download_attachmentDownload attachments from a Discord message to a local directory
list_channelsList all channels in the server
create_channelCreate a new text or voice channel
delete_channelDelete a channel by ID
edit_channelEdit a channel's name, topic, or NSFW setting
list_rolesList all roles in the server
create_roleCreate a new role
delete_roleDelete a role from the server
server_infoGet information about the current server
search_user_messagesSearch for messages by a specific user across text channels
list_bansList all banned users in the server
get_audit_logFetch recent audit log entries
create_threadCreate a thread from a message or as standalone in a text channel
archive_threadArchive a thread, optionally locking it
unarchive_threadUnarchive a thread
list_threadsList threads in a channel or entire guild
add_thread_memberAdd a user to a thread
remove_thread_memberRemove a user from a thread
create_forum_postCreate a new post in a forum channel
list_forum_tagsList available tags on a forum channel
crosspost_messagePublish a message in an announcement channel to all following servers
Tip: The send_message tool targets a different channel than the current one. The bot's reply to the user is handled automatically by the message pipeline, so no tool call is needed.

Moderation (11 tools)

Server moderation toolkit: kick, ban, timeout, warn members, purge messages, and control slowmode. Destructive actions (kick, ban) require approval via the security observer.

ToolDescription
kick_memberKick a member from the server
ban_memberBan a member from the server
unban_memberUnban a user from the server
timeout_memberTimeout (mute) a member for a specified duration
remove_timeoutRemove a timeout from a member
warn_memberIssue a warning to a member (stored in database)
list_warningsList warnings for a user with optional date and moderator filters
count_warningsGet a quick count of warnings matching filters
delete_warningDelete a specific warning by ID
purge_messagesBulk delete messages from a channel (1–100)
set_slowmodeSet slowmode delay on a channel (0 to disable, max 21 600 seconds)
Approval required: kick_member, ban_member, and purge_messages are approval-gated. The security observer must approve them before execution.

Server Management (21 tools)

Comprehensive server administration: manage emojis, invites, auto-roles, welcome messages, scheduled events, webhooks, and channel permissions.

ToolDescription
list_emojisList all custom emojis in the server
add_emojiAdd a custom emoji to the server from a URL
delete_emojiDelete a custom emoji from the server
list_invitesList all active invites for the server
create_inviteCreate a new invite link for a channel
revoke_inviteRevoke/delete an active invite by code
set_auto_rolesSet roles that are automatically assigned to new members
list_auto_rolesList currently configured auto-assign roles
set_welcome_messageConfigure a welcome message for new members (with template variables)
audit_permissionsAudit effective permissions for a user or role in a channel
create_eventCreate a guild scheduled event
list_eventsList guild scheduled events
delete_eventDelete or cancel a scheduled event
get_event_attendeesList users interested in an event
create_webhookCreate a webhook for a channel
list_webhooksList webhooks for a channel or the entire guild
delete_webhookDelete a webhook
send_webhook_messageSend a message through a webhook with custom username and avatar
set_channel_permissionsSet permission overrides on a channel for a user or role
lock_channelLock a channel by denying SendMessages for @everyone
unlock_channelUnlock a channel by removing the SendMessages deny for @everyone

User Management (6 tools)

Manage server members: look up user info, assign and remove roles, change nicknames, send DMs, and list members with filters.

ToolDescription
get_user_infoGet detailed information about a server member
assign_roleAssign a role to a member
remove_roleRemove a role from a member
set_nicknameSet or clear a member's nickname
dm_userSend a direct message to a user (with file attachment support)
list_membersList server members with optional filters

Components (6 tools)

Interactive Discord UI components: send messages with buttons and select menus, set up reaction roles for self-service role assignment.

ToolDescription
send_buttonsSend a message with interactive buttons (max 5 per row, max 5 rows)
send_select_menuSend a message with a dropdown select menu
edit_componentsEdit or remove components from an existing message
create_reaction_roleSet up reaction roles on a message (emoji-to-role mappings)
list_reaction_rolesList all reaction role configurations in the server
remove_reaction_roleRemove reaction role configuration from a message

Memory (1 tool)

Search and browse structured bot logs stored in SQLite for debugging and auditing.

ToolDescription
search_logsSearch through bot logs and return recent entries matching the query

Semantic Memory (5 tools)

Persistent long-term memory powered by FTS5 full-text search. Store facts, preferences, events, relationships, and decisions that persist across conversations.

ToolDescription
rememberStore a new memory (facts, preferences, events, relationships, decisions)
recallSearch memories by text query using full-text search
forgetDelete a specific memory by its ID
list_memoriesList stored memories, optionally filtered by user or category
update_memoryUpdate an existing memory's content, category, or importance
Tip: Memories are automatically injected into the system prompt context, so the LLM can recall stored knowledge without explicit tool calls.

Integrations (17 tools)

Connect to external services: register and call custom APIs, subscribe to RSS/Atom feeds, create inbound webhook endpoints, and interact with GitHub repositories.

ToolDescription
register_apiRegister a named external API endpoint with saved configuration
call_apiCall a registered external API and return the HTTP response
list_apisList all registered API configurations for this server
remove_apiRemove a registered API configuration
add_rss_feedSubscribe a Discord channel to an RSS/Atom feed
list_rss_feedsList all RSS feed subscriptions for this server
remove_rss_feedRemove an RSS feed subscription
toggle_rss_feedEnable or disable an RSS feed subscription
check_rss_feedForce-check an RSS feed right now and post any new items
create_webhook_endpointCreate an inbound webhook endpoint for external services
list_webhook_endpointsList all configured webhook endpoints for this server
delete_webhook_endpointDelete a webhook endpoint
toggle_webhook_endpointEnable or disable a webhook endpoint
github_repo_infoGet GitHub repository information (stars, forks, issues, description)
github_issuesList issues from a GitHub repository
github_pullsList pull requests from a GitHub repository
github_commitsList recent commits from a GitHub repository

Email (3 tools)

OpenMail integration with owner-gated approval. Only pre-approved email threads are accessible to the LLM for privacy and security.

ToolDescription
list_approved_email_threadsList approved email threads that are safe for LLM access
read_approved_email_threadRead a specific approved email thread by thread ID
send_email_replySend an email reply in an approved thread
Approval required: All outbound emails go through the approval channel before being sent. An admin must react with the approval emoji to authorize sending.

Voice (13 tools)

Full voice and audio suite: text-to-speech, speech-to-text transcription, voice channel management, meeting transcription mode, and an interactive voice assistant with wake-word detection.

ToolDescription
transcribe_audioTranscribe audio from a URL (voice message, audio file, etc.) to text
text_to_speechConvert text to an audio file and send it in the current channel
join_voiceJoin a voice channel to speak or listen
leave_voiceLeave the current voice channel
speakSay something in the voice channel via TTS
start_listeningStart transcribing audio from the voice channel
stop_listeningStop transcribing audio from the voice channel
get_transcriptGet recent transcript entries from the voice channel
start_meetingStart meeting mode: join voice channel and transcribe everything
end_meetingEnd the current meeting and return the full transcript
voice_statusShow current voice state: connected channel, listening status, transcript count
start_voice_assistantStart voice assistant mode (listens for wake word, responds via voice)
stop_voice_assistantStop voice assistant mode and leave the voice channel

Agent System (7 tools)

Create and manage specialized agents: persistent personas with custom system prompts, tool access, and trigger words. Agents can be invoked, handed-over to, and toggled on/off.

ToolDescription
create_agentStart an interactive agent creation wizard
invoke_agentDelegate a task to a specialized agent
handover_to_agentHand over the current conversation to a specialized agent
list_agentsList all registered agents with their status, mode, and trigger words
get_agent_infoGet detailed information about a specific agent
delete_agentDelete a specialized agent permanently
toggle_agentEnable or disable a specialized agent without deleting it

Sub-Agents (7 tools)

Spawn temporary background sub-agents for complex multi-step tasks. Includes a task board for tracking work items and assigning them to sub-agents.

ToolDescription
spawn_sub_agentSpawn a temporary sub-agent to work on a specific goal in the background
check_sub_agentCheck the status and result of a running or completed sub-agent
cancel_sub_agentCancel a running sub-agent
list_sub_agentsList all running and recently completed sub-agents
create_taskCreate a task on the task board
update_taskUpdate a task on the task board (status, result)
list_tasksList tasks on the task board, with their sub-agent assignments

Workflows (9 tools)

DAG-based workflow automation: create directed graphs of triggers, conditions, actions, transforms, and control-flow nodes. Workflows execute on events and can be manually triggered.

ToolDescription
create_workflowCreate a new workflow, a directed graph of nodes connected by edges
list_workflowsList all workflows for the current server
get_workflowGet full details of a workflow by ID, including all nodes and edges
update_workflowUpdate an existing workflow's nodes, edges, name, or description
delete_workflowDelete a workflow by ID
toggle_workflowEnable or disable a workflow
trigger_workflowManually trigger a workflow with optional data
list_workflow_runsList recent execution runs for a workflow
get_workflow_runGet detailed execution log for a specific workflow run

Event System (13 tools)

Event-driven automations: listen for Discord events, external WebSocket messages, REST API changes, and cron triggers. React with messages, AI responses, tool calls, or webhook forwards.

ToolDescription
create_event_listenerCreate a listener that triggers an action when matching events occur
list_event_listenersList all event listeners configured for this server
delete_event_listenerDelete an event listener by ID
toggle_event_listenerEnable or disable an event listener
get_event_logView recent events that have been captured by the event system
emit_eventManually emit a custom event onto the event bus
create_ws_connectionConnect to an external WebSocket server to receive real-time events
list_ws_connectionsList all WebSocket connections for this server
delete_ws_connectionDisconnect and remove a WebSocket connection
create_rest_pollPoll a REST API at intervals and emit an event when the response changes
list_rest_pollsList all REST API polls for this server
delete_rest_pollStop and remove a REST API poll
list_event_typesList all available event types that can be listened for

Graph Renderer (1 tool)

Generate beautiful dark-mode chart images from structured data. Supports 20 chart types: line, bar, horizontal bar, pie, donut, area, scatter, radar, gauge, progress, funnel, heatmap, treemap, waterfall, candlestick, timeline, histogram, sparkline, sankey, and polar area.

ToolDescription
generate_graphGenerate a chart/graph as a PNG image with 20+ chart type support

Cron (4 tools)

Schedule recurring tasks with cron expressions: create, list, delete, and toggle cron jobs that run actions on a defined schedule.

ToolDescription
create_cron_jobCreate a new scheduled cron job with action and schedule
list_cron_jobsList all scheduled cron jobs
delete_cron_jobDelete a cron job by ID
toggle_cron_jobEnable or disable a cron job

Utility (5 tools)

General-purpose utilities: send rich embeds, create native Discord polls, set timed reminders, fetch URL content, and search the web.

ToolDescription
send_embedSend a rich embed message to a channel
create_pollCreate a poll in a channel using Discord native polls
set_reminderSet a reminder that fires after a delay or at a specific time
fetch_urlFetch content from a URL and return the text
web_searchSearch the web using a search API (Brave Search or SearXNG)

System (5 tools)

System-level tools: execute allowlisted commands, download files, restart the bot, check API credit balance, and view cache statistics.

ToolDescription
exec_commandExecute a system command (allowlisted: pip, python, node, npm, apt, curl, wget, cat, ls, mkdir, chmod)
download_fileDownload a file from a URL to a temporary directory
restart_botRestart the bot process
check_creditsCheck the remaining OpenRouter API credits (balance)
cache_statsShow cache statistics: tool cache, response dedup cache, and security verdict cache
Security note: exec_command only allows a predefined set of commands. Arbitrary shell execution is blocked. restart_bot requires admin privileges.

Table Renderer (1 tool)

Render markdown tables as dark-mode PNG images for clean display in Discord. Supports emoji, long text wrapping, and automatic column sizing.

ToolDescription
render_tableRender a markdown table as a dark-mode PNG image

Skill Manager (5 tools)

Manage user-defined skills at runtime: create, read, edit, and delete custom skills stored in the skills/ directory. Skills are hot-loaded without restarting the bot.

ToolDescription
list_skillsList all user-defined skills in the skills/ directory
read_skillRead the source code of a user-defined skill
create_skillCreate a new user-defined skill with JavaScript code
edit_skillReplace the source code of an existing user-defined skill
delete_skillDelete a user-defined skill directory

Skill Agent (1 tool)

AI-powered skill generator: describe what you want and the LLM generates a complete skill with tool definitions and execute logic.

ToolDescription
generate_skillGenerate a new bot skill from a name and description using AI

Image Generation (1 tool)

Generate images from text prompts using AI models via OpenRouter. Supports optional reference images for style or composition guidance.

ToolDescription
generate_imageGenerate an image from a text prompt, optionally with reference images

Custom Skills

VexAI supports user-defined skills that extend the bot's capabilities without modifying the core codebase. Custom skills are hot-loaded from the skills/ directory at startup and can be managed at runtime.

How Custom Skills Work

  • Skills are loaded from the skills/ directory in the project root
  • Each skill lives in its own subdirectory with a JavaScript entry file
  • Skills follow the registry pattern: name, description, tools[], and execute(toolName, args, context)
  • The SkillContext provides channelId, userId, guildId, client, and executeTool() for internal tool calls
  • Internal tool calls via executeTool() have a max recursion depth of 5 and bypass the security observer

Managing Custom Skills

Use the skill-manager tools to create, edit, delete, and list custom skills at runtime. Use the skill-agent to generate complete skill code from a natural-language description.

Skill Structure

{
  "name": "my-custom-skill",
  "description": "What this skill does",
  "tools": [
    {
      "name": "my_tool",
      "description": "What this tool does",
      "parameters": {
        "type": "object",
        "properties": {
          "input": { "type": "string", "description": "Input parameter" }
        },
        "required": ["input"]
      }
    }
  ]
}
Tip: Custom skills are hot-loaded, so you can add or modify skill files and they'll be picked up without restarting the bot. Use list_skills to verify your skill is loaded.