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

@twentyhq/slack

v0.5.0

Published

Slack assistant and workflow steps for Twenty

Readme

Slack

Your CRM, in the conversation — ask Twenty anything from Slack and post back to any channel.

✨ What you get

  • A CRM assistant in Slack@twenty how many open opportunities do we have? or @twenty create a company called ACME. It answers in-thread, remembers the thread, and can read, create, update and soft-delete records
  • Follow-ups without re-mentioning — once it has replied in a thread you can keep talking to it for 24 hours; when that window lapses it privately nudges you to mention it again
  • Slack steps for your workflows — post, update or delete messages, send ephemerals, add reactions, list channels

🤖 The assistant

Mention the bot in a channel or DM it. It replies in the thread with your CRM data, using the recent conversation as context. Answers end with native thumbs up / thumbs down feedback buttons — except very long answers, which fall back to plain text without them — and ratings are stored on the matching Slack Assistant Request record in Twenty.

The bot runs with the Slack Assistant role, which by default can read, create, update and soft-delete people, companies, opportunities, notes and tasks. Workspace members stay read-only and hard delete is off. Tighten the role in Settings → Roles if you want a narrower bot.

It acts as whoever tagged it. The first time someone mentions the bot, their Slack profile email is matched against workspace members and the pair is stored as a Slack User Link record. From then on the bot runs with that member's permissions and the Slack Assistant role: it can never do more than the person asking, and never more than the role allows. Someone with no link gets the Slack Assistant role on its own, exactly as before.

A link matched on email is re-verified on every request: the bot rechecks that the Slack account's current verified email still points at the same member, and follows the live match rather than the stored record if they disagree. The record is an audit trail, not the source of truth.

Only members of the Slack workspace that installed the app are matched automatically. Guests and Slack Connect users from another Slack workspace are not, because their email is vouched for by someone other than your admin. A link can be created by hand from Slack User Links with its source set to manual, but the bot does not act on manual links yet: any role with broad record access could write one, so until Twenty can restrict who creates them they are stored without borrowing anyone's permissions, and those users get the Slack Assistant role.

One Slack workspace answers into one Twenty workspace.

When the bot is added to a channel it introduces itself once, with a short message in the channel and the details (what to ask it, what it reads, and how permissions work) in a thread reply. It needs the member_joined_channel subscription, so leave that one off if you want the bot to arrive quietly.

🧰 The workflow steps

| Step | Slack API | |------|-----------| | slack-post-message | chat.postMessage | | slack-post-ephemeral-message | chat.postEphemeral | | slack-update-message | chat.update | | slack-delete-message | chat.delete | | slack-add-reaction | reactions.add | | slack-list-channels | conversations.list |

Pick a workspace shared or just for me Slack connection; steps run with that token.

💳 Billing

Free — the app itself costs no credits and is not metered.

The assistant still runs on your workspace AI credits, billed on the model's token usage, so every mention or DM answered has an indirect cost. The workflow steps only call Slack and consume nothing.

📌 Heads up

You need to create a Slack app and connect it — see SETUP.md. The assistant needs a few extra steps (signing secret and event subscriptions) on top of the base connection.