-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Overview
Build a bridge so Dave can respond to Claude Code prompts directly from Slack instead of switching to the terminal. Prompts are routed to the project's own channel (e.g. #slackclaw-dev, #dayist-dev) so work stays organised per project.
Flow
- Claude Code needs input → detects current git repo → maps to project channel via
orchestrator_config.py - Posts to the project channel (e.g.
#slackclaw-dev) with a Block Kit message + interactive buttons - Dave clicks a button in Slack
- SlackClaw's
actionhandler catches the click, writes the value to a named pipe (/tmp/claude_input) - A wrapper script (
claude-slack) feeds that back into Claude Code's stdin
Channel routing
- Detect project from
git remote get-url originorcwd - Map to channel via
CHANNEL_ROUTINGinorchestrator_config.py - Fallback to
#claude-codewhen no project context detected
What to build
claude-slackwrapper script — launchesclaudewith stdin piped from/tmp/claude_input; intercepts questions and posts Block Kit button messages to the correct project channel- SlackClaw
@app.action("claude_input")handler — receives button clicks from any project channel, writes value to named pipe, updates message to show selection - Block Kit message formatter — turns Claude Code prompts + options into button blocks
UX
- Buttons appear in the project channel with actual option labels
- After clicking, message updates to show the selected option
- Stays in project channel — no cross-project noise
#claude-codeused only as fallback for global/non-project sessions
Notes
- Named pipe:
mkfifo /tmp/claude_input && claude < /tmp/claude_input - SlackClaw must have
interactivityenabled in Slack app settings - Buttons disabled after click to prevent double submission
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request