slack-workflows

SKILL.md

Slack Workflows

Automate Slack with intelligent workflows for notifications, standup collection, approval processes, and cross-platform integrations. Based on n8n automation patterns.

Overview

This skill covers:

  • Automated notifications and alerts
  • Daily standup collection
  • Approval workflows
  • Cross-platform integrations
  • Channel management automation

Core Workflows

1. Daily Standup Bot

workflow: "Async Standup"
schedule: "9:00 AM weekdays"

steps:
  1. send_prompt:
      channel: each team member (DM)
      message: |
        👋 Good morning! Time for standup.
        
        Please share:
        1️⃣ What did you complete yesterday?
        2️⃣ What are you working on today?
        3️⃣ Any blockers?
        
        Reply in this thread 👇
        
  2. collect_responses:
      timeout: 2_hours
      reminder: at_1_hour
      
  3. compile_summary:
      time: "11:00 AM"
      channel: "#team-standup"
      format: |
        📋 *Daily Standup - {date}*
        
        {for_each_member}
        *{name}*
        ✅ Yesterday: {yesterday}
        📌 Today: {today}
        🚧 Blockers: {blockers}
        
        ---
        {end_for}
        
        *Summary:*
{total} team members responded
{blockers_count} blockers flagged
        
  4. flag_blockers:
      if: blockers_count > 0
      notify: manager
      action: create_thread_for_discussion

2. Approval Workflow

workflow: "Expense Approval"
trigger: form_submission OR slash_command

steps:
  1. receive_request:
      data:
        - requester
        - amount
        - category
        - description
        - receipt_url
        
  2. route_approval:
      rules:
        - if: amount < 100
          approver: direct_manager
          
        - if: amount >= 100 AND amount < 1000
          approver: department_head
          
        - if: amount >= 1000
          approver: [department_head, finance]
          type: sequential
          
  3. send_approval_request:
      channel: DM to approver
      message: |
        📝 *Expense Approval Request*
        
        *From:* {requester}
        *Amount:* ${amount}
        *Category:* {category}
        *Description:* {description}
        
        [View Receipt]({receipt_url})
        
      actions:
        - button: "✅ Approve"
          action: approve
        - button: "❌ Reject"
          action: reject
        - button: "💬 Ask Question"
          action: request_info
          
  4. handle_response:
      approved:
        - notify_requester: "Your expense was approved! 🎉"
        - create_task: in_accounting_system
        - log: in_expense_tracker
        
      rejected:
        - notify_requester: "Expense not approved. Reason: {reason}"
        - log: with_rejection_reason
        
  5. escalate_if_no_response:
      timeout: 24_hours
      action: remind_approver
      final_escalation: 48_hours

3. New Hire Onboarding

workflow: "Employee Onboarding"
trigger: new_employee_added_to_HRIS

timeline:
  day_minus_7:
    - create_channels:
        - "#welcome-{name}"
        - add_to: ["#general", "#team-{department}"]
    - notify_it: "Set up laptop for {name}"
    - notify_manager: "Onboarding starts in 7 days"
    
  day_1:
    - morning:
        - post_welcome: "#general"
          message: |
            🎉 Please welcome *{name}* to the team!
            
            Role: {title}
            Team: {department}
            Location: {office}
            
            Fun fact: {fun_fact}
            
            Say hi and make them feel welcome! 👋
            
        - dm_new_hire:
            message: |
              Welcome to {Company}! 🚀
              
              Here are your first steps:
              1. [Complete HR paperwork]({hr_link})
              2. [Set up your accounts]({it_link})
              3. [Meet the team]({org_chart})
              
              Your buddy is @{buddy_name} - reach out anytime!
              
    - afternoon:
        - schedule_intros: with_key_stakeholders
        
  day_3:
    - check_in:
        dm: "How's your first week going? Any questions?"
        
  day_7:
    - survey:
        question: "How was your onboarding experience?"
        scale: 1-5
        
  day_30:
    - feedback_request:
        dm: "You've been here a month! What could we improve?"

4. Incident Response

workflow: "Incident Alert"
trigger: monitoring_alert OR manual

severity_levels:
  critical:
    - create_channel: "#incident-{timestamp}"
    - notify: "@channel in #engineering"
    - page: on_call_engineer
    - create_war_room: video_link
    - start_timer: for_resolution_tracking
    
  high:
    - notify: "#engineering-alerts"
    - assign: on_call_engineer
    - create_ticket: in_jira
    
  medium:
    - notify: "#engineering-alerts"
    - create_ticket: in_jira
    
  low:
    - create_ticket: in_jira
    - notify: next_business_day

incident_channel_template: |
  🚨 *INCIDENT: {title}*
  
  *Severity:* {severity}
  *Status:* Investigating
  *Started:* {timestamp}
  *Commander:* @{commander}
  
  ---
  
  *Affected Systems:*
  {systems}
  
  *Customer Impact:*
  {impact}
  
  ---
  
  📋 *Actions:*
[ ] Identify root cause
[ ] Implement fix
[ ] Verify resolution
[ ] Communicate to stakeholders
  
  🔗 *Links:*
[Runbook]({runbook_url})
[Dashboard]({dashboard_url})
[Video Room]({video_url})

resolution_flow:
  1. commander_declares: "resolved"
  2. notify_stakeholders: resolution_message
  3. archive_channel: after_24_hours
  4. create_postmortem: in_notion
  5. schedule_review: in_calendar

5. Cross-Platform Sync

workflow: "CRM to Slack Notifications"

triggers:
  hubspot_deal_won:
    channel: "#wins"
    message: |
      🎉 *Deal Closed!*
      
      *Company:* {company}
      *Value:* ${amount}
      *Rep:* @{sales_rep}
      *Product:* {product}
      
      Congrats! 🚀
      
  hubspot_deal_lost:
    channel: "#sales-team"
    message: |
      📊 *Deal Lost*
      
      *Company:* {company}
      *Value:* ${amount}
      *Reason:* {loss_reason}
      *Competitor:* {competitor}
      
      Thread for learnings 👇
      
  github_pr_merged:
    channel: "#engineering"
    message: |
      ✅ PR merged: *{pr_title}*
      by @{author}
      
      {pr_description_summary}
      
  stripe_payment_failed:
    channel: "#revenue-alerts"
    message: |
      ⚠️ *Payment Failed*
      
      *Customer:* {customer_email}
      *Amount:* ${amount}
      *Reason:* {failure_reason}
      
      [View in Stripe]({stripe_link})

Slash Commands

Custom Commands

slash_commands:
  /kudos:
    description: "Give recognition to a teammate"
    usage: "/kudos @person for [reason]"
    action:
      - post_to: "#kudos"
      - format: |
          🌟 *Kudos!*
          
          @{sender} gave kudos to @{recipient}
          
          > {reason}
          
      - track: in_recognition_spreadsheet
      
  /pto:
    description: "Request time off"
    usage: "/pto [start_date] to [end_date] for [reason]"
    action:
      - create_approval: pto_approval_flow
      - update_calendar: block_dates
      - notify_team: if_approved
      
  /standup:
    description: "Submit async standup"
    usage: "/standup"
    action:
      - open_modal: standup_form
      - collect_responses: yesterday, today, blockers
      - post_to: "#team-standup"
      
  /poll:
    description: "Create a quick poll"
    usage: "/poll 'Question' 'Option 1' 'Option 2' ..."
    action:
      - create_message: with_reactions
      - track_votes: by_reaction_count
      - close_poll: after_24h_or_manual

Channel Management

channel_automation:
  project_channels:
    trigger: jira_project_created
    action:
      - create_channel: "#proj-{project_key}"
      - add_members: project_team
      - set_topic: "{project_name} - {project_description}"
      - pin_message: project_resources
      - archive: when_project_completed
      
  customer_channels:
    trigger: deal_closed_won
    action:
      - create_channel: "#customer-{company}"
      - add_members: [csm, sales_rep, support]
      - set_purpose: "Support channel for {company}"
      - integrate: zendesk_alerts
      
  cleanup:
    schedule: monthly
    rules:
      - archive_if:
          no_messages: 90_days
          AND:
            not_pinned: true
            not_customer_channel: true
      - notify_before_archive: 7_days

Output Example

Request: "Set up a deal win notification in Slack"

Output:

# Deal Win Notification Setup

## Workflow Configuration

```yaml
trigger: hubspot_deal_stage_changed
condition: new_stage == "Closed Won"

action:
  channel: "#wins"
  message: see_below

Message Template

🎉 *DEAL CLOSED!*

━━━━━━━━━━━━━━━━━━━━━━

🏢 *Company:* {company_name}
💰 *Value:* ${deal_amount}
👤 *Sales Rep:* @{owner_slack_id}
📦 *Product:* {product_line}

━━━━━━━━━━━━━━━━━━━━━━

*Deal Summary:*
• Sales cycle: {days_in_pipeline} days
• Lead source: {lead_source}
• Industry: {industry}

🎊 Congrats to the team!

n8n Implementation

// HubSpot Trigger → Slack Node
{
  "nodes": [
    {
      "name": "HubSpot Trigger",
      "type": "n8n-nodes-base.hubspotTrigger",
      "parameters": {
        "eventsUi": {
          "eventValues": ["deal.propertyChange"]
        },
        "property": "dealstage",
        "value": "closedwon"
      }
    },
    {
      "name": "Format Message",
      "type": "n8n-nodes-base.set",
      "parameters": {
        "values": {
          "message": "🎉 *DEAL CLOSED!*\n\n🏢 {{$json.company}}\n💰 ${{$json.amount}}"
        }
      }
    },
    {
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "parameters": {
        "channel": "#wins",
        "text": "={{$json.message}}"
      }
    }
  ]
}

Sample Output

🎉 *DEAL CLOSED!*

━━━━━━━━━━━━━━━━━━━━━━

🏢 *Company:* Acme Corporation
💰 *Value:* $45,000
👤 *Sales Rep:* @alice.chen
📦 *Product:* Enterprise Plan

━━━━━━━━━━━━━━━━━━━━━━

*Deal Summary:*
• Sales cycle: 45 days
• Lead source: Inbound - Website
• Industry: Technology

🎊 Congrats to the team!

---

*Slack Workflows Skill - Part of Claude Office Skills*
Weekly Installs
132
GitHub Stars
10
First Seen
7 days ago
Installed on
claude-code110
opencode53
github-copilot52
gemini-cli50
cline50
codex50