notify
Post a short, structured notification — subject, bullets, optional link — to a chat or channel the user explicitly names.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Post a short, structured notification — subject, bullets, optional link — to a chat or channel the user explicitly names.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Walk a project from "no values provisioned" to "doctor --secrets is green" — eight idempotent steps with resume support via setup-state.toml. Wraps the secret framework (ADR-023 §3.8) for AI agents and headless onboarding.
Bootstrap devboy from scratch — install the CLI if missing, register the MCP server, run `devboy onboard` for the active agent, optionally bootstrap the secret framework, verify with `doctor`. First-run skill for both manual installs and the Claude Code / Codex plugin.
First-run wizard for the devboy secret framework — walk a fresh project from "no secret manifest, no router, no daemon" to "every required secret provisioned and verified". Idempotent eight-step flow per ADR-023 §3.8 with state at ~/.devboy/secrets/setup-state.toml so the user can resume or skip.
Analyse the user's Claude Code (or other agent) logs and auto-configure the layered-pipeline compression profiles for their tools, models, and workflow.
Diagnose and fix a broken devboy-tools setup — corrupt config, missing tokens, keychain trouble, wrong paths, plugin install failures.
Enumerate and introspect the active tool bundle — names, categories, schemas, how to invoke each tool from the CLI.
| name | notify |
| description | Post a short, structured notification — subject, bullets, optional link — to a chat or channel the user explicitly names. |
| category | messenger |
| version | 1 |
| compatibility | devboy-tools >= 0.18 |
| activation | ["post to","notify the team","send a message to slack","announce in","ping the channel"] |
| tools | ["get_messenger_chats","send_message"] |
Send a one-shot, structured notification — a short subject line, 2–3 body bullets, and an optional link — to a chat or channel the user has explicitly asked you to post in. The skill confirms the target and verifies the required write scope before calling send_message; it never posts speculatively.
send_message. Never post on an ambiguous signal.send_message on Slack requires the chat:write scope. The full list of scopes the devboy Slack integration expects is defined by the default_slack_required_scopes() function in crates/devboy-core/src/config.rs (channels:read, channels:history, groups:read, groups:history, im:read, im:history, mpim:read, mpim:history, chat:write, users:read). Verify the token has them before posting — see step 2 below.If the user named the chat by a handle (#eng, "the release channel", "DM to alice"), look up the chat_id:
devboy tools call get_messenger_chats '{"search": "eng", "limit": 10}'
Pick the match whose name clearly corresponds to what the user asked for. If more than one chat matches and the correct one is not obvious, stop and ask rather than guessing. Posting to the wrong channel is hard to undo.
Before the first send_message of a session, confirm the Slack token carries the required scopes. Run the built-in health check:
devboy test slack
The command prints the granted scopes and a Missing scopes line if anything on the required list is absent. Relevant for notifications:
chat:write — required to post.channels:read / groups:read / im:read / mpim:read — required for the get_messenger_chats lookup in step 1.If Missing scopes is non-empty, do not call send_message. Surface the missing-scope list back to the user with a clear remediation message, e.g.:
The Slack token is missing
chat:write. Re-issue the bot token with the scope added (channels:read,groups:read,im:read,mpim:read,chat:write, …) and re-rundevboy test slackto confirm.
The exact default list lives in default_slack_required_scopes() — follow that source rather than hardcoding the scope list in a conversation.
Keep notifications skimmable. Target format:
*Release v2.4.2 deployed*
- Rollback of v2.4.1 complete, staging + prod green
- Follow-up: regression test in MR !842
- Incident post-mortem: <https://wiki/.../incident-204|incident-204>
Conventions:
*bold*.<url|label>).*bold*, _italic_, inline `code`, and triple-backtick fences for short snippets. Do not paste long logs — link to them instead.<@U0123ABCD> for a user, <!subteam^SXXXXXXX> for a group, <!here> / <!channel> sparingly.If the user's wording left the text or the target open, show the drafted subject + bullets + target chat name and wait for a "go". If the user was explicit ("post exactly this to #eng"), skip the confirmation.
devboy tools call send_message '{
"chat_id": "C0123456789",
"text": "*Release v2.4.2 deployed*\n- Rollback of v2.4.1 complete, staging + prod green\n- Follow-up: regression test in MR !842\n- Incident post-mortem: <https://wiki/.../incident-204|incident-204>"
}'
For a threaded reply, add thread_id (or reply_to_id where the provider supports it):
devboy tools call send_message '{
"chat_id": "C0123456789",
"thread_id": "1713052800.001500",
"text": "Patch merged — closing the thread."
}'
After send_message returns, tell the user where you posted (chat name + the returned message chat_id / id / timestamp — the unified MessengerMessage does not include a permalink field, so don't promise a jump-to link) and echo the final text. If the call failed, surface the provider error verbatim — don't swallow it.
chat_id per invocation. For cross-posts, call it once per target and surface each result.send_message is the only write tool in the messenger bundle today.