Waggle Marketplace & Connector Ecosystem

Skills, Plugins, MCP Servers, 30 Native Connectors, Composio 250+ Integrations

3
Extension Types
148
MCP Servers
30
Native Connectors
250+
Composio Integrations
14
MCP Categories

Three Extension Types

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 Helper scope: personal permissions: codeExecution: true network: 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).

// plugin.json manifest { "name": "my-plugin", "tools": [{ "name": "deploy" }], "skills": ["deploy.md"] } // Lifecycle: installed > enabled > active
📦Package
🔎Manifest
Activate
🔧Tool Pool

MCP External Processes

MCP servers run as separate processes, connected via stdio or SSE. They expose tools, resources, and prompt templates through the Model Context Protocol standard.

// .mcp.json configuration { "servers": { "filesystem": { "command": "npx", "args": ["@mcp/filesystem"] } } }
🌐Config
🔄Spawn
🔍Discover
🤖Merged
Skill (Markdown)
Plugin (Code)
MCP Server (Process)
Connector (API)

Marketplace Catalog

SQLite-backed package catalog with 148 MCP entries, SecurityGate multi-layer validation, auto-seed from bundled registry data, and full search/filter capabilities.

Catalog Architecture

MarketplaceDB (SQLite) tables: sources, packages, packs, installed auto-seed: mcp-registry.ts inserts 148 entries dedup: assertCatalogUnique at load time Package Types: skill | plugin | mcp_server | template | pack Source Types: marketplace | registry | github_org npm_registry | community_repo | ...

SECURITY SecurityGate Validation

4-Layer Security Pipeline Layer 1: Gen Trust Hub API Cloud URL pre-check (fast, free) Layer 2: Cisco Skill Scanner Local deep analysis (pattern + behavioral + LLM) Layer 3: MCP Guardian Inline tool description pattern matching Layer 4: Built-in Heuristics Waggle-specific threat pattern rules
CRITICAL: Block
HIGH: Block (override)
MEDIUM: Warn
LOW/CLEAN: Allow

Installation Flow

1
🔍
Browse
Search catalog by name, category, type
2
🛡
Security Scan
4-layer validation pipeline
3
📥
Install
Type-specific handler writes files
4
Available
Tools appear in agent pool

Threat Categories Detected

💥Prompt Injection
📤Data Exfiltration
😈Malicious Code
🔒Privilege Escalation
🦠Tool Poisoning
🌐Cross-Origin
💣Rug Pull
👁Obfuscation

Connector Architecture

30 native connectors with Vault-based credential management, plus Composio meta-connector bridging 250+ external services.

📚Registry30 connectors
🔐Vault LookupCredential fetch
🚀API CallAuthenticated
🤖Agent ResultTool output

Native Connectors 30

Composio Meta-Connector 250+

Single API key bridges to 250+ external services. Actions discovered dynamically and executed through approval gates.

ComposioConnector extends BaseConnector authType: 'api_key' (X-API-KEY header) api: backend.composio.dev/api/v1 Actions: list_integrations // connected services list_actions // available operations execute_action // run (risk: HIGH) get_action_schema // input/output defs

Connector SDK Interface

interface WaggleConnector { readonly id: string // 'github', 'slack', ... readonly name: string // Display name readonly authType: 'bearer' | 'oauth2' | 'api_key' | 'basic' readonly substrate: 'waggle' | 'kvark' readonly actions: ConnectorAction[] connect(vault: VaultStore): Promise<void> executeAction(name: string, input: unknown): Promise<ConnectorResult> healthCheck(): Promise<ConnectorHealth> }

Custom Skill Lifecycle

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 Helper description: Helps deploy apps scope: personal permissions: fileSystem: true network: true codeExecution: true externalServices: false secrets: false browserAutomation: false --- # Deploy Helper You are a deployment specialist...

Lifecycle Stages

Create
User writes SKILL.md in ~/.waggle/skills/
👁
Hot-Reload
fs.watch detects changes, re-parses frontmatter instantly
📈
Usage Tracking
Each invocation logged with timestamp for activity analysis
🕑
Auto-Retirement
Skills idle 90+ days flagged for cleanup to prevent bloat

Promotion Chain

Skills are promoted one step at a time. Each promotion is recorded in promoted_from[] for audit trail. Demotion is not supported.

👤 Personal
💻 Workspace
👥 Team
🏢 Enterprise

SkillFrontmatter Interface

type SkillScope = 'personal' | 'workspace' | 'team' | 'enterprise' interface SkillFrontmatter { name?: string description?: string scope?: SkillScope // defaults to 'personal' promoted_from?: SkillScope[] // append-only audit trail permissions?: { fileSystem, network, codeExecution, externalServices, secrets, browserAutomation } }

Skill Auto-Extraction Pipeline

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 Workflow description: Standard PR creation flow scope: personal permissions: codeExecution: true --- # Git PR Workflow When creating a pull request: 1. Run git diff to review changes 2. Write descriptive commit message 3. Push to feature branch 4. 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.

McpServer Interface

interface McpServer { id: string name: string description: string author: string category: string // one of 14 categories url: string installCmd: string // npx @mcp/... capabilities: string[] // tools | resources | prompts official?: boolean logo?: string // emoji or brand initial }

MCP Capabilities

🔧Tools
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.

📜SkillsSystem prompt
+
📦Plugin ToolsCode modules
+
🌐MCP ToolsExternal processes
+
🔌ConnectorsAPI bridges
filterToolsPersona filter
🤖AgentUnified pool