Skip to main content

Overview

Seed files define the initial state of a Slack workspace. They’re JSON files that specify users, channels, messages, and other data.

Quick Reference: slack_default

The most commonly used template. Here’s what’s inside:
User IDUsernameNameEmail
U01AGENBOT9agent_botAgent Botagent@example.com
U02JOHNDOE1john.doeJohn Doejohn@example.com
U03JANEDOE2jane.doeJane Doejane@example.com
Use U01AGENBOT9 as your impersonateUserId - this is the agent’s identity.

Seed File Location

Seeds are stored in examples/slack/seeds/:
examples/
└── slack/
    └── seeds/
        ├── slack_default.json
        ├── slack_bench_default.json
        └── your_custom_seed.json

Schema

Users

{
  "users": [
    {
      "user_id": "U01AGENBOT9",
      "username": "agent_bot",
      "display_name": "Agent Bot",
      "email": "agent@example.com",
      "is_bot": true,
      "is_admin": false,
      "status_text": "Working hard",
      "status_emoji": ":robot_face:",
      "timezone": "America/Los_Angeles"
    }
  ]
}
FieldTypeRequiredDescription
user_idstringYesUnique user ID (format: U + alphanumeric)
usernamestringYesUsername (no spaces)
display_namestringNoDisplay name
emailstringNoEmail address
is_botbooleanNoIs this a bot user
is_adminbooleanNoHas admin privileges

Channels

{
  "channels": [
    {
      "channel_id": "C01GENERAL99",
      "name": "general",
      "topic": "Company-wide announcements",
      "purpose": "General discussion",
      "is_private": false,
      "is_archived": false,
      "creator_id": "U01AGENBOT9"
    }
  ]
}
FieldTypeRequiredDescription
channel_idstringYesUnique channel ID (C + alphanumeric)
namestringYesChannel name (lowercase, no spaces)
topicstringNoChannel topic
purposestringNoChannel purpose
is_privatebooleanNoPrivate channel (default: false)
is_archivedbooleanNoArchived (default: false)

Channel Members

{
  "channel_members": [
    {
      "channel_id": "C01GENERAL99",
      "user_id": "U01AGENBOT9"
    },
    {
      "channel_id": "C01GENERAL99",
      "user_id": "U02JOHNDOE1"
    }
  ]
}

Messages

{
  "messages": [
    {
      "message_id": "1732645800.000100",
      "channel_id": "C01GENERAL99",
      "user_id": "U02JOHNDOE1",
      "message_text": "Welcome to the team!",
      "parent_id": null
    },
    {
      "message_id": "1732645810.000200",
      "channel_id": "C01GENERAL99",
      "user_id": "U01AGENBOT9",
      "message_text": "Thanks!",
      "parent_id": "1732645800.000100"
    }
  ]
}
FieldTypeRequiredDescription
message_idstringYesMessage timestamp ID
channel_idstringYesChannel the message is in
user_idstringYesUser who sent the message
message_textstringYesMessage content
parent_idstringNoParent message ID (for threads)

Reactions

{
  "reactions": [
    {
      "message_id": "1732645800.000100",
      "channel_id": "C01GENERAL99",
      "user_id": "U01AGENBOT9",
      "reaction_name": "thumbsup"
    }
  ]
}

Complete Example

{
  "users": [
    {
      "user_id": "U01AGENBOT9",
      "username": "agent_bot",
      "display_name": "Agent Bot",
      "email": "agent@example.com",
      "is_bot": true
    },
    {
      "user_id": "U02JOHNDOE1",
      "username": "john.doe",
      "display_name": "John Doe",
      "email": "john@example.com"
    },
    {
      "user_id": "U03JANEDOE2",
      "username": "jane.doe",
      "display_name": "Jane Doe",
      "email": "jane@example.com"
    }
  ],
  "channels": [
    {
      "channel_id": "C01GENERAL99",
      "name": "general",
      "topic": "Company-wide announcements",
      "is_private": false
    },
    {
      "channel_id": "C02RANDOM123",
      "name": "random",
      "topic": "Random stuff",
      "is_private": false
    },
    {
      "channel_id": "C03PRIVATE99",
      "name": "private-team",
      "is_private": true
    }
  ],
  "channel_members": [
    {"channel_id": "C01GENERAL99", "user_id": "U01AGENBOT9"},
    {"channel_id": "C01GENERAL99", "user_id": "U02JOHNDOE1"},
    {"channel_id": "C01GENERAL99", "user_id": "U03JANEDOE2"},
    {"channel_id": "C02RANDOM123", "user_id": "U01AGENBOT9"},
    {"channel_id": "C02RANDOM123", "user_id": "U02JOHNDOE1"},
    {"channel_id": "C03PRIVATE99", "user_id": "U02JOHNDOE1"},
    {"channel_id": "C03PRIVATE99", "user_id": "U03JANEDOE2"}
  ],
  "messages": [
    {
      "message_id": "1732645800.000100",
      "channel_id": "C01GENERAL99",
      "user_id": "U02JOHNDOE1",
      "message_text": "Welcome everyone!"
    },
    {
      "message_id": "1732645810.000200",
      "channel_id": "C01GENERAL99",
      "user_id": "U03JANEDOE2",
      "message_text": "Thanks John!",
      "parent_id": "1732645800.000100"
    }
  ],
  "reactions": [
    {
      "message_id": "1732645800.000100",
      "channel_id": "C01GENERAL99",
      "user_id": "U03JANEDOE2",
      "reaction_name": "wave"
    }
  ]
}

Creating a Custom Template

  1. Create your seed file in examples/slack/seeds/my_seed.json
  2. Register the template:
# In utils/seed_slack_template.py or via API
client.create_template_from_seed(
    service="slack",
    name="my_custom_template",
    seed_file="examples/slack/seeds/my_seed.json",
    visibility="private"
)
  1. Use your template:
env = client.init_env(
    templateService="slack",
    templateName="my_custom_template",
    impersonateUserId="U01AGENBOT9"
)

Tips

ID Format: Follow Slack’s ID conventions:
  • Users: U + 10 alphanumeric (e.g., U01AGENBOT9)
  • Channels: C + 10 alphanumeric (e.g., C01GENERAL99)
  • Messages: Unix timestamp with microseconds (e.g., 1732645800.000100)
Member Requirements: Users must be members of a channel to post messages or add reactions. Always include corresponding channel_members entries.

Next Steps