Slack¶
Purpose¶
Primary async team communication channel. Daily check-in destination for all executives per CLAUDE.md Section 3. Enforcement DM target for chief.staff when compliance sweeps find missed check-ins. CEO Daily Summary delivery channel.
How we use it¶
Daily cadence (weekday, per v1.2.11 — times are ceilings, not targets):
- Morning Check-Ins by 9:00 AM PST posted by each executive to #exec-checkins and their per-exec channel
- EOD Check-Outs by 9:00 PM PST
- Chief of Staff enforcement sweeps at 9:30 AM (morning) and 9:00 PM (EOD)
- CEO Daily Summary delivered via Slack DM to Rick by 9:30 PM PST (content cutoff hard at that time per standing rule)
Weekend cadence: - Morning by 12:00 PM PST, EOD by 4:00 PM PST — compressed window per CLAUDE.md Section 3.4 - CEO Daily Summary delivered at 5:00 PM PST
Channel map (canonical): see Slack Channel Map v1.0 — full governance reference covering the 6 per-exec interrupt channels, 15 per-dept-agent interrupt channels, and shared fleet channels (#exec-checkins, #agent-checkins, #agent-updates, #agent-handoffs, #exec-team, #business-info). Governance rules for "who posts where" live in that doc. Visual snapshot: /Claude/knowledge/assets/slack-channels-for-agents-2026-04-22.png.
Setup & credentials¶
OAuth via Claude Code MCP (mcp__claude_ai_Slack__*). Supports read channel/thread, search channels/public/users, send messages, schedule messages, create canvases.
Owner¶
chief.staff — daily cadence enforcement + CEO Daily Summary delivery is the primary use case. All executives also use Slack for their own check-ins.
Related¶
- [[CLAUDE]] Section 3 (Daily Operating Cadence), Section 13 (CEO Daily Summary)
- [[chief.staff]] — primary owner, enforcement
- [[project.manager]] — Weekly Kickoff posting Monday 9:00 AM PST
- [[monday-com]] — handoffs from Slack async comms often convert to Monday.com tasks
Creating a Slack App + Incoming Webhook¶
Use this when a service needs to post alerts to a Slack channel (e.g. schema drift monitor, email automation).
Step 1 — Create the app¶
- Go to https://api.slack.com/apps → Create New App → From scratch
- Give it a name and select the
eco|monetizeworkspace → Create App - Store the Client ID, Client Secret, Signing Secret, and Verification Token in 1Password (item type: API Credential)
Step 2 — Add a bot user (required before webhook install)¶
Slack requires a bot user before it will allow workspace installation, even for webhook-only apps.
- Left sidebar → App Home
- Under "Your App's Presence in Slack" → Edit → set a Display Name and Username (e.g.
eco-alerts/eco-alerts) → Add
Skip this step and you'll hit: "This app is requesting permission to install a bot but it's not currently configured with a bot."
Step 3 — Activate Incoming Webhooks¶
- Left sidebar → Incoming Webhooks → toggle ON
- Click Add New Webhook to Workspace
- Pick the target channel (use
#admin-alertsfor infrastructure/monitoring alerts) - Click Allow
- Copy the URL — it looks like
https://hooks.slack.com/services/T.../B.../...
Step 4 — Store and wire the webhook URL¶
The webhook URL is not the same as the app credentials (Client ID / Secret). It's a separate one-time URL generated per channel.
- Add it to the 1Password item as a separate field (e.g.
webhook_url) - Write it to the consuming service's expected path, e.g.:
Testing a webhook¶
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"Test alert from eco|monetize™ Alerts"}' \
"$(cat ~/.ecomonetize/scripts/email-automation/.slack_webhook_url)"
Expected response: ok
eco|monetize Alerts — current wiring (as of 2026-04-23)¶
| Component | Value |
|---|---|
| Slack app | eco|monetize Alerts |
| Channel | #ops-alerts (public, eco|monetize™ workspace) |
| Webhook file | ~/.ecomonetize/scripts/email-automation/.slack_webhook_url |
| 1Password item | Slack-Alert-Credentials → field webhook_url |
| launchd job | com.ecomonetize.alerts (5-min interval) |
| Script | /Claude/scripts/operations/ecomonetize-alerts/ecomonetize-alerts.sh |
| Owner | qa.dataquality |
Gotchas¶
- Two different credential types: app credentials (OAuth) ≠ webhook URL. 1Password items often only have the OAuth side. The webhook URL must be generated separately via the Incoming Webhooks UI and stored explicitly.
- Bot user is required even if your app never actually uses a bot — it's a Slack prerequisite for workspace installation.
- The webhook URL is per-channel. If you need alerts in a second channel, add another webhook via the same Incoming Webhooks screen.
Notes¶
- Weekday Morning Check-In deadline is 9:00 AM PST (Mon-Fri, v1.2.11 — ceiling, not target); enforcement sweep is 9:30 AM
- Weekday EOD Check-Out deadline is 9:00 PM PST (v1.2.11); enforcement sweep is 9:00 PM
- CEO Daily Summary weekday cutoff is 9:30 PM PST (v1.2.11); weekend cutoff is 5:00 PM PST
- Weekly Kickoff is Monday 9:00 AM PST per v1.2.1
- Quiet weekend check-ins are valid per Section 3.4 — standing-by messages count for compliance
- Auto-launch (v1.2.11 Section 3.5): 6 Layer 1 execs auto-spawn at 8:00 AM PST every day; cron-to-local handoff protocol (v1.2.13 Section 3.5) governs self-correction when cron content drifts