npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

openclaw-slack-buttons-hotfix

v0.1.2

Published

Hotfix channel plugin: makes OpenClaw presentation buttons render as real Slack Block Kit instead of a bullet-text list (upstream bug openclaw/openclaw#95440). Wraps the official @openclaw/slack plugin and bridges the missing renderPresentation/presentati

Readme

openclaw-slack-buttons-hotfix

Makes OpenClaw presentation buttons render as real Slack Block Kit buttons instead of a bullet-text list.

Hotfix for openclaw/openclaw#95440 (candidate upstream fix: PR #95463).

The bug

The official Slack plugin contains a complete Block Kit presentation renderer, but the outbound adapter it registers with core (slackChannelOutbound) omits renderPresentation and presentationCapabilities. Core delivery therefore assumes the channel cannot render buttons and downgrades every presentation — including {"blocks":[{"type":"buttons",...}]} — to plain text like:

• ✅ Approve
• ⏭️ Skip

Affected: every openclaw message send --presentation and agent presentation send to Slack, on 2026.6.x (verified still present in @openclaw/[email protected]). Telegram is unaffected (it renders presentation buttons inside its own send path).

What this plugin does

It re-registers the official, unmodified Slack channel plugin under the same channel id slack, with exactly two properties bridged onto the registered outbound adapter:

  • presentationCapabilities — so core knows Slack can render buttons/selects, and
  • renderPresentation — the same Block-Kit build the plugin's inner adapter already implements (via the plugin's own public buildSlackPresentationBlocks).

Everything else — auth, socket mode, inbound, interactive replies, threading, media — is the official plugin, untouched. Channel takeover uses the sanctioned channelConfigs.slack.preferOver mechanism, not monkey-patching.

Self-retiring: if the installed @openclaw/slack already exposes renderPresentation (i.e. upstream shipped the fix), this plugin passes the official plugin through completely unchanged. Once the fix is released you can simply uninstall.

Install

openclaw plugins install clawhub:openclaw-slack-buttons-hotfix   # or npm:openclaw-slack-buttons-hotfix
openclaw plugins enable slack-buttons-hotfix
openclaw plugins disable slack     # the wrapper serves the "slack" channel instead
openclaw gateway restart

Why disable the stock plugin: with both enabled, core keeps routing the channel to the stock plugin — preferOver in this plugin's manifest only prevents core from auto-re-enabling the stock plugin later (e.g. because channels.slack is configured). The official @openclaw/slack package itself must stay installed (this plugin loads its code); only the plugin entry is disabled.

Your existing channels.slack config (tokens, allowlists, capabilities) is used as-is — this plugin serves the same channel id. If your config uses a plugins.allow allowlist, add "slack-buttons-hotfix" (the installer usually does this for you).

Verify

openclaw message send --channel slack --target <your-dm> --json \
  --message "button test" \
  --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Tap me","value":"ok","style":"success"}]}]}'

You should see a real tappable button, and the JSON receipt should report parts[0].kind: "card" (broken installs report "text"). Taps arrive back as inbound text equal to the button value (same behavior as Telegram inline buttons).

Uninstall (after upstream fixes #95440)

openclaw plugins enable slack
openclaw plugins disable slack-buttons-hotfix
openclaw plugins uninstall slack-buttons-hotfix
openclaw gateway restart

License

MIT