skill
slack-daily-digest
Slack -> Feishu (Lark) daily intelligence digest skill for Mira / Claude Agent. Auto-synthesizes Highlights, TODO, Pipeline, Risks; pins new entries to a unified index doc; self-healing watchdog.
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/encircleacity2/slack-daily-digest itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 23, 2026slack-daily-digest
A Mira / Claude Agent skill that turns your Slack workspace into an AI-synthesized daily intelligence digest in Feishu (Lark) docs — Highlights, TODO backlog, business pipeline, risks, by-channel breakdown — pinned to a single index doc and pushed to you via Lark IM.
✨ Features
- One-time onboarding walks you through creating a Slack User OAuth App and a Lark Custom Bot, then stores credentials locally (
~/.slack-daily-digest/credentials.json, mode0600). - Unified index doc in Feishu — every daily digest is pinned to the top of the list.
- Twice-daily synthesis (default 11:00 / 16:00 UTC+8, user-configurable) covering recent messages with:
- 🎯 Executive Summary (P0/P1/P2 prioritized)
- 📌 Highlights · ✅ TODO · 📈 Pipeline · ⚠️ Risk Signals
- 🗂️ By-Channel verbatim transcripts (no truncation, no ellipsis)
- 📝 Statistics + identified BytePlus / ByteDance owners
- Self-healing watchdog runs T+20min after each scheduled slot. Verifies all required sections exist; on failure self-retries with
[60s, 300s, 900s]backoff up to 3 times, then escalates. - Lark IM card notification with Highlights + TODO summary + "Open Full Digest" button.
📦 Install
This is a Mira / Claude-Agent skill. Drop the contents of this repo into your skills directory:
git clone https://github.com/<your-org>/slack-daily-digest.git \
~/.claude/skills/slack-daily-digest
Then in your next conversation, ask the agent:
"Set up Slack daily digest"
The skill will guide you through Slack App + Lark Bot onboarding.
🔧 Prerequisites
| Requirement | Why |
|---|---|
| Python 3.9+ | Helper scripts |
curl, jq | API calls + JSON parsing |
| A Slack workspace where you can install a custom app | Read channel history |
| A Feishu / Lark tenant where you can publish a custom app | Write docs + send IM |
The lark-docs-skill and lark-drive-wiki-skill Mira skills (or equivalent CLIs) | Doc CRUD + folder ops |
See references/slack-app-setup.md and references/lark-bot-setup.md for credential creation.
🚀 Quick Start
After installing, the skill auto-runs Phase A (Onboarding) on first invocation:
- Slack: create app → add User Token Scopes → install → paste
xoxp-... - Lark: create app → add scopes → publish → paste
App ID+App Secret+ your work email - Index doc: pick a parent folder (or create new) → confirm daily run time
- The skill stores everything in
~/.slack-daily-digest/and registers a recurring task
From then on, every scheduled slot:
slack-daily-digest run --slot 11:00
slack-daily-digest watchdog --slot 11:00 # T+20min
🗂️ Repo Layout
SKILL.md # Skill manifest (Mira-compatible)
scripts/
├── save_credentials.py # Persist Slack/Lark creds + schedule
├── refresh_users_cache.py # Refresh users.list cache (Tier 2, 7-day TTL)
├── list_channels.py # users.conversations paginated list
├── pull_history.py # conversations.history per channel + filters
├── build_digest.py # Resolve mentions, BytePlus owner detection
├── lark_helpers.py # tenant_token / email→open_id / doc CRUD
├── run_digest.py # Orchestrator (Steps 0-4 + agent handoff)
├── watchdog.py # T+20min self-healing checker
└── notify_lark.py # IM card with Highlights + TODO
references/
├── slack-app-setup.md # Step-by-step Slack App guide
├── lark-bot-setup.md # Step-by-step Lark Bot guide
└── digest-template.md # Synthesis template v4 (Hard Rules + rubric)
🔐 Security
- Credentials live only in
~/.slack-daily-digest/credentials.jsonwith mode0600. - The Lark
tenant_access_tokenis cached for 90 minutes in~/.slack-daily-digest/.lark_tenant_token. - The skill never sends credentials over the wire to anything other than the Slack and Lark APIs.
.gitignoreexcludes all runtime data — verify before committing.
If your Slack token is revoked or rotated, re-run:
python3 scripts/save_credentials.py --slack-token "xoxp-..."
⚠️ Hard Rules (encoded in references/digest-template.md)
- ❌ Never truncate a message with
[:N]. - ❌ Never collapse long messages into ellipsis.
- ❌ Never keep only a summary while dropping the original text.
- ✅ Filter
channel_join,channel_leave, pure-emoji replies, pure greetings. - ✅ Allowed to merge consecutive messages from the same speaker for compactness.
🤝 Contributing
PRs welcome. Please:
- Strip any real credentials, doc URLs, channel IDs, or user names from logs/screenshots.
- Test the onboarding flow end-to-end on a fresh
~/.slack-daily-digest/directory. - Update
CHANGELOG.mdwith user-visible changes.