# Send Disclaw to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
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.
```
### Upgrade existing

```text
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.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "disclaw",
    "name": "Disclaw",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/ofan/disclaw",
    "canonicalUrl": "https://clawhub.ai/ofan/disclaw",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/disclaw",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=disclaw",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "_meta.json"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "disclaw",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-29T17:25:34.467Z",
      "expiresAt": "2026-05-06T17:25:34.467Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=disclaw",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=disclaw",
        "contentDisposition": "attachment; filename=\"disclaw-1.1.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "disclaw"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/disclaw"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/disclaw",
    "downloadUrl": "https://openagent3.xyz/downloads/disclaw",
    "agentUrl": "https://openagent3.xyz/skills/disclaw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/disclaw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/disclaw/agent.md"
  }
}
```
## Documentation

### Disclaw — Discord Structure as Code

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.

### Installation

npm install -g @ofan/disclaw
disclaw --version

### Prerequisites

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)

### Verify Setup

disclaw validate -c disclaw.yaml
disclaw diff -c disclaw.yaml

### Config File Format

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

### Key rules

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 — Show what would change

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 — Apply changes (dry-run by default)

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 — Import unmanaged Discord resources

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 — Restore from snapshot

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 — Validate config (no API calls)

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.

### Filter flags (diff, apply, import)

--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 options (all commands except validate)

--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.

### Add a new channel

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

### Bind an agent to a channel

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.

### Import existing Discord channels

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

### Delete a channel

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.

### Rename a channel

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.

### Troubleshooting

"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

### Safety

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
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: ofan
- Version: 1.1.2
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-29T17:25:34.467Z
- Expires at: 2026-05-06T17:25:34.467Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/disclaw)
- [Send to Agent page](https://openagent3.xyz/skills/disclaw/agent)
- [JSON manifest](https://openagent3.xyz/skills/disclaw/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/disclaw/agent.md)
- [Download page](https://openagent3.xyz/downloads/disclaw)