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

@iflow-mcp/jeremylongshore-claude-channel-slack

v0.3.0

Published

Slack channel for Claude Code — two-way chat via Socket Mode

Downloads

80

Readme

Slack Channel for the Claude Code

Two-way Slack ↔ Claude Code bridge. Chat with Claude from Slack DMs and channels, just like you'd chat in the terminal.

CI License: MIT

Research Preview — Channels require Claude Code v2.1.80+ and claude.ai login.

How It Works

Slack workspace (cloud)
    ↕ WebSocket (Socket Mode — outbound only, no public URL)
server.ts (local MCP server, spawned by Claude Code)
    ↕ stdio (MCP transport)
Claude Code session

Socket Mode means no public URL needed — works behind firewalls, NAT, anywhere.

Quick Start

1. Create a Slack App

  1. Go to api.slack.com/appsCreate New App → From scratch
  2. Socket Mode: Settings → Socket Mode → Enable → Generate App-Level Token (xapp-...) with connections:write scope
  3. Event Subscriptions: Enable → Subscribe to bot events:
    • message.im — DMs
    • message.channels — public channels
    • message.groups — private channels
    • app_mention — @ mentions
  4. Bot Token Scopes (OAuth & Permissions):
    • chat:write — send messages
    • channels:history — read public channels
    • groups:history — read private channels
    • im:history — read DMs
    • reactions:write — add reactions
    • files:read — download shared files
    • files:write — upload files
    • users:read — resolve display names
  5. Install to Workspace → Copy Bot Token (xoxb-...)

2. Configure Tokens

/slack-channel:configure xoxb-your-bot-token xapp-your-app-token

3. Run

Pick your runtime:

Option A: Bun (recommended)

cd slack && bun install
# Current (claude-code-plugins marketplace):
claude --channels plugin:slack-channel@claude-code-plugins
# Future (after upstream approval):
# claude --channels plugin:slack-channel@claude-plugins-official

Option B: Node.js / npx

cd slack && npm install
# In .mcp.json, change command to: "npx", args: ["tsx", "server.ts"]
claude --channels plugin:slack-channel@claude-code-plugins

Option C: Docker

cd slack && docker build -t claude-slack-channel .
# In .mcp.json, change command to: "docker", args: ["run", "--rm", "-i", "-v", "~/.claude/channels/slack:/state", "claude-slack-channel"]
claude --channels plugin:slack-channel@claude-code-plugins

4. Pair Your Account

  1. DM the bot in Slack — you'll get a 6-character pairing code
  2. In your terminal: /slack-channel:access pair <code>
  3. You're connected. Chat away.

Access Control

See ACCESS.md for the full schema.

/slack-channel:access policy allowlist       # Only pre-approved users
/slack-channel:access add U12345678          # Add a user
/slack-channel:access remove U12345678       # Remove a user
/slack-channel:access channel C12345678      # Opt in a channel
/slack-channel:access channel C12345678 --mention  # Require @mention
/slack-channel:access status                 # Show current config

Security

  • Sender gating: Every inbound message hits a gate. Ungated messages are silently dropped before reaching Claude.
  • Outbound gate: Replies only work to channels that passed the inbound gate.
  • File exfiltration guard: Cannot send .env, access.json, or other state files through the reply tool.
  • Prompt injection defense: System instructions explicitly tell Claude to refuse pairing/access requests from Slack messages.
  • Bot filtering: All bot_id messages are dropped (prevents bot-to-bot loops).
  • Link unfurling disabled: All outbound messages set unfurl_links: false, unfurl_media: false.
  • Token security: .env is chmod 0o600, never logged, never in tool results.
  • Static mode: Set SLACK_ACCESS_MODE=static to freeze access at boot (no runtime mutation).

Development

# Dev mode (bypasses plugin allowlist):
claude --dangerously-load-development-channels server:slack

One-Pager & System Analysis

Full project one-pager and operator-grade system analysis

Contributors

License

MIT