Skill: allanwei/slack-standup (version 1.0.2)

# slack-standup SKILL.md ## Skill Identity - Name: slack-standup - Version: 1.0.0 - License: MIT - Category: Productivity / Team Collaboration ## Description Automated daily standup bot for Slack. Collects updates at scheduled times, aggregates responses, posts summaries. ## Business Value - Problem: Remote teams waste time scheduling standup meetings - Solution: Async standup via Slack bot - ROI: Saves 15-30 min/day per team member ## Capabilities 1. collect_standup - Prompt team for daily updates 2. aggregate_responses - Compile into formatted summary 3. post_summary - Post to designated channel 4. schedule_reminder - Set recurring daily prompts ## Tools Required - Slack Bot API (xoxb-* token) - Cron scheduling - Text formatting (Slack MRKDWN) ## Installation 1. `clawhub install slack-standup` 2. Configure Slack bot token 3. Set standup time (9:00 AM default) 4. Test: `/standup test` ## Pricing - One-time: $25 - Subscription: $5/month - Team: $50 (up to 10 members)

path: README.md
content: # Slack Daily Standup Bot

Automate daily standups — async updates delivered to your channel.

## Features
✅ Scheduled prompts | ✅ Auto collection | ✅ Formatted summaries
✅ Blocker alerts | ✅ Timezone-aware | ✅ Custom templates

## Quick Start
1. `clawhub install slack-standup`
2. Create Slack App at api.slack.com/apps
3. Copy Bot Token (xoxb-*)
4. `/standup config time 09:00`
5. `/standup config channel #standups`
6. `/standup test`

## Pricing
- Single: $25 one-time
- Pro: $5/month (support+updates)
- Team: Contact custom

Support: clawhub.com/support/slack-standup


path: references/SETUP.md
content: # Slack Bot Setup

## 1. Create App
- Visit api.slack.com/apps → "Create New App" → From scratch
- Name: "Standup Bot"

## 2. Permissions
- OAuth & Permissions → Add scopes:
  - `chat:write` | `chat:write.public` | `channels:read`

## 3. Install
- "Install to Workspace" → Copy Bot Token (xoxb-*)

## 4. Add to Channel
```bash
/invite @StandupBot
```

## 5. Configure
```
SLACK_BOT_TOKEN=xoxb-...
```

## 6. Test
```bash
/standup test
```

**Security:** Never commit tokens. Rotate every 90 days.


path: scripts/slack-standup.sh
content: #!/bin/bash

# Slack Standup Bot
# Collect daily updates from team members
# Post summary to Slack channel

# Configuration
SLACK_TOKEN="xoxb-12345678901-1234567890"
CHANNEL="#standup"
TIME="09:00"

# Collect responses
responses=()
for user in user1 user2 user3; do
    response=$(curl -s -X POST https://slack.com/api/chat.postMessage \
        -H "Authorization: Bearer $SLACK_TOKEN" \
        -H "Content-Type: application/json" \
        -d "{\"channel\":\"$CHANNEL\",\"text\":\"$user, what did you do today?\"}")
    if [[ $response == *"ok":true* ]]; then
        responses+=("\$user: $response")
    else
        echo "Error: $response" >&2
    fi
done

# Aggregate responses
summary="Standup Summary for

path: scripts/standup.sh
content: #!/bin/bash
# slack-standup v1.0.0
set -e

SLACK_TOKEN="${SLACK_BOT_TOKEN:-}"
CHANNEL_ID="${SLACK_CHANNEL_ID:-}"

log_info() { echo "[INFO] $1"; }
log_error() { echo "[ERROR] $1"; }

check_prereqs() {
    [ -z "$SLACK_TOKEN" ] && log_error "SLACK_BOT_TOKEN not set" && exit 1
    log_info "Prerequisites checked"
}

send_prompt() {
    msg='{"channel":"'"$CHANNEL_ID"'","text":"🎯 *Daily Standup*\nUpdates:\n• Yesterday?\n• Today?\n• Blockers?","as_user":true}'
    curl -s -X POST -H "Authorization: Bearer $SLACK_TOKEN" -H "Content-Type: application/json" -d "$msg" https://slack.com/api/chat.postMessage
    log_info "Prompt sent"
}

case "$1" in
    prompt) check_prereqs; send_prompt ;;
    test) log_info "Test mode..."; check_prereqs; send_prompt ;;
    *) echo "Usage: $0 {prompt|test}" ;;
esac

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)