ClawdBot Skills System

Extend your AI assistant with custom skills. Install pre-built skills or create your own.

🎯 What are Skills?

Skills are modular extensions that give ClawdBot new capabilities. Think of them as plugins or tools the AI can use.

Skill Types

  • Tools: Functions AI can call (web search, calculations, etc.)
  • Integrations: Connect to external services (GitHub, Jira, etc.)
  • Workflows: Multi-step automation sequences
  • Prompts: Specialized system prompts for specific tasks

Skill Architecture

~/.clawdbot/skills/
├── web-search/
│   ├── SKILL.md          # Skill documentation
│   ├── skill.yaml        # Configuration
│   └── index.js          # Implementation
├── github-integration/
└── custom-skill/

📥 Installing Skills

Method 1: From Skill Registry

# List available skills
clawdbot skills list

# Install a skill
clawdbot skills install web-search

# Install multiple skills
clawdbot skills install web-search github-integration calendar

Method 2: From GitHub

# Install from GitHub repo
clawdbot skills install https://github.com/user/clawdbot-skill-name

# Install specific version
clawdbot skills install web-search@1.2.0

Method 3: Local Installation

# Install from local directory
clawdbot skills install ./my-custom-skill

# Link for development
clawdbot skills link ./my-skill-dev

Managing Skills

# List installed skills
clawdbot skills list --installed

# Update skill
clawdbot skills update web-search

# Update all skills
clawdbot skills update --all

# Uninstall skill
clawdbot skills uninstall web-search

# Enable/disable skill
clawdbot skills enable web-search
clawdbot skills disable web-search

🔧 Built-in Skills

ClawdBot comes with several pre-installed skills:

1. Web Search

You: Search for latest AI news
Bot: [Uses web-search skill to find current information]

2. File Operations

You: Read the file config.yaml
Bot: [Reads and displays file content]

You: Create a new file hello.py with a print statement
Bot: [Creates file with code]

3. Code Execution

You: Run this Python code: print(2+2)
Bot: [Executes code safely]
Output: 4

4. Browser Automation

You: Go to example.com and screenshot it
Bot: [Opens browser, takes screenshot]

See: Browser Automation Guide

5. Terminal Commands

You: List files in current directory
Bot: [Runs ls command]

🌟 Popular Community Skills

Productivity Skills

Skill Description Install
calendar Google Calendar integration clawdbot skills install calendar
email Send/read emails clawdbot skills install email
notion Notion database access clawdbot skills install notion
todoist Task management clawdbot skills install todoist

Developer Skills

Skill Description Install
github GitHub API integration clawdbot skills install github
docker Docker container management clawdbot skills install docker
database SQL database queries clawdbot skills install database
api-tester Test REST APIs clawdbot skills install api-tester

Data & Research Skills

  • arxiv - Search academic papers
  • wikipedia - Wikipedia integration
  • wolfram - Wolfram Alpha queries
  • weather - Weather information

🛠️ Creating Custom Skills

Skill Structure

my-skill/
├── SKILL.md              # Documentation (required)
├── skill.yaml            # Configuration (required)
├── index.js              # Main implementation
├── package.json          # Dependencies
└── examples/             # Usage examples

SKILL.md Example

---
name: weather-checker
description: Get weather information for any location
version: 1.0.0
author: Your Name
---

# Weather Checker Skill

This skill allows ClawdBot to fetch weather information.

## Usage

```
You: What's the weather in Tokyo?
Bot: [Uses weather-checker skill]
```

## Configuration

Add your API key to config.yaml:

```yaml
skills:
  weather-checker:
    apiKey: "your-api-key"
```

skill.yaml Example

name: weather-checker
version: 1.0.0
description: Get weather information

# Tool definition
tools:
  - name: get_weather
    description: Get current weather for a location
    parameters:
      type: object
      properties:
        location:
          type: string
          description: City name or coordinates
        units:
          type: string
          enum: [celsius, fahrenheit]
          default: celsius
      required: [location]

# Configuration schema
config:
  apiKey:
    type: string
    required: true
    description: Weather API key

# Dependencies
dependencies:
  - axios

# Permissions
permissions:
  - network
  - config

index.js Example

// index.js
const axios = require('axios');

module.exports = {
  name: 'weather-checker',
  
  async get_weather({ location, units = 'celsius' }) {
    const apiKey = this.config.apiKey;
    const url = `https://api.weather.com/v1/current?location=${location}&units=${units}&key=${apiKey}`;
    
    try {
      const response = await axios.get(url);
      return {
        temperature: response.data.temp,
        conditions: response.data.conditions,
        humidity: response.data.humidity
      };
    } catch (error) {
      throw new Error(`Failed to fetch weather: ${error.message}`);
    }
  }
};

Testing Your Skill

# Link skill for development
cd my-skill
clawdbot skills link .

# Test skill
clawdbot test-skill weather-checker

# Use in conversation
clawdbot chat "What's the weather in Paris?"

💡 Skill Examples

Simple Calculator Skill

// calculator-skill/index.js
module.exports = {
  name: 'calculator',
  
  tools: {
    calculate: {
      description: 'Perform mathematical calculations',
      parameters: {
        expression: { type: 'string', description: 'Math expression' }
      },
      handler: async ({ expression }) => {
        // Safe eval using math.js or similar
        const result = eval(expression); // Use proper library in production!
        return { result };
      }
    }
  }
};

GitHub Issue Creator

// github-skill/index.js
const { Octokit } = require('@octokit/rest');

module.exports = {
  name: 'github',
  
  async create_issue({ repo, title, body }) {
    const octokit = new Octokit({ auth: this.config.githubToken });
    
    const [owner, repoName] = repo.split('/');
    
    const issue = await octokit.issues.create({
      owner,
      repo: repoName,
      title,
      body
    });
    
    return {
      url: issue.data.html_url,
      number: issue.data.number
    };
  }
};

❓ Skills FAQ

Are skills safe to install?
Skills run with permissions you grant. Review skill code before installing, especially from unknown sources.
Can skills access my files?
Only if you grant file system permissions. Check skill.yaml for required permissions.
How do I share my skill?
Publish to GitHub and submit to ClawdBot skill registry via pull request.
Can I monetize skills?
Yes, you can create paid skills or offer premium features.

📚 Related Guides