Back to Skills
    šŸ¦ž

    agent-council

    Complete toolkit for creating autonomous AI agents and managing

    By @itsahedge
    View on GitHub
    SKILL.md
    ---
    name: agent-council
    description: Complete toolkit for creating autonomous AI agents and managing Discord channels for OpenClaw. Use when setting up multi-agent systems, creating new agents, or managing Discord channel organization.
    ---
    
    # Agent Council
    
    Complete toolkit for creating and managing autonomous AI agents with Discord integration for OpenClaw.
    
    ## What This Skill Does
    
    **Agent Creation:**
    - Creates autonomous AI agents with self-contained workspaces
    - Generates SOUL.md (personality & responsibilities)
    - Generates HEARTBEAT.md (cron execution logic)
    - Sets up memory system (hybrid architecture)
    - Configures gateway automatically
    - Binds agents to Discord channels (optional)
    - Sets up daily memory cron jobs (optional)
    
    **Discord Channel Management:**
    - Creates Discord channels via API
    - Configures OpenClaw gateway allowlists
    - Sets channel-specific system prompts
    - Renames channels and updates references
    - Optional workspace file search
    
    ## Installation
    
    ```bash
    # Install from ClawHub
    clawhub install agent-council
    
    # Or manual install
    cp -r . ~/.openclaw/skills/agent-council/
    openclaw gateway config.patch --raw '{
      "skills": {
        "entries": {
          "agent-council": {"enabled": true}
        }
      }
    }'
    ```
    
    ## Part 1: Agent Creation
    
    ### Quick Start
    
    ```bash
    scripts/create-agent.sh \
      --name "Watson" \
      --id "watson" \
      --emoji "šŸ”¬" \
      --specialty "Research and analysis specialist" \
      --model "anthropic/claude-opus-4-5" \
      --workspace "$HOME/agents/watson" \
      --discord-channel "1234567890"
    ```
    
    ### Workflow
    
    #### 1. Gather Requirements
    
    Ask the user:
    - **Agent name** (e.g., "Watson")
    - **Agent ID** (lowercase, hyphenated, e.g., "watson")
    - **Emoji** (e.g., "šŸ”¬")
    - **Specialty** (what the agent does)
    - **Model** (which LLM to use)
    - **Workspace** (where to create agent files)
    - **Discord channel ID** (optional)
    
    #### 2. Run Creation Script
    
    ```bash
    scripts/create-agent.sh \
      --name "Agent Name" \
      --id "agent-id" \
      --emoji "šŸ¤–" \
      --specialty "What this agent does" \
      --model "provider/model-name" \
      --workspace "/path/to/workspace" \
      --discord-channel "1234567890"  # Optional
    ```
    
    The script automatically:
    - āœ… Creates workspace with memory subdirectory
    - āœ… Generates SOUL.md and HEARTBEAT.md
    - āœ… Updates gateway config (preserves existing agents)
    - āœ… Adds Discord channel binding (if specified)
    - āœ… Restarts gateway to apply changes
    - āœ… Prompts for daily memory cron setup
    
    #### 3. Customize Agent
    
    After creation:
    - **SOUL.md** - Refine personality, responsibilities, boundaries
    - **HEARTBEAT.md** - Add periodic checks and cron logic
    - **Workspace files** - Add agent-specific configuration
    
    ### Agent Architecture
    
    **Self-contained structure:**
    ```
    agents/
    ā”œā”€ā”€ watson/
    │   ā”œā”€ā”€ SOUL.md              # Personality and responsibilities
    │   ā”œā”€ā”€ HEARTBEAT.md         # Cron execution logic
    │   ā”œā”€ā”€ memory/              # Agent-specific memory
    │   │   ā”œā”€ā”€ 2026-02-01.md   # Daily memory logs
    │   │   └── 2026-02-02.md
    │   └── .openclaw/
    │       └── skills/          # Agent-specific skills (optional)
    ```
    
    **Memory system:**
    - Agent-specific memory: `<workspace>/memory/YYYY-MM-DD.md`
    - Shared memory access: Agents can read shared workspace
    - Daily updates: Optional cron job for summaries
    
    **Cron jobs:**
    If your agent needs scheduled tasks:
    1. Create HEARTBEAT.md with execution logic
    2. Add cron jobs with `--session <agent-id>`
    3. Document in SOUL.md
    
    ### Examples
    
    **Research agent:**
    ```bash
    scripts/create-agent.sh \
      --name "Watson" \
      --id "watson" \
      --emoji "šŸ”¬" \
      --specialty "Deep research and competitive analysis" \
      --model "anthropic/claude-opus-4-5" \
      --workspace "$HOME/agents/watson" \
      --discord-channel "1234567890"
    ```
    
    **Image generation agent:**
    ```bash
    scripts/create-agent.sh \
      --name "Picasso" \
      --id "picasso" \
      --emoji "šŸŽØ" \
      --specialty "Image generation and editing specialist" \
      --model "google/gemini-3-flash-preview" \
      --workspace "$HOME/agents/picasso" \
      --discord-channel "9876543210"
    ```
    
    **Health tracking agent:**
    ```bash
    scripts/create-agent.sh \
      --name "Nurse Joy" \
      --id "nurse-joy" \
      --emoji "šŸ’Š" \
      --specialty "Health tracking and wellness monitoring" \
      --model "anthropic/claude-opus-4-5" \
      --workspace "$HOME/agents/nurse-joy" \
      --discord-channel "5555555555"
    ```
    
    ## Part 2: Discord Channel Management
    
    ### Channel Creation
    
    #### Quick Start
    
    ```bash
    python3 scripts/setup-channel.py \
      --name research \
      --context "Deep research and competitive analysis"
    ```
    
    #### Workflow
    
    1. Run setup script:
    ```bash
    python3 scripts/setup-channel.py \
      --name <channel-name> \
      --context "<channel-purpose>" \
      [--category-id <discord-category-id>]
    ```
    
    2. Apply gateway config (command shown by script):
    ```bash
    openclaw gateway config.patch --raw '{"channels": {...}}'
    ```
    
    #### Options
    
    **With category:**
    ```bash
    python3 scripts/setup-channel.py \
      --name research \
      --context "Deep research and competitive analysis" \
      --category-id "1234567890"
    ```
    
    **Use existing channel:**
    ```bash
    python3 scripts/setup-channel.py \
      --name personal-finance \
      --id 1466184336901537897 \
      --context "Personal finance management"
    ```
    
    ### Channel Renaming
    
    #### Quick Start
    
    ```bash
    python3 scripts/rename-channel.py \
      --id 1234567890 \
      --old-name old-name \
      --new-name new-name
    ```
    
    #### Workflow
    
    1. Run rename script:
    ```bash
    python3 scripts/rename-channel.py \
      --id <channel-id> \
      --old-name <old-name> \
      --new-name <new-name> \
      [--workspace <workspace-dir>]
    ```
    
    2. Apply gateway config if systemPrompt needs updating (shown by script)
    
    3. Commit workspace file changes (if `--workspace` used)
    
    #### With Workspace Search
    
    ```bash
    python3 scripts/rename-channel.py \
      --id 1234567890 \
      --old-name old-name \
      --new-name new-name \
      --workspace "$HOME/my-workspace"
    ```
    
    This will:
    - Rename Discord channel via API
    - Update gateway config systemPrompt
    - Search and update workspace files
    - Report files changed for git commit
    
    ## Complete Multi-Agent Setup
    
    **Full workflow from scratch:**
    
    ```bash
    # 1. Create Discord channel
    python3 scripts/setup-channel.py \
      --name research \
      --context "Deep research and competitive analysis" \
      --category-id "1234567890"
    
    # (Note the channel ID from output)
    
    # 2. Apply gateway config for channel
    openclaw gateway config.patch --raw '{"channels": {...}}'
    
    # 3. Create agent bound to that channel
    scripts/create-agent.sh \
      --name "Watson" \
      --id "watson" \
      --emoji "šŸ”¬" \
      --specialty "Deep research and competitive analysis" \
      --model "anthropic/claude-opus-4-5" \
      --workspace "$HOME/agents/watson" \
      --discord-channel "1234567890"
    
    # Done! Agent is created and bound to the channel
    ```
    
    ## Configuration
    
    ### Discord Category ID
    
    **Option 1: Command line**
    ```bash
    python3 scripts/setup-channel.py \
      --name channel-name \
      --context "Purpose" \
      --category-id "1234567890"
    ```
    
    **Option 2: Environment variable**
    ```bash
    export DISCORD_CATEGORY_ID="1234567890"
    python3 scripts/setup-channel.py --name channel-name --context "Purpose"
    ```
    
    ### Finding Discord IDs
    
    **Enable Developer Mode:**
    - Settings → Advanced → Developer Mode
    
    **Copy IDs:**
    - Right-click channel → Copy ID
    - Right-click category → Copy ID
    
    ## Scripts Reference
    
    ### create-agent.sh
    
    **Arguments:**
    - `--name` (required) - Agent name
    - `--id` (required) - Agent ID (lowercase, hyphenated)
    - `--emoji` (required) - Agent emoji
    - `--specialty` (required) - What the agent does
    - `--model` (required) - LLM to use (provider/model-name)
    - `--workspace` (required) - Where to create agent files
    - `--discord-channel` (optional) - Discord channel ID to bind
    
    **Output:**
    - Creates agent workspace
    - Generates SOUL.md and HEARTBEAT.md
    - Updates gateway config
    - Optionally creates daily memory cron
    
    ### setup-channel.py
    
    **Arguments:**
    - `--name` (required) - Channel name
    - `--context` (required) - Channel purpose/context
    - `--id` (optional) - Existing channel ID
    - `--category-id` (optional) - Discord category ID
    
    **Output:**
    - Creates Discord channel (if doesn't exist)
    - Generates gateway config.patch command
    
    ### rename-channel.py
    
    **Arguments:**
    - `--id` (required) - Channel ID
    - `--old-name` (required) - Current channel name
    - `--new-name` (required) - New channel name
    - `--workspace` (optional) - Workspace directory to search
    
    **Output:**
    - Renames Discord channel
    - Updates gateway systemPrompt (if needed)
    - Lists updated files (if workspace search enabled)
    
    ## Gateway Integration
    
    This skill integrates with OpenClaw's gateway configuration:
    
    **Agents:**
    ```json
    {
      "agents": {
        "list": [
          {
            "id": "watson",
            "name": "Watson",
            "workspace": "/path/to/agents/watson",
            "model": {
              "primary": "anthropic/claude-opus-4-5"
            },
            "identity": {
              "name": "Watson",
              "emoji": "šŸ”¬"
            }
          }
        ]
      }
    }
    ```
    
    **Bindings:**
    ```json
    {
      "bindings": [
        {
          "agentId": "watson",
          "match": {
            "channel": "discord",
            "peer": {
              "kind": "channel",
              "id": "1234567890"
            }
          }
        }
      ]
    }
    ```
    
    **Channels:**
    ```json
    {
      "channels": {
        "discord": {
          "guilds": {
            "YOUR_GUILD_ID": {
              "channels": {
                "1234567890": {
                  "allow": true,
                  "requireMention": false,
                  "systemPrompt": "Deep research and competitive analysis"
                }
              }
            }
          }
        }
      }
    }
    ```
    
    ## Agent Coordination
    
    Your main agent coordinates with specialized agents using OpenClaw's built-in session management tools.
    
    ### List Active Agents
    
    See all active agents and their recent activity:
    
    ```typescript
    sessions_list({
      kinds: ["agent"],
      limit: 10,
      messageLimit: 3  // Show last 3 messages per agent
    })
    ```
    
    ### Send Messages to Agents
    
    **Direct communication:**
    ```typescript
    sessions_send({
      label: "watson",  // Agent ID
      message: "Research the competitive landscape for X"
    })
    ```
    
    **Wait for respon
    
    ... (truncated)