Skip to content
Agentmart
Submit a tool

slack-message

Rules for sending Slack messages and reference request payloads.

Skill by ahstn

IndexedMIT★ 3
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/ahstn-slack-message

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Rules for sending Slack messages and reference request payloads.

Use cases: productivity

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/slack-message

What's inside

Skill name
slack-message
Description
Rules for sending Slack messages and reference request payloads.
License
MIT
Instructions
40 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (3)

  • SKILL.md
  • variables.example.jsonc · references/
  • .gitignore · sensitive/

SKILL.md (first lines)

# Slack message

- Use `skill://personality` to draft messages. Always end each sent message, including thread replies, with a Block Kit `context` block: `:omp: Sent by Adam's Interns` as a footer.
- Use `mrkdwn` for the footer so custom emoji render. Assume `:omp:` exists in the workspace. Avoid adding it to the message body.
- Include the body and footer in top-level `text` for notifications and screen readers. The footer does not change sender identity.
- Current Slack MCP send/draft/schedule tools lack `blocks`. Use direct HTTP with an existing authorised Slack token; never print or store the token. If no token is available, report the blocker; do not replace the footer with normal text.
- Confirm the recipient before sending. Check Slack's JSON `ok` field, retain returned `channel` and `ts`, and return the permalink. Do not retry an uncertain send without checking for duplicates.
- If the message or user prompt is ambiguous or uncertain, use `ask` for clarification and alignment before sending. Examples: the prompt does not match the current Slack state, or the channel, recipient or target message is unclear. Do not guess the intended destination or content.

## Local lookup

- Before resolving a recipient, check that `sensitive/variables.json` exists relative to this skill. If it exists, read it and use it first.
- If missing, use `ask` to offer two options: the user creates the file, or you create it from their frequent chats. For the second option, ask which users, channels or group chats to include, then resolve their IDs with read-only Slack calls. Do not guess IDs or send messages during setup. Keep the file gitignored.
- Use three maps: `users` keyed by username, `channels` keyed by channel name, and `group_chats` keyed by comma-separated participant usernames. Each value is an object with `id` and `notes` strings; see [`variables.example.jsonc`]. Read `.id` for API requests and `.notes` for destination guidance. Group chat IDs can be used directly as `channel`, regardless of ID prefix. Search Slack for missing entries.

## Tested requests

Run in the shell where the tokens are available. Replace placeholders with values from the gitignored [`variables.json`] and API responses; use the returned DM channel ID for direct messages. Add `thread_ts` to the send payload for replies.

```bash
TOKEN="${SLACK_XOXP_TOKEN:-${SLACK_MCP_XOXP_TOKEN}}"
# Verify identity.
curl -sS --max-time 30 https://slack.com/api/auth.test -H "Authorization: Bearer $TOKEN"
# Open a DM; use the returned channel.id below.
curl -sS --max-time 30 https://slack.com/api/conversations.open -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json; charset=utf-8' --data '{"users":"<user ID>"}'
# Send; \u0027 preserves the apostrophe inside shell single quotes.
curl -sS --max-time 30 https://slack.com/api/chat.postMessage -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json; charset=utf-8' --data '{"channel":"<channel ID>","text":":omp: Footer test.\nSent by Adam\u0027s Interns","blocks":[{"type":"section","text":{"type":"mrkdwn","text":":omp: Footer test."}},{"type":"context","elements":[{"type":"mrkdwn","text":":omp: Sent by Adam\u0027s Interns"}]}]}'
# Get the link: this method uses query parameters, not a JSON body.
curl -sS --max-time 30 --get https://slack.com/api/chat.getPermalink -H "Authorization: Bearer $TOKEN" --data-urlencode 'channel=<channel ID>' --data-urlencode 'message_ts=REPLACE_WITH_RETURNED_TS'
unset TOKEN
```

See [Context block | Slack] and [chat.postMessage API method | Slack].

[Context block | Slack]: https://docs.slack.dev/reference/block-kit/blocks/context-block/
[chat.postMessage API method | Slack]: https://docs.slack.dev/reference/methods/chat.postMessage/
[`variables.json`]: sensitive/variables.json
[`variables.example.jsonc`]: references/variables.example.jsonc

From ahstn/dotfiles, MIT.

More from ahstn/dotfiles

Signals

Stars
3
Forks
0
Open issues
0
Last commit (this folder)
Oct 23, 2026 (6 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from ahstn

Cite this page

slack-message skill. Agent Mart. https://agentmart.dev/skills/ahstn-slack-message (last updated 2026-10-24)