askill
notify-slack

notify-slackSafety 85Repository

Slack 채널에 메시지 전송 (공통 Skill). Use when (1) 이슈/태스크 알림, (2) 릴리스 알림, (3) /SEMO:slack 커맨드, (4) 팀원 멘션 요청.

1 stars
1.2k downloads
Updated 2/3/2026

Package Files

Loading files...
SKILL.md

시스템 메시지: 이 Skill이 호출되면 [SEMO] Skill: notify-slack 호출 - {알림 유형} 시스템 메시지를 첫 줄에 출력하세요.

notify-slack Skill

Slack 채널에 다양한 유형의 메시지 전송 (SEMO 공통 Skill)

Purpose

모든 SEMO 패키지에서 공통으로 사용하는 Slack 알림 Skill입니다.

지원 메시지 유형

유형설명트리거
이슈 알림Issue/Task 생성 완료 알림Agent 완료 후 호출
릴리스 알림SEMO 패키지 버전 업데이트version-manager 완료 후
커스텀 메시지자유 형식 메시지 전송/SEMO:slack 커맨드

Execution Flow

1. MCP에서 Slack Token 조회
   ↓
2. 채널 이름으로 채널 ID 동적 조회 (Slack API)
   ↓
3. (필요시) 사용자 ID 조회 (Slack API)
   ↓
4. 메시지 전송 (curl + heredoc)

Step 1: Token 획득

mcp__semo-integrations__semo_get_slack_token()

응답에서 token: 접두사 뒤의 토큰 값을 추출합니다.

Step 2: 채널 ID 동적 조회 (필수)

🔴 NON-NEGOTIABLE: 채널 ID를 하드코딩하지 마세요. 항상 API로 조회합니다.

채널 이름으로 ID 조회

TOKEN="xoxb-..."
CHANNEL_NAME="_협업"  # 기본 채널

# 채널 ID 조회
CHANNEL_ID=$(curl -s -H "Authorization: Bearer $TOKEN" \
  "https://slack.com/api/conversations.list?types=public_channel&limit=200" | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
for ch in data.get('channels', []):
    if ch['name'] == '$CHANNEL_NAME':
        print(ch['id'])
        break
")

echo "Channel ID: $CHANNEL_ID"

기본 채널 설정

용도채널 이름비고
기본 알림_협업Primary
대체 채널_일반Fallback

Step 3: 사용자 ID 조회 (필요시)

⚠️ 중요: 모든 사용자 멘션은 반드시 <@SLACK_ID> 형식 사용 🔴 NON-NEGOTIABLE: curl 직접 호출 시 토큰 파싱 문제 발생 가능. 반드시 스크립트 파일로 실행

방법 1: 스크립트 파일 생성 후 실행 (권장)

# 1. 스크립트 파일 생성
cat << 'SCRIPT' > /tmp/slack_users.sh
#!/bin/bash
TOKEN="$1"
curl -s "https://slack.com/api/users.list?limit=200" -H "Authorization: Bearer $TOKEN"
SCRIPT
chmod +x /tmp/slack_users.sh

# 2. 실행 및 사용자 검색
/tmp/slack_users.sh "{TOKEN}" | jq -r '.members[] | select(.deleted==false) | select(.profile.display_name | test("{이름}"; "i")) | .id'

방법 2: display_name 또는 real_name으로 검색

/tmp/slack_users.sh "{TOKEN}" | jq -r '
  .members[] |
  select(.deleted==false) |
  select(
    (.profile.display_name | test("{이름}"; "i")) or
    (.real_name | test("{이름}"; "i"))
  ) |
  "\(.profile.display_name // .real_name) | \(.id)"
'

방법 3: 전체 사용자 목록 조회

/tmp/slack_users.sh "{TOKEN}" | jq -r '
  .members[] |
  select(.deleted==false) |
  select(.is_bot==false) |
  "\(.profile.display_name // .real_name) | \(.id)"
'

⚠️ 주의: curl -s 'url' -H 'header' 형식의 직접 호출은 셸 환경에 따라 curl: option : blank argument 에러가 발생할 수 있습니다. 항상 스크립트 파일 방식을 사용하세요.

Step 4: 메시지 전송

🔴 권장: 복잡한 JSON 메시지는 스크립트 파일로 전송

전체 플로우 예시 (권장)

# 1. 토큰 획득 (MCP에서)
TOKEN="xoxb-..."

# 2. 채널 ID 동적 조회
CHANNEL_NAME="_협업"
CHANNEL_ID=$(curl -s -H "Authorization: Bearer $TOKEN" \
  "https://slack.com/api/conversations.list?types=public_channel&limit=200" | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
for ch in data.get('channels', []):
    if ch['name'] == '$CHANNEL_NAME':
        print(ch['id'])
        break
")

# 3. 메시지 전송
curl -s -X POST 'https://slack.com/api/chat.postMessage' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json; charset=utf-8' \
  -d @- << EOF
{
  "channel": "$CHANNEL_ID",
  "text": "{fallback_text}",
  "blocks": [...]
}
EOF

간단한 메시지 전송

TOKEN="xoxb-..."
CHANNEL_NAME="_협업"

# 채널 ID 조회 + 메시지 전송을 한 번에
CHANNEL_ID=$(curl -s -H "Authorization: Bearer $TOKEN" \
  "https://slack.com/api/conversations.list?types=public_channel&limit=200" | \
  python3 -c "import json,sys;[print(c['id']) for c in json.load(sys.stdin).get('channels',[]) if c['name']=='$CHANNEL_NAME']" | head -1)

curl -s -X POST "https://slack.com/api/chat.postMessage" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d "{\"channel\":\"$CHANNEL_ID\",\"text\":\"메시지 내용\"}"

채널 이름 규칙

알림 유형기본 채널 이름비고
릴리스 알림_협업SEMO 패키지 업데이트
이슈 알림_협업Draft Task, Issue 생성
커스텀 메시지지정된 채널/SEMO:slack 커맨드

Output

[SEMO] Skill: notify-slack 완료

✅ Slack 알림 전송 완료

**채널**: #{channel_name}
**유형**: {release|issue|custom}

References

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

92/100Analyzed 2/12/2026

A highly detailed and actionable skill for Slack notifications within the SEMO ecosystem. It provides robust bash/python snippets for dynamic ID lookup and message sending, emphasizing best practices like avoiding hardcoded IDs and using script files for complex payloads.

85
95
90
95
95

Metadata

Licenseunknown
Version-
Updated2/3/2026
Publishersemicolon-devteam

Tags

apitesting