Waggle supports three distinct extension mechanisms, each with its own loading, validation, and runtime model.
SKILL Markdown Instructions
SKILL.md files contain agent instructions with YAML frontmatter for metadata, permissions, and scope. Loaded at chat-turn time, injected into the system prompt.
--- frontmatter ---name:Deploy Helperscope:personalpermissions:codeExecution:truenetwork:true--- end ---# Body is injected into system prompt
📄SKILL.md
→
⚙Parse FM
→
✓Validate
→
🤖Agent
PLUGIN JS/TS Code Modules
Plugins are code packages with a plugin.json manifest. They contribute tools, skills, and lifecycle hooks. Managed by PluginRuntime with a state machine (installed > enabled > active).
MCP servers run as separate processes, connected via stdio or SSE. They expose tools, resources, and prompt templates through the Model Context Protocol standard.
SQLite-backed package catalog with 148 MCP entries, SecurityGate multi-layer validation, auto-seed from bundled registry data, and full search/filter capabilities.
User-created SKILL.md files with hot-reload, usage tracking, auto-retirement after 90 days idle, and promotion from personal to enterprise scope.
Skill File Structure
~/.waggle/skills/my-skill.md---name:Deploy Helperdescription:Helps deploy appsscope:personalpermissions:fileSystem:truenetwork:truecodeExecution:trueexternalServices:falsesecrets:falsebrowserAutomation:false---# Deploy HelperYou are a deployment specialist...
Agent detects repeated patterns across conversations, extracts them into reusable SKILL.md files, and optionally enriches with LLM synthesis.
1
Pattern Detection
Agent analyzes conversation history for repeated instruction patterns, common tool chains, and recurring workflows. Threshold: 3+ occurrences across sessions triggers extraction candidacy.
2
Skill Extraction
generateSkillMarkdown() creates a structured SKILL.md with frontmatter (name, description, permissions) and body (instructions, examples, constraints).
3
File Creation
Writes to ~/.waggle/skills/{name}.md with scope: personal. fs.watch triggers hot-reload so the skill is immediately available without restart.
4
LLM Enrichment (Optional)
If enabled, the extracted skill is refined by an LLM pass: clearer instructions, better examples, edge case handling, and permission tightening. Costs one Haiku call (~$0.001).
5
Promotion Pipeline
High-usage personal skills are candidates for promotion. Each step requires admin approval and appends to promoted_from[].
Detection Signals
●Repeated instructions - Same phrasing across 3+ conversations
●Tool chains - Same sequence of tool calls in recurring patterns
●Workflow templates - Multi-step processes that follow a fixed order
●Style preferences - Consistent formatting, tone, or output rules
Generated Skill Example
---name:Git PR Workflowdescription:Standard PR creation flowscope:personalpermissions:codeExecution:true---# Git PR WorkflowWhen creating a pull request:1. Run git diff to review changes2. Write descriptive commit message3. Push to feature branch4. Create PR with summary + test plan
MCP Integration
148 curated MCP servers across 14 categories. Tool discovery, resource access, and prompt templates unified into the agent's tool pool.
MCP Server Catalog 148 entries
Cross-referenced from 4 sources: official Anthropic repo, punkpeye/awesome-mcp-servers (77K stars), appcypher collection, and tolkonepiu/best-of (450 ranked, 34 categories). Dedup enforced via assertCatalogUnique at module load.
Executable functions exposed by the server. Appear in agent tool pool with mcp__{server}__{tool} naming. Called via JSON-RPC tools/call.
📄Resources
Data endpoints the server exposes (files, database rows, API results). Agent can read via resources/read. Supports subscriptions for live updates.
💬Prompt Templates
Pre-built prompt structures the server offers. Retrieved via prompts/get. Injected into system prompt alongside skill content.
Tool Pool Unification
All extension types merge into a single tool pool that the agent sees. filterToolsForContext() applies persona allowlist/denylist before each chat turn.