본문으로 건너뛰기
cccskills
무료GitHub에 공개

slack-connect

Set up Slack as a notification channel for your Egregore — creates the workspace app, invites the bot, and binds a channel. Use for /slack-connect, 'connect slack', or 'set up slack notifications'.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

egregore-labs/egregore스타 293(GitHub 293 + cccskills 0)
연동 도구SlackTelegram

실행 점수 미검증

설치 방법 보기

포함된 파일(1)

  • SKILL.md7.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Set up Slack as a notification channel for your Egregore.

Arguments: $ARGUMENTS (none expected)

When to invoke

Trigger phrases:

  • "set up slack", "connect slack", "slack-connect"
  • "add slack notifications", "slack channel", "notify us on slack"

Disambiguation:

  • "set up telegram" → /telegram-connect
  • "set up teams" → /teams-connect
  • "send a message to slack" → NOT this — use the separate notification consent protocol in .claude/context/notification-consent.md

What this does

Connects one Slack channel to Egregore notifications using an app the org creates in its own workspace. After this, everything that plans a group notification may also resolve Slack as a receiving channel; all resolved channels are shown before separate dispatch approval.

The privacy contract, stated plainly to the user: the install screen will say only "Send messages as @Egregore." The app cannot read messages — the manifest requests one scope, chat:write. The workspace owns the app and the token; revoking either cuts Egregore off instantly.

Works in both modes. Check which one first:

bash bin/config-get.sh mode

Use the printed value as {mode}; quote it in single quotes when you use it in a command, and write any single quote inside the value as '\''.

  • local — the token stays in the gitignored .env on this machine and messages go straight from here to Slack. No Egregore server is in the path.
  • connected — the token is stored on the org's row so the hosted service can deliver group notifications from any member's session.

Only Step 5 differs between the modes.

Step 0: Prerequisites

  1. A Slack workspace where this person can install apps. Some workspaces require admin approval for new apps — if theirs does, the install in Step 2 turns into a request the admin must approve first.
  2. Nothing to install locally. No CLI, no cloud account.

Step 1: Create the app from the manifest (human, ~1 min)

Show the manifest:

cat slack-app/manifest.yml

(If this instance doesn't carry slack-app/, fetch it from the framework repo.)

Guide them: https://api.slack.com/apps → Create New App → From a manifest → pick their workspace → paste the manifest → Create.

Step 2: Install and copy the bot token (human, 2 clicks + 1 paste)

Settings → Install App → Install to Workspace → Allow.

Then copy the Bot User OAuth Token from the same page. It starts with xoxb-. Validate the prefix when they paste it:

  • xoxb- — correct.
  • xoxp- (user token) or xapp- (app-level token) — wrong item on the page; point them back to Install App → Bot User OAuth Token.

Do not store it anywhere yet.

Step 3: Invite the bot to the channel (human, 1 line)

In the target channel: /invite @Egregore (or channel name → Integrations → Add apps). With only chat:write, the bot can post solely in channels it is a member of — skipping this yields not_in_channel at send time.

Step 4: Channel ID (human pastes, agent validates)

Ask for the channel ID: channel name → About tab → Channel ID at the bottom (or the /archives/C… segment of a channel link).

Validate: must match ^[CG][A-Z0-9]{6,}$. A D… id is a DM — not supported; ask for a channel.

Write the token they pasted in Step 2 to .env (gitignored — never commit) before testing it: append one line, SLACK_BOT_TOKEN= followed by the pasted value, by editing the file directly, never through a shell command, so the value does not enter the command log. This is the one place the pasted value is written; the smoke test reads it from there instead of taking it as a typed argument.

Smoke-test the stored token (no message is sent):

bash bin/notify.sh slack-auth-test

"ok":true proves the token and names the workspace — confirm it is the one they expect. invalid_auth here means a mispasted or revoked token; have them paste it again, rewrite the SLACK_BOT_TOKEN line in .env, and re-run. Fix now, not at send time.

Step 5: Persist

Local mode — channel to .egregore-state.json (NOT egregore.json — the state file is untracked and shared across worktrees):

mkdir -p tmp
jq '.slack_channel_id = "<CHANNEL_ID>" | .slack_channel_name = "<#channel-name>"' \
  .egregore-state.json > tmp/slack-connect-state.json

After jq succeeds:

mv tmp/slack-connect-state.json .egregore-state.json

Connected mode — store on the org so any member's session can deliver:

mkdir -p tmp

Only read the response with jq after the helper succeeds. If it fails, show its error and stop; the helper leaves no response file after a failure.

Write the file tmp/slack-connect-bind.json with {"channel_id":"<CHANNEL_ID>","bot_token":"<TOKEN>","channel_name":"<#channel-name>"}, substituting the channel details and the token the user pasted. The helper reads EGREGORE_API_KEY internally.

bash bin/api-call.sh POST /api/org/slack --auth egregore --json-file tmp/slack-connect-bind.json --out tmp/slack-connect-bind-response.json
jq '.' tmp/slack-connect-bind-response.json

Expect {"status":"connected", …}.

Step 6: Verify with separate exact notification consent

Follow .claude/context/notification-consent.md. Connecting Slack is not consent to send a test message. Prepare after configuration is final:

mkdir -p tmp
bash bin/notify.sh plan group "Slack channel connected — this message reached you through Egregore." > tmp/slack-connect-plan.json
jq -r '.plan_id, .digest' tmp/slack-connect-plan.json

Use the printed values as {plan_id} and {digest}, respectively, for the notification consent flow. Read the exact preview fields:

jq -r '.org, .recipient, .channels, .deliveries, .message' tmp/slack-connect-plan.json

Show every resolved receiving channel—potentially Telegram, Teams, and Slack—and the exact message in a dedicated Send / Edit / Cancel checkpoint. Only dispatch after Send is selected for that preview.

Troubleshooting quick table

SymptomCause → fix
invalid_authWrong, revoked, or other-workspace token → Step 2, re-copy from Install App
not_in_channelBot not invited to the channel → Step 3
channel_not_foundWrong channel ID, or a private channel the bot isn't in → Step 4 / invite it
missing_scopeApp not created from the manifest → recreate from Step 1, reinstall
account_inactiveApp was uninstalled from the workspace → reinstall
ratelimitedTransient — retried automatically
Install becomes an approval requestWorkspace requires admin approval → the admin approves, then continue
Local plan omits slack from channelsHalf-configured: SLACK_BOT_TOKEN missing from .env or slack_channel_id missing from .egregore-state.json

After

Emit telemetry (fire-and-forget):

bash bin/telemetry.sh emit "slack-connect" '{"command":"slack-connect"}' 2>/dev/null &

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

activity

무료

Explicit Activity card only. Use when the user names /activity or directly asks to show, open, or render the Activity dashboard/card. Never use it to answer or synthesize what the team is focused on, busy with, prioritizing, or doing; analytical organizational questions use Search/Runtime QMD.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

egregore-labs/egregore2932026년 10월 17일 업데이트

announce

무료

Draft, preview, and explicitly send an Egregore group announcement. Use for /announce, telling the team something, or notifying everyone—not a direct message or structured handoff.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

egregore-labs/egregore2932026년 10월 17일 업데이트

archive

무료

Capture an effective prompting or steering technique as a reusable canonical pattern. Use when a prompt chain worked especially well; use /reflect for insight about the work and /note for a private thought.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

egregore-labs/egregore2932026년 10월 17일 업데이트

branch

무료

Create a working branch from what you are about to work on. Use for /branch, or any request to start a new branch before making changes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

egregore-labs/egregore2932026년 10월 17일 업데이트

checkup

무료

Run diagnostics on an Egregore environment and render a health report, repairing safe local Runtime problems when possible. Use for /checkup, a health check, or when something is broken and the root cause is unclear.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

egregore-labs/egregore2932026년 10월 17일 업데이트

commit

무료

Stage changes and create a commit with a properly formatted message. Use for /commit, or saving work locally — not sharing it (/push) or opening a pull request (/pr).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

egregore-labs/egregore2932026년 10월 17일 업데이트

egregore-labs의 스킬 모두 보기

이 스킬의 문제 신고