Agent Testing — Bot Channels (LobeHub project skill)

SkillCommunication

Lets your agent test a chat bot end-to-end by driving real chat apps like Discord, Slack, and Telegram on macOS.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Agent Testing — Bot Channels (LobeHub project skill) skill

About this capability

Bot-channel end-to-end verification for LobeHub — drives the real native chat apps (Discord / Slack / Telegram / WeChat / Lark / QQ / iMessage) via osascript or the iMessage bridge, on macOS. Extends the generic acceptance skill for bot surfaces. Triggers on 'test bot', 'bot test', 'test in discord'

What this skill tells your AI

The instructions your AI receives, as published by lobehub/lobehub in .agents/skills/agent-testing-bot/SKILL.md and read by ahel’s review.

This skill extends the generic acceptance skill (installed alongside at ../acceptance/) to the bot-channel surfaces. It does NOT replace the core process: the same three phases apply —

PLAN (Steps 0–2) → EXECUTE (Steps 3–6) → FINISH (Step 7)

— and the same report + publish pipeline (result.jsonreport-init.shlh acceptance run ingest … --source agent-testing). Read the acceptance skill's SKILL.md for target grounding, the living logs, the Phase-1 approval gate, the report format, and teardown. This file only adds the bot-channel surface.

For LobeHub environment/auth/probe specifics (dev server, seeded account, ports), the adapter is .agents/acceptance/PROJECT.md.

When this surface applies

Change scopeSurfaceWhy
Bot channels (Discord / WeChat / Lark / …)Native app via osascript / bridgeOnly way to exercise the real channel end-to-end

Route here only when the behavior under test is a bot channel. For CLI / Web / Electron changes, use the generic skill's surfaces.

Platforms

Each platform folder has an index.md (activation, navigation, send-message, verification snippets) and a test-<platform>-bot.sh driver.

PlatformGuideQuick switcher
Discorddiscord/index.mdCmd+K
Slackslack/index.mdCmd+K
Telegramtelegram/index.mdCmd+F
WeChat / 微信wechat/index.mdCmd+F
Lark / 飞书lark/index.mdCmd+K
QQqq/index.mdCmd+F
iMessageimessage/index.mdbridge (no osascript)

Shared driver contract

Every osascript platform script shares one interface:

./$PLATFORM/test-$PLATFORM-bot.sh $CHANNEL_OR_CONTACT $MESSAGE [$WAIT_SECONDS] [$SCREENSHOT_PATH]

The script activates the app, navigates to the channel/contact, sends the message, waits, and screenshots the result window (via the generic skill's ../../acceptance/scripts/capture-app-window.sh). iMessage is the exception: it uses a BlueBubbles bridge, not osascript — see imessage/index.md.

osascript prerequisites

The osascript platforms drive real macOS apps (activate, keystroke, click, read accessibility, screenshot). Read the generic skill's general macOS-automation reference before a first bot run: ../../acceptance/references/osascript.md. The target native app must already be running and logged in.

Screen-recording gate (macOS-only)

Bot evidence is captured with OS-level screencapture (through capture-app-window.sh), NOT CDP — so it comes out entirely black when macOS Screen Recording (TCC) permission is missing OR the display is asleep / locked / on a screensaver. Gate BEFORE any bot capture:

./.agents/acceptance/scripts/check-screen-recording.sh # exit 0 = OS capture will work

Keep the display awake for the whole capture session (caffeinate -dimsu &, kill when done). Because this surface depends on OS capture and native macOS apps, bot channels are macOS-only — they do not run headless / in cloud.

Signals

GitHub stars
82k
Forks
16k
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
agent-testing-bot-lobehub
Source
github.com/lobehub/lobehub