Agent skill

LangBot EBA Adapter Development

by langbot-app in langbot-app/LangBot

Guides building, migrating and testing LangBot messaging-platform adapters for the Event-Based Agents layout, with unified event and message conversion.

Apache-2.0Auto-check passedBackend & APIs

Install LangBot EBA Adapter Development

skills CLI
$ npx skills add langbot-app/LangBot --skill langbot-eba-adapter-dev -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install langbot-app/LangBot langbot-eba-adapter-dev --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/langbot-app/LangBot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/skills/langbot-eba-adapter-dev .claude/skills/langbot-eba-adapter-dev && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
langbot-eba-adapter-dev
GitHub stars
18k
Token cost
~4k tokens
SKILL.md length
1,669 words
Files
1
Skills in repo
9
Repo updated
First seen
Licence
Apache-2.0

At a glance

Guides building, migrating and testing LangBot messaging-platform adapters for the Event-Based Agents layout, with unified event and message conversion.

  • Works in 6 steps: Read the EBA design docs in… → Read the architecture-level acceptance… → Read the current reference adapter… → …
  • Adding a new messaging platform adapter to LangBot
  • SKILL.md covers Controlling a running instance…, Core Rule, Start Here and Adapter Layout, plus 9 more sections
  • Calls uv and git; reaches space.langbot.app

What it does

Platform-specific event and message shapes must not leak into LangBot's common path. Each adapter converts incoming SDK objects into unified EBA entities (events, message chains, users, groups and members) before dispatch, keeping the raw platform object only in `source_platform_object` for debugging. A reading order is set: the EBA design docs, the acceptance checklist, the Telegram reference adapter, the legacy source adapter for the target platform and the SDK entity definitions.

Each adapter gets its own directory under the platform adapters package, with optional helpers such as `voice.py` only where the platform has a real need. The skill also explains how to drive a running LangBot instance and the LangBot Space marketplace over MCP using existing API keys, and mentions live adapter probes and end-to-end testing with a standalone plugin runtime and Computer Use.

When your agent uses it

  • Adding a new messaging platform adapter to LangBot
  • Migrating an existing Telegram or Discord adapter to the EBA layout
  • Validating that an adapter converts events and messages into the unified entities
  • Testing an adapter end to end against the real platform

Example prompts

  • “Migrate the legacy Discord adapter to the EBA layout, using the Telegram adapter as the reference.”
  • “Review my new adapter against the acceptance checklist and flag any raw platform objects leaking through.”
  • “Write a live probe for the adapter that sends a message and checks the converted event.”

Requirements

  • A LangBot checkout with its EBA docs and plugin SDK
  • A LangBot API key, to control a running instance over MCP

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Read the EBA design docs in LangBot/docs/event-based-agents/.
  2. Read the architecture-level acceptance checklist before writing or validating code
  3. Read the current reference adapter before writing code. Prefer Telegram first
  4. Read the legacy source adapter for the target platform
  5. Inspect SDK entity definitions in langbot-plugin-sdk/src/langbot_plugin/api/entities/builtin/platform/.
  6. Search before assuming APIs. Platform SDKs change often.

What it can do on your machine

Read from SKILL.md and the folder at commit de886ed. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • uv
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • space.langbot.app

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

LangBot EBA Adapter Development loads about 4k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 1,669 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~97
When it runs · the whole SKILL.md, loaded when a task matches
~4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from langbot-app/LangBot at commit de886ed, republished under its Apache-2.0 licence (© langbot-app). 1,669 words, ~3,971 tokens.

Download SKILL.mdSave it as .claude/skills/langbot-eba-adapter-dev/SKILL.md (or your agent's skills folder).
name
langbot-eba-adapter-dev
description
Build, refactor, and test LangBot platform adapters for the Event-Based Agents architecture. Use when adding or migrating Telegram, Discord, or other messaging platform adapters to the EBA adapter layout, validating unified event/message conversion, writing live adapter probes, or using standalone plugin runtime plus Computer Use for end-to-end platform testing.

LangBot EBA Adapter Development

Use this skill when implementing or reviewing a LangBot platform adapter under the Event-Based Agents architecture.

Controlling a running instance via MCP

Beyond writing code, you can drive a live LangBot instance over MCP — no raw HTTP needed. Two MCP servers exist (both reuse existing API keys; see AGENTS.md):

  • LangBot instance — http://<host>:5300/mcp (auth: web-UI lbk_ key or the api.global_api_key from config.yaml). Manage bots, pipelines, models, knowledge bases, and skills. See the langbot-mcp-ops skill.
  • LangBot Space marketplace — https://space.langbot.app/mcp (auth: Personal Access Token). Search plugins / MCP servers / skills. See the langbot-space-ops skill.

Any change to an agent-accessible HTTP API endpoint must keep the matching MCP tool and these skills in sync.

Core Rule

Do not let platform-native event or message shapes leak into LangBot's common path. Each adapter must convert incoming SDK objects into unified EBA entities before dispatch:

  • Events: langbot_plugin.api.entities.builtin.platform.events
  • Message chains: langbot_plugin.api.entities.builtin.platform.message.MessageChain
  • Users/groups/members: langbot_plugin.api.entities.builtin.platform.entities
  • Raw platform objects may remain only in source_platform_object for debugging or platform-specific escape hatches.

Start Here

  1. Read the EBA design docs in LangBot/docs/event-based-agents/.
  2. Read the architecture-level acceptance checklist before writing or validating code:
    • LangBot/docs/event-based-agents/adapters/acceptance-checklist.md
  3. Read the current reference adapter before writing code. Prefer Telegram first:
    • LangBot/src/langbot/pkg/platform/adapters/telegram/
    • LangBot/docs/event-based-agents/adapters/telegram.md
  4. Read the legacy source adapter for the target platform:
    • LangBot/src/langbot/pkg/platform/sources/<platform>.py
    • LangBot/src/langbot/pkg/platform/sources/<platform>.yaml
  5. Inspect SDK entity definitions in langbot-plugin-sdk/src/langbot_plugin/api/entities/builtin/platform/.
  6. Search before assuming APIs. Platform SDKs change often.

Adapter Layout

Create one directory per adapter:

text
LangBot/src/langbot/pkg/platform/adapters/<platform>/
├── __init__.py
├── adapter.py
├── api_impl.py
├── event_converter.py
├── manifest.yaml
├── message_converter.py
├── platform_api.py
├── types.py
└── <platform>.svg

Add optional helpers such as voice.py only when the platform has a real domain-specific surface.

Ensure pyproject.toml package data includes adapter assets:

toml
package-data = { "langbot" = ["templates/**", "pkg/platform/sources/*", "pkg/platform/adapters/**", ...] }

Implementation Checklist

  • manifest.yaml declares metadata.name, config schema, supported events, common APIs, and platform-specific APIs.
  • adapter.py creates the platform client, subscribes to native events, filters self/bot loops where appropriate, calls event_converter.target2yiri(...), then dispatches the EBA event.
  • event_converter.py maps native events to EBA event classes such as MessageReceivedEvent, MessageEditedEvent, MessageDeletedEvent, MessageReactionEvent, MemberJoinedEvent, BotInvitedToGroupEvent, and PlatformSpecificEvent.
  • message_converter.py maps native messages to MessageChain, and maps MessageChain back to the platform send format.
  • api_impl.py implements common EBA APIs: send, reply, edit, delete, forward, user/group/member lookup, moderation, upload/file URL, leave group.
  • platform_api.py keeps platform-specific calls behind call_platform_api(action, params).
  • Unsupported common APIs must raise explicit SDK platform errors such as NotSupportedError; do not silently no-op.
  • Destructive APIs such as kick, ban, leave, delete, or moderation must be gated in live tests and documented.

Conversion Contract

For message events, the common shape should look like this regardless of platform:

python
platform_events.MessageReceivedEvent(
    type="message.received",
    adapter_name="<platform>",
    message_id=<platform_message_id>,
    message_chain=platform_message.MessageChain([...]),
    sender=platform_entities.User(...),
    chat_type=platform_entities.ChatType.PRIVATE or ChatType.GROUP,
    chat_id=<conversation_or_channel_id>,
    group=platform_entities.UserGroup(...) or None,
    source_platform_object=<raw_object>,
)

Message content should use common components:

  • Source for original message id/time when available.
  • Plain for text.
  • At / AtAll for mentions.
  • Image, Voice, File for media.
  • Forward only when the platform can represent or emulate it safely.

If a platform event cannot cleanly map to a common event, emit PlatformSpecificEvent with a compact action and structured data.

Unit Tests

Add focused tests under LangBot/tests/unit_tests/platform/test_<platform>_eba_adapter.py.

Cover at least:

  • Manifest supported events match adapter supported_events().
  • Manifest supported APIs match adapter supported_apis().
  • Platform API map matches manifest actions.
  • Dispatcher chooses the most specific EBA listener.
  • Message converter maps every supported common component both directions where possible:
    • Source
    • Plain
    • At
    • AtAll
    • Image
    • Voice
    • File
    • Quote
    • Face
    • Forward
    • Unknown
    • mixed chains preserving order
  • Event converter maps message received/edited/deleted/reaction, raw uncached gateway events, member events, and bot join/leave events.
  • Send/reply methods pass correct platform kwargs and return MessageResult.

Run the existing reference adapter tests too:

bash
cd LangBot
uv run pytest tests/unit_tests/platform/test_<platform>_eba_adapter.py tests/unit_tests/platform/test_telegram_eba_adapter.py
uv run python -m py_compile tests/e2e/live_<platform>_eba_probe.py
git diff --check

Live Test Workflow

Direct adapter live probes are useful diagnostics, but they are not sufficient acceptance evidence for EBA. Treat tests/e2e/live_<platform>_eba_probe.py as an auxiliary tool only. The final adapter record must distinguish:

  • plugin-e2e-ui: real SDK plugin through standalone runtime, LangBot core, adapter, and a real/simulator UI action. This can mark an inbound UI item complete.
  • plugin-e2e-protocol: real SDK plugin through standalone runtime, LangBot core, adapter, and a protocol-boundary injected event. This is useful evidence but must not be claimed as UI coverage.
  • plugin-e2e-outbound: real SDK plugin calls an API and the bot output is visible in the real/simulator UI. This can mark send/API coverage complete.
  • adapter-live: direct adapter probe connected to a real/simulator endpoint. This is auxiliary only.
  • unit: mocked conversion/API-shape coverage. This is auxiliary only.
  • not-supported: platform protocol or SDK has no equivalent. Must include the reason.
  • blocked: intended capability could not be verified. This is not complete.

Write a live probe in LangBot/tests/e2e/live_<platform>_eba_probe.py. It should:

  1. Read token/client ids from environment variables or CLI args.
  2. Start the adapter directly.
  3. Register an EBA listener and write JSONL evidence to LangBot/data/temp/.
  4. Wait for a real user/platform event instead of fabricating the entrypoint.
  5. Exercise common APIs and call_platform_api actions.
  6. Observe returned gateway events for edit/delete/reaction/member/bot lifecycle where available.
  7. Print a summary containing passed, failed, skipped, and observed event types.
  8. Redact or avoid printing secrets.
  9. Keep destructive operations behind flags and run them last.

Use Computer Use when the user asks for real platform end-to-end coverage. Actually send messages/click reactions in the platform UI or otherwise trigger real user-side events; do not replace that with unit tests.

For media/component acceptance, keep the direction and trigger source explicit:

  • Real inbound media only counts when a human-side platform UI or simulator UI sends the image/file/voice to the bot and the plugin JSONL records the corresponding common component.
  • Bot outbound media only proves send_message/adapter send conversion. It does not prove inbound conversion.
  • Protocol-boundary injection, such as sending a OneBot event directly into a reverse WebSocket adapter, is useful and should be labelled plugin-e2e-protocol, but it must not be reported as UI-level end-to-end media upload.
  • If the UI cannot send or upload the media, record the item as blocked with the exact client/simulator limitation.
Show full SKILL.md (749 more words)Show less

Standalone Runtime + Plugin Test

When validating the whole LangBot EBA path, test with the SDK standalone runtime and a real test plugin. This is the required acceptance path; direct adapter calls do not prove the EBA architecture path.

The required path is:

text
Real platform / simulator UI
  -> platform SDK native event
  -> adapter event converter
  -> unified EBA event/entity/message types
  -> LangBot core event dispatch
  -> standalone SDK runtime
  -> real test plugin listener
  -> plugin calls platform APIs through SDK
  -> LangBot core API dispatch
  -> adapter API implementation
  -> real platform / simulator UI

Typical shape:

bash
# Terminal 1, SDK repo
cd langbot-plugin-sdk
uv run python -m langbot_plugin.cli.__init__ rt \
  --debug-only \
  --ws-control-port 5400 \
  --ws-debug-port 5401 \
  --skip-deps-check

# Terminal 2, LangBot repo
cd LangBot
export PYTHONPATH=/absolute/path/to/langbot-plugin-sdk/src:${PYTHONPATH:-}
uv run main.py --standalone-runtime

# Terminal 3, plugin directory
export DEBUG_RUNTIME_WS_URL=ws://127.0.0.1:5401/plugin/ws
export EBA_PROBE_LOG=/absolute/path/to/LangBot/data/temp/<platform>_eba_plugin_probe.jsonl
export EBA_PROBE_API=1
export EBA_PROBE_COMPONENT_SWEEP=1
export EBA_PROBE_PLATFORM_API=1
uv --project /absolute/path/to/langbot-plugin-sdk run python -m langbot_plugin.cli.__init__ run

Use an EBA probe plugin that subscribes to all relevant EBA event classes and runs SDK API calls after the first MessageReceived.

The plugin evidence should be JSONL and include:

  • event class and event.type
  • adapter name
  • chat type and chat ID
  • sender/user/group IDs with secrets redacted
  • bot_uuid and adapter_name, proving LangBot filled common routing fields before plugin dispatch
  • received message_chain component list
  • API action name, input summary, result or error
  • unsupported or blocked reason when an item is skipped

For full adapter acceptance, enable both probe sweeps:

  • EBA_PROBE_COMPONENT_SWEEP=1 sends the required outbound message components through send_message.
  • EBA_PROBE_PLATFORM_API=1 calls common safe APIs plus selected call_platform_api actions for the adapter.

The SDK must support plugin.call_platform_api(bot_uuid, action, params) for platform-specific acceptance. If the SDK cannot call a platform-specific action from the plugin, the adapter cannot be fully accepted even if direct adapter probes pass.

Required EBA Acceptance Coverage

Before marking an adapter migrated, fill out an adapter record against LangBot/docs/event-based-agents/adapters/acceptance-checklist.md.

At minimum, the record must cover these categories:

  • Message receive component tests through plugin-e2e-ui: Source, Plain, At, AtAll, Image, Voice, File, Quote, Face, Forward, Unknown, and mixed chains where the platform supports them. Protocol-only receive evidence must be labelled plugin-e2e-protocol.
  • Message send component tests through plugin-e2e-outbound: Plain, At, AtAll, Image, Voice, File, Quote, Face, Forward, and mixed chains where the platform supports them.
  • Every event declared in manifest.yaml -> spec.supported_events.
  • Every common API declared in manifest.yaml -> spec.supported_apis.required and optional.
  • Every action declared in manifest.yaml -> spec.platform_specific_apis.
  • Compatibility tests for manifest declarations, legacy message listener fallback, EBA listener specificity, bot self-message filtering, and source_platform_object reply/debug behavior.

Do not declare an event or API in the manifest unless it has an implementation path and an acceptance entry. If a platform or simulator lacks a capability, document it as not-supported or blocked rather than silently omitting the test.

Common Pitfalls

  • get_bots() may return bot dictionaries, not UUID strings. Probe plugins should select an enabled dict and pass bot["uuid"] to get_bot_info() and send_message().
  • Make sure the probe subscribes to every event you claim to verify. Missing MessageDeleted subscription can make a working adapter look untested.
  • Some platforms emit both cached and raw gateway events, producing duplicate evidence for delete/reaction. Count this explicitly; do not treat duplicates as failure unless semantics differ.
  • Self-message filtering is platform-specific. Filter bot-originated message.received loops, but do not accidentally filter edit/delete events needed for bot-owned API probes.
  • Reaction events may be filtered for bot self reactions. To test user reaction add/remove, use real UI interaction or a real user token path if permitted.
  • File uploads usually happen as message attachments. A standalone upload_file API may need to be NotSupportedError.
  • Live probes should not leak bot tokens through command output, logs, docs, or final answers.
  • Discord requires privileged intents for message content and members. Missing intents can look like converter bugs.
  • Telegram Bot API exposes only limited member lists; document capability gaps.
  • Do not mark moderation APIs verified unless they ran against a disposable target member/bot.
  • If leave_group is tested, run it last because the test bot will be removed from the server/group.
  • Restore local LangBot DB/test state after live runs if you enabled temporary bots or changed plugin settings.

Documentation Record

Add or update LangBot/docs/event-based-agents/adapters/<platform>.md in the same style as Telegram:

  • Status and adapter directory.
  • Configuration table matching manifest fields.
  • Supported EBA event list.
  • Common API table with support and limitations.
  • call_platform_api action list.
  • Receive component table with evidence level per component.
  • Send component table with evidence level per component.
  • Event table with evidence level per event.
  • Common API table with evidence level per API.
  • Platform-specific API table with evidence level per action.
  • Live test record with exact date, endpoint/simulator, standalone runtime command, test plugin path/name, JSONL evidence path, channel/group type, observed events, APIs exercised, destructive operations, and skipped items.

Be honest. Put untested or skipped APIs in the document with the reason. Do not imply full parity when a platform cannot provide the same information density.

Before Finishing

  • Run unit tests and compile the live probe.
  • Run the standalone runtime plugin E2E path for every required acceptance item that the platform supports.
  • Run git diff --check.
  • Summarize live JSONL evidence by event type.
  • Stop all long-running runtimes and probes.
  • Confirm no secrets are staged.
  • Leave unrelated untracked files alone.

© langbot-app, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/skills/langbot-eba-adapter-dev of langbot-app/LangBot.

Open the folder on GitHubat commit de886ed

Compare with similar skills

LangBot EBA Adapter Development next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

LangBot EBA Adapter Development compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
LangBot EBA Adapter Development this skilllangbot-app/LangBot18k—~4kAutomated safety check: PassApache-2.0
DisCatSharp Discord DevelopmentAiko-IT-Systems/DisCatSharp140—~1.2kAutomated safety check: PassMIT
Chat SDKdatabuddy-analytics/Databuddy1.2k—~2.6kAutomated safety check: PassAGPL-3.0
Better Notifybetter-notify/better-notify313—~783Automated safety check: PassMIT
Frontmcp Channelsagentfront/frontmcp146—~3.7kAutomated safety check: PassApache-2.0
Caspian Connect DiscordTryCaspian/caspian-sdk971—~376Automated safety check: NotesApache-2.0

Similar skills

  • DisCatSharp Discord Development

    Aiko-IT-Systems/DisCatSharp

    Helps build, explain and troubleshoot C# Discord apps on DisCatSharp, answering from the project's installed version and the library's documentation rather than guesses.

    140 GitHub stars~1.2k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Chat SDK

    databuddy-analytics/Databuddy

    Build multi-platform chat bots with Chat SDK (chat npm package).

    1.2k GitHub stars~2.6k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Better Notify

    better-notify/better-notify

    End-to-end typed notification infrastructure for Node.js — typed catalog of email, SMS, push, web push, WhatsApp, Slack, Discord, Telegram, and GitHub notifications with provider-agnostic transports.

    313 GitHub stars~783 tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Frontmcp Channels

    agentfront/frontmcp

    A skill your agent uses when pushing real-time notifications or events into Claude Code (or another MCP client) sessions, or building two-way chat bridges.

    146 GitHub stars~3.7k tokensUpdated today
    Backend & APIsAuto-check passed
  • Caspian Connect Discord

    TryCaspian/caspian-sdk

    Connect Caspian Discord for OpenCode (install OAuth or BYO bot token), enable discord in caspian.json channels, and tell the user to restart.

    971 GitHub stars~376 tokensUpdated 1 mo ago
    Backend & APIsAuto-check: notes
  • Claude To Im

    op7418/Claude-to-IM-skill

    Bridge THIS Claude Code or Codex session to Telegram, Discord, Feishu/Lark, QQ, or WeChat so the user can chat with Claude from their phone.

    2.9k GitHub stars~3.4k tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check: notes

More from langbot-app/LangBot

All 9 skills in this repo
  • LangBot Plugin Development

    langbot-app/LangBot

    Guides building, debugging and testing LangBot plugins: components, SDK calls, README and locale rules, SDK pitfalls and WebSocket-based testing.

    18k GitHub stars~3.9k tokensUpdated today
    Auto-check passed
  • LangBot Deployment Guide

    langbot-app/LangBot

    Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.

    18k GitHub stars~1.2k tokensUpdated today
    Auto-check: notes
  • LangBot Core Development

    langbot-app/LangBot

    Covers developing the LangBot core backend and web UI: dev setup, repo layout, API auth types, adding endpoints, migrations and keeping the MCP server in step.

    18k GitHub stars~1.4k tokensUpdated today
    Auto-check: notes
  • LangBot MCP Operations

    langbot-app/LangBot

    Manages a LangBot instance over its built-in MCP server: endpoint, API-key authentication, client config and the tool set for bots, processors and more.

    18k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • LangBot Space MCP

    langbot-app/LangBot

    Browses and searches the LangBot Space marketplaces for plugins, MCP servers and skills through its read-only MCP server, authenticated with a personal access token.

    18k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • LangBot Environment Setup

    langbot-app/LangBot

    Prepares a LangBot development and testing environment for an agent, covering service startup, proxy settings and browser access through Computer Use or Playwright MCP.

    18k GitHub stars~496 tokensUpdated today
    Auto-check: notes

Questions about LangBot EBA Adapter Development

What does LangBot EBA Adapter Development do?

Guides building, migrating and testing LangBot messaging-platform adapters for the Event-Based Agents layout, with unified event and message conversion. Platform-specific event and message shapes must not leak into LangBot's common path. Each adapter converts incoming SDK objects into unified EBA entities (events, message chains, users, groups and members) before dispatch, keeping the raw platform object only in `source_platform_object` for debugging.

When should I use LangBot EBA Adapter Development?

LangBot EBA Adapter Development fits situations like: adding a new messaging platform adapter to LangBot; migrating an existing Telegram or Discord adapter to the EBA layout; validating that an adapter converts events and messages into the unified entities; testing an adapter end to end against the real platform.

How do I install LangBot EBA Adapter Development in Claude Code?

Run `npx skills add langbot-app/LangBot --skill langbot-eba-adapter-dev -a claude-code`. Or copy the skill folder (skills/skills/langbot-eba-adapter-dev in langbot-app/LangBot) into .claude/skills/langbot-eba-adapter-dev in your project. Claude Code loads it when a task matches its description.

How do I install LangBot EBA Adapter Development in Codex?

Run `npx skills add langbot-app/LangBot --skill langbot-eba-adapter-dev -a codex`. Or copy the skill folder (skills/skills/langbot-eba-adapter-dev in langbot-app/LangBot) into .agents/skills/langbot-eba-adapter-dev in your project. Codex loads it when a task matches its description.

Can I use LangBot EBA Adapter Development in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add langbot-app/LangBot --skill langbot-eba-adapter-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/langbot-eba-adapter-dev, .gemini/skills/langbot-eba-adapter-dev, .github/skills/langbot-eba-adapter-dev and .opencode/skills/langbot-eba-adapter-dev in your project.

What does LangBot EBA Adapter Development need to run?

Going by SKILL.md and its folder, LangBot EBA Adapter Development needs the command-line tools its instructions call (uv and git). Our summary lists: A LangBot checkout with its EBA docs and plugin SDK; A LangBot API key, to control a running instance over MCP.

Does LangBot EBA Adapter Development access the network?

SKILL.md names 1 domain. In commands or code: space.langbot.app; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is LangBot EBA Adapter Development safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does LangBot EBA Adapter Development use?

LangBot EBA Adapter Development is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does LangBot EBA Adapter Development use?

About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to LangBot EBA Adapter Development?

Skills that share tags, products or a category with LangBot EBA Adapter Development: DisCatSharp Discord Development (Aiko-IT-Systems/DisCatSharp, 140 stars), Chat SDK (databuddy-analytics/Databuddy, 1.2k stars), Better Notify (better-notify/better-notify, 313 stars) and Frontmcp Channels (agentfront/frontmcp, 146 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains LangBot EBA Adapter Development?

langbot-app (a GitHub organization) maintains it in langbot-app/LangBot, which has 18,033 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 7, 2026.

Source: langbot-app/LangBot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.