Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Manage Discord workspace structure and OpenClaw routing as code. Use when creating/renaming/deleting Discord channels, categories, threads, or managing agent...
Manage Discord workspace structure and OpenClaw routing as code. Use when creating/renaming/deleting Discord channels, categories, threads, or managing agent...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Disclaw manages Discord workspace structure (categories, channels, threads) and OpenClaw agent-to-channel bindings as code via a YAML config file. Disclaw vs Discord plugin: Disclaw manages structure (create/rename/delete channels, categories, threads; manage bindings and routing gates). The Discord plugin manages messaging (send/receive, reactions, pins, thread replies). They do not conflict.
npm install -g @ofan/disclaw disclaw --version
Discord bot token must be in OpenClaw config at channels.discord.token Gateway API access โ add to openclaw.json: { gateway: { tools: { allow: ["gateway"] } } } This lets disclaw read/write config via the gateway API. Without it, disclaw falls back to CLI. Config file โ create disclaw.yaml in the workspace (see format below)
disclaw validate -c disclaw.yaml disclaw diff -c disclaw.yaml
The config file (disclaw.yaml) declares the desired state of Discord workspace structure. version: 1 managedBy: disclaw guild: "YOUR_GUILD_ID" channels: # Standalone channel (no category) - name: announcements topic: "Important announcements" # Category with channels - category: Engineering channels: - name: general threads: [Standup, Retro] - name: alerts topic: "Automated alerts only" # Another category - category: Support channels: - name: tickets - name: escalations # OpenClaw agent bindings (optional) openclaw: requireMention: false agents: main: general # single channel siren: [general, alerts] # multiple channels support: # with options channel: tickets requireMention: true
guild is the Discord server ID (right-click server โ Copy Server ID) Channel names must be lowercase, no spaces (Discord enforces this) Thread names can have spaces and mixed case Agent bindings reference channel names from the channels section requireMention controls whether the bot needs @mention to respond in that channel
disclaw diff -c disclaw.yaml disclaw diff -c disclaw.yaml --json # structured output disclaw diff -c disclaw.yaml --channel alerts # filter by channel Shows: managed resources (create/update/delete/noop), unmanaged resources, unbound agents, stale agents, routing health warnings, and pinned messages.
disclaw apply -c disclaw.yaml # dry-run (shows what would change) disclaw apply -c disclaw.yaml --yes # actually apply changes disclaw apply -c disclaw.yaml --prune --yes # also delete unmanaged resources Safety: Always takes a snapshot before mutating. Creates before deletes. Bindings and routing gates are updated atomically.
disclaw import -c disclaw.yaml # dry-run (shows what would be imported) disclaw import -c disclaw.yaml --yes # write to config file Discovers Discord channels/categories/threads not in the config and adds them. Also finds unbound OpenClaw agents.
disclaw rollback -c disclaw.yaml # dry-run disclaw rollback -c disclaw.yaml --yes # actually rollback Restores Discord state from the most recent pre-apply snapshot. Drift-aware (shows what changed since the snapshot).
disclaw validate -c disclaw.yaml disclaw validate -c disclaw.yaml --json Safe for CI. Checks: schema validity, empty names, duplicate channels/threads, binding refs pointing to non-existent channels.
--category <names...> # filter by category name --channel <names...> # filter by channel name --thread <names...> # filter by thread name --agent <names...> # filter by agent name --json # structured JSON output
--gateway-url <url> # override gateway URL (default: http://127.0.0.1:18789) --gateway-token <token> # override gateway auth token Also via env vars: OPENCLAW_GATEWAY_URL, OPENCLAW_GATEWAY_TOKEN.
Edit disclaw.yaml โ add channel under the appropriate category Validate: disclaw validate -c disclaw.yaml Preview: disclaw diff -c disclaw.yaml Apply: disclaw apply -c disclaw.yaml --yes
Edit disclaw.yaml โ add entry under openclaw.agents Preview: disclaw diff -c disclaw.yaml Apply: disclaw apply -c disclaw.yaml --yes This creates the binding AND allowlists the channel in routing gates automatically.
Run: disclaw import -c disclaw.yaml (dry-run to preview) Review the output Run: disclaw import -c disclaw.yaml --yes (writes to config) Verify: disclaw diff -c disclaw.yaml
Remove the channel from disclaw.yaml Preview: disclaw apply -c disclaw.yaml --prune Apply: disclaw apply -c disclaw.yaml --prune --yes Warning: --prune is required for deletions. Without it, removed channels are shown as "unmanaged" but not deleted.
Change the channel name in disclaw.yaml Preview: disclaw diff -c disclaw.yaml (shows delete old + create new) Apply: disclaw apply -c disclaw.yaml --yes Note: Discord doesn't support true renames via API โ disclaw creates the new channel and (with --prune) deletes the old one.
"Discord bot token not found" Ensure channels.discord.token is set in openclaw.json Or set DISCORD_BOT_TOKEN env var "Gateway tool not available" Add gateway.tools.allow: ["gateway"] to openclaw.json Or disclaw will fall back to CLI automatically "Gateway auth failed" Check OPENCLAW_GATEWAY_TOKEN env var matches gateway.auth.token in config Or pass --gateway-token <token> "OpenClaw CLI timed out" Check if the gateway is running: openclaw status Check network: curl http://127.0.0.1:18789/ "Discord connection timed out" Check internet connectivity Verify bot token is valid Try again (Discord API can be flaky) "Permission denied" during apply Bot needs: Manage Channels, Manage Threads permissions Check bot role position in Discord server settings
Dry-run by default โ all mutating commands require --yes Snapshot before apply โ automatic, saved to .disclaw/snapshots/ Rollback available โ disclaw rollback -c disclaw.yaml --yes Managed-scope only โ disclaw only touches resources in the config Creates before deletes โ safer ordering during apply Validation โ config is validated before any API calls
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.