Slack logo

Slack

Organization
hyperfx-ai
slack

Slack messaging, file sharing, Block Kit formatting, and channel management. Use when the user wants to send Slack messages, post rich Block Kit layouts, share files, react, or manage channels and members.

Overview

Publisherhyperfx-ai
Repositorymarketing-skills
Skill nameslack
Stars
107
Forks
21
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by hyperfx-ai on GitHub. Read the source before you install it.

Installation

Install the Slack AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/slack
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/hyperfx-ai/marketing-skills.git /tmp/marketing-skills
mkdir -p .claude/skills
cp -r /tmp/marketing-skills/skills/slack .claude/skills/slack
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Slack in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Slack on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Slack is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Slack Messaging

This skill provides comprehensive guidance for Slack messaging, file sharing, and formatting.

Requirements

How to run the tools in this skill

Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:

SurfaceFind a toolRun it
Hyper chatCall the tool by its name; search_tools(queries=["<provider> <action>"]) shows its parameters<name>(...)
MCP client (Claude, Cursor, Codex, ChatGPT)search("<what you want to do>"), then describe("<name>")call_read("<name>", {...}), call_write or call_destructive: the one that describe names in call_with
Hyper CLIhyperai search "<what you want to do>", then hyperai describe <name>hyperai call <name> --json '{...}'

If a tool is not found: in Hyper chat, find its toolkit id with discover_toolkits and pass it to enable_toolkit. On an MCP client or the CLI, tell the user which integration to connect in Hyper.

When NOT to Respond

Return ONLY the text [NO_RESPONSE] (nothing else) in these situations:

  1. Message mentions another user, not you: If the user mentions another person (e.g., @John or @SomeOtherBot) and the message is directed at that person, not you.
  2. User explicitly asks to be ignored: If the user says something like "ignore this", "don't respond", or similar.
  3. Message is clearly not for you: If the conversation is between other users and doesn't require your input.
  4. Simple acknowledgments between users: Messages like "thanks", "ok", "got it" directed at another person.

IMPORTANT:

  • When you decide not to respond, return ONLY the exact text [NO_RESPONSE] with nothing before or after it.
  • When in doubt, respond. It's better to be helpful than to stay silent when someone needs you.
  • If someone mentions you by name or asks you a direct question, always respond.
  • In DMs (direct messages), always respond unless explicitly asked not to.

File Sharing - Critical Rules

CRITICAL: Files can ONLY be shared in Slack via upload. URLs and file paths do NOT render as viewable content in Slack.

  • Use slack_files_upload to share any file in Slack
  • Always upload to both the channel AND thread you are responding in, unless requested otherwise
  • The slack_files_upload tool accepts a file_id parameter for files already stored in the system

Sharing Generated Images

When you generate an image (e.g., via images_generate), the result includes a file_id. This image is NOT automatically displayed in Slack. You MUST explicitly upload it:

  1. Generate the image using the image generation tool
  2. Note the file_id from the result
  3. Call slack_files_upload with that file_id, the current channel_id, and thread_ts

Example workflow:

  • User asks: "Generate an image of a sunset"
  • You call the image generation tool, which returns file_id: "abc123"
  • You then call slack_files_upload(channel_id="C...", file_id="abc123", thread_ts="...")
  • Now the image appears in Slack

Do NOT just say "Here's your image" without uploading it. The user will see nothing.

Sharing Other Files

For any file you want to share (documents, CSVs, etc.), use slack_files_upload with either:

  • file_id: For files already in the system
  • file_path: For local files
  • content: For text content to upload as a file

Message Formatting

Replies inside a Slack conversation

When a Slack direct message or thread runs you, your reply reaches that thread by itself. Hyper streams it while you write, or posts it as one message when you finish.

  • Write the reply in standard Markdown. Slack cannot stream Block Kit, and the reply cannot hold it.
  • Never send the reply again with a Slack tool.
  • Show a list of entities (ads, campaigns, channels, tasks) as a Markdown table in the reply: the name, the id, and the numbers asked for, at most 20 rows. Say how many rows you left out.
  • When the user explicitly asks for interactive elements such as buttons, post them with slack_messages_send_block_kit in the same thread, with a one-line text. Then say in one line that you posted them. Do not repeat their content in the reply.

The rest of this section applies to messages that you send with Slack tools.

When to Use Plain Text vs Block Kit

  • Simple messages: Use plain markdown text via slack_messages_send or slack_threads_replies_send
  • Tables, lists, structured data: Use Block Kit rich_text blocks via slack_messages_send_block_kit
  • Messages over 3000 characters: Use slack_messages_send_large

Slack Markdown

Slack uses a simplified markdown:

  • *bold* (single asterisks, not double)
  • _italic_
  • ~strikethrough~
  • `code` for inline code
  • ```code block``` for code blocks
  • <url|display text> for links (NOT [text](url))

Block Kit Rich Text

Block Kit's rich_text block provides flexible formatting:

Available Elements:

  • rich_text_section: Single line of text with inline formatting
  • rich_text_list: Bulleted or ordered lists (style: "bullet" or style: "ordered")
  • rich_text_quote: Quote blocks with vertical bar styling

Element Types Within Sections:

  • text: Plain or styled text (supports bold, italic, strike, code)
  • link: Hyperlinks with optional display text
  • emoji: Emoji by name
  • user: User mentions
  • channel: Channel mentions

Bulleted List Example:

json
{
    "type": "rich_text",
    "elements": [
        {
            "type": "rich_text_list",
            "style": "bullet",
            "elements": [
                {
                    "type": "rich_text_section",
                    "elements": [{"type": "text", "text": "First item"}]
                },
                {
                    "type": "rich_text_section",
                    "elements": [{"type": "text", "text": "Second item"}]
                }
            ]
        }
    ]
}

Ordered List: Use "style": "ordered" instead of "bullet".

Nested Lists: Use the indent property:

json
{
    "type": "rich_text_list",
    "style": "ordered",
    "indent": 1,
    "elements": [...]
}

Inline Styling:

json
{
    "type": "text",
    "text": "Bold text",
    "style": {"bold": true}
}

Available styles: bold, italic, strike, code

Links in Text:

json
{
    "type": "rich_text_section",
    "elements": [
        {"type": "text", "text": "Click "},
        {"type": "link", "text": "here", "url": "https://example.com"},
        {"type": "text", "text": " to continue"}
    ]
}

Messaging Tools Quick Reference

ActionTool
Send a messageslack_messages_send
Reply in a threadslack_threads_replies_send
Upload/share a fileslack_files_upload
Send Block Kit messageslack_messages_send_block_kit
Send long message (>3000 chars)slack_messages_send_large
Update a messageslack_messages_update
Delete a messageslack_messages_delete
Add a reactionslack_reactions_add
Pin a messageslack_messages_pin
Search messagesslack_messages_search

Channel Management Quick Reference

ActionTool
List channelsslack_channels_list
Get channel infoslack_channels_get
Create a channelslack_channels_create
Set channel topicslack_channels_topic_update
Set channel purposeslack_channels_purpose_update
Invite usersslack_channels_users_invite
Get channel membersslack_channels_members_list

User Operations Quick Reference

ActionTool
List workspace usersslack_users_list
Get user profileslack_users_profile_get
Find user by emailslack_users_search_by_email
Get user presenceslack_users_presence_get
Set your statusslack_users_status_update
Create a reminderslack_reminders_create

Frequently asked questions

What does the Slack AI skill do?

Slack messaging, file sharing, Block Kit formatting, and channel management. Use when the user wants to send Slack messages, post rich Block Kit layouts, share files, react, or manage channels and members.

Why use Slack on TypingMind?

Because you install it once and use it with any model. Slack is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Slack in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/slack. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Slack?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Slack?

As many as you like. As long as a model supports skills, you can use Slack with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Slack AI skill free?

Yes. It is published on GitHub by hyperfx-ai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇