Skip to Content
v1.29.0 · shipped Own analytics id., Refused batches are not replayed forever. Read the changelog →

Slack app plugin

Triage a bug from the channel it lands in. Mushi posts each classified report as a Block Kit card carrying the plain-English title, root cause, and evidence counts — and the card’s buttons let you dispatch a fix, resolve, or dismiss without opening the console.

Why it exists — the fastest triage is the one that doesn’t need a second tab.

Who it’s for — teams whose bugs already get discussed in Slack.

Setup

  1. Create a Slack app with bot scopes in your workspace.
  2. In Mushi: Marketplace → Slack → Install, then paste the bot token + signing secret.
  3. Pick the channel for report notifications, and optional thread replies on QA failures.
  4. Point Slack’s Interactivity → Request URL at <functions-url>/slack-interactions so the card buttons work.

What’s on the card

ElementWhat it tells you
HeaderSeverity, category, project — plus (N×) when the bug is a repeat
TitleThe plain-language headline (“Checkout button does nothing”), with the technical summary beneath it
🔍 lineLikely root cause from Stage 2
Context rowArea · component · confidence · reporter · environment · page · release
Evidence rowConsole errors, failed requests, repro-step count, screenshot, SDK version
FooterReport id and session id

Rows only render when there’s something to show, so a thin report stays a small card.

Acting from the channel

ButtonWhat happens
Triage →Opens the report in the console, scoped to the right project
Dispatch fixRuns the fix agent and opens a draft PR. Swaps to Install GitHub App / Enable Autofix when the prerequisites are missing
Resolve ✓Marks the report resolved and notifies the reporter
DismissMarks it dismissed (noise, duplicate, won’t fix), behind a confirm dialog

Resolve and Dismiss run the same transition contract as the console — plugin event, linked-issue resolution, and reporter notification — so acting from Slack and acting from the web app can’t drift apart.

After an action the card rewrites itself in place: the button row is replaced with an outcome line naming who acted and when, and a threaded reply records it in channel history.

Assign is deliberately absent. Reports have no assignee column, so an “Assign” button would be a UI with nothing behind it.

Package

@mushi-mushi/plugin-slack-app

The /mushi slash command (list, open <id>, resolve <id>) ships in this package for hosts that mount it themselves.

Events

EventAction
report.created / report.classifiedPost the Block Kit card to the channel
fix.pr_openedThread with the PR link
qa_story.failed / qa_story.recoveredTransition-aware threaded updates

Troubleshooting

SymptomCause
Buttons do nothingInteractivity Request URL not set, or the signing secret doesn’t match
Cards post but Triage 404sADMIN_BASE_URL unset on the server — the deep link can’t be built
No cards at allNo bot token for the project, and no slack_webhook_url fallback configured
Last updated on